@font-face{font-family:Unbounded;src:url(/fonts/unbounded.woff2) format("woff2");font-weight:200 900;font-display:swap}@font-face{font-family:Unbounded Outline;src:url(/fonts/unbounded-800-outline.woff2) format("woff2");font-weight:800;font-display:swap}@font-face{font-family:Zen Maru Sub;src:url(/fonts/zenmaru-900-sub.woff2) format("woff2");font-weight:900;font-display:swap}@font-face{font-family:JB Mono;src:url(/fonts/jbmono-500.woff2) format("woff2");font-weight:500;font-display:swap}:root{--bg: #070a1c;--glow1: rgba(255, 111, 168, .2);--glow2: rgba(61, 220, 255, .14);--ink: #eef1ff;--soft: #c5cbe8;--muted: #8f98bf;--line: rgba(190, 200, 255, .16);--pink: #ff8fb8;--cyan: #3ddcff;--accent: #3ddcff;--accent2: #ff8fb8;--pad: clamp(20px, 6vw, 104px);--pad-r: var(--pad);--font-display: "Unbounded", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", sans-serif;--font-outline: "Unbounded Outline", "Unbounded", sans-serif;--font-jp: "Zen Maru Sub", "Hiragino Maru Gothic ProN", "Hiragino Sans", "Yu Gothic", "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", sans-serif;--font-mono: "JB Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}*,*:before,*:after{box-sizing:border-box}html{background:#070a1c;-webkit-text-size-adjust:100%;scroll-behavior:auto;overflow-x:clip}main{overflow-x:clip}html.lenis,html.lenis body{height:auto}body{margin:0;color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:clip}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}ul{list-style:none;margin:0;padding:0}h1,h2,h3,p,figure{margin:0}:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}.jp{font-family:var(--font-jp);font-weight:900}.sky{position:fixed;inset:0;z-index:-3;background:radial-gradient(110% 80% at 80% 26%,var(--glow1),transparent 62%),radial-gradient(90% 70% at 8% 92%,var(--glow2),transparent 60%),var(--bg)}#gl{position:fixed;inset:0;z-index:-2;width:100%;height:100%;pointer-events:none}.grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.top{position:fixed;inset:0 0 auto;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:18px clamp(16px,3.2vw,44px);pointer-events:none}.top:before{content:"";position:absolute;inset:0 0 -18px;z-index:-1;background:linear-gradient(var(--bg) 20%,transparent);opacity:0;transition:opacity .4s;pointer-events:none}.scrolled .top:before{opacity:.92}.top a{pointer-events:auto}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:.01em}.brand img{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.35)}.brand i{font-style:normal;color:var(--muted)}.top-links{display:flex;gap:6px;font-size:13px}.top-links a{padding:7px 14px;border-radius:999px;color:var(--soft);background:#0a0d2273;border:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:color .2s,border-color .2s}.top-links a:hover{color:var(--ink);border-color:#eef1ff80}.rail{position:fixed;right:clamp(14px,2vw,30px);top:50%;z-index:20;display:flex;flex-direction:column;gap:26px;transform:translateY(-50%)}.rail-line{position:absolute;right:5px;top:6px;bottom:6px;width:1px;background:var(--line)}.rail-fill{position:absolute;inset:0;background:linear-gradient(var(--pink),var(--cyan));transform-origin:top;transform:scaleY(var(--played, 0))}.rail a{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;height:11px}.rail b{font-family:var(--font-mono);font-weight:500;font-size:10px;letter-spacing:.14em;color:var(--muted);opacity:0;transform:translate(6px);transition:opacity .25s,transform .25s,color .25s}.rail i{width:9px;height:9px;margin-right:1px;background:#0b0e24;border:1px solid rgba(238,241,255,.5);transform:rotate(45deg);transition:background .25s,border-color .25s,box-shadow .25s,transform .25s}.rail a:hover b,.rail a.on b{opacity:1;transform:none}.rail a.on b{color:var(--ink)}.rail a.on i{background:var(--ink);border-color:var(--ink);box-shadow:0 0 14px 2px #78dcffb3;transform:rotate(45deg) scale(1.25)}.btn{display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 22px;border-radius:999px;border:1px solid rgba(210,218,255,.28);background:#0a0d2266;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:15px;font-weight:600;white-space:nowrap;transition:transform .25s cubic-bezier(.2,.8,.2,1),border-color .2s,background .2s}.btn:hover{border-color:#eef1ffb3;transform:translateY(-2px)}.btn.solid{border-color:transparent;background:var(--ink);color:#0a0d22}.work .btn.solid{background:var(--accent)}.btn svg,.big-links svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.kicker{display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;color:var(--muted)}.kicker b{font-weight:500;color:var(--accent)}.kicker span{width:44px;height:1px;background:linear-gradient(90deg,var(--accent),transparent)}.hero{position:relative;display:flex;align-items:center;min-height:100vh;min-height:100svh;padding:110px var(--pad-r) 90px var(--pad)}.hero-inner{width:min(100%,880px)}.hero-tag{display:inline-flex;align-items:center;gap:10px;font-size:14px;letter-spacing:.06em;color:var(--soft)}.hero-tag .dot{width:8px;height:8px;background:var(--pink);transform:rotate(45deg);box-shadow:0 0 12px var(--pink)}.hero-name{margin:18px 0 0 -.04em;font-family:var(--font-jp);font-weight:900;font-size:clamp(58px,11.4vw,196px);line-height:1.04;letter-spacing:-.01em;white-space:nowrap}.hero-name .ch{display:inline-block;will-change:transform}.hero-name .uni{background:linear-gradient(115deg,#ff8fb8 5%,#c9a2ff,#4fe3ff 95%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-latin{margin-top:6px;font-family:var(--font-outline);font-weight:800;font-size:clamp(17px,3.5vw,58px);line-height:1.1;letter-spacing:.05em;color:transparent;-webkit-text-stroke:1px rgba(238,241,255,.5);white-space:nowrap}.hero-latin span{margin:0 .2em;-webkit-text-stroke:0;color:var(--pink);font-weight:300}.hero-lead{margin-top:clamp(22px,3.4vw,40px);max-width:27em;font-size:clamp(16px,1.45vw,20px);color:var(--soft)}.hero-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}.scroll-cue{position:absolute;left:var(--pad);bottom:30px;display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:10px;letter-spacing:.3em;color:var(--muted)}.scroll-cue span{position:relative;width:54px;height:1px;background:var(--line);overflow:hidden}.scroll-cue span:after{content:"";position:absolute;inset:0;background:var(--ink);animation:cue 2.2s cubic-bezier(.6,0,.2,1) infinite}@keyframes cue{0%{transform:translate(-100%)}55%,to{transform:translate(100%)}}.marquee{padding:8vh 0 10vh;overflow:hidden;transform:rotate(-2.2deg) scale(1.04)}.marquee-row{display:flex;white-space:nowrap;font-family:var(--font-display);font-weight:800;font-size:clamp(44px,8.6vw,148px);line-height:1.12;letter-spacing:-.01em;will-change:transform}.marquee-row i{display:inline-block;width:.3em;height:.3em;margin:0 .42em;background:linear-gradient(135deg,var(--pink),var(--cyan));transform:translateY(-.2em) rotate(45deg)}.marquee-row.ghost{font-family:var(--font-outline);color:transparent;-webkit-text-stroke:1px rgba(238,241,255,.38)}.marquee-row.ghost i{background:none;border:1px solid rgba(238,241,255,.38)}.work{position:relative}.stage{display:grid;align-items:center;gap:clamp(28px,4.5vw,80px);padding:0 var(--pad-r) 0 var(--pad)}.copy{position:relative}.copy:before{content:"";position:absolute;inset:-14% -16%;z-index:-1;background:radial-gradient(closest-side,var(--bg) 35%,transparent);opacity:.82;pointer-events:none}.copy h2,.repos-head h2{margin-top:20px;font-family:var(--font-display);font-weight:700;font-size:clamp(38px,5.3vw,86px);line-height:1.04;letter-spacing:-.025em}.copy h2 .jp{letter-spacing:0}.copy .sub{margin-top:16px;font-size:clamp(17px,1.5vw,21px);font-weight:600;color:var(--accent)}.desc{margin-top:14px;max-width:31em;color:var(--soft);text-wrap:pretty}.chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 22px;margin-top:26px;max-width:440px;font-size:14.5px}.chips li{display:flex;align-items:center;gap:11px;white-space:nowrap}.chips li:before{content:"";flex:none;width:6px;height:6px;background:var(--accent);transform:rotate(45deg);box-shadow:0 0 8px var(--accent)}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px}.visual{position:relative;width:100%;height:min(74vh,660px);perspective:1500px}.visual img{user-select:none;-webkit-user-drag:none}.fan{position:absolute;inset:0;transform-style:preserve-3d}.card{position:absolute;left:50%;top:44%;width:56%;height:auto;border-radius:12px;box-shadow:0 0 0 1px #ffffff38,0 34px 60px -24px #000000d9;will-change:transform}.shot{position:absolute;overflow:hidden;border-radius:14px;border:1px solid rgba(255,255,255,.2);box-shadow:0 40px 80px -30px #000000e6,0 0 60px -20px var(--accent);will-change:transform}.shot img{width:100%;height:auto}.shot figcaption{position:absolute;left:12px;top:12px;padding:3px 11px;border-radius:999px;background:#070a1cc7;font-size:12px;font-weight:600;color:var(--ink)}.shot-a{left:0;bottom:3%;width:60%}.shot-b{right:0;bottom:14%;width:50%}.screen{position:absolute;left:0;right:0;top:50%;border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,.24);box-shadow:0 50px 90px -30px #000000e6,0 0 110px -18px var(--accent2);transform-origin:50% 100%;will-change:transform}.screen img{width:100%;height:auto}.result{position:absolute;right:-3%;top:-4%;width:44%;height:auto;border-radius:10px;border:1px solid rgba(255,255,255,.28);box-shadow:0 30px 60px -20px #000000e6}.keys{position:absolute;left:2%;bottom:7%;display:flex;gap:8px}.keys kbd{display:grid;place-items:center;width:46px;height:46px;border-radius:10px;border:1px solid rgba(255,255,255,.26);border-bottom-width:4px;background:#0c0e26db;font-family:var(--font-mono);font-size:15px;color:var(--ink)}.keys kbd.hit{border-color:var(--accent);color:var(--accent);box-shadow:0 0 22px -2px var(--accent)}.b50{position:absolute;right:0;top:50%;width:64%;height:auto;border-radius:12px;border:1px solid rgba(255,255,255,.2);box-shadow:0 50px 90px -30px #000000e6;will-change:transform}.chat{position:absolute;left:2%;top:50%;width:min(330px,60%);border-radius:24px;overflow:hidden;border:1px solid rgba(183,163,255,.32);background:#0d102adb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 40px 80px -30px #000000e6,0 0 70px -24px var(--accent)}.chat-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.chat-head img{width:40px;height:40px;border-radius:50%}.chat-head strong{display:block;font-size:15px;line-height:1.3}.chat-head em{display:inline-block;margin-top:2px;padding:0 7px;border-radius:4px;background:#b7a3ff33;color:var(--accent);font-size:11px;font-style:normal;line-height:1.6}.chat-body{display:flex;flex-direction:column;gap:12px;padding:16px}.msg{display:flex;gap:8px;align-items:flex-start;font-size:14px}.msg.me{justify-content:flex-end}.msg.me span{padding:8px 13px;border-radius:16px 16px 4px;background:linear-gradient(135deg,#6c7cff,#9a7bff);color:#fff}.msg.me i{font-style:normal;color:#d5dcff}.msg .ava{flex:none;width:32px;height:32px;border-radius:50%}.msg .pic{overflow:hidden;border-radius:4px 14px 14px;border:1px solid var(--line)}.msg .pic img{width:112px;height:112px}.msg .pic.wide img{width:178px;height:132px;object-fit:cover;object-position:top}.repos{padding:22vh var(--pad-r) 5vh var(--pad)}.repos-head h2{font-family:var(--font-body);font-weight:800;letter-spacing:0;font-size:clamp(34px,4.6vw,68px);line-height:1.15}.repo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:48px;perspective:1400px}.repo-grid a{position:relative;display:flex;flex-direction:column;height:100%;min-height:168px;padding:22px 22px 18px;border-radius:18px;border:1px solid var(--line);background:#0b0e269e;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:border-color .25s,background .25s;transform-style:preserve-3d;will-change:transform}.repo-grid a:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(300px circle at var(--mx, 50%) var(--my, 0%),rgba(140,200,255,.16),transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none}.repo-grid a:hover{border-color:#bed7ff80;background:#0e1230c7}.repo-grid a:hover:after{opacity:1}.repo-grid h3{font-family:var(--font-mono);font-weight:500;font-size:16px;line-height:1.4;word-break:break-word}.repo-grid h3 em{margin-left:8px;padding:1px 8px;border-radius:999px;border:1px solid var(--line);font-family:var(--font-body);font-size:11px;font-style:normal;color:var(--muted);vertical-align:2px}.repo-grid p{margin:8px 0 18px;font-size:14px;line-height:1.65;color:var(--soft)}.repo-grid .more{grid-column:span 2}.repo-grid .more a{justify-content:center;background:linear-gradient(120deg,#ff8fb824,#3ddcff1f)}.repo-grid .more h3{font-family:var(--font-body);font-weight:800;font-size:clamp(22px,2.4vw,32px)}.repo-grid .more p{margin-bottom:0;font-family:var(--font-mono);font-size:13px}.repo-grid .more svg{position:absolute;right:24px;top:50%;width:30px;height:30px;margin-top:-15px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s cubic-bezier(.2,.8,.2,1)}.repo-grid .more a:hover svg{transform:translate(4px,-4px)}.lang{display:flex;align-items:center;gap:8px;margin-top:auto;font-family:var(--font-mono);font-size:12px;color:var(--muted)}.lang:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--lc)}.outro{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:3vh var(--pad-r) 26px var(--pad);overflow:hidden}.outro:before{content:"";position:absolute;inset:auto 0 0;height:70%;z-index:-1;background:linear-gradient(to top,rgba(255,146,180,.34),rgba(160,130,255,.16) 42%,transparent 82%);pointer-events:none}.outro-jp{font-size:clamp(54px,14.6vw,250px);line-height:1;white-space:nowrap;color:transparent;background:linear-gradient(100deg,#ff8fb842,#c9a2ff33 50%,#4fe3ff3d);-webkit-background-clip:text;background-clip:text;-webkit-text-stroke:1px rgba(238,241,255,.7);margin-left:-.04em;will-change:transform}.big-links{margin-top:clamp(28px,5vh,60px);border-bottom:1px solid var(--line)}.big-links a{display:flex;align-items:baseline;gap:18px;padding:clamp(16px,2.6vh,28px) 4px;border-top:1px solid var(--line);transition:padding .35s cubic-bezier(.2,.8,.2,1),background .35s}.big-links span{font-size:clamp(26px,4.4vw,62px);font-weight:800;line-height:1.15;font-family:var(--font-display)}.big-links em{font-family:var(--font-mono);font-size:13px;font-style:normal;color:var(--soft)}.big-links svg{align-self:center;width:clamp(20px,2.6vw,34px);height:clamp(20px,2.6vw,34px);margin-left:auto;transition:transform .35s cubic-bezier(.2,.8,.2,1)}.big-links a:hover{padding-left:20px;padding-right:20px;background:#ffffff0d}.big-links a:hover svg{transform:translate(4px,-4px)}.site-links{display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:26px;font-size:15px;font-weight:600}.site-links a{background:linear-gradient(currentColor,currentColor) 0 100% / 0 1px no-repeat;transition:background-size .3s}.site-links a:hover{background-size:100% 1px}.legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 24px;margin-top:clamp(40px,9vh,96px);font-size:12px;line-height:1.6;color:#eef1ff8c}.legal .icp{color:#eef1ff66;white-space:nowrap;transition:color .2s}.legal .icp:hover{color:#eef1ffcc}@media(min-width:900px){:root{--pad-r: calc(var(--pad) + 34px)}.work{height:270vh}.stage{position:sticky;top:0;height:100vh;grid-template-columns:minmax(0,5fr) minmax(0,7fr);overflow:clip}.work.flip .stage{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.work.flip .copy{order:2}.v-chart .screen{left:8%;right:8%;top:36%}.v-chart .result{right:-6%;top:-5%;width:37%}.v-chart .keys{left:50%;bottom:calc((min(74vh,660px) - 100vh)/2 + 10vh - 23px);display:grid;grid-template-columns:repeat(6,1fr);justify-items:center;gap:0;width:var(--keys-w, 76vh);transform:translate(-50%)}}@media(max-width:899px){.rail,.grain{display:none}.hero{align-items:flex-end;padding-bottom:96px}.scroll-cue{bottom:22px}.work{padding:14vh 0 6vh}.stage{grid-template-columns:minmax(0,1fr)}.visual{height:auto;aspect-ratio:1 / .92;margin-top:12px}.v-knd{aspect-ratio:1 / 1.42;margin-top:28px}.card{width:62%}.keys kbd{width:36px;height:36px;font-size:13px}.chat{width:min(300px,74%)}.b50{width:66%}.repos{padding:14vh var(--pad) 4vh}.repo-grid{grid-template-columns:minmax(0,1fr);margin-top:32px}.repo-grid a{min-height:0}.repo-grid .more{grid-column:auto}.repo-grid .more a{min-height:104px}.legal{flex-direction:column}}@media(max-width:420px){.top-links a{padding:6px 11px;font-size:12px}.brand span{display:none}.chips{gap:8px 12px;font-size:13.5px}}@media(min-width:900px)and (max-width:1180px){.repo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}html.js:not(.ready) .hero-inner,html.js:not(.ready) .scroll-cue{visibility:hidden}@supports not (overflow: clip){html,body{overflow-x:hidden}}@media(prefers-reduced-motion:reduce){.scroll-cue span:after{animation:none}}
