:root{color-scheme:light;--bg:#fafaf8;--text:#262925;--muted:#62675f;--line:#dedfd9;--soft:#e9ebe6;--accent:#315c47}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.65 '-apple-system',BlinkMacSystemFont,segoe ui,Arial,sans-serif;-webkit-font-smoothing:antialiased}html[lang=ja-JP] body{font-family:-apple-system,BlinkMacSystemFont,hiragino kaku gothic pron,yu gothic ui,Meiryo,segoe ui,sans-serif;line-height:1.75}a{color:inherit;text-decoration:none;text-underline-offset:4px}a:hover{color:var(--accent);text-decoration:underline}a:focus-visible,iframe:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:#dce8df}img{max-width:100%;height:auto;display:block}.wrap{width:min(1040px,calc(100% - 80px));margin-inline:auto}h1,h2,h3{font-weight:550;line-height:1.3;margin:0}h1{font-size:36px;letter-spacing:-.045em}h2{font-size:15px;letter-spacing:-.01em}h3{font-size:17px;letter-spacing:-.02em}p{color:var(--muted);margin:0 0 14px}.skip-link{position:fixed;top:-100px;left:20px;z-index:10;background:var(--text);color:#fff;padding:10px}.skip-link:focus{top:10px}.site-header{display:flex;align-items:center;gap:28px;padding-block:20px;border-bottom:1px solid var(--line)}.wordmark{font-size:14px;font-weight:600;letter-spacing:-.015em}.main-nav{display:flex;gap:26px;margin-left:auto;font-size:13px;color:var(--muted)}.main-nav a[aria-current]{color:var(--text)}.language-switcher{display:flex;gap:8px;font-size:12px;color:var(--muted);border-left:1px solid var(--line);padding-left:26px}.language-switcher a+a:before{content:'/';color:#a6aaa2;margin-right:8px}.language-switcher a.active{color:var(--text);font-weight:600;text-decoration:none}.intro{padding-block:32px 28px}.intro-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.role{color:var(--text);font-size:19px;margin:7px 0 0;letter-spacing:-.02em}.portrait{width:72px;height:72px;object-fit:cover;border-radius:50%;flex-shrink:0}.intro-summary{max-width:640px;font-size:15px;margin:18px 0 14px}.link-row{display:flex;flex-wrap:wrap;gap:8px 24px;font-size:13px}.link-row a{text-decoration:underline;text-decoration-color:#bec3bb}.link-row a:hover{text-decoration-color:var(--accent)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-bottom:15px;margin-bottom:18px;border-bottom:1px solid var(--line)}.section-heading>span{font-size:12px;color:var(--muted)}.work{padding-bottom:48px}.personal-heading{margin-top:48px}.project-grid{display:grid;gap:36px 30px}.featured{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.personal{grid-template-columns:repeat(3,minmax(0,1fr))}.project-image{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--soft);border-radius:4px}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.project-image:hover img{transform:scale(1.02)}.project-meta{display:flex;justify-content:space-between;gap:12px;margin:15px 0 6px;font-size:12px;color:var(--muted)}.project-meta>span:last-child{flex-shrink:0;font-variant-numeric:tabular-nums}.project-card h3{margin-bottom:8px;font-size:19px}.personal h3{font-size:17px}.project-card h3 span{float:right;color:var(--muted);font-size:16px;font-weight:400;transition:transform .2s}.project-card h3 a:hover span{transform:translateX(3px)}.project-card p{font-size:13px;line-height:1.7;margin-bottom:9px}.project-card .project-stack{font-size:12px;margin:0}.nda-panel{aspect-ratio:16/9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:4px;border:1px solid var(--line);background:repeating-linear-gradient(135deg,#eef0eb 0 10px,#f5f6f2 10px 20px);color:var(--muted);font-size:12px;text-align:center}.nda-panel span:first-child{color:var(--text);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.cv-section{display:grid;grid-template-columns:150px minmax(0,1fr);gap:35px;padding-block:32px;border-top:1px solid var(--line)}.cv-section>h2{padding-top:1px}.cv-content{max-width:770px}.cv-content>p{max-width:680px;font-size:14px}.cv-content>p:last-child{margin-bottom:0}.cv-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:24px;margin-bottom:24px}.cv-row:last-child{margin-bottom:0}.date{font-size:12px;color:var(--muted);padding-top:3px}.cv-row h3{font-size:14px;line-height:1.65;margin:0 0 5px;letter-spacing:0}.cv-row h3 span{font-weight:400}.cv-row p{font-size:13px}.cv-row p:last-child{margin-bottom:0}.cv-row .location{font-size:12px;margin-bottom:12px}.cv-list{margin:0;padding:0;list-style:none;font-size:13px;color:var(--muted)}.cv-list li{margin:0 0 10px;padding-left:14px;position:relative}.cv-list li:before{content:'';position:absolute;left:0;top:.72em;width:5px;height:1px;background:#a6aaa2}.cv-list a{color:var(--text);font-weight:550}.skills{margin:0;font-size:13px}.skills>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:24px;margin-bottom:10px}.skills dt{color:var(--muted);font-size:12px;padding-top:1px}.skills dd{margin:0}.contact-email{font-size:16px;text-decoration:underline;text-decoration-color:#bec3bb;overflow-wrap:anywhere}.contact .cv-content>p{font-size:13px;margin:10px 0 18px}.footer{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:12px;border-top:1px solid var(--line);padding-block:22px 30px;margin-top:25px}.detail{padding-block:38px 70px;min-height:75vh}.text-link{font-size:13px;color:var(--muted)}.detail-header{max-width:760px;margin-block:32px 28px}.eyebrow{color:var(--muted);font-size:12px;margin-bottom:10px}.detail h1{font-size:39px;margin-bottom:16px}.detail-description{font-size:18px;line-height:1.6}.tags{display:flex;flex-wrap:wrap;gap:8px}.tags span{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px}.detail-figure{margin:0}.detail-image{width:100%;border-radius:4px;background:var(--soft)}figcaption{font-size:12px;color:var(--muted);margin-top:10px}figcaption a{text-decoration:underline}.video-frame{position:relative;aspect-ratio:16/9;background:#111;border-radius:4px;overflow:hidden}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.nda-banner{display:flex;flex-direction:column;gap:6px;padding:28px 30px;border:1px solid var(--line);border-radius:4px;background:repeating-linear-gradient(135deg,#eef0eb 0 10px,#f5f6f2 10px 20px)}.nda-banner strong{font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.nda-banner span{color:var(--muted);font-size:14px;max-width:620px}.project-facts{display:flex;flex-wrap:wrap;gap:22px 50px;padding-block:23px;margin:26px 0 0;border-block:1px solid var(--line)}.project-facts div{min-width:130px}.project-facts dt{font-size:12px;color:var(--muted)}.project-facts dd{margin:5px 0 0;font-size:13px}.detail-body{max-width:700px;margin:34px 0}.detail-body h2{font-size:21px;margin:34px 0 13px}.detail-body h2:first-child{margin-top:0}.detail-body h3{font-size:17px;margin:27px 0 12px}.detail-body a{color:var(--accent);text-decoration:underline}.detail-body ul{padding-left:20px;color:var(--muted)}.detail-body li{padding-left:3px;margin:8px 0}.detail-body strong{color:var(--text);font-weight:600}.detail-body code{font-size:.92em;background:var(--soft);padding:1px 5px;border-radius:3px}.media-section{margin:0 0 44px;padding-top:28px;border-top:1px solid var(--line)}.media-section h2{font-size:21px;margin-bottom:18px}.media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 30px}.media-grid figure{margin:0}.media-grid img{width:100%;border-radius:4px;background:var(--soft)}.media-grid a:hover img{outline:1px solid #c8cdc4;outline-offset:3px}.detail-end{border-top:1px solid var(--line);padding-top:23px;display:flex;justify-content:space-between;align-items:center;gap:16px}.button{display:inline-block;border:1px solid var(--line);padding:8px 15px;font-size:13px;border-radius:3px;background:#fff}.button:hover{border-color:var(--accent);text-decoration:none}.list-row{padding:25px 0;border-bottom:1px solid var(--line)}.list-row h2{font-size:22px;margin-bottom:10px}.resume{padding-block:40px 70px}.resume-header{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;padding-bottom:22px;border-bottom:2px solid var(--text)}.resume h1{font-size:36px}.resume-name-alt{margin:4px 0 0;font-size:14px}.resume-role{margin:8px 0 0;color:var(--text);font-size:16px}.resume-contact{list-style:none;margin:0;padding:0;font-size:13px;color:var(--muted);text-align:right}.resume-contact a:hover{color:var(--accent)}.resume-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:22px 0 6px;font-size:12px;color:var(--muted)}.resume-body p,.resume-body ul{max-width:760px}.resume-body h2{font-size:13px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;margin:34px 0 14px;padding-bottom:6px;border-bottom:1px solid var(--line)}html[lang=ja-JP] .resume-body h2{letter-spacing:.04em}.resume-body h3{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:16px;margin:20px 0 4px}.resume-body h3 a{color:var(--text);text-decoration:none}.resume-body h3 a:hover{color:var(--accent);text-decoration:underline}.resume-body .when{flex-shrink:0;font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0}.resume-body p{font-size:14px;margin:10px 0 4px}.resume-body p strong{color:var(--text);font-weight:600}.resume-body p a{color:var(--text)}.resume-body ul{margin:4px 0 12px;padding-left:18px;color:var(--muted);font-size:14px}.resume-body li{margin:3px 0}.resume-body li strong{color:var(--text);font-weight:600}@media(max-width:800px){.wrap{width:calc(100% - 48px)}.personal{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid{gap:30px 22px}.cv-section{grid-template-columns:115px minmax(0,1fr);gap:20px}.cv-row{grid-template-columns:95px minmax(0,1fr);gap:15px}.skills>div{grid-template-columns:110px minmax(0,1fr);gap:15px}}@media(max-width:700px){.site-header{flex-wrap:wrap;gap:12px 16px;padding-block:16px 12px}.language-switcher{margin-left:auto;padding-left:0;border-left:0}.main-nav{order:3;width:100%;margin-left:0;gap:22px;padding-top:10px;border-top:1px solid var(--line);overflow-x:auto;white-space:nowrap;scrollbar-width:none}.resume-header{flex-direction:column;align-items:flex-start}.resume-contact{text-align:left}}@media(max-width:560px){.wrap{width:calc(100% - 36px)}body{font-size:14px}h1{font-size:30px;line-height:1.2}.intro{padding-block:28px}.intro-heading{gap:14px;align-items:flex-start}.portrait{width:56px;height:56px}.role{font-size:16px;line-height:1.5;margin-top:8px}.intro-summary{font-size:14px}.featured,.personal{grid-template-columns:1fr}.project-grid{gap:34px}.project-card h3,.personal h3{font-size:18px}.project-card p{font-size:14px}.section-heading{flex-wrap:wrap;gap:4px 10px}.personal-heading{margin-top:38px}.cv-section{display:block;padding-block:26px}.cv-section>h2{margin-bottom:16px}.cv-row{grid-template-columns:1fr;gap:4px}.skills>div{grid-template-columns:1fr;gap:2px;margin-bottom:12px}.cv-content>p,.cv-list,.skills{font-size:14px}.contact-email{font-size:15px}.detail{padding-top:24px}.detail-header{margin-top:24px}.detail h1{font-size:30px}.detail-description{font-size:16px}.detail-body{font-size:15px}.project-facts{gap:16px 28px}.media-grid{grid-template-columns:1fr}.detail-end{flex-wrap:wrap}.resume h1{font-size:28px}.resume-body h3{flex-direction:column;gap:2px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-image img,.project-card h3 span{transition:none}}@page{size:A4;margin:11mm 14mm}@media print{body,html[lang=ja-JP] body{background:#fff;color:#111;font-size:9pt;line-height:1.4}.site-header,.footer,.skip-link,.detail-end,.detail>.text-link,.resume-actions,.media-section,.video-frame{display:none!important}.wrap{width:100%}a{text-decoration:none!important;color:inherit!important}p,ul{color:#333!important}.resume{padding:0}.resume-header{padding-bottom:10px;border-bottom-width:1.5px}.resume h1{font-size:21pt}.resume-role{font-size:11pt;margin-top:3px}.resume-name-alt{font-size:9.5pt}.resume-contact{font-size:8.5pt;line-height:1.5}.resume-body p,.resume-body ul{max-width:none}.resume-body h2{font-size:8.5pt;margin:12px 0 5px;padding-bottom:3px;border-bottom-color:#bbb;break-after:avoid}.resume-body h3{font-size:10pt;margin:8px 0 1px;break-after:avoid}.resume-body .when{font-size:8.5pt}.resume-body p{font-size:9pt;margin:5px 0 1px;break-after:avoid}.resume-body ul{font-size:9pt;margin:1px 0 5px}.resume-body li{margin:0;break-inside:avoid}.detail{padding:0}.detail-header{margin:0 0 16px}.detail h1{font-size:24pt}.detail-description{font-size:12pt}.detail-body{max-width:none;margin:16px 0 0;font-size:10pt}.detail-body h2{font-size:14pt;margin:16px 0 8px;break-after:avoid}}