/* ==========================================================================
   Cluless Designs — clulessdesigns.com
   Palette and type taken directly from her logo and existing site:
     pink   #FFB6C1  (site background)      logo pink #F8A0B0
     ivory  #FFFEF0  (logo ground)          logo black #101010
     rose   #B05D6A  (her accent text)
   Supporting brights are sampled from her own product photos.
   ========================================================================== */

:root{
  /* Brand core */
  --pink:#ffb6c1;
  --pink-logo:#f8a0b0;
  --pink-deep:#ee7f95;
  --pink-hot:#e05c7a;
  --pink-soft:#ffd6dd;
  --pink-mist:#fff0f3;

  --rose:#b05d6a;
  --rose-deep:#8a4351;

  --ivory:#fffef0;
  --cream:#fff9e8;
  --ink:#101010;
  --ink-soft:#5c5257;
  --line:#f0dfe3;
  --white:#fff;

  /* Supporting brights — pulled from her own designs */
  --mint:#6fcfc4;
  --butter:#ffd25e;
  --lilac:#c3a0e8;
  --sky:#7fc8f0;
  --tangerine:#ff9b57;

  --shadow-s:0 1px 2px rgba(16,16,16,.05), 0 2px 8px rgba(176,93,106,.07);
  --shadow-m:0 4px 12px rgba(16,16,16,.06), 0 14px 30px rgba(176,93,106,.11);
  --shadow-l:0 10px 26px rgba(16,16,16,.08), 0 30px 64px rgba(176,93,106,.16);
  --pop:6px 6px 0 var(--ink);

  --r-s:12px; --r-m:20px; --r-l:30px; --r-xl:44px;
  --wrap:1200px;
  --font-d:"Baloo 2",system-ui,sans-serif;
  --font-s:"Yellowtail",cursive;
  --font-b:"Nunito",system-ui,-apple-system,"Segoe UI",sans-serif;

  /* the house polka dot */
  --dots:radial-gradient(circle at center,#fff 2.6px,transparent 2.9px);
  --dots-ink:radial-gradient(circle at center,rgba(16,16,16,.09) 2.6px,transparent 2.9px);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--ivory);color:var(--ink);
  font-family:var(--font-b);font-size:17px;line-height:1.68;font-weight:500;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--font-d);font-weight:800;line-height:1.08;letter-spacing:-.01em;margin:0 0 .5em}
h1{font-size:clamp(2.5rem,6.4vw,4.4rem)}
h2{font-size:clamp(2rem,4.4vw,3.1rem)}
h3{font-size:clamp(1.2rem,2.4vw,1.5rem);font-weight:700}
p{margin:0 0 1.1em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.narrow{max-width:760px}
.center{text-align:center}
.mt0{margin-top:0}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  font-family:var(--font-d);font-weight:800;font-size:1.02rem;letter-spacing:.005em;
  padding:14px 30px;border-radius:999px;border:2.5px solid var(--ink);
  text-decoration:none;cursor:pointer;white-space:nowrap;
  transition:transform .16s cubic-bezier(.2,.8,.3,1),box-shadow .16s,background .16s,color .16s;
}
.btn-gold{background:var(--pink-logo);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.btn-gold:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink);background:var(--pink-deep)}
.btn-plum{background:var(--ink);color:var(--pink-soft);box-shadow:3px 3px 0 var(--pink-deep)}
.btn-plum:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--pink-deep)}
.btn-ghost{background:var(--ivory);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.btn-ghost:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink);background:var(--pink-mist)}
.btn-ghost-light{background:var(--ivory);color:var(--ink);border-color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.btn-ghost-light:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink);background:var(--pink-soft)}
.btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}
.btn-sm{padding:10px 22px;font-size:.9rem;border-width:2px}
.btn-lg{padding:17px 38px;font-size:1.12rem}

/* ---------- Announcement bar ---------- */
.announce{
  background:var(--ink);color:var(--pink-soft);
  text-align:center;font-size:.8rem;font-weight:800;font-family:var(--font-b);
  letter-spacing:.1em;text-transform:uppercase;padding:11px 40px;
  position:relative;z-index:60;
}
.announce a{color:var(--pink-logo);text-underline-offset:3px}
@media(max-width:960px){.announce{padding:10px 18px}}

/* ---------- Header ----------
   Big centred brand moment at the top of every page. Because a 150px logo stuck
   to the top would eat the screen on scroll, the bar condenses to a slim
   left/right row once you scroll past it (.hdr.stuck, toggled in site.js).
   ------------------------------------------------------------------------- */
.hdr{
  position:relative;z-index:50;
  background:rgba(255,254,240,.95);backdrop-filter:blur(12px) saturate(1.3);
  border-bottom:3px solid var(--ink);
}
.hdr-in{
  display:flex;flex-direction:column;align-items:center;gap:11px;
  max-width:var(--wrap);margin:0 auto;padding:20px 40px 15px;position:relative;
}
.logo{display:flex;align-items:center;gap:22px;text-decoration:none;line-height:0;flex-shrink:0}
.logo .logo-mark{height:150px;width:150px}
.logo .logo-word{height:108px;width:auto}
.logo b,.logo span{display:none}

.nav{display:flex;align-items:center;gap:2px}
.nav a{
  text-decoration:none;font-family:var(--font-d);font-size:1.06rem;font-weight:700;color:var(--ink);
  padding:9px 16px;border-radius:999px;transition:.16s;
}
.nav a:hover{background:var(--pink-soft)}
.nav a[aria-current]{background:var(--pink);box-shadow:2px 2px 0 var(--ink)}
.nav .btn{margin-left:10px}

/* condensed on scroll */
.hdr.stuck{position:fixed;top:0;left:0;right:0;animation:hdrDrop .2s cubic-bezier(.2,.8,.3,1)}
@keyframes hdrDrop{from{transform:translateY(-100%)}to{transform:none}}
@media(prefers-reduced-motion:reduce){.hdr.stuck{animation:none}}
/* holds the header's place in the flow so nothing shifts when it goes fixed */
.hdr-spacer{height:0}
/* the skip-to-content link jumps to #main; leave room for the slim fixed
   bar so it doesn't land under the header */
#main{scroll-margin-top:96px}
.hdr.stuck .hdr-in{flex-direction:row;max-width:none;padding:0 40px;height:84px;gap:20px}
.hdr.stuck .logo{gap:13px}
.hdr.stuck .logo .logo-mark{height:58px;width:58px}
.hdr.stuck .logo .logo-word{height:42px}
.hdr.stuck .nav{margin-left:auto}

.burger{display:none;position:absolute;right:26px;top:26px;background:none;border:0;padding:10px;cursor:pointer}
.burger span{display:block;width:26px;height:3px;background:var(--ink);border-radius:3px;margin:5px 0;transition:.25s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

/* 7 items + a button needs ~765px and has ~1120px, but leave a little slack */
@media(max-width:1120px){
  .nav a{font-size:1rem;padding:8px 12px}
}
@media(max-width:960px){
  .burger{display:block}
  .hdr-in{padding:16px 20px 14px}
  .logo{gap:14px}
  .logo .logo-mark{height:92px;width:92px}
  .logo .logo-word{height:66px}
  /* .hdr.stuck, its keyframes and .hdr-spacer are declared once at the top and
     need no mobile variant — only the sizes below change down here */
  .hdr.stuck .hdr-in{flex-direction:column;height:auto;padding:10px 20px 9px;max-width:var(--wrap)}
  .hdr.stuck .logo .logo-mark{height:52px;width:52px}
  .hdr.stuck .logo .logo-word{height:37px}
  .hdr.stuck .burger{top:14px}
  .nav{
    position:absolute;inset:100% 0 auto 0;flex-direction:column;align-items:stretch;
    background:var(--ivory);padding:18px 24px 28px;gap:2px;
    border-bottom:3px solid var(--ink);box-shadow:var(--shadow-l);
    transform:translateY(-14px);opacity:0;visibility:hidden;pointer-events:none;
    transition:transform .22s,opacity .22s,visibility 0s .22s;
  }
  .nav.open{transform:none;opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
  .nav a{padding:13px 14px;font-size:1.1rem}
  .nav .btn{margin:12px 0 0}
}
@media(max-width:560px){
  .logo{gap:10px}
  .logo .logo-mark{height:70px;width:70px}
  .logo .logo-word{height:50px}
  .burger{right:14px;top:20px}
}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;color:var(--ink);background:var(--pink);border-bottom:3px solid var(--ink)}
.hero::before{
  content:"";position:absolute;inset:-10px;pointer-events:none;
  background-image:var(--dots);background-size:34px 34px;opacity:.85;
}
.hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(520px 340px at 92% 4%,rgba(255,210,94,.24),transparent 62%),
    radial-gradient(480px 360px at 2% 94%,rgba(111,207,196,.22),transparent 62%),
    radial-gradient(380px 300px at 62% 102%,rgba(195,160,232,.18),transparent 62%);
}
.hero-in{position:relative;z-index:2;max-width:var(--wrap);margin:0 auto;padding:80px 24px 92px;
  display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}
.hero h1{color:var(--ink);margin-bottom:.3em;text-shadow:2px 2px 0 rgba(255,255,255,.5)}
.hero h1 em{
  display:block;font-family:var(--font-s);font-style:normal;font-weight:400;
  color:var(--ink);font-size:1.06em;line-height:1.5;margin-top:.06em;text-shadow:3px 3px 0 var(--pink-soft);
}
.hero-sub{font-size:1.16rem;color:#3d3236;max-width:33em;margin-bottom:2rem;font-weight:600}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:2.2rem}
.eyebrow{
  display:inline-flex;align-items:center;gap:9px;font-family:var(--font-d);
  font-size:.82rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);background:var(--ivory);border:2.5px solid var(--ink);
  padding:7px 18px;border-radius:999px;margin-bottom:1.4rem;box-shadow:3px 3px 0 var(--ink);
}
.eyebrow.dark{color:var(--ink);background:var(--pink-logo)}

.trust{display:flex;flex-wrap:wrap;gap:8px 22px;padding-top:20px;border-top:2.5px dashed rgba(16,16,16,.28)}
.trust div{font-size:.9rem;color:#3d3236;display:flex;align-items:center;gap:8px;font-weight:600}
.trust b{color:var(--ink);font-weight:800}
.stars{color:var(--ink);letter-spacing:.06em}

/* Hero collage */
.hero-art{position:relative;aspect-ratio:1/1;max-width:520px;margin-left:auto;width:100%}
.hero-art figure{
  position:absolute;margin:0;border-radius:var(--r-l);overflow:hidden;
  border:3.5px solid var(--ink);background:var(--ivory);box-shadow:6px 6px 0 rgba(16,16,16,.85);
}
.hero-art img{width:100%;height:100%;object-fit:cover}
.hero-art .a{width:56%;aspect-ratio:4/5;top:0;left:2%;transform:rotate(-5deg);z-index:3}
.hero-art .b{width:48%;aspect-ratio:1/1;top:26%;right:0;transform:rotate(4.5deg);z-index:2}
.hero-art .c{width:44%;aspect-ratio:1/1;bottom:0;left:14%;transform:rotate(2.5deg);z-index:4}
.hero-badge{
  position:absolute;right:-8px;top:-14px;z-index:6;
  background:var(--butter);color:var(--ink);border:3px solid var(--ink);border-radius:999px;
  font-family:var(--font-d);font-weight:800;font-size:.9rem;padding:12px 20px;
  box-shadow:4px 4px 0 var(--ink);transform:rotate(8deg);text-align:center;line-height:1.2;
}

@media(max-width:900px){
  .hero-in{grid-template-columns:1fr;gap:40px;padding:52px 24px 64px}
  .hero-art{max-width:420px;margin:0 auto}
}

/* ---------- Sections ---------- */
.sec{padding:88px 0;position:relative}
.sec-tight{padding:60px 0}
.sec-cream2{background:var(--cream);border-block:3px solid var(--ink)}
.sec-blush{background:var(--pink-mist);border-block:3px solid var(--ink)}
.sec-plum{background:var(--ink);color:var(--ivory);border-block:3px solid var(--ink)}
.sec-plum h2,.sec-plum h3{color:var(--ivory)}
.sec-plum p{color:rgba(255,254,240,.84)}
.sec-plum .eyebrow{background:var(--pink-logo);border-color:var(--pink-soft);box-shadow:3px 3px 0 var(--pink-deep)}
.sec-head{max-width:680px;margin:0 auto 48px;text-align:center}
.sec-head p{color:var(--ink-soft);font-size:1.1rem;margin-bottom:0;font-weight:600}
.sec-plum .sec-head p{color:rgba(255,254,240,.84)}
.sec-blush::before,.sec-cream2::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:var(--dots-ink);background-size:30px 30px;opacity:.5;
}
.sec-blush>*,.sec-cream2>*{position:relative;z-index:1}

/* ---------- Collection cards ---------- */
.coll-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px}
.coll{
  position:relative;display:block;text-decoration:none;border-radius:var(--r-l);
  overflow:hidden;aspect-ratio:3/4;border:3px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);background:var(--pink);
  transition:transform .22s cubic-bezier(.2,.8,.3,1),box-shadow .22s;
}
.coll:hover{transform:translate(-3px,-3px);box-shadow:8px 8px 0 var(--ink)}
.coll img{width:100%;height:100%;object-fit:cover;transition:transform .45s cubic-bezier(.2,.8,.3,1)}
.coll:hover img{transform:scale(1.06)}
.coll figcaption{position:absolute;inset:auto 0 0 0;padding:16px 16px 15px;color:var(--ink);border-top:3px solid var(--ink)}
.coll figcaption b{font-family:var(--font-d);font-size:1.18rem;font-weight:800;display:block;line-height:1.15}
.coll figcaption span{font-size:.74rem;letter-spacing:.11em;text-transform:uppercase;font-weight:800;opacity:.72}
/* every card gets its own colour — that's the "colourful" */
.coll-grid>a:nth-child(9n+1) figcaption{background:var(--pink-logo)}
.coll-grid>a:nth-child(9n+2) figcaption{background:var(--butter)}
.coll-grid>a:nth-child(9n+3) figcaption{background:var(--mint)}
.coll-grid>a:nth-child(9n+4) figcaption{background:var(--lilac)}
.coll-grid>a:nth-child(9n+5) figcaption{background:var(--sky)}
.coll-grid>a:nth-child(9n+6) figcaption{background:var(--tangerine)}
.coll-grid>a:nth-child(9n+7) figcaption{background:var(--pink)}
.coll-grid>a:nth-child(9n+8) figcaption{background:var(--butter)}
.coll-grid>a:nth-child(9n+9) figcaption{background:var(--mint)}

/* ---------- Product grid ---------- */
.prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:24px}
.prod{
  background:var(--ivory);border-radius:var(--r-m);overflow:hidden;
  border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);
  display:flex;flex-direction:column;position:relative;
  transition:transform .2s cubic-bezier(.2,.8,.3,1),box-shadow .2s;
}
.prod:hover{transform:translate(-3px,-3px);box-shadow:7px 7px 0 var(--ink)}
.prod-img{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--pink-mist);display:block;border-bottom:3px solid var(--ink)}
.prod-img img{width:100%;height:100%;object-fit:cover;transition:transform .45s cubic-bezier(.2,.8,.3,1)}
.prod:hover .prod-img img{transform:scale(1.05)}
.tagpill{
  position:absolute;top:12px;left:12px;z-index:2;font-family:var(--font-d);
  font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:5px 12px;border-radius:999px;border:2.5px solid var(--ink);
  background:var(--ivory);color:var(--ink);box-shadow:2px 2px 0 var(--ink);
}
.tagpill.glow{background:var(--butter)}
.tagpill.love{background:var(--pink-logo)}
.tagpill.fresh{background:#6fcfc4}
.prod-body{padding:16px 17px 18px;display:flex;flex-direction:column;flex:1}
.prod-body h3{font-size:1.1rem;margin-bottom:.35em;line-height:1.2}
.prod-body h3 a{text-decoration:none}
.prod-body h3 a:hover{color:var(--pink-hot)}
.prod-blurb{font-size:.9rem;color:var(--ink-soft);line-height:1.55;margin-bottom:1em;flex:1;font-weight:500}
.price{display:flex;align-items:center;gap:9px;margin-bottom:14px;flex-wrap:wrap}
.price b{font-size:1.4rem;font-family:var(--font-d);font-weight:800;color:var(--ink)}
.price s{color:#a4949a;font-size:.92rem}
.price em{
  font-style:normal;font-size:.72rem;font-weight:800;letter-spacing:.05em;color:var(--ink);
  background:var(--butter);border:2px solid var(--ink);padding:2px 8px;border-radius:999px;
}
.prod .btn{width:100%}
.pricenote{text-align:center;font-size:.87rem;color:var(--ink-soft);margin:28px 0 0;font-weight:600}
.pricenote a{color:var(--rose-deep);font-weight:800}

/* ---------- Filters ---------- */
.filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:42px}
.filters button{
  font-family:var(--font-d);font-size:.92rem;font-weight:700;cursor:pointer;
  padding:9px 20px;border-radius:999px;border:2.5px solid var(--ink);
  background:var(--ivory);color:var(--ink);transition:.15s;box-shadow:2px 2px 0 var(--ink);
}
.filters button:hover{background:var(--pink-soft);transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.filters button[aria-pressed="true"]{background:var(--pink);box-shadow:inset 2px 2px 0 rgba(16,16,16,.14)}

/* ---------- Steps ---------- */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:22px;counter-reset:s}
.step{
  background:var(--ivory);border:3px solid var(--ink);border-radius:var(--r-m);
  padding:28px 24px;position:relative;counter-increment:s;box-shadow:5px 5px 0 var(--ink);color:var(--ink);
}
.step::before{
  content:counter(s);display:flex;align-items:center;justify-content:center;
  width:50px;height:50px;border-radius:50%;background:var(--pink);border:3px solid var(--ink);
  color:var(--ink);font-family:var(--font-d);font-weight:800;font-size:1.4rem;margin-bottom:16px;
}
.steps>.step:nth-child(2)::before{background:var(--butter)}
.steps>.step:nth-child(3)::before{background:var(--mint)}
.steps>.step:nth-child(4)::before{background:var(--lilac)}
.step h3{font-size:1.16rem;margin-bottom:.35em;color:var(--ink)}
.step p{font-size:.94rem;margin-bottom:0;color:var(--ink-soft)}
.sec-plum .step p{color:var(--ink-soft)}

/* ---------- Reviews ---------- */
.reviews{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}
.review{
  background:var(--ivory);border:3px solid var(--ink);border-radius:var(--r-m);
  padding:26px 24px;box-shadow:5px 5px 0 var(--ink);display:flex;flex-direction:column;
}
.reviews>.review:nth-child(3n+2){background:var(--pink-mist)}
.reviews>.review:nth-child(3n+3){background:var(--cream)}
.review .stars{font-size:1.05rem;margin-bottom:10px;color:var(--pink-hot)}
.review blockquote{margin:0 0 16px;font-size:1.06rem;line-height:1.55;flex:1;font-family:var(--font-d);font-weight:600}
.review cite{font-style:normal;font-size:.85rem;color:var(--ink-soft);font-weight:800}
.review cite span{font-weight:500;opacity:.75}

/* ---------- Forms ---------- */
.formcard{background:var(--ivory);border:3px solid var(--ink);border-radius:var(--r-l);padding:38px;box-shadow:7px 7px 0 var(--ink)}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{margin-bottom:18px;display:flex;flex-direction:column}
.field label{font-family:var(--font-d);font-size:.92rem;font-weight:700;color:var(--ink);margin-bottom:6px}
.field label i{font-style:normal;color:var(--pink-hot)}
.field small{font-size:.8rem;color:var(--ink-soft);margin-top:6px}
.field input,.field select,.field textarea{
  font-family:var(--font-b);font-size:1rem;color:var(--ink);font-weight:600;
  padding:12px 15px;border:2.5px solid var(--ink);border-radius:var(--r-s);
  background:var(--white);transition:.15s;width:100%;
}
.field textarea{min-height:120px;resize:vertical;line-height:1.55}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;background:var(--pink-mist);box-shadow:3px 3px 0 var(--pink-deep);
}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;margin:0}

/* Inline email capture */
.emailform{display:flex;gap:12px;max-width:540px;margin:0 auto;flex-wrap:wrap}
.emailform input{
  flex:1 1 240px;font-family:var(--font-b);font-size:1rem;font-weight:600;padding:14px 20px;
  border-radius:999px;border:2.5px solid var(--pink-soft);background:var(--ivory);color:var(--ink);
}
.emailform input::placeholder{color:#8d8085}
.emailform input:focus{outline:none;border-color:var(--pink-logo);box-shadow:3px 3px 0 var(--pink-deep)}

/* ---------- Instagram ---------- */
.ig-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.ig-grid a{display:block;aspect-ratio:1/1;border-radius:var(--r-m);overflow:hidden;border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);transition:.2s}
.ig-grid a:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}
.ig-grid img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.ig-grid a:hover img{transform:scale(1.07)}

/* ---------- Split feature ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split-img{border-radius:var(--r-xl);overflow:hidden;border:3.5px solid var(--ink);box-shadow:8px 8px 0 var(--ink);aspect-ratio:4/5}
.split-img img{width:100%;height:100%;object-fit:cover}
/* The 'Just landed' feature shows one photo big. Cheryl's product shots are every
   shape from 3:4 portrait to 3:2 wide — none are square — so a fixed box with
   object-fit:cover cut the sides off the ears. This variant takes its height from
   the photo instead, so the whole pair is always visible. */
   Deliberately NOT height:auto — the box keeps a real aspect-ratio and the image
   fills it with object-fit:contain. height:auto let the box collapse to nothing on
   iOS Safari when the photo was slow or failed, which is how a launch shipped with
   an invisible photo on a phone. The 4/3 here is only a fallback: products.py
   normally supplies the photo's true ratio inline. */
.split-img.natural{aspect-ratio:4/3}
.split-img.natural img{object-fit:contain}
@media(max-width:860px){.split{grid-template-columns:1fr;gap:34px}.split-img{aspect-ratio:4/3;max-width:520px;margin:0 auto}.split-img.natural{max-width:520px;margin:0 auto}}

/* ---------- FAQ ---------- */
.faq{max-width:820px;margin:0 auto}
.faq details{background:var(--ivory);border:3px solid var(--ink);border-radius:var(--r-m);margin-bottom:14px;overflow:hidden;box-shadow:4px 4px 0 var(--ink)}
.faq details[open]{background:var(--pink-mist)}
.faq summary{cursor:pointer;padding:20px 58px 20px 24px;font-family:var(--font-d);font-weight:700;font-size:1.08rem;color:var(--ink);position:relative;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);
  width:30px;height:30px;display:flex;align-items:center;justify-content:center;
  background:var(--pink);border:2.5px solid var(--ink);border-radius:50%;
  font-size:1.3rem;font-weight:700;line-height:1;transition:.2s;
}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg);background:var(--butter)}
.faq .faq-a{padding:0 24px 22px;color:var(--ink-soft);font-weight:500}
.faq .faq-a p:last-child{margin-bottom:0}

/* ---------- Marquee band ---------- */
.band{
  background:var(--pink);color:var(--ink);padding:14px 0;overflow:hidden;
  font-family:var(--font-d);font-size:1.1rem;font-weight:800;
  border-block:3px solid var(--ink);
}
.band-in{display:flex;gap:44px;white-space:nowrap;animation:slide 34s linear infinite;width:max-content}
.band span{display:inline-flex;align-items:center;gap:44px}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.band:hover .band-in,.band:focus-within .band-in{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.band-in{animation:none}}

/* ---------- Footer ---------- */
.ftr{background:var(--ink);color:rgba(255,254,240,.76);padding:64px 0 28px;font-size:.94rem;font-weight:500}
.ftr-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:38px;margin-bottom:44px}
.ftr h3.ftr-h,.ftr h4{color:var(--pink-logo);font-family:var(--font-d);font-size:1.05rem;letter-spacing:.02em;margin-bottom:14px;font-weight:800}
.ftr ul{list-style:none;padding:0;margin:0}
.ftr li{margin-bottom:9px}
.ftr a{color:rgba(255,254,240,.76);text-decoration:none;transition:.15s}
.ftr a:hover{color:var(--pink-logo)}
.ftr .logo{display:block}
.ftr .logo img{height:auto;width:190px;margin-bottom:14px}
.ftr-note{border-top:2px dashed rgba(255,254,240,.22);padding-top:24px;font-size:.8rem;line-height:1.7;color:rgba(255,254,240,.52)}
.ftr-note p{margin-bottom:.9em}
.ftr-bottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:.82rem;color:rgba(255,254,240,.55)}
@media(max-width:860px){.ftr-grid{grid-template-columns:1fr 1fr;gap:30px}}
@media(max-width:520px){.ftr-grid{grid-template-columns:1fr}}

/* ---------- Page header ---------- */
.phead{background:var(--pink);color:var(--ink);padding:56px 0 60px;text-align:center;position:relative;overflow:hidden;border-bottom:3px solid var(--ink)}
.phead::before{content:"";position:absolute;inset:-10px;pointer-events:none;background-image:var(--dots);background-size:34px 34px;opacity:.8}
.phead>*{position:relative;z-index:2}
.phead h1{color:var(--ink);margin-bottom:.25em;text-shadow:2px 2px 0 rgba(255,255,255,.5)}
.phead p{color:#3d3236;max-width:620px;margin:0 auto;font-size:1.1rem;font-weight:600}
.phead p a{color:var(--rose-deep);font-weight:800}
.crumbs{font-size:.86rem;color:#4b4045;margin-bottom:16px;font-weight:700}
.crumbs a{color:var(--rose-deep);text-decoration:none}
.crumbs a:hover{text-decoration:underline}

/* ---------- Prose ---------- */
.prose{max-width:740px;margin:0 auto}
.prose h2{margin-top:1.7em}
.prose h2:first-child{margin-top:0}
.prose h3{margin-top:1.5em}
.prose a{color:var(--rose-deep);font-weight:700}
.prose ul{padding-left:1.2em;margin-bottom:1.2em}
.prose li{margin-bottom:.5em}
.prose blockquote{
  margin:1.7em 0;padding:22px 26px;border:3px solid var(--ink);
  background:var(--pink-soft);border-radius:var(--r-m);box-shadow:5px 5px 0 var(--ink);
  font-family:var(--font-d);font-size:1.12rem;font-weight:600;
}
.prose blockquote p:last-child{margin-bottom:0}

/* ---------- Misc ---------- */
.callout{background:var(--mint);border:3px solid var(--ink);border-radius:var(--r-m);padding:22px 26px;margin:30px 0;box-shadow:5px 5px 0 var(--ink);font-weight:600}
.callout p:last-child{margin-bottom:0}
.callout a{color:var(--rose-deep);font-weight:800}
.skip{position:absolute;left:-9999px;background:var(--ink);color:var(--ivory);padding:12px 20px;z-index:200;border-radius:0 0 var(--r-s) 0}
.skip:focus{left:0;top:0}
.hidden{display:none !important}
.formmsg{
  padding:15px 20px;border-radius:var(--r-s);margin-bottom:20px;font-weight:800;font-size:.95rem;
  background:var(--mint);border:2.5px solid var(--ink);color:var(--ink);box-shadow:3px 3px 0 var(--ink);
}
.formmsg.err{background:var(--butter)}
/* a failed image still has to occupy its box, or the layout collapses around
   the gap and the page looks broken rather than merely missing a photo */
img.img-fallback{background:linear-gradient(150deg,var(--pink-soft),var(--pink-deep));object-fit:cover;width:100%;height:100%;min-height:120px}

/* ---------- Mobile ---------- */
@media(max-width:640px){
  body{font-size:16px}
  .coll-grid{grid-template-columns:1fr 1fr;gap:14px}
  .coll{aspect-ratio:4/5;border-width:2.5px;box-shadow:4px 4px 0 var(--ink)}
  .coll figcaption{padding:11px 12px}
  .coll figcaption b{font-size:1rem}
  .coll figcaption span{font-size:.64rem}
  .prods{grid-template-columns:1fr 1fr;gap:14px}
  .prod{border-width:2.5px;box-shadow:3px 3px 0 var(--ink)}
  .prod-body{padding:13px 12px 15px}
  .prod-body h3{font-size:.98rem}
  .prod-blurb{display:none}
  .price b{font-size:1.16rem}
  .price em{display:none}
  .sec{padding:56px 0}
  .hero-cta .btn{flex:1 1 100%}
  .ig-grid{grid-template-columns:1fr 1fr 1fr;gap:9px}
  .filters{gap:8px;margin-bottom:28px}
  .filters button{padding:7px 15px;font-size:.84rem}
  .formcard{padding:24px 18px}
  .frow{grid-template-columns:1fr;gap:0}
}
@media(max-width:400px){
  .prods{grid-template-columns:1fr}
  .prod-blurb{display:block}
}

/* ---------- Very narrow phones (≤400px) ---------- */
@media(max-width:420px){
  .btn{white-space:normal;text-align:center}
  .btn-lg{padding:15px 22px;font-size:1rem}
  .hero-badge{right:2px;top:-6px;font-size:.8rem;padding:9px 15px}
  .sec-head{margin-bottom:34px}
}

/* ---------- Guide pages ---------- */
.prose .tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.4em 0 1.8em;
  border:2.5px solid var(--ink);border-radius:var(--r-m);box-shadow:4px 4px 0 var(--ink)}
.prose .pricetable{width:100%;border-collapse:collapse;margin:0;font-size:.96rem;min-width:420px}
.prose .pricetable th,.prose .pricetable td{text-align:left;padding:11px 14px;border-bottom:2px solid var(--line)}
.prose .pricetable th{font-family:var(--font-d);font-weight:800;background:var(--pink-mist);border-bottom:2.5px solid var(--ink)}
.prose .pricetable td:last-child,.prose .pricetable th:last-child{text-align:right;white-space:nowrap;font-weight:700}
.prose .pricetable tr:last-child td{border-bottom:0}
@media(max-width:560px){
  .prose .pricetable{font-size:.88rem;min-width:360px}
  .prose .pricetable th,.prose .pricetable td{padding:9px 11px}
}
.prose .callout{background:var(--butter)}
.prose ol{padding-left:1.3em;margin-bottom:1.2em}
.prose ol li{margin-bottom:.45em}

.guidecards{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
a.guidecard{
  display:block;text-decoration:none;background:var(--ivory);
  border:3px solid var(--ink);border-radius:var(--r-m);padding:22px 22px 20px;
  box-shadow:4px 4px 0 var(--ink);transition:transform .2s cubic-bezier(.2,.8,.3,1),box-shadow .2s;
  aspect-ratio:auto;
}
a.guidecard:hover{transform:translate(-3px,-3px);box-shadow:7px 7px 0 var(--ink);background:var(--pink-mist)}
a.guidecard b{font-family:var(--font-d);font-weight:800;font-size:1.15rem;display:block;margin-bottom:.3em;line-height:1.2}
a.guidecard span{font-size:.9rem;color:var(--ink-soft);font-weight:500;line-height:1.5}
@media(max-width:640px){.guidecards{grid-template-columns:1fr}}
.prose .guidelinks{margin-top:1.8em;padding:18px 22px;background:var(--pink-mist);
  border:2.5px dashed var(--pink-deep);border-radius:var(--r-m);font-size:.95rem}
