/*
 * Stumble Juice — shared styles for the landing page, the shop placeholder
 * and the product pages. Black ground, safety-orange ink, the warning sign
 * and hazard tape as the visual language. Fonts are self-hosted, see
 * fonts.css. No inline styles anywhere: the CSP is style-src 'self'.
 *
 * Contrast (WCAG): orange #FF6A13 on #111 is 6.6:1, black on orange the
 * same; long text is off-white (#F2EEE6, 16:1) or muted (#B9B3A8, 9:1).
 */
:root{
  --black:#111111;
  --black-2:#1A1A1A;
  --black-3:#262626;
  --line:#3A3A3A;
  --orange:#FF6A13;
  --orange-hi:#FF8A45;
  --bone:#F2EEE6;
  --muted:#B9B3A8;
  --hazard:repeating-linear-gradient(-45deg, var(--orange) 0 14px, var(--black) 14px 28px);
  --display:"Bricolage Grotesque", "Arial Black", sans-serif;
  --sans:"DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --r:6px;
  --max:1240px;
  --gutter:clamp(16px, 4vw, 56px);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; background:var(--black)}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }
body{
  margin:0; background:var(--black); color:var(--bone);
  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:.95; letter-spacing:-.015em; margin:0; text-transform:uppercase}
h2{font-size:clamp(34px, 5vw, 64px); max-width:15ch}
h3{font-size:clamp(20px, 2vw, 24px)}
p{margin:0}
a{color:inherit}
svg{display:block}
img{display:block; max-width:100%; height:auto}
.wrap{max-width:var(--max); margin:0 auto; padding-inline:var(--gutter)}
.eyebrow{
  font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--orange); display:inline-flex; align-items:center; gap:10px; margin-bottom:18px;
}
.eyebrow::before{content:""; width:28px; height:10px; background:var(--hazard)}
/* a stencil-ish warning label: CAUTION: STUMBLE ZONE */
.label{
  display:inline-flex; align-items:center; gap:10px; padding:8px 14px 8px 10px; border:2px solid var(--orange);
  font-family:var(--display); font-weight:800; font-size:14px; letter-spacing:.18em; text-transform:uppercase; color:var(--orange);
  margin-bottom:22px;
}
.label svg{width:22px; height:20px; color:var(--orange)}
.lede{font-size:clamp(18px, 1.5vw, 20px); color:var(--muted); max-width:58ch}
section{padding-block:clamp(64px, 8vw, 110px)}
.hazard-bar{height:10px; background:var(--hazard)}

/* buttons: square-cornered, like a sign */
.btn{
  display:inline-flex; align-items:center; gap:10px; padding:16px 24px; border-radius:var(--r);
  font-family:var(--display); font-weight:800; font-size:16px; letter-spacing:.08em; text-transform:uppercase; text-decoration:none;
  border:2px solid var(--orange); cursor:pointer; line-height:1; transition:transform .18s ease, background .18s ease, color .18s ease;
  background:var(--orange); color:var(--black);
}
.btn:hover{background:var(--orange-hi); border-color:var(--orange-hi); transform:translateY(-2px) rotate(-1deg)}
.btn:focus-visible{outline:3px solid var(--bone); outline-offset:3px}
.btn.ghost{background:transparent; color:var(--bone); border-color:var(--bone)}
.btn.ghost:hover{color:var(--black); background:var(--bone)}
.btn svg{width:18px; height:18px}

/* the tripping b, everywhere the name is written */
.trip-b{
  display:inline-block; transform:rotate(-14deg) translate(-.01em,.05em); transform-origin:40% 90%;
  color:var(--orange); transition:transform .35s cubic-bezier(.3,1.6,.5,1);
}

/* header */
header{position:sticky; top:0; z-index:20; background:color-mix(in srgb, var(--black) 92%, transparent); backdrop-filter:blur(10px); border-bottom:1px solid var(--black-3)}
header .hazard-bar{height:6px}
.nav{display:flex; align-items:center; justify-content:space-between; height:70px; gap:20px}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; font-family:var(--display); font-weight:800; font-size:21px; letter-spacing:.02em; text-transform:uppercase; white-space:nowrap}
.brand svg{width:42px; height:42px; color:var(--orange); flex:none}
.nav ul{list-style:none; display:flex; gap:28px; margin:0; padding:0; font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.12em; text-transform:uppercase}
.nav ul a{text-decoration:none; padding:8px 0; border-bottom:3px solid transparent}
.nav ul a:hover, .nav ul a[aria-current]{border-color:var(--orange)}
.nav .btn{padding:12px 16px; font-size:14px; white-space:nowrap}
@media (max-width:860px){ .nav ul{display:none} }
@media (max-width:440px){ .nav .btn{padding:10px 12px; font-size:12px; letter-spacing:.05em} .nav .btn svg{display:none} .brand{font-size:17px; gap:8px} .brand svg{width:32px; height:29px} }

/* hero */
.hero{padding-block:clamp(40px, 6vw, 90px) clamp(48px, 6vw, 80px); position:relative; overflow:hidden}
.hero-grid{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:clamp(32px, 5vw, 72px); align-items:center}
.wordmark{
  font-family:var(--display); font-weight:800; font-size:clamp(64px, 10vw, 148px); line-height:.86; letter-spacing:-.03em;
  margin:0 0 22px -.04em;
}
.wordmark .w1, .wordmark .w2{display:block; white-space:nowrap}
.wordmark .w1{color:var(--bone)}
.wordmark .w2{color:var(--orange)}
.wordmark:hover .trip-b, .brand:hover .trip-b{transform:rotate(-38deg) translate(-.1em,.16em)}
.tag{font-family:var(--display); font-weight:800; font-size:clamp(26px, 2.8vw, 38px); line-height:1.05; text-transform:uppercase; margin-bottom:22px}
.tag em{font-style:normal; color:var(--orange)}
.hero .lede{margin-bottom:34px}
.cta-row{display:flex; flex-wrap:wrap; gap:12px; align-items:center}
.trust{display:flex; flex-wrap:wrap; gap:8px 22px; margin-top:34px; font-size:13px; color:var(--muted); font-family:var(--display); font-weight:700; letter-spacing:.12em; text-transform:uppercase}
.trust span{display:inline-flex; align-items:center; gap:8px}
.trust span::before{content:""; width:0; height:0; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:10px solid var(--orange)}

.hero-fig{position:relative; margin:0; max-width:560px; width:100%; margin-inline:auto; cursor:pointer}
.sign{border:6px solid var(--orange); border-radius:14px; background:var(--black-2); overflow:hidden; transform:rotate(2deg); position:relative; z-index:1}
.sign-top, .sign-bottom{font-family:var(--display); font-weight:800; text-transform:uppercase; text-align:center; letter-spacing:.18em}
.sign-top{background:var(--orange); color:var(--black); font-size:clamp(28px, 3.6vw, 46px); padding:10px 0 12px; display:flex; justify-content:center; align-items:center; gap:14px}
.sign-top svg{width:1.1em; height:1em; color:var(--black)}
.sign-bottom{color:var(--orange); font-size:clamp(14px, 1.6vw, 19px); padding:4px 12px 18px}
.sign-art{padding:26px 26px 10px}
.sign-art svg{width:100%; height:auto; display:block}
.hero-fig .figure{transform-box:fill-box; transform-origin:45% 92%; animation:wobble 3.4s ease-in-out infinite}
.hero-fig:hover .figure, .hero-fig.tripped .figure{animation:none; transform:rotate(16deg) translate(8%,3%); transition:transform .45s cubic-bezier(.3,1.5,.5,1)}
.hero-fig .letter-b{transform-box:fill-box; transform-origin:50% 50%; transition:transform .45s cubic-bezier(.3,1.5,.5,1)}
.hero-fig:hover .letter-b, .hero-fig.tripped .letter-b{transform:rotate(-8deg) translate(-4%,0)}
.floor{height:30px; background:var(--hazard); margin:-6px -5% 0; position:relative; transform:skewX(-8deg)}
.hero-fig figcaption{margin-top:14px; font-size:13px; color:var(--muted); font-weight:500}
@keyframes wobble{0%,100%{transform:rotate(-2deg)} 50%{transform:rotate(2.5deg) translate(1%,0)}}
@media (max-width:860px){
  .hero-grid{grid-template-columns:minmax(0,1fr)}
  .hero-fig{max-width:400px; order:-1}
}

/* ticker: a band of hazard tape */
.ticker{background:var(--orange); color:var(--black); overflow:hidden; padding:14px 0; font-family:var(--display); font-weight:800; font-size:17px; letter-spacing:.12em; text-transform:uppercase; border-block:10px solid transparent; border-image:var(--hazard) 10}
.ticker .track{display:flex; width:max-content; animation:ticker 32s linear infinite}
.ticker span{padding:0 22px; white-space:nowrap; display:inline-flex; align-items:center}
.ticker span::after{content:"▲"; margin-left:44px; font-size:.8em}
@keyframes ticker{to{transform:translateX(-50%)}}

/* about */
.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:22px}
.manual{list-style:none; margin:28px 0 0; padding:0; display:grid; gap:10px; max-width:46ch}
.manual li{display:flex; gap:16px; align-items:baseline; border-top:1px solid var(--line); padding-top:10px}
.manual b{font-family:var(--display); font-weight:800; color:var(--orange); letter-spacing:.08em}
.dict{
  background:var(--black-2); border:3px solid var(--orange); border-radius:var(--r); padding:clamp(24px, 3vw, 40px);
  box-shadow:10px 10px 0 0 var(--orange); transform:rotate(-1.2deg);
}
.dict-code{font-family:var(--display); font-weight:700; font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--orange); margin-bottom:14px}
.dict .word{font-family:var(--display); font-weight:800; font-size:clamp(34px, 3.6vw, 50px); letter-spacing:-.01em; line-height:1; color:var(--bone)}
.dict .ipa{color:var(--muted); margin:8px 0 18px}
.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)}
.dict ol b{color:var(--orange)}
.dict .en{margin-top:18px; padding-top:16px; border-top:1px dashed var(--line); color:var(--muted); font-size:15px}
.dict .en b{color:var(--bone)}
@media (max-width:860px){ .about-grid{grid-template-columns:minmax(0,1fr)} .dict{transform:none; box-shadow:6px 6px 0 0 var(--orange)} }

/* products */
.products{background:var(--black-2); border-top:1px solid var(--black-3)}
.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}
.prod-grid{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:20px}
/* each card is a warning label */
.card{
  background:var(--black); border:3px solid var(--orange); border-radius:var(--r); padding:0 0 18px; display:flex; flex-direction:column; gap:12px;
  transition:transform .25s ease, box-shadow .25s ease; position:relative; overflow:hidden;
}
.card:hover{transform:translateY(-6px) rotate(-.8deg); box-shadow:8px 8px 0 var(--orange)}
.card-code{
  display:flex; justify-content:space-between; gap:12px; background:var(--orange); color:var(--black); padding:7px 14px;
  font-family:var(--display); font-weight:800; font-size:13px; letter-spacing:.18em; text-transform:uppercase; margin:0;
}
.card .art{background:var(--black-2); margin:0 14px; border:1px solid var(--black-3); border-radius:4px; padding:10px}
.card .art svg{width:100%; height:auto; aspect-ratio:1}
.card .name, .card p, .card .btn{margin-inline:16px}
.card .name{display:grid; gap:4px}
.card :is(h3,h4){font-family:var(--display); font-weight:800; line-height:.95; letter-spacing:-.015em; text-transform:uppercase; margin:0; font-size:20px; color:var(--bone)}
.card :is(h3,h4) a{text-decoration:none}
.card :is(h3,h4) a::after{content:""; position:absolute; inset:0}
.price{font-family:var(--display); font-weight:800; font-size:20px; white-space:nowrap; color:var(--orange)}
.card p:not(.card-code){font-size:14.5px; color:var(--muted); flex:1}
.card .btn{padding:12px 18px; font-size:14px; justify-content:center; position:relative; z-index:1}
/* the two groups: clothing and things, badges & stickers */
.prod-group + .prod-group{margin-top:clamp(40px, 5vw, 64px)}
.group-h{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; font-size:clamp(22px, 2.6vw, 32px); max-width:none; color:var(--bone);
  padding-bottom:14px; margin-bottom:clamp(18px, 2.4vw, 28px); border-bottom:3px solid var(--orange);
}
.group-h span{
  font-size:13px; letter-spacing:.16em; background:var(--orange); color:var(--black); padding:6px 10px 5px; line-height:1; white-space:nowrap;
}
.prod-note{margin-top:28px; display:flex; gap:14px; align-items:flex-start; max-width:72ch; color:var(--muted); font-size:15px}
.prod-note svg{width:30px; height:27px; flex:none; color:var(--orange)}
@media (max-width:860px){ .prod-grid{grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px} }
@media (max-width:560px){
  .prod-grid{gap:10px}
  .card{padding-bottom:12px; gap:10px}
  .card-code{font-size:11px; letter-spacing:.1em; padding:6px 10px}
  .card .art{margin:0 8px; padding:6px}
  .card .name, .card p, .card .btn{margin-inline:10px}
  .card :is(h3,h4){font-size:16px}
  .price{font-size:17px}
  .card p:not(.card-code){font-size:13.5px}
  .card .btn{padding:11px 10px}
}

/* footer */
footer{border-top:1px solid var(--black-3); padding:0 0 32px; background:var(--black)}
footer .wrap{padding-top:48px}
.foot-grid{display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr) minmax(0,1fr); gap:32px}
footer h4{font-family:var(--display); font-weight:800; font-size:14px; letter-spacing:.16em; 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:none}
footer a:hover{text-decoration:underline; text-decoration-color:var(--orange); text-decoration-thickness:2px}
.foot-brand .brand{margin-bottom:14px}
.foot-text{color:var(--muted); max-width:38ch}
.soon{color:var(--muted)}
.responsible{margin-top:36px; padding-top:20px; border-top:1px solid var(--black-3); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:14px; color:var(--muted)}
.responsible b{color:var(--bone)}
@media (max-width:860px){ .foot-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} .foot-brand{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:.14em}
.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}
  .hero-fig .figure{transform:none}
}
/* in the small wordmark the tipped B would leave a gap: pull the rest closer */
.brand .trip-b{margin-right:-.08em; transform:rotate(-12deg) translate(-.02em,.04em)}

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

/* running text inside a drawing (the dictionary sticker) */
.svgtxt.b{font-family:var(--sans); font-weight:500; letter-spacing:0}
