/** Shopify CDN: Minification failed

Line 271:47 Unexpected bad string token
Line 271:93 Unterminated string token
Line 273:94 Unterminated string token
Line 282:94 Unterminated string token
Line 283:95 Unterminated string token
Line 284:80 Unterminated string token
Line 285:99 Unterminated string token
Line 287:93 Unterminated string token
Line 288:100 Unterminated string token
Line 294:95 Unterminated string token

**/
*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--ivory);color:var(--ink);font-family:Inter,sans-serif;-webkit-font-smoothing:antialiased}#MainContent{overflow-x:clip}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font-family:inherit}a,button,input,select,textarea,summary,[role=button],[role=radio]{-webkit-tap-highlight-color:transparent}button,select,textarea{color:inherit}.skip-to-content{position:absolute;left:-9999px}.skip-to-content:focus{left:8px;top:8px;background:var(--ink);color:var(--ivory);padding:8px 14px;z-index:1000;border-radius:20px}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;pointer-events:none;opacity:.04;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.eyebrow,.eb{font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--gold)}.hd{font-family:Cormorant Garamond,serif;font-weight:300;font-size:clamp(30px,6vw,68px);line-height:1}.center{text-align:center}.reveal{opacity:0;transform:translateY(28px);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}.reveal.in{opacity:1;transform:none}.btn-g{display:inline-block;border:1px solid var(--gold);color:var(--gold);font-size:11px;letter-spacing:.25em;text-transform:uppercase;padding:13px 30px;border-radius:40px;transition:.4s;cursor:pointer;background:none}.btn-g:hover{background:var(--gold);color:var(--ivory)}.btn-dark{display:inline-block;background:var(--ink);color:var(--ivory);border:0;border-radius:40px;padding:15px 30px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:.3s}.btn-dark:hover{background:var(--gold);color:var(--ink)}.shopify-section-group-header-group{position:sticky;top:0;z-index:120}.shopify-section-group-header-group.is-floating{position:fixed;top:var(--yg-announce-h,0px);left:0;right:0}.site-header{position:relative;z-index:120;display:flex;justify-content:space-between;align-items:center;padding:15px clamp(18px,4vw,40px);background:#f6f2eab8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(0,0,0,.05);transition:background-color .24s ease,border-color .24s ease,backdrop-filter .24s ease}.site-header .logo{font-family:Cormorant Garamond,serif;font-weight:500;letter-spacing:.35em;font-size:18px}.site-header nav{display:flex;gap:24px;font-size:11px;letter-spacing:.2em;text-transform:uppercase}.site-header .util{display:flex;gap:18px;font-size:11px;letter-spacing:.15em;text-transform:uppercase;align-items:center}.site-header .cart-count{color:var(--gold)}.site-header .util a{display:flex;align-items:center;color:var(--ink)}.site-header .ut-i{display:none}.site-header .ut-i svg{width:19px;height:19px;display:block}.site-header .ut-badge{display:none}@media(max-width:820px){.site-header nav{display:none}.site-header{padding:13px 16px}.site-header .logo{font-size:16px;letter-spacing:.24em}.site-header .util{gap:20px}.site-header .util a{padding:11px;margin:-11px}.site-header .ut-t{display:none}.site-header .ut-i{display:flex;position:relative}.site-header .ut-badge{display:none;position:absolute;top:-8px;right:-10px;min-width:14px;height:14px;padding:0 4px;border-radius:9px;background:var(--gold);color:var(--ink);font-size:8.5px;letter-spacing:0;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px var(--ivory)}.site-header .ut-badge[data-on]{display:flex}.site-header .mm-burger{margin-right:6px}.site-header{display:grid;grid-template-columns:1fr auto 1fr}.site-header .mm-burger{justify-self:start}.site-header .logo{justify-self:center}.site-header .util{justify-self:end}.site-header .util a[aria-label=Account]{display:none}}@media(max-width:400px){.site-header .logo{font-size:14px;letter-spacing:.18em}.site-header .util{gap:13px}}.site-footer{background:var(--ivory-2);padding:60px clamp(18px,4vw,40px) 40px;margin-top:20px}.site-footer .fq{font-family:Cormorant Garamond,serif;font-style:italic;font-size:clamp(20px,3vw,30px);color:#33312b;max-width:640px;margin:0 auto 26px;text-align:center}.site-footer .cols{display:flex;gap:40px;flex-wrap:wrap;justify-content:center;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#8a8272}.site-footer .cols a{display:block;margin:8px 0;color:#6f6a5e}.site-footer .cols a:hover{color:var(--gold)}.pc-media{position:relative;display:block}.pc-img{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;border-radius:2px;background:#e6e2d8;touch-action:pan-y}.pc-img-slide{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition:opacity .4s ease}.pc-img-slide.active{opacity:1}@media(hover:hover)and (pointer:fine){.pc:hover .pc-img-slide.pc-b{opacity:1}}.pc-dots{position:absolute;left:0;right:0;bottom:9px;z-index:2;display:flex;justify-content:center;gap:4px;pointer-events:none}.pc-dots .pc-dot{width:4px;height:4px;border-radius:50%;background:#ffffff8c;box-shadow:0 0 2px #0000004d;transition:.25s}.pc-dots .pc-dot.on{background:#fff;transform:scale(1.4)}.pc .idx{position:absolute;top:12px;left:13px;z-index:3;font-family:Cormorant Garamond,serif;font-style:italic;font-size:14px;color:#fff;opacity:0;transition:.4s;text-shadow:0 1px 8px rgba(0,0,0,.45)}.pc:hover .idx{opacity:.92}.pc .qa{position:absolute;left:10px;right:10px;bottom:10px;opacity:0;transform:translateY(8px);transition:.3s;z-index:2;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine)and (min-width:761px){.pc:hover .qa{opacity:1;transform:none}}.pc .qa button{-webkit-tap-highlight-color:transparent;color:var(--ink)}.pc .qa-bar:not([hidden]){display:flex}.pc .qa-btn{width:100%;background:#f6f2eaf5;border:0;border-radius:40px;padding:12px;font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);cursor:pointer;box-shadow:0 6px 20px #3c321e24;transition:.2s}.pc .qa-btn:hover{background:var(--ink);color:var(--ivory)}.pc .qa-step{display:flex;align-items:center;gap:6px;background:#f6f2eaf7;border-radius:40px;padding:6px 10px 6px 14px;box-shadow:0 6px 20px #3c321e29}.pc .qa-back{flex:0 0 auto;background:none;border:0;font-size:15px;line-height:1;color:#8a8272;cursor:pointer;padding:4px 2px}.pc .qa-back[hidden]{display:none}.pc .qa-lab{flex:0 0 auto;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#9a927f;white-space:nowrap}.pc .qa-chips{display:flex;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1;padding:5px 3px}.pc .qa-chips::-webkit-scrollbar{display:none}.pc .qa-chip{flex:0 0 auto;scroll-snap-align:start;min-width:28px;text-align:center;font-size:10px;padding:7px 10px;border-radius:30px;cursor:pointer;color:var(--ink);transition:.15s;border:0;background:#20201d0d}.pc .qa-chip:hover:not(:disabled){background:var(--ink);color:var(--ivory)}.pc .qa-chip:disabled{opacity:.3;cursor:not-allowed;text-decoration:line-through}.pc .qa-chip.sw{min-width:0;width:19px;height:19px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.18);outline:2px solid transparent;outline-offset:1px;flex:0 0 auto}.pc .qa-chip.sw:hover:not(:disabled){background:inherit;transform:scale(1.08)}.pc .qa-chip.sw:disabled{text-decoration:none;position:relative}.pc .qa-chip.sw:disabled:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:50%;background:linear-gradient(to top right,transparent 46%,rgba(120,20,10,.55) 48%,rgba(120,20,10,.55) 52%,transparent 54%)}.pc .qa-sold{display:flex;justify-content:center;background:#f6f2eaf5;border-radius:40px;padding:12px;text-decoration:none}.pc .qa-soldlab{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#8a8272}.pc .qa-done{display:none;text-align:center;background:var(--ink);color:var(--ivory);border-radius:40px;padding:12px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase}.pc .qa.done .qa-bar,.pc .qa.done .qa-step{display:none}.pc .qa.done .qa-done{display:block}.pc-wish{position:absolute;top:10px;right:10px;z-index:3;width:30px;height:30px;border:0;background:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);transition:.2s;opacity:0;transform:translateY(-4px)}.pc:hover .pc-wish,.pc-wish.on{opacity:1;transform:none}.pc-wish svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;filter:drop-shadow(0 0 2px rgba(255,255,255,.85)) drop-shadow(0 0 5px rgba(255,255,255,.55)) drop-shadow(0 1px 2px rgba(0,0,0,.25))}.pc-wish:hover{transform:scale(1.12)}.pc-wish.on{color:#c1442e}.pc-wish.on svg{fill:currentColor}@media(hover:none){.pc-wish{opacity:1;transform:none}}.qa-trigger{display:none;position:absolute;top:10px;left:10px;z-index:4;width:32px;height:32px;border-radius:50%;background:#f6f2eaf0;border:0;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);box-shadow:0 4px 14px #3c321e2e;-webkit-tap-highlight-color:transparent}.qa-trigger svg{width:15px;height:15px;display:block}.qa-trigger:active{transform:scale(.94)}.qa-trigger.is-active{background:var(--ink);color:var(--ivory)}.pc-meta{display:flex;justify-content:space-between;align-items:baseline;margin-top:11px;gap:10px}.pc-n{font-family:Cormorant Garamond,serif;font-weight:300;font-size:18px;line-height:1.1;color:var(--ink)}.pc-p{font-size:12.5px;color:#6f6a5e;white-space:nowrap}.pc-wish-inline{display:none;flex:0 0 auto;order:2;background:none;border:0;padding:2px;margin:0;cursor:pointer;color:var(--ink)}.pc-wish-inline svg{width:16px;height:16px;display:block;fill:none;stroke:currentColor;stroke-width:1.6}.pc-wish-inline.on{color:#c1442e}.pc-wish-inline.on svg{fill:currentColor}.pc-row1{display:contents}.pc-colors{display:none;gap:6px;margin-top:8px;flex-wrap:wrap}.pc-color-dot{width:16px;height:16px;padding:0;margin:0;border:0;background:none;border-radius:50%;cursor:pointer;position:relative;flex:0 0 auto}.pc-color-dot:after{content:"";position:absolute;top:50%;left:50%;width:30px;height:30px;transform:translate(-50%,-50%)}.pc-color-sw{display:block;width:100%;height:100%;border-radius:50%;border:1px solid rgba(0,0,0,.18);box-shadow:inset 0 0 0 1px #fff6}.pc-color-dot.sel .pc-color-sw{outline:2px solid var(--gold);outline-offset:2px}@media(max-width:760px){.pc-wish:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.pc .qa-chip.sw{position:relative}.pc .qa-chip.sw:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.pc .qa-btn{min-height:44px;display:flex;align-items:center;justify-content:center}.pc .qa-chips{flex-wrap:nowrap;touch-action:pan-x;overscroll-behavior-inline:contain;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(to right,#000 calc(100% - 14px),transparent 100%)}.pc .qa{opacity:0;transform:none;pointer-events:none}.pc .qa.qa-open{opacity:1;pointer-events:auto}.qa-trigger{display:flex}.qa-trigger{top:auto;left:auto;bottom:8px;right:8px;width:26px;height:26px;background:#f6f2eaeb;box-shadow:0 2px 8px #3c321e29}.qa-trigger svg{width:12px;height:12px}.pc-wish{display:none}.pc-wish-inline{display:inline-flex}.pc-colors{display:flex;flex:1 1 auto;min-width:0;margin-top:0;align-items:center}.pc-meta{flex-direction:column;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;gap:4px}.pc-row1{display:flex;align-items:center;justify-content:space-between;gap:8px}.pc-n{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.pc-p{order:3}.pc-img{aspect-ratio:3/4}}.qa-sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:520;visibility:hidden;pointer-events:none}.qa-sheet.open{visibility:visible;pointer-events:auto}.qa-sheet .qs-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#1c1a1680;opacity:0;transition:.35s}.qa-sheet.open .qs-scrim{opacity:1}.qa-sheet .qs-panel{position:absolute;left:0;right:0;bottom:0;width:100%;max-height:82vh;background:var(--ivory);border-radius:18px 18px 0 0;transform:translateY(100%);transition:transform .4s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;box-shadow:0 -20px 50px #1e190f47}.qa-sheet.open .qs-panel{transform:none}.qa-sheet .qs-grip{width:36px;height:4px;border-radius:3px;background:#78643c47;margin:10px auto 0}.qa-sheet .qs-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 22px 12px;border-bottom:1px solid rgba(120,100,60,.18)}.qa-sheet .qs-title{font-family:Cormorant Garamond,serif;font-weight:400;font-size:22px;line-height:1.2}.qa-sheet .qs-price{display:block;margin-top:4px;font-family:Inter,sans-serif;font-size:12.5px;letter-spacing:.05em;color:#6f6a5e}.qa-sheet .qs-close{flex:0 0 auto;background:none;border:0;font-size:22px;line-height:1;color:var(--ink);cursor:pointer;padding:6px;margin:-6px}.qa-sheet .qs-body{padding:16px 22px 8px;overflow-y:auto;-webkit-overflow-scrolling:touch}.qa-sheet .qs-group{margin-bottom:18px}.qa-sheet .qs-group-lab{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:#9a927f;margin-bottom:10px}.qa-sheet .qs-chips{display:flex;flex-wrap:wrap;gap:8px}.qa-sheet .qs-chip{min-width:40px;text-align:center;font-size:12px;padding:10px 14px;border-radius:30px;cursor:pointer;color:var(--ink);border:1px solid rgba(120,100,60,.3);background:none;transition:.15s}.qa-sheet .qs-chip.sel{background:var(--ink);color:var(--ivory);border-color:var(--ink)}.qa-sheet .qs-chip:disabled{opacity:.3;cursor:not-allowed;text-decoration:line-through}.qa-sheet .qs-chip.sw{width:30px;height:30px;min-width:0;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.18);outline:2px solid transparent;outline-offset:2px}.qa-sheet .qs-chip.sw.sel{outline-color:var(--gold)}.qa-sheet .qs-chip.sw:disabled{position:relative;text-decoration:none}.qa-sheet .qs-chip.sw:disabled:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:50%;background:linear-gradient(to top right,transparent 46%,rgba(120,20,10,.55) 48%,rgba(120,20,10,.55) 52%,transparent 54%)}.qa-sheet .qs-foot{padding:14px 22px calc(22px + env(safe-area-inset-bottom));border-top:1px solid rgba(120,100,60,.18)}.qa-sheet .qs-add{width:100%;text-align:center;background:var(--ink);color:var(--ivory);border:0;border-radius:40px;padding:15px 20px;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:.25s}.qa-sheet .qs-add:hover{background:var(--gold)}.qa-sheet .qs-add:disabled{background:#20201d24;color:#9a927f;cursor:not-allowed}.lookbook{position:relative;height:min(72vh,640px);display:flex;align-items:flex-end;overflow:hidden;background:#141210;color:var(--ivory)}.lookbook img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center 26%}.lookbook .grade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(13,11,9,.6),transparent 55%),linear-gradient(transparent 45%,#0d0b09d1)}.lookbook .c{position:relative;z-index:2;padding:clamp(30px,5vw,64px);max-width:660px}.lookbook .eb{color:#d8bd85}.lookbook h1{font-family:Cormorant Garamond,serif;font-weight:300;font-size:clamp(46px,8.5vw,110px);line-height:.9;margin:12px 0 14px}.lookbook .lb-desc{color:#e4ddcd;max-width:470px;font-size:13.5px;line-height:1.7}.mast{max-width:var(--page-width);margin:0 auto;padding:clamp(28px,4vw,52px) clamp(18px,4vw,40px) clamp(6px,2vw,18px)}.mast-rule{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid rgba(32,32,29,.28);padding-bottom:12px;font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;color:#6f6a5e}.mast-rule .iss{color:var(--gold)}.mast-main{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-top:clamp(20px,3vw,38px)}.mast-main h1{font-family:Cormorant Garamond,serif;font-weight:300;font-size:clamp(46px,9vw,110px);line-height:.86}.mast-meta{display:flex;gap:clamp(18px,3vw,40px);padding-bottom:10px}.mast-meta div span{display:block;font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:#9a927f;margin-bottom:5px}.mast-meta div b{font-family:Cormorant Garamond,serif;font-weight:400;font-size:17px}.mast .mast-desc{max-width:520px;margin-top:16px;font-size:13.5px;line-height:1.7;color:#6f6a5e}.col-bar{position:sticky;top:var(--header-h,52px);z-index:100;background:#f6f2eae0;border-top:1px solid rgba(120,100,60,.16);border-bottom:1px solid rgba(120,100,60,.16);margin-top:clamp(18px,3vw,30px)}.col-bar-in{max-width:var(--page-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px clamp(18px,4vw,40px)}@media(max-width:900px){.col-bar-in{flex-wrap:wrap;row-gap:10px}}.col-filters{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.col-filters::-webkit-scrollbar{display:none}.col-filters a{flex:0 0 auto;font-size:11px;letter-spacing:.16em;text-transform:uppercase;padding:9px 16px;border-radius:30px;color:#8a8272;white-space:nowrap;transition:.25s}.col-filters a.on{background:var(--ink);color:var(--ivory)}.col-sort{position:relative;flex:0 0 auto}.col-sort select{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:none;border:1px solid rgba(120,100,60,.3);border-radius:30px;padding:10px 34px 10px 16px;cursor:pointer}.col-sort:after{content:"\25be";position:absolute;right:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--gold);font-size:10px}@media(min-width:761px){.col-grid[data-view=grid][data-density="2"]{grid-template-columns:repeat(2,1fr)}.col-grid[data-view=grid][data-density="3"]{grid-template-columns:repeat(3,1fr)}.col-grid[data-view=grid][data-density="4"]{grid-template-columns:repeat(4,1fr)}}.col-grid[data-view=editorial] .pc:nth-child(6n+1){grid-column:span 2}.col-grid[data-view=editorial] .pc:nth-child(6n+1) .pc-img{aspect-ratio:3/4}.col-grid[data-view=varied] .pc:nth-child(4n+1) .pc-img{aspect-ratio:3/4}.col-grid[data-view=varied] .pc:nth-child(4n+2) .pc-img{aspect-ratio:1/1}.col-grid[data-view=varied] .pc:nth-child(4n+3) .pc-img{aspect-ratio:4/5}.col-grid[data-view=varied] .pc:nth-child(4n+4) .pc-img{aspect-ratio:3/5}.col-grid[data-view=index]{display:block;max-width:760px;margin-left:auto;margin-right:auto;counter-reset:idxrow}.col-grid[data-view=index] .pc{display:block;width:100%}.col-grid[data-view=index] .pc-media{display:none}.col-grid[data-view=index] .pc-meta{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0;border-bottom:1px solid rgba(0,0,0,.1);margin:0;counter-increment:idxrow}.col-grid[data-view=index] .pc-meta:before{content:counter(idxrow,decimal-leading-zero) " \2014";font-family:Cormorant Garamond,serif;color:var(--gold);margin-right:8px}.col-grid[data-view=index] .pc-n{font-size:19px}.col-idxpreview{display:none;position:fixed;right:40px;top:50%;transform:translateY(-50%);width:260px;aspect-ratio:4/5;object-fit:cover;border-radius:3px;box-shadow:0 30px 60px #3c321e38;z-index:5}.col-idxpreview:not([hidden]){display:block}@media(max-width:1300px){.col-idxpreview{display:none!important}}@media(max-width:900px){.col-grid[data-view=index] .pc{display:flex;gap:12px;align-items:center}.col-grid[data-view=index] .pc-media{display:block;width:60px;flex:0 0 auto}.col-grid[data-view=index] .pc-img{aspect-ratio:4/5;width:60px}.col-grid[data-view=index] .pc-meta{flex:1;border-bottom:none;padding:10px 0}}.col-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,24px);grid-auto-flow:dense;max-width:var(--page-width);margin:clamp(24px,3vw,40px) auto clamp(54px,7.5vw,100px);padding:0 clamp(18px,4vw,40px);align-items:start}.col-grid>.pc{min-width:0}@media(max-width:1000px){.col-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.col-grid{grid-template-columns:repeat(2,1fr);gap:12px}}.etile{position:relative;border-radius:2px;overflow:hidden;background:#141210;color:#fff;display:block}.etile.poster,.etile.sale{grid-column:span 2;grid-row:span 2;aspect-ratio:8/5}.etile.lifestyle{grid-column:span 2;grid-row:span 2;aspect-ratio:5/6;border:1px solid rgba(201,171,115,.4)}.etile.lifestyle:after{background:linear-gradient(120deg,rgba(13,11,9,.42),transparent 60%),linear-gradient(transparent 30%,#0d0b09d9)}.etile.lifestyle h3{font-size:clamp(30px,3.6vw,52px)}@media(max-width:760px){.etile.poster,.etile.sale{grid-column:span 2;aspect-ratio:16/10}.etile.lifestyle{grid-column:span 2;aspect-ratio:4/5}}.etile img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.9;transition:transform 1.5s cubic-bezier(.16,1,.3,1)}.etile:hover img{transform:scale(1.05)}.etile:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,rgba(13,11,9,.5),transparent 55%),linear-gradient(transparent 45%,#0d0b09b8)}.etile .ec{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(22px,2.4vw,34px)}.etile .k{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:#d8bd85}.etile h3{font-family:Cormorant Garamond,serif;font-weight:300;font-size:clamp(24px,2.8vw,40px);line-height:1;margin:10px 0 6px;max-width:16ch}.etile .sub{font-size:12.5px;color:#dcd6c9;margin-bottom:12px}.etile .cta{align-self:flex-start;font-size:11px;letter-spacing:.2em;text-transform:uppercase;border-bottom:1px solid #d8bd85;padding-bottom:3px}.etile .flag{position:absolute;top:14px;left:14px;z-index:3;background:var(--gold);color:#20201d;font-size:10px;letter-spacing:.2em;text-transform:uppercase;padding:6px 12px;border-radius:20px}.col-pagination{max-width:var(--page-width);margin:44px auto 0;display:flex;gap:20px;justify-content:center;font-size:11px;letter-spacing:.2em;text-transform:uppercase}.col-loadmore{display:flex;justify-content:center;align-items:center;height:64px;margin:20px 0 clamp(54px,7.5vw,100px)}.col-spin{width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(120,100,60,.22);border-top-color:var(--gold);animation:colspin .8s linear infinite}@keyframes colspin{to{transform:rotate(360deg)}}.col-more-link{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink)}.section-pad{padding:clamp(54px,7.5vw,100px) clamp(20px,5vw,70px)}.tabs{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:24px 0 40px}.tab{font-size:11px;letter-spacing:.2em;text-transform:uppercase;padding:10px 20px;border-radius:30px;cursor:pointer;transition:.3s;color:#8a8272;border:0;background:none}.tab.on{background:var(--ink);color:var(--ivory)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,22px);max-width:var(--page-width);margin:0 auto;align-items:start}@media(max-width:900px){.grid-4{grid-template-columns:repeat(2,1fr)}}.cart-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;visibility:hidden;pointer-events:none}.cart-drawer.open{visibility:visible;pointer-events:auto}.cart-drawer .scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#1c1a1680;opacity:0;transition:.4s}.cart-drawer.open .scrim{opacity:1}.cart-drawer .panel{position:absolute;top:0;right:0;height:100%;width:min(420px,92vw);background:var(--ivory);transform:translate(100%);transition:transform .45s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column}.cart-drawer.open .panel{transform:none}.cart-drawer .cd-head{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid rgba(120,100,60,.18)}.cart-drawer .cd-head h2{font-family:Cormorant Garamond,serif;font-weight:300;font-size:26px}.cart-drawer .cd-close{background:none;border:0;font-size:24px;cursor:pointer;color:var(--ink)}.cart-drawer .cd-items{flex:1;overflow-y:auto;padding:8px 24px}.cart-drawer .cd-empty{padding:60px 24px;text-align:center;color:#6f6a5e;font-family:Cormorant Garamond,serif;font-style:italic;font-size:20px}.cd-item{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid rgba(120,100,60,.14)}.cd-item .ci-img{display:block;flex:0 0 auto;border-radius:2px;transition:opacity .2s}.cd-item .ci-img:hover{opacity:.82}.cd-item img{width:66px;height:82px;object-fit:cover;border-radius:2px;background:#e6e2d8}.cd-item .ci-n{display:block;font-family:Cormorant Garamond,serif;font-size:17px;transition:color .2s;overflow-wrap:break-word;word-break:break-word}.cd-item .ci-n:hover{color:var(--gold)}.cd-item .ci-o{font-size:11px;color:#8a8272;margin-top:2px}.cd-item .ci-b{display:flex;justify-content:space-between;align-items:center;margin-top:8px;font-size:12px;color:#6f6a5e}.cd-item .ci-rm{background:none;border:0;color:#9a927f;font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}.cart-drawer .cd-foot{padding:20px 24px 26px;border-top:1px solid rgba(120,100,60,.18)}.cart-drawer .cd-sub{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:16px}.cart-drawer .cd-foot .btn-dark{width:100%;text-align:center}@media(max-width:760px){body.cart-drawer-open shopify-chat{display:none!important;visibility:hidden!important}}.search-inline{position:relative;display:flex;align-items:center}.search-inline>a[data-search-open]{position:relative;z-index:2}.search-inline input{position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%);width:0;min-width:0;opacity:0;border:0;border-bottom:1px solid transparent;background:none;font-family:inherit;font-weight:400;font-size:11px;letter-spacing:normal;text-transform:none;color:var(--ink);outline:none;padding:0 0 2px;pointer-events:none;transition:width .28s cubic-bezier(.16,1,.3,1),opacity .18s ease,color .24s ease,border-color .22s ease;-webkit-appearance:none;appearance:none;text-align:left;white-space:nowrap}.search-inline input::placeholder{color:transparent}.search-inline input::-webkit-search-decoration,.search-inline input::-webkit-search-cancel-button,.search-inline input::-webkit-search-results-button,.search-inline input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none;display:none}.si-ph{position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%);width:0;overflow:hidden;white-space:nowrap;font-family:inherit;font-weight:400;font-size:11px;letter-spacing:normal;text-transform:none;color:#9a927f;pointer-events:none;opacity:0;transition:width .28s cubic-bezier(.16,1,.3,1),opacity .18s ease,color .24s ease}.si-ph em{font-style:italic;position:relative}.si-ph em:after{content:"";display:inline-block;width:1px;height:1em;background:currentColor;margin-left:1px;vertical-align:-2px;animation:siCursor .9s steps(1) infinite}@keyframes siCursor{0%,49%{opacity:1}50%,to{opacity:0}}.site-header.search-open .search-inline input{width:var(--yg-search-max,160px);opacity:1;pointer-events:auto;border-bottom-color:#20201d38}.site-header.search-open .search-inline input:placeholder-shown~.si-ph{width:var(--yg-search-max,160px);opacity:1}/* Mobile search fixes: (1) bar/backdrop top position now tracks the header's real on-screen
   bottom edge via --yg-search-top/--yg-search-bottom (set in theme.js updateSearchBarTop() from
   header.getBoundingClientRect()) instead of the static --header-h var, which only equals that
   edge when the header sits at viewport top:0 -- untrue before scrolling past the announcement
   bar or on is-transparent hero pages, which produced a visible gap/overlap between the header
   and the search bar. (2) the .si-ph animated "black top" typing placeholder is no longer
   force-hidden on mobile -- it's repositioned into the new full-width bar (native placeholder
   set back to transparent) instead of falling back to a static, non-animated placeholder.
   (3) theme.js now treats a tap on the search icon while already open (mobile only) as
   submit/refocus rather than instant-close, since that icon sits fixed on the right edge of the
   input itself and any stray tap there used to instantly wipe out the whole overlay before a
   shopper could type a single character -- see the [data-search-open] click handler in
   assets/theme.js for the matching JS half of this fix. */@media(max-width:820px){.site-header.search-open .search-inline{position:static}.site-header.search-open .search-inline input{position:fixed;top:var(--yg-search-top,var(--header-h,56px));left:0;right:0;width:100vw!important;max-width:none;height:56px;margin:0;padding:0 54px 0 18px;font-size:16px;line-height:56px;background:var(--ivory);border:0;border-bottom:1px solid rgba(120,100,60,.22);color:var(--ink);z-index:200;opacity:1;pointer-events:auto;transform:none;white-space:normal;text-align:left}.site-header.search-open .search-inline input::placeholder{color:transparent}.site-header.search-open .search-inline input:placeholder-shown~.si-ph{display:block!important;position:fixed!important;top:var(--yg-search-top,var(--header-h,56px))!important;left:18px!important;right:54px!important;width:auto!important;height:56px!important;line-height:56px!important;transform:none!important;opacity:1!important;z-index:200!important;pointer-events:none!important}.site-header.search-open .search-inline>a[data-search-open]{position:fixed;top:var(--yg-search-top,var(--header-h,56px));right:12px;left:auto;z-index:201;height:56px;display:flex;align-items:center}.site-header.search-open+.search-overlay{visibility:visible;pointer-events:auto;opacity:1;transform:none;top:var(--yg-search-bottom,calc(100% + 56px));z-index:150}.site-header.search-open+.search-overlay .so-x{display:none}body.yg-search-lock{overflow:hidden}}.search-overlay{position:absolute;top:100%;left:0;right:0;z-index:110;visibility:hidden;pointer-events:none;opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .2s cubic-bezier(.16,1,.3,1),visibility .2s}.search-overlay.open{visibility:visible;pointer-events:auto;opacity:1;transform:none}.search-overlay .so-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;background:transparent}.so-x{position:absolute;top:14px;right:clamp(18px,4vw,40px);z-index:3;border:0;background:none;padding:8px;margin:-8px;color:var(--ink);font-size:20px;line-height:1;cursor:pointer;opacity:.55;transition:opacity .2s}.so-x:hover{opacity:1}.so-results{position:relative;z-index:2;background:var(--ivory);width:100%;padding:0 clamp(18px,4vw,40px)}.so-results:not(:empty){padding-top:44px;padding-bottom:40px;max-height:calc(100vh - var(--header-h,60px));overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 20px 40px #3c321e29;border-top:1px solid rgba(120,100,60,.16)}.so-hint{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:#9a927f;margin-bottom:14px}.so-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}@media(max-width:1100px){.so-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:820px){.so-grid{grid-template-columns:repeat(3,1fr);gap:10px}}@media(max-width:480px){.so-grid{grid-template-columns:repeat(2,1fr)}}.so-item img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:2px;background:#e6e2d8}.so-item .n{font-family:Cormorant Garamond,serif;font-size:14px;margin-top:7px;line-height:1.15}.so-item .p{font-size:11px;color:#6f6a5e;margin-top:2px}.so-all{display:inline-block;margin-top:20px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;border-bottom:1px solid var(--gold);padding-bottom:3px}.yg-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(20px);background:var(--ink);color:var(--ivory);padding:13px 24px;border-radius:40px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;z-index:600;opacity:0;transition:.4s;pointer-events:none}.yg-toast.show{opacity:1;transform:translate(-50%)}@media(max-width:760px){.yg-toast{white-space:nowrap;max-width:none;width:auto;font-size:10px;letter-spacing:.09em;padding:11px 18px}}.pdp-th img{-webkit-user-drag:none;user-drag:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.pdp-badge,.pdp-tryfab{z-index:15!important}.pdp-portrait[data-gallery=stacked]{background:transparent!important;box-shadow:none!important;overflow:visible!important}.pdp-addrow .pdp-wish{align-self:center!important;width:43px!important;height:43px!important}.pdp-support-line{display:flex;align-items:flex-start;gap:7px;font-size:11px;line-height:1.6;color:#8a8272;max-width:280px;margin-top:-10px}.pdp-support-line svg{width:12px;height:12px;flex:0 0 auto;margin-top:2px;color:var(--gold)}.pdp-support-line b{color:var(--gold);font-weight:500}.pc .qa{text-align:center}.pc .qa-step{display:inline-flex;max-width:100%;text-align:left}[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1);will-change:opacity,transform}[data-reveal].is-revealed{opacity:1;transform:translateY(0)}[data-reveal-item]{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);will-change:opacity,transform}[data-reveal-item].is-revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){[data-reveal],[data-reveal-item]{opacity:1!important;transform:none!important;transition:none!important}}#MainContent{transition:opacity .18s cubic-bezier(.4,0,.2,1),transform .18s cubic-bezier(.4,0,.2,1)}body[data-yg-trans=turn] #MainContent{transition:opacity .24s cubic-bezier(.16,1,.3,1),transform .24s cubic-bezier(.16,1,.3,1)}body[data-yg-trans=turn] #MainContent.is-transitioning-out{opacity:0;transition:opacity .18s cubic-bezier(.16,1,.3,1),transform .18s cubic-bezier(.16,1,.3,1)}body[data-yg-trans=turn][data-yg-dir=forward] #MainContent.is-transitioning-out{transform:translate(-64px) scale(.965)}body[data-yg-trans=turn][data-yg-dir=back] #MainContent.is-transitioning-out{transform:translate(64px) scale(.965)}body[data-yg-trans=turn] main#MainContent.is-transitioning-in{opacity:0;transition:none}body[data-yg-trans=turn][data-yg-dir=forward] main#MainContent.is-transitioning-in{transform:translate(64px) scale(1.03)}body[data-yg-trans=turn][data-yg-dir=back] main#MainContent.is-transitioning-in{transform:translate(-64px) scale(1.03)}body[data-yg-trans=veil] #MainContent.is-transitioning-out{opacity:0;transition:opacity .08s ease}body[data-yg-trans=veil] main#MainContent.is-transitioning-in{opacity:0;transition:none}@media(prefers-reduced-motion:reduce){#MainContent,#MainContent.is-transitioning-out,main#MainContent.is-transitioning-in{opacity:1!important;transform:none!important;transition:none!important}}#yg-trans-fx{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none}#yg-trans-fx .yg-veil{position:absolute;top:0;bottom:0;width:50%;transform:scaleX(0)}#yg-trans-fx .yg-veil-l{left:0;transform-origin:right center;background:linear-gradient(to right,var(--ivory-2),var(--ivory))}#yg-trans-fx .yg-veil-r{right:0;transform-origin:left center;background:linear-gradient(to left,var(--ivory-2),var(--ivory))}#yg-trans-fx .yg-veil.closing{transition:transform .13s cubic-bezier(.16,1,.3,1);transform:scaleX(1)}#yg-trans-fx .yg-veil-r.closing{transition-delay:15ms}#yg-trans-fx .yg-veil.opening{transition:transform .15s cubic-bezier(.16,1,.3,1);transform:scaleX(0)}#yg-trans-fx .yg-veil-l.opening{transition-delay:15ms}#yg-trans-fx .yg-veil-seam{position:absolute;top:0;bottom:0;left:50%;width:2px;transform:translate(-50%);background:linear-gradient(var(--gold-2,#d8bd85),var(--gold));opacity:0;pointer-events:none;box-shadow:0 0 10px #b99a5b8c;transition:opacity .08s ease}#yg-trans-fx .yg-veil-seam.show{opacity:1;transition:opacity .06s ease .06s}@media(prefers-reduced-motion:reduce){#yg-trans-fx{display:none}}.site-header.is-transparent{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom-color:transparent}.site-header.is-transparent .logo,.site-header.is-transparent nav a,.site-header.is-transparent .util a{color:#fff}.site-header.is-transparent .mm-burger span{background:#fff}.site-header.is-transparent .cart-count{color:#f0d9a8}.site-header .logo,.site-header nav a,.site-header .util a{transition:color .24s ease}@media(prefers-reduced-motion:reduce){.site-header,.site-header .logo,.site-header nav a,.site-header .util a{transition:none}}.site-header.is-transparent .search-inline input{color:#fff}.site-header.is-transparent .search-inline .si-ph{color:#ffffffb8}.site-header.is-transparent.search-open .search-inline input{border-bottom-color:#ffffff73}.site-header.is-transparent.has-results{background:var(--ivory);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom-color:#0000000d}.site-header.is-transparent.has-results .logo,.site-header.is-transparent.has-results nav a,.site-header.is-transparent.has-results .util a{color:var(--ink)}.site-header.is-transparent.has-results .mm-burger span{background:var(--ink)}.site-header.is-transparent.has-results .cart-count{color:var(--gold)}.site-header.is-transparent.has-results .search-inline input{color:var(--ink)}.site-header.is-transparent.has-results .search-inline .si-ph{color:#9a927f}.site-header.is-transparent.has-results.search-open .search-inline input{border-bottom-color:#20201d38}.site-header.is-transparent.mm-open{background:var(--ivory);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom-color:#0000000d}.site-header.is-transparent.mm-open .logo,.site-header.is-transparent.mm-open nav a,.site-header.is-transparent.mm-open .util a{color:var(--ink)}.site-header.is-transparent.mm-open .mm-burger span{background:var(--ink)}.site-header.is-transparent.mm-open .cart-count{color:var(--gold)}
/* Fix: on mobile (<=820px) the full-width search bar's input/placeholder is unconditionally
   forced to a solid ivory background with dark ink text (see the max-width:820px block above).
   But .site-header.is-transparent (used on hero pages like the homepage) sets that same input
   and its .si-ph placeholder to WHITE text for legibility over a dark photo -- and since that
   rule has equal CSS specificity and sits later in this file, it silently won the cascade even
   on mobile, producing white text on the mobile bar's ivory background (i.e. nearly invisible,
   "washed out" placeholder/typed text) specifically on transparent-header pages. This never
   showed up on interior pages because they don't carry the is-transparent class at all. Restore
   dark ink text for the mobile solid bar regardless of is-transparent by placing the override
   last in the cascade (same specificity, source order decides the tie). */
@media(max-width:820px){.site-header.is-transparent.search-open .search-inline input{color:var(--ink)}.site-header.is-transparent.search-open .search-inline .si-ph{color:#9a927f}.site-header.is-transparent.search-open .search-inline input::placeholder{color:transparent}}

/* ---- Task #152: Fitting Room try-on "black screen" fix ----
   Root cause (confirmed live via computed-style inspection): the third-party Fitting Room
   app's own upload-area markup sets its "UPLOAD YOUR PHOTO" text color to rgb(32,32,29),
   which is IDENTICAL to that same element's background color -- so the text is technically
   present/visible per the DOM but completely unreadable, reading as a solid black square.
   Fix: force legible ivory text on the app's own text elements, !important since this is
   overriding the third-party app's own inline/embedded styles. Follows the same override
   pattern already used for #fittingRoomModal .fitting-room-try-on-button in main-product.liquid. */
#fittingRoomModal .fitting-room-upload-area,
#fittingRoomModal .fitting-room-upload-area *{color:#f6f2ea!important}
#fittingRoomModal .fitting-room-hover-instructions,
#fittingRoomModal .fitting-room-hover-instructions *{color:#f6f2ea!important}
#fittingRoomModal .fitting-room-privacy-message,
#fittingRoomModal .fitting-room-privacy-message *{color:#f6f2ea!important}

/* ---- Task #153: support/chat bubble blocking sticky product-page add-to-cart bar ----
   shopify-chat is a full-viewport (inset:0), fixed, very high z-index custom element; its
   real position on screen comes from its own shadow DOM's .activator-nudge wrapper
   (bottom:88px;left:20px). On the product page (template-product) at mobile widths the
   sticky add-to-cart bar sits in that same bottom-left zone with only a couple px of
   clearance. Moving the whole shopify-chat host up via transform carries its shadow-root
   children (including .activator-nudge) with it, clearing the sticky bar without touching
   the third-party element's internals. Scoped to the product template + mobile only. */
@media(max-width:760px){
  body.template-product shopify-chat{transform:translateY(-80px);transition:transform .2s ease}
}

/* ---- Task #202: duplicate arrow on collection-page "Featured" sort control ----
   .col-sort:after (further up this file) draws a "\25be" glyph via CSS content, positioned
   absolute over the right edge of .col-sort -- written for when the sort control was a bare
   native <select> with no arrow of its own. sections/main-collection.liquid's later filter/sort
   redesign replaced that <select> with a custom button (.col-filter-trigger.col-sort-trigger)
   that already draws its own triangle via .col-filter-trigger::after, but never removed this
   now-stale wrapper-level glyph -- so the sort control renders two overlapping arrows, most
   noticeable on mobile where the narrower .col-sort wrapper leaves no room between them. The
   real <select> this glyph was meant for now only exists inside a <noscript> fallback, so
   removing it doesn't affect anything visible with JS enabled. Scoped removal (content:none)
   rather than editing the original rule in place, consistent with the append-only patch pattern
   already used above in this file (see the Task #152/#153 blocks). */
.col-sort:after{content:none}

/* ---- Task #204: mobile collection-card swatch row / wishlist heart vertical misalignment ----
   Root cause: .pc-colors (the below-image color-swatch dots row) carries a base
   "margin-top:8px" intended for when it renders as its own block underneath other content.
   Once the mobile redesign (Task #129) started placing .pc-colors as a flex sibling of the
   inline wishlist heart inside .pc-row1 (which is display:flex;align-items:center on mobile),
   that stray margin-top pushed the swatch dots' margin box down within the flex line, so even
   though align-items:center centers each item's margin box, the extra 8px top margin shifted
   the *content* (the dots) a few pixels below the heart's visual center instead of level with
   it. Zeroing margin-top here (scoped to the mobile media query so it doesn't affect any other
   .pc-colors context) lets .pc-row1's align-items:center center the actual dot content against
   the heart. Also added align-items:center on .pc-colors itself so multi-row/wrapped swatch
   sets stay centered too. See snippets/product-card.liquid for the matching markup fix: that
   file now always renders the .pc-colors container (even empty, when a product has no color
   option) inside .pc-row1 next to the heart, with the title always on its own line below --
   previously a swatch-less product's .pc-row1 held the title + heart directly instead of
   colors + heart, which removed a full title-line's worth of vertical space compared to a
   swatched neighbor and made card heights/price position jump around in the grid. */

/*essential custom bottom upsell position*/
.essential-upsell-cross-sell-block,
.essential-upsell-side-cart-top,
.essential-upsell-side-cart-bottom,
.essential-upsell-block,
.essential-upsell-default-placement,
.essential-upsell-frequently-bought-together-block,
.essential-upsell-product-addon-block {
  flex-grow: 0 !important;
}
/*END*/

/* Essential Preorder & Back-In-Stock app: unify its "Notify me when available" button with
   our native Add to Cart / Sold Out button styling, and hide our own Add to Cart button
   (in ANY state -- active or already-disabled) whenever the app's back-in-stock button is
   live in the DOM, so shoppers only ever see ONE consistently-styled action instead of a
   native Add to Cart button stacked above a mismatched app-default button. This must cover
   the ACTIVE (non-disabled) case too: the app can leave a managed variant's Shopify inventory
   policy set to "continue selling when out of stock" indefinitely (it resets DENY back to
   CONTINUE on its own), which keeps Shopify's availableForSale true and our native Add to Cart
   button fully clickable even though the product is actually out of stock -- our theme JS only
   disables/soldouts that button based on Shopify's own availability signal, so without this
   broader rule a truly out-of-stock, app-managed variant would show a live, purchasable Add to
   Cart button right next to the app's own Notify Me button. :has() re-evaluates live as the
   app injects its button asynchronously, so no JS/MutationObserver is needed here.
   Written generically against the app's own stable classes/data-attributes (not tied to any
   specific product), so it applies automatically to any product this app marks
   preorder/back-in-stock in the future. Matches both a bare
   .essential-preorder-bis-container-active sibling AND the app's current live markup, which
   wraps that container in an extra .essential-preorder-bis-button-placement sibling div --
   confirmed via live DOM inspection on Word of God Pea Coat, which nests it one level deeper
   than a plain adjacent-sibling selector alone would catch. */
.pdp-addrow:has(+ .essential-preorder-bis-container-active button) .pdp-add,
.pdp-addrow:has(+ * .essential-preorder-bis-container-active button) .pdp-add {
  display: none !important;
}

.essential-preorder-bis-container-active [data-essential-preorder-element="back-in-stock-button"] {
  background: #20201D !important;
  border: 0 !important;
  border-radius: 40px !important;
  padding: 15px 30px !important;
  width: 100%;
  transition: background-color .2s;
}
.essential-preorder-bis-container-active [data-essential-preorder-element="back-in-stock-button"]:hover {
  background: #3a3a35 !important;
}
.essential-preorder-bis-container-active [data-essential-preorder-element="back-in-stock-button-text"] {
  color: #F6F2EA !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: 2.2px !important;
  text-transform: uppercase !important;
}

/* ---- Bug fix (reported live, screenshot on draft preview): "Notify me when available" button
   rendered with SQUARE corners instead of the 40px pill shape, and the wishlist heart next to it
   rendered as a stretched oval instead of a clean circle.
   Root cause, confirmed via live getComputedStyle() inspection on the draft preview
   (yesugod.com/products/lord-is-coming-top?preview_theme_id=167085736178):
   relocateWishForPreorder() in assets/theme.js (see the big comment block there) physically
   MOVES the app's back-in-stock button and the .pdp-wish heart out of their original parents
   and appends them into a NEW .pdp-bis-row div that it creates inside
   .essential-preorder-bis-button-placement. That row is NOT a descendant of
   .essential-preorder-bis-container-active -- confirmed live: walking up the button's actual
   ancestor chain post-relocation goes button -> .pdp-bis-row -> .essential-preorder-bis-button-
   placement -> .pdp-form, with .essential-preorder-bis-container-active nowhere in it. So the
   ".essential-preorder-bis-container-active [data-essential-preorder-element=back-in-stock-
   button]" selector above never matches once JS relocates the button, and it silently falls
   back to the app's own default styling (computed border-radius: 0, confirmed live) -- hence
   the square corners. Likewise ".pdp-addrow .pdp-wish{width:43px!important;height:43px!important}"
   (further up this file) requires a .pdp-addrow ancestor, which the heart also loses once moved
   into .pdp-bis-row -- confirmed live computed size becomes a stretched 52x21px box instead of a
   43x43px circle, since it becomes an unconstrained flex sibling of the button (which itself
   gets flex:1 from the relocation JS). Fix: re-declare the same button/text styling AND the
   heart's fixed circular size scoped to .pdp-bis-row, which IS the button and heart's real
   post-relocation ancestor, so both render correctly regardless of whether the original
   .essential-preorder-bis-container-active wrapper is present in the moved-from location. */
.pdp-bis-row [data-essential-preorder-element="back-in-stock-button"] {
  background: #20201D !important;
  border: 0 !important;
  border-radius: 40px !important;
  padding: 15px 30px !important;
  transition: background-color .2s;
}
.pdp-bis-row [data-essential-preorder-element="back-in-stock-button"]:hover {
  background: #3a3a35 !important;
}
.pdp-bis-row [data-essential-preorder-element="back-in-stock-button-text"] {
  color: #F6F2EA !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: 2.2px !important;
  text-transform: uppercase !important;
}
.pdp-bis-row .pdp-wish {
  width: 43px !important;
  height: 43px !important;
  flex: 0 0 43px !important;
  border-radius: 50% !important;
}

/* ---- Bug fix (reported live, screenshot on hover): Notify me when available button hover
   state broke -- text wrapped to two lines, button appeared to expand, wishlist heart lost
   visibility, and hover background/text combo was too low-contrast to read. Root cause: the
   button label is plain text INSIDE the button itself (no separate back-in-stock-button-text
   span in the live app DOM), so the color/font rule above never matches it. white-space was
   never explicitly set, so it only stayed on one line by luck of available width. The button
   also keeps the theme's own .btn-dark class, and .btn-dark:hover sets color:var(--ink) with
   no !important -- our existing hover rule only overrides background, so on hover the text
   fell back to near-black against a dark background. Fix: style the real button element
   directly (not the non-existent text span) with nowrap + correct cream color in both base
   and hover state, and reassert flex:1 on hover so nothing shifts layout just by matching
   :hover. Heart sizing rule above is untouched. */
.pdp-bis-row [data-essential-preorder-element="back-in-stock-button"] {
  color: #F6F2EA !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: 2.2px !important;
  text-transform: uppercase !important;
  white-space: nowrap !important;
  flex: 1 !important;
}
.pdp-bis-row [data-essential-preorder-element="back-in-stock-button"]:hover {
  background: #3a3a35 !important;
  color: #F6F2EA !important;
  white-space: nowrap !important;
  flex: 1 !important;
}

/* ---- Task #214: collection editorial tile leaves neighboring product cards misaligned ----
   Root cause, confirmed live via getComputedStyle()/getBoundingClientRect() on the Lord Is
   Coming collection (yesugod.com/collections/lord-is-coming) at multiple breakpoints/view
   modes: .etile.poster/.sale/.lifestyle get grid-column:span 2 but no grid-row span. Left as a
   single-row item, CSS Grid still auto-sizes that one implicit row to the tile's full (much
   taller) intrinsic height, so the two shorter product cards placed beside it in the same row
   end up flush at the row's top (align-items:start) but leave a large chunk of unused track
   height below themselves before the next row starts -- and depending on exact card heights/
   image aspect ratios at a given breakpoint, that leftover space reads as a stray blank gap
   around the shorter cards rather than a clean magazine layout. Fix: give the tall tile
   variants an explicit grid-row:span 2 so the auto-placement algorithm (grid-auto-flow:dense)
   correctly reserves a 2-row-tall x 2-col-wide block for it and dense-packs FOUR small cards
   around it (2 flush with its top, 2 flush with its bottom) instead of leaving one oversized
   row with only 2 cards and dead space. Verified via live rect measurements at 4-col, 3-col,
   and mobile 2-col breakpoints post-fix: tile and its neighboring cards' tops/bottoms align
   exactly, no leftover gap, and plain collections with no .etile elements (e.g. /collections/
   tops) are completely unaffected since this only touches .etile selectors. Not touched in the
   max-width:760px override block below since at that breakpoint the tile already spans the
   full 2-column width alone (no siblings share its row), so the row-span is inherited
   harmlessly from this base rule with no visual difference. */


/* ---- Task #218 (2026-09-30): Essential Upsell app "It's better together" cross-sell card in the
   cart drawer rendered with the app's own out-of-the-box styling -- a plain white card, a heavy
   default sans-serif, squared corners, and a flat black rectangular "+ Add" button -- none of
   which match this theme's Cormorant Garamond / Inter pairing, ivory/gold palette, or the
   pill-shaped button/badge language used everywhere else, so the module read as a bolted-on
   foreign widget dropped into an otherwise fully restyled cart drawer.
   Confirmed live via DOM inspection on yesugod.com (add PSALMS27 Shirt to bag, then remove its
   paired PSALMS27 Shorts line item to re-trigger the "It's better together" cross-sell prompt in
   the drawer): the app renders through stable `data-essential-upsell-element` attributes rather
   than app-specific class names (its own class list is machine-generated atomic/utility classes
   that are not safe or stable to target directly), and it reads its colors/sizes from CSS custom
   properties set inline per-element (e.g. style="--backgroundColor:#fff"), so overriding the
   rendered background-color/color/border/etc. properties directly with !important is required to
   beat those inline custom-property values -- the same override pattern already used above for
   the Essential Preorder app's back-in-stock button.
   Scoped to every known Essential Upsell placement wrapper class already grouped together in the
   "/*essential custom bottom upsell position*/" rule above (cross-sell block, side-cart top/
   bottom, default/frequently-bought-together/product-addon placements), since they all share this
   exact same internal markup per the app's own structure -- not just the cart-drawer instance
   reported live. The data-essential-upsell-element selectors below are otherwise left unscoped to
   any wrapper class, since that attribute namespace is unique to this app and not reused anywhere
   else in the theme.
   Design choices below match real, existing theme patterns rather than inventing new ones:
   - Card surface: var(--ivory-2) fill on the outer module container, with the inner product tile
     picking up the exact 1px rgba(201,171,115,.4) gold-tinted border already used on
     .etile.lifestyle tiles -- so the card reads as "of the theme" (soft gold-tinted cream, not
     stark white) while still standing out from the plain ivory drawer background around it.
   - Heading "It's better together": switched to Cormorant Garamond serif (the theme's display
     face) at a size smaller than .cart-drawer .cd-head h2's 26px drawer-title treatment, since
     this is a secondary, in-line module heading and not the drawer's own title.
   - "Matching Piece" badge: restyled onto the theme's real gold-pill badge pattern already used by
     .etile .flag (gold fill, dark ink text, uppercase, letter-spaced, fully rounded pill) -- the
     closest existing badge precedent in the theme -- instead of the app's square black pill.
   - Product title ("PSALMS27 Shorts"): Cormorant Garamond, matching .cd-item .ci-n's cart-line-item
     product-name treatment, since this card is conceptually a cart line item.
   - Variant value / price: Inter, muted colors matching .cd-item .ci-o (variant line) and
     .cd-item .ci-b (price line), the same conventions already used for real cart line items.
   - "+ Add" button: the theme's real dark pill-button language (.btn-dark's ink background / cream
     text / fully rounded pill), scaled down with .pc .qa-btn-style compact padding/type size to
     fit the card's available width, with the same gold hover swap .btn-dark:hover already uses
     sitewide. */

.essential-upsell-cross-sell-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-side-cart-top [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-side-cart-bottom [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-default-placement [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-frequently-bought-together-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-product-addon-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type] {
  background-color: var(--ivory-2) !important;
  border-radius: 8px !important;
}

div[data-essential-upsell-element="header"] > div[data-essential-upsell-element="title"] {
  font-family: 'Cormorant Garamond', serif !important;
  font-weight: 400 !important;
  font-size: 19px !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  color: #20201d !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}

span[data-essential-upsell-element="offer-badge"] {
  background-color: #b99a5b !important;
  color: #20201d !important;
  font-family: Inter, sans-serif !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  letter-spacing: .2em !important;
  text-transform: uppercase !important;
  border-radius: 20px !important;
  border-width: 0 !important;
  padding: 6px 12px !important;
  line-height: 1 !important;
}

div[data-essential-upsell-element="product"] {
  background-color: rgba(185,154,91,.22) !important;
  border-style: solid !important;
  border-width: 1px !important;
  border-color: rgba(201,171,115,.4) !important;
  border-radius: 2px !important;
}

div[data-essential-upsell-element="content"] a[data-essential-upsell-element="title"] {
  font-family: 'Cormorant Garamond', serif !important;
  font-weight: 400 !important;
  font-size: 17px !important;
  color: #20201d !important;
  border-radius: 0 !important;
}

div[data-essential-upsell-element="variant-select"] span[data-essential-upsell-element="value"] {
  font-family: Inter, sans-serif !important;
  font-size: 11px !important;
  color: #8a8272 !important;
}

div[data-essential-upsell-element="variant-select"] [data-essential-upsell-element="icon"] svg path {
  fill: #8a8272 !important;
}

div[data-essential-upsell-element="price"] div[data-essential-upsell-element="regular-price"] {
  font-family: Inter, sans-serif !important;
  font-size: 12px !important;
  color: #6f6a5e !important;
}

button[data-essential-upsell-element="add-to-cart-button"] {
  background-color: #20201d !important;
  color: #f6f2ea !important;
  border-width: 0 !important;
  border-radius: 40px !important;
  padding: 10px 18px !important;
  font-family: Inter, sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 400 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  transition: background-color .3s !important;
}
button[data-essential-upsell-element="add-to-cart-button"]:hover {
  background-color: #b99a5b !important;
  color: #20201d !important;
}
button[data-essential-upsell-element="add-to-cart-button"] [data-essential-upsell-element="icon"] svg path {
  fill: #f6f2ea !important;
}
button[data-essential-upsell-element="add-to-cart-button"]:hover [data-essential-upsell-element="icon"] svg path {
  fill: #20201d !important;
}
/*END Task #218*/

/* ---- Task #219 (2026-09-30): further refinement of the Essential Upsell "It's better
   together" cross-sell card (see Task #218 above for the original theme-matching restyle),
   per live feedback after seeing that restyle on the draft preview:
   1) Variant/size control read as plain, unstyled dead text -- confirmed live via
      getComputedStyle() inspection on div[data-essential-upsell-element="variant-select"]: no
      border, no background, no padding, border-radius:0, cursor:auto, and its chevron icon
      wrapper rendered at a mismatched 20x20px next to 11px text, so nothing about it signaled
      "this is a clickable control." Adapted the theme's own existing pill-select pattern
      (.col-sort select further up this file: 1px rgba(120,100,60,.3) border, 30px pill radius,
      padding, gold dropdown arrow, cursor:pointer) down to a compact inline chip sized for this
      small in-card control rather than a full-width dropdown bar -- the closest real precedent
      in the theme for a "selectable value" affordance. Also switched the value text color from
      the muted #8a8272 (fine as bare secondary text, too low-contrast once boxed as a control
      label) to var(--ink), and shrunk/recolored the chevron to match the gold arrow already
      used on .col-sort. flex:0 0 auto + align-self:flex-start on both the wrapper and the value
      span keep the new pill hugging its own text instead of stretching to fill the column-flex
      product-content layout the app renders this control inside (confirmed live: without this
      the pill stretched to the card's full content width, and the value text's own
      overflow:hidden/white-space:nowrap collapsed it to an ellipsis once the wrapper shrank).
   2) The card's outer surface used var(--ivory-2) (#efe8db) against the cart drawer's own
      var(--ivory) (#f6f2ea) background -- two adjacent steps on the same warm-neutral scale, so
      the module barely separated from the surrounding drawer. Tested live on the draft preview
      against a full var(--ink) dark-card inversion (clear separation but too heavy/jarring for
      a small inline module -- reads like an unrelated banner dropped into an otherwise airy
      drawer) and the flatter #e6e2d8 neutral already used for image placeholders elsewhere
      (adequate separation but loses the gold branding this module already leans on via its
      "Matching Piece" badge and product-tile border). Landed on a low-opacity var(--gold) wash
      instead -- the same accent color already anchoring this card's badge and border, just
      extended across the whole surface -- which reads as a deliberate warm "gold zone" rather
      than an arbitrary new color, and gave the clearest live-screenshot-confirmed separation of
      the three options without looking like an alert/banner state. */
/* Task #221: switched from var(--ivory-2) to var(--ivory) so the outer card fully matches the cart drawer panel background (.cart-drawer .panel), leaving only the inner product tile's gold wash as the visual accent, per user feedback that the outer card still looked visibly tinted. */
.essential-upsell-cross-sell-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-side-cart-top [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-side-cart-bottom [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-default-placement [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-frequently-bought-together-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type],
.essential-upsell-product-addon-block [data-essential-upsell-element="container"][data-essential-upsell-funnel-content-offer-type] {
  background-color: var(--ivory) !important;
}

div[data-essential-upsell-element="variant-select"] {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  align-self: flex-start !important;
  align-items: center !important;
  gap: 4px !important;
  border: 1px solid rgba(120,100,60,.35) !important;
  border-radius: 30px !important;
  padding: 5px 10px !important;
  background: var(--ivory) !important;
  cursor: pointer !important;
  transition: border-color .2s, background-color .2s;
}
div[data-essential-upsell-element="variant-select"]:hover {
  border-color: var(--gold) !important;
  background: #fff !important;
}
div[data-essential-upsell-element="variant-select"] span[data-essential-upsell-element="value"] {
  color: #20201d !important;
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}
div[data-essential-upsell-element="variant-select"] [data-essential-upsell-element="icon"] {
  width: 12px !important;
  height: 12px !important;
}
div[data-essential-upsell-element="variant-select"] [data-essential-upsell-element="icon"] svg path {
  fill: #b99a5b !important;
}
/*END Task #219*/

/* ---- Task #220 (2026-09-30): swap which surface of the Essential Upsell "It's better
   together" cross-sell card carries the gold wash, per live feedback after Task #219 --
   "the color you used for background, I think should be the inner background of the product
   card instead." Task #219 had extended a low-opacity var(--gold)/rgba(185,154,91,.15) wash
   across the OUTER module container (the7 .essential-upsell-* placement-class-scoped
   [data-essential-upsell-element="container"] rule) to separate the module from the cart
   drawer's own var(--ivory) background. That outer-surface tint is removed here (reverted to
   the plain var(--ivory-2) fill Task #218 originally used, restored two rules above in the
   Task #219 block) and the same gold-wash treatment is moved one level in, onto the INNER
   product tile (div[data-essential-upsell-element="product"], originally a flat #f6f2ea fill
   from Task #218, immediately above in the Task #218 block) -- so the accent now lives on the
   actual product tile (image/title/variant/price/"+ Add" area) rather than the card's outer
   frame. Bumped the wash from the outer surface's .15 alpha to .22 on this smaller tile so the
   gold still reads clearly at the reduced surface area without muddying the product photo --
   verified live via screenshot on the draft preview (PSALMS27 Shirt -> remove PSALMS27 Shorts
   to retrigger the cross-sell card) that the product image still reads cleanly against the
   tinted fill and the outer/inner boundary stays legible now that the two surfaces are once
   again two different, deliberate tones instead of both being the same gold. The product
   tile's existing 1px rgba(201,171,115,.4) border and 2px border-radius (Task #218) are left
   untouched -- only the fill color changes here. */
/*END Task #220*/
