/*
 * Stumble Lemonade — shared styles. A 1950s–70s lemonade stand: a warm orange
 * ground, black ink, peach panels, cream only for labels and the drawings.
 * Bottle-cap badges, a striped awning with a scalloped edge, stand price
 * cards. Fonts are self-hosted, see fonts.css. No inline styles anywhere:
 * the CSP is style-src 'self'.
 *
 * Contrast: body text is always --ink (or --ink-2) on orange, peach or cream,
 * or --cream on --ink. Orange is never used for text on an orange ground.
 */
:root{
  --orange:#FF9636;       /* the ground */
  --orange-deep:#C4520A;  /* accents on cream/peach; never text on --orange */
  --peach:#FFC891;        /* panels */
  --peach-2:#FFDDB8;
  --cream:#FFF4E2;        /* labels, drawings */
  --ink:#16110C;
  --ink-2:#3B2715;        /* secondary text: 6:1 on --orange */
  --display:"Bricolage Grotesque", "Arial Black", sans-serif;
  --sans:"DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --r:16px;
  --max:1240px;
  --gutter:clamp(16px, 4vw, 56px);
  --line:3px solid var(--ink);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }
body{
  margin:0; background:var(--orange); color:var(--ink);
  font-family:var(--sans); font-size:17px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3{font-family:var(--display); font-weight:800; line-height:1; letter-spacing:-.02em; margin:0}
h2{font-size:clamp(34px, 5vw, 62px); max-width:15ch}
h3{font-size:clamp(20px, 2vw, 26px); letter-spacing:-.01em}
p{margin:0}
a{color:inherit}
svg{display:block}
.wrap{max-width:var(--max); margin:0 auto; padding-inline:var(--gutter)}
.eyebrow{
  font-family:var(--display); font-weight:800; font-size:14px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink); display:inline-flex; align-items:center; gap:10px; margin-bottom:18px;
}
.eyebrow::before, .eyebrow::after{content:"★"; font-size:12px; letter-spacing:0}
.lede{font-size:clamp(18px, 1.5vw, 20px); color:var(--ink-2); max-width:58ch}
section{padding-block:clamp(64px, 8vw, 110px)}

/* buttons: black stand signs with a hard shadow */
.btn{
  display:inline-flex; align-items:center; gap:10px; padding:15px 24px; border-radius:12px;
  font-family:var(--display); font-weight:800; font-size:16px; letter-spacing:.06em; text-transform:uppercase; text-decoration:none;
  border:var(--line); cursor:pointer; line-height:1; transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
  background:var(--ink); color:var(--cream); box-shadow:4px 4px 0 var(--cream);
}
.btn:hover{transform:translate(-2px,-2px) rotate(-1deg); box-shadow:6px 6px 0 var(--cream)}
.btn:focus-visible{outline:3px solid var(--ink); outline-offset:4px}
.btn.ghost{background:var(--cream); color:var(--ink); box-shadow:4px 4px 0 var(--ink)}
.btn.ghost:hover{box-shadow:6px 6px 0 var(--ink)}
.btn svg{width:18px; height:18px}

/* header */
header{position:sticky; top:0; z-index:20; background:var(--orange); border-bottom:var(--line)}
.nav{display:flex; align-items:center; justify-content:space-between; height:74px; gap:20px}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none}
.brand-mark{width:44px; height:44px; color:var(--ink); flex:none}
.brand-name{font-family:var(--display); font-weight:800; font-size:20px; letter-spacing:.04em; text-transform:uppercase; line-height:.95}
.brand-name span{display:block}
.nav ul{list-style:none; display:flex; gap:28px; margin:0; padding:0; font-family:var(--display); font-weight:700; font-size:15px; letter-spacing:.06em; text-transform:uppercase}
.nav ul a{text-decoration:none; padding:6px 0; border-bottom:3px solid transparent}
.nav ul a:hover, .nav ul a[aria-current]{border-color:var(--ink)}
.nav .btn{padding:12px 18px; font-size:14px; white-space:nowrap; box-shadow:3px 3px 0 var(--cream)}
@media (max-width:860px){ .nav ul{display:none} }
@media (max-width:420px){
  .nav{gap:10px}
  .nav .btn{padding:10px 12px; font-size:12px; letter-spacing:.04em}
  .nav .btn svg{display:none}
  .brand{gap:9px}
  .brand-mark{width:36px; height:36px}
  .brand-name{font-size:16px}
}

/* hero */
.hero{padding-block:clamp(36px, 6vw, 84px) clamp(48px, 6vw, 84px); position:relative; overflow:hidden}
.hero-grid{display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:clamp(28px, 4vw, 64px); align-items:center}
.pill{
  display:inline-block; font-family:var(--display); font-weight:800; font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  background:var(--ink); color:var(--cream); padding:8px 14px; border-radius:999px; margin-bottom:20px; transform:rotate(-2deg);
}
.wordmark{
  font-family:var(--display); font-weight:800; font-size:clamp(50px, 8.4vw, 116px); line-height:.86; letter-spacing:-.01em;
  text-transform:uppercase; margin:0 0 22px -.03em;
}
.wordmark .w1, .wordmark .w2{display:block; white-space:nowrap}
.wordmark .w2{
  color:var(--cream); -webkit-text-stroke:3px var(--ink); paint-order:stroke fill; text-shadow:5px 5px 0 var(--ink);
}
.wordmark .trip-b{
  display:inline-block; transform:rotate(-14deg) translate(-.01em,.04em); transform-origin:40% 90%;
  color:var(--cream); -webkit-text-stroke:3px var(--ink); paint-order:stroke fill; text-shadow:4px 4px 0 var(--ink);
  transition:transform .35s cubic-bezier(.3,1.6,.5,1);
}
.wordmark:hover .trip-b{transform:rotate(-34deg) translate(-.08em,.14em)}
.tag{font-family:var(--display); font-weight:800; font-size:clamp(24px, 2.6vw, 36px); line-height:1.05; letter-spacing:-.015em; margin-bottom:20px; max-width:20ch}
.tag em{font-style:normal; background:var(--ink); color:var(--cream); padding:0 .2em; border-radius:6px; box-decoration-break:clone; -webkit-box-decoration-break:clone}
.hero .lede{margin-bottom:32px; color:var(--ink)}
.cta-row{display:flex; flex-wrap:wrap; gap:14px; align-items:center}
.trust{display:flex; flex-wrap:wrap; gap:10px; margin:30px 0 0; padding:0; list-style:none}
.trust li{
  font-family:var(--display); font-weight:700; font-size:13px; letter-spacing:.1em; text-transform:uppercase;
  border:2px dashed var(--ink); border-radius:8px; padding:7px 11px; background:var(--peach-2)
}

.hero-badge{position:relative; margin:0 auto; width:100%; max-width:540px; cursor:pointer}
.hero-badge svg{width:100%; height:auto; filter:drop-shadow(8px 10px 0 rgba(22,17,12,.9))}
.hero-badge .ring{transform-origin:200px 200px; animation:spin 60s linear infinite}
.hero-badge .ring-txt{font-weight:800; letter-spacing:.06em}
.hero-badge .stumbler{transform-box:fill-box; transform-origin:45% 92%; animation:wobble 3.4s ease-in-out infinite}
.hero-badge .letter-b{transform-box:fill-box; transform-origin:50% 50%; transition:transform .45s cubic-bezier(.3,1.5,.5,1)}
.hero-badge:hover .letter-b, .hero-badge.tripped .letter-b{transform:rotate(-8deg) translate(-4%,0)}
@keyframes wobble{0%,100%{transform:rotate(-2.5deg)} 50%{transform:rotate(3deg) translate(1%,0)}}
.hero-badge:hover .stumbler, .hero-badge.tripped .stumbler{animation:none; transform:rotate(16deg) translate(8%,3%); transition:transform .45s cubic-bezier(.3,1.5,.5,1)}
.stamp{
  position:absolute; right:-2%; bottom:6%; width:clamp(92px, 26%, 140px); aspect-ratio:1; border-radius:50%;
  display:grid; place-content:center; text-align:center; gap:0; transform:rotate(14deg);
  background:var(--peach); border:3px solid var(--ink); outline:2px dashed var(--ink); outline-offset:-10px;
  font-family:var(--display); font-weight:800; text-transform:uppercase; line-height:1; color:var(--ink);
}
.stamp span{display:block; font-size:clamp(11px, 1.3vw, 15px); letter-spacing:.08em}
.stamp span:nth-child(2){font-size:clamp(14px, 1.7vw, 20px); letter-spacing:0}
.hero-badge figcaption{margin-top:20px; text-align:center; font-size:14px; font-weight:500; color:var(--ink-2)}
@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width:860px){
  .hero-grid{grid-template-columns:minmax(0,1fr)}
  .hero-badge{max-width:380px; order:-1}
  .tag{max-width:none}
}

/* ticker: a black band of stand slogans */
.ticker{background:var(--ink); color:var(--cream); overflow:hidden; padding:14px 0; font-family:var(--display); font-weight:800; font-size:17px; letter-spacing:.1em; text-transform:uppercase}
.ticker .track{display:flex; width:max-content; animation:ticker 32s linear infinite}
.ticker span{padding:0 22px; white-space:nowrap}
.ticker span::after{content:"★"; margin-left:44px; color:var(--orange)}
@keyframes ticker{to{transform:translateX(-50%)}}

/* about: the dictionary entry as a recipe card */
.about-grid{display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(32px, 5vw, 80px); align-items:center}
.about-text .lede{margin-top:20px; color:var(--ink)}
.dict{
  background:var(--cream); border-radius:6px; padding:clamp(22px, 3vw, 38px); border:var(--line);
  outline:2px solid var(--ink); outline-offset:-12px; box-shadow:10px 10px 0 var(--ink); transform:rotate(1.5deg);
}
.dict-label{
  display:inline-block; font-family:var(--display); font-weight:800; font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  background:var(--orange); border:2px solid var(--ink); border-radius:999px; padding:5px 10px; margin-bottom:14px
}
.dict .word{font-family:var(--display); font-weight:800; font-size:clamp(28px, 3.2vw, 42px); letter-spacing:-.02em; line-height:1}
.dict .ipa{color:var(--ink-2); font-style:italic; margin:10px 0 16px}
.dict ol{margin:0; padding-left:1.4em; display:grid; gap:12px}
.dict ol li::marker{font-family:var(--display); font-weight:800; color:var(--orange-deep)}
.dict .en{margin-top:18px; padding-top:16px; border-top:2px dashed var(--ink); color:var(--ink-2); font-size:15px}
.dict .en b{color:var(--ink)}
@media (max-width:860px){ .about-grid{grid-template-columns:minmax(0,1fr)} .dict{transform:none; box-shadow:6px 6px 0 var(--ink)} }

/* the striped stand awning with a scalloped edge, atop peach sections */
.awning{
  height:58px; margin-top:calc(-1 * clamp(64px, 8vw, 110px)); margin-bottom:clamp(40px, 5vw, 64px);
  background:repeating-linear-gradient(90deg, var(--ink) 0 40px, var(--cream) 40px 80px);
  -webkit-mask:linear-gradient(#000 0 0) top/100% 38px no-repeat, radial-gradient(circle 20px at 20px 0, #000 97%, transparent 100%) 0 38px/40px 20px repeat-x;
          mask:linear-gradient(#000 0 0) top/100% 38px no-repeat, radial-gradient(circle 20px at 20px 0, #000 97%, transparent 100%) 0 38px/40px 20px repeat-x;
}

/* the menu: product cards as stand price cards */
.menu{background:var(--peach); border-top:var(--line)}
.sec-head{display:flex; justify-content:space-between; align-items:end; gap:24px; flex-wrap:wrap; margin-bottom:clamp(32px, 4vw, 56px)}
.sec-head .lede{max-width:46ch; color:var(--ink)}
.prod-grid{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(16px, 2vw, 26px)}
.card{
  background:var(--cream); border:var(--line); border-radius:var(--r); padding:16px 16px 18px; display:flex; flex-direction:column; gap:12px;
  transition:transform .25s ease, box-shadow .25s ease; position:relative; box-shadow:6px 6px 0 var(--ink);
}
.card:hover{transform:translate(-3px,-5px) rotate(-.8deg); box-shadow:10px 11px 0 var(--ink)}
.card .art{background:var(--peach-2); border:2px solid var(--ink); border-radius:10px; padding:8px}
.card .art svg{width:100%; height:auto; aspect-ratio:1}
.card .name{display:grid; gap:2px}
.card h3{font-size:20px}
.card h3 a{text-decoration:none}
.card h3 a::after{content:""; position:absolute; inset:0; border-radius:var(--r)}
.card p{font-size:14.5px; color:var(--ink-2); flex:1}
.card .btn{padding:12px 18px; font-size:14px; justify-content:center; position:relative; z-index:1; box-shadow:3px 3px 0 var(--orange)}
.card .btn:hover{box-shadow:5px 5px 0 var(--orange)}
.price{font-family:var(--display); font-weight:800; font-size:18px; white-space:nowrap; color:var(--ink)}
/* the round price sticker on a card's corner */
.tag-price, .card .tag-price{
  position:absolute; top:-14px; right:-12px; z-index:2; width:64px; height:64px; border-radius:50%;
  display:grid; place-items:center; background:var(--ink); color:var(--cream); transform:rotate(10deg);
  font-family:var(--display); font-weight:800; font-size:21px; letter-spacing:-.02em;
  box-shadow:0 0 0 3px var(--orange), 0 0 0 5px var(--ink);
}
.prod-note{margin-top:34px; display:flex; gap:14px; align-items:flex-start; max-width:72ch; color:var(--ink); font-size:15px}
.prod-note svg{width:28px; height:28px; flex:none; color:var(--ink)}
@media (max-width:900px){ .prod-grid{grid-template-columns:repeat(2, minmax(0,1fr))} }
@media (max-width:560px){
  .prod-grid{grid-template-columns:minmax(0,1fr); gap:26px}
  .card{padding:14px}
}

/* footer: black, with a wavy top edge */
footer{background:var(--ink); color:var(--cream); padding:64px 0 32px; position:relative}
footer::before{
  content:""; position:absolute; left:0; right:0; top:-17px; height:18px; background:var(--ink);
  -webkit-mask:radial-gradient(circle 13px at 50% 100%, #000 97%, transparent 100%) 0 0/26px 18px repeat-x;
          mask:radial-gradient(circle 13px at 50% 100%, #000 97%, transparent 100%) 0 0/26px 18px repeat-x;
}
.foot-grid{display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr) minmax(0,1.1fr); gap:32px}
footer h4{font-family:var(--display); font-weight:800; font-size:14px; letter-spacing:.14em; text-transform:uppercase; margin:0 0 12px; color:var(--orange)}
footer ul{list-style:none; margin:0; padding:0; display:grid; gap:8px}
footer a{text-decoration:underline; text-decoration-color:var(--orange); text-decoration-thickness:2px; text-underline-offset:3px}
footer a:hover{color:var(--orange)}
footer .brand{text-decoration:none; margin-bottom:16px}
footer .brand-mark{color:var(--orange)}
.foot-text{color:#E9D9C2; max-width:36ch}
.socials-soon{color:#E9D9C2; margin-bottom:12px}
.responsible{margin-top:40px; padding-top:20px; border-top:2px dashed #5A4632; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:14px; color:#E9D9C2}
.responsible b{color:var(--cream)}
@media (max-width:860px){ .foot-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} .foot-grid > :first-child{grid-column:1/-1} }
@media (max-width:480px){ .foot-grid{grid-template-columns:minmax(0,1fr)} }

.svgtxt{font-family:var(--display); font-weight:800; letter-spacing:.02em}
.svgtxt.s{font-weight:800; letter-spacing:.12em}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
.sprite{position:absolute}

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

/* screenshot pass: keep phrases whole, give headings room */
.tag em{white-space:nowrap}
.sec-head h2{max-width:20ch}
.facts h2{max-width:20ch}
@media (max-width:860px){ .stamp{right:3%; bottom:4%} }
@media (max-width:420px){ .wordmark{font-size:56px} .wordmark .w2{-webkit-text-stroke-width:2.5px; text-shadow:4px 4px 0 var(--ink)} }
@media (max-width:560px){ .tag-price, .card .tag-price{right:-6px} }

/* sister sites in the footer */
footer .siblings-h{margin-top:24px}
footer .siblings span{display:block; font-size:13px; color:#E9D9C2}

/* the menu's two shelves: things to wear and use, buttons/pins/stickers */
.shelf + .shelf{margin-top:clamp(48px, 6vw, 80px)}
.shelf-head{display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 20px; padding-bottom:12px; margin-bottom:clamp(22px, 3vw, 34px); border-bottom:var(--line)}
.shelf-head h2, .shelf-head h3{font-size:clamp(24px, 2.8vw, 36px); max-width:none}
.shelf-head h2::before, .shelf-head h3::before{content:"★ "; font-size:.6em; vertical-align:.25em}
.shelf-head p{font-size:15px; color:var(--ink-2); max-width:52ch}

/* die-cut sticker edge (the filter in products/art/_sticker-stumbler) */
.cut-ink{flood-color:var(--ink)}
.cut-cream{flood-color:var(--cream)}
.svgsans{font-family:var(--sans); font-weight:500}
