/* ============ MOCHI RIOT — kawaii brutalism ============ */
:root{
  --ink:#141014;
  --paper:#fff7fd;
  --pink:#ff4fd8;
  --lime:#c6ff3d;
  --sky:#7fd6ff;
  --sun:#ffd23d;
  --tang:#ff8a3d;
  --red:#ff3d5a;
  --grape:#8b5bff;
  --line:3px solid var(--ink);
  --shadow:6px 6px 0 var(--ink);
  --radius:28px;
  --font-display:"Rubik Mono One","Arial Black",system-ui,sans-serif;
  --font-body:"Space Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:clip}
main,.footer{overflow-x:clip}
body{
  font-family:var(--font-body);
  background:var(--paper);
  color:var(--ink);
  font-size:17px;line-height:1.5;
  overflow-x:hidden;
  background-image:radial-gradient(var(--ink) 1.2px,transparent 1.2px);
  background-size:22px 22px;
  background-attachment:fixed;
}
body::before{ /* fade the dot grid */
  content:"";position:fixed;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(255,247,253,.92),rgba(255,247,253,.75));
}
img,svg{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}
.wrap{max-width:1200px;margin:0 auto;padding:0 16px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

h1,h2,h3,.display{font-family:var(--font-display);font-weight:400;line-height:1.02;letter-spacing:-.02em;text-transform:uppercase}
h1{font-size:clamp(44px,9vw,120px)}
h2{font-size:clamp(32px,5.5vw,64px)}
h3{font-size:clamp(20px,2.4vw,26px)}

/* ---------- jelly primitives ---------- */
.jelly{transition:transform .5s cubic-bezier(.2,1.8,.4,1)}
.jelly:hover{transform:scale(1.04,.96) rotate(-1deg)}
.jelly:active,.squished{animation:squish .55s cubic-bezier(.2,1.8,.4,1)}
@keyframes squish{
  0%{transform:scale(1,1)}
  25%{transform:scale(1.25,.72)}
  45%{transform:scale(.88,1.14)}
  65%{transform:scale(1.06,.95)}
  85%{transform:scale(.98,1.02)}
  100%{transform:scale(1,1)}
}
@keyframes wobble{
  0%,100%{border-radius:42% 58% 63% 37%/45% 41% 59% 55%}
  33%{border-radius:61% 39% 45% 55%/58% 62% 38% 42%}
  66%{border-radius:38% 62% 56% 44%/40% 52% 48% 60%}
}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
@keyframes spin{to{transform:rotate(360deg)}}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--font-display);font-size:18px;text-transform:uppercase;text-decoration:none;
  padding:18px 30px;border:var(--line);border-radius:999px;
  background:var(--lime);box-shadow:var(--shadow);
  transition:transform .45s cubic-bezier(.2,1.8,.4,1),box-shadow .2s;
}
.btn:hover{transform:translate(-2px,-2px) scale(1.05,.95);box-shadow:9px 9px 0 var(--ink)}
.btn:active{transform:translate(4px,4px) scale(1.12,.86);box-shadow:1px 1px 0 var(--ink)}
.btn.pink{background:var(--pink);color:#fff}
.btn.sm{font-size:14px;padding:12px 18px;box-shadow:4px 4px 0 var(--ink)}
.btn[disabled]{opacity:.5;pointer-events:none}

/* ---------- announcement + header ---------- */
.marquee{background:var(--ink);color:var(--lime);overflow:hidden;white-space:nowrap;border-bottom:var(--line)}
.marquee.alt{background:var(--pink);color:var(--ink);transform:rotate(-2deg);margin:40px -20px;border-top:var(--line)}
.marquee__track{display:inline-flex;gap:48px;padding:12px 0;animation:marq 22s linear infinite;font-family:var(--font-display);font-size:15px;text-transform:uppercase}
.marquee.alt .marquee__track{font-size:clamp(22px,3vw,34px);padding:18px 0;animation-duration:30s}
@keyframes marq{to{transform:translateX(-50%)}}

.header{position:sticky;top:0;z-index:50;background:rgba(255,247,253,.9);backdrop-filter:blur(10px);border-bottom:var(--line)}
.header .wrap{display:flex;align-items:center;justify-content:space-between;height:72px;gap:12px}
.logo{font-family:var(--font-display);font-size:24px;text-decoration:none;display:flex;align-items:center;gap:8px}
.logo span{display:inline-block;background:var(--pink);color:#fff;padding:2px 10px;border:var(--line);border-radius:14px;transform:rotate(-4deg)}
.nav{display:flex;gap:22px;align-items:center}
.nav a{text-decoration:none;font-weight:700}
.nav a:hover{text-decoration:underline wavy var(--pink) 2px;text-underline-offset:6px}
.icon-btn{width:48px;height:48px;display:grid;place-items:center;border:var(--line);border-radius:50%;background:#fff;box-shadow:3px 3px 0 var(--ink);position:relative}
.cart-count{position:absolute;top:-8px;right:-8px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:var(--pink);color:#fff;border:2px solid var(--ink);font-size:12px;font-weight:700;display:grid;place-items:center}
.cart-count:empty{display:none}
@media (max-width:720px){.nav .hide-m{display:none}}

/* ---------- hero ---------- */
.hero{position:relative;padding:40px 0 20px;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;align-items:center}
.hero h1 .w{display:inline-block}
.hero h1 .hl{background:var(--lime);border:var(--line);border-radius:22px;padding:0 14px;display:inline-block;transform:rotate(-3deg);box-shadow:var(--shadow)}
.hero h1 .hl2{color:var(--pink);-webkit-text-stroke:3px var(--ink)}
.hero p.lead{font-size:20px;max-width:520px;margin:22px 0 28px}
.hero .ctas{display:flex;gap:16px;flex-wrap:wrap}
.blob-stage{position:relative;aspect-ratio:1;width:100%;max-width:560px;justify-self:center;touch-action:none;cursor:grab}
.blob-stage:active{cursor:grabbing}
.blob-stage canvas{width:100%;height:100%}
.blob-hint{position:absolute;left:50%;bottom:4%;transform:translateX(-50%) rotate(-3deg);background:#fff;border:var(--line);border-radius:999px;padding:8px 16px;font-weight:700;white-space:nowrap;box-shadow:4px 4px 0 var(--ink);font-size:15px}
.squeeze-meter{position:absolute;top:4%;right:2%;width:96px;height:96px;border:var(--line);border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center;font-family:var(--font-display);font-size:22px;line-height:1;box-shadow:4px 4px 0 var(--ink);transform:rotate(8deg)}
.squeeze-meter small{display:block;font-family:var(--font-body);font-size:11px;font-weight:700}
.sticker{position:absolute;font-family:var(--font-display);background:var(--sun);border:var(--line);padding:10px 14px;border-radius:16px;box-shadow:4px 4px 0 var(--ink);animation:floaty 5s ease-in-out infinite;font-size:14px;pointer-events:none}
@media (max-width:860px){
  .hero .wrap{grid-template-columns:1fr}
  .blob-stage{max-width:340px;order:-1;margin-top:-10px}
  .hero{padding-top:16px}
  .hero h1{font-size:clamp(40px,13vw,80px)}
  .hero p.lead{font-size:17px;margin:16px 0 20px}
  .hero .ctas .btn{flex:1;padding:16px 14px;font-size:15px}
  .squeeze-meter{width:78px;height:78px;font-size:18px}
}

/* unlock modal */
.unlock{position:fixed;inset:0;z-index:100;display:none;place-items:center;background:rgba(20,16,20,.6);padding:16px}
.unlock.show{display:grid}
.unlock__card{background:var(--lime);border:var(--line);border-radius:var(--radius);box-shadow:10px 10px 0 var(--ink);padding:36px 28px;max-width:440px;text-align:center;animation:squish .7s}
.unlock__code{font-family:var(--font-display);font-size:34px;background:#fff;border:var(--line);border-radius:16px;padding:10px;margin:18px 0;letter-spacing:.06em;user-select:all}

/* ---------- sections ---------- */
section{padding:60px 0}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:32px;flex-wrap:wrap}
.sec-head p{max-width:420px;font-weight:500}
.tag{display:inline-block;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.08em;border:2px solid var(--ink);border-radius:999px;padding:4px 12px;background:#fff;margin-bottom:12px}

/* product grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:28px}
.card{position:relative;background:#fff;border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;text-decoration:none;transition:transform .5s cubic-bezier(.2,1.8,.4,1),box-shadow .2s}
.card:hover{transform:translate(-3px,-3px) rotate(-1deg);box-shadow:10px 10px 0 var(--ink)}
.card:nth-child(even):hover{transform:translate(-3px,-3px) rotate(1deg)}
.card__art{aspect-ratio:1;display:grid;place-items:center;border-bottom:var(--line);position:relative;overflow:hidden}
.card__art svg{width:72%;transition:transform .6s cubic-bezier(.2,1.8,.4,1)}
.card:hover .card__art svg{transform:scale(1.12,.9) translateY(6%)}
.card__badge{position:absolute;top:14px;left:14px;background:var(--ink);color:#fff;font-family:var(--font-display);font-size:12px;padding:6px 10px;border-radius:10px;transform:rotate(-6deg);z-index:2}
.card__body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:6px;flex:1}
.card__name{font-family:var(--font-display);font-size:19px;text-transform:uppercase;line-height:1.1}
.card__short{font-size:15px;opacity:.8}
.card__foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:12px}
.price{font-family:var(--font-display);font-size:22px}
.price s{font-family:var(--font-body);font-size:15px;opacity:.5;margin-left:6px}
.add-btn{width:52px;height:52px;border:var(--line);border-radius:50%;background:var(--lime);font-size:28px;font-weight:700;display:grid;place-items:center;box-shadow:3px 3px 0 var(--ink);transition:transform .45s cubic-bezier(.2,1.8,.4,1)}
.add-btn:hover{transform:rotate(90deg) scale(1.1)}

/* features */
.feels{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px}
.feel{border:var(--line);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow);background:#fff}
.feel .ico{width:70px;height:70px;border:var(--line);display:grid;place-items:center;font-size:34px;margin-bottom:14px;animation:wobble 6s ease-in-out infinite}
.feel:nth-child(1) .ico{background:var(--pink)}
.feel:nth-child(2) .ico{background:var(--sky);animation-delay:-2s}
.feel:nth-child(3) .ico{background:var(--sun);animation-delay:-4s}
.feel:nth-child(4) .ico{background:var(--lime);animation-delay:-1s}
.feel h3{margin-bottom:8px}

/* chaos promo */
.promo{background:var(--grape);color:#fff;border:var(--line);border-radius:40px;box-shadow:10px 10px 0 var(--ink);padding:48px 32px;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;position:relative;overflow:hidden}
.promo h2{-webkit-text-stroke:2px var(--ink);color:var(--sun)}
.promo .art{animation:floaty 4s ease-in-out infinite}
.promo .btn{margin-top:22px}
@media (max-width:760px){.promo{grid-template-columns:1fr;padding:32px 20px}}

/* social */
.ugc{border:var(--line);border-radius:var(--radius);background:var(--sky);padding:40px 24px;text-align:center;box-shadow:var(--shadow)}
.ugc h2{margin-bottom:12px}

/* faq */
details{border:var(--line);border-radius:20px;background:#fff;margin-bottom:14px;box-shadow:4px 4px 0 var(--ink);overflow:hidden}
summary{padding:18px 22px;font-weight:700;font-size:18px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:10px}
summary::after{content:"+";font-family:var(--font-display);transition:transform .4s cubic-bezier(.2,1.8,.4,1)}
details[open] summary::after{transform:rotate(135deg)}
details .a{padding:0 22px 20px}

/* ---------- product page ---------- */
.pdp{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:40px 0 20px;align-items:start}
.pdp__art{border:var(--line);border-radius:40px;box-shadow:10px 10px 0 var(--ink);aspect-ratio:1;display:grid;place-items:center;position:sticky;top:96px;cursor:pointer;overflow:hidden}
.pdp__art svg{width:70%}
.pdp h1{font-size:clamp(36px,5vw,64px);margin:6px 0 14px}
.pdp .price{font-size:34px;display:block;margin-bottom:16px}
.pdp ul{list-style:none;margin:22px 0;display:grid;gap:10px}
.pdp li{padding-left:34px;position:relative;font-weight:500}
.pdp li::before{content:"✦";position:absolute;left:0;top:-2px;font-size:20px;color:var(--pink);-webkit-text-stroke:1px var(--ink)}
.qty{display:inline-flex;border:var(--line);border-radius:999px;overflow:hidden;background:#fff;margin-right:12px;vertical-align:middle}
.qty button{width:46px;height:56px;font-size:22px;font-weight:700}
.qty span{min-width:36px;display:grid;place-items:center;font-weight:700}
.buy-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.trust{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.trust span{border:2px solid var(--ink);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:700;background:#fff}
.safety{margin-top:22px;font-size:14px;border:2px dashed var(--ink);border-radius:16px;padding:12px 16px;background:#fff}
@media (max-width:820px){.pdp{grid-template-columns:1fr}.pdp__art{position:relative;top:0}}

/* ---------- cart drawer ---------- */
.drawer{position:fixed;inset:0;z-index:90;pointer-events:none}
.drawer__bg{position:absolute;inset:0;background:rgba(20,16,20,.5);opacity:0;transition:opacity .3s}
.drawer__panel{position:absolute;top:0;right:0;height:100%;width:min(440px,100%);background:var(--paper);border-left:var(--line);transform:translateX(105%);transition:transform .55s cubic-bezier(.2,1.4,.4,1);display:flex;flex-direction:column}
.drawer.open{pointer-events:auto}
.drawer.open .drawer__bg{opacity:1}
.drawer.open .drawer__panel{transform:none}
.drawer__head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:var(--line)}
.drawer__head h3{font-size:22px}
.drawer__items{flex:1;overflow:auto;padding:16px 20px;display:grid;gap:14px;align-content:start}
.line{display:grid;grid-template-columns:72px 1fr auto;gap:12px;align-items:center;background:#fff;border:var(--line);border-radius:18px;padding:10px;box-shadow:3px 3px 0 var(--ink)}
.line__art{width:72px;height:72px;border:2px solid var(--ink);border-radius:14px;display:grid;place-items:center}
.line__art svg{width:80%}
.line__name{font-weight:700;line-height:1.2}
.line .qty{transform:scale(.8);transform-origin:left;margin:0}
.line .qty button{height:40px;width:36px}
.line .rm{font-size:13px;text-decoration:underline}
.drawer__foot{border-top:var(--line);padding:18px 20px;display:grid;gap:12px;background:#fff}
.ship-bar{height:16px;border:2px solid var(--ink);border-radius:999px;overflow:hidden;background:var(--paper)}
.ship-bar i{display:block;height:100%;background:repeating-linear-gradient(45deg,var(--lime) 0 10px,#a8e61f 10px 20px);transition:width .6s cubic-bezier(.2,1.6,.4,1)}
.total{display:flex;justify-content:space-between;font-family:var(--font-display);font-size:22px}
.empty{text-align:center;padding:40px 10px;font-weight:700}
.err{color:var(--red);font-weight:700;font-size:14px}

/* fly-to-cart blob */
.flyer{position:fixed;z-index:200;width:46px;height:46px;border:var(--line);border-radius:50%;pointer-events:none;transition:transform .7s cubic-bezier(.5,-.4,.6,1),opacity .7s}

/* ---------- footer & legal ---------- */
.footer{background:var(--ink);color:var(--paper);margin-top:60px;padding:56px 0 28px;border-top:var(--line)}
.footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:28px}
.footer a{text-decoration:none;opacity:.85;display:block;margin:6px 0}
.footer a:hover{opacity:1;color:var(--lime)}
.footer .big{font-family:var(--font-display);font-size:clamp(40px,9vw,110px);color:var(--pink);line-height:.9;margin-top:40px;-webkit-text-stroke:2px var(--paper);opacity:.95}
.footer small{opacity:.6;display:block;margin-top:20px}
@media (max-width:720px){.footer .cols{grid-template-columns:1fr 1fr}}

.prose{max-width:760px;padding:40px 0}
.prose h1{font-size:clamp(34px,5vw,56px);margin-bottom:24px}
.prose h2{font-size:24px;margin:30px 0 10px}
.prose p,.prose li{margin-bottom:10px}
.prose ul{padding-left:22px}
.todo{background:var(--sun);padding:0 4px;border-radius:4px}

/* sound toggle */
.sound{position:fixed;left:16px;bottom:16px;z-index:60}

/* custom cursor trail dots */
.trail{position:fixed;width:14px;height:14px;border-radius:50%;pointer-events:none;z-index:300;border:2px solid var(--ink);transform:translate(-50%,-50%) scale(var(--s,1));transition:transform .2s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .trail{display:none}
}

/* ---------- modern platform: cross-page morphs + scroll-driven motion ---------- */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.35s}
::view-transition-group(*){animation-duration:.6s;animation-timing-function:cubic-bezier(.2,1.3,.4,1)}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .card,.feel,.promo,.ugc,details{animation:pop-in linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
    .marquee.alt{animation:tilt linear both;animation-timeline:view()}
    .footer .big{animation:grow linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
  }
}
@keyframes pop-in{from{opacity:0;transform:translateY(80px) scale(.85,1.15) rotate(-4deg)}70%{transform:translateY(-6px) scale(1.03,.97)}to{opacity:1;transform:none}}
@keyframes tilt{from{transform:rotate(4deg) translateX(-6%)}to{transform:rotate(-5deg) translateX(4%)}}
@keyframes grow{from{letter-spacing:-.12em;opacity:.2}to{letter-spacing:0;opacity:.95}}

/* ---------- product photos + mascot stickers ---------- */
.card__art--photo img,.pdp__art--photo img,.promo__photo img{width:100%;height:100%;object-fit:cover;display:block}
.card__art--photo{padding:0}
.card__art--photo>img{transition:transform .6s cubic-bezier(.2,1.8,.4,1)}
.card:hover .card__art--photo>img{transform:scale(1.08,.95)}
.mascot{position:absolute;right:10px;bottom:10px;width:76px;height:76px;background:#fff;border:var(--line);border-radius:50%;display:grid;place-items:center;box-shadow:3px 3px 0 var(--ink);transform:rotate(-8deg);animation:floaty 4s ease-in-out infinite;pointer-events:none}
.mascot svg{width:84%!important}
.card__art--photo .mascot svg{transform:none!important}
.pdp__art--photo .mascot{width:110px;height:110px;right:18px;bottom:18px}
.pdp__art--photo{position:relative;top:0}
.gallery{position:sticky;top:96px}
.thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:16px}
.thumb{border:3px solid var(--ink);border-radius:14px;overflow:hidden;aspect-ratio:1;opacity:.6;transition:transform .4s cubic-bezier(.2,1.8,.4,1),opacity .2s}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb.on,.thumb:hover{opacity:1;transform:translateY(-3px) rotate(-2deg);box-shadow:3px 3px 0 var(--ink)}
.photo-note{font-size:13px;opacity:.65;margin-top:10px}
.promo__photo{position:relative;border:var(--line);border-radius:28px;overflow:hidden;box-shadow:8px 8px 0 var(--ink);aspect-ratio:1;background:#fff}
.line__art img{width:100%;height:100%;object-fit:cover;border-radius:11px}
@media (max-width:820px){.gallery{position:relative;top:0}}
