@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/cormorant-garamond-portfolio.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-variable-latin.woff2) format("woff2")}@font-face{font-family:Noto Sans JP;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-jp-portfolio.woff2) format("woff2")}@font-face{font-family:"Noto Serif JP";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-jp-portfolio.woff2) format("woff2")}:root{color-scheme:light;--background: #f5f4f0;--background-light: #f8f7f4;--text: #1b1b1b;--muted: #696862;--line: #bebdb7;--line-light: #d7d6d0;--dark: #292929;--white: #ffffff;--display: "Cormorant Garamond", "Times New Roman", serif;--serif-ja: "Noto Serif JP", "Yu Mincho", YuMincho, "Hiragino Mincho ProN", serif;--sans: "Inter", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;--content: 1312px;--page-gutter: 64px;--ease: cubic-bezier(.22, 1, .36, 1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:18px}body{margin:0;overflow-x:clip;background:var(--background);color:var(--text);font-family:var(--sans);font-size:12px;font-weight:450;line-height:1.75;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body.is-menu-open{overflow:hidden}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit}img,svg{display:block;max-width:100%}h1,h2,h3,p{margin:0}:focus-visible{outline:1px solid currentColor;outline-offset:4px}.skip-link{position:fixed;z-index:200;top:12px;left:12px;padding:8px 12px;transform:translateY(-160%);background:var(--dark);color:var(--white)}.skip-link:focus{transform:translateY(0)}.top-panel{position:relative;min-height:402px;border-bottom:1px solid var(--line-light)}.site-header,.hero{width:min(calc(100% - (var(--page-gutter) * 2)),var(--content));margin-inline:auto}.site-header{position:absolute;z-index:20;inset:0 0 auto;height:124px}.desktop-nav{position:absolute;top:25px;left:0;display:grid;width:138px;padding-right:50px;border-right:1px solid var(--line);gap:5px}.desktop-nav a{width:max-content;padding-block:1px;font-size:9px;font-weight:550;line-height:1.55;letter-spacing:.12em}.desktop-nav a,.hero__links a,.mobile-menu a{position:relative}.desktop-nav a:after,.hero__links a:after,.mobile-menu a:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:"";transform:scaleX(0);transform-origin:right;background:currentColor;transition:transform .4s var(--ease)}.desktop-nav a:hover:after,.desktop-nav a:focus-visible:after,.hero__links a:hover:after,.hero__links a:focus-visible:after,.mobile-menu a:hover:after,.mobile-menu a:focus-visible:after{transform:scaleX(1);transform-origin:left}.site-brand{position:absolute;top:17px;left:50%;display:grid;justify-items:center;transform:translate(-50%);line-height:1;white-space:nowrap}.site-brand__name{font-family:var(--display);font-size:30px;line-height:.95;letter-spacing:.11em}.site-brand__role{margin-top:8px;font-size:8px;font-weight:550;letter-spacing:.11em}.site-brand__location{margin-top:7px;font-size:8px;letter-spacing:.01em}.desktop-actions{position:absolute;top:25px;right:0;display:flex;gap:12px}.desktop-actions a,.mobile-menu-toggle{display:grid;width:40px;height:40px;border:1px solid #77756f;border-radius:50%;background:transparent;place-items:center}.desktop-actions a{transition:background-color .35s ease,color .35s ease}.desktop-actions a:hover,.desktop-actions a:focus-visible{background:var(--dark);color:var(--white)}.desktop-actions svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.1}.mobile-menu-toggle,.mobile-menu{display:none}.hero{position:relative;min-height:401px}.hero__center{position:absolute;top:138px;left:50%;display:grid;justify-items:center;transform:translate(-50%);white-space:nowrap}.hero h1{font-family:var(--display);font-size:clamp(88px,8.75vw,126px);font-weight:400;line-height:.72;letter-spacing:-.035em}.hero__center p:first-of-type{margin-top:30px;font-family:var(--display);font-size:14px;line-height:1}.hero__center p:last-of-type{margin-top:9px;font-family:var(--display);font-size:13px;line-height:1}.hero__rule{width:1px;height:61px;margin-top:27px;background:var(--line)}.hero__links{position:absolute;right:0;bottom:25px;display:flex;align-items:center;gap:17px;font-size:9px;white-space:nowrap}.hero__links span{color:var(--muted)}.intro{min-height:89px;border-bottom:1px solid var(--line-light)}.intro__inner{position:relative;display:flex;width:min(calc(100% - (var(--page-gutter) * 2)),1040px);min-height:89px;margin-inline:auto;align-items:center}.intro p:first-child{font-size:10px;line-height:2.05}.works{padding:64px 0 56px}.section-heading{text-align:center}.section-heading h2{font-family:var(--display);font-size:24px;font-weight:400;line-height:1;letter-spacing:.12em}.section-heading p{margin-top:7px;font-size:8px;line-height:1;letter-spacing:.07em}.section-heading--compact{height:51px;padding-top:3px}.work-list{display:grid;width:min(calc(100% - (var(--page-gutter) * 2)),1176px);margin-inline:auto;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px}.work-item{min-width:0}.work-item>a{display:block;overflow:hidden;aspect-ratio:16 / 9}.work-item img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .45s var(--ease)}.work-item>a:hover img,.work-item>a:focus-visible img{transform:scale(1.01)}.work-item>a:focus-visible{outline-offset:3px}.work-item__copy{padding-top:9px}.work-item h3{overflow:hidden;font-size:12px;font-weight:550;line-height:1.35;letter-spacing:.01em;text-overflow:ellipsis;white-space:nowrap}.work-item__category{margin-top:4px;color:var(--muted);font-size:8px;line-height:1.35}.work-item__description{max-width:282px;margin-top:5px;font-size:9px;line-height:1.6}.work-item__title-link,.work-item__site-link{position:relative;display:inline-block}.work-item__site-link{margin-top:7px;padding-bottom:2px;font-size:8px;line-height:1.4;letter-spacing:.03em}.work-item__title-link:after,.work-item__site-link:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:"";transform:scaleX(0);transform-origin:right;background:currentColor;transition:transform .4s var(--ease)}.work-item__title-link:hover:after,.work-item__title-link:focus-visible:after,.work-item__site-link:hover:after,.work-item__site-link:focus-visible:after{transform:scaleX(1);transform-origin:left}.message-banner{position:relative;width:min(calc(100% - (var(--page-gutter) * 2)),1100px);height:190px;margin:0 auto 110px;overflow:hidden;color:var(--white)}.message-banner__media,.message-banner__overlay{position:absolute;inset:0;width:100%;height:100%}.message-banner__media{margin:0}.message-banner__media img{width:100%;height:100%;object-fit:cover;display:block}.message-banner__overlay{background:#14141461}.message-banner__copy{position:relative;z-index:1;display:flex;height:100%;align-items:center;padding-inline:72px;gap:48px}.message-banner__copy>span{width:1px;height:103px;background:#ffffffb8}.message-banner__copy p{font-family:var(--serif-ja);font-size:22px;font-weight:500;line-height:1.75;letter-spacing:.04em}.message-banner__copy small{display:block;margin-top:8px;font-size:9px;letter-spacing:.06em}.skills-section,.profile-section,.contact-section{padding-block:88px;border-top:1px solid var(--line-light)}.skills-section>.section-heading,.profile-section>.section-heading,.contact-section>.section-heading{margin-bottom:58px}.skill-list{display:grid;width:min(calc(100% - (var(--page-gutter) * 2)),1040px);margin-inline:auto;grid-template-columns:repeat(3,minmax(0,1fr))}.skill-list article{min-height:116px;padding-inline:48px}.skill-list article+article{border-left:1px solid var(--line-light)}.skill-list h3{font-family:var(--serif-ja);font-size:17px;font-weight:500;line-height:1.4}.skill-list p{margin-top:14px;color:var(--muted);font-size:10px;line-height:1.9}.technology-list{display:flex;margin:45px auto 0;padding:0;flex-wrap:wrap;justify-content:center;gap:7px;list-style:none}.technology-list li{padding:5px 10px;border:1px solid var(--line-light);border-radius:1px;color:var(--muted);font-size:8px;line-height:1;letter-spacing:.04em}.profile-layout{display:grid;width:min(calc(100% - (var(--page-gutter) * 2)),920px);margin-inline:auto;align-items:center;grid-template-columns:280px minmax(0,1fr);gap:92px}.profile-portrait{width:280px;aspect-ratio:1;overflow:hidden;border:1px solid var(--line-light);background:#eceae5}.profile-portrait img{display:block;width:100%;height:100%;object-fit:cover}.profile-copy h3{font-family:var(--serif-ja);font-size:24px;font-weight:500;line-height:1.4}.profile-copy p{margin-top:24px;font-size:11px;line-height:2.15}.contact-section{text-align:center}.contact-section__copy{color:var(--muted);font-size:11px;line-height:2}.contact-form{position:relative;width:min(calc(100% - (var(--page-gutter) * 2)),720px);margin:42px auto 0;text-align:left}.contact-form__trap{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.contact-form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.contact-field label{display:flex;align-items:baseline;justify-content:space-between;font-size:10px;line-height:1.4;letter-spacing:.03em}.contact-field label span{color:var(--muted);font-size:8px;letter-spacing:.08em}.contact-field input,.contact-field textarea{width:100%;border:0;border-radius:0;background:transparent;color:var(--text);font:inherit}.contact-field input{height:43px;padding:8px 0;border-bottom:1px solid var(--line)}.contact-field--message{margin-top:32px}.contact-field textarea{min-height:148px;margin-top:10px;padding:14px;resize:vertical;border:1px solid var(--line);line-height:1.8}.contact-field input:hover,.contact-field textarea:hover{border-color:var(--muted)}.contact-field input:focus-visible,.contact-field textarea:focus-visible{border-color:var(--text);outline:1px solid var(--text);outline-offset:2px}.contact-form__footer{display:flex;margin-top:24px;align-items:center;justify-content:space-between;gap:32px}.contact-form__footer p{max-width:390px;color:var(--muted);font-size:9px;line-height:1.8}.contact-form__footer button{width:178px;min-height:42px;padding:9px 18px;border:1px solid var(--dark);border-radius:1px;background:var(--dark);color:var(--white);cursor:pointer;font-size:10px;letter-spacing:.06em;transition:background-color .35s ease,color .35s ease}.contact-form__footer button:hover,.contact-form__footer button:focus-visible{background:transparent;color:var(--text)}.contact-form__footer button:disabled{cursor:wait;opacity:.58}.contact-form__footer button:disabled:hover{background:var(--dark);color:var(--white)}.contact-form__status{min-height:1.8em;margin-top:10px;color:var(--muted);font-size:9px;text-align:right}.contact-form__status[data-state=success]{color:var(--text)}.contact-form__status[data-state=error]{color:#7a302b}.site-footer{border-top:1px solid var(--line-light)}.site-footer>div{display:flex;width:min(calc(100% - (var(--page-gutter) * 2)),var(--content));min-height:76px;margin-inline:auto;align-items:center;justify-content:space-between;color:var(--muted);font-size:9px}.site-footer a{position:relative;padding-block:4px}.site-footer a:after{position:absolute;right:0;bottom:2px;left:0;height:1px;content:"";transform:scaleX(0);transform-origin:right;background:currentColor;transition:transform .35s var(--ease)}.site-footer a:hover:after,.site-footer a:focus-visible:after{transform:scaleX(1);transform-origin:left}.privacy-header{display:flex;width:min(calc(100% - (var(--page-gutter) * 2)),var(--content));min-height:88px;margin-inline:auto;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-light)}.privacy-header__brand{font-family:var(--display);font-size:28px;line-height:1;letter-spacing:.12em}.privacy-header__back{font-size:9px;letter-spacing:.08em}.privacy-main{width:min(calc(100% - (var(--page-gutter) * 2)),1040px);margin-inline:auto}.privacy-title{padding:96px 0 72px;border-bottom:1px solid var(--line)}.privacy-title>p:first-child{color:var(--muted);font-size:9px;letter-spacing:.16em}.privacy-title h1{margin-top:20px;font-family:var(--serif-ja);font-size:38px;font-weight:500;line-height:1.4;letter-spacing:.04em}.privacy-title>p:last-child{margin-top:22px;color:var(--muted);font-size:11px}.privacy-content{padding:48px 0 100px}.privacy-content section{display:grid;padding:28px 0;border-top:1px solid var(--line-light);grid-template-columns:220px minmax(0,1fr);gap:40px}.privacy-content section:first-child{border-top:0}.privacy-content h2{font-size:12px;font-weight:550;line-height:1.7}.privacy-content section p{color:var(--muted);font-size:11px;line-height:2}.privacy-content__date{margin-top:28px;color:var(--muted);font-size:9px;text-align:right}.js .top-panel,.js .intro,.js .works,.js .message-banner{opacity:0}.js.is-ready .top-panel,.js.is-ready .intro,.js.is-ready .works,.js.is-ready .message-banner{opacity:1;transition:opacity .4s ease}@media(max-width:899px){:root{--page-gutter: 20px}.top-panel{min-height:330px}.site-header,.hero{width:100%}.site-header{height:76px}.desktop-nav,.desktop-actions{display:none}.site-brand{top:18px}.site-brand__name{font-size:26px}.site-brand__role{margin-top:7px;font-size:7px}.site-brand__location{margin-top:6px;font-size:7px}.mobile-menu-toggle{position:absolute;z-index:32;top:24px;right:20px;display:grid;width:36px;height:36px;padding:0}.mobile-menu-toggle span{position:absolute;left:11px;width:12px;height:1px;background:currentColor;transition:transform .3s ease,opacity .3s ease}.mobile-menu-toggle span:nth-child(1){transform:translateY(-4px)}.mobile-menu-toggle span:nth-child(3){transform:translateY(4px)}.is-menu-open .mobile-menu-toggle span:nth-child(1){transform:rotate(45deg)}.is-menu-open .mobile-menu-toggle span:nth-child(2){opacity:0}.is-menu-open .mobile-menu-toggle span:nth-child(3){transform:rotate(-45deg)}.mobile-menu[hidden]{display:none}.mobile-menu{position:fixed;z-index:30;inset:0;display:grid;align-content:center;justify-items:center;background:var(--background);gap:18px;animation:menu-fade .3s ease both}.mobile-menu a{font-family:var(--display);font-size:30px;line-height:1.1;letter-spacing:.08em}.hero{min-height:329px}.hero__center{top:129px}.hero h1{font-size:clamp(52px,14.8vw,60px);line-height:.78}.hero__center p:first-of-type{margin-top:23px;font-size:12px}.hero__center p:last-of-type{margin-top:8px;font-size:11px}.hero__rule{height:39px;margin-top:23px}.hero__links{right:50%;bottom:18px;gap:12px;transform:translate(50%);font-size:9px}.intro,.intro__inner{min-height:118px}.intro__inner{width:calc(100% - 48px);align-items:flex-start;padding-top:20px}.intro p:first-child{width:100%;max-width:none;font-size:10px;line-height:1.85}.intro p:first-child br{display:none}.works{padding:44px 0 40px}.section-heading h2{font-size:22px}.section-heading p{margin-top:6px;font-size:7px}.section-heading--compact{height:47px}.work-list{width:calc(100% - 40px);max-width:600px;grid-template-columns:1fr;gap:19px}.work-item{display:grid;min-height:85px;align-items:start;grid-template-columns:136px minmax(0,1fr);gap:14px}.work-item img{width:100%;height:100%}.work-item>a{width:136px;height:85px;aspect-ratio:auto}.work-item__copy{min-width:0;padding-top:1px}.work-item h3{font-size:10px;line-height:1.35}.work-item__category{margin-top:3px;font-size:7px}.work-item__description{display:-webkit-box;max-width:none;margin-top:5px;overflow:hidden;font-size:8px;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.work-item__site-link{margin-top:5px;font-size:7px}.message-banner{width:calc(100% - 40px);height:150px;margin-bottom:80px}.message-banner__copy{padding-inline:24px;gap:20px}.message-banner__copy>span{height:86px}.message-banner__copy p{font-size:15px;line-height:1.75}.message-banner__copy small{margin-top:6px;font-size:7px}.skills-section,.profile-section,.contact-section{padding-block:70px}.skills-section{padding-bottom:32px}.skills-section>.section-heading,.profile-section>.section-heading,.contact-section>.section-heading{margin-bottom:42px}.skill-list{width:calc(100% - 48px);grid-template-columns:1fr}.skill-list article{min-height:0;padding:0 0 27px}.skill-list article+article{padding-top:27px;border-top:1px solid var(--line-light);border-left:0}.skill-list article:last-child{padding-bottom:0}.skill-list h3{font-size:15px}.skill-list p{margin-top:10px;font-size:10px}.technology-list{width:calc(100% - 48px);margin-top:16px;justify-content:flex-start}.profile-layout{width:calc(100% - 48px);grid-template-columns:1fr;gap:34px}.profile-portrait{width:180px;margin-inline:auto}.profile-copy h3{font-size:21px}.profile-copy p{margin-top:18px;font-size:10px;line-height:2}.profile-copy br{display:none}.contact-section__copy{width:calc(100% - 48px);margin-inline:auto;font-size:10px}.contact-section__copy br{display:none}.contact-form{width:calc(100% - 48px);margin-top:32px}.contact-form__row{grid-template-columns:1fr;gap:25px}.contact-field label{font-size:11px}.contact-field input,.contact-field textarea{font-size:16px}.contact-field input{min-height:46px}.contact-field--message{margin-top:25px}.contact-field textarea{min-height:136px}.contact-form__footer{margin-top:20px;align-items:stretch;flex-direction:column;gap:16px}.contact-form__footer button{width:100%;min-height:46px}.contact-form__footer p{font-size:10px}.contact-form__status{text-align:left}.site-footer>div{min-height:68px;font-size:8px}.privacy-header{min-height:72px}.privacy-header__brand{font-size:24px}.privacy-header__back{font-size:8px}.privacy-main{width:calc(100% - 40px)}.privacy-title{padding:64px 0 48px}.privacy-title h1{margin-top:16px;font-size:27px}.privacy-title>p:last-child{margin-top:18px;font-size:10px;line-height:1.9}.privacy-content{padding:28px 0 64px}.privacy-content section{padding:24px 0;grid-template-columns:1fr;gap:9px}.privacy-content h2{font-size:11px}.privacy-content section p{font-size:10px;line-height:1.9}}@keyframes menu-fade{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
