:root{--ground: #151A1F;--ground-deep: #10151A;--panel: #1C222A;--panel-raised: #222A33;--hairline: #2E3740;--hairline-soft: #232B34;--ink: #E4E8EC;--ink-dim: #9CA7B2;--ink-faint: #808C99;--signal: #F0A93B;--signal-dim: #8A6427;--limit: #A8575A;--font-sans: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--t-xs: .75rem;--t-sm: .8125rem;--t-base: 1rem;--t-md: 1.0625rem;--t-lg: 1.375rem;--t-xl: 1.75rem;--t-2xl: 2.25rem;--t-3xl: 3rem;--t-display: clamp(2.75rem, 7vw, 5.5rem);--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--s-8: 4rem;--s-9: 6rem;--s-10: 8rem;--measure: 66ch;--page-max: 84rem;--gutter: clamp(1.25rem, 4vw, 4rem)}*,*:before,*:after{box-sizing:border-box}html{background:var(--ground);-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--font-sans);font-size:var(--t-md);font-stretch:100%;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,svg,video{max-width:100%;display:block}a{color:inherit}strong,b{font-weight:600}:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:1px}::selection{background:var(--signal);color:var(--ground-deep)}.u-display{font-size:var(--t-display);font-stretch:118%;font-weight:600;line-height:.98;letter-spacing:-.025em;margin:0;text-wrap:balance}.u-h2{font-size:var(--t-2xl);font-stretch:112%;font-weight:600;line-height:1.1;letter-spacing:-.018em;margin:0;text-wrap:balance}.u-h3{font-size:var(--t-xl);font-stretch:108%;font-weight:600;line-height:1.2;letter-spacing:-.012em;margin:0;text-wrap:balance}.u-h4{font-size:var(--t-lg);font-stretch:104%;font-weight:600;line-height:1.3;margin:0}.u-lead{font-size:var(--t-lg);line-height:1.5;color:var(--ink);max-width:var(--measure);margin:0}.u-body{max-width:var(--measure)}.u-body p{margin:0 0 var(--s-4)}.u-body p:last-child{margin-bottom:0}.u-dim{color:var(--ink-dim)}.u-faint{color:var(--ink-faint)}.u-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:-.02em}.u-page{max-width:var(--page-max);margin-inline:auto;padding-inline:var(--gutter)}.u-section{padding-block:var(--s-9)}.u-section--tight{padding-block:var(--s-7)}.u-rule{border:0;border-top:1px solid var(--hairline);margin:0}.u-heading-rule{display:flex;align-items:baseline;gap:var(--s-5);margin-bottom:var(--s-6)}.u-heading-rule:after{content:"";flex:1;height:1px;background:var(--hairline);transform:translateY(-.35em)}.u-link{color:inherit;text-decoration:none;padding-bottom:2px;background:linear-gradient(var(--signal),var(--signal)) no-repeat right bottom / 0 1px,linear-gradient(var(--hairline),var(--hairline)) no-repeat left bottom / 100% 1px;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size var(--dur-normal) var(--ease-smooth),color var(--dur-fast) ease}.u-link:hover,.u-link:focus-visible{color:var(--ink);background-position:left bottom,left bottom;background-size:100% 1px,100% 1px}.u-link--quiet{background-size:0 1px,0 0}.u-link--quiet:hover,.u-link--quiet:focus-visible{background-size:100% 1px,0 0}.u-limits{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:var(--s-7)}.u-skip{position:absolute;left:-9999px;top:0;background:var(--signal);color:var(--ground-deep);padding:var(--s-3) var(--s-4);z-index:100;font-weight:600}.u-skip:focus{left:var(--s-4);top:var(--s-4)}.dim{display:flex;align-items:center;gap:var(--s-3);color:var(--ink-dim);font-size:var(--t-xs)}.dim__line{flex:1;position:relative;height:1px;background:var(--hairline);min-width:var(--s-6)}.dim__line:before,.dim__line:after{content:"";position:absolute;top:-3px;width:1px;height:7px;background:var(--hairline)}.dim__line:before{left:0}.dim__line:after{right:0}.dim__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--t-xs);color:var(--ink-dim);white-space:nowrap;letter-spacing:.01em}.bar{display:block;margin-top:var(--s-3)}.bar__track{position:relative;height:4px;background:var(--ground-deep);box-shadow:inset 0 0 0 1px var(--hairline-soft);overflow-x:clip}.bar__band{position:absolute;top:0;height:100%;background:var(--ink-faint)}.bar__limit{position:absolute;top:-3px;width:1px;height:10px;margin-left:-.5px;background:var(--limit)}.bar__needle{position:absolute;inset:0;translate:var(--at, 0) 0;pointer-events:none}.bar__mark{position:absolute;left:-1px;top:-5px;width:2px;height:14px;background:var(--signal)}.bar__ends{display:flex;justify-content:space-between;margin-top:var(--s-2);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--t-xs);color:var(--ink-faint)}:root{--dur-instant: 80ms;--dur-fast: .18s;--dur-normal: .35s;--dur-slow: .6s;--dur-crawl: 1s;--ease-smooth: cubic-bezier(.22, 1, .36, 1);--ease-sharp: cubic-bezier(.4, 0, .2, 1);--spring-snappy: linear(0, .0215 2.5%, .0756 5%, .1498 7.5%, .2348 10%, .3236 12.5%, .4115 15%, .4953 17.5%, .5727 20%, .6428 22.5%, .7051 25%, .7594 27.5%, .8062 30%, .8459 32.5%, .8793 35%, .9069 37.5%, .9295 40%, .9477 42.5%, .9623 45%, .9737 47.5%, .9826 50%, .9894 52.5%, .9944 55%, .9981 57.5%, 1.0007 60%, 1.0024 62.5%, 1.0035 65%, 1.0041 67.5%, 1.0043 70%, 1.0043 72.5%, 1.0041 75%, 1.0038 77.5%, 1.0035 80%, 1.0031 82.5%, 1.0027 85%, 1.0023 87.5%, 1.002 90%, 1.0017 92.5%, 1.0014 95%, 1.0011 97.5%, 1);--spring-snappy-dur: .51s;--spring-gentle: linear(0, .0302 2.5%, .1074 5%, .2139 7.5%, .3353 10%, .4604 12.5%, .581 15%, .6915 17.5%, .7884 20%, .87 22.5%, .9359 25%, .9869 27.5%, 1.0242 30%, 1.0496 32.5%, 1.0649 35%, 1.0722 37.5%, 1.0733 40%, 1.0699 42.5%, 1.0635 45%, 1.0552 47.5%, 1.0461 50%, 1.037 52.5%, 1.0283 55%, 1.0204 57.5%, 1.0136 60%, 1.008 62.5%, 1.0035 65%, 1 67.5%, .9976 70%, .9959 72.5%, .995 75%, .9946 77.5%, .9947 80%, .995 82.5%, .9955 85%, .9961 87.5%, .9968 90%, .9975 92.5%, .9981 95%, .9987 97.5%, 1);--spring-gentle-dur: .95s;--stagger: 70ms;--dist-sm: 8px}[data-m-i="0"]{--m-i: 0}[data-m-j="0"]{--m-j: 0}[data-m-i="1"]{--m-i: 1}[data-m-i="2"]{--m-i: 2}[data-m-i="3"]{--m-i: 3}[data-m-i="4"]{--m-i: 4}[data-m-i="5"]{--m-i: 5}[data-m-i="6"]{--m-i: 6}[data-m-i="7"]{--m-i: 7}[data-m-i="8"]{--m-i: 8}[data-m-i="9"]{--m-i: 9}[data-m-j="1"]{--m-j: 1}[data-m-j="2"]{--m-j: 2}[data-m-j="3"]{--m-j: 3}[data-m-j="4"]{--m-j: 4}[data-m-j="5"]{--m-j: 5}[data-m-j="6"]{--m-j: 6}[data-m-j="7"]{--m-j: 7}[data-m-j="8"]{--m-j: 8}[data-m-j="9"]{--m-j: 9}[data-m=line],[data-m-part=value]{display:block;overflow:hidden;padding-block:.1em .18em;margin-block:-.1em -.18em}[data-m=line]>span,[data-m-part=value]>span{display:block}@keyframes m-rise{0%{translate:0 110%}}@keyframes m-lift{0%{opacity:0;translate:0 var(--dist-sm)}}@keyframes m-fade{0%{opacity:0}}@keyframes m-draw{0%{scale:0 1}}@keyframes m-settle{0%{scale:1.06}}@keyframes m-sweep{0%{translate:0 0}}@keyframes m-open{0%{clip-path:inset(0 50%)}to{clip-path:inset(0 0)}}@media screen and (prefers-reduced-motion:no-preference){[data-m=line]>span{animation:m-rise var(--dur-slow) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger))}[data-m=lift]{animation:m-lift var(--dur-slow) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger))}[data-m=open]{animation:m-open var(--dur-crawl) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger))}[data-m=open] img{animation:m-settle calc(var(--dur-crawl) * 1.4) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger))}@supports (animation-trigger: --m play-once){[data-m=dim],[data-m=rule],[data-m=draw],[data-m=readout],[data-m=gauge]{timeline-trigger:--m view(block 0 12%) entry 0% exit 100%}[data-m=dim] .dim__line{animation:m-draw var(--dur-crawl) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger));animation-trigger:--m play-once}[data-m=dim] .dim__line:first-child{transform-origin:right}[data-m=dim] .dim__line:last-child{transform-origin:left}[data-m=dim] .dim__value{animation:m-fade var(--dur-normal) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger));animation-trigger:--m play-once}[data-m=rule]:after,[data-m=draw],[data-m=readout]:before{transform-origin:left;animation:m-draw var(--dur-crawl) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger));animation-trigger:--m play-once}[data-m=readout] [data-m-part=value]>span{animation:m-rise var(--dur-slow) var(--ease-smooth) backwards;animation-delay:calc(var(--m-i, 0) * var(--stagger) + var(--dur-fast) + var(--m-j, 0) * var(--stagger));animation-trigger:--m play-once}[data-m=gauge] .bar__band{transform-origin:left;animation:m-draw var(--dur-slow) var(--ease-smooth) backwards;animation-delay:calc(var(--m-j, 0) * var(--stagger));animation-trigger:--m play-once}[data-m=gauge] .bar__needle{animation:m-sweep var(--spring-gentle-dur) var(--spring-gentle) backwards,m-fade var(--dur-fast) linear backwards;animation-delay:calc(var(--m-j, 0) * var(--stagger) + var(--dur-normal));animation-trigger:--m play-once}}}@media screen and (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}[data-m-vt=header]{view-transition-name:site-header}[data-m-vt=tick]{view-transition-name:nav-tick}[data-m-vt=project]{view-transition-class:project}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0}}::view-transition-old(root){animation:vt-out var(--dur-fast) var(--ease-sharp) both}::view-transition-new(root){animation:vt-in var(--dur-normal) var(--ease-smooth) both}::view-transition-old(site-header){display:none}::view-transition-new(site-header){animation:none}::view-transition-group(nav-tick){animation-duration:var(--spring-snappy-dur);animation-timing-function:var(--spring-snappy)}::view-transition-group(*.project){animation-duration:var(--dur-slow);animation-timing-function:var(--ease-smooth)}::view-transition-old(*.project){animation:vt-out var(--dur-normal) linear both;mix-blend-mode:normal}::view-transition-new(*.project){animation:none;mix-blend-mode:normal}::view-transition-new(*.project):only-child{animation:m-open var(--dur-slow) var(--ease-smooth) both}::view-transition-old(*.project):only-child{animation:vt-out var(--dur-fast) var(--ease-sharp) both}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.hdr[data-astro-cid-ctg3m53h]{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--ground) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--hairline)}.hdr__inner[data-astro-cid-ctg3m53h]{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);min-height:3.75rem}.hdr__mark[data-astro-cid-ctg3m53h]{display:flex;align-items:baseline;gap:var(--s-3);text-decoration:none;min-width:0}.hdr__name[data-astro-cid-ctg3m53h]{font-size:var(--t-base);font-stretch:112%;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.hdr__role[data-astro-cid-ctg3m53h]{font-size:var(--t-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hdr__nav[data-astro-cid-ctg3m53h]{display:flex;gap:var(--s-5);flex-shrink:0}.hdr__link[data-astro-cid-ctg3m53h]{position:relative;font-size:var(--t-sm);color:var(--ink-dim);text-decoration:none;padding-block:var(--s-2);transition:color var(--dur-fast) ease}.hdr__link[data-astro-cid-ctg3m53h]:hover,.hdr__link[data-astro-cid-ctg3m53h].is-active{color:var(--ink)}.hdr__tick[data-astro-cid-ctg3m53h]{position:absolute;top:0;left:0;width:100%;height:2px;background:var(--signal)}.hdr__link[data-astro-cid-ctg3m53h]:not(.is-active):after{content:"";position:absolute;top:0;left:0;width:100%;height:2px;background:var(--hairline);transform:scaleX(0);transition:transform var(--dur-normal) var(--ease-smooth)}.hdr__link[data-astro-cid-ctg3m53h]:not(.is-active):hover:after,.hdr__link[data-astro-cid-ctg3m53h]:not(.is-active):focus-visible:after{transform:scaleX(1)}@media(max-width:34rem){.hdr__role[data-astro-cid-ctg3m53h]{display:none}.hdr__nav[data-astro-cid-ctg3m53h]{gap:var(--s-4)}}.ftr[data-astro-cid-gcn2mc3v]{border-top:1px solid var(--hairline);margin-top:var(--s-9)}.ftr__inner[data-astro-cid-gcn2mc3v]{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-4);padding-block:var(--s-6)}.ftr__note[data-astro-cid-gcn2mc3v]{margin:0;font-size:var(--t-sm)}.ftr__links[data-astro-cid-gcn2mc3v]{display:flex;flex-wrap:wrap;gap:var(--s-5)}.ftr__link[data-astro-cid-gcn2mc3v]{font-size:var(--t-sm);color:var(--ink-dim)}.ftr__link[data-astro-cid-gcn2mc3v]:hover,.ftr__link[data-astro-cid-gcn2mc3v]:focus-visible{color:var(--ink)}
