@font-face{font-family:Strichpunkt Sans;src:url(/fonts/strichpunkt-sans-latin.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}:root{--paper:#f6f6f5;--field:#fff;--ink:#0b161d;--ink-2:#1e2c40;--mute:#566477;--rule:#dadde2;--accent:teal;--accent-ink:#007070;--accent-hi:#2cc7c0;--accent-deep:#005658;--night:#121927;--night-ink:#d6ddea;--good:#0b6b3a;--bad:#ad1f2d;--sans:"Strichpunkt Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--u:calc(min(100vw, 1760px) / 1536);--d:calc(var(--u) * 372);--gut:clamp(1.25rem, 4.04vw, 4.5rem);--label:clamp(6.5rem, 7.7vw, 8.5rem);--ease:cubic-bezier(.16, 1, .3, 1);--a1:20%;--a2:12%;--a3:4.5%;color-scheme:light;scrollbar-color:#b4bac4 var(--paper);scroll-padding-top:6rem}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);caret-color:var(--accent);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.55;overflow-x:hidden}::selection{background:var(--accent);color:#fff}h1,h2,h3,p,ul,ol,figure,pre{margin:0}ul,ol{padding:0;list-style:none}img{max-width:100%;display:block}i{font-style:normal}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent-ink)}:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:4px}.vh{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:60;background:var(--ink);color:var(--paper);border-radius:10px;padding:.6rem .9rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-250%)}.skip:focus{transform:none}main{overflow-x:clip}.defs{position:absolute}.glass{backdrop-filter:blur(14px)saturate(1.8);background:linear-gradient(#ffffffa8,#e8eef766);box-shadow:inset 0 1.5px #fffffff2,inset 0 -1.5px 1px #ffffffb3,inset 0 -12px 16px -10px #28487c3d,inset 0 10px 14px -12px #28487c1f,0 14px 30px -14px #12223c61}.pill{top:max(10px, calc(var(--u) * 14));z-index:50;align-items:center;gap:calc(var(--u) * 50);height:clamp(50px, calc(var(--u) * 66), 70px);padding-inline:calc(var(--u) * 40);white-space:nowrap;border-radius:999px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.pill__mark{flex:none;display:flex}.pill__mark svg{width:auto;height:calc(clamp(50px, calc(var(--u) * 66), 70px) - 14px);display:block}.pill__mark:hover{color:inherit}.cap__title i,.proj h3 i{color:var(--accent)}.pill__nav{gap:calc(var(--u) * 34);display:flex}.pill__nav a{font-size:max(.875rem, calc(var(--u) * 17));padding-block:.4em;font-weight:500;text-decoration:none}.pill__nav a[aria-current]{text-underline-offset:.4em;font-weight:700;text-decoration:underline 2px}.pill__lens{margin-left:calc(var(--u) * 18);color:var(--mute);font:500 max(.875rem, calc(var(--u) * 13)) / 1 var(--sans);cursor:pointer;background:0 0;border:0;align-items:center;gap:.45em;padding:.4em 0;display:none}.js .pill__lens{display:inline-flex}.pill__lens:hover{color:var(--ink)}.pill__dot{transition:opacity .2s}.pill__lens[aria-pressed=false] .pill__dot{opacity:0}.pill__lens--room{margin-left:calc(var(--u) * -30);padding:.55em .3em}.pill__lens--room span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.pill__lens--room svg{width:1.15em;height:1.15em;transition:transform .5s var(--ease)}.pill__lens--room [data-when=dark],[data-theme=dark] .pill__lens--room [data-when=light]{display:none}[data-theme=dark] .pill__lens--room [data-when=dark]{display:inline}[data-theme=dark] .pill__lens--room svg{transform:rotate(180deg)}.hero{padding-bottom:calc(var(--u) * 17);position:relative}.hint{top:calc(var(--u) * 37);right:calc(var(--u) * 30);z-index:2;color:var(--mute);font-size:max(.875rem, calc(var(--u) * 13));align-items:center;gap:.7em;line-height:1;transition:opacity .4s;display:none;position:absolute}.js .hint{display:flex}.lens-moved .hint{opacity:0}.lens-off .hint{display:none}.stage{transition:--amb 1.1s var(--ease);position:relative}@property --amb{syntax:"<color>";inherits:true;initial-value:#2cc7c0}.glow{top:calc(var(--u) * -590);left:calc(var(--u) * -850);z-index:-1;width:calc(var(--u) * 1700);height:calc(var(--u) * 1180);background:radial-gradient(closest-side, color-mix(in oklab, var(--amb) var(--a1), transparent), color-mix(in oklab, var(--amb) var(--a2), transparent) 36%, color-mix(in oklab, var(--amb) var(--a3), transparent) 68%, transparent);opacity:0;pointer-events:none;transition:opacity .9s var(--ease);will-change:transform;border-radius:50%;position:absolute}.is-lit>.glow{opacity:1}.lens-off .glow{display:none}.sheet{padding-top:calc(var(--u) * 100)}.sheet h1{margin-left:calc(var(--u) * 58);font-size:calc(var(--u) * 133);letter-spacing:-.025em;white-space:nowrap;font-weight:700;line-height:.78}.lede{margin:calc(var(--u) * 11) 0 0 calc(var(--u) * 62);color:var(--ink-2);font-size:max(1rem, calc(var(--u) * 22.5));font-weight:500;line-height:1.4}.mosaic{margin-top:calc(var(--u) * 10);overscroll-behavior-x:contain;scrollbar-width:none;overflow:auto hidden}.mosaic::-webkit-scrollbar{display:none}.reel{gap:calc(var(--u) * 6);width:max-content;padding-inline:calc(var(--u) * 2);display:grid}.row{gap:calc(var(--u) * 4);display:flex}.row--a{--h:calc(var(--u) * 322)}.row--b{--h:calc(var(--u) * 206)}.tile{width:calc(var(--h) * var(--ar));height:var(--h);background:var(--night);color:var(--night-ink);-webkit-user-select:none;user-select:none;border-radius:3px;flex:none;text-decoration:none;display:block;position:relative;overflow:hidden}.tile:hover{color:var(--night-ink)}.tile:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;box-shadow:inset 0 0 0 5px #fff}.mosaic.is-panning{cursor:grabbing}.pan{bottom:calc(var(--u) * 267 - 1.5rem);z-index:4;width:3rem;height:3rem;color:var(--ink);cursor:pointer;--mx:50%;--my:0%;--lit:0;isolation:isolate;transition:transform .25s var(--ease), --lit .4s var(--ease);border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute}.pan[hidden]{display:none}.pan:before{content:"";border-radius:inherit;background:radial-gradient(circle 2.6rem at var(--mx) var(--my), rgb(255 255 255/calc(1 * var(--lit))), rgb(255 255 255/calc(.35 * var(--lit))) 50%, #fff0);-webkit-mask-composite:xor;pointer-events:none;padding:1.5px;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.pan:after{content:"";z-index:-1;border-radius:inherit;background:radial-gradient(circle 2.2rem at var(--mx) var(--my), rgb(255 255 255/calc(.6 * var(--lit))), rgb(255 255 255/calc(.2 * var(--lit))) 55%, #fff0);pointer-events:none;position:absolute;inset:0}.pan--prev{left:calc(var(--u) * 16)}.pan--next{right:calc(var(--u) * 16)}.pan:hover{--lit:1;transform:scale(1.07)}.pan:active{transform:scale(.96)}.tile>img{object-fit:cover;object-position:0 0;transform-origin:30% 30%;width:100%;height:100%;transition:transform .8s var(--ease), filter .3s}.tile:hover>img,.tile:focus-visible>img{filter:brightness(1.07);transform:scale(1.05)}.tile:after{content:"";opacity:0;pointer-events:none;background:linear-gradient(100deg,#fff0,#ffffff38 42%,#ffffff80 50%,#ffffff38 58%,#fff0);width:50%;position:absolute;top:-20%;bottom:-20%;left:-70%;transform:skew(-14deg)}@media (prefers-reduced-motion:no-preference){.tile{animation:deal .66s var(--ease) backwards;animation-delay:calc(min(var(--i,0), 8) * 48ms + 90ms)}.tile:hover:after{animation:sheen .95s var(--ease)}}@keyframes deal{0%{opacity:0;filter:blur(5px);transform:translateY(1.1rem)scale(.95)}}@keyframes sheen{0%{opacity:1;transform:translate(0)skew(-14deg)}to{opacity:1;transform:translate(460%)skew(-14deg)}}.tile__over{gap:calc(var(--u) * 6);padding:calc(var(--u) * 46) calc(var(--u) * 15) calc(var(--u) * 13);color:#fff;background:linear-gradient(#07101a00,#07101a9e 32%,#07101af0 65%);display:grid;position:absolute;inset:auto 0 0}.tile__over b{-webkit-line-clamp:3;line-clamp:3;font-size:max(.72rem, calc(var(--u) * 19.5));letter-spacing:-.015em;-webkit-box-orient:vertical;line-height:1.12;display:-webkit-box;overflow:hidden}.tile__over time{font-size:max(.6rem, calc(var(--u) * 11.5));font-variant-numeric:tabular-nums}.tile--code{padding:calc(var(--u) * 11) calc(var(--u) * 13)}.tile__file{color:#a9b6ca;font-size:max(.56rem, calc(var(--u) * 11.5));align-items:center;gap:.55em;line-height:1;display:flex}.tile__file:before{content:"";background:var(--accent-hi);border-radius:50%;width:.62em;height:.62em}.tile--code pre{margin-top:calc(var(--u) * 9);font-family:var(--mono);font-size:max(.5625rem, calc(var(--u) * 10.4));white-space:pre;line-height:1.6}.tile--code code{font-family:inherit}.tile--code .k{color:#6fd9d2}.tile--code .s{color:#eac98f}.tile--code .c{color:#8391a8}.loupe{z-index:5;visibility:hidden;will-change:transform;width:0;height:0;position:absolute;top:0;left:0}.lens-ready .loupe{visibility:visible}.lens-off .loupe{display:none}.lens{top:calc(var(--d) / -2);left:calc(var(--d) / -2);width:var(--d);height:var(--d);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:50%;position:absolute}.lens.is-held{cursor:grabbing}.lens-held,.lens-held *{-webkit-user-select:none;user-select:none}.sheet img{-webkit-user-drag:none}.lens:focus-visible{outline-offset:7px;border-radius:50%}.lens.by-hand:focus-visible{outline:none}.lens__view{background:var(--paper);clip-path:circle(50%);border-radius:50%;position:absolute;inset:0;overflow:hidden}.lens__warp{position:absolute;inset:-42.5%;overflow:hidden}.lens__ring{background:var(--paper);border-radius:50%;position:absolute;inset:0;overflow:hidden}.lens__view.is-bent .lens__warp{filter:url(#lens-warp)}.lens__view,.lens__ring{transition:background-color .9s var(--ease)}.is-lit .lens__view,.is-lit .lens__ring{background-color:color-mix(in oklab, var(--amb) var(--a1), var(--paper))}.sheet--copy .mosaic{overflow:hidden}.sheet--copy{transform-origin:0 0;pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.lens__glass{box-shadow:inset 0 0 0 1.5px #ffffffd9, inset 0 5px 12px #ffffff8c, inset 0 -16px 28px -8px #1434685c, inset 12px 0 22px -14px #0076ff4d, inset -12px 0 22px -14px #ff7a5229, 0 calc(var(--d) * .07) calc(var(--d) * .12) calc(var(--d) * -.05) #0c1c3880, 0 4px 10px #0c1c3829;pointer-events:none;background:radial-gradient(60% 46% at 30% 15%,#ffffff80,#fff0 70%),radial-gradient(closest-side,#fff0 80%,#fff3 90%,#ffffff9e 96.5%,#d6e4f6e6 100%);border-radius:50%;position:absolute;inset:0}.lens__glass:before{content:"";border:calc(var(--d) * .011) solid transparent;filter:blur(.6px);border-top-color:#fffffff2;border-radius:50%;position:absolute;inset:3.2%;transform:rotate(-38deg)}.lens__glass:after{content:"";border:calc(var(--d) * .016) solid transparent;filter:blur(1.4px);border-bottom-color:#ffffff8c;border-radius:50%;position:absolute;inset:2.4%;transform:rotate(-42deg)}.cap{top:calc(var(--d) * .3);left:calc(var(--d) * .33);width:max(12.5rem, calc(var(--u) * 222));padding:calc(var(--u) * 22) calc(var(--u) * 26) calc(var(--u) * 20);border-radius:max(1.25rem, calc(var(--u) * 28));background:linear-gradient(#ffffffd1,#eef2f9b3);position:absolute}.loupe[data-side=left] .cap{right:calc(var(--d) * .33);left:auto}.cap__title{font-size:max(1.3rem, calc(var(--u) * 27));letter-spacing:-.03em;font-weight:700;line-height:1.05}.cap__line{color:var(--ink-2);font-size:max(.84rem, calc(var(--u) * 15));margin-top:.45em;line-height:1.3}.cap__link{color:var(--accent-ink);font-size:max(.84rem, calc(var(--u) * 15));margin-top:.6em;font-weight:700;display:inline-block}.cap__link:hover{color:var(--accent-deep)}@media (prefers-reduced-motion:no-preference){.cap.is-new>*{animation:cap-in .42s var(--ease) both}.cap.is-new>:nth-child(2){animation-delay:40ms}.cap.is-new>:nth-child(3){animation-delay:80ms}}@keyframes cap-in{0%{opacity:0;filter:blur(5px);transform:translateY(4px)}}.pill,.tags li{--mx:50%;--my:0%;--lit:0;isolation:isolate;transition:--lit .4s var(--ease)}.tags li{position:relative}.pill:before,.tags li:before,.pill:after,.tags li:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0}.pill:before,.tags li:before{-webkit-mask-composite:xor;padding:1.5px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.pill:after,.tags li:after{z-index:-1}.pill:before{background:radial-gradient(circle 9rem at var(--mx) var(--my), rgb(255 255 255/calc(1 * var(--lit))), rgb(255 255 255/calc(.4 * var(--lit))) 50%, #fff0)}.pill:after{background:radial-gradient(circle 8rem at var(--mx) var(--my), rgb(255 255 255/calc(.55 * var(--lit))), rgb(255 255 255/calc(.18 * var(--lit))) 55%, #fff0)}.tags li:before{background:radial-gradient(circle 3.5rem at var(--mx) var(--my), rgb(86 100 119/calc(.9 * var(--lit))), rgb(86 100 119/calc(.3 * var(--lit))) 55%, #56647700);padding:1px;inset:-1px}.tags li:after{background:radial-gradient(circle 3rem at var(--mx) var(--my), rgb(255 255 255/calc(1 * var(--lit))), rgb(255 255 255/calc(.5 * var(--lit))) 60%, #fff0)}@media (hover:hover){.pill:hover,.tags li:hover{--lit:1}}@property --lit{syntax:"<number>";inherits:true;initial-value:0}.act{margin-top:calc(var(--u) * 18);justify-content:center;display:flex}.cta{min-height:clamp(52px, calc(var(--u) * 64), 68px);padding:0 clamp(1.75rem, calc(var(--u) * 54), 3.6rem);color:#fff;font:700 max(1rem, calc(var(--u) * 19)) / 1 var(--sans);letter-spacing:-.01em;cursor:pointer;--mx:50%;--my:0%;--lit:0;isolation:isolate;transition:transform .25s var(--ease), box-shadow .25s var(--ease), --lit .4s var(--ease);background:linear-gradient(#008383,#007577);border:0;border-radius:999px;justify-content:center;align-items:center;gap:.7em;text-decoration:none;display:inline-flex;position:relative;box-shadow:inset 0 0 0 1px #ffffff1a,0 12px 24px -14px #0b161d80,0 1px 2px #0b161d2e}.cta:before{content:"";border-radius:inherit;background:radial-gradient(circle 7rem at var(--mx) var(--my), rgb(255 255 255/calc(.95 * var(--lit))), rgb(255 255 255/calc(.3 * var(--lit))) 45%, #fff0), linear-gradient(160deg, #ffffffd9, #ffffff1f 28%, #fff0 55%, #fff6);-webkit-mask-composite:xor;opacity:.75;pointer-events:none;padding:1.5px;transition:opacity .25s;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.cta:after{content:"";z-index:-1;border-radius:inherit;background:radial-gradient(circle 6rem at var(--mx) var(--my), rgb(255 255 255/calc(.14 * var(--lit))), rgb(255 255 255/calc(.05 * var(--lit))) 55%, #fff0), linear-gradient(rgb(0 40 44/calc(.2 * var(--lit))) 0 0);pointer-events:none;position:absolute;inset:0}.cta svg{transition:transform .3s var(--ease)}.cta:hover{color:#fff}.cta:hover:not([disabled]){--lit:1;transform:translateY(-1px);box-shadow:inset 0 0 0 1px #fff3,0 18px 28px -14px #0b161d8c,0 2px 4px #0b161d33}.cta:hover:not([disabled]):before{opacity:1}.cta:hover:not([disabled]) svg{transform:translate(4px)}.cta:active:not([disabled]){transform:scale(.975)}.cta:focus-visible{outline-offset:4px;border-radius:999px}.cta[disabled]{filter:saturate(.4)brightness(.92);cursor:progress}.band{grid-template-columns:var(--label) minmax(0, 1fr);margin-inline:var(--gut);border-top:1px solid var(--rule);column-gap:1.5rem;padding-block:.85rem clamp(4.5rem,9vw,8rem);display:grid}.band>h2{font-size:1.0625rem;font-weight:700;line-height:1.3}.band__body{min-width:0;padding-top:clamp(1.25rem,3vw,2.75rem)}.band__body p{max-width:62ch;color:var(--ink-2)}.band__body p+p{margin-top:1em}.band h3{letter-spacing:-.015em;margin:2.2em 0 .5em;font-size:1.375rem;line-height:1.2}.band .lead{max-width:21ch;color:var(--ink);letter-spacing:-.03em;text-wrap:balance;margin-bottom:.7em;font-size:clamp(1.9rem,3.5vw,3.4rem);font-weight:700;line-height:1.04}.band--skills{padding-bottom:clamp(3.5rem,6.5vw,6rem)}.band--skills .band__body{padding-top:.55rem}.skills{grid-template-columns:repeat(8,minmax(0,1fr));gap:1.5rem .75rem;display:grid}.skills li{grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:.6rem;display:grid}.skills img{filter:brightness(0);opacity:.88;grid-row:span 2;width:2rem;height:2rem}.skills__name{font-size:max(1rem, calc(var(--u) * 19));letter-spacing:-.015em;font-weight:700;line-height:1.15}.skills__num{color:var(--mute);font-variant-numeric:tabular-nums;font-size:.875rem;line-height:1.2}.band__body .note{color:var(--mute);margin-top:1.4rem;font-size:.875rem}.about{grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:3rem clamp(2rem,6vw,6rem);display:grid}.ipa{white-space:nowrap}.about__face{border-radius:50%;place-self:start end;width:min(100%,19rem);position:relative}.about__face img{width:100%;height:auto;image-rendering:pixelated;border-radius:50%}.about__face:after{content:"";background:radial-gradient(60% 46% at 30% 15%,#ffffff6b,#fff0 70%);border-radius:50%;position:absolute;inset:0;box-shadow:inset 0 0 0 1.5px #ffffffd9,inset 0 5px 12px #ffffff80,inset 0 -16px 28px -8px #14346857,0 22px 40px -22px #0c1c3880}.tl{grid-template-columns:clamp(13rem,30%,19rem) minmax(0,1fr);column-gap:clamp(1.25rem,2.5vw,2.5rem);max-width:78rem;margin-top:clamp(1.8rem,3.4vw,3rem);display:grid}.tl__axis{grid-column:2;grid-template-columns:repeat(var(--n), minmax(0, 1fr));color:var(--mute);font-variant-numeric:tabular-nums;font-size:.875rem;display:grid}.tl__axis span{border-left:1px solid var(--rule);white-space:nowrap;grid-row:1;padding:0 0 .6rem .45rem}.tl__axis .tl__now{border-left:0;border-right:1px solid var(--rule);color:var(--accent-ink);grid-column:-2;justify-self:end;padding:0 .45rem .6rem 0;font-weight:700}.tl__rows{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.tl__rows>li{grid-column:1/-1;grid-template-columns:subgrid;border-top:1px solid var(--rule);display:grid}.tl__info{padding-block:1.15rem 1.35rem}.band__body .tl__what{color:var(--ink);letter-spacing:-.015em;font-size:1.25rem;font-weight:700;line-height:1.25}.band__body .tl__where{color:var(--mute);font-variant-numeric:tabular-nums;flex-wrap:wrap;column-gap:.8rem;margin-top:.25rem;display:flex}.tl__where b{color:var(--ink-2);font-weight:500}.tl .tags{margin-top:.8rem}.tl__track{grid-template-columns:repeat(var(--n), minmax(0, 1fr));background:var(--grid);align-items:center;display:grid}.tl__bar{background:var(--ink);border-radius:2px;height:.75rem}.tl__bar--now{background:var(--accent)}.article{grid-template-columns:var(--label) minmax(0, 1fr);margin-inline:var(--gut);column-gap:1.5rem;padding-block:clamp(7.5rem,13vw,11rem) clamp(4rem,8vw,7rem);display:grid}.article>*{grid-column:2;min-width:0}.back{color:var(--accent-ink);align-items:center;gap:.4em;margin-bottom:2.2rem;font-weight:700;display:inline-flex}.back:hover{color:var(--accent-deep)}.article__head time{color:var(--mute);font-variant-numeric:tabular-nums;font-size:.9375rem;display:block}.article__head h1{letter-spacing:-.035em;text-wrap:balance;max-width:17ch;margin:.5rem 0 1.4rem;font-size:clamp(2.5rem,5.4vw,5.2rem);line-height:.96}.article__cover{border-radius:10px;width:100%;max-width:62rem;height:auto;margin-block:clamp(2rem,4vw,3.5rem)}.article__act{margin-top:clamp(2.5rem,5vw,4rem)}.prose{max-width:68ch;color:var(--ink-2);font-size:1.125rem;line-height:1.65}.prose>h1:first-child{display:none}.prose h1,.prose h2{color:var(--ink);letter-spacing:-.025em;text-wrap:balance;margin:2.1em 0 .6em;font-size:clamp(1.6rem,2.4vw,2.1rem);line-height:1.1}.prose h3,.prose h4{color:var(--ink);letter-spacing:-.015em;margin:1.9em 0 .5em;font-size:1.375rem;line-height:1.2}.prose p,.prose ul,.prose ol,.prose pre,.prose blockquote{margin:0 0 1.15em}.prose ul,.prose ol{padding-left:1.3em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li+li{margin-top:.35em}.prose a{color:var(--accent-ink)}.prose a:hover{color:var(--accent-deep)}.prose strong{color:var(--ink)}.prose code{font-family:var(--mono);background:#e8ebf0;border-radius:4px;padding:.1em .35em;font-size:.88em}.prose pre{border-radius:10px;padding:1.1rem 1.3rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose blockquote{border-left:1px solid var(--rule);color:var(--ink);padding-left:1.2em;font-size:1.25rem;font-weight:500;line-height:1.4}.prose img{border-radius:10px;height:auto}.prose hr{border:0;border-top:1px solid var(--rule);margin-block:2.5em}.proj{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:1.75rem clamp(1.75rem,4.5vw,4.5rem);scroll-margin-top:6rem;display:grid}.proj+.proj{margin-top:clamp(3.5rem,8vw,7rem)}.proj:nth-child(2n) .shot{order:2}.shot{position:relative}.shot:before{content:"";z-index:-1;background:radial-gradient(closest-side, color-mix(in oklab, var(--tint,transparent) var(--a1), transparent), color-mix(in oklab, var(--tint,transparent) var(--a2), transparent) 40%, color-mix(in oklab, var(--tint,transparent) var(--a3), transparent) 70%, transparent);pointer-events:none;border-radius:50%;position:absolute;inset:-22% -16%}.shot img{width:100%;height:auto;transition:transform .6s var(--ease), box-shadow .6s var(--ease);border-radius:10px;box-shadow:0 26px 48px -30px #0b161d8c}.shot:hover img{transform:translateY(-5px);box-shadow:0 38px 56px -30px #0b161d99}.shot__loupe{background-color:var(--paper);opacity:0;pointer-events:none;background-repeat:no-repeat;border-radius:50%;width:11rem;height:11rem;transition:opacity .2s;position:absolute;top:0;left:0;box-shadow:inset 0 0 0 1.5px #ffffffd9,inset 0 5px 12px #ffffff80,inset 0 -14px 24px -8px #14346861,0 18px 30px -14px #0c1c388c}.shot.is-zoomed .shot__loupe{opacity:1}@media (hover:hover){.js .shot{cursor:zoom-in}}.shot:focus-visible{outline-offset:6px;border-radius:12px}.zoom{--pad:clamp(1rem, 4vw, 3rem);width:100%;max-width:none;height:100%;max-height:none;padding:var(--pad);cursor:zoom-out;background:0 0;border:0;margin:0;overflow:hidden}.zoom[open]{place-items:center;display:grid}.zoom::backdrop{backdrop-filter:blur(10px)saturate(1.2);background:#f6f6f5d6}.zoom__img{width:auto;height:auto;max-width:min(100vw - 2 * var(--pad), 1600px);max-height:calc(100dvh - 2 * var(--pad));transform-origin:0 0;background-size:cover;border-radius:12px;box-shadow:0 40px 80px -36px #0b161d99}.zoom__close{top:max(1rem, env(safe-area-inset-top));right:max(1rem, env(safe-area-inset-right));width:3rem;height:3rem;color:var(--ink);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed}@media (prefers-reduced-motion:no-preference){.zoom[open]::backdrop{animation:zoom-dim .4s var(--ease)}.zoom.is-closing::backdrop{opacity:0;transition:opacity .38s var(--ease)}.zoom__close{transition:opacity .3s var(--ease)}.zoom.is-closing .zoom__close{opacity:0}}@keyframes zoom-dim{0%{opacity:0}}:root:has(.zoom[open]){overflow:hidden}.proj h3{letter-spacing:-.035em;align-items:center;gap:.3em;margin:0;font-size:clamp(2.3rem,4.3vw,3.9rem);line-height:1;display:flex}.proj h3 i{margin-left:-.3em}.proj__logo{border-radius:22%;width:.72em;height:.72em}.proj__logo[data-when=dark],[data-theme=dark] .proj__logo[data-when=light]{display:none}[data-theme=dark] .proj__logo[data-when=dark]{display:block}.band__body .proj__line{color:var(--ink);margin-top:.9rem;font-size:1.25rem;font-weight:500;line-height:1.3}.tags{flex-wrap:wrap;gap:.4rem;margin-top:1.3rem;display:flex}.tags li{border:1px solid var(--rule);color:var(--ink-2);border-radius:999px;padding:.22rem .72rem;font-size:.875rem}.go{color:var(--accent-ink);align-items:center;gap:.35em;margin-top:1.4rem;font-weight:700;display:inline-flex}.go:hover{color:var(--accent-deep)}.go svg{transition:transform .3s var(--ease)}.go:hover svg{transform:translate(2px,-2px)}.posts{grid-template-columns:repeat(2,minmax(0,1fr));gap:3rem clamp(1.75rem,4.5vw,4.5rem);display:grid}.post__cover{margin-bottom:1.1rem;display:block}.post__cover img{aspect-ratio:16/10;object-fit:cover;width:100%;height:auto;transition:transform .6s var(--ease), box-shadow .6s var(--ease);border-radius:10px}.post:hover .post__cover img,.post:focus-within .post__cover img{transform:translateY(-6px)rotate(-.8deg);box-shadow:0 30px 44px -26px #0b161d8c}@media (prefers-reduced-motion:no-preference){.motion .proj .shot,.motion .proj__text>*,.motion .post{transition:opacity .7s var(--ease), transform .9s var(--ease), filter .7s var(--ease)}.motion .proj:not(.is-in) .shot{opacity:0;filter:blur(6px);transform:translateY(2.2rem)rotate(-1.5deg)scale(.97)}.motion .proj:nth-child(2n):not(.is-in) .shot{transform:translateY(2.2rem)rotate(1.5deg)scale(.97)}.motion .proj:not(.is-in) .proj__text>*{opacity:0;transform:translateY(.9rem)}.motion .proj.is-in .proj__text>:first-child{transition-delay:.14s}.motion .proj.is-in .proj__text>:nth-child(2){transition-delay:.2s}.motion .proj.is-in .proj__text>:nth-child(3){transition-delay:.26s}.motion .proj.is-in .proj__text>:nth-child(4){transition-delay:.32s}.motion .proj.is-in .proj__text>:nth-child(5){transition-delay:.38s}.motion .post:not(.is-in){opacity:0;filter:blur(5px);transform:translateY(1.6rem)rotate(-1deg)}.motion .post.is-in:nth-child(2n){transition-delay:.1s}}.post time{color:var(--mute);font-variant-numeric:tabular-nums;font-size:.875rem}.band .post h3{letter-spacing:-.025em;text-wrap:balance;margin:.3rem 0 .6rem;font-size:clamp(1.4rem,2.1vw,1.9rem);line-height:1.12}.post h3 a{text-decoration:none}.post h3 a:hover{text-decoration:underline 2px}.post p{-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.band--contact{padding-bottom:clamp(3.5rem,7vw,6rem)}.contact{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:2.5rem clamp(2rem,6vw,6rem);display:grid}.socials{flex-wrap:wrap;gap:.5rem 1.4rem;margin-top:1.8rem;font-weight:700;display:flex}.form{gap:1.1rem;display:grid}.field{gap:.4rem;display:grid}.field>span{font-size:.9375rem;font-weight:700}.field input[type=text],.field input[type=email],.field textarea{background:var(--field);width:100%;color:var(--ink);font:inherit;border:1px solid #b9c0ca;border-radius:12px;padding:.85rem 1rem;transition:border-color .2s,box-shadow .2s}.field textarea{resize:vertical;min-height:9.5rem}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #0080803d}.field--check{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.7rem}.field--check input{width:1.2rem;height:1.2rem;accent-color:var(--accent);margin:.2rem 0 0}.field--check>span{color:var(--ink-2);font-weight:400}.trap{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.cta--form{justify-self:start;margin-top:.3rem}.say{min-height:1.5em;font-weight:500}.say[data-kind=ok]{color:var(--good)}.say[data-kind=bad]{color:var(--bad)}.foot{margin-inline:var(--gut);border-top:1px solid var(--rule);color:var(--mute);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;gap:.4rem 1.5rem;padding-block:1.2rem 2.2rem;font-size:.875rem;display:flex}[data-theme=dark]{--paper:#07090e;--field:#131a25;--ink:#eef1f5;--ink-2:#c5cdd9;--mute:#9aa6b8;--rule:#212a38;--accent-ink:#3fd0c9;--accent-deep:#8be6e0;--night:#161f30;--good:#62d39b;--bad:#ff8f97;--a1:54%;--a2:27%;--a3:9%;color-scheme:dark;scrollbar-color:#3a4658 var(--paper)}[data-theme=dark] :focus-visible{outline-color:var(--accent-hi)}[data-theme=dark] .cap__title i,[data-theme=dark] .proj h3 i{color:var(--accent-hi)}[data-theme=dark] .glass{background:linear-gradient(#36425685,#141b2794);box-shadow:inset 0 1px #ffffff47,inset 0 -1px #ffffff12,inset 0 -12px 16px -10px #0000006b,0 16px 32px -14px #000000bf}[data-theme=dark] .cap{background:linear-gradient(#242d3cdb,#101620d1)}[data-theme=dark] .pill:after{background:radial-gradient(circle 8rem at var(--mx) var(--my), rgb(255 255 255/calc(.16 * var(--lit))), rgb(255 255 255/calc(.05 * var(--lit))) 55%, #fff0)}[data-theme=dark] .pan:after{background:radial-gradient(circle 2.2rem at var(--mx) var(--my), rgb(255 255 255/calc(.2 * var(--lit))), rgb(255 255 255/calc(.06 * var(--lit))) 55%, #fff0)}[data-theme=dark] .tags li:before{background:radial-gradient(circle 3.5rem at var(--mx) var(--my), rgb(214 224 238/calc(.9 * var(--lit))), rgb(214 224 238/calc(.3 * var(--lit))) 55%, #d6e0ee00)}[data-theme=dark] .tags li:after{background:radial-gradient(circle 3rem at var(--mx) var(--my), rgb(255 255 255/calc(.13 * var(--lit))), rgb(255 255 255/calc(.05 * var(--lit))) 60%, #fff0)}[data-theme=dark] .lens__glass{box-shadow:inset 0 0 0 1.5px #ffffff9e, inset 0 5px 12px #ffffff3d, inset 0 -16px 28px -8px #00000080, inset 12px 0 22px -14px #0076ff6b, inset -12px 0 22px -14px #ff7a5242, 0 calc(var(--d) * .07) calc(var(--d) * .12) calc(var(--d) * -.05) #000000d9, 0 4px 10px #00000073;background:radial-gradient(60% 46% at 30% 15%,#ffffff3d,#fff0 70%),radial-gradient(closest-side,#fff0 80%,#ffffff1a 90%,#ffffff5c 96.5%,#c4d8f6b8 100%)}[data-theme=dark] .about__face:after{box-shadow:inset 0 0 0 1.5px #fff9,inset 0 5px 12px #ffffff4d,inset 0 -16px 28px -8px #00000080,0 22px 40px -22px #000000e6}[data-theme=dark] .zoom::backdrop{background:#07090ee0}[data-theme=dark] .zoom__img{box-shadow:0 40px 80px -30px #000}[data-theme=dark] .shot__loupe{box-shadow:inset 0 0 0 1.5px #ffffff9e,inset 0 5px 12px #ffffff4d,inset 0 -14px 24px -8px #00000080,0 18px 30px -14px #000000e6}[data-theme=dark] .skills img{filter:none;opacity:.92}[data-theme=dark] .tl__bar--now{background:var(--accent-hi)}[data-theme=dark] .shot img{box-shadow:0 26px 48px -28px #000000f2}[data-theme=dark] .shot:hover img{box-shadow:0 38px 56px -28px #000}[data-theme=dark] .post:hover .post__cover img,[data-theme=dark] .post:focus-within .post__cover img{box-shadow:0 30px 44px -24px #000000f2}[data-theme=dark] .prose :not(pre)>code{background:#1c2533}[data-theme=dark] .field input[type=text],[data-theme=dark] .field input[type=email],[data-theme=dark] .field textarea{border-color:#3a4658}[data-theme=dark] .field input:focus-visible,[data-theme=dark] .field textarea:focus-visible{border-color:var(--accent-hi);box-shadow:0 0 0 3px #2cc7c047}[data-theme=dark] .field--check input{accent-color:var(--accent-hi)}@media (width>=761px){[data-theme=dark] .glow{top:calc(var(--u) * -660)}}@media (prefers-reduced-motion:reduce){.stage,.glow,.lens__view,.lens__ring,.pill__lens--room svg{transition:none}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}.pill{view-transition-name:pill}.article__cover{view-transition-name:post-cover}::view-transition-old(root),::view-transition-new(root){animation-duration:.32s}::view-transition-group(post-cover){animation-duration:.6s;animation-timing-function:cubic-bezier(.16,1,.3,1)}::view-transition-old(post-cover),::view-transition-new(post-cover){object-fit:cover;width:100%;height:100%;animation-duration:.6s}::view-transition-group(pill){animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1)}}@media (width<=1240px){.js .hint{display:none}}@media (width<=1100px){.skills{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=760px){:root{--u:calc(100vw / 390);--d:58vw;--label:1fr}.pill{justify-content:space-between;gap:.6rem;padding-inline:1rem .95rem;left:10px;right:10px;transform:none}.pill__mark svg{height:2.25rem}.pill__nav{gap:clamp(.5rem,2.6vw,.9rem)}.pill__nav a{font-size:.875rem}.js .pill__lens,.js .hint{display:none}.js .pill__lens--room{flex:none;margin-left:0;padding:.6rem .15rem;font-size:1rem;display:inline-flex}.glow{top:calc(var(--u) * -350);left:calc(var(--u) * -280);width:calc(var(--u) * 560);height:calc(var(--u) * 700)}.sheet{padding-top:5.4rem}.sheet h1{white-space:normal;text-wrap:balance;margin-inline:1rem;font-size:14.2vw;line-height:.9}.lede{margin:.9rem 1rem 0;font-size:1.0625rem}.mosaic{margin-top:1.2rem}.reel{gap:3px;padding-inline:3px}.row{gap:3px}.row--a{--h:46vw}.row--b{--h:30vw}.pan{display:none}.tile__over b{font-size:.875rem}.tile--code pre{font-size:.5625rem}.cap,.loupe[data-side=left] .cap{top:calc(var(--d) * .53);width:13rem;transform:translateX(var(--cap-x,0px));padding:.9rem 1.1rem;left:-6.5rem;right:auto}.loupe[data-hang=up] .cap{top:auto;bottom:calc(var(--d) * .53)}.act{margin:1.4rem 1rem 0}.lens-ready:not(.lens-off) .act{margin-top:7.5rem}.cta{width:100%}.hero{padding-bottom:1.6rem}.band{grid-template-columns:minmax(0,1fr)}.band__body,.band--skills .band__body{padding-top:1.2rem}.skills{grid-template-columns:repeat(2,minmax(0,1fr))}.about,.proj,.posts,.contact{grid-template-columns:minmax(0,1fr)}.about__face{order:-1;justify-self:start;width:11rem}.proj:nth-child(2n) .shot{order:0}.tl{grid-template-columns:minmax(0,1fr)}.tl__axis{grid-column:1}.tl__info{padding-bottom:.7rem}.tl__track{height:2.25rem;margin-bottom:1.2rem}.article{grid-template-columns:minmax(0,1fr);padding-top:6.5rem}.article>*{grid-column:1}.pill__nav{scrollbar-width:none;min-width:0;overflow-x:auto}.pill__nav::-webkit-scrollbar{display:none}.cta--form{justify-self:stretch}}
