@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600&display=swap');
:root{--bg:#101010;--fg:#f2f2ed;--muted:#a5a5a0}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{margin:0;background:var(--bg);color:var(--fg);font-family:'DM Sans',Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{opacity:.65}a:focus-visible{outline:2px solid currentColor;outline-offset:7px}::selection{background:#d4ff60;color:#101010}.skip{position:fixed;top:-100px;left:20px;padding:12px;background:var(--fg);color:var(--bg);z-index:10}.skip:focus{top:10px}header{padding:28px 3%;display:flex;justify-content:space-between;align-items:center;font-size:13px;letter-spacing:-.02em}.brand{font-weight:600}nav{display:flex;gap:28px}.hero{padding:18px 3% 0;min-height:calc(100svh - 76px);display:flex;flex-direction:column}.hero h1{font-size:21.8vw;line-height:.82;letter-spacing:-.095em;font-weight:500;white-space:nowrap;margin:0 0 0 -.012em}.hero-center{display:flex;justify-content:space-between;align-items:center;flex:1;padding:70px 0 80px;min-height:380px}.hero h2{font-size:clamp(32px,4.8vw,76px);font-weight:450;line-height:1.07;letter-spacing:-.055em;margin:0}.vertical{writing-mode:vertical-rl;font-size:18px;letter-spacing:7px}.section{display:grid;grid-template-columns:22% 1fr;gap:4%;padding:150px 6%}.label{font-size:12px;font-weight:400;line-height:1.5;margin:6px 0 0;letter-spacing:-.01em}.large{font-weight:450;line-height:1.02;letter-spacing:-.065em;font-size:clamp(45px,6.8vw,106px);margin:0 0 65px}.copy{max-width:520px;font-size:17px;line-height:1.65;letter-spacing:-.02em}.copy p{color:var(--muted);margin:0 0 25px}.copy p:first-child{color:inherit}.offset{margin-left:25%;margin-top:65px}.link{display:inline-block;font-size:14px;line-height:1.5;letter-spacing:-.02em;margin-top:15px}.work{background:#e8e9e3;color:#121212;padding:65px 3% 70px}.work-top{display:flex;justify-content:space-between}.nexa{font-size:15.2vw;font-weight:500;line-height:.95;letter-spacing:-.085em;margin:70px 0 80px;white-space:nowrap}.work-intro{display:grid;grid-template-columns:1.2fr 1fr;gap:10%;padding:0 3%}.work-intro h3{font-size:clamp(30px,3.5vw,55px);line-height:1.1;font-weight:450;letter-spacing:-.05em;margin:0}.work .copy p{color:#55564e}.approaches{padding:100px 3% 80px;display:grid;grid-template-columns:repeat(3,1fr);gap:8%}.step{font-size:clamp(60px,8vw,120px);letter-spacing:-.075em;line-height:1;display:block;color:#777b6e}.approaches h3{font-size:32px;font-weight:450;letter-spacing:-.05em;margin:25px 0 20px}.approaches p{font-size:15px;line-height:1.6;letter-spacing:-.02em;max-width:310px;color:#55564e}.work-end{display:flex;justify-content:space-between;align-items:end;padding:0 3%;font-size:15px;line-height:1.5;letter-spacing:-.02em}.work-end p{margin:0}.philosophy{padding:130px 6% 140px}.philosophy-top{display:flex;justify-content:space-between}.philosophy h2{font-size:clamp(55px,8.3vw,130px);font-weight:450;line-height:1.05;letter-spacing:-.065em;margin:70px 0 100px}.muted{color:#777973}.philosophy-bottom{display:grid;grid-template-columns:1.2fr 1fr;gap:12%;align-items:center}.japanese{font-family:serif;font-size:clamp(80px,12vw,185px);letter-spacing:-.08em;white-space:nowrap;color:#d3d7ca}.copy h3{font-size:30px;letter-spacing:-.04em;line-height:1.2;font-weight:450;margin:0 0 28px}.beyond{padding-top:75px}.beyond .large{font-size:clamp(42px,5.8vw,90px)}.pursuits{display:grid;grid-template-columns:1fr 1fr;gap:65px 11%}.pursuits article:last-child{grid-column:2}.pursuits h3{font-weight:450;font-size:34px;line-height:1.15;letter-spacing:-.05em;margin:24px 0}.pursuits p{color:var(--muted);font-size:15px;line-height:1.7;letter-spacing:-.01em}.pursuits .label{color:var(--muted)}.closing{padding:70px 6% 110px}.closing h2{font-size:clamp(60px,12vw,190px);line-height:.98;letter-spacing:-.075em;font-weight:450;margin:55px 0 65px}.closing-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px}.closing-bottom p{font-size:17px;line-height:1.5;letter-spacing:-.02em;color:var(--muted);margin:0}footer{padding:40px 3%;display:flex;justify-content:space-between;align-items:end}.footer-name{font-size:35px;letter-spacing:-.065em}footer>div{display:flex;gap:55px;font-size:12px;color:var(--muted)}.bio-title{padding:75px 6% 60px}.bio-title h1{font-size:clamp(65px,11vw,165px);font-weight:450;letter-spacing:-.075em;line-height:.95;margin:45px 0}.contents{padding:0 6% 100px;display:grid;grid-template-columns:1fr 1fr;gap:20px 60px;max-width:1000px}.contents a{display:flex;gap:25px;font-size:15px}.contents span{color:var(--muted);font-size:12px}.chapter{display:grid;grid-template-columns:22% 1fr;gap:4%;padding:70px 6%}.chapter>div{max-width:700px}.chapter h2{font-size:clamp(36px,4vw,60px);line-height:1.1;letter-spacing:-.05em;font-weight:450;margin:0 0 35px}.chapter h3{font-weight:500;font-size:25px;margin:45px 0 25px}.chapter p{font-size:17px;line-height:1.8;color:var(--muted);letter-spacing:-.015em;margin:0 0 25px}.biography{padding-bottom:80px}@media(min-width:1700px){.section,.philosophy,.closing,.work{padding-left:max(6%,calc((100vw - 1500px)/2));padding-right:max(6%,calc((100vw - 1500px)/2))}.nexa{font-size:clamp(180px,13vw,280px)}}@media(max-width:900px){nav{gap:18px}.section{grid-template-columns:16% 1fr;padding:100px 5%;gap:5%}.offset{margin-left:10%}.philosophy{padding:100px 5%}.philosophy-bottom{gap:7%}.copy{font-size:16px}.approaches{gap:5%;padding-top:70px}.approaches h3{font-size:27px}.work-intro{gap:6%}.closing{padding:60px 5% 80px}.pursuits{gap:55px 7%}.chapter{grid-template-columns:12% 1fr;gap:5%}}@media(max-width:650px){header{padding:24px 5%;align-items:start}nav{gap:12px;font-size:11px;max-width:240px;flex-wrap:wrap;justify-content:flex-end}nav a:nth-child(3){display:none}.hero{padding:45px 5% 0;min-height:calc(85svh - 76px)}.hero h1{font-size:21vw}.hero-center{padding:65px 0;min-height:330px}.hero h2{font-size:37px;max-width:86%}.vertical{font-size:13px;letter-spacing:5px}.section{display:block;padding:80px 5%}.section>.label{margin-bottom:35px}.large{font-size:52px;margin-bottom:38px}.offset{margin:35px 0 0 12%}.copy{font-size:16px}.work{padding:45px 5% 50px}.work .label{font-size:10px}.nexa{font-size:14.5vw;margin:55px 0}.work-intro{display:block;padding:0}.work-intro h3{font-size:35px;margin-bottom:35px}.approaches{display:block;padding:20px 0 30px}.approaches article{margin:40px 0}.step{font-size:65px}.approaches h3{font-size:30px;margin:15px 0}.approaches p{max-width:100%;margin:0}.work-end{display:block;padding:0;font-size:14px}.work-end .link{margin-top:28px}.philosophy{padding:80px 5%}.philosophy h2{font-size:49px;margin:40px 0 55px}.philosophy-bottom{display:block}.japanese{font-size:100px;margin-bottom:50px}.beyond .large{font-size:44px}.pursuits{display:block}.pursuits article{margin-top:55px}.pursuits h3{font-size:32px;margin:16px 0}.closing{padding:25px 5% 65px}.closing h2{font-size:15vw;margin:40px 0}.closing-bottom{display:block}.closing-bottom p{font-size:15px}.closing-bottom .link{margin-top:30px}footer{padding:25px 5%}.footer-name{font-size:28px}footer>div{gap:20px;font-size:10px}.bio-title{padding:50px 5% 30px}.bio-title h1{font-size:66px}.contents{padding:0 5% 50px;grid-template-columns:1fr;gap:18px}.chapter{display:block;padding:45px 5%}.chapter>.label{display:block;margin-bottom:25px}.chapter h2{font-size:39px}.chapter p{font-size:16px}.biography{padding-bottom:35px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* A quiet, interactive identity reveal. */
.nexa-experience{margin:70px 0 0;position:relative}.nexa-portal{display:block;position:relative;min-height:440px;height:48vw;max-height:680px;background:#101310;color:#eef4e9;overflow:hidden;border-radius:2px;cursor:pointer;isolation:isolate}.nexa-portal:hover{opacity:1}.nexa-canvas{position:absolute;inset:0;width:100%;height:100%}.nexa-fallback{position:absolute;top:43%;left:50%;transform:translate(-50%,-50%);font-size:11vw;letter-spacing:-.075em;font-weight:500;white-space:nowrap}.nexa-portal.canvas-ready .nexa-fallback{opacity:0}.portal-caption{position:absolute;bottom:35px;left:4%;right:4%;display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:13px;letter-spacing:-.02em}.portal-caption>span:first-child{color:#a8b0a2}.portal-enter{display:flex;align-items:center;gap:28px}.portal-enter>span{font-size:23px;transition:transform .25s}.nexa-portal:hover .portal-enter>span,.nexa-portal:focus-visible .portal-enter>span{transform:translate(3px,-3px)}.replay{display:block;margin:20px 0 0 auto;padding:8px 0 8px 18px;font:inherit;font-size:12px;background:none;border:0;color:#51564c;cursor:pointer}.replay:hover{color:#101010}.replay:focus-visible{outline:2px solid currentColor;outline-offset:5px}@media(max-width:650px){.nexa-experience{margin-top:40px}.nexa-portal{min-height:350px;height:95vw}.portal-caption{bottom:25px;font-size:11px;align-items:start;flex-direction:column;gap:14px}.portal-enter{gap:18px}.portal-caption>span:first-child{font-size:10px}.nexa-fallback{font-size:10.5vw}}@media(prefers-reduced-motion:reduce){.portal-enter>span{transition:none}}

/* Delayed (lerped) scroll */
html.smooth{overflow-y:scroll}html.smooth body{overflow:hidden}
html.smooth #smooth{position:fixed;inset:0 0 auto 0;will-change:transform}
/* Reveal (js only) */
html.js .r{opacity:0;transform:translateY(28px);transition:opacity .9s ease-out,transform 1.1s cubic-bezier(.2,.8,.2,1)}
html.js .r.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html.js .r{opacity:1;transform:none;transition:none}}

/* Band */
.band{overflow:hidden;padding:28px 0;white-space:nowrap}
.band-track{display:inline-flex;align-items:baseline;gap:0;animation:band 38s linear infinite;will-change:transform}
.band-item{display:inline-flex;align-items:baseline;gap:22px;padding-right:72px}
.band-item small{font:300 11px/1 'DM Mono',monospace;letter-spacing:.04em;color:var(--muted);position:relative;top:-1.6em}
.b-mono{font:300 clamp(40px,5.2vw,76px)/1 'DM Mono',monospace;letter-spacing:-.02em}
.b-serif{font:400 clamp(44px,5.8vw,84px)/1 'Instrument Serif',serif;letter-spacing:-.01em}
.b-ital{font:italic 400 clamp(44px,5.8vw,84px)/1 'Instrument Serif',serif}
@keyframes band{to{transform:translateX(-25%)}}
@media(prefers-reduced-motion:reduce){.band-track{animation:none}}
/* Manifesto: dark, uppercase condensed serif, italic lowercase for the proper nouns, red seal signature */
.manifesto{background:var(--bg);color:var(--fg);padding:120px 3% 110px}
.m-label{display:flex;justify-content:space-between;font:300 12px/1 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.02em;margin:0 0 110px;color:var(--muted)}
.m-wrap{position:relative;padding-right:60px}
.m-text{font:400 clamp(44px,6.9vw,102px)/.96 'Instrument Serif',serif;text-transform:uppercase;letter-spacing:-.005em;text-align:justify;text-align-last:left;margin:0;hyphens:none}
.m-text em{font-style:italic;text-transform:none;font-size:1.08em;letter-spacing:-.01em}
.m-seal{display:inline-grid;place-items:center;vertical-align:-.04em;margin-left:.22em;width:.72em;height:.72em;border:2px solid #b4301c;color:#b4301c;font:500 .3em/1 'Shippori Mincho','Hiragino Mincho ProN',serif;text-transform:none;letter-spacing:.04em;transform:rotate(-4deg);opacity:0;transition:opacity .22s ease 2.4s,transform .22s cubic-bezier(.1,.9,.2,1) 2.4s}
.m-last{white-space:nowrap}
.woven .m-seal{display:inline-grid;place-items:center;vertical-align:-.04em;margin-left:.22em;width:.72em;height:.72em;border:2px solid #b4301c;color:#b4301c;font:500 .3em/1 'Shippori Mincho','Hiragino Mincho ProN',serif;text-transform:none;letter-spacing:.04em;transform:rotate(-4deg);opacity:0;transition:opacity .22s ease 2.4s,transform .22s cubic-bezier(.1,.9,.2,1) 2.4s}
.m-last{white-space:nowrap}
.m-tate{position:absolute;right:0;top:4px;writing-mode:vertical-rl;font:300 12px/1 'DM Mono',monospace;letter-spacing:.3em;color:var(--muted)}
.m-foot{display:flex;justify-content:space-between;margin-top:90px;font:400 13px/1 'DM Mono',monospace;text-transform:uppercase}
.m-foot .link{margin:0;font:inherit}
@media(max-width:650px){.manifesto{padding:70px 5% 70px}.m-label{margin-bottom:60px;font-size:10px}.m-wrap{padding-right:34px}.m-text{font-size:13vw;line-height:1;text-align:left}.m-foot{margin-top:50px}}
/* Hero rise */
html.js [data-rise]{overflow:hidden}
html.js [data-rise] i{display:inline-block;font-style:inherit;transform:translateY(105%);transition:transform 1.1s cubic-bezier(.16,.9,.2,1);transition-delay:var(--d)}
html.js [data-rise].up i{transform:none}
/* Brush reveal for 寺子屋 */
html.js [data-brush]{clip-path:inset(0 100% 0 0);transition:clip-path 1.3s cubic-bezier(.6,0,.15,1)}
html.js [data-brush].drawn{clip-path:inset(0 0 0 0)}
/* Links: underline sweep + arrow nudge */
.link{position:relative}
.link::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.link:hover{opacity:1}.link:hover::after{transform:scaleX(1)}
/* NEXAGROUP: always alive */
.nexa .nx{display:inline-block;animation:track 7s ease-in-out infinite alternate}
.nexa .nx b{display:inline-block;font-weight:inherit;transition:transform .18s ease-out}
.nexa .nx b.hit{transform:translateY(-.03em) skewX(-8deg)}
@keyframes track{from{letter-spacing:-.085em}to{letter-spacing:-.045em}}
@media(prefers-reduced-motion:reduce){.nexa .nx{animation:none}html.js [data-rise] i{transform:none;transition:none}html.js [data-brush]{clip-path:none;transition:none}}
/* Weave: letters arrive as threads from alternating directions, stroke first, then fill */
html.js [data-weave] .w{display:inline-block;overflow:hidden;padding:.12em 0;margin:-.12em 0;vertical-align:top}
html.js [data-weave] .w i{display:inline-block;font-style:inherit;transform:translateY(var(--dy)) scaleY(1.5);opacity:0;color:transparent;-webkit-text-stroke:1px currentColor;transition:transform 1s cubic-bezier(.15,.85,.2,1),opacity .4s linear,color .5s ease .45s;transition-delay:var(--d),var(--d),calc(var(--d) + .45s)}
html.js [data-weave].woven .w i{transform:none;opacity:1;color:inherit}
html.js [data-weave] .w i:nth-child(odd){--dy:.9em}html.js [data-weave] .w i:nth-child(even){--dy:-.9em}
@media(prefers-reduced-motion:reduce){html.js [data-weave] .w i{transform:none;opacity:1;color:inherit;transition:none}}
/* Glitch: black and white slices, 1.4s */
[data-glitch]{position:relative;display:inline-block}
[data-glitch]::before,[data-glitch]::after{content:attr(data-text);position:absolute;inset:0;pointer-events:none;opacity:0;white-space:nowrap}
[data-glitch]::before{color:#f2f2ed;background:#121212}
[data-glitch]::after{color:#121212;background:#e8e9e3;-webkit-text-stroke:1px #121212}
[data-glitch].glitching::before{opacity:1;animation:g1 1.4s steps(1,end) both}
[data-glitch].glitching::after{opacity:1;animation:g2 1.4s steps(1,end) both}
[data-glitch].glitching .nx{animation:g0 1.4s steps(1,end) both,track 7s ease-in-out infinite alternate}
@keyframes g0{0%,100%{transform:none}8%{transform:translateX(-6px) skewX(-5deg)}16%{transform:translateX(5px)}30%{transform:none}44%{transform:translateX(-9px) skewX(6deg)}52%{transform:translateX(3px)}64%{transform:none}80%{transform:translateX(-4px)}88%{transform:none}}
@keyframes g1{0%{clip-path:inset(12% 0 72% 0);transform:translateX(-18px)}10%{clip-path:inset(58% 0 20% 0);transform:translateX(14px)}22%{clip-path:inset(0 0 100% 0)}34%{clip-path:inset(30% 0 52% 0);transform:translateX(-10px)}46%{clip-path:inset(82% 0 4% 0);transform:translateX(22px)}58%{clip-path:inset(0 0 100% 0)}70%{clip-path:inset(44% 0 38% 0);transform:translateX(-26px)}82%{clip-path:inset(6% 0 86% 0);transform:translateX(8px)}92%{clip-path:inset(66% 0 18% 0);transform:translateX(-5px)}100%{clip-path:inset(0 0 100% 0);transform:none}}
@keyframes g2{0%{clip-path:inset(50% 0 26% 0);transform:translateX(16px)}12%{clip-path:inset(8% 0 78% 0);transform:translateX(-12px)}24%{clip-path:inset(70% 0 12% 0);transform:translateX(9px)}36%{clip-path:inset(0 0 100% 0)}48%{clip-path:inset(22% 0 60% 0);transform:translateX(-20px)}60%{clip-path:inset(88% 0 2% 0);transform:translateX(6px)}72%{clip-path:inset(0 0 100% 0)}84%{clip-path:inset(36% 0 48% 0);transform:translateX(14px)}100%{clip-path:inset(100% 0 0 0);transform:none}}
@media(prefers-reduced-motion:reduce){[data-glitch].glitching::before,[data-glitch].glitching::after,[data-glitch].glitching .nx{animation:none;opacity:0}}

/* Loader: a line that traces into an R */
html.loading{overflow:hidden}
#loader{position:fixed;inset:0;background:var(--bg);z-index:100;display:grid;place-items:center;transition:transform .9s cubic-bezier(.76,0,.2,1)}
#loader svg{overflow:visible}
#loader-path{stroke-dasharray:var(--len,600);stroke-dashoffset:var(--len,600)}
#loader.draw #loader-path{transition:stroke-dashoffset 1.7s cubic-bezier(.5,0,.15,1)}
#loader.drawn #loader-path{stroke-dashoffset:0}
#loader.done{transform:translateY(-100%)}
#loader.gone{display:none}
@media(prefers-reduced-motion:reduce){#loader-path{stroke-dashoffset:0}#loader{transition:none}}

/* For the record: a fact ledger with one redacted line */
.record{display:grid;grid-template-columns:22% 1fr;gap:4%;padding:120px 6% 60px}
.record h2{font-weight:450;line-height:1.02;letter-spacing:-.06em;font-size:clamp(40px,5.4vw,84px);margin:0 0 55px}
.record .ledger{margin:0;max-width:640px;border-top:1px solid rgba(242,242,237,.18)}
.record .ledger>div{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:16px 0;border-bottom:1px solid rgba(242,242,237,.18);align-items:center}
.record dt{font:300 12px/1.4 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.record dd{margin:0;font-size:17px;letter-spacing:-.02em}
.record .bar{display:inline-block;width:7.5em;height:.95em;background:var(--fg);vertical-align:-.1em}
.record .redacted dt{color:var(--fg)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.record-note{margin:36px 0 0;max-width:520px;font-size:17px;line-height:1.6;letter-spacing:-.02em;color:var(--muted)}
.record-note strong{color:var(--fg);font-weight:450}
@media(max-width:900px){.record{grid-template-columns:16% 1fr;gap:5%;padding:100px 5% 40px}}
@media(max-width:650px){.record{display:block;padding:70px 5% 30px}.record>.label{margin-bottom:30px}.record h2{font-size:40px;margin-bottom:35px}.record .ledger>div{grid-template-columns:72px 1fr;gap:16px}.record .bar{width:6em}}
