/* ============================================================
   MEWNRAVEL — $MEWNR
   periwinkle monochrome + one red thread
   display: Fraunces (soft/wonk) · body: Figtree
   ============================================================ */

:root{
  --field-0:#a09ce9;
  --field-1:#8d89dd;
  --field-2:#7d78d4;
  --field-3:#6b66c6;
  --indigo:#312c78;
  --ink:#2e2a6e;
  --ink-soft:#4a45a0;
  --paper:#ffffff;
  --paper-2:#f6f5ff;
  --paper-3:#eceafc;
  --thread:#e93a52;
  --thread-deep:#c22742;
  --thread-light:#ff8b9b;
  --pink:#f7bbd3;
  --eye:#57acec;
  --white:#ffffff;
  --t-on-field:#ffffff;
  --t-on-field-soft:rgba(255,255,255,.82);
  --shadow:0 18px 44px -18px rgba(35,30,90,.45);
  --shadow-sm:0 8px 22px -10px rgba(35,30,90,.4);
  --r-lg:28px;
  --r-md:20px;
  --r-sm:12px;
  --font-d:"Fraunces",Georgia,serif;
  --font-b:"Figtree",system-ui,sans-serif;
  --font-m:ui-monospace,"Cascadia Mono","Segoe UI Mono",Consolas,monospace;
  --nav-h:72px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip}
body{
  font-family:var(--font-b);
  background:
    radial-gradient(1200px 700px at 82% -6%, var(--field-0), transparent 60%),
    radial-gradient(1000px 800px at -10% 30%, #9591e4, transparent 55%),
    linear-gradient(178deg, var(--field-1) 0%, var(--field-2) 46%, var(--field-3) 100%);
  background-color:var(--field-2);
  color:var(--t-on-field);
  overflow-x:clip;
  min-height:100vh;
  line-height:1.6;
}
img{max-width:100%;height:auto;display:block}
::selection{background:var(--thread);color:#fff}
html{scrollbar-color:var(--thread) rgba(255,255,255,.22)}
body::-webkit-scrollbar{width:12px}
body::-webkit-scrollbar-track{background:var(--field-3)}
body::-webkit-scrollbar-thumb{background:var(--thread);border-radius:8px;border:3px solid var(--field-3)}
:focus-visible{outline:3px solid var(--white);outline-offset:3px;border-radius:6px}
[id]{scroll-margin-top:calc(var(--nav-h) + 18px)}

h1,h2,h3,.pre-word{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:800}

/* ---------- background canvas + vignette ---------- */
#fieldCanvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(130% 100% at 50% 40%, transparent 62%, rgba(38,32,96,.28) 100%)}
main,header#nav,.marquee,footer{position:relative;z-index:2}

/* ---------- preloader ---------- */
#preloader{position:fixed;inset:0;z-index:60;display:grid;place-items:center;
  background:linear-gradient(178deg,var(--field-1),var(--field-3));
  transition:opacity .5s ease,visibility .5s ease}
#preloader.done{opacity:0;visibility:hidden}
.pre-inner{text-align:center;display:grid;justify-items:center;gap:18px}
.pre-ball{animation:preSpin 1.6s linear infinite}
@keyframes preSpin{to{transform:rotate(-360deg)}}
.pre-word{display:flex;gap:2px;font-size:clamp(1.6rem,5vw,2.4rem);letter-spacing:.14em;color:#fff}
.pre-word span{opacity:0;transform:translateY(12px);animation:preLetter .5s cubic-bezier(.2,.9,.3,1.4) forwards}
.pre-word span:nth-child(1){animation-delay:.05s}.pre-word span:nth-child(2){animation-delay:.1s}
.pre-word span:nth-child(3){animation-delay:.15s}.pre-word span:nth-child(4){animation-delay:.2s}
.pre-word span:nth-child(5){animation-delay:.25s}.pre-word span:nth-child(6){animation-delay:.3s}
.pre-word span:nth-child(7){animation-delay:.35s}.pre-word span:nth-child(8){animation-delay:.4s}
.pre-word span:nth-child(9){animation-delay:.45s}
@keyframes preLetter{to{opacity:1;transform:none}}
.pre-tag{color:var(--t-on-field-soft);font-size:.9rem;letter-spacing:.08em}

/* ---------- thread progress ---------- */
#threadProgress{position:fixed;top:0;left:0;right:0;height:0;z-index:55;pointer-events:none}
.tp-line{position:absolute;top:0;left:0;height:5px;width:0;background:var(--thread);
  border-radius:0 3px 3px 0;box-shadow:0 1px 6px rgba(194,39,66,.5)}
.tp-ball{position:absolute;top:-4px;transform:translateX(-50%) rotate(0deg);left:0;transition:none;filter:drop-shadow(0 2px 4px rgba(40,30,90,.35))}

/* ---------- nav ---------- */
#nav{position:sticky;top:0;height:var(--nav-h);z-index:50;display:flex;align-items:center;gap:22px;
  padding:0 clamp(16px,4vw,40px);
  background:rgba(120,115,212,.72);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-bottom:1.5px solid rgba(255,255,255,.22)}
.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff;
  font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:900;font-size:1.18rem;letter-spacing:.04em}
.nav-brand img{border-radius:10px}
.nav-brand em,.tag-brand em,.foot-brand em{font-style:normal;color:var(--thread);-webkit-text-stroke:0}
#nav .nav-brand em{color:#ffd9e0;text-shadow:0 0 12px rgba(233,58,82,.55);color:var(--thread-light)}
.nav-links{display:flex;gap:4px;margin-left:auto}
.nav-links a{color:var(--t-on-field-soft);text-decoration:none;font-weight:600;font-size:.94rem;
  padding:8px 12px;border-radius:10px;position:relative;transition:color .2s}
.nav-links a::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:2.5px;
  background-image:linear-gradient(90deg,var(--thread) 55%,transparent 55%);background-size:9px 2.5px;background-repeat:repeat-x;
  transform:scaleX(0);transform-origin:left;transition:transform .28s ease;border-radius:2px}
.nav-links a:hover{color:#fff}
.nav-links a:hover::after{transform:scaleX(1)}
.nav-cta{display:flex;align-items:center;gap:10px}
.snd-btn{width:38px;height:38px;border-radius:12px;border:1.5px solid rgba(255,255,255,.35);
  background:rgba(255,255,255,.12);color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .2s}
.snd-btn:hover{background:rgba(255,255,255,.22)}
.snd-btn .snd-wave{opacity:0;transition:opacity .2s}
.snd-btn[aria-pressed="true"] .snd-wave{opacity:1}
.burger{display:none;width:42px;height:42px;border-radius:12px;border:1.5px solid rgba(255,255,255,.35);
  background:rgba(255,255,255,.12);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.burger span{display:block;width:19px;height:2.5px;background:#fff;border-radius:2px;transition:transform .3s,opacity .3s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
/* fixed-inside-backdrop-filter gotcha: keep the panel absolute under the sticky nav */
.mobile-menu{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;gap:6px;
  padding:18px clamp(16px,4vw,40px) 24px;
  background:rgba(104,99,198,.97);border-bottom:2px solid rgba(255,255,255,.25);box-shadow:var(--shadow)}
.mobile-menu.open{display:flex}
.mobile-menu a{color:#fff;text-decoration:none;font-weight:700;font-size:1.05rem;padding:10px 6px;border-radius:10px}
.mobile-menu a:not(.btn):hover{background:rgba(255,255,255,.12)}
.mobile-menu .btn{margin-top:8px;justify-content:center}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 22px;border-radius:999px;
  font-family:var(--font-b);font-weight:800;font-size:.98rem;text-decoration:none;cursor:pointer;
  border:2px solid transparent;transition:transform .18s cubic-bezier(.2,.9,.3,1.6),box-shadow .2s,background .2s;
  will-change:transform}
.btn:hover{transform:translateY(-2px) scale(1.03)}
.btn:active{transform:translateY(1px) scale(.98)}
.btn img{width:18px;height:18px}
.btn-thread{background:var(--thread);color:#fff;box-shadow:0 10px 24px -8px rgba(194,39,66,.65)}
.btn-thread:hover{background:var(--thread-deep)}
.btn-paper{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-sm)}
.btn-paper:hover{background:var(--paper-2)}
.btn-ghost{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.4)}
.btn-ghost:hover{background:rgba(255,255,255,.22)}
.btn-sm{padding:9px 16px;font-size:.88rem}

.stitch-link{color:#fff;font-weight:700;text-decoration:none;
  background-image:linear-gradient(90deg,var(--thread) 55%,transparent 55%);
  background-size:9px 2.5px;background-repeat:repeat-x;background-position:0 100%;padding-bottom:3px}
.stitch-link:hover{color:var(--thread-light)}
.pull-card .stitch-link,.step .stitch-link{color:var(--ink)}
.pull-card .stitch-link:hover,.step .stitch-link:hover{color:var(--thread)}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(24px,4vw,56px);
  align-items:center;max-width:1240px;margin:0 auto;
  padding:clamp(40px,7vh,84px) clamp(18px,4vw,40px) clamp(48px,8vh,96px);min-height:calc(92vh - var(--nav-h))}
.hero-kicker{margin-bottom:18px}
.kicker-pill{display:inline-block;padding:7px 16px;border-radius:999px;font-weight:800;font-size:.86rem;
  letter-spacing:.12em;text-transform:uppercase;color:#fff;
  background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.4)}
.hero-title{font-size:clamp(2.6rem,6.2vw,4.9rem);line-height:1.02;letter-spacing:-.01em;color:#fff;
  text-shadow:0 3px 0 rgba(46,42,110,.18)}
.loose{position:relative;display:inline-block;color:var(--thread-light);white-space:nowrap}
.loose-thread{position:absolute;left:-4%;bottom:-.52em;width:108%;height:auto;pointer-events:none}
.hero-sub{margin-top:22px;max-width:52ch;font-size:clamp(1rem,1.35vw,1.16rem);color:var(--t-on-field-soft)}
.hero-sub strong{color:#fff}

.ca-knot{margin-top:28px;position:relative;display:inline-block}
.ca-tag{position:absolute;top:-11px;left:18px;z-index:1;background:var(--thread);color:#fff;
  font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  padding:3px 10px;border-radius:999px}
.ca-pill{display:flex;align-items:center;gap:12px;padding:14px 20px;border-radius:18px;cursor:pointer;
  background:var(--paper);color:var(--ink);border:2.5px dashed var(--thread);
  font-family:var(--font-m);font-size:clamp(.82rem,1.5vw,.98rem);font-weight:600;
  box-shadow:var(--shadow-sm);transition:transform .16s cubic-bezier(.2,.9,.3,1.8);max-width:100%}
.ca-pill:hover{transform:scale(1.02)}
.ca-pill.snap{animation:caSnap .38s cubic-bezier(.2,.9,.3,1.8)}
@keyframes caSnap{0%{transform:scale(1)}35%{transform:scale(.94)}70%{transform:scale(1.05)}100%{transform:scale(1)}}
.ca-label{background:var(--thread);color:#fff;font-family:var(--font-b);font-weight:900;
  font-size:.72rem;letter-spacing:.1em;padding:4px 9px;border-radius:8px}
#caValue{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-copy{flex:none;color:var(--thread)}

.hero-ctas{margin-top:26px;display:flex;flex-wrap:wrap;gap:12px}

/* hero stage */
.hero-stage{position:relative;display:grid;justify-items:center;gap:8px}
.mascot-wrap{position:relative;width:min(78%,380px)}
#mascot{width:100%;border-radius:32px;filter:drop-shadow(0 24px 40px rgba(40,32,100,.45));
  user-select:none;-webkit-user-drag:none;transition:transform .3s ease}
.mascot-wrap.purring #mascot{animation:purrWiggle .5s ease-in-out infinite}
@keyframes purrWiggle{0%,100%{transform:rotate(-.8deg) scale(1.01)}50%{transform:rotate(.8deg) scale(1.02)}}
.pet-hearts{position:absolute;inset:0;pointer-events:none;overflow:visible}
.pet-heart{position:absolute;font-size:1.3rem;animation:heartUp 1.3s ease-out forwards}
@keyframes heartUp{0%{opacity:0;transform:translateY(6px) scale(.6)}20%{opacity:1}100%{opacity:0;transform:translateY(-64px) scale(1.25) rotate(12deg)}}

.bone-shrine{position:relative;width:min(96%,430px);margin-top:-8px;text-align:center}
#boneSvg{width:100%;height:auto;overflow:visible}
.bone-plaque{font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;
  color:var(--t-on-field-soft);margin-bottom:2px}
.bone-plaque.lie{text-decoration:line-through;text-decoration-color:var(--thread);text-decoration-thickness:3px}
.thread-handle{cursor:grab;transition:transform .2s;touch-action:none}
.thread-handle:hover{transform:scale(1.08)}
.thread-handle:active{cursor:grabbing}
.handle-halo{transform-origin:310px 202px;animation:halo 1.8s ease-out infinite}
@keyframes halo{0%{transform:scale(.7);opacity:.55}70%{transform:scale(1.25);opacity:0}100%{transform:scale(1.25);opacity:0}}
.bone-shrine.tense #boneSvg{animation:boneShake .12s linear infinite}
@keyframes boneShake{0%{transform:translate(0,0) rotate(0)}25%{transform:translate(1.5px,-1px) rotate(.4deg)}50%{transform:translate(-1px,1px) rotate(-.4deg)}75%{transform:translate(1px,1.5px) rotate(.2deg)}}
.bone-hint{font-size:.88rem;color:var(--t-on-field-soft);animation:hintBob 2.4s ease-in-out infinite}
@keyframes hintBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.bone-reveal p{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;
  font-size:1.35rem;font-weight:800;color:#fff;margin-bottom:8px}
.bone-reveal em{color:var(--thread-light)}
.hero-counter{display:flex;align-items:center;gap:9px;margin-top:10px;padding:8px 16px;border-radius:999px;
  background:rgba(255,255,255,.13);border:1.5px solid rgba(255,255,255,.3);font-size:.92rem;font-weight:700}
.hero-counter b{color:var(--thread-light)}

/* ---------- marquee ---------- */
.marquee{overflow:hidden;background:var(--indigo);border-top:2px solid rgba(255,255,255,.12);
  border-bottom:2px solid rgba(255,255,255,.12);padding:15px 0}
.marquee-track{display:flex;align-items:center;gap:34px;width:max-content;
  animation:marq 26s linear infinite;will-change:transform}
.marquee-track span{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;
  font-weight:800;font-size:1.06rem;letter-spacing:.12em;color:#fff;white-space:nowrap}
.marquee-track span:nth-child(4n+3){color:var(--thread-light)}
.marquee-track i{font-style:normal;font-size:1.1rem;animation:bob 1.8s ease-in-out infinite}
@keyframes marq{to{transform:translateX(-50%)}}
@keyframes bob{0%,100%{transform:translateY(-2px) rotate(-8deg)}50%{transform:translateY(2px) rotate(8deg)}}

/* ---------- sections common ---------- */
section{padding:clamp(64px,9vh,110px) clamp(18px,4vw,40px)}
.sec-head{max-width:820px;margin:0 auto clamp(36px,5vh,56px);text-align:center}
.sec-kicker{display:inline-block;font-size:.8rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--thread-light);margin-bottom:12px;
  padding:5px 14px;border:1.5px dashed var(--thread-light);border-radius:999px}
.sec-title{font-size:clamp(2rem,4.4vw,3.2rem);color:#fff;line-height:1.08;text-shadow:0 3px 0 rgba(46,42,110,.16)}
.sec-sub{margin-top:14px;color:var(--t-on-field-soft);font-size:1.05rem}
.sec-sub strong{color:#fff}

/* reveals */
.reveal,.reveal-seq{opacity:0;transform:translateY(26px)}
.reveal.in,.reveal-seq.in{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.16,.8,.3,1)}

/* ---------- pulls (lore) ---------- */
.pulls{max-width:1000px;margin:0 auto}
.pull-list{list-style:none;display:grid;gap:clamp(20px,3vh,30px)}
.pull{display:grid;grid-template-columns:110px 1fr 90px;gap:clamp(14px,2.5vw,28px);align-items:center}
.pull:nth-child(even){grid-template-columns:90px 1fr 110px}
.pull:nth-child(even) .pull-no{order:3}
.pull:nth-child(even) .pull-card{order:2}
.pull:nth-child(even) .pull-doodle{order:1}
.pull-no{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:900;
  font-size:clamp(1.1rem,2.4vw,1.5rem);color:var(--thread-light);transform:rotate(-4deg);text-align:center}
.pull-card{background:var(--paper);color:var(--ink);border-radius:var(--r-lg);padding:clamp(20px,3vw,32px) clamp(22px,3.4vw,36px);
  box-shadow:var(--shadow);position:relative;transition:transform .3s cubic-bezier(.2,.9,.3,1.4),box-shadow .3s}
.pull-card:hover{transform:translateY(-4px) rotate(-.35deg);box-shadow:0 26px 54px -20px rgba(35,30,90,.55)}
.pull-card h3{font-size:clamp(1.25rem,2.4vw,1.6rem);margin-bottom:8px;color:var(--indigo)}
.pull-card p{color:var(--ink-soft);font-size:1rem}
.pull-card strong{color:var(--thread)}
.pull-doodle{width:100%;max-width:90px;justify-self:center;overflow:visible}
.draw-on{stroke-dashoffset:0}

/* ---------- banner break ---------- */
.banner-break{padding:0 clamp(18px,4vw,40px)}
.banner-break img{max-width:1240px;width:100%;margin:0 auto;border-radius:var(--r-lg);
  box-shadow:var(--shadow);border:3px solid rgba(255,255,255,.35)}

/* ---------- unravel room ---------- */
.room{max-width:1240px;margin:0 auto}
.room-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,26px)}
.relic{position:relative;background:var(--paper);border-radius:var(--r-lg);padding:26px 20px 20px;
  color:var(--ink);text-align:center;box-shadow:var(--shadow-sm);overflow:visible;
  transition:transform .3s cubic-bezier(.2,.9,.3,1.4),box-shadow .3s;touch-action:pan-y}
.relic:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.relic.tense{animation:relicShake .11s linear infinite}
@keyframes relicShake{0%{transform:translate(0,0)}25%{transform:translate(1.6px,-1.2px) rotate(.5deg)}50%{transform:translate(-1.4px,1px) rotate(-.5deg)}75%{transform:translate(1px,1.4px)}}
.relic.gone .relic-svg{opacity:.999}
.relic h3{font-size:1.12rem;color:var(--indigo);margin-top:6px}
.relic .relic-sub{font-size:.85rem;color:var(--ink-soft)}
.relic-svg{width:118px;height:118px;margin:0 auto;overflow:visible;display:block}
.relic-hold{position:absolute;top:12px;right:12px;font-size:.66rem;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--thread);border:1.5px dashed var(--thread);border-radius:999px;padding:3px 9px}
.relic-verdict{position:absolute;inset:0;display:grid;place-items:center;gap:4px;padding:20px;
  background:var(--indigo);color:#fff;border-radius:var(--r-lg);opacity:0;pointer-events:none;
  transition:opacity .45s ease}
.relic.gone .relic-verdict{opacity:1;pointer-events:auto}
.relic-verdict p{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:800;
  font-size:1.08rem;line-height:1.3}
.relic-verdict .btn{margin-top:2px}
.relic-tension{position:absolute;left:14px;right:14px;bottom:10px;height:5px;border-radius:3px;
  background:var(--paper-3);overflow:hidden}
.relic-tension i{display:block;height:100%;width:0;background:var(--thread);border-radius:3px}
.squiggle-bit{position:absolute;pointer-events:none;font-size:1rem;animation:squigFall .9s ease-in forwards}
@keyframes squigFall{0%{opacity:1;transform:translateY(0) rotate(0)}100%{opacity:0;transform:translateY(90px) rotate(140deg)}}

.room-tally{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:clamp(30px,5vh,48px)}
.tally-ball svg{transition:transform .45s cubic-bezier(.2,.9,.3,1.6)}
.tally-ball.bump svg{animation:ballBump .5s cubic-bezier(.2,.9,.3,1.8)}
@keyframes ballBump{0%{transform:scale(1)}40%{transform:scale(1.18) rotate(-6deg)}100%{transform:scale(1)}}
.tally-big{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-size:1.5rem;font-weight:800}
.tally-big b{color:var(--thread-light)}
.tally-small{color:var(--t-on-field-soft);font-size:.9rem}
.room-footnote{text-align:center;margin-top:26px;color:var(--t-on-field-soft)}

/* ---------- yarn label ---------- */
.label-sec{max-width:1240px;margin:0 auto}
.label-wrap{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,3.4vw,44px);align-items:center}
.care-tag{position:relative;background:var(--paper);color:var(--ink);border-radius:18px 60px 18px 18px;
  padding:clamp(28px,4vw,44px) clamp(24px,3.4vw,40px) clamp(24px,3vw,36px);
  box-shadow:var(--shadow);transform:rotate(-1.6deg);
  border:1.5px solid var(--paper-3)}
.care-tag::before{content:"";position:absolute;top:-26px;left:34px;width:3px;height:34px;
  background:var(--thread);border-radius:2px;transform:rotate(14deg)}
.tag-hole{position:absolute;top:16px;left:30px;width:16px;height:16px;border-radius:50%;
  background:var(--field-1);box-shadow:inset 0 1px 3px rgba(35,30,90,.4)}
.tag-brand{font-size:clamp(1.6rem,3vw,2.1rem);color:var(--indigo);margin-top:6px}
.tag-brand em{color:var(--thread)}
.tag-ticker{font-family:var(--font-m);font-size:.92rem;color:var(--ink-soft);margin:4px 0 18px}
.tag-lines{list-style:none;display:grid;gap:10px;border-top:2px dashed var(--paper-3);padding-top:18px}
.tag-lines li{font-size:1.02rem;color:var(--ink-soft)}
.tag-lines b{color:var(--thread);font-weight:900;margin-right:6px}
.care-icons{display:flex;gap:14px;margin-top:22px;color:var(--ink-soft)}
.care-icons span{width:44px;height:44px;display:grid;place-items:center;border:1.5px solid var(--paper-3);border-radius:10px}

.stat-knits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,2vw,22px)}
.knit{background:rgba(255,255,255,.13);border:1.5px solid rgba(255,255,255,.3);border-radius:var(--r-md);
  padding:clamp(20px,2.6vw,30px);text-align:center;
  background-image:repeating-linear-gradient(-45deg,rgba(255,255,255,.05) 0 10px,transparent 10px 20px);
  transition:transform .3s cubic-bezier(.2,.9,.3,1.4)}
.knit:hover{transform:translateY(-4px) rotate(.4deg)}
.knit-num{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:900;
  font-size:clamp(1.7rem,3.4vw,2.5rem);color:#fff;line-height:1.1}
.knit-unit{font-size:.6em;color:var(--thread-light);margin-left:2px}
.knit-cap{margin-top:6px;color:var(--t-on-field-soft);font-size:.92rem}

/* ---------- ball market (dexscreener) ---------- */
.ball-market{max-width:880px;margin:clamp(40px,6vh,64px) auto 0;background:rgba(46,42,110,.5);
  border:1.5px solid rgba(255,255,255,.25);border-radius:var(--r-lg);padding:clamp(22px,3vw,32px)}
.bm-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.bm-head h3{font-size:1.3rem;color:#fff}
.bm-state{font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  padding:5px 13px;border-radius:999px;background:rgba(255,255,255,.14);border:1.5px dashed rgba(255,255,255,.45);color:var(--t-on-field-soft)}
.bm-state.live{background:var(--thread);border-style:solid;border-color:var(--thread-light);color:#fff}
.bm-state.err{border-color:var(--thread-light);color:var(--thread-light)}
.bm-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.bm-tile{background:rgba(255,255,255,.09);border-radius:var(--r-sm);padding:14px;text-align:center}
.bm-cap{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--t-on-field-soft)}
.bm-val{font-family:var(--font-m);font-weight:700;font-size:clamp(.98rem,1.8vw,1.22rem);color:#fff;margin-top:5px}
.bm-val.up{color:#8ef0b2}.bm-val.down{color:var(--thread-light)}
.bm-note{margin-top:14px;font-size:.86rem;color:var(--t-on-field-soft);text-align:center}

/* ---------- loop in ---------- */
.loopin{max-width:1240px;margin:0 auto}
.stitch-steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,2vw,22px);
  counter-reset:step}
.step{position:relative;background:var(--paper);color:var(--ink);border-radius:var(--r-lg);
  padding:30px 22px 24px;box-shadow:var(--shadow-sm);text-align:center;
  transition:transform .3s cubic-bezier(.2,.9,.3,1.4),box-shadow .3s}
.step:hover{transform:translateY(-6px) rotate(-.5deg);box-shadow:var(--shadow)}
.step img{margin:0 auto 12px}
.step-no{position:absolute;top:-15px;left:50%;transform:translateX(-50%) rotate(-6deg);
  width:34px;height:34px;display:grid;place-items:center;background:var(--thread);color:#fff;
  font-family:var(--font-d);font-weight:900;border-radius:50%;box-shadow:0 6px 14px -4px rgba(194,39,66,.7)}
.step h3{font-size:1.14rem;color:var(--indigo);margin-bottom:6px}
.step p{font-size:.93rem;color:var(--ink-soft)}
.step p b{color:var(--thread)}

/* ---------- chapters ---------- */
.chapters{max-width:1240px;margin:0 auto}
.chapter-rail{position:relative}
.rail-thread{position:absolute;top:26px;left:0;width:100%;height:90px;overflow:visible;pointer-events:none}
.chapter-list{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,2vw,22px);
  padding-top:76px}
.chapter{position:relative;background:rgba(255,255,255,.13);border:1.5px solid rgba(255,255,255,.3);
  border-radius:var(--r-md);padding:24px 20px;transition:transform .3s cubic-bezier(.2,.9,.3,1.4)}
.chapter:hover{transform:translateY(-5px)}
.chapter .knot{position:absolute;top:-62px;left:50%;transform:translateX(-50%);width:22px;height:22px;border-radius:50%;
  background:var(--thread);border:4px solid #fff;box-shadow:0 4px 10px rgba(40,32,100,.4)}
.chapter:nth-child(2) .knot{top:-46px}
.chapter:nth-child(4) .knot{top:-46px}
.chapter h3{font-size:1.08rem;color:#fff;margin-bottom:8px}
.chapter p{font-size:.92rem;color:var(--t-on-field-soft)}
.chapter p b{color:var(--thread-light)}
.chapter.is-done{border-color:var(--thread);background:rgba(233,58,82,.16)}

/* ---------- join ---------- */
.join{max-width:1000px;margin:0 auto}
.join-card{position:relative;background:var(--paper);color:var(--ink);border-radius:36px;
  padding:clamp(36px,6vw,64px);text-align:center;box-shadow:var(--shadow);overflow:hidden}
.join-card::before{content:"";position:absolute;inset:12px;border:2.5px dashed var(--thread);border-radius:26px;
  opacity:.55;pointer-events:none}
.join-logo{width:110px;margin:0 auto 18px;border-radius:26px;box-shadow:var(--shadow-sm)}
.join-card h2{font-size:clamp(1.9rem,4.4vw,3rem);color:var(--indigo);line-height:1.08}
.join-mark{color:var(--thread)}
.join-card>p{margin-top:12px;color:var(--ink-soft)}
.join-ctas{margin-top:26px;display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.join .btn-ghost{background:var(--paper-2);color:var(--ink);border-color:var(--paper-3)}
.join .btn-ghost:hover{background:var(--paper-3)}

/* ---------- footer ---------- */
.footer{background:var(--indigo);padding:40px clamp(18px,4vw,40px) 30px;text-align:center}
.foot-row{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  max-width:1000px;margin:0 auto 22px}
.foot-brand{font-family:var(--font-d);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:900;
  font-size:1.1rem;letter-spacing:.05em}
.foot-brand em{color:var(--thread-light)}
.foot-icons{display:flex;gap:10px}
.foot-icons a{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;
  background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.22);transition:transform .2s,background .2s}
.foot-icons a:hover{transform:translateY(-3px);background:rgba(255,255,255,.2)}
.foot-disc{max-width:760px;margin:0 auto;font-size:.82rem;color:rgba(255,255,255,.6);line-height:1.7}
.foot-mini{margin-top:16px;font-size:.8rem;color:rgba(255,255,255,.45)}

/* ---------- toast ---------- */
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);z-index:70;
  background:var(--indigo);color:#fff;font-weight:700;padding:13px 24px;border-radius:999px;
  border:2px solid var(--thread);box-shadow:var(--shadow);opacity:0;pointer-events:none;
  transition:opacity .3s,transform .3s}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- click stitch ---------- */
.stitch-pop{position:fixed;z-index:65;pointer-events:none;width:26px;height:26px;margin:-13px 0 0 -13px;
  animation:stitchPop .55s cubic-bezier(.2,.9,.3,1.4) forwards}
.stitch-pop::before,.stitch-pop::after{content:"";position:absolute;inset:0;margin:auto;width:22px;height:4.5px;
  background:var(--thread);border-radius:3px}
.stitch-pop::before{transform:rotate(45deg)}
.stitch-pop::after{transform:rotate(-45deg)}
@keyframes stitchPop{0%{opacity:0;transform:scale(.3) rotate(-30deg)}30%{opacity:1}100%{opacity:0;transform:scale(1.25) rotate(14deg)}}

/* ============================================================
   responsive
   ============================================================ */
@media (max-width:1024px){
  .room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stitch-steps{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:30px}
  .chapter-list{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:70px;padding-top:70px}
  .rail-thread{display:none}
  .chapter .knot{top:-14px !important;left:22px;transform:none}
}
@media (max-width:900px){
  .hero{grid-template-columns:1fr;min-height:0;text-align:center}
  .hero-copy{display:grid;justify-items:center}
  .hero-sub{max-width:60ch}
  .label-wrap{grid-template-columns:1fr;max-width:640px;margin:0 auto}
  .care-tag{transform:rotate(-1deg)}
}
@media (max-width:760px){
  .nav-links{display:none}
  .burger{display:flex}
  #navBuy{display:none}
  .pull,.pull:nth-child(even){grid-template-columns:1fr;gap:8px}
  .pull-no,.pull:nth-child(even) .pull-no{order:0;text-align:left;transform:rotate(-3deg)}
  .pull-doodle,.pull:nth-child(even) .pull-doodle{order:2;justify-self:flex-end;max-width:64px;margin-top:-30px}
  .bm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .room-grid{grid-template-columns:1fr}
  .stitch-steps{grid-template-columns:1fr;row-gap:26px}
  .chapter-list{grid-template-columns:1fr;row-gap:34px}
  .stat-knits{grid-template-columns:1fr 1fr}
  .hero-ctas .btn{flex:1 1 auto;justify-content:center}
  .ca-pill{width:100%}
  .room-tally{flex-direction:column;text-align:center;gap:10px}
}

/* ============================================================
   reduced motion (OS-level) — ?motion=force flips body.motion-ok
   ============================================================ */
body.rm *,body.rm *::before,body.rm *::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important}
body.rm .reveal,body.rm .reveal-seq{opacity:1;transform:none}
body.rm #fieldCanvas{display:none}
body.rm .marquee-track{animation:none;transform:none}
body.rm html{scroll-behavior:auto}

/* shot mode: force everything visible for headless capture */
body.shot .reveal,body.shot .reveal-seq{opacity:1 !important;transform:none !important;transition:none !important}
body.shot #preloader{display:none}
body.shot .marquee-track{animation:none}
/* headless SwiftShader chokes on backdrop-filter + fixed overlays — plain paint for captures */
body.shot #nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(113,108,205,.97)}
body.shot .vignette{display:none}
