@font-face{font-family:Manrope;src:url('fonts/manrope-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('fonts/manrope-bold.woff2') format('woff2');font-weight:700 900;font-display:swap}
@font-face{font-family:JP;src:url('fonts/noto-jp.woff2') format('woff2');font-weight:400;font-display:swap}
:root{--paper:#f5f5f2;--ink:#141414;--acid:#d9ff43;--muted:#70716b;--pad:clamp(22px,3.2vw,64px);font-family:Manrope,Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;min-width:320px}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{color:inherit}
a,button,input{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid currentColor;outline-offset:6px}
::selection{color:var(--ink);background:var(--acid)}
.skip-link{position:fixed;top:-70px;left:var(--pad);z-index:100;background:var(--acid);padding:12px 18px}
.skip-link:focus{top:12px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-header{height:86px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;gap:24px}
.wordmark{font-size:31px;line-height:1;font-weight:700;letter-spacing:-.095em}
.wordmark span{color:#90aa25}
.site-header nav{display:flex;align-items:center;gap:clamp(22px,3.3vw,56px)}
.site-header nav a{font-size:14px;display:inline-block;position:relative;padding:10px 0;transition:opacity .3s}
.site-header nav a::after{content:'';position:absolute;left:0;right:0;bottom:3px;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.75,.2,1)}
.site-header nav a:hover::after,.site-header nav a:focus-visible::after{transform:scaleX(1)}
.hero{min-height:calc(100svh - 86px);padding:24px var(--pad) 0;display:flex;flex-direction:column;position:relative;overflow:hidden}
.hero-name{font-weight:800;font-size:clamp(150px,28.9vw,520px);letter-spacing:-.105em;line-height:.81;margin:22px 0 52px -1.4vw;display:flex;flex-direction:column;position:relative;width:80%;z-index:1}
.hero-name-line{display:flex;align-items:baseline;width:100%;position:relative;overflow:hidden;padding:.075em .06em .14em 0;margin:-.075em 0 -.14em}
.hero-name-word{display:block;width:fit-content;white-space:nowrap}
.hero-name-jp{position:absolute;top:calc(100% + 8px);left:1.4vw;font:400 clamp(13px,1vw,17px)/1.4 JP,sans-serif;letter-spacing:.15em}
.hero-asterisk{position:absolute;left:45%;top:8%;display:block;width:.47em;height:auto}
.hero-period{display:inline-block;position:relative;isolation:isolate}
.hero-period::before{content:'';position:absolute;z-index:-1;width:.31em;height:.31em;left:.03em;bottom:-.025em;border-radius:50%;background:var(--acid);animation:period-breath 7s ease-in-out infinite}
.hero-aside{position:absolute;right:var(--pad);top:clamp(86px,10vh,142px);width:26%;text-align:left}
.hero-aside [lang=ja]{display:block;font:13px/1.5 JP,sans-serif;letter-spacing:.09em}
.hero-aside p{font-size:clamp(20px,2.1vw,32px);line-height:1.35;letter-spacing:-.035em;margin:0 0 12px}
.hero-note{position:absolute;right:var(--pad);bottom:150px;width:clamp(80px,6.9vw,124px);aspect-ratio:1;background:var(--acid);display:grid;place-items:center;transform:rotate(6deg)}
.hero-note span{font:clamp(38px,3vw,54px)/1 JP,sans-serif}
@keyframes period-breath{50%{transform:scale(1.12)}}
.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:25px;font-size:15px;line-height:1.55;padding:24px 0 28px;margin-top:auto}
.hero-bottom p{margin:0}
.hero-bottom a{display:flex;align-items:center;gap:36px;white-space:nowrap}
.hero-bottom a span{font-size:28px;line-height:1;transition:transform .35s cubic-bezier(.2,.75,.2,1)}
.hero-bottom a:hover span,.hero-bottom a:focus-visible span{transform:translateY(5px)}

.gesture{min-height:100svh;padding:clamp(100px,11vw,170px) var(--pad);position:relative;overflow:hidden}
.gesture-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:clamp(30px,4vw,80px);align-items:center;min-height:70svh}
.gesture-title{font-size:clamp(70px,8.3vw,150px);letter-spacing:-.085em;line-height:1.12;font-weight:400;margin:clamp(55px,8vh,105px) 0 0;position:relative;z-index:1}
.gesture-word{display:block;width:fit-content;max-width:100%;padding:0;border:0;background:none;color:var(--ink);font:inherit;line-height:inherit;letter-spacing:inherit;white-space:nowrap;text-align:left;cursor:pointer;opacity:.66;transition:opacity .45s,transform .55s cubic-bezier(.2,.75,.2,1)}
.gesture-word:nth-child(2){margin-left:clamp(18px,4vw,65px)}
.gesture-word:nth-child(3){margin-left:clamp(6px,1vw,22px)}
.gesture-word.is-active{opacity:1;transform:translateX(10px)}
.gesture-word:hover,.gesture-word:focus-visible{opacity:1}
.gesture-visual{width:100%;max-width:540px;justify-self:end;align-self:center;margin-top:clamp(60px,9vh,110px)}
.gesture-canvas{position:relative;width:100%;aspect-ratio:1.05;background:#e9ebe5;overflow:hidden;isolation:isolate}
.canvas-grid{position:absolute;inset:0;background-image:linear-gradient(#14141418 1px,transparent 1px),linear-gradient(90deg,#14141418 1px,transparent 1px);background-size:16.66% 16.66%;opacity:.85;transition:opacity .8s}
.canvas-frame{position:absolute;inset:11%;border:1px solid #14141491;transform:rotate(-4deg);opacity:1;transition:opacity .7s,transform .8s}
.canvas-piece{position:absolute;display:block;background:var(--ink);transition:left .8s cubic-bezier(.2,.75,.2,1),top .8s cubic-bezier(.2,.75,.2,1),width .8s cubic-bezier(.2,.75,.2,1),height .8s cubic-bezier(.2,.75,.2,1),opacity .55s,transform .8s cubic-bezier(.2,.75,.2,1)}
.canvas-piece-a{left:13%;top:25%;width:39%;height:9%;transform:rotate(-9deg)}
.canvas-piece-b{left:62%;top:17%;width:10%;height:43%;transform:rotate(7deg)}
.canvas-piece-c{left:27%;top:52%;width:42%;height:8%;transform:rotate(10deg)}
.canvas-piece-d{left:12%;top:73%;width:18%;height:6%;transform:rotate(-14deg);opacity:.65}
.canvas-piece-e{left:75%;top:68%;width:11%;height:12%;transform:rotate(12deg);opacity:.65}
.canvas-piece-lime{left:50%;top:67%;width:18%;height:18%;background:var(--acid);transform:rotate(-9deg)}
.gesture-canvas[data-state=reduce] .canvas-grid{opacity:.22}
.gesture-canvas[data-state=reduce] .canvas-frame{opacity:.18;transform:rotate(0)}
.gesture-canvas[data-state=reduce] .canvas-piece-a{left:17%;top:27%;transform:rotate(0)}
.gesture-canvas[data-state=reduce] .canvas-piece-b{left:65%;top:25%;transform:rotate(0)}
.gesture-canvas[data-state=reduce] .canvas-piece-c{left:17%;top:48%;transform:rotate(0)}
.gesture-canvas[data-state=reduce] .canvas-piece-d,.gesture-canvas[data-state=reduce] .canvas-piece-e{opacity:0;transform:scale(.4)}
.gesture-canvas[data-state=reduce] .canvas-piece-lime{left:48%;top:65%;transform:rotate(0)}
.gesture-canvas[data-state=form] .canvas-grid,.gesture-canvas[data-state=form] .canvas-frame{opacity:0}
.gesture-canvas[data-state=form] .canvas-piece-a{left:16%;top:22%;width:58%;height:13%;transform:rotate(0)}
.gesture-canvas[data-state=form] .canvas-piece-b{left:16%;top:44%;width:12%;height:37%;transform:rotate(0)}
.gesture-canvas[data-state=form] .canvas-piece-c{left:36%;top:44%;width:38%;height:10%;transform:rotate(0)}
.gesture-canvas[data-state=form] .canvas-piece-d,.gesture-canvas[data-state=form] .canvas-piece-e{opacity:0;transform:scale(.4)}
.gesture-canvas[data-state=form] .canvas-piece-lime{left:57%;top:64%;width:21%;height:21%;transform:rotate(0)}
.gesture-caption{margin:18px 0 0;min-height:1.6em;font-size:14px;line-height:1.6;color:var(--muted);text-align:right}
.approach{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(60px,9vw,190px);padding:clamp(130px,11vw,240px) var(--pad) clamp(140px,11vw,240px);background:var(--paper)}
.approach-intro{position:sticky;top:clamp(32px,7vh,90px);align-self:start}
.approach-intro h2{margin:0;font-size:clamp(74px,6.6vw,134px);font-weight:800;letter-spacing:-.075em;line-height:1.03}
.approach-intro p{margin:clamp(45px,5vw,95px) 0 0;color:var(--muted);font-size:clamp(19px,1.6vw,32px);line-height:1.6;letter-spacing:-.035em}
.approach-form{position:relative;margin-top:clamp(70px,7vw,125px);width:min(68%,350px);aspect-ratio:1;background:#e9ebe5;overflow:hidden;isolation:isolate}
.approach-form-grid{position:absolute;inset:0;background-image:linear-gradient(#1414141c 1px,transparent 1px),linear-gradient(90deg,#1414141c 1px,transparent 1px);background-size:20% 20%;transition:opacity .7s}
.approach-form-frame{position:absolute;left:20%;top:19%;width:60%;height:61%;border:1px solid var(--ink);transform:rotate(-5deg);transition:transform .8s,opacity .8s}
.approach-form-bar{position:absolute;background:var(--ink);transition:left .8s,top .8s,width .8s,height .8s,transform .8s}
.approach-form-bar-a{left:23%;top:29%;width:35%;height:7%;transform:rotate(-6deg)}
.approach-form-bar-b{left:43%;top:48%;width:26%;height:7%;transform:rotate(5deg)}
.approach-form-mark{position:absolute;left:60%;top:62%;width:18%;aspect-ratio:1;background:var(--acid);transform:rotate(-8deg);transition:left .8s,top .8s,width .8s,transform .8s}
.approach-form[data-step='2'] .approach-form-grid{opacity:.3}
.approach-form[data-step='2'] .approach-form-frame{transform:rotate(0)}
.approach-form[data-step='2'] .approach-form-bar-a{left:23%;top:28%;width:53%;transform:rotate(0)}
.approach-form[data-step='2'] .approach-form-bar-b{left:23%;top:45%;width:37%;transform:rotate(0)}
.approach-form[data-step='2'] .approach-form-mark{left:59%;top:57%;transform:rotate(0)}
.approach-form[data-step='3'] .approach-form-grid{opacity:0}
.approach-form[data-step='3'] .approach-form-frame{transform:rotate(0);opacity:.55}
.approach-form[data-step='3'] .approach-form-bar-a{left:24%;top:27%;width:51%;height:10%;transform:rotate(0)}
.approach-form[data-step='3'] .approach-form-bar-b{left:24%;top:46%;width:39%;height:8%;transform:rotate(0)}
.approach-form[data-step='3'] .approach-form-mark{left:57%;top:60%;width:20%;transform:rotate(0)}
.approach-steps{display:flex;flex-direction:column;gap:clamp(110px,10vw,220px);list-style:none;margin:0;padding:0}
.approach-step h3{margin:0 0 clamp(30px,3vw,60px);font-size:clamp(48px,4.2vw,82px);font-weight:400;letter-spacing:-.065em;line-height:1.05}
.approach-step p{max-width:38em;margin:0;color:var(--muted);font-size:clamp(18px,1.6vw,32px);line-height:1.6;letter-spacing:-.035em}
.about{background:var(--ink);color:var(--paper);padding:clamp(130px,16vh,220px) var(--pad);display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1fr);gap:clamp(60px,8vw,150px)}
.portrait{margin:0;align-self:start;overflow:hidden;aspect-ratio:.79;background:#282828}
.portrait img{width:100%;height:100%;display:block;object-fit:cover;filter:grayscale(1);transform:scale(1.035)}
.about-content{padding-top:4vh}
.about-ja{font:14px/1.5 JP,sans-serif;letter-spacing:.1em;color:#aaa9a2}
.about-content h2{font-size:clamp(80px,10.2vw,170px);font-weight:400;letter-spacing:-.075em;line-height:.85;margin:clamp(60px,9vh,130px) 0 clamp(42px,6vh,90px)}
.about-content h2 span{color:var(--acid)}
.about-lead{font-size:clamp(20px,2vw,30px);line-height:1.45;letter-spacing:-.03em;max-width:650px;margin:0}
.about-method{font-size:16px;line-height:1.6;color:#aaa9a2;max-width:440px;margin:35px 0 0}
.about-path{display:grid;gap:27px;margin-top:clamp(80px,12vh,150px);font-size:14px}
.about-path>div{display:grid;grid-template-columns:100px 1fr;gap:25px}
.about-path>div>span:first-child{color:#aaa9a2}
.about-path a{width:fit-content;transition:color .3s,transform .3s}
.about-path a:hover{color:var(--acid);transform:translateX(5px)}
.card-block{grid-area:card;width:min(100%,352px);min-width:0;justify-self:end;align-self:end}
.business-card{width:100%;aspect-ratio:1.8;background:transparent;border:0;padding:0;display:block;cursor:pointer;position:relative;perspective:1200px;transform:rotate(-5deg) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .55s cubic-bezier(.2,.75,.2,1)}
.card-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.2,.75,.2,1)}
.business-card[aria-pressed=true] .card-inner{transform:rotateY(180deg)}
.card-face{position:absolute;inset:0;backface-visibility:hidden;display:block;overflow:hidden;box-shadow:0 28px 45px -25px #000a;container-type:inline-size;font-family:Manrope,Arial,sans-serif}
.card-front{background:var(--acid);color:var(--ink)}
.card-front-name{position:absolute;left:4.8%;top:5%;font-size:28.5cqw;font-weight:800;letter-spacing:-.105em;line-height:.81;text-align:left}
.card-front-name span{display:block}
.card-front-jp{margin-top:1cqw;font:400 2.6cqw/1.3 JP,sans-serif;letter-spacing:.08em;white-space:nowrap}
.card-back{transform:rotateY(180deg);border:1px solid #444;background:#171717;color:#6d6c67;text-align:left}
.card-back-name{position:absolute;left:10%;top:25%;font-size:4.8cqw;font-weight:700;letter-spacing:-.01em;line-height:1;white-space:nowrap}
.card-back-details{position:absolute;left:10%;top:38%;display:grid;gap:1.6cqw;font-size:3cqw;font-weight:400;line-height:1;letter-spacing:.08em;white-space:nowrap}
.card-back-rule{display:block;width:6.7cqw;margin-block:1.2cqw;border-top:1px solid #777672}
.card-back-tagline-rule{position:absolute;left:10%;top:81%;width:6.7%;border-top:1px solid #777672}
.card-back-tagline{position:absolute;left:10%;bottom:9.5%;font-size:2.5cqw;font-weight:400;letter-spacing:.07em;line-height:1;white-space:nowrap}
.card-back-logo{position:absolute;right:7%;top:28%;display:block;width:27%;height:auto}
.card-actions{display:flex;justify-content:space-between;gap:15px;margin-top:30px;font-size:12px;color:#aaa9a2}
.card-actions a{color:var(--paper);transition:color .3s}
.card-actions a:hover{color:var(--acid)}
[hidden]{display:none!important}
.contact{position:relative;width:100%;min-height:100vh;min-height:100svh;background:var(--paper);overflow:hidden}
.contact-wash{position:absolute;inset:0;background:var(--acid);clip-path:circle(150% at 85% 15%)}
.js .contact-wash{clip-path:circle(1.5% at 85% 15%)}
.js.no-motion-script .contact-wash{clip-path:circle(150% at 85% 15%)}
.contact-content{position:relative;z-index:1;padding:clamp(56px,7vh,100px) var(--pad) 30px;min-height:100vh;min-height:100svh;display:flex;flex-direction:column}
.contact-title{display:flex;flex-direction:column;width:100%;font-size:clamp(92px,14vw,230px);letter-spacing:-.09em;line-height:.88;font-weight:400;margin:0}
.contact-title span{display:block;width:max-content;max-width:100%}
.contact-title span:last-child{align-self:flex-end}
.contact-bottom{margin-top:auto;padding-top:clamp(20px,3vh,40px);display:grid;grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr);grid-template-areas:"details return card";align-items:end;column-gap:clamp(20px,3vw,48px);font-size:14px}
.contact-details{grid-area:details;display:flex;flex-direction:column;gap:8px;width:min(100%,440px);min-width:0}
.contact .card-actions{margin-top:20px;color:#494b3e}
.contact .card-actions a{color:var(--ink)}
.contact .card-actions a:hover{color:#5a691e}
.contact-return{grid-area:return;align-self:end;justify-self:center;white-space:nowrap}
.contact-email-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px 18px}
.contact-email{width:max-content;max-width:100%;font-size:clamp(19px,2vw,30px);letter-spacing:-.04em;transition:opacity .3s}
.contact-email:hover{opacity:.56}
.copy-email{padding:3px 0;border:0;border-bottom:1px solid currentColor;background:none;cursor:pointer;font-size:14px;line-height:1.5;transition:opacity .3s}
.copy-email:hover{opacity:.56}
.copy-status{display:block;order:-1;min-height:1.5em;font-size:12px;line-height:1.5}
.contact-return>a{font-size:14px;transition:opacity .3s}
.contact-return>a:hover{opacity:.56}

.cv{margin-top:clamp(30px,4vh,55px);font-size:14px;max-width:440px}
.cv .about-path{margin-top:0;gap:20px}

@media(max-width:1050px){
  .hero-note{bottom:130px}
  .gesture-layout{grid-template-columns:1fr;min-height:0}
  .gesture-title{font-size:clamp(70px,10vw,115px)}
  .gesture-visual{width:min(60%,500px);justify-self:end;margin-top:20px}
  .approach{gap:6vw}
  .approach-intro h2{font-size:clamp(70px,6.8vw,80px)}
  .approach-step h3{font-size:clamp(46px,4.5vw,60px)}
  .about{gap:5vw}
  .about-content h2{font-size:10vw}
}
@media(max-width:850px){
  .contact-bottom{grid-template-areas:"card card card" "details return .";row-gap:clamp(20px,3vh,34px)}
  .card-block{width:min(80%,352px)}
}
@media(max-width:760px){
  :root{--pad:22px}
  .site-header{height:70px}
  .wordmark{font-size:28px}
  .site-header nav{gap:18px}
  .site-header nav a{font-size:14px}
  .hero{min-height:calc(100svh - 70px);padding-top:28px;padding-bottom:26px}
  .hero-name{font-size:31vw;line-height:.82;letter-spacing:-.11em;width:100%;margin:100px 0 90px -5px}
  .hero-name-jp{left:5px}
  .hero-asterisk{left:47%;top:0;width:.58em}
  .hero-aside{top:32px;right:var(--pad);width:auto;text-align:right}
  .hero-aside [lang=ja]{font-size:11px}
  .hero-aside p{font-size:17px;line-height:1.2;margin-bottom:7px}
  .hero-note{right:var(--pad);bottom:112px;width:68px}
  .hero-note span{font-size:31px}
  .hero-bottom{font-size:13px;padding:20px 0 25px}
  .hero-bottom a{gap:11px}
  .hero-bottom a span{font-size:23px}
  .gesture{min-height:0;padding:100px var(--pad)}
  .gesture-title{font-size:clamp(64px,12vw,102px);line-height:1.2;margin-top:80px}
  .gesture-word:nth-child(3){margin-left:0}
  .gesture-visual{width:min(100%,440px);justify-self:center;margin-top:30px}
  .approach{display:block;padding:110px var(--pad) 130px}
  .approach-intro{position:static}
  .approach-intro h2{font-size:clamp(60px,9.3vw,88px)}
  .approach-intro p{margin-top:45px;font-size:clamp(19px,3.2vw,24px)}
  .approach-form{display:none}
  .approach-steps{margin-top:80px;gap:105px}
  .approach-step::before{content:'';display:block;width:20px;height:20px;margin-bottom:28px;background:var(--acid);border-radius:50%;opacity:.35;transform:scale(.6) rotate(-10deg);transform-origin:left center;transition:opacity .55s,transform .7s cubic-bezier(.2,.75,.2,1)}
  .approach-step:nth-child(2)::before{width:72px;height:12px;border-radius:0}
  .approach-step:nth-child(3)::before{width:48px;height:48px;border-radius:0}
  .approach-step.is-current::before{opacity:1;transform:scale(1) rotate(0)}
  .approach-step h3{font-size:clamp(46px,6.4vw,66px)}
  .approach-step p{font-size:clamp(18px,3vw,22px)}
  .about{grid-template-columns:1fr;gap:70px;padding:110px var(--pad) 130px}
  .portrait{width:min(84%,550px);aspect-ratio:.82}
  .about-content{padding:0}
  .about-content h2{font-size:clamp(80px,13vw,130px);margin:65px 0 55px}
  .about-lead{font-size:clamp(21px,4vw,29px)}
  .contact,.contact-content{min-height:100vh;min-height:100svh}
  .contact-content{padding-top:80px;padding-bottom:26px}
  .contact-title{font-size:clamp(76px,14vw,118px)}
  .contact-bottom{padding-top:22px}
}
@media(max-width:700px){
  .contact-bottom{grid-template-columns:minmax(0,1fr);grid-template-areas:"card" "details" "return"}
}
@media(max-width:480px){
  .site-header nav{gap:14px}
  .site-header nav a{font-size:14px}
  .hero-name{font-size:31vw;margin-top:140px;margin-bottom:112px}
  .hero-bottom p{max-width:175px}
  .hero-bottom a{white-space:nowrap}
  .gesture{padding:90px var(--pad)}
  .gesture-title{font-size:16.5vw;line-height:1.26;letter-spacing:-.08em;margin-top:70px}
  .gesture-word:nth-child(3){font-size:15.3vw}
  .gesture-visual{margin-top:16px}
  .gesture-caption{text-align:left}
  .approach{padding-top:100px;padding-bottom:110px}
  .approach-intro h2{font-size:clamp(56px,12vw,66px)}
  .approach-intro p{font-size:17px}
  .approach-steps{gap:90px}
  .approach-step h3{font-size:clamp(40px,9.5vw,55px)}
  .approach-step p{font-size:16px}
  .portrait{width:90%}
  .about-content h2{font-size:16vw}
  .about-path>div{grid-template-columns:78px 1fr;gap:14px;font-size:13px}
  .card-actions{font-size:12px}
  .contact-title{font-size:17.5vw}
  .contact .card-actions{flex-direction:column;gap:4px;margin-top:15px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .js .contact-wash{clip-path:circle(150% at 85% 15%)}
}
