:root{--color-background:#fafaf7;--color-surface:#efefea;--color-text:#242823;--color-muted:#62675f;--color-accent:#294c3a;--color-border:#d7d9d0;--color-input-border:#7a8076;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:clamp(3rem, 5vw, 4.5rem);--font-sans:"Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace}*,:before,:after{box-sizing:border-box}html{background:var(--color-background);color:var(--color-text);font-family:var(--font-sans);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;font-size:1rem;line-height:1.9}::selection{background:var(--color-accent);color:var(--color-background)}a{color:var(--color-accent);text-underline-offset:.25em;text-decoration-thickness:.06em}a:hover{text-decoration-thickness:.12em}:focus-visible{outline:3px solid var(--color-accent);outline-offset:5px}:target{scroll-margin-top:2rem}h1,h2,h3,p{margin:0}p+p{margin-top:1rem}h1,h2,h3{font-weight:500;line-height:1.4}h1{letter-spacing:-.025em}h2{margin-bottom:1.5rem;font-size:1.65rem}h3{font-size:1.15rem}ul{padding-left:1.3rem}button,input,textarea{font:inherit}.shell{width:min(100% - clamp(2.5rem,8vw,6rem),64rem);margin-inline:auto}.reading,.reading-section>div,.reading-section>dl{max-width:45rem}.eyebrow,.role{color:var(--color-muted);font-size:.9rem}.preserve-lines{white-space:pre-line}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--color-text);color:#fff;padding:.75rem 1rem;position:absolute;top:.75rem;left:1rem;transform:translateY(-200%)}.skip-link:focus{color:#fff;transform:translateY(0)}.site-header{border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;padding-block:1.5rem;display:flex}.wordmark{color:var(--color-text);font-size:1rem;font-weight:600;text-decoration:none}.nav-list{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.nav-list a{color:var(--color-text);padding-block:.4rem;font-size:.875rem;text-decoration:none;display:block}.nav-list a[aria-current=page],.nav-list a:hover{text-underline-offset:.4rem;text-decoration:underline}.hero{padding-block:clamp(3rem,6vw,5rem) 2rem}.hero-identity{align-items:center;gap:clamp(1rem,3vw,1.75rem);display:flex}.hero-identity>div{min-width:0}.hero-avatar{aspect-ratio:1;object-fit:cover;border:1px solid var(--color-border);background:#fff;border-radius:50%;flex:none;width:clamp(4.5rem,10vw,7rem);height:auto;display:block}.profile-name{font-size:1.3rem}.profile-identity{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.profile-identity>div{min-width:0}.profile-avatar{aspect-ratio:1;object-fit:cover;border:1px solid var(--color-border);background:#fff;border-radius:50%;flex:none;width:clamp(4rem,8vw,5rem);height:auto;display:block}.profile-identity .eyebrow{margin:.4rem 0 0}.role{margin-top:.15rem}.hero h1{letter-spacing:-.025em;overflow-wrap:anywhere;margin:0;font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.4}.hero .reading{margin-top:1.75rem;font-size:1rem}.availability{color:var(--color-muted);margin-top:1.25rem;font-size:.8rem}.actions{flex-wrap:wrap;align-items:center;gap:1.75rem;margin-top:1.75rem;display:flex}.button{min-height:2.75rem;color:var(--color-background);background:var(--color-accent);border:1px solid var(--color-accent);cursor:pointer;border-radius:.2rem;justify-content:center;align-items:center;padding:.5rem 1.2rem;font-size:.875rem;text-decoration:none;display:inline-flex}.button:hover{background:var(--color-text);color:var(--color-background)}.text-link{padding-block:.4rem;font-size:.9rem;display:inline-block}.section{padding-block:var(--space-xl)}.section-link{margin-top:1.5rem}.service-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 3rem;display:grid}.service-item{min-width:0}.service-item h3{overflow-wrap:anywhere}.service-item h3 a{color:var(--color-text);text-decoration-color:var(--color-border)}.service-item h3 a:hover{text-decoration-color:var(--color-text)}.service-item p{color:var(--color-muted);margin-top:.6rem;font-size:.93rem;line-height:1.95}.detailed{max-width:45rem;display:block}.detailed .service-item+.service-item{margin-top:3rem}.detailed h3{font-size:1.35rem}.sample-note{color:var(--color-muted);max-width:45rem;margin-bottom:1.75rem;font-size:.8rem}.work-list{gap:2rem;max-width:48rem;display:grid}.work-item h3{overflow-wrap:anywhere}.work-item p{margin-top:.35rem;font-size:.95rem}.work-item .work-technologies,.work-item .work-period{color:var(--color-muted);font-size:.85rem}.work-item .work-status{color:var(--color-muted);font-size:.75rem}.contact-cta{padding-block:var(--space-xl)}.contact-cta .text-link{margin-top:1rem}.site-footer{border-top:1px solid var(--color-border);color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;margin-top:2rem;padding-block:1.5rem;font-size:.8rem;display:flex}.site-footer p{margin:0 auto 0 0}.site-footer a{color:inherit;padding-block:.4rem}.page-intro{padding-block:3.5rem 1.5rem}.page-intro h1{overflow-wrap:anywhere;font-size:clamp(2rem,4vw,2.75rem);line-height:1.3}.page-description{max-width:45rem;color:var(--color-muted);white-space:pre-line;margin-top:1.25rem;font-size:1rem;line-height:2}.profile-name+.eyebrow{margin:.4rem 0 1.5rem}.tech-groups{margin:0}.tech-groups>div+div{margin-top:1.5rem}.tech-groups dt{font-size:1rem;font-weight:500}.tech-groups dd{color:var(--color-muted);margin:.25rem 0 0;font-size:.95rem}.plain-list{margin-block:1.25rem 0;font-size:.95rem}.plain-list li{margin-top:.5rem;padding-left:.25rem}.works-section{padding-block:2rem var(--space-xl)}.notice{background:var(--color-surface);color:var(--color-text);max-width:45rem;margin-bottom:2rem;padding:1rem 1.25rem;font-size:.85rem}.work-detail{padding-block:2rem var(--space-xl)}.work-detail .page-intro{padding-top:2rem}.work-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;max-width:45rem;margin-block:2rem;display:grid}.work-facts dt{color:var(--color-muted);font-size:.85rem}.work-facts dd{margin:.25rem 0 0;font-size:.95rem}.prose{max-width:45rem;margin-block:3rem}.prose h2{margin:2rem 0 1rem}.prose p{line-height:2}.contact-layout{padding-block:2rem var(--space-xl);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:3rem;display:grid}.contact-layout h2{font-size:1.2rem}.elsewhere{margin-top:3rem}.elsewhere p{color:var(--color-muted);font-size:.85rem}fieldset{border:0;min-width:0;margin:0;padding:0}.form-field{margin-bottom:1.75rem}label{justify-content:space-between;gap:1rem;margin-bottom:.5rem;font-size:.9rem;display:flex}label span{color:var(--color-muted);font-size:.8rem}input,textarea{border:1px solid var(--color-input-border);width:100%;min-height:3rem;color:var(--color-text);background:0 0;border-radius:.15rem;padding:.6rem .8rem;display:block}textarea{resize:vertical}.field-hint{color:var(--color-muted);margin-bottom:.75rem;font-size:.8rem}input:disabled,textarea:disabled{background:var(--color-surface);opacity:1}.button:disabled{background:var(--color-surface);border-color:var(--color-input-border);color:var(--color-muted);cursor:not-allowed}@media (width<=40rem){.site-header{flex-direction:column;align-items:start;gap:.5rem}.site-header nav{width:100%}.nav-list{justify-content:space-between;gap:.3rem .8rem}.nav-list a{padding-block:.5rem;font-size:.8rem}.service-list,.contact-layout,.work-facts{grid-template-columns:1fr}.site-footer p{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.experience-list{margin-block:1rem 2.5rem;padding-left:1.25rem}.experience-list li+li{margin-top:1.25rem}.experience-list li{padding-left:.25rem}.experience-title{font-weight:500}.experience-title-normal{font-weight:400}.experience-title span{color:var(--color-muted);font-size:.9rem;font-weight:400}.experience-list p+p{color:var(--color-muted);margin-top:.25rem;font-size:.95rem}.work-image{border:1px solid var(--color-border);border-radius:.25rem;width:100%;height:auto;margin-bottom:1.5rem;display:block}.contact-email{margin-bottom:2.5rem}.contact-email .text-link{overflow-wrap:anywhere}.contact-email .field-hint{margin-top:.75rem}
