/* Advent storefront (stores/advent-template, 05-10). Light, warm, one accent per store; motion from CSS only.
   Colours come from config.js (--accent --deep --tint --ground --ink). Display = Fraunces, body = Manrope. */
@font-face{font-family:"Manrope";src:url(/assets/fonts/manrope-var.woff2) format("woff2");font-weight:200 800;font-display:swap}
:root{color-scheme:light only;--logobg:var(--deep);--logoink:#fff;--accent:#8A2846;--deep:#5C1A30;--tint:#F8D7DA;--ground:#FFF8F6;--ink:#1F1A1C;--muted:color-mix(in srgb,var(--ink) 62%,var(--ground));--rule:color-mix(in srgb,var(--ink) 12%,var(--ground));--paper:#fff;--ok:#1F9D55;
  --display:"Fraunces",Georgia,"Times New Roman",serif;--body:"Manrope","Helvetica Neue",Arial,sans-serif;--r:4px;--sh:0 1px 0 rgba(20,20,20,.05),0 14px 34px -22px rgba(20,20,20,.45)}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--ground);color:var(--ink);font:500 16px/1.55 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.lock{overflow:hidden}
img{display:block;max-width:100%}
a{color:var(--accent)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.01em;line-height:1.05;font-variation-settings:"SOFT" 50,"WONK" 0}
h1{font-size:clamp(36px,9.5vw,60px)}
h2{font-size:clamp(28px,7vw,42px);margin-bottom:12px}
.wrap{max-width:1120px;margin:0 auto;padding:0 18px}
.narrow{max-width:680px}
.center{text-align:center}
.muted,.small{color:var(--muted);font-size:14px}
.eyebrow{font:700 12px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border-radius:var(--r);background:var(--accent);color:#fff;font:700 15px/1 var(--body);letter-spacing:.02em;text-decoration:none;position:relative;overflow:hidden;transition:transform .2s,background .2s}
.btn svg{width:18px;height:18px}
.btn:hover{background:var(--deep)}
.btn:active{transform:scale(.98)}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%);animation:shine 4.5s ease-in-out infinite}
.btn.ghost{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}
.btn.ghost::after,.btn.light::after{display:none}
.btn.light{background:#fff;color:var(--deep)}
.btn.wide{width:100%}
@keyframes shine{0%,60%{transform:translateX(-120%)}80%,100%{transform:translateX(120%)}}

/* announcement + header */
.ann{background:var(--deep);color:#fff;border-bottom:1px solid rgba(255,255,255,.12);font:600 12.5px/34px var(--body);letter-spacing:.04em;overflow:hidden;white-space:nowrap}
.ann .run{display:inline-block;animation:tick 38s linear infinite}
.ann span{padding:0 28px}
.ann span::before{content:"✦";margin-right:28px;opacity:.6}
@keyframes tick{to{transform:translateX(-50%)}}
.hdr{position:sticky;top:0;z-index:30;background:var(--logobg);color:var(--logoink);box-shadow:0 8px 22px -18px rgba(0,0,0,.55)}
.hdr .wrap{display:flex;align-items:center;gap:10px;height:66px}
.ib{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r);position:relative}
.logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.logo .badge{width:40px;height:40px;border-radius:var(--r);object-fit:cover}
.logo .nm{font:600 21px/1 var(--display);letter-spacing:-.01em;white-space:nowrap}
.logo .lockup{display:block;height:46px;width:auto;max-width:100%}
.hdr .logo{margin-right:auto;color:var(--logoink)}
.hdr nav{display:none;gap:26px}
.hdr nav a{color:var(--logoink);text-decoration:none;font-weight:600;font-size:15px}
@media (max-width:859px){.hdr .wrap{display:grid;grid-template-columns:46px 1fr 46px;gap:6px}.hdr .logo{margin:0;justify-self:center;min-width:0}}
@media (min-width:860px){.logo .lockup{height:52px}.hdr .wrap{height:76px}}
#buy{scroll-margin-top:90px}
.bubble{position:absolute;top:5px;right:4px;min-width:18px;height:18px;border-radius:9px;background:var(--accent);color:#fff;font:700 11px/18px var(--body);text-align:center;transform:scale(0);transition:transform .25s}
.bubble.on{transform:scale(1)}
@media (min-width:860px){.hdr nav{display:flex;margin-right:12px}.burger{display:none}}

/* snow */
.snow{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.flake{position:absolute;bottom:-12px;border-radius:50%;background:#fff;opacity:0;animation:rise linear infinite;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent)}
.flake.star{border-radius:0;background:color-mix(in srgb,var(--accent) 55%,#fff);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);box-shadow:none}
@keyframes rise{0%{transform:translate(0,0) rotate(0);opacity:0}12%{opacity:.9}85%{opacity:.7}100%{transform:translate(28px,-560px) rotate(200deg);opacity:0}}

/* hero */
.hero{position:relative;overflow:hidden;background:linear-gradient(170deg,var(--tint) 0%,color-mix(in srgb,var(--tint) 45%,var(--ground)) 55%,var(--ground) 100%);padding:34px 0 42px}
.hg{position:relative;display:grid;gap:26px}
.hero h1{margin-bottom:14px}
.lede{font-size:17.5px;color:color-mix(in srgb,var(--ink) 82%,var(--ground));max-width:34em}
.hcta{display:flex;align-items:center;gap:16px;margin:22px 0 16px;flex-wrap:wrap}
.from{font-weight:700;font-variant-numeric:tabular-nums}
.stock{display:inline-flex;align-items:center;gap:9px;font-size:14px;font-weight:600;color:color-mix(in srgb,var(--ink) 80%,var(--ground))}
.pulse{width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(31,157,85,.5);animation:pulse 2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(31,157,85,0)}100%{box-shadow:0 0 0 0 rgba(31,157,85,0)}}
.hi{display:flex;justify-content:center}
.bob{width:min(100%,520px);border-radius:var(--r);overflow:hidden;box-shadow:0 30px 60px -34px rgba(0,0,0,.55);animation:bob 6s ease-in-out infinite;background:var(--paper)}
.bob img,.bob .ph{width:100%;aspect-ratio:1/1;object-fit:cover}
@keyframes bob{50%{transform:translateY(-10px) rotate(-.6deg)}}
@media (min-width:860px){.hero{padding:64px 0 72px}.hg{grid-template-columns:1.05fr 1fr;align-items:center;gap:56px}}

/* placeholder slot = the brand panel */
.ph{display:flex;align-items:center;justify-content:center;background:var(--deep);width:100%;height:100%;aspect-ratio:1/1}
.ph img{width:78%;height:auto;border-radius:var(--r)}
.ph .wm{font:600 clamp(30px,8vw,52px)/1 var(--display);color:#fff;text-align:center;padding:20px}

/* countdown strip */
.cdown{background:var(--deep);color:#fff;text-align:center;padding:15px 0;font-weight:600;font-size:15px}
.cdown .num{font:600 26px/1 var(--display);margin-right:4px;font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--tint) 70%,#fff)}

/* sections */
.sec{padding:56px 0;position:relative}
.two{display:grid;gap:30px;align-items:center}
.txt p{color:color-mix(in srgb,var(--ink) 82%,var(--ground));margin-bottom:20px;font-size:16.5px}
@media (min-width:860px){.sec{padding:84px 0}.two{grid-template-columns:1fr 1fr;gap:64px}.two.flip .pic{order:2}}
.rv{opacity:0;transform:translateY(14px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}

/* the 24 door grid: flips open in a wave when it scrolls in */
.doors{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:12px;background:var(--paper);border-radius:var(--r);box-shadow:var(--sh);perspective:600px}
.door{aspect-ratio:1/1;position:relative}
.door-gift{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--accent)}
.door-gift svg{width:24px;height:24px}
.dflip{position:absolute;inset:0;border:1.5px dashed color-mix(in srgb,var(--accent) 45%,transparent);border-radius:3px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--tint) 55%,#fff);transform-origin:left center}
.dflip b{font:600 clamp(13px,3.6vw,18px)/1 var(--display);color:var(--deep)}
.rv.in .dflip{animation:door-open 38s ease-in-out infinite;animation-delay:calc(var(--i)*1.5s)}
@keyframes door-open{0%,4%,100%{transform:rotateY(0)}1%,3%{transform:rotateY(-105deg)}}

.story .pic{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh)}
.story .pic img,.story .pic .ph{width:100%;aspect-ratio:4/5;object-fit:cover}
.forsec{background:color-mix(in srgb,var(--tint) 40%,var(--ground))}
.for{list-style:none;padding:0;margin:20px 0 28px;counter-reset:f}
.for li{counter-increment:f;display:flex;gap:16px;align-items:baseline;padding:14px 0;border-top:1px solid var(--rule);font-size:17px;font-weight:600}
.for li::before{content:counter(f,decimal-leading-zero);font:600 18px/1 var(--display);color:var(--accent);min-width:28px}
.bpitch{background:var(--deep);color:#fff;overflow:hidden;text-align:center}
.bpitch p{opacity:.85;margin-bottom:24px}
.bpitch .flake{background:rgba(255,255,255,.9)}
.ladder{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:0 0 28px}
.ladder div{background:rgba(255,255,255,.08);border-radius:var(--r);padding:14px 6px;display:flex;flex-direction:column;gap:4px}
.ladder b{font:600 34px/1 var(--display)}
.ladder span{font-size:13px;font-variant-numeric:tabular-nums}
.ladder small{font-size:12px;font-weight:700;color:color-mix(in srgb,var(--tint) 70%,#fff)}

/* accordion */
.acc-list{border-top:1px solid var(--rule)}
.acc{border-bottom:1px solid var(--rule)}
.acc button{width:100%;min-height:56px;display:flex;justify-content:space-between;align-items:center;gap:16px;text-align:left;font-weight:700;font-size:16px;padding:12px 0}
.acc i{width:14px;height:14px;position:relative;flex:none}
.acc i::before,.acc i::after{content:"";position:absolute;left:0;top:6px;width:14px;height:2px;background:currentColor;transition:transform .25s}
.acc i::after{transform:rotate(90deg)}
.acc.on i::after{transform:rotate(0)}
.ab{display:none;padding:0 0 18px;color:color-mix(in srgb,var(--ink) 82%,var(--ground))}
.acc.on .ab{display:block;animation:fadein .3s}
.ab ul{padding-left:18px}
@keyframes fadein{from{opacity:0;transform:translateY(-4px)}}

/* product page */
.pdp{position:relative;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--tint) 55%,var(--ground)),var(--ground) 420px);padding:18px 0 40px}
.pg{position:relative;display:grid;gap:24px}
@media (min-width:860px){.pg{grid-template-columns:1.1fr 1fr;gap:54px;align-items:start;padding-top:24px}.gal{position:sticky;top:84px}}
.gal{min-width:0}
.track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;border-radius:var(--r);box-shadow:var(--sh);background:var(--paper);scrollbar-width:none}
.track::-webkit-scrollbar{display:none}
.slide{flex:0 0 100%;scroll-snap-align:start}
.slide img,.slide .ph{width:100%;aspect-ratio:1/1;object-fit:cover}
.slide img.contain{object-fit:contain;background:var(--paper)}
.dots{display:flex;justify-content:center;gap:4px;margin-top:6px}
.dots button{width:30px;height:30px;display:flex;align-items:center;justify-content:center}
.dots button::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--rule);transition:all .25s}
.dots button.on::before{background:var(--accent);width:22px;border-radius:4px}
.pinfo h1{font-size:clamp(32px,8vw,48px);margin-bottom:10px}
.price{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.price b{font:600 30px/1 var(--display);font-variant-numeric:tabular-nums}
.price span{font-size:14px;font-weight:600;color:var(--ok)}
.desc{margin-bottom:20px;font-size:16.5px;color:color-mix(in srgb,var(--ink) 84%,var(--ground))}
.buy{background:var(--paper);border-radius:var(--r);box-shadow:var(--sh);padding:18px;margin-bottom:22px}
.buy .stock{margin-bottom:14px}
.bh{font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px}
.bundles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.bcard{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:14px 12px 12px;min-height:46px;border-radius:var(--r);box-shadow:inset 0 0 0 1.5px var(--rule);text-align:left;background:var(--paper);transition:box-shadow .2s,background .2s,transform .2s}
.bcard:active{transform:scale(.98)}
.bcard.on{box-shadow:inset 0 0 0 2px var(--accent);background:color-mix(in srgb,var(--tint) 32%,#fff)}
.bq{font-weight:800;font-size:14.5px}
.bp{font:600 22px/1.1 var(--display);font-variant-numeric:tabular-nums}
.be{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.bs{font-size:12px;font-weight:800;color:var(--ok)}
.tag{position:absolute;top:-9px;right:8px;background:var(--accent);color:#fff;font:800 10.5px/1 var(--body);letter-spacing:.06em;text-transform:uppercase;padding:5px 7px;border-radius:3px}
.addon{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:var(--r);background:color-mix(in srgb,var(--tint) 22%,#fff);margin-bottom:14px;cursor:pointer;min-height:46px}
.addon input{position:absolute;opacity:0;pointer-events:none}
.addon .box{flex:none;width:22px;height:22px;border-radius:3px;box-shadow:inset 0 0 0 1.5px var(--muted);display:flex;align-items:center;justify-content:center;background:#fff;margin-top:1px}
.addon .box svg{width:15px;height:15px;stroke:#fff;stroke-width:2.6;opacity:0}
.addon input:checked+.box{background:var(--accent);box-shadow:none}
.addon input:checked+.box svg{opacity:1}
.addon input:focus-visible+.box{outline:3px solid var(--accent);outline-offset:2px}
.at{display:flex;flex-direction:column;gap:2px;font-size:14px}
.at small{color:var(--muted);font-size:12.5px}
.atc{min-height:56px;font-size:16px}
.atc-p{font-variant-numeric:tabular-nums;opacity:.9}
.trust{list-style:none;padding:0;display:grid;gap:10px;margin-top:16px}
.trust li{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600}
.trust svg{color:var(--accent);flex:none}
.trust.mini li{font-size:13.5px}
.det{margin-top:6px}
.sticky{position:fixed;left:0;right:0;bottom:0;z-index:25;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--paper);box-shadow:0 -10px 30px -18px rgba(0,0,0,.4);transform:translateY(110%);transition:transform .35s}
.sticky.on{transform:none}
.sticky div{display:flex;flex-direction:column;min-width:0;font-size:13px}
.sticky b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sticky .btn{min-height:48px;padding:0 20px;flex:none}
@media (min-width:860px){.sticky{display:none}}

/* drawers */
.veil{position:fixed;inset:0;background:rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .3s;z-index:40}
.veil.on{opacity:1;pointer-events:auto}
.drawer,.mnav{position:fixed;top:0;bottom:0;z-index:50;background:var(--ground);transition:transform .35s cubic-bezier(.3,.7,.3,1);display:flex;flex-direction:column}
.drawer{right:0;width:min(420px,92vw);transform:translateX(100%)}
.mnav{left:0;width:min(320px,86vw);transform:translateX(-100%);padding:16px 22px;gap:4px}
.drawer.on,.mnav.on{transform:none}
.mnav a{color:var(--ink);text-decoration:none;font:600 24px/1 var(--display);padding:14px 0;border-bottom:1px solid var(--rule)}
.mnav .x{align-self:flex-end}
.dh{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-bottom:1px solid var(--rule)}
.dh h3{font-size:24px}
.lines{flex:1;overflow:auto;padding:6px 18px}
.df{padding:16px 18px;border-top:1px solid var(--rule)}
.line{display:grid;grid-template-columns:68px 1fr auto;gap:12px;padding:14px 0;border-bottom:1px solid var(--rule)}
.th{width:68px;height:68px;border-radius:var(--r);overflow:hidden;background:var(--paper)}
.th img,.th .ph{width:100%;height:100%;object-fit:cover}
.th.add{display:flex;align-items:center;justify-content:center;color:var(--accent)}
.n{font-weight:700;font-size:14.5px}
.m{font-size:13px;color:var(--muted)}
.lp{font-weight:700;font-variant-numeric:tabular-nums}
.qty{display:inline-flex;align-items:center;margin-top:6px;box-shadow:inset 0 0 0 1px var(--rule);border-radius:var(--r)}
.qty button{width:40px;height:40px;font-size:18px}
.qty span{min-width:22px;text-align:center;font-weight:700}
.rm{font-size:12.5px;color:var(--muted);text-decoration:underline;margin-left:12px;min-height:40px}
.row{display:flex;justify-content:space-between;font-weight:800;font-size:16px;margin-bottom:6px}
.tx{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.empty{text-align:center;padding:40px 0;display:flex;flex-direction:column;gap:18px;align-items:center}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:var(--r);opacity:0;transition:all .3s;z-index:60;font-weight:600;font-size:14px}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* plain pages */
.page{max-width:760px;margin:0 auto;padding:40px 18px 64px}
.page h1{font-size:clamp(32px,8vw,46px);margin-bottom:20px;text-align:center}
.rte h2{font-size:22px;margin:26px 0 8px}
.rte p,.rte li{margin-bottom:10px;color:color-mix(in srgb,var(--ink) 86%,var(--ground))}
.rte ul{padding-left:20px}
.form{display:grid;gap:10px;margin-top:20px}
.form input,.form textarea{width:100%;min-height:50px;padding:12px 14px;border-radius:var(--r);border:1px solid var(--rule);background:var(--paper);font:inherit;color:var(--ink)}
.form textarea{min-height:140px}
.okbox,.notyet{background:var(--paper);border-radius:var(--r);box-shadow:var(--sh);padding:20px;text-align:center}
.notyet b{display:block;margin-bottom:6px}
.co{display:grid;gap:18px;padding:28px 18px 64px}
.co .box{background:var(--paper);border-radius:var(--r);box-shadow:var(--sh);padding:18px}
.co h2{font-size:24px}
@media (min-width:860px){.co{grid-template-columns:1.3fr 1fr;align-items:start}}
.pcard{display:block;max-width:360px;margin:0 auto;text-decoration:none;color:var(--ink)}
.pcard .pic{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);margin-bottom:12px}
.pcard .pic img,.pcard .pic .ph{width:100%;aspect-ratio:1/1;object-fit:cover}
.pcard span{display:block;color:var(--muted)}

/* footer */
.ftr{background:var(--logobg);color:color-mix(in srgb,var(--logoink) 86%,transparent);padding:48px 0 calc(28px + env(safe-area-inset-bottom));font-size:14.5px}
.ftr .cols{display:grid;gap:28px;grid-template-columns:1fr 1fr}
.ftr .fb{grid-column:1/-1}
.ftr .logo{color:var(--logoink);margin-bottom:14px}.ftr .lockup{height:58px}
.ftr p{max-width:30em}
.ftr h4{font:800 12px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px;color:var(--logoink)}
.ftr a{display:block;color:inherit;text-decoration:none;padding:6px 0}
.ftr .copy{margin-top:32px;padding-top:18px;border-top:1px solid color-mix(in srgb,var(--logoink) 18%,transparent);font-size:12.5px;opacity:.75}
@media (min-width:860px){.ftr .cols{grid-template-columns:1.6fr 1fr 1fr 1fr}.ftr .fb{grid-column:auto}}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}

/* Stacked bundle cards, sized for a 390px phone. */
.bundles{grid-template-columns:1fr;gap:10px}
.bcard{display:flex;flex-direction:row;align-items:center;gap:12px;padding:16px 12px;border-radius:10px;min-height:100px;cursor:pointer;box-shadow:none;border:1.5px solid var(--rule);transition:border-color .2s,background .2s}
.bcard.on{box-shadow:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--paper))}
.bcard input{width:20px;height:20px;flex:none;accent-color:var(--accent);margin:0}
.bundle-copy,.bundle-total{display:flex;flex-direction:column;gap:4px;min-width:0}
.bundle-total{margin-left:auto;align-items:flex-end;text-align:right;flex:none}
.bundle-total small{font-size:11px;color:var(--muted)}
.bq{font-size:14px}.bp{font-size:22px}.be,.bs{font-size:11px}
.bs{color:var(--accent)}
.tag{position:static;border-radius:99px;font-size:8px;padding:5px 7px;white-space:nowrap}
.addon{border:1px solid var(--rule);border-radius:10px;background:var(--paper);margin-bottom:10px}
.addon:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--paper))}
.price{flex-wrap:wrap}.pinfo{min-width:0}.dots button{min-height:46px;min-width:46px}
.slide img{object-fit:contain}
