.b-section{position:relative;background:var(--bg);margin-top:var(--mt);margin-bottom:var(--mb);padding:var(--sp-m, 0)}.b-container{position:relative;display:flex;flex-wrap:wrap;align-items:var(--va);margin-inline:auto;min-height:var(--mh, 0);row-gap:var(--flow)}.b-boxed>.b-container{max-width:calc(var(--cw, var(--content-max)) + 2 * var(--gutter));padding-inline:max(0px,var(--gutter) - var(--gap))}.b-full>.b-container{max-width:none}.b-column{position:relative;display:flex;width:var(--w-m);min-height:1px;background:var(--cbg)}.b-wrap{position:relative;display:flex;flex-wrap:wrap;align-content:var(--cva);align-items:var(--cva);flex:1 1 auto;min-width:0;margin:var(--cm-m, 0);padding:var(--cp-m, 0 var(--gap))}@media(max-width:767px){.b-column:has(>.b-wrap:empty){display:none}}.b-row{display:flex;flex-wrap:wrap;align-items:var(--va);width:100%}.b-reverse-mobile>.b-container{flex-direction:column-reverse}.b-section+.b-section>.b-container{padding-top:var(--flow)}.b-section.b-has-bg>.b-container{padding-block:var(--flow)}@media(min-width:768px){.b-section{padding:var(--sp, 0)}.b-container,.b-row{flex-wrap:nowrap}.b-column{width:var(--w-t)}.b-wrap{margin:var(--cm, 0);padding:var(--cp, 0 var(--gap))}.b-reverse-mobile>.b-container{flex-direction:row}}@media(min-width:1025px){.b-column{width:var(--w)}}.b-widget{position:relative;width:100%;padding:var(--wp, 0)}.b-widget:not(:last-child){margin-bottom:var(--flow)}.b-widget.b-w-heading:not(:last-child){margin-bottom:var(--flow-tight)}.b-widget.has-width{width:var(--ww-m);max-width:100%}@media(min-width:768px){.b-widget.has-width{width:var(--ww)}}.b-widget.has-margin{margin:var(--wm-m, 0)}@media(min-width:768px){.b-widget.has-margin{margin:var(--wm, 0)}}@media(max-width:767px){.b-hide-mobile{display:none!important}}@media(min-width:768px)and (max-width:1024px){.b-hide-tablet{display:none!important}}@media(min-width:1025px){.b-hide-desktop{display:none!important}}.b-type{margin:0;font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs-m);line-height:var(--lh-m);letter-spacing:var(--ls);text-transform:var(--tt);text-decoration:var(--td);text-align:var(--ta-m);color:var(--c)}@media(min-width:768px){.b-type{font-size:var(--fs-t);line-height:var(--lh-t);text-align:var(--ta-t)}}@media(min-width:1025px){.b-type{font-size:var(--fs);line-height:var(--lh);text-align:var(--ta)}}.b-heading{padding:0}.b-hover-color:hover,.b-hover-color:hover a{color:var(--hc)}.b-text{max-width:var(--measure)}.b-text-center{margin-inline:auto}.b-text-right{margin-left:auto}.b-text p{margin:0}.b-text h1,.b-text h2,.b-text h3,.b-text h4,.b-text h5,.b-text h6{margin:0 0 var(--flow-tight);font-family:var(--font-sans);font-size:var(--type-heading);line-height:var(--leading-heading);letter-spacing:.5px;font-weight:600;color:#000}.b-text h1{font-weight:400;color:#333}.b-text ul,.b-text ol{margin:15px 0 15px 20px}.b-text li>ul,.b-text li>ol{margin:0 0 0 25px;list-style:circle}.b-text ul{list-style:disc}.b-text ol{list-style:decimal}.b-text strong{font-weight:600}.b-text a{color:var(--lc, inherit)}.b-text a:hover,.b-heading-link:hover{color:var(--muted-foreground)}.b-hover-color .b-heading-link:hover{color:var(--hc)}.b-image{margin:0;text-align:center;line-height:0}.b-image.b-align-left{text-align:left}.b-image.b-align-right{text-align:right}.b-image .b-img,.b-image .b-img-link{display:inline-block;vertical-align:middle;width:var(--iw-m)}.b-image .b-img-link .b-img{width:100%}.b-image .b-img{border-radius:var(--ir);background:none;transition:opacity .3s ease}.b-image:hover .b-img{opacity:var(--ho)}.b-img-link{cursor:pointer;border:0;padding:0;background:none}@media(min-width:768px){.b-image .b-img,.b-image .b-img-link{width:var(--iw-t)}}@media(min-width:1025px){.b-image .b-img,.b-image .b-img-link{width:var(--iw)}}.b-caption{margin-top:8px;font-size:13px;line-height:1.5;color:var(--muted-foreground)}.b-spacer{height:var(--sp-m)}@media(min-width:768px){.b-spacer{height:var(--sp-t)}}@media(min-width:1025px){.b-spacer{height:var(--sp)}}.b-video{position:relative;width:100%;overflow:hidden;background:#000;line-height:0}.b-video-frame,.b-video-file{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover}.b-card-img{display:block;width:var(--cw);margin:0 auto 15px;line-height:0}.b-card-img img{width:100%;background:none;transition:opacity .3s ease}.b-card-pill .b-card-img img{border-radius:300px}.b-card:hover .b-card-img img{opacity:var(--ho)}.b-card-title{margin:0}.b-card-title a{color:inherit}.b-button-wrap{display:flex;justify-content:flex-start}.b-button-wrap.b-align-center{justify-content:center}.b-button-wrap.b-align-right{justify-content:flex-end}.b-button{display:inline-block;padding:var(--bp-m, 12px 24px);border-radius:var(--br);background:var(--bb);color:var(--bc);transition:all .3s}.b-button-wrap.b-align-stretch .b-button{display:block;width:100%}.b-button:hover,.b-button:focus-visible{background:var(--bh);color:var(--bc)}@media(min-width:768px){.b-button{padding:var(--bp, 12px 24px)}}.b-divider-wrap{display:flex;padding-block:15px}.b-divider-wrap.b-align-center{justify-content:center}.b-divider-wrap.b-align-right{justify-content:flex-end}.b-divider{margin:0;border:0;border-top-style:solid}.b-gallery{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:var(--gap)}@media(min-width:768px){.b-gallery{grid-template-columns:repeat(var(--cols),minmax(0,1fr))}}.b-gallery-item{padding:0;border:0;background:none;cursor:pointer;line-height:0}.b-carousel{position:relative;line-height:0}.b-carousel.has-dots{padding-bottom:40px}.b-carousel-viewport{overflow:hidden}.b-carousel-track{display:flex;transform:translate(calc(var(--index) * -100% / var(--per-m)));transition:transform var(--speed) ease}.b-carousel-slide{flex:0 0 calc(100% / var(--per-m));min-width:0;text-align:center}.b-carousel-slide img{display:inline-block;width:min(100%,var(--slide-w));background:none}.b-carousel.is-stretch .b-carousel-slide img{width:100%}@media(min-width:768px){.b-carousel-track{transform:translate(calc(var(--index) * -100% / var(--per)))}.b-carousel-slide{flex-basis:calc(100% / var(--per))}}.b-carousel-fade .b-carousel-track{display:grid;transform:none}.b-carousel-fade .b-carousel-slide{grid-area:1 / 1;opacity:0;transition:opacity var(--speed) ease}.b-carousel-fade .b-carousel-slide.is-active{opacity:1}.b-carousel-caption{padding-top:8px;font-size:13px;line-height:1.5;font-style:italic;color:var(--muted-foreground)}.b-carousel-arrow{position:absolute;top:50%;z-index:1;display:inline-flex;padding:0;border:0;background:none;color:var(--arrow);cursor:pointer;transform:translateY(-50%)}.b-carousel.has-dots .b-carousel-arrow{top:calc(50% - 20px)}.b-carousel-arrow svg{width:25px;height:25px}.b-carousel-arrow.is-prev{left:10px}.b-carousel-arrow.is-next{right:10px}.b-carousel-dots{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;gap:12px}.b-carousel-dot{width:6px;height:6px;padding:0;border:0;border-radius:50%;background:#000;opacity:.2;cursor:pointer}.b-carousel-dot.is-active{opacity:1}.js .b-anim:not(.is-in){visibility:hidden}.b-anim.is-in{animation-name:var(--anim);animation-duration:1.25s;animation-delay:var(--anim-delay, 0ms);animation-fill-mode:both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:none}}@keyframes fadeInDown{0%{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:none}}@keyframes fadeInLeft{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:none}}@keyframes fadeInRight{0%{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:none}}@keyframes slideInLeft{0%{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes slideInRight{0%{transform:translate3d(100%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes slideInDown{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.b-anim.is-in{animation:none}.b-carousel-track,.b-carousel-slide{transition:none}}.b-body{overflow-x:clip}[data-lab]{--lab-bg: var(--background);--lab-fg: var(--foreground);--lab-muted: var(--muted-foreground);--lab-ink: color-mix(in srgb, var(--lab-fg) 30%, transparent);position:relative;overflow-x:clip;padding:calc(var(--hd-clearance, 80px) + 48px) 24px 160px;background-color:var(--lab-bg);background-image:radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--lab-fg) 20%,transparent) .8px,transparent 1.3px);background-size:24px 24px;color:var(--lab-fg);font-family:ABC Areal Mono,ui-monospace,monospace;font-size:12.5px;line-height:1.55}[data-lab][data-tone=dark]{--lab-fg: #f2f2f2;--lab-muted: #8c8c8c}[data-lab][data-tone=light]{--lab-fg: #000;--lab-muted: var(--muted-foreground)}[data-lab] :where(h1,h2,h3,p,span,button){font-family:inherit}.lab-copy{margin-top:10px;color:color-mix(in srgb,var(--lab-fg) 78%,transparent)}.lab-aside{position:sticky;top:calc(var(--hd-clearance, 80px) + 16px);display:grid;gap:6px}.lab-intro,.lab-project{max-width:1320px;margin-inline:auto}.lab-intro{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px 48px;margin-bottom:120px}.lab-logo{width:min(70vw,360px)}.lab-intro .lab-copy{max-width:34ch;color:var(--lab-muted)}.lab-project{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,9fr);align-items:start;gap:24px 48px}.lab-project+.lab-project{margin-top:140px}.lab-project[data-side=right]{grid-template-columns:minmax(0,9fr) minmax(0,3fr)}.lab-project[data-side=right] .lab-aside{order:2}.lab-index,.lab-meta,.lab-label{font-size:11px;line-height:15px;color:var(--lab-muted)}.lab-title{font-size:15px;line-height:1.3;font-weight:500}.lab-copy p+p{margin-top:.6em}.lab-desk{display:flex;justify-content:center}.lab-pile{position:relative;width:min(100%,calc((100svh - 140px) * var(--ratio)));aspect-ratio:var(--ratio)}.lab-plan{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;stroke:var(--lab-ink);pointer-events:none}.lab-plan *{vector-effect:non-scaling-stroke}.lab-plan-dots{stroke-dasharray:1 5}.lab-plan-dash{stroke-dasharray:6 5}.lab-item{position:absolute;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);z-index:var(--z);display:block;width:calc(var(--w) * 1%);padding:0;border:0;background:none;rotate:var(--r);cursor:zoom-in;transition:translate .25s cubic-bezier(.22,1,.36,1)}.lab-print{box-shadow:0 0 0 1px color-mix(in srgb,var(--lab-bg) 70%,transparent),0 14px 30px -14px #0000008c}.lab-item:hover,.lab-item:focus-visible{z-index:60;translate:0 -4px}.lab-item:focus-visible{outline:1px solid var(--lab-fg);outline-offset:4px}.lab-label{position:absolute;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);z-index:70;white-space:nowrap;pointer-events:none}.lab-label[data-kind=tag]{color:var(--lab-fg)}@media(max-width:1024px){.lab-project,.lab-project[data-side=right]{grid-template-columns:minmax(0,1fr)}.lab-aside{position:static;max-width:52ch}.lab-project[data-side=right] .lab-aside{order:0}}@media(max-width:767px){[data-lab]{padding:calc(var(--hd-clearance, 80px) + 24px) 20px 96px}.lab-intro{margin-bottom:72px}.lab-project+.lab-project{margin-top:88px}.lab-pile{display:flex;flex-direction:column;width:100%;aspect-ratio:auto}.lab-plan,.lab-label{display:none}.lab-item{position:relative;left:auto;top:auto;align-self:var(--ma);width:var(--mw);rotate:calc(var(--r) * .5)}.lab-item+.lab-item{margin-top:-6%}.lab-item:hover{translate:none}}@media(prefers-reduced-motion:reduce){.lab-item{transition:none}.lab-item:hover,.lab-item:focus-visible{translate:none}}.about{--about-split: minmax(0, 28fr) minmax(0, 72fr);--about-ease: cubic-bezier(.23, 1, .32, 1);--about-line: rgb(0 0 0 / .14);padding-bottom:var(--space-xl)}.about-intro{display:grid;grid-template-columns:var(--about-split);gap:var(--space-l) var(--flow);align-items:center;padding-top:var(--space-xl)}.about-portrait{width:100%;max-width:260px}.about-portrait-img{border-radius:999px}.about-intro-text{display:grid;gap:var(--space-m)}.about-statement{margin:0;max-width:30ch;font-size:var(--type-headline);line-height:var(--leading-headline);text-wrap:pretty}.about-greeting{max-width:30ch;font-size:var(--type-headline);line-height:var(--leading-headline);text-wrap:pretty}.about-greeting p{display:inline;margin:0}.about-hello{font-weight:600}.about-hello:after{content:" "}.about-part{display:grid;grid-template-columns:var(--about-split);gap:var(--space-s) var(--flow);margin-top:var(--space-xl)}.about-part>*{padding-top:var(--space-m);border-top:1px solid var(--border)}.about-part-title{margin:0;font-size:var(--type-heading);line-height:var(--leading-heading);font-weight:400;letter-spacing:.5px}.about-part-body{min-width:0;font-size:var(--type-body);line-height:var(--leading-body)}.about-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;padding:0;list-style:none}.about-tag{display:inline-flex;align-items:center;gap:var(--space-xs);margin:0;padding:3px 14px 4px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--about-line);font-size:var(--type-body);line-height:var(--leading-body)}.about-tag-note{color:var(--muted-foreground)}.about-skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:var(--space-l) var(--flow)}.about-skill h3,.about-ref-year{margin:0 0 var(--space-xs);font-size:var(--type-small);line-height:var(--leading-small);font-weight:400;letter-spacing:.02em;color:var(--muted-foreground);font-variant-numeric:tabular-nums}.about-list{margin:0;padding:0;list-style:none;columns:3 12rem;column-gap:var(--flow)}.about-list li{break-inside:avoid}.about-text p{margin:0 0 var(--space-xs)}.about-refs{display:grid;gap:var(--space-m);margin:0;padding:0;list-style:none}.about-ref{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:var(--space-2xs) var(--flow)}.about-ref-year{margin:0;padding-top:2px}.about-ref ul{display:grid;gap:var(--space-xs);margin:0;padding:0;list-style:none}.about-ref li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:0 var(--flow)}.about-ref-place{color:var(--muted-foreground)}.about-rest{margin-top:var(--space-xl)}.cv{--ppy: 112px;--bar: 10px;--lane-gap: 8px;--step: calc(var(--bar) + var(--lane-gap));--axis-x: 50%;--axis-gap: 32px;--label-gap: 16px;--cv-line: rgb(0 0 0 / .2)}.cv-heads{display:grid;grid-template-columns:1fr 1fr;gap:0 calc(2 * var(--axis-gap));margin-bottom:var(--space-l)}.cv-head[data-kind=experience]{justify-self:end}.cv-head[data-kind=education]{grid-column:2;justify-self:start}.cv-swatch{width:6px;height:14px;border-radius:999px;background:#000}.cv-head[data-kind=education] .cv-swatch{background:#fff;box-shadow:inset 0 0 0 1.5px #000}.cv-chart{position:relative;height:calc(var(--span) * var(--ppy))}.cv-axis{position:absolute;top:0;left:var(--axis-x);width:1px;height:calc(var(--span) * var(--ppy));background:var(--cv-line)}.cv-tick{position:absolute;top:calc(var(--y0) * var(--ppy));left:-4px;width:9px;height:1px;background:var(--cv-line)}.cv-year{position:absolute;top:calc(var(--y0) * var(--ppy));left:0;translate:-50% -50%;padding:3px 0;background:var(--background);font-size:var(--type-small);line-height:var(--leading-small);color:var(--muted-foreground);font-variant-numeric:tabular-nums}.cv-entries{margin:0;padding:0;list-style:none}.cv-bar{position:absolute;z-index:1;top:calc(var(--y0) * var(--ppy));right:calc(100% - var(--axis-x) + var(--axis-gap) + var(--lane) * var(--step));width:var(--bar);height:calc(var(--h) * var(--ppy));border-radius:999px;background:#000;transform-origin:top center}.cv-entry[data-kind=education] .cv-bar{right:auto;left:calc(var(--axis-x) + var(--axis-gap) + var(--lane) * var(--step));background:#fff;box-shadow:inset 0 0 0 1.5px #000}.cv-entry[data-ongoing] .cv-bar{-webkit-mask-image:linear-gradient(to bottom,transparent,#000 44px);mask-image:linear-gradient(to bottom,transparent,#000 44px)}.cv-leader{position:absolute;top:calc(var(--y0) * var(--ppy));right:calc(100% - var(--axis-x) + var(--axis-gap) + var(--lane) * var(--step) + var(--bar));width:calc((var(--le) - var(--lane)) * var(--step) - var(--lane-gap) - var(--bar) + var(--label-gap));height:max(0px,calc(var(--ly) - var(--y0) * var(--ppy)));border-top:1px solid var(--cv-line);border-left:1px solid var(--cv-line)}.cv-entry[data-kind=education] .cv-leader{right:auto;left:calc(var(--axis-x) + var(--axis-gap) + var(--lane) * var(--step) + var(--bar));width:calc((var(--ld) - var(--lane)) * var(--step) - var(--lane-gap) - var(--bar) + var(--label-gap));border-left:0;border-right:1px solid var(--cv-line)}.cv-label{position:absolute;top:calc(var(--ly) - 8px);left:0;right:calc(100% - var(--axis-x) + var(--axis-gap) + var(--le) * var(--step) - var(--lane-gap) + var(--label-gap) + 8px);display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-size:var(--type-body);line-height:1.4}.cv-entry[data-kind=education] .cv-label{left:calc(var(--axis-x) + var(--axis-gap) + var(--ld) * var(--step) - var(--lane-gap) + var(--label-gap) + 8px);right:0;align-items:flex-start;text-align:left}.cv-when{font-size:var(--type-small);line-height:16px;color:var(--muted-foreground);font-variant-numeric:tabular-nums}.cv-place{color:var(--muted-foreground)}.cv-bar,.cv-leader{transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.cv-entry:hover .cv-bar{background-color:var(--accent-color)}.cv-entry[data-kind=education]:hover .cv-bar{background-color:#fff;box-shadow:inset 0 0 0 1.5px var(--accent-color)}.cv-entry:hover .cv-leader{border-color:var(--accent-color)}.cv-undated{margin:var(--space-l) 0 0;padding:0;list-style:none}@media(max-width:1024px){.cv{--ppy: 128px;--axis-x: 16px;--axis-gap: 24px;--label-gap: 12px}.cv-heads{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.cv-bar,.cv-entry[data-kind=education] .cv-bar{right:auto;left:calc(var(--axis-x) + var(--axis-gap) + var(--g) * var(--step))}.cv-leader,.cv-entry[data-kind=education] .cv-leader{right:auto;left:calc(var(--axis-x) + var(--axis-gap) + var(--g) * var(--step) + var(--bar));width:calc((var(--le) + var(--ld) - var(--g)) * var(--step) - var(--lane-gap) - var(--bar) + var(--label-gap));border-left:0;border-right:1px solid var(--cv-line)}.cv-label,.cv-entry[data-kind=education] .cv-label{left:calc(var(--axis-x) + var(--axis-gap) + (var(--le) + var(--ld)) * var(--step) - var(--lane-gap) + var(--label-gap) + 6px);right:0;align-items:flex-start;text-align:left}}@media(prefers-reduced-motion:no-preference){@keyframes about-rise{0%{opacity:0;transform:translateY(12px)}}.about-intro .about-in{animation:about-rise .7s var(--about-ease) both;animation-delay:calc(var(--i, 0) * 60ms)}.about-part .about-in,.about-part .cv-label,.about-part .cv-leader,.about-part .cv-bar{transition:opacity .6s var(--about-ease),transform .6s var(--about-ease),background-color .2s ease;transition-delay:calc(var(--i, 0) * 50ms),calc(var(--i, 0) * 50ms),0s}.about-part .cv-bar{transition-duration:.9s,.9s,.2s;transition-delay:calc(var(--i, 0) * 50ms + .12s),calc(var(--i, 0) * 50ms + .12s),0s}[data-reveal=wait] .about-in,[data-reveal=wait] .cv-label,[data-reveal=wait] .cv-leader{opacity:0;transform:translateY(12px)}[data-reveal=wait] .cv-bar{transform:scaleY(0)}}@media(max-width:767px){.about-intro,.about-part{grid-template-columns:minmax(0,1fr)}.about-intro{justify-items:start;padding-top:var(--space-l)}.about-portrait{width:52%;max-width:200px}.about-part{gap:var(--space-m)}.about-part>.about-part-body{padding-top:0;border-top:0}.about-list{columns:2}.about-ref,.about-ref li{grid-template-columns:minmax(0,1fr)}.cv{--ppy: 132px;--bar: 8px;--lane-gap: 6px}.cv-label{font-size:14px;line-height:19px}.cv-place{font-size:var(--type-small);line-height:17px}}
