/* ===========================================================================
   The Little Noel - one stylesheet for every page.
   Merged from index-green.html and the shop-pages tnl.css, duplicates removed.

   Palette, fixed: dark fir green #163225 (darkest #0f241a) and snow #f6f4f0 /
   #ffffff for grounds. Burgundy #7a1f2e (hover #932638) is the only accent and
   is used for button fills, badges, prices and highlighted text on white.
   Text on green is cream #fbf3e6 with gold #e9b462 highlights; text on white is
   #1e2a22 with burgundy highlights. No other text colours.

   Two page skins share these tokens:
     body            - snow ground, used by every shop and content page
     body.home       - dark ground, used by the home page only
   Band classes .tsnow / .tgreen / .tburg / .dark re-point the same tokens
   inside a section, exactly as the home template did.
   =========================================================================== */

:root{
  /* brand primitives - the only place a colour is written down */
  --green:#163225;            /* fir band */
  --green-deep:#0f241a;       /* darkest fir: page ground on home, notice bar */
  --green-pine:#16201b;       /* alternate dark band */
  --snowbg:#f6f4f0;           /* page ground on light pages */
  --card:#ffffff;
  --cream:#fbf3e6;
  --cream-soft:rgba(251,243,230,.86);
  --cream-mute:rgba(251,243,230,.64);
  --gold:#e9b462;             /* text accent on green */
  --gold-hi:#f2c57d;
  --burg-hi:#7a1f2e;          /* burgundy accent */
  --burg-hover:#932638;
  --ink:#1e2a22;
  --ink-soft:rgba(30,42,34,.8);
  --ink-mute:rgba(30,42,34,.68);

  /* aliases used by the shop and content skin */
  --deep:var(--green-deep);
  --rose:var(--gold);
  --berry:var(--burg-hi);
  --line:rgba(30,42,34,.14);
  --focus:var(--burg-hi);
  --sk-a:rgba(30,42,34,.06);
  --sk-b:rgba(30,42,34,.12);

  /* aliases used by the home skin, re-pointed on body.home */
  --night:var(--snowbg);
  --pine:var(--snowbg);
  --snow:var(--ink);
  --snow-soft:var(--ink-soft);
  --snow-mute:var(--ink-mute);
  --glass:rgba(30,42,34,.05);
  --ember:var(--burg-hi);
  --ember-hi:var(--burg-hover);
  --ember-ink:var(--cream);

  --display:"Gloock", Georgia, "Times New Roman", serif;
  --body:"Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
  --gut-l:max(16px,env(safe-area-inset-left,0px));
  --gut-r:max(16px,env(safe-area-inset-right,0px));
  color-scheme:light;
}
@media (min-width:768px){
  :root{--gut-l:max(40px,env(safe-area-inset-left,0px));--gut-r:max(40px,env(safe-area-inset-right,0px))}
}
html.home{color-scheme:dark}

/* ---- base ---------------------------------------------------------------- */
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--snowbg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55}
a{color:inherit}
img{max-width:100%;display:block}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,label:focus-within,[tabindex]:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
h1,h2,h3{font-family:var(--display);font-weight:400;letter-spacing:-.01em;margin:0;text-wrap:balance}
h1 em,h2 em{font-style:italic}
em.acc{font-style:italic}
.wrap{width:100%;max-width:1440px;margin:0 auto;padding-left:var(--gut-l);padding-right:var(--gut-r)}
.band{padding-block:clamp(4rem,9vw,7.5rem)}
.band--pine{background:var(--pine)}
.eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.lede{color:var(--snow-soft);max-width:38rem;font-size:1.05rem;margin:1rem 0 0}
.head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap;margin-bottom:2.5rem}
.textlink{font-weight:600;text-decoration:none;border-bottom:1px solid var(--ember);padding-bottom:2px;color:var(--snow)}
.textlink:hover{color:var(--ember)}
.sr{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.skip{position:absolute;left:-9999px;top:0;z-index:60;background:var(--green);color:var(--cream);padding:.7rem 1.1rem;border-radius:0 0 8px 0;text-decoration:none;font-weight:600}
.skip:focus{left:0}

/* home skin: dark ground, cream text, gold highlights */
body.home{
  background:var(--green-deep);color:var(--cream);
  --night:#0f241a;--pine:#16201b;
  --snow:#fbf3e6;--snow-soft:rgba(251,243,230,.84);--snow-mute:rgba(251,243,230,.62);
  --glass:rgba(251,243,230,.10);--line:rgba(251,243,230,.16);
  --ember:#e9b462;--ember-hi:#f2c57d;--ember-ink:#1d130a;
  --focus:#e9b462;
  --sk-a:rgba(251,243,230,.07);--sk-b:rgba(251,243,230,.14);
}
body.home .eyebrow{color:var(--ember)}
body.home h2{font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.05;margin:.6rem 0 0}
body.home h1 em,body.home h2 em{color:var(--ember)}

/* band skins, carried over from the home template */
.tsnow{--night:#f6f4f0;--pine:#f6f4f0;--snow:#1e2a22;--snow-soft:rgba(30,42,34,.8);--snow-mute:rgba(30,42,34,.68);--line:rgba(30,42,34,.14);--glass:rgba(30,42,34,.05);--ember:#7a1f2e;--ember-hi:#932638;--ember-ink:#fff6ee;--focus:#7a1f2e;--sk-a:rgba(30,42,34,.06);--sk-b:rgba(30,42,34,.12);background:#f6f4f0;color:var(--snow)}
.tgreen,.tburg{--night:#163225;--pine:#163225;--snow:#fbf3e6;--snow-soft:rgba(251,243,230,.86);--snow-mute:rgba(251,243,230,.64);--line:rgba(251,243,230,.2);--glass:rgba(251,243,230,.10);--ember:#e9b462;--ember-hi:#f2c57d;--ember-ink:#1d130a;--focus:#e9b462;--sk-a:rgba(251,243,230,.07);--sk-b:rgba(251,243,230,.14);background:#163225;color:var(--snow)}
.dark{--night:#0f241a;--pine:#16201b;--snow:#fbf3e6;--snow-soft:rgba(251,243,230,.86);--snow-mute:rgba(251,243,230,.64);--line:rgba(251,243,230,.2);--glass:rgba(251,243,230,.10);--ember:#e9b462;--ember-hi:#f2c57d;--ember-ink:#1d130a;--focus:#e9b462;--sk-a:rgba(251,243,230,.07);--sk-b:rgba(251,243,230,.14);color:var(--snow)}
.tsnow .prod-img{box-shadow:0 12px 28px -18px rgba(30,42,34,.4)}
.tsnow .join input{background:#fff}
.tsnow .flame{box-shadow:0 0 10px 2px rgba(122,31,46,.4)}
.tburg .chip:hover,.tgreen .chip:hover{background:rgba(251,243,230,.08)}
.tburg .diy-art,.tgreen .diy-art{box-shadow:0 24px 60px -30px rgba(0,0,0,.6)}

/* ---- announcement bar and header ---------------------------------------- */
.notice{background:var(--green-deep);color:var(--cream);text-align:center;font-size:.82rem;font-weight:600;padding-block:.5rem;border-bottom:1px solid rgba(251,243,230,.1)}
.notice a{color:var(--gold)}
.top{background:var(--green);color:var(--cream);position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
body:not(.home)::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--green);z-index:30}
/* On the home page the header floats over the video. .hdr-anchor is a
   zero-height hook directly under the announcement bar, so the header hangs
   from the right place however many lines that bar wraps to. */
body.home .hdr-anchor{position:relative;z-index:5}
body.home .top{position:absolute;left:0;right:0;top:0;background:none}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.9rem}
body.home .top .wrap{padding-block:1.1rem}
.logo{text-decoration:none;display:flex;flex-direction:column;line-height:1;color:var(--cream)}
.logo svg{height:58px;width:auto;display:block}
@media (max-width:760px){.logo svg{height:46px}}
footer .logo svg{height:70px}
.nav{display:flex;gap:1.6rem;font-size:.95rem}
.nav a{text-decoration:none;color:var(--cream-soft)}
.nav a:hover,.nav a[aria-current]{color:var(--gold)}
.bag{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;font-weight:600;font-size:.9rem;padding:.5rem .9rem;border-radius:999px;border:1px solid rgba(251,243,230,.25);background:none;color:inherit;cursor:pointer;font-family:var(--body)}
body.home .bag{padding:.55rem .9rem;background:rgba(12,30,22,.35);border-color:var(--line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.bag b{font-variant-numeric:tabular-nums}
.hdr-right{display:flex;align-items:center;gap:.6rem}

/* mobile menu: both templates hid .nav under 860px with nothing in its place */
.burger{display:none;width:42px;height:42px;place-items:center;border:1px solid rgba(251,243,230,.25);border-radius:999px;background:none;color:inherit;cursor:pointer}
body.home .burger{background:rgba(12,30,22,.35);border-color:var(--line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
@media (max-width:860px){.nav{display:none}.burger{display:grid}}
.mnav{border:0;padding:0;margin:0;max-width:none;max-height:none;width:100%;height:100%;background:var(--green);color:var(--cream)}
.mnav::backdrop{background:rgba(12,30,22,.75)}
.mnav-sheet{min-height:100%;display:flex;flex-direction:column;padding:1rem var(--gut-r) 2rem var(--gut-l)}
.mnav-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-block:.4rem 1.6rem}
.mnav-close{width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(251,243,230,.25);border-radius:999px;background:none;color:inherit;cursor:pointer;font-size:1.3rem;line-height:1}
.mnav-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.mnav-list a{display:block;text-decoration:none;font-family:var(--display);font-size:1.75rem;padding-block:.55rem;border-bottom:1px solid rgba(251,243,230,.12)}
.mnav-list a:hover{color:var(--gold)}
.mnav-foot{margin-top:auto;padding-top:2rem;display:grid;gap:.5rem;font-size:.9rem;color:var(--cream-mute)}
.mnav-foot a{text-decoration:none}

.crumbs{font-size:.85rem;color:var(--ink-mute);padding-block:1.1rem}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--burg-hi)}

/* ---- buttons ------------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;padding:.95rem 1.4rem;border-radius:999px;font:600 1rem/1 var(--body);text-decoration:none;border:0;cursor:pointer;transition:background-color .25s,transform .25s,color .25s,border-color .25s}
body.home .btn{padding:.9rem 1.35rem}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn--burg,.btn--gold{background:var(--burg-hi);color:var(--cream)}
.btn--burg:hover,.btn--gold:hover{background:var(--burg-hover)}
.btn--gold svg{transition:transform .3s}
.btn--gold:hover svg{transform:translateX(3px)}
.btn--line{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn--line:hover{border-color:var(--burg-hi);color:var(--burg-hi)}
.btn--glass{background:var(--glass);color:var(--snow);border:1px solid var(--line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.btn--glass:hover{background:rgba(251,243,230,.2)}
.btns{display:flex;flex-wrap:wrap;gap:.6rem}

/* ---- home hero ----------------------------------------------------------- */
.xh{position:relative;isolation:isolate;overflow:hidden;min-height:min(94vh,900px);display:flex;background:var(--night)}
/* <picture> wraps the art-directed images; it must not become a box of its
   own, or it joins the flex row and squeezes the content beside it. */
.xh picture,.story picture,.door picture{display:contents}
.xh video,.xh .xh-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.xh::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(12,30,22,.55) 0%,rgba(12,30,22,0) 26%),linear-gradient(0deg,rgba(12,30,22,.92) 0%,rgba(12,30,22,.35) 45%,rgba(12,30,22,.1) 100%),radial-gradient(120% 80% at 0% 100%,rgba(12,30,22,.55),transparent 60%)}
.xh-in{display:flex;flex-direction:column;justify-content:flex-end;gap:2.5rem;padding-block:8rem 2rem}
.xh-main{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:2rem;align-items:end}
@media (max-width:900px){.xh-main{grid-template-columns:1fr}}
.xh-tag{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .65rem;border-radius:4px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--snow-soft)}
.xh-tag i,.flame{width:7px;height:7px;border-radius:50%;background:var(--ember);box-shadow:0 0 10px 2px rgba(233,180,98,.7);animation:flicker 3.2s infinite;display:inline-block}
@keyframes flicker{0%,100%{opacity:1}45%{opacity:.7}50%{opacity:.95}70%{opacity:.8}}
.xh h1{font-family:var(--display);font-weight:400;font-size:clamp(2.6rem,6.4vw,5.6rem);line-height:1.02;letter-spacing:-.015em;margin:1.1rem 0 1.4rem;text-wrap:balance;max-width:14ch}
.xh-side{display:flex;flex-direction:column;gap:1.25rem;max-width:30rem}
.xh-side p{margin:0;font-size:1.05rem;color:var(--snow-soft)}
.xh-count{display:flex;align-items:baseline;gap:.7rem;padding-top:1.1rem;border-top:1px solid var(--line)}
.xh-count b{font-family:var(--display);font-weight:400;font-size:3.2rem;line-height:1;color:var(--ember);font-variant-numeric:tabular-nums}
.xh-count span{font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--snow-mute);line-height:1.4}
.xh-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem}
.xh-scroll{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--snow-mute);display:flex;align-items:center;gap:.6rem}
.xh-scroll::before{content:"";width:28px;height:1px;background:var(--snow-mute)}
.xh-pp{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:rgba(12,30,22,.25);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--snow);cursor:pointer}
/* On a phone the headline sits over the brightest part of the still, so the
   wash is deepened to keep cream text well clear of the AA contrast line. */
@media (max-width:760px){
  .xh{min-height:min(88vh,760px)}
  .xh-in{padding-block:6rem 1.5rem}
  .xh::after{background:linear-gradient(180deg,rgba(12,30,22,.7) 0%,rgba(12,30,22,.15) 22%),linear-gradient(0deg,rgba(12,30,22,.96) 0%,rgba(12,30,22,.88) 38%,rgba(12,30,22,.5) 68%,rgba(12,30,22,.2) 100%)}
  .xh h1{margin:.9rem 0 1.1rem}
}
@media (max-width:420px){.bag-word{display:none}}

/* ---- category doors ------------------------------------------------------ */
.doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
@media (max-width:860px){.doors{grid-template-columns:1fr}}
.door{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;min-height:clamp(22rem,42vw,34rem);border-radius:999px 999px 14px 14px;overflow:hidden;text-decoration:none;padding:1.6rem;background:var(--pine)}
@media (max-width:860px){.door{min-height:24rem;border-radius:200px 200px 14px 14px}}
.door img,.door svg.art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.door:hover img,.door:hover svg.art{transform:scale(1.04)}
.door::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(12,30,22,.9),rgba(12,30,22,.2) 55%,rgba(12,30,22,0))}
.door .num{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ember)}
.door h3{font-family:var(--display);font-weight:400;font-size:clamp(1.9rem,3vw,2.5rem);line-height:1.05;margin:.4rem 0 .5rem}
.door p{margin:0 0 1rem;color:var(--snow-soft);max-width:22rem}
.door .go{font-weight:600;display:inline-flex;gap:.4rem;align-items:center}
.door:hover .go{color:var(--ember)}

/* ---- product cards ------------------------------------------------------- */
/* .prod-img / h4 / .add is the home card; .pimg / h3 / .quick is the shop card */
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem 1.25rem}
@media (max-width:1000px){.grid4,.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.prod{display:flex;flex-direction:column;gap:.65rem;min-width:0}
body.home .prod{gap:.75rem;text-decoration:none}
.prod[hidden]{display:none}
.prod-img{position:relative;aspect-ratio:4/5;border-radius:10px;overflow:hidden;background:var(--pine);max-width:100%}
.pimg{position:relative;display:block;aspect-ratio:4/5;border-radius:10px;overflow:hidden;background:var(--green);max-width:100%;box-shadow:0 12px 28px -20px rgba(30,42,34,.5)}
.prod-img img,.prod-img svg,.pimg img,.pimg svg{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}
.prod:hover .prod-img img,.prod:hover .prod-img svg,.prod:hover .pimg img,.prod:hover .pimg svg{transform:scale(1.04)}
.badge{position:absolute;top:.7rem;left:.7rem;background:var(--burg-hi);color:#fff;font-size:.66rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .55rem;border-radius:4px}
body.home .badge{font-size:.68rem;color:var(--cream)}
.badge--green{background:var(--green);color:var(--cream)}
.quick{position:absolute;left:.7rem;right:.7rem;bottom:.7rem;background:rgba(255,255,255,.94);color:var(--ink);border:0;border-radius:999px;padding:.7rem;font:600 .88rem/1 var(--body);cursor:pointer;opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s,background-color .25s}
.prod:hover .quick,.quick:focus-visible{opacity:1;transform:none}
@media (hover:none){.quick{opacity:1;transform:none}}
.quick:hover,.quick.done{background:var(--burg-hi);color:var(--cream)}
.cat{font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--burg-hi)}
.prow,.prod-row{display:flex;justify-content:space-between;gap:.75rem;align-items:baseline}
.prod h3{margin:0;font-family:var(--body);font-weight:500;font-size:1rem;line-height:1.35;letter-spacing:0}
.prod h3 a{text-decoration:none}
.prod h3 a:hover{color:var(--burg-hi)}
.price{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
body.home .prod .price{color:var(--ember)}
.price del{color:var(--ink-mute);font-weight:400;margin-right:.4rem}
.sub{font-size:.85rem;color:var(--ink-mute);margin-top:-.35rem}
body.home .prod .sub{color:var(--snow-mute);margin-top:-.4rem}
.swatches{display:flex;gap:.35rem}
.swatches i{width:12px;height:12px;border-radius:50%;border:1px solid var(--line)}
.add{align-self:flex-start;background:transparent;color:var(--snow);border:1px solid var(--line);border-radius:999px;padding:.55rem 1rem;font:600 .88rem/1 var(--body);cursor:pointer;transition:background-color .3s,color .3s,border-color .3s}
.add:hover,.add.done{background:var(--ember);color:var(--ember-ink);border-color:var(--ember)}
.tsnow .add:hover,.tsnow .add.done{color:#fbf3e6}
.sold{font-size:.85rem;font-weight:600;color:var(--ink-mute)}
body.home .sold{color:var(--snow-mute)}

/* loading skeletons and empty states, shown while Shopify data arrives */
/* --sk-a / --sk-b and --snow-mute follow whichever band the grid sits in, so a
   skeleton and an empty state read correctly on green and on snow alike. */
.sk{border-radius:10px;background:linear-gradient(100deg,var(--sk-a) 30%,var(--sk-b) 50%,var(--sk-a) 70%);background-size:280% 100%;animation:shimmer 1.4s linear infinite}
.sk--img{aspect-ratio:4/5}
.sk--line{height:1rem;margin-top:.2rem}
.sk--line.w60{width:60%}
@keyframes shimmer{to{background-position:-280% 0}}
.state{grid-column:1/-1;padding:3rem 0;text-align:center;color:var(--snow-mute)}
.state p{margin:0 0 1rem;max-width:34rem;margin-inline:auto}

/* ---- DIY band, story, chips, promise strip, sign-up --------------------- */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5rem);align-items:center}
@media (max-width:860px){.split{grid-template-columns:1fr}}
.diy-art{border-radius:14px;overflow:hidden;aspect-ratio:5/4;max-width:100%;background:var(--night)}
.diy-art svg,.diy-art img{width:100%;height:100%;display:block;object-fit:cover}
.kit{list-style:none;padding:0;margin:1.75rem 0 2rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.5rem}
@media (max-width:480px){.kit{grid-template-columns:1fr}}
.kit li{display:flex;gap:.7rem;align-items:flex-start;color:var(--snow-soft);font-size:.98rem}
.kit li::before{content:"";flex:none;width:7px;height:7px;margin-top:.55rem;border-radius:50%;background:var(--ember)}
.story{position:relative;isolation:isolate;overflow:hidden;min-height:34rem;display:flex;align-items:flex-end}
.story img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.story::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(12,30,22,.92) 0%,rgba(12,30,22,.6) 50%,rgba(12,30,22,.15) 100%)}
@media (max-width:760px){.story::after{background:linear-gradient(0deg,rgba(12,30,22,.95) 10%,rgba(12,30,22,.5) 70%,rgba(12,30,22,.25))}}
.story blockquote{margin:0;font-family:var(--display);font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.1;max-width:18ch;text-wrap:balance}
.story p{max-width:32rem;color:var(--snow-soft);margin:1.4rem 0 0}
.story .sig{font-family:var(--display);font-style:italic;color:var(--ember);font-size:1.3rem;margin-top:1rem}
.chips{display:flex;flex-wrap:wrap;gap:.7rem}
.chip{display:inline-flex;align-items:baseline;gap:.6rem;text-decoration:none;padding:1rem 1.4rem;border:1px solid var(--line);border-radius:999px;font-size:1.05rem;transition:border-color .3s,background-color .3s}
.chip small{color:var(--snow-mute);font-size:.8rem}
.chip:hover{border-color:var(--ember);background:var(--glass)}
.promise{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media (max-width:760px){.promise{grid-template-columns:1fr}}
.promise div{padding:1.6rem 1.5rem;display:flex;flex-direction:column;gap:.3rem}
.promise div+div{border-left:1px solid var(--line)}
@media (max-width:760px){.promise div+div{border-left:0;border-top:1px solid var(--line)}}
.promise b{font-family:var(--display);font-weight:400;font-size:1.5rem;color:var(--ember)}
.promise span{color:var(--snow-soft);font-size:.95rem}
.join{text-align:left;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:2rem;align-items:end}
@media (max-width:860px){.join{grid-template-columns:1fr}}
.join form{display:flex;gap:.5rem;flex-wrap:wrap}
.join input[type=email]{flex:1 1 14rem;min-width:0;background:transparent;border:1px solid var(--line);border-radius:999px;padding:.9rem 1.2rem;color:var(--snow);font:1rem var(--body)}
.join input[type=email]::placeholder{color:var(--snow-mute)}
.join .consent{flex-basis:100%;display:flex;gap:.6rem;align-items:flex-start;font-size:.85rem;color:var(--snow-mute);margin-top:.3rem;cursor:pointer}
.join .consent input{margin-top:.2rem;accent-color:var(--ember);width:17px;height:17px;flex:none}
.join .consent a{color:var(--ember)}
.join .msg{flex-basis:100%;font-size:.9rem;color:var(--ember);min-height:1.3em;margin:.2rem 0 0 .4rem}

/* ---- collection page ----------------------------------------------------- */
.hero-c{padding-block:2.5rem 1rem}
.hero-c .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
@media (max-width:860px){.hero-c .wrap{grid-template-columns:1fr}}
.hero-c .eyebrow{color:var(--burg-hi)}
.hero-c h1{font-size:clamp(2.6rem,5.6vw,4.4rem);line-height:1;margin-top:.7rem}
.hero-c h1 em{color:var(--burg-hi)}
.hero-c p{margin:1.1rem 0 1.6rem;color:var(--ink-soft);max-width:30rem;font-size:1.05rem}
.hero-c .jump{display:flex;flex-wrap:wrap;gap:.5rem}
.hero-c .jump a{text-decoration:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:.55rem 1rem;font-size:.92rem;font-weight:500}
.hero-c .jump a:hover,.hero-c .jump a[aria-current=page]{border-color:var(--burg-hi);color:var(--burg-hi)}
.hero-c figure{margin:0;position:relative;border-radius:16px;overflow:hidden;aspect-ratio:16/10;max-width:100%;box-shadow:0 30px 60px -40px rgba(15,36,26,.7)}
.hero-c figure img{width:100%;height:100%;object-fit:cover}
.hero-c figcaption{position:absolute;left:1rem;bottom:1rem;background:rgba(255,255,255,.92);color:var(--ink);border-radius:999px;padding:.45rem .9rem;font-size:.82rem;font-weight:600;display:flex;align-items:center;gap:.5rem}
.hero-c figcaption i{width:8px;height:8px;border-radius:50%;background:var(--burg-hi)}
.bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding-block:1.6rem;border-bottom:1px solid var(--line);margin-bottom:2rem}
.filters{display:flex;gap:.45rem;flex-wrap:wrap}
.f{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:.55rem 1rem;font:500 .92rem/1 var(--body);cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}
.f:hover{border-color:var(--burg-hi)}
.f[aria-pressed=true]{background:var(--burg-hi);border-color:var(--burg-hi);color:var(--cream)}
.f span{opacity:.6;margin-left:.3rem;font-variant-numeric:tabular-nums}
/* On a touch screen the filter pills grow to a comfortable 44px target
   without changing how they look under a mouse. */
@media (pointer:coarse){
  .filters{gap:.6rem}
  .f{min-height:44px;padding-inline:1.15rem}
  .stepper button{width:40px;height:40px}
  .line .rm{padding:.4rem 0}
}
.sort{display:flex;align-items:center;gap:.6rem;font-size:.9rem;color:var(--ink-mute)}
.sort select{font:500 .92rem var(--body);color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem}
.count{font-size:.88rem;color:var(--ink-mute);margin:-1rem 0 1.5rem}
.strip{margin-top:4.5rem;background:var(--green);color:var(--cream);border-radius:14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;align-items:center;padding:2rem clamp(1.25rem,4vw,2.5rem)}
@media (max-width:700px){.strip{grid-template-columns:1fr}}
.strip h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.strip h2 em{color:var(--gold)}
.strip p{margin:.4rem 0 0;color:var(--cream-soft)}
.strip .btn{background:var(--burg-hi);color:var(--cream)}
.strip .btn:hover{background:var(--burg-hover)}

/* ---- product page -------------------------------------------------------- */
.pd{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}
@media (max-width:900px){.pd{grid-template-columns:1fr}}
.gal{display:grid;grid-template-columns:76px minmax(0,1fr);gap:.8rem;position:sticky;top:90px}
@media (max-width:900px){.gal{position:static;grid-template-columns:1fr}}
.thumbs{display:flex;flex-direction:column;gap:.6rem}
@media (max-width:900px){.thumbs{flex-direction:row;order:2;overflow-x:auto}}
.thumbs button{padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;cursor:pointer;background:none;width:76px;height:95px;flex:none}
.thumbs button[aria-current=true]{border-color:var(--burg-hi)}
.thumbs img{width:100%;height:100%;object-fit:cover}
.main-img{position:relative;aspect-ratio:4/5;border-radius:14px;overflow:hidden;background:var(--green);max-width:100%;box-shadow:0 24px 50px -32px rgba(30,42,34,.6)}
.main-img img,.main-img svg{width:100%;height:100%;object-fit:cover}
.main-img .badge{top:1rem;left:1rem}
.info{display:flex;flex-direction:column;gap:1.4rem;padding-top:.4rem}
.info .cat{font-size:.74rem}
.info h1{font-size:clamp(2.2rem,4.4vw,3.4rem);line-height:1.04;margin-top:.4rem}
.priceline{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap}
.big{font-family:var(--display);font-size:2rem;color:var(--burg-hi);font-variant-numeric:tabular-nums}
.priceline small{color:var(--ink-mute);font-size:.88rem}
.priceline del{color:var(--ink-mute);font-size:1.1rem}
.lead{margin:0;color:var(--ink-soft);font-size:1.05rem;max-width:34rem}
fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem;min-width:0}
legend{font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);padding:0;margin-bottom:.6rem}
legend b{color:var(--ink);letter-spacing:0;text-transform:none;font-size:.95rem;margin-left:.35rem}
.opts{display:flex;flex-wrap:wrap;gap:.5rem}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt span{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.05rem;border:1px solid var(--line);border-radius:999px;background:var(--card);cursor:pointer;font-size:.95rem;transition:border-color .2s,background-color .2s,color .2s}
.opt span:hover{border-color:var(--burg-hi)}
.opt input:checked+span{border-color:var(--burg-hi);background:var(--burg-hi);color:var(--cream)}
.opt input:focus-visible+span{outline:2px solid var(--burg-hi);outline-offset:2px}
.opt input:disabled+span{opacity:.4;cursor:not-allowed;text-decoration:line-through}
.opt i{width:10px;height:10px;border-radius:50%}
.buy{display:flex;gap:.6rem;flex-wrap:wrap}
.qty{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--card)}
.qty button{width:44px;height:48px;border:0;background:none;font-size:1.2rem;cursor:pointer;color:var(--ink)}
.qty output{min-width:2ch;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.buy .btn--burg{flex:1 1 14rem}
.wrapopt{display:flex;gap:.7rem;align-items:flex-start;padding:1rem 1.1rem;border:1px dashed rgba(122,31,46,.35);border-radius:10px;background:rgba(122,31,46,.04);cursor:pointer}
.wrapopt input{margin-top:.25rem;accent-color:var(--burg-hi);width:18px;height:18px;flex:none}
.wrapopt b{display:block;font-weight:600}
.wrapopt small{color:var(--ink-mute)}
.notefield{margin:.8rem 0 0}
.notefield textarea{width:100%;font:1rem/1.5 var(--body);color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem;resize:vertical;min-height:4.5rem}
.notefield .hint{display:flex;justify-content:space-between;font-size:.78rem;color:var(--ink-mute);margin-top:.3rem}
.xmas{display:flex;gap:.8rem;align-items:center;background:var(--green);color:var(--cream);border-radius:10px;padding:1rem 1.1rem;font-size:.95rem}
.xmas .dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px 2px rgba(233,180,98,.6)}
.xmas b{color:var(--gold)}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media (max-width:520px){.facts{grid-template-columns:1fr}}
.facts div{padding:1rem .2rem;display:flex;flex-direction:column;gap:.15rem}
.facts div+div{border-left:1px solid var(--line);padding-left:1rem}
@media (max-width:520px){.facts div+div{border-left:0;border-top:1px solid var(--line);padding-left:.2rem}}
.facts b{font-family:var(--display);font-weight:400;font-size:1.35rem;font-variant-numeric:tabular-nums}
.facts span{font-size:.8rem;color:var(--ink-mute)}
details{border-bottom:1px solid var(--line)}
summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.05rem 0;font-weight:600}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-size:1.4rem;font-weight:400;color:var(--burg-hi);transition:transform .25s}
details[open] summary::after{transform:rotate(45deg)}
details p,details ul{margin:0 0 1.1rem;color:var(--ink-soft);font-size:.97rem}
details ul{padding-left:1.1rem}
.rte p:first-child{margin-top:0}
.pair{margin-top:5.5rem}
.pair h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin:.4rem 0 2rem}
.pair .eyebrow{color:var(--burg-hi)}
.reviews{margin-top:4.5rem;border:1px solid var(--line);border-radius:14px;padding:2rem;background:var(--card)}
.reviews-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}
.reviews h2{font-size:1.6rem}
.reviews p{margin:.3rem 0 0;color:var(--ink-mute)}
.mbar{display:none}
@media (max-width:900px){
  .mbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:25;gap:.8rem;align-items:center;justify-content:space-between;background:var(--card);border-top:1px solid var(--line);
    padding:.7rem max(16px,env(safe-area-inset-right,0px)) calc(.7rem + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
  .mbar b{font-family:var(--display);font-size:1.4rem;color:var(--burg-hi);font-weight:400}
  body.product footer{padding-bottom:6rem}
}

/* ---- basket drawer ------------------------------------------------------- */
.drawer{position:fixed;inset:0;z-index:50;visibility:hidden}
.drawer.open{visibility:visible}
.drawer__veil{position:absolute;inset:0;background:rgba(12,30,22,.5);opacity:0;transition:opacity .3s}
.drawer.open .drawer__veil{opacity:1}
.drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--snowbg);color:var(--ink);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .32s cubic-bezier(.2,.7,.2,1);box-shadow:-20px 0 60px -30px rgba(12,30,22,.6)}
.drawer.open .drawer__panel{transform:none}
.drawer__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.15rem 1.25rem;background:var(--green);color:var(--cream)}
.drawer__head h2{font-size:1.4rem}
.drawer__close{width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(251,243,230,.25);border-radius:999px;background:none;color:inherit;cursor:pointer;font-size:1.2rem;line-height:1}
.drawer__body{flex:1;overflow:auto;padding:1.25rem;display:grid;gap:1.1rem;align-content:start}
.drawer__foot{border-top:1px solid var(--line);padding:1.25rem;background:var(--card);display:grid;gap:.85rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom,0px))}
.drawer__row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.drawer__row b{font-family:var(--display);font-size:1.5rem;font-weight:400;color:var(--burg-hi);font-variant-numeric:tabular-nums}
.drawer__note{font-size:.82rem;color:var(--ink-mute);text-align:center;margin:0}
.line{display:grid;grid-template-columns:72px minmax(0,1fr);gap:.9rem}
.line img,.line .ph{width:72px;height:90px;object-fit:cover;border-radius:8px;background:var(--green)}
.line h3{font-family:var(--body);font-weight:500;font-size:.95rem;line-height:1.35}
.line .opt-txt,.line .gift-txt{font-size:.8rem;color:var(--ink-mute);margin:.15rem 0 0}
.line .gift-txt{font-style:italic}
.line__foot{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-top:.5rem}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--card)}
.stepper button{width:32px;height:32px;border:0;background:none;cursor:pointer;color:var(--ink);font-size:1rem;line-height:1}
.stepper span{min-width:2ch;text-align:center;font-weight:600;font-size:.9rem;font-variant-numeric:tabular-nums}
.line .price{font-size:.95rem}
.line .rm{background:none;border:0;padding:0;font:500 .78rem var(--body);color:var(--ink-mute);text-decoration:underline;cursor:pointer}
.line .rm:hover{color:var(--burg-hi)}
.drawer__empty{text-align:center;color:var(--ink-mute);padding:3rem 1rem}
.drawer__empty p{margin:0 0 1.2rem}

/* ---- cookie banner ------------------------------------------------------- */
.cc{position:fixed;left:0;right:0;bottom:0;z-index:55;background:var(--green);color:var(--cream);padding:1.1rem var(--gut-r) calc(1.1rem + env(safe-area-inset-bottom,0px)) var(--gut-l);box-shadow:0 -20px 50px -30px rgba(12,30,22,.8)}
.cc[hidden]{display:none}
.cc__in{max-width:1440px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.2rem;align-items:center}
@media (max-width:860px){.cc__in{grid-template-columns:1fr}}
.cc h2{font-size:1.25rem}
.cc p{margin:.35rem 0 0;color:var(--cream-soft);font-size:.9rem;max-width:52rem}
.cc p a{color:var(--gold)}
.cc__btns{display:flex;gap:.5rem;flex-wrap:wrap}
.cc .btn{padding:.75rem 1.2rem;font-size:.92rem}
.cc .btn--ghost{background:none;border:1px solid rgba(251,243,230,.3);color:var(--cream)}
.cc .btn--ghost:hover{border-color:var(--gold);color:var(--gold)}
.cc__choices{margin:.9rem 0 0;display:grid;gap:.5rem}
.cc__choices label{display:flex;gap:.6rem;align-items:flex-start;font-size:.88rem;color:var(--cream-soft)}
.cc__choices input{margin-top:.25rem;accent-color:var(--gold);width:17px;height:17px;flex:none}
.cc__choices input:disabled{opacity:.6}

/* ---- long-form content pages -------------------------------------------- */
.page-head{padding-block:3rem 1rem}
.page-head .eyebrow{color:var(--burg-hi)}
.page-head h1{font-size:clamp(2.4rem,5vw,3.8rem);line-height:1.02;margin-top:.6rem}
.page-head h1 em{color:var(--burg-hi)}
.page-head p{color:var(--ink-soft);max-width:38rem;font-size:1.05rem;margin:1rem 0 0}
.prose{max-width:46rem;padding-block:1rem 4rem}
.prose h2{font-size:clamp(1.5rem,3vw,2rem);margin:2.6rem 0 .8rem}
.prose h2:first-child{margin-top:1rem}
.prose h3{font-family:var(--body);font-weight:600;font-size:1.05rem;margin:1.8rem 0 .4rem}
.prose p,.prose li{color:var(--ink-soft)}
.prose p{margin:.8rem 0}
.prose ul,.prose ol{margin:.8rem 0;padding-left:1.3rem}
.prose li{margin:.35rem 0}
.prose a{color:var(--burg-hi)}
.prose table{width:100%;border-collapse:collapse;margin:1.2rem 0;font-size:.95rem}
.prose th,.prose td{text-align:left;padding:.7rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
.prose th{font-weight:600;color:var(--ink)}
.prose dt{font-weight:600;margin-top:1.2rem}
.prose dd{margin:.3rem 0 0;color:var(--ink-soft)}
.prose .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.25rem 1.4rem;margin:1.4rem 0}
.todo{background:rgba(122,31,46,.07);border:1px dashed rgba(122,31,46,.4);color:var(--burg-hi);border-radius:4px;padding:.05em .4em;font-weight:600;font-size:.95em}
footer .todo,.tgreen .todo,.tburg .todo,.dark .todo{background:rgba(233,180,98,.14);border-color:rgba(233,180,98,.5);color:var(--gold)}
.draft-flag{display:flex;gap:.8rem;align-items:flex-start;background:rgba(122,31,46,.06);border:1px solid rgba(122,31,46,.25);border-radius:12px;padding:1rem 1.2rem;margin:0 0 2rem;font-size:.9rem;color:var(--ink-soft);max-width:46rem}
.draft-flag b{color:var(--burg-hi)}
.giftgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin-top:2.5rem}
@media (max-width:900px){.giftgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.giftgrid{grid-template-columns:1fr}}
.giftcard{display:flex;flex-direction:column;gap:.5rem;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1.5rem;text-decoration:none;transition:border-color .25s,transform .25s}
.giftcard:hover{border-color:var(--burg-hi);transform:translateY(-2px)}
.giftcard h2{font-size:1.45rem}
.giftcard p{margin:0;color:var(--ink-mute);font-size:.92rem}
.giftcard .go{margin-top:.6rem;font-weight:600;color:var(--burg-hi);font-size:.92rem}
.err{padding-block:6rem 7rem;text-align:center}
.err h1{font-size:clamp(3rem,9vw,6rem);line-height:1}
.err p{color:var(--ink-soft);margin:1.2rem auto 2rem;max-width:34rem}

/* ---- footer -------------------------------------------------------------- */
footer{background:var(--green);color:var(--cream-soft);padding-block:3.5rem 2.5rem;font-size:.92rem;margin-top:5rem}
body.home footer{margin-top:0;border-top:1px solid var(--line)}
.fgrid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:2rem}
@media (max-width:860px){.fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
footer h2.fh{margin:0 0 .9rem;font-family:var(--body);font-size:.72rem;font-weight:600;line-height:1.55;letter-spacing:.14em;text-transform:uppercase;color:var(--cream-mute)}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
footer ul a{text-decoration:none}
footer ul a:hover{color:var(--gold)}
footer .intro{max-width:22rem;margin-top:1.2rem}
footer .legal{margin-top:1.2rem;font-size:.82rem;color:var(--cream-mute)}
.fbase{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:3rem;padding-top:1.5rem;border-top:1px solid rgba(251,243,230,.18);font-size:.82rem;color:var(--cream-mute)}
.fbase a{text-decoration:none}

/* ---- toast and entrance animation --------------------------------------- */
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:var(--ink);color:var(--cream);padding:.85rem 1.2rem;border-radius:10px;font-size:.92rem;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:60;max-width:calc(100% - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.rise{animation:rise .9s cubic-bezier(.2,.7,.2,1) both}
.d2{animation-delay:.15s}
.d3{animation-delay:.3s}
@keyframes rise{from{transform:translateY(18px);opacity:.001}to{transform:none;opacity:1}}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important}
  .rise,.flame,.xh-tag i,.sk{animation:none}
  .door img,.door svg.art,.prod-img img,.pimg img{transition:none}
}


/* ===========================================================================
   Advent calendar (home page only). Markup in src/partials/advent.html,
   behaviour in src/scripts/advent.js. Lifted from the approved template;
   only the additions below it are new.
   =========================================================================== */

/* ---------- advent decoration ---------- */
.adv{position:relative;overflow:hidden}
.adv-snow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.adv .wrap{position:relative;z-index:1}
.adv-board{position:relative;margin-top:3.2rem;padding:1.1rem;border-radius:20px;background:linear-gradient(180deg,#5c1624,#4a111d);
  box-shadow:0 30px 60px -30px rgba(0,0,0,.7),inset 0 0 0 1px rgba(233,180,98,.35),inset 0 0 0 7px #5c1624,inset 0 0 0 8px rgba(233,180,98,.5)}
.adv-garland{position:absolute;left:-2%;right:-2%;top:-46px;height:86px;width:104%;z-index:3;pointer-events:none;overflow:visible}
.adv-garland .bulb{animation:twinkle 2.4s ease-in-out infinite}
.adv-garland .bulb:nth-child(3n){animation-delay:.8s}.adv-garland .bulb:nth-child(3n+1){animation-delay:1.6s}
@keyframes twinkle{0%,100%{opacity:1}50%{opacity:.35}}
.adv-bow{position:absolute;left:50%;top:-30px;transform:translateX(-50%);width:120px;height:74px;z-index:4;pointer-events:none}
.adv-grid{background:repeating-linear-gradient(135deg,rgba(251,243,230,.04) 0 12px,transparent 12px 24px),#0f241a}
.win .flap{background:
  radial-gradient(circle at 20% 15%,rgba(251,243,230,.10) 0 2px,transparent 3px) 0 0/22px 22px,
  linear-gradient(160deg,#1f4231,#163225)}
.win:nth-child(3n) .flap{background:radial-gradient(circle at 50% 50%,rgba(233,180,98,.12) 0 1.5px,transparent 2.5px) 0 0/16px 16px,linear-gradient(160deg,#1c3a2c,#132c20)}
.win:nth-child(4n+1) .flap{background:repeating-linear-gradient(45deg,rgba(251,243,230,.05) 0 6px,transparent 6px 12px),linear-gradient(160deg,#21452f,#163225)}
.win .flap .ico{position:absolute;top:7px;right:7px;width:16px;height:16px;fill:var(--ember);opacity:.85}
.win .flap::after{display:none}
.win.big .flap{background:radial-gradient(circle at 50% 50%,rgba(233,180,98,.14) 0 1.5px,transparent 2.5px) 0 0/18px 18px,linear-gradient(160deg,#8a2434,#5c1624);
  box-shadow:inset 0 0 0 1px rgba(233,180,98,.6),inset 0 0 0 6px rgba(92,22,36,.9),inset 0 0 0 7px rgba(233,180,98,.45)}
.win.big .wreath{position:absolute;width:74%;max-width:150px;aspect-ratio:1;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}
.win.big .num{position:relative;z-index:1}
.adv-title-deco{display:inline-flex;gap:.4rem;align-items:center;color:var(--ember)}
@media (prefers-reduced-motion:reduce){.adv-garland .bulb{animation:none}}
@media (max-width:760px){.adv-bow{width:90px;top:-24px}.adv-garland{top:-38px;height:70px}}

/* The calendar is a long way down a long page. content-visibility lets the
   browser skip its layout and paint until it is scrolled towards, which gave
   the hero image back about a second on a throttled phone. The auto keyword
   means the remembered size is used once it has been rendered, so the
   scrollbar does not jump. */
#advent{content-visibility:auto;contain-intrinsic-size:auto 1200px}

/* ---------- advent calendar ---------- */
.adv .head-row{margin-bottom:1.6rem}
.adv-status{display:inline-flex;align-items:center;gap:.6rem;font-size:.92rem;color:var(--snow-soft);margin-top:1rem}
.adv-status b{color:var(--ember);font-family:var(--display);font-weight:400;font-size:1.3rem}
.adv-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-auto-rows:minmax(84px,1fr);grid-auto-flow:dense;gap:.6rem;padding:.6rem;border-radius:16px;
  background:repeating-linear-gradient(135deg,rgba(251,243,230,.035) 0 14px,transparent 14px 28px),#0f241a;box-shadow:inset 0 0 0 1px rgba(251,243,230,.08)}
@media (max-width:760px){.adv-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(74px,1fr)}}
.win{position:relative;perspective:900px;border:0;padding:0;background:none;cursor:pointer;min-width:0;font:inherit;color:inherit}
.win.w2{grid-column:span 2}.win.big{grid-column:span 2;grid-row:span 2}
.win .inside{position:absolute;inset:0;border-radius:8px;overflow:hidden;background:#fbf3e6;display:flex;align-items:flex-end}
.win .inside img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.win .inside .fb{position:absolute;inset:0;display:grid;place-items:center;padding:.5rem;text-align:center;color:#163225;font-family:var(--display);font-size:.9rem;line-height:1.1;background:radial-gradient(circle at 50% 35%,#fff7ea,#efe2cc)}
.win .flap{position:absolute;inset:0;border-radius:8px;transform-origin:left center;transition:transform .9s cubic-bezier(.3,.7,.2,1);transform-style:preserve-3d;
  background:linear-gradient(160deg,#1d3d2e,#163225);box-shadow:inset 0 0 0 1px rgba(251,243,230,.18),inset 0 0 0 6px rgba(15,36,26,.6),inset 0 0 0 7px rgba(251,243,230,.12);
  display:flex;align-items:center;justify-content:center}
.win .flap::after{content:"";position:absolute;right:10px;top:50%;width:5px;height:5px;border-radius:50%;background:var(--ember);opacity:.8}
.win .num{font-family:var(--display);font-size:clamp(1.4rem,2.6vw,2.2rem);color:var(--snow);line-height:1}
.win.big .num{font-size:clamp(2.6rem,5vw,4.2rem)}
.win.big .flap{background:linear-gradient(160deg,#7a1f2e,#5c1624)}
.win .lock{position:absolute;left:.5rem;bottom:.4rem;font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--snow-mute)}
.win.today .flap{box-shadow:inset 0 0 0 2px var(--ember),0 0 0 3px rgba(233,180,98,.25),0 0 24px rgba(233,180,98,.35)}
.win.today .lock{color:var(--ember)}
.win.open .flap{transform:rotateY(-96deg);box-shadow:none;opacity:0;transition:transform .9s cubic-bezier(.3,.7,.2,1),opacity .35s ease .55s;pointer-events:none}
@media (max-width:760px){.win .inside .fb{font-size:.7rem;padding:.3rem}}
.win.open .flap .num,.win.open .flap .lock{opacity:0}
.win.locked{cursor:not-allowed}
.win.shake{animation:shake .4s}
@keyframes shake{0%,100%{transform:none}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.win:focus-visible{outline:2px solid var(--ember);outline-offset:3px;border-radius:8px}
.adv-foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:1.1rem;font-size:.85rem;color:var(--snow-mute)}
.adv-preview{background:none;border:1px dashed rgba(251,243,230,.3);color:var(--snow-mute);border-radius:999px;padding:.4rem .9rem;font:500 .8rem var(--body);cursor:pointer}
.adv-tip{position:fixed;z-index:60;background:#fbf3e6;color:#163225;font-size:.85rem;font-weight:600;padding:.5rem .8rem;border-radius:8px;pointer-events:none;opacity:0;transition:opacity .2s;box-shadow:0 10px 30px -10px rgba(0,0,0,.5)}
.adv-tip.show{opacity:1}
dialog.adv-dlg{border:0;padding:0;border-radius:16px;max-width:min(760px,calc(100% - 32px));width:100%;background:#f6f4f0;color:#1e2a22}
dialog.adv-dlg::backdrop{background:rgba(12,30,22,.7);backdrop-filter:blur(4px)}
.dlg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}
@media (max-width:640px){.dlg{grid-template-columns:1fr}}
.dlg-img{position:relative;aspect-ratio:1/1;background:radial-gradient(circle at 50% 35%,#fff7ea,#efe2cc);max-width:100%}
.dlg-img img{width:100%;height:100%;object-fit:cover;display:block}
.dlg-img .fb{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-size:5rem;color:#7a1f2e}
.dlg-body{padding:1.8rem 1.8rem 1.6rem;display:flex;flex-direction:column;gap:.8rem}
.dlg-day{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#7a1f2e}
.dlg-body h3{font-family:var(--display);font-weight:400;font-size:1.8rem;line-height:1.08;margin:0;color:#163225}
.dlg-var{font-size:.9rem;color:rgba(30,42,34,.6)}
.dlg-line{margin:0;color:rgba(30,42,34,.8);font-size:1rem}
.dlg-price{font-family:var(--display);font-size:1.6rem;color:#7a1f2e}
.dlg-btns{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:auto}
.dlg-btns a.btn{background:transparent;color:#163225;border:1px solid rgba(30,42,34,.2)}
.dlg-btns a.btn:hover{border-color:#7a1f2e;color:#7a1f2e}
.dlg-close{position:absolute;top:.7rem;right:.7rem;width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.9);color:#163225;font-size:1.2rem;cursor:pointer}
@media (prefers-reduced-motion:reduce){.win .flap{transition:none}.win.shake{animation:none}}

/* ---- additions -------------------------------------------------------- */
/* Feedback line for the basket, because a toast cannot draw above a modal
   dialog and the header counter sits behind the backdrop. */
.dlg-said{margin:0;font-size:.9rem;font-weight:600;color:#7a1f2e}
.dlg-said a{color:inherit}
/* A window photo that fails to load leaves the title showing through from the
   .fb layer underneath, which is what the template already did. */
/* A product that sold out mid-December still opens, it just cannot be added. */
.dlg-sold{font-size:.9rem;color:rgba(30,42,34,.6)}
@media (max-width:640px){
  .dlg-img{aspect-ratio:16/10}
  .dlg-body{padding:1.3rem 1.3rem 1.4rem}
  dialog.adv-dlg{max-height:calc(100dvh - 32px);overflow:auto}
}

/* ===========================================================================
   The three category doors, dressed as Christmas windows. The frame, frost,
   holly and snow are CSS; the fairy lights are drawn by src/scripts/doors.js,
   which measures the card and traces the arch.

   The lights are plotted from the card's own border-radius, so changing the
   rounding below moves the string. Change one, look at the other.
   =========================================================================== */

/* ---------- category doors dressed as Christmas windows ---------- */
.doors .door > span,.doors .door > h3,.doors .door > p{position:relative;z-index:2}
.wdeco{position:absolute;inset:0;pointer-events:none;z-index:1}
.wframe{position:absolute;inset:11px;border:1.5px solid rgba(251,243,230,.38);border-radius:999px 999px 8px 8px;box-shadow:inset 0 0 0 4px rgba(15,36,26,.25)}
@media (max-width:860px){.wframe{border-radius:200px 200px 8px 8px}}
.wfrost{position:absolute;inset:0;border-radius:inherit;background:
  radial-gradient(120% 70% at 50% 60%,transparent 62%,rgba(236,244,248,.10) 78%,rgba(255,255,255,.28) 100%);mix-blend-mode:screen}
.wsill{position:absolute;left:0;right:0;bottom:0;width:100%;height:16px;display:block}
.wholly{position:absolute;left:50%;top:6px;transform:translateX(-50%);width:54px;height:30px}
.wlights{position:absolute;inset:0;overflow:visible}
.wlights .wire{fill:none;stroke:#0f241a;stroke-width:1.4;opacity:.9}
.wlights .b{filter:drop-shadow(0 0 4px rgba(255,211,138,.9));animation:twinkle 2.8s ease-in-out infinite}
.doors .door{border-radius:999px 999px 14px 14px}
@media (prefers-reduced-motion:reduce){.wlights .b{animation:none}}
.doors .door h3{white-space:nowrap;font-size:clamp(1.45rem,2.35vw,2.5rem)}
@media (max-width:860px){.doors .door h3{font-size:clamp(1.6rem,7.4vw,2.4rem)}}
.doors .door p{min-height:3.1em}

/* ===========================================================================
   Music box. On every page, silent until the visitor presses it. The carols
   are synthesised live by src/scripts/musicbox.js, so there is no audio file
   and nothing licensed.
   =========================================================================== */

/* ---------- music box player ---------- */
.mbox{position:fixed;left:max(16px,env(safe-area-inset-left,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:50;display:flex;align-items:center;gap:.6rem;
  padding:.55rem .95rem .55rem .6rem;border-radius:999px;border:1px solid rgba(233,180,98,.45);background:rgba(15,36,26,.88);color:#fbf3e6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  font:600 .85rem/1 var(--body);cursor:pointer;box-shadow:0 12px 30px -12px rgba(0,0,0,.6);transition:background-color .3s,transform .3s}
.mbox:hover{background:rgba(22,50,37,.95);transform:translateY(-1px)}
.mbox:focus-visible{outline:2px solid #e9b462;outline-offset:3px}
.mbox .disc{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#7a1f2e;flex:none}
.mbox .disc svg{width:14px;height:14px;fill:#fbf3e6}
.mbox .eq{display:none;align-items:flex-end;gap:2px;height:14px}
.mbox .eq i{width:3px;background:#e9b462;border-radius:1px;animation:eq 1s ease-in-out infinite}
.mbox .eq i:nth-child(2){animation-delay:.2s}.mbox .eq i:nth-child(3){animation-delay:.45s}.mbox .eq i:nth-child(4){animation-delay:.7s}
@keyframes eq{0%,100%{height:3px}50%{height:14px}}
.mbox.on .eq{display:flex}
.mbox small{display:block;font-weight:500;font-size:.7rem;color:rgba(251,243,230,.6);margin-top:.2rem}
@media (prefers-reduced-motion:reduce){.mbox .eq i{animation:none;height:8px}}

/* The drawer and the cookie banner should cover it, not sit under it. */
.mbox{z-index:45}
/* On a product page the sticky buy bar owns the bottom of a phone screen. */
@media (max-width:900px){body.product .mbox{bottom:calc(84px + env(safe-area-inset-bottom,0px))}}
@media (max-width:420px){.mbox span:nth-child(2){display:none}.mbox{padding:.55rem .6rem}}
