:root{
  --night:#0b0820;--indigo:#17114a;--violet:#8b5cf6;--neon:#c084fc;--eth:#a99bff;--sakura:#ff9ccf;--pink:#ff4f9a;--cat:#ffd23f;
  --ink:#f4f1ff;--muted:#bdb6e0;--line:rgba(200,190,255,.16);--paper:#f5ead2;--paper-ink:#1d1640;--red:#d7263d;
  --sky-top:#2a1450;--sky-bot:#c2577f;--stars:.2;--progress:0;
  --f-disp:'Dela Gothic One',Impact,sans-serif;
  --f-jp-disp:'Yuji Syuku','Hiragino Mincho ProN','Yu Mincho',serif;
  --f-jp:'Zen Old Mincho','Hiragino Mincho ProN','Yu Mincho',serif;
  --f-mono:'JetBrains Mono',ui-monospace,monospace;
  --f-body:'Zen Kaku Gothic New',system-ui,sans-serif;--f-comic:'Comic Neue','Comic Sans MS',cursive;
  --ease:cubic-bezier(.22,1,.36,1);--pop:cubic-bezier(.34,1.56,.64,1);--accent:var(--cat);--accent-ink:#1a1033;--font-mono:var(--f-mono);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{margin:0;background:var(--night);color:var(--ink);font:400 clamp(16px,1.05vw,18px)/1.6 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
::selection{background:var(--pink);color:#fff}
.skip{position:absolute;left:-999px;top:8px;z-index:10002;background:var(--cat);color:#000;padding:.5em 1em;border-radius:8px}
.skip:focus{left:8px}
.wrap{width:100%;max-width:1320px;margin-inline:auto;padding-inline:clamp(20px,5vw,72px)}
.label{font:700 .72rem/1 var(--f-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--sakura);margin:0 0 1.1rem}
.hl{color:var(--cat);text-shadow:3px 0 0 rgba(255,79,154,.55),-3px 0 0 rgba(80,200,255,.45)}
h2{font:400 clamp(2.4rem,6.4vw,5.6rem)/.95 var(--f-disp);margin:0 0 1.2rem;letter-spacing:-.01em}
h3{font:400 clamp(1.3rem,2vw,1.9rem)/1.1 var(--f-disp);margin:0 0 .6rem}
.lede{max-width:58ch;color:var(--muted);font-size:clamp(1rem,1.25vw,1.15rem)}
section{position:relative;z-index:2}
:focus-visible{outline:2px dashed var(--cat);outline-offset:3px}

/* Japanese typography: Mincho for labels, brush for display kanji. Latin keeps --f-disp/--f-body. */
:lang(ja){font-family:var(--f-jp);font-style:normal;-webkit-font-smoothing:antialiased}
.kanji-brush,:lang(ja).kanji-brush,.kanji-brush :lang(ja){font-family:var(--f-jp-disp);font-weight:400;font-style:normal;letter-spacing:0}
.vert-jp{writing-mode:vertical-rl;text-orientation:upright}


/* ---------- atmosphere ---------- */
.sky{position:fixed;inset:0;z-index:0;background:linear-gradient(180deg,var(--sky-top),var(--sky-bot));overflow:hidden;pointer-events:none}
.sky-stars{position:absolute;inset:0;opacity:var(--stars);background-image:radial-gradient(1.4px 1.4px at 12% 18%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 27% 62%,#fff 50%,transparent 51%),radial-gradient(1.6px 1.6px at 44% 30%,#e7dcff 50%,transparent 51%),radial-gradient(1px 1px at 63% 12%,#fff 50%,transparent 51%),radial-gradient(1.3px 1.3px at 78% 48%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 88% 22%,#ffd9f0 50%,transparent 51%),radial-gradient(1.2px 1.2px at 55% 75%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 6% 80%,#fff 50%,transparent 51%);background-size:420px 420px;animation:twinkle 6s ease-in-out infinite alternate}
@keyframes twinkle{to{filter:brightness(1.8)}}
.sky-moon{position:absolute;right:9vw;top:calc(14vh + var(--progress)*-30vh);width:min(26vw,300px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 40% 38%,#fff9ee,#f3d9ff 45%,#c7a8ff 70%,transparent 72%);filter:drop-shadow(0 0 60px rgba(214,180,255,.55));opacity:calc(.35 + var(--stars)*.6)}
.hero-torii{position:absolute;z-index:-1;right:2vw;bottom:0;width:min(56vw,820px);color:rgba(12,6,34,.72);filter:drop-shadow(0 0 30px rgba(255,79,154,.35));pointer-events:none;transform:translateY(var(--ty,0))}
.hero{position:relative;overflow:hidden}
.sky-grid{position:absolute;left:-20%;right:-20%;bottom:-10vh;height:46vh;opacity:calc(var(--progress)*1.1 - .25);background:linear-gradient(transparent 0 0),repeating-linear-gradient(90deg,rgba(192,132,252,.5) 0 1px,transparent 1px 70px),repeating-linear-gradient(0deg,rgba(192,132,252,.5) 0 1px,transparent 1px 44px);transform:perspective(420px) rotateX(62deg);transform-origin:50% 100%;-webkit-mask:linear-gradient(transparent,#000 70%);mask:linear-gradient(transparent,#000 70%)}
#petals,#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}
#petals{z-index:1}#fx{z-index:60}
.grain{position:fixed;inset:-50%;z-index:59;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence baseFrequency='.85' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");animation:grain 1s steps(4) infinite}
@keyframes grain{25%{transform:translate(3%,-2%)}50%{transform:translate(-2%,3%)}75%{transform:translate(2%,2%)}}
body::after{content:"";position:fixed;inset:0;z-index:58;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px);opacity:.35}

/* ---------- cursor ---------- */
.cursor{display:none}
@media (pointer:fine) and (prefers-reduced-motion:no-preference){
  html.has-cursor,html.has-cursor *{cursor:none!important}
  html.has-cursor .cursor{display:block;position:fixed;left:0;top:0;z-index:10003;width:46px;height:46px;pointer-events:none;transform:translate3d(-100px,-100px,0);transition:width .2s,height .2s}
  .cursor svg{width:100%;height:100%;transform:translate(-30%,-30%) rotate(0);transition:transform .25s var(--pop);filter:drop-shadow(0 0 6px rgba(192,132,252,.8))}
  html.cursor-hot .cursor svg{transform:translate(-30%,-30%) rotate(-28deg) scale(1.2)}
  html.cursor-down .cursor svg{transform:translate(-30%,-30%) rotate(40deg) scale(.95)}
}

/* ---------- preloader ---------- */
html.is-loading{overflow:hidden}
#gate{position:fixed;inset:0;z-index:10001;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,#22115a,#08051a 70%);color:var(--ink);transition:clip-path .9s cubic-bezier(.76,0,.24,1);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}
#gate.done{clip-path:polygon(0 0,100% 0,100% 0,0 22%);pointer-events:none}
.gate-scan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 4px);animation:scan 3s linear infinite}
@keyframes scan{to{background-position:0 200px}}
.gate-inner{position:relative;display:grid;justify-items:center;gap:18px;width:min(560px,86vw)}
.gate-kanji{display:flex;flex-direction:column;align-items:center;gap:.02em;font:400 clamp(5rem,16vw,10rem)/1 var(--f-jp-disp);color:#fff;text-shadow:4px 0 rgba(255,79,154,.8),-4px 0 rgba(80,200,255,.7)}
.gate-kanji span{display:inline-block;clip-path:inset(0 0 100% 0);animation:ink .8s var(--ease) forwards}
.gate-kanji span+span{animation-delay:.25s}
@keyframes ink{to{clip-path:inset(0 0 0 0)}}
.gate-log{list-style:none;margin:0;padding:0;width:100%;font:500 .8rem/1.9 var(--f-mono);color:var(--muted)}
.gate-log li{opacity:0;transform:translateX(-8px);transition:.3s}
.gate-log li.on{opacity:1;transform:none}
.gate-log li::before{content:"> ";color:var(--cat)}
.gate-log li.on::after{content:" ok";color:#7dffb0}
.gate-log s{color:var(--pink)}
.gate-bar{width:100%;height:4px;background:rgba(255,255,255,.12);overflow:hidden}
.gate-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--pink),var(--violet),var(--cat))}
.gate-num{font:400 2.2rem/1 var(--f-disp);color:var(--cat)}
.gate-hanko{position:absolute;right:12vw;bottom:16vh;width:110px;height:110px;border:5px solid var(--red);border-radius:14px;display:grid;place-items:center;color:var(--red);font:400 2.1rem/1 var(--f-jp-disp);writing-mode:vertical-rl;text-orientation:upright;transform:scale(2.4) rotate(-20deg);opacity:0;mix-blend-mode:screen}
#gate.stamped .gate-hanko{animation:stampIn .35s var(--pop) forwards}
@keyframes stampIn{to{transform:scale(1) rotate(-8deg);opacity:.95}}
.gate-skip{position:absolute;right:20px;bottom:20px;background:none;border:1px solid rgba(255,255,255,.4);border-radius:99px;padding:.45em 1.1em;font:700 .75rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.gate-skip:hover{background:#fff;color:#000}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(14px,3vw,36px);transition:background .3s,backdrop-filter .3s}
.nav.scrolled{background:rgba(11,8,32,.62);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.nav-brand img{width:40px;height:40px;border-radius:12px;border:2px solid var(--cat)}
.nav-brand b{font:400 1.15rem/1 var(--f-disp);letter-spacing:.02em}
.nav-brand em{font:700 1rem/1 var(--f-jp);font-style:normal;color:var(--sakura)}
.nav-links{display:flex;gap:clamp(14px,2.2vw,30px);font:700 .78rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase}
.nav-links a{text-decoration:none;opacity:.85}
.nav-links a:hover{opacity:1;color:var(--cat)}
.nav-right{display:flex;align-items:center;gap:10px}
.sound{display:flex;align-items:flex-end;gap:2px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:99px;background:rgba(255,255,255,.04);cursor:pointer}
.sound i{width:3px;height:6px;background:var(--muted);border-radius:2px;margin-bottom:12px;transition:.2s}
.sound span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sound[aria-pressed=true] i{background:var(--cat);animation:eq .8s ease-in-out infinite alternate}
.sound[aria-pressed=true] i:nth-child(2){animation-delay:-.3s}.sound[aria-pressed=true] i:nth-child(3){animation-delay:-.6s}.sound[aria-pressed=true] i:nth-child(4){animation-delay:-.15s}
@keyframes eq{to{height:16px;margin-bottom:9px}}
.nav-progress{position:absolute;left:0;right:0;bottom:0;height:2px}
.nav-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--pink),var(--cat));transform-origin:left;transform:scaleX(var(--progress))}

/* ---------- buttons ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:.6em;padding:.85em 1.4em;border-radius:14px;font:400 1rem/1 var(--f-disp);letter-spacing:.02em;text-decoration:none;border:2px solid #1a1033;cursor:pointer;white-space:nowrap;transition:box-shadow .15s,background .2s,opacity .2s}
.btn img{flex:none}
.btn-buy{background:var(--cat);color:#1a1033;box-shadow:5px 5px 0 #1a1033,0 0 0 2px rgba(255,210,63,.0)}
.btn-buy img{background:#fff;border-radius:50%;padding:2px}
.btn-buy:hover{box-shadow:7px 7px 0 var(--pink)}
.btn-ghost,.btn-x{background:rgba(20,12,60,.55);color:var(--ink);border-color:rgba(220,210,255,.35);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:5px 5px 0 rgba(0,0,0,.35)}
.btn-ghost:hover,.btn-x:hover{border-color:var(--cat);box-shadow:7px 7px 0 var(--violet)}
.btn-sm{padding:.6em 1em;font-size:.85rem;box-shadow:3px 3px 0 #1a1033}
.btn-big{padding:1.05em 1.8em;font-size:1.15rem}
.inv{filter:invert(1)}
.btn.is-soon{opacity:.62;cursor:not-allowed}
.btn.is-soon::after{content:attr(data-soon);position:absolute;top:-10px;right:-10px;background:var(--pink);color:#fff;font:700 .6rem/1 var(--f-mono);letter-spacing:.1em;padding:.4em .55em;border-radius:6px;transform:rotate(6deg);border:1.5px solid #1a1033}
.actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:22px}
.actions.center{justify-content:center}

/* ---------- hero ---------- */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:110px 0 70px}
.hero-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(20px,4vw,60px);width:100%;max-width:1400px;margin-inline:auto;padding-inline:clamp(20px,5vw,72px)}
.kicker{display:inline-flex;align-items:center;gap:10px;font:700 .72rem/1 var(--f-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink);padding:.6em 1em;border:1px solid var(--line);border-radius:99px;background:rgba(20,10,50,.45);backdrop-filter:blur(8px)}
.kicker .dot{width:8px;height:8px;border-radius:50%;background:var(--pink);box-shadow:0 0 10px var(--pink);animation:blink 1.2s steps(2) infinite}
@keyframes blink{50%{opacity:.2}}
.title{position:relative;z-index:3;margin:18px 0 0;font:400 clamp(3.6rem,9.6vw,10rem)/.86 var(--f-disp);letter-spacing:-.02em;cursor:pointer;user-select:none;font-style:italic}
.t-row{display:inline-flex;white-space:nowrap}
.title .ch{position:relative;display:inline-grid;overflow:hidden;padding:.04em .01em .08em;transform:skewX(-6deg)}
.title .ch>span{grid-area:1/1;transition:transform .5s var(--ease);text-shadow:.05em 0 0 rgba(255,79,154,.75),-.05em 0 0 rgba(90,200,255,.65)}
.title .ch>span:first-child{background:linear-gradient(180deg,#fff 30%,#e2d6ff 60%,#b79bff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(.045em 0 0 rgba(255,79,154,.8)) drop-shadow(-.045em 0 0 rgba(90,200,255,.7))}
.title .ch>span+span{transform:translateY(110%);color:var(--cat)}
.title .ch:hover>span:first-child{transform:translateY(-110%)}
.title .ch:hover>span+span{transform:none}
.title.glitch .t-row{animation:tglitch .5s steps(2) 1}
@keyframes tglitch{0%{transform:translate(0);clip-path:inset(0)}20%{transform:translate(-6px,2px);clip-path:inset(10% 0 55% 0)}40%{transform:translate(6px,-2px);clip-path:inset(60% 0 5% 0)}60%{transform:translate(-3px,0);clip-path:inset(30% 0 30% 0)}100%{transform:none;clip-path:inset(0)}}
.title.cut .t-row{animation:cutA .9s var(--ease) 1}
@keyframes cutA{0%{clip-path:none}30%{transform:translate(-14px,-10px) rotate(-2deg)}100%{transform:none}}
.title-jp{margin:.2rem 0 0;font:400 clamp(1.8rem,3.6vw,3.2rem)/1 var(--f-jp-disp);color:var(--sakura);letter-spacing:.04em;text-shadow:0 0 22px rgba(255,79,154,.5)}
.title-jp small,.title-jp small:lang(ja){font:700 .38em/1 var(--f-jp)!important;margin-left:.6em;letter-spacing:.3em;color:var(--muted);vertical-align:middle}
.bio{max-width:44ch;margin:20px 0 0;font-size:clamp(1.05rem,1.4vw,1.3rem);line-height:1.5;color:#e9e4ff}
.bio b{color:var(--cat)}
.ca{display:inline-flex;align-items:center;gap:10px;margin-top:22px;max-width:100%;padding:6px 6px 6px 8px;background:rgba(10,6,30,.7);border:1.5px solid rgba(220,210,255,.3);border-radius:14px;backdrop-filter:blur(10px);box-shadow:4px 4px 0 var(--violet)}
.ca-tag{font:700 .7rem/1 var(--f-mono);letter-spacing:.14em;background:var(--violet);color:#fff;padding:.55em .7em;border-radius:8px}
.ca-code{font:500 .86rem/1 var(--f-mono);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ca-copy{flex:none;border:0;border-radius:9px;background:var(--cat);color:#1a1033;font:700 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;padding:.75em 1em;cursor:pointer}
.ca-copy:disabled{background:rgba(255,255,255,.12);color:var(--muted);cursor:not-allowed}
.hint{font:500 .72rem/1 var(--f-mono);color:var(--muted);letter-spacing:.1em;margin-top:18px;opacity:.75}
.hero-art{display:grid;place-items:center}
.seal{position:relative;width:min(108%,600px);aspect-ratio:1;border-radius:50%;transform-style:preserve-3d}
.seal-ring{position:absolute;inset:-7%;animation:spin 40s linear infinite}
.seal-ring svg{width:100%;height:100%;overflow:visible}
.seal-ring text{font:700 9.2px var(--f-mono);letter-spacing:.24em;fill:var(--cat)}
.seal-ring text tspan:lang(ja){font-family:var(--f-jp);font-weight:700;font-size:11px;letter-spacing:.12em}
@keyframes spin{to{transform:rotate(360deg)}}
.seal-img{position:absolute;inset:4%;border-radius:50%;overflow:hidden;border:3px solid var(--cat);box-shadow:0 0 0 8px rgba(255,210,63,.12),0 0 80px rgba(192,132,252,.55),0 30px 80px -30px #000;background:#120b33;isolation:isolate;transform:translate3d(var(--px,0),var(--py,0),0)}
.seal-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.seal-img .s-r,.seal-img .s-b{mix-blend-mode:screen;opacity:0;transition:opacity .25s,transform .25s}
.seal-img .s-r{filter:sepia(1) saturate(8) hue-rotate(-50deg)}
.seal-img .s-b{filter:sepia(1) saturate(8) hue-rotate(160deg)}
.seal:hover .s-r{opacity:.55;transform:translate(10px,-3px)}
.seal:hover .s-b{opacity:.55;transform:translate(-10px,3px)}
.seal:hover .s-main{animation:sglitch 1.2s steps(1) infinite}
@keyframes sglitch{0%,100%{clip-path:none;transform:none}8%{clip-path:inset(20% 0 62% 0);transform:translateX(-12px)}12%{clip-path:none;transform:none}46%{clip-path:inset(64% 0 18% 0);transform:translateX(14px)}50%{clip-path:none;transform:none}}
.s-slices{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 2px,transparent 2px 5px);mix-blend-mode:multiply;pointer-events:none}
.seal-tag{position:absolute;left:-2%;bottom:10%;transform:rotate(-8deg);background:var(--pink);color:#fff;border:2px solid #1a1033;box-shadow:4px 4px 0 #1a1033;font:700 .72rem/1 var(--f-mono);letter-spacing:.14em;padding:.6em .8em;border-radius:8px}
.seal-stamp{position:absolute;right:0;top:6%;transform:rotate(12deg);border:3px solid var(--red);color:var(--red);background:rgba(245,234,210,.92);font:700 .7rem/1.1 var(--f-mono);letter-spacing:.16em;text-align:center;padding:.5em .7em;border-radius:6px;box-shadow:0 8px 20px -8px #000}
.seal-stamp b{font:400 1.8rem/1 var(--f-disp);letter-spacing:0}
.hero-eth{position:absolute;inset:0;pointer-events:none;z-index:-1}
.eth{position:absolute;width:clamp(28px,3.4vw,56px);filter:drop-shadow(0 0 18px rgba(169,155,255,.7));animation:bob 6s ease-in-out infinite alternate}
.e1{left:6%;top:22%}.e2{left:44%;top:12%;width:clamp(20px,2vw,34px);animation-delay:-2s}.e3{right:6%;bottom:16%;animation-delay:-4s}.e4{left:38%;bottom:12%;width:clamp(18px,1.8vw,30px);animation-delay:-1s}
.eth{translate:var(--dx,0) var(--dy,0)}
@keyframes bob{to{transform:translateY(-22px) rotate(10deg)}}
.scroll-cue{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;font:700 .66rem/1 var(--f-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.scroll-cue i{width:1px;height:42px;background:linear-gradient(var(--cat),transparent);animation:cue 1.6s ease-in-out infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* slash */
.slash{position:fixed;inset:0;z-index:61;pointer-events:none;overflow:hidden}
.slash i{position:absolute;left:-10%;top:50%;width:120%;height:4px;background:linear-gradient(90deg,transparent,#fff 20%,#f0e6ff 50%,#fff 80%,transparent);box-shadow:0 0 24px #fff,0 0 60px var(--neon);transform:rotate(var(--a,-14deg)) scaleX(0);transform-origin:left center;opacity:0}
.slash.go i{animation:slashA .5s var(--ease) forwards}
@keyframes slashA{0%{transform:rotate(var(--a)) scaleX(0);opacity:1}45%{transform:rotate(var(--a)) scaleX(1);opacity:1}100%{transform:rotate(var(--a)) scaleX(1);opacity:0}}
body.shake main{animation:shake .35s linear}
@keyframes shake{20%{transform:translate(-5px,3px)}40%{transform:translate(4px,-3px)}60%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}}

/* ---------- marquee ---------- */
.marquee{position:relative;z-index:3;overflow:hidden;padding:14px 0;border-block:2px solid #1a1033}
.m1{background:var(--cat);color:#1a1033;transform:rotate(-1.6deg);margin:10px -2vw;box-shadow:0 12px 40px -14px rgba(255,210,63,.6)}
.m2{background:var(--pink);color:#fff;transform:rotate(1.4deg);margin:0 -2vw}
.track{display:flex;width:max-content;align-items:center;animation:crawl 34s linear infinite}
.m2 .track{animation-direction:reverse;animation-duration:40s}
.track>*{padding:0 .9em;white-space:nowrap}
.track span{font:400 clamp(1.1rem,2.2vw,1.9rem)/1 var(--f-disp)}
.track em{font:400 clamp(1.1rem,2.2vw,1.9rem)/1 var(--f-jp-disp);font-style:normal;letter-spacing:.02em}
@keyframes crawl{to{transform:translateX(-50%)}}
.marquee:hover .track{animation-play-state:paused}

/* ---------- sections ---------- */
.sec-head{margin-bottom:clamp(36px,5vw,64px)}
.doc-sec{padding:clamp(100px,14vw,180px) 0 clamp(80px,10vw,140px)}
.doc-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(24px,4vw,56px);align-items:start}
.paper{position:relative;background:var(--paper);color:var(--paper-ink);border-radius:6px;padding:clamp(26px,4vw,56px) clamp(22px,4.4vw,64px) clamp(30px,4vw,48px);box-shadow:0 1px 0 #d8c9a7,0 40px 80px -30px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.08);transform:rotate(-.6deg);overflow:hidden}
.paper::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 20% 0%,rgba(255,255,255,.55),transparent 60%),repeating-linear-gradient(0deg,transparent 0 33px,rgba(70,90,160,.12) 33px 34px);mix-blend-mode:multiply}
.paper-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font:700 .66rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:#7a6c8e;border-bottom:1px solid rgba(29,22,64,.25);padding-bottom:12px;margin-bottom:28px}
.lic-title{position:relative;font:700 clamp(1.5rem,2.6vw,2.3rem)/1.15 var(--f-comic);letter-spacing:.02em;display:flex;align-items:center;flex-wrap:wrap;gap:.35em;margin-bottom:1.2rem;transform:rotate(-1.2deg)}
.lic-icon{display:inline-grid;place-items:center;width:1.4em;height:1.4em;border-radius:50%;background:var(--paper-ink);color:var(--paper);font-size:.6em}
.redact{position:relative;border:0;background:none;padding:0 .08em;cursor:pointer;font:inherit;color:var(--red)}
.redact::after{content:"";position:absolute;inset:-.05em -.12em;background:#0d0a1c;transform-origin:right;transition:transform .55s var(--ease);border-radius:2px}
.redact:hover::after{transform:scaleX(.92) skewX(-8deg)}
.redact.open::after{transform:scaleX(0)}
.redact.open .redact-word{animation:rglitch .6s steps(2) 1}
@keyframes rglitch{0%{text-shadow:3px 0 #00e0ff,-3px 0 #ff2fa0;transform:translateX(3px)}50%{transform:translateX(-3px)}100%{text-shadow:none;transform:none}}
.redact::before{content:"click to un-redact";position:absolute;left:50%;top:-1.9em;transform:translateX(-50%);font:700 .55rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;background:var(--paper-ink);color:var(--paper);padding:.45em .6em;border-radius:5px;opacity:0;transition:.2s}
.redact:hover::before{opacity:1}.redact.open::before{content:"removed from searchable text";}
.paper p{margin:0 0 1rem;font:700 clamp(1rem,1.3vw,1.2rem)/1.55 var(--f-comic)}
.fill .c{color:rgba(29,22,64,.16);transition:color .25s}
.fill .c.on{color:var(--paper-ink)}
.pledges{list-style:none;margin:0;padding:0}
.pledges li{display:grid;grid-template-columns:2.2rem 1fr;gap:.6rem;align-items:start}
.pledges b{font:400 1.6rem/1 var(--f-disp);color:var(--violet)}
.bubble{position:relative;margin:1.4rem 0 1.8rem auto;max-width:520px;background:#dff0ff;border:2px solid var(--paper-ink);border-radius:28px;padding:1rem 1.3rem;box-shadow:5px 5px 0 var(--paper-ink)}
.bubble::after{content:"";position:absolute;left:30px;bottom:-14px;width:22px;height:22px;background:#dff0ff;border-right:2px solid var(--paper-ink);border-bottom:2px solid var(--paper-ink);transform:rotate(45deg) skew(10deg,10deg)}
.bubble p{margin:0}
.bubble .c.on{color:#2a3a8a}
.sign-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;position:relative;z-index:3}
.sig{flex:1 1 220px;display:grid;gap:6px}
.sig-line{display:block;height:2px;background:var(--paper-ink);opacity:.5}
.sig-cap{font:700 .62rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:#7a6c8e}
.btn-hanko{background:var(--red);color:#fff;border-color:var(--paper-ink);box-shadow:5px 5px 0 var(--paper-ink)}
.btn-hanko:hover{box-shadow:7px 7px 0 var(--violet)}
.btn-hanko .hk{display:grid;place-items:center;width:1.8em;height:1.8em;border:2px solid #fff;border-radius:6px;font:400 .95rem/1 var(--f-jp-disp)}
.sign-count{margin-top:14px!important;font:700 .72rem/1.4 var(--f-mono)!important;letter-spacing:.06em;color:#6a5c80}
.stamp{position:absolute;z-index:5;border:3px solid var(--red);color:var(--red);font:700 .78rem/1.15 var(--f-mono);letter-spacing:.16em;text-align:center;padding:.55em .8em;border-radius:6px;opacity:0;transform:scale(1.8) rotate(var(--rot));mix-blend-mode:multiply;pointer-events:none}
.stamp.in{animation:stampIn .4s var(--pop) forwards}
.st1{--rot:-12deg;right:6%;top:13%}
.st2{--rot:9deg;right:5%;top:44%;border-color:#5b3fd1;color:#5b3fd1}
.paper-cats{margin-top:26px;border-radius:10px;overflow:hidden;border:2px solid var(--paper-ink);transform:rotate(1.2deg);box-shadow:5px 5px 0 var(--paper-ink)}
.hanko-layer{position:absolute;inset:0;pointer-events:none;z-index:4}
.hanko{position:absolute;width:92px;height:92px;margin:-46px 0 0 -46px;border:4px solid var(--red);border-radius:12px;display:grid;place-items:center;color:var(--red);background:rgba(215,38,61,.06);font:400 1.7rem/1 var(--f-jp-disp);writing-mode:vertical-rl;text-orientation:upright;mix-blend-mode:multiply;transform:scale(2.6) rotate(var(--r));opacity:0;animation:hanko .38s var(--pop) forwards}
.hanko::after{content:"";position:absolute;inset:4px;border:1.5px solid var(--red);border-radius:7px;opacity:.6}
@keyframes hanko{to{transform:scale(1) rotate(var(--r));opacity:.9}}
.evidence{display:grid;gap:22px;position:sticky;top:96px}
.ev-card{position:relative;display:block;width:100%;padding:10px 10px 40px;background:#fffdf7;border:0;border-radius:4px;cursor:zoom-in;box-shadow:0 26px 50px -24px rgba(0,0,0,.8);rotate:var(--r)}
.ev-card img{width:100%;height:auto;border-radius:2px}
.ev-tag{position:absolute;left:12px;bottom:12px;font:700 .64rem/1 var(--f-mono);letter-spacing:.14em;color:#3b2f63}
.ev-card::before{content:"";position:absolute;top:-10px;left:50%;width:84px;height:22px;transform:translateX(-50%) rotate(-3deg);background:rgba(255,210,63,.75);z-index:2}
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:clamp(50px,7vw,90px)}
.fact{padding:22px 20px;border:1px solid var(--line);border-radius:16px;background:rgba(15,8,45,.55);backdrop-filter:blur(10px)}
.fact b{display:block;font:400 clamp(2.6rem,5vw,4.2rem)/1 var(--f-disp);color:var(--cat)}
.fact b small{font-size:.5em;color:var(--sakura)}
.fact span{display:block;margin-top:8px;font-size:.92rem;color:var(--muted)}

/* lore */
.lore .hpin-sticky{flex-direction:column;justify-content:center;align-items:stretch}
.lore-head{padding:0 6vw;margin-bottom:3vh}
.lore-head h2{font-size:clamp(2rem,4.6vw,4rem);margin:0}
.lore .hpin-track{align-items:stretch}
.lore .hpin-card.lc{position:relative;flex:0 0 clamp(280px,30vw,420px);aspect-ratio:auto;height:clamp(420px,64vh,580px);border-radius:22px;padding:0;background:#0b0820;border:1px solid rgba(220,210,255,.2);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 60px -30px #000}
.lc-media{position:relative;flex:1 1 auto;min-height:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,#2a1450,#0b0820 72%);overflow:hidden}
.lc-media img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;object-position:center;display:block;transition:transform 1.2s var(--ease)}
.lc:hover .lc-media img{transform:scale(1.04)}
.lc-copy{position:relative;z-index:2;flex:0 0 auto;padding:16px 22px 20px;background:linear-gradient(160deg,rgba(40,22,100,.96),rgba(14,8,40,.98))}
.lc-n{position:absolute!important;z-index:3;top:14px;left:16px;font:400 .95rem/1 var(--f-disp);color:var(--cat);text-shadow:0 2px 8px #0b0820}
.lc time{display:block;font:700 .72rem/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sakura);margin-bottom:8px}
.lc h3{font-size:clamp(1.35rem,2vw,1.9rem);margin:0 0 .45rem}
.lc p{margin:0;color:#dcd5f6;font-size:.92rem}
.lc-kanji{position:absolute!important;right:-6px;top:8px;font:400 9rem/1 var(--f-jp-disp);color:rgba(192,132,252,.16);z-index:1!important;writing-mode:vertical-rl;text-orientation:upright;pointer-events:none}
.lc-big{position:absolute!important;right:10px;top:4px;z-index:1;font:400 6.4rem/1 var(--f-disp);color:rgba(255,210,63,.28);pointer-events:none;text-shadow:0 4px 18px rgba(0,0,0,.35)}
.lc-hex{display:block;margin-top:10px;font:500 .66rem/1.45 var(--f-mono);color:#7dffb0;word-break:break-all;opacity:.8}
.lc-final{background:#0b0820}
.lc-final .lc-copy{background:linear-gradient(160deg,#ffd23f,#ff9ccf);color:#1a1033}
.lc-final p,.lc-final time{color:#1a1033}
.lc-final .lc-n{color:#fff}

/* vow */
.vow{min-height:110vh;display:grid;place-items:center;overflow:hidden;padding:16vh 0}
.vow-bg{position:absolute;inset:-10% 0;background:center/cover no-repeat;transform:translateY(var(--vy,0)) scale(1.08);opacity:.55}
.vow::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(11,8,32,.35),rgba(11,8,32,.92) 75%),linear-gradient(180deg,var(--night),transparent 18%,transparent 82%,var(--night))}
.vow-inner{position:relative;z-index:1}
.vow-q{margin:0;font:400 clamp(2rem,5.2vw,4.6rem)/1.08 var(--f-disp);letter-spacing:-.01em;max-width:20ch}
.vow-q .w{color:rgba(255,255,255,.14);transition:color .3s,text-shadow .3s}
.vow-q .w.on{color:#fff;text-shadow:0 0 30px rgba(192,132,252,.6)}
.vow-q .w.key.on{color:var(--cat)}
.vow-note{margin-top:28px;max-width:56ch;color:var(--muted)}
.vow-note em{color:var(--sakura)}

/* memes */
.scrolls{padding:clamp(100px,12vw,170px) 0 clamp(60px,8vw,120px)}
.masonry{columns:3 300px;column-gap:20px}
.m-item{break-inside:avoid;margin:0 0 20px;display:block;width:100%;padding:0;border:0;background:#120a35;border-radius:16px;overflow:hidden;cursor:zoom-in;position:relative;box-shadow:0 24px 50px -28px #000;outline:1px solid rgba(220,210,255,.15)}
.m-item img{width:100%;height:auto;transition:transform .8s var(--ease)}
.m-item:hover img{transform:scale(1.04)}
.m-item figcaption{position:absolute;left:12px;bottom:12px;font:700 .64rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;background:rgba(11,8,32,.78);padding:.5em .7em;border-radius:6px;color:var(--cat);backdrop-filter:blur(6px)}
.cat-pile{position:relative;height:0}
.tcat{position:fixed;z-index:40;width:clamp(64px,7vw,96px);touch-action:none;cursor:grab;filter:drop-shadow(3px 4px 0 #1a1033);user-select:none;-webkit-user-drag:none}
.tcat:active{cursor:grabbing}

/* buy */
.buy{padding:clamp(90px,10vw,150px) 0 6vh}
.stack{position:relative}
.step{position:sticky;top:calc(96px + var(--i)*22px);display:grid;grid-template-columns:auto 1fr minmax(160px,34%);gap:clamp(18px,3vw,40px);align-items:center;min-height:min(56vh,440px);margin-bottom:12vh;padding:clamp(22px,3.4vw,46px);border-radius:28px;background:linear-gradient(140deg,#1d1356,#0f0a30);border:1px solid rgba(220,210,255,.2);box-shadow:0 -14px 50px -18px rgba(0,0,0,.7);transform-origin:50% 0}
.step:nth-child(2){background:linear-gradient(140deg,#341a6e,#12093a)}
.step:nth-child(3){background:linear-gradient(140deg,#4a1d6a,#170a3c)}
.step:nth-child(4){background:linear-gradient(140deg,#ffd23f,#ff9ccf);color:#1a1033;margin-bottom:6vh}
.step:nth-child(4) .label{color:#6b2a6b}.step:nth-child(4) p{color:#2a1a4f}
.step-n{font:400 clamp(3.4rem,7vw,6.4rem)/1 var(--f-jp-disp);color:var(--cat);text-shadow:4px 4px 0 rgba(0,0,0,.35);writing-mode:vertical-rl;text-orientation:upright}
.step:nth-child(4) .step-n{color:var(--red)}
.step h3{font-size:clamp(1.8rem,3.4vw,3rem)}
.step p{color:#dcd5f6;margin:0;max-width:46ch}
.step>img{width:100%;height:auto;max-height:340px;object-fit:contain;border-radius:18px;box-shadow:0 20px 40px -20px #000}
.step-actions{margin-top:20px}

/* chart */
.chart-sec{padding:clamp(70px,9vw,120px) 0}
.chart-box{border-radius:24px;overflow:hidden;border:1px solid rgba(220,210,255,.2);background:rgba(10,6,30,.7);backdrop-filter:blur(10px)}
.chart-box iframe{display:block;width:100%;height:min(620px,75vh);border:0}
.chart-soon{position:relative;display:grid;justify-items:center;text-align:center;gap:12px;padding:clamp(50px,8vw,100px) 24px}
.chart-soon h3{font-size:clamp(1.6rem,3vw,2.6rem);margin:6px 0 0}
.chart-soon p{max-width:46ch;color:var(--muted);margin:0}
.cs-lines{position:absolute;inset:0;opacity:.35}
.cs-lines svg{width:100%;height:100%}
.cs-lines path{fill:none;stroke:var(--cat);stroke-width:2;stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw 5s var(--ease) infinite}
@keyframes draw{60%,100%{stroke-dashoffset:0}}

/* join */
.join{padding:clamp(70px,9vw,130px) 0 0;text-align:center}
.join-banner{width:min(96vw,1700px);margin:0 auto;border-radius:clamp(14px,2vw,28px);overflow:hidden;border:2px solid rgba(255,210,63,.6);box-shadow:0 0 0 8px rgba(255,210,63,.08),0 40px 100px -30px rgba(192,132,252,.6)}
.join-banner img{width:100%;height:auto}
.join-inner{padding-top:clamp(40px,6vw,80px);display:grid;justify-items:center}
.join-title{font-size:clamp(2.4rem,7vw,6.6rem);margin:0;line-height:1}
.join-inner .lede{margin:6px auto 0}
.ca-foot{margin-top:30px}
.foot{max-width:900px;margin:clamp(60px,8vw,110px) auto 0;padding:30px clamp(20px,5vw,40px) 40px;border-top:1px solid var(--line);font-size:.8rem;color:var(--muted)}
.foot b{color:var(--cat)}
.foot-jp{font:700 .9rem/1 var(--f-jp);letter-spacing:.28em;color:var(--sakura)}
.foot-jp .kanji-brush{letter-spacing:.08em}

/* lightbox */
.lightbox{border:0;padding:0;background:transparent;max-width:min(94vw,1200px);max-height:92vh;overflow:visible}
.lightbox::backdrop{background:rgba(6,4,20,.88);backdrop-filter:blur(8px)}
.lightbox img{max-width:min(94vw,1200px);max-height:82vh;width:auto;height:auto;border-radius:12px;margin:auto;box-shadow:0 30px 80px -20px #000}
.lightbox[open]{animation:lbIn .4s var(--pop)}
@keyframes lbIn{from{transform:scale(.92);opacity:0}}
.lb-cap{color:var(--ink);text-align:center;font:500 .85rem/1.5 var(--f-mono);margin:14px auto 0;max-width:70ch}
.lb-close{position:absolute;right:-8px;top:-8px;width:40px;height:40px;border-radius:50%;border:2px solid #1a1033;background:var(--cat);color:#1a1033;font-weight:700;cursor:pointer;z-index:2}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .hero-grid{grid-template-columns:1fr;text-align:left}
  .hero-art{order:-1}
  .seal{width:min(74vw,380px)}
  .doc-grid{grid-template-columns:1fr}
  .evidence{position:static;grid-template-columns:repeat(3,1fr)}
  .facts{grid-template-columns:repeat(2,1fr)}
  .step{grid-template-columns:auto 1fr}
  .step>img{display:none}
}
@media (max-width:700px){
  .nav-links{display:none}
  .nav-brand em{display:none}
  .hero{padding-top:92px}
  .title{font-size:clamp(3rem,17vw,5rem)}
  .actions .btn{flex:1 1 auto;justify-content:center}
  .ca{display:flex}
  .evidence{grid-template-columns:1fr 1fr}
  .evidence .ev-card:first-of-type{grid-column:1/-1}
  .st1{top:9%;right:4%}.st2{top:58%}
  .stamp{font-size:.62rem}
  .lore .hpin-card.lc{height:auto;min-height:0}
  .lore .lc-media{height:240px;flex:0 0 240px}
  .lore-head{padding:0 20px}
  .step{top:calc(76px + var(--i)*14px);min-height:auto;margin-bottom:8vh}
  .step-n{writing-mode:horizontal-tb;font-size:2.6rem}
  .step{grid-template-columns:1fr}
  .seal-tag{left:0;bottom:4%}
  .scroll-cue{display:none}
  .vow{min-height:auto}
  .tcat{width:60px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .fill .c{color:var(--paper-ink)}
  .vow-q .w{color:#fff}
  .grain{display:none}
  .lc:hover .lc-media img{transform:none}
}

.hero-torii::after{content:""}
@media (max-width:980px){.hero-torii{right:50%;transform:translateX(50%);width:110vw;opacity:.6}}
.m-item{opacity:0;transform:translateY(30px) scale(.97);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.m-item.in{opacity:1;transform:none}
.tcat{left:0;top:0}
.bio .jp{font:400 1.05em/1 var(--f-jp-disp);color:var(--sakura)}
.hero-grid>*{min-width:0}
@media (max-width:700px){
  .title{font-size:13.2vw}
  .actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .actions .btn-buy{grid-column:1/-1}
  .actions.center{grid-template-columns:1fr}
  .ca{width:100%}
  .kicker{font-size:.6rem;letter-spacing:.12em}
  .seal{width:min(70vw,320px)}
}
.step:nth-child(4) .btn-buy{background:#1a1033;color:#fff;border-color:#1a1033;box-shadow:5px 5px 0 var(--red)}
.paper-fig{margin:30px 0 0;padding:10px 10px 14px;background:#fff;border:2px solid var(--paper-ink);box-shadow:6px 6px 0 var(--paper-ink);transform:rotate(1.4deg);max-width:560px}
.paper-fig img{width:100%;height:auto}
.paper-fig figcaption{margin-top:8px;font:700 .66rem/1.3 var(--f-mono);letter-spacing:.08em;color:#6a5c80}
.join-title [data-roll]{display:inline-block;white-space:nowrap}.join-title{font-size:clamp(2.2rem,6.2vw,6rem)}
