:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f4f0e7;--ink:#29251f;--muted:#777064;--line:#d8d0c2;--link:#805b43;--sidebar:#302c26}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--sidebar);color:var(--ink);-webkit-font-smoothing:antialiased;font:15px/1.9 Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif}body,dd,dl,figure,h1,h2,h3,h4,h5,h6,ol,p,ul{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:500}ol,ul{padding:0;list-style:none}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}img{max-width:100%;height:auto;display:block}a,button,input{-webkit-tap-highlight-color:transparent}::selection{color:#263b2b;background:#c9d3ca}:focus-visible{outline-offset:5px;outline:1px solid}.site-shell{grid-template-columns:42% minmax(0,1fr);min-height:100svh;display:grid}.content-pane{background:var(--paper);flex-direction:column;min-width:0;min-height:100svh;display:flex}#main-content{flex:1}.page-content{width:100%;max-width:850px;margin:0 auto;padding:54px calc(clamp(28px,5vw,76px)) 78px}.page-intro{padding:65px 0 45px}.page-intro h1,.pageTitle{letter-spacing:.035em;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:calc(clamp(25px,3vw,34px));font-weight:500;line-height:1.55}.pageTitle{padding:65px 0 0}.intro-description{color:var(--muted);margin-top:20px;font-size:14px;line-height:2.15}.back-link,.text-link{color:var(--link);text-underline-offset:4px;font-size:12px;text-decoration:underline}.text-link{background:0 0;border:0;padding:0}.back-link{display:inline-block}.article-row,.news-row{border-top:1px solid var(--line)}.article-row:last-child,.news-row:last-child{border-bottom:1px solid var(--line)}.article-link{gap:24px;padding:29px 0;display:flex}.article-row-body{flex:1;min-width:0}.article-meta{color:var(--muted);font-size:11px}.article-row h2{margin:7px 0;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:18px;font-weight:500;line-height:1.7}.article-row h2 span{color:var(--muted);font-size:12px}.article-link:hover h2{color:var(--link)}.article-description{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:2;display:-webkit-box;overflow:hidden}.tags{color:var(--muted);flex-wrap:wrap;gap:7px 14px;margin-top:12px;font-size:11px;display:flex}.article-thumbnail{-o-object-fit:cover;object-fit:cover;align-self:center;width:90px;height:70px}.news-row{grid-template-columns:80px minmax(0,1fr) 12px;gap:15px;padding:18px 0;font-size:13px;display:grid}.news-row time,.site-footer{color:var(--muted);font-size:11px}.site-footer{width:100%;max-width:780px;margin:0 auto;padding:65px calc(clamp(24px,4vw,64px)) 30px}.site-footer>p{margin-bottom:14px}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:10px 20px;display:flex}.site-footer a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.cms-notice{border:1px dashed var(--line);color:var(--muted);overflow-wrap:anywhere;margin-bottom:25px;padding:17px;font-size:11px}.cms-notice strong{font-weight:500}.cms-notice p{margin-top:7px}.empty-state{border-top:1px solid var(--line);padding:38px 0}.empty-state h2{font-size:14px}.empty-state p{color:var(--muted);margin-top:12px;font-size:12px}.empty-state button{margin-top:20px}.article-tools{margin-bottom:25px}.search-field input{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);background:0 0;padding:12px 0;font-size:12px}.filter-tags{flex-wrap:wrap;gap:6px;margin-top:18px;display:flex}.filter-tags button{border:1px solid var(--line);color:var(--muted);background:0 0;padding:3px 8px;font-size:11px}.filter-tags .selected{background:var(--ink);border-color:var(--ink);color:var(--paper)}.result-count{color:var(--muted);margin-top:18px;font-size:11px}.detail-header{border-bottom:1px solid var(--line);margin-bottom:32px;padding:50px 0 28px}.detail-header h1{letter-spacing:.025em;overflow-wrap:anywhere;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:calc(clamp(25px,3vw,34px));font-weight:500;line-height:1.6}.detail-dates{color:var(--muted);flex-wrap:wrap;gap:10px 20px;margin-top:22px;font-size:11px;display:flex}.error-page{padding-top:80px}.error-page .text-link{margin-top:35px}.skip-link{z-index:20;background:var(--paper);color:var(--ink);padding:10px 18px;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=960px){.site-shell{display:block}.content-pane{min-height:75svh}}@media (width<=600px){.page-content{padding:30px 24px 48px}.page-intro{padding:48px 0 38px}.page-intro h1,.pageTitle{font-size:27px}.article-link{gap:16px;padding:23px 0}.article-row h2{font-size:16px}.article-thumbnail{width:70px;height:60px}.detail-header h1{font-size:25px}.site-footer{padding:45px 24px 25px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition:none!important}}.sidebar{color:#c9c0b2;background:var(--sidebar);flex-direction:column;justify-content:space-between;height:100svh;padding:42px calc(clamp(28px,4vw,62px));display:flex;position:sticky;top:0;overflow-y:auto}.sidebarInner{grid-template-columns:1fr 1fr;gap:calc(clamp(24px,3vw,50px));display:grid}.identity{min-width:0}.name{color:#f2eadc;letter-spacing:.04em;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:21px;line-height:1.5}.tagline{color:#b9c3ba;margin-top:5px;font-size:11px;line-height:1.7}.avatar{filter:grayscale(.3);border-radius:50%;width:40px;height:40px;margin-top:24px}.description{color:#b9c3ba;margin-top:18px;font-size:11px;line-height:1.9}.nav{align-content:start;gap:21px;display:grid}.nav>a{color:#f2eadc;font-size:14px;line-height:1.8;display:block}.nav>a span{color:#b9c3ba;font-size:11px;display:block}.nav>a:hover,.nav>a[aria-current]{color:#d9b99c}.nav>a[aria-current]:before{content:"·";margin-left:-12px;position:absolute}.sidebarBottom{color:#b9c3ba;flex-wrap:wrap;gap:10px 22px;margin-top:45px;font-size:11px;display:flex}.sidebarBottom a:hover{color:#f0f0e9;text-underline-offset:4px;text-decoration:underline}@media (width<=1200px) and (width>=961px){.sidebar{padding:28px}.sidebarInner{gap:22px}}@media (width<=960px){.sidebar{height:auto;padding:26px 30px;position:relative;overflow:visible}.sidebarInner{grid-template-columns:1fr 2fr;gap:40px}.nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px 24px}.description{display:none}.avatar{margin-top:15px}.sidebarBottom{margin-top:26px}}@media (width<=600px){.sidebar{padding:25px 24px}.sidebarInner{grid-template-columns:1fr;gap:27px}.identity{padding-right:55px;position:relative}.avatar{margin:0;position:absolute;top:0;right:0}.nav{gap:18px 15px}.nav>a{font-size:12px}.nav>a span{font-size:10px}.sidebarBottom{gap:20px;font-size:10px}}.portfolio{width:100%;max-width:780px;margin:0 auto;padding:0 calc(clamp(24px,4vw,64px)) 20px}.intro{padding:100px 0 82px}.introLabel{color:var(--muted);letter-spacing:.08em;margin-bottom:34px;font-size:11px}.intro h1{letter-spacing:.025em;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:calc(clamp(28px,3.6vw,40px));font-weight:500;line-height:1.65}.intro h1 span{display:block}.introText{color:var(--muted);max-width:42em;margin-top:28px;font-size:14px;line-height:2.15}.introLink{color:var(--link);text-underline-offset:4px;margin-top:24px;font-size:12px;text-decoration:underline;display:inline-block}.section{padding-top:70px;scroll-margin-top:35px}.sectionHeader{margin-bottom:26px}.sectionHeader h2{letter-spacing:.025em;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:20px;font-weight:500}.sectionNote{color:var(--muted);margin-bottom:18px;font-size:11px;line-height:1.9}.projectCard{border-top:1px solid var(--line);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:27px;padding:27px 0;scroll-margin-top:30px;display:grid}.activityList,.contactList>div:last-child,.projectCard:last-child,.skillsList{border-bottom:1px solid var(--line)}.projectCategory{color:var(--muted);font-size:10px}.projectHeading h3{overflow-wrap:anywhere;margin-top:9px;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:18px;font-weight:500;line-height:1.7}.projectSummary{margin-top:9px;font-size:12px;line-height:1.9}.technologyList{color:var(--muted);flex-wrap:wrap;margin-top:13px;font-size:10px;line-height:1.8;display:flex}.technologyList li:not(:last-child):after{content:"/";margin:0 7px}.activityHeading,.projectBody{min-width:0}.projectDescription{color:var(--muted);font-size:12px;line-height:2}.projectLinks{color:var(--link);flex-wrap:wrap;gap:8px 18px;margin-top:17px;font-size:11px;display:flex}.activityLinks a,.projectLinks a{text-underline-offset:3px;-webkit-text-decoration:underline #a9b5a9;text-decoration:underline #a9b5a9}.projectImage{margin-bottom:20px}.projectImage img{width:100%;height:auto}.featuredProject{grid-template-columns:1fr;gap:18px;padding-top:27px;padding-bottom:34px}.featuredProject h3{font-size:28px}.featuredProject .projectSummary{font-size:13px}.featuredProject .projectDescription{max-width:43em;font-size:13px}.biography{font-size:13px;line-height:2.1}.personalNote{color:var(--muted);margin-top:21px;font-size:12px}.interests{grid-template-columns:4em minmax(0,1fr);gap:14px;margin-top:26px;font-size:12px;display:grid}.interests dt{color:var(--muted)}.skillsList{border-top:1px solid var(--line);padding:15px 0}.skillGroup{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:12px 24px;padding:12px 0;font-size:12px;display:grid}.skillGroup h3{color:var(--ink);font-weight:400}.skillGroup .markdown,.skillGroup p{color:var(--muted);line-height:2}.skillGroup .markdown{grid-column:2}.activityGroup+.activityGroup{margin-top:38px}.activityGroupTitle{align-items:baseline;gap:10px;margin-bottom:14px;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,Georgia,serif;font-size:16px;font-weight:500;display:flex}.activityGroupTitle span{color:var(--muted);font-family:inherit;font-size:11px}.activity,.contactList>div{border-top:1px solid var(--line)}.activity>summary{cursor:pointer;grid-template-columns:minmax(0,1fr) 85px 12px;align-items:baseline;gap:16px;padding:16px 0;list-style:none;display:grid}.activity>summary::-webkit-details-marker{display:none}.activity>summary:after{content:"+";color:var(--muted);font-size:13px}.activity[open]>summary:after{content:"−"}.activity>summary:hover .activityTitle{color:var(--link)}.activityKind{color:var(--muted);margin-bottom:3px;font-size:10px;display:block}.activityTitle{font-size:13px;line-height:1.9}.activityPeriod{color:var(--muted);text-align:right;flex-direction:column;font-size:10px;line-height:1.5;display:flex}.periodSeparator{font-size:9px}.activityContent{padding:0 0 22px}.activityDescription{color:var(--muted);font-size:12px;line-height:2}.activityLinks{color:var(--link);flex-wrap:wrap;gap:8px 19px;margin-top:13px;font-size:11px;display:flex}.contactList>div{grid-template-columns:1fr 1.5fr;gap:25px;padding:12px 0;font-size:12px;display:grid}.contactList dd,.emptyNote{color:var(--muted)}.contactList a:hover{text-underline-offset:3px;text-decoration:underline}.emptyNote{padding:25px 0;font-size:12px}.subpage{padding-top:40px}@media (width<=1200px) and (width>=961px){.projectCard{gap:18px}.projectCard,.skillGroup{grid-template-columns:1fr}.skillGroup{gap:6px}.skillGroup .markdown{grid-column:1}}@media (width<=600px){.portfolio{padding:0 24px 20px}.intro{padding:54px 0 40px}.intro h1{font-size:18px}.introLabel{margin-bottom:25px}.section{padding-top:45px}.projectCard{grid-template-columns:1fr;gap:18px}.featuredProject h3{font-size:23px}.skillGroup{grid-template-columns:1fr;gap:5px}.skillGroup .markdown{grid-column:1}.activity>summary{grid-template-columns:minmax(0,1fr) 72px 10px;gap:10px}.activityTitle{font-size:12px}.contactList>div{grid-template-columns:1fr 1.3fr;gap:16px}.subpage{padding-top:25px}}.markdown{overflow-wrap:anywhere;min-width:0}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:1em 0}.markdown a{color:var(--link);text-underline-offset:3px;text-decoration:underline}.markdown strong{color:var(--ink);font-weight:600}.markdown em{font-style:italic}.markdown h4,.markdown h5,.markdown h6{color:var(--ink);margin:1.5em 0 .6em;font-size:1em;font-weight:600}.markdown ol,.markdown ul{margin:.8em 0;padding-left:1.5em}.markdown ul{list-style:outside}.markdown ol{list-style:decimal}.markdown li{margin:.3em 0;padding-left:.15em}.markdown .task-list-item{list-style:none}.markdown input[type=checkbox]{margin-right:.5em}.markdown blockquote{color:var(--muted);border-left:1px solid #a8b5a7;margin:1em 0;padding:.2em 1em}.markdown pre{background:#e5e8e0;max-width:100%;margin:1.2em 0;padding:15px;font-size:.9em;line-height:1.8;overflow-x:auto}.markdown code{font:.9em ui-monospace,monospace}.markdown :not(pre)>code{background:#e5e8e0;padding:.12em .3em}.markdown img{max-width:100%;height:auto;margin:1.2em 0}.markdown table{border-collapse:collapse;width:max-content;max-width:100%;margin:1em 0;font-size:.95em;display:block;overflow-x:auto}.markdown td,.markdown th{border:1px solid var(--line);text-align:left;padding:.5em .9em}.markdown th{font-weight:600}.markdown hr{border:0;border-top:1px solid var(--line);margin:1.5em 0}.article-prose{overflow-wrap:anywhere;color:#3f4e43;font-size:14px;line-height:2.1}.article-prose h1,.article-prose h2,.article-prose h3,.article-prose h4,.article-prose h5,.article-prose h6{color:var(--ink);margin:2em 0 .8em;font-weight:600;line-height:1.65}.article-prose h1{font-size:1.8em}.article-prose h2{border-bottom:1px solid var(--line);padding-bottom:.45em;font-size:1.5em}.article-prose h3{font-size:1.25em}.article-prose h4{font-size:1.1em}.article-prose p{margin:1.2em 0}.article-prose a{color:var(--green);text-underline-offset:4px;text-decoration:underline}.article-prose ol,.article-prose ul{margin:1em 0;padding-left:1.5em}.article-prose ul{list-style:outside}.article-prose ol{list-style:decimal}.article-prose li{margin:.4em 0;padding-left:.2em}.article-prose img{border-radius:3px;max-width:100%;height:auto;margin:1.5em auto}.article-prose pre{border-radius:4px;max-width:100%;margin:1.8em 0;font-size:12px;overflow-x:auto}.article-prose pre.line-numbers{padding-left:3.8em}.article-prose :not(pre)>code{color:#46613d;background:#edf0e8;border-radius:3px;padding:.15em .4em;font-size:.88em}.article-prose blockquote{color:#6b7863;background:#f1f4ec;border-left:3px solid #a6b697;margin:1.5em 0;padding:.2em 1.3em}.article-prose table{border-collapse:collapse;width:max-content;max-width:100%;margin:1.5em 0;font-size:12px;display:block;overflow-x:auto}.article-prose td,.article-prose th{border:1px solid var(--line);text-align:left;padding:.7em 1em}.article-prose th{background:#edf1e7;font-weight:600}.article-prose hr{border:0;border-top:1px solid var(--line);margin:2em 0}.article-prose iframe{max-width:100%}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px #0000004d;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;-webkit-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]{border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
