:root{--paper:#f2f2f2;--ink:#15171c;--muted:#5a5d66;--rule:#15171c2e;--accent:#2c5c62;--nebula:url(/nebula-accent.jpg) 50% 50% / cover fixed;--nebula-local:url(/nebula-accent.jpg) 30% 50% / 760px auto}@media (hover:none){:root{--nebula:url(/nebula-accent.jpg) 30% 50% / 760px auto}}html[data-img] .window,html[data-img] .name,html[data-img] h2,html[data-img] strong,html[data-img] .project,html[data-img] .contact a{-webkit-text-stroke:.01px transparent}html[data-img="2"] .window,html[data-img="2"] .name,html[data-img="2"] h2,html[data-img="2"] strong,html[data-img="2"] .project,html[data-img="2"] .contact a{-webkit-text-stroke:.02px transparent}*,:before,:after{box-sizing:border-box}html{background:var(--paper);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Archivo,system-ui,sans-serif}a{color:var(--ink);-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:4px;text-decoration-thickness:1px;transition:color .15s,text-decoration-color .15s}a:hover{color:var(--accent);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}h1,h2{text-wrap:balance}p,li{text-wrap:pretty}.page{max-width:760px;margin:0 auto;padding:96px 32px 72px}.name,.headline,h2{text-transform:uppercase;font-weight:900;font-stretch:62%}.name{letter-spacing:.05em;margin:0;font-size:22px;font-weight:800}.headline{letter-spacing:-.005em;margin:40px 0 0;font-size:clamp(56px,10vw,112px);line-height:.86}.window{color:var(--ink)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.window{--gx:calc(50% + var(--nx,0) * 42%);--gy:calc(45% + var(--ny,0) * 30%);background-image:radial-gradient(circle 1.4em at var(--gx) var(--gy), rgb(255 230 200/calc(var(--pulse,.7) * .85)), rgb(255 168 112/calc(var(--pulse,.7) * .3)) 45%, transparent 72%), url(/supernova.jpg);background-repeat:no-repeat;background-size:100% 100%,150%;background-position:0 0, calc(50% + var(--nx,0) * 22%) calc(50% + var(--ny,0) * 34%);color:#0000;-webkit-background-clip:text;background-clip:text;animation:1.9s cubic-bezier(.16,1,.3,1) .5s both ignite}}.headline .w{animation:.9s cubic-bezier(.16,1,.3,1) both rise;animation-delay:calc(var(--i) * 70ms);display:inline-block}@keyframes rise{0%{opacity:0;filter:blur(8px);transform:translateY(.35em)}}@keyframes ignite{0%{filter:brightness(3)saturate(.4);opacity:0;background-size:100% 100%,700%}35%{opacity:1}}.intro{max-width:34em;color:var(--muted);margin:18px 0 0;font-size:18px;line-height:1.6}.headline+.intro{letter-spacing:-.005em;color:var(--ink);margin-top:44px;font-size:24px;line-height:1.42}.contact{flex-wrap:wrap;gap:28px;margin:30px 0 0;font-size:18px;font-weight:700;display:flex}.contact .email{color:var(--accent)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.name,h2,strong,.project,.contact a,a:not(.row-link):hover,.fact,.flip.on .when{color:#0000;background:var(--nebula);-webkit-background-clip:text;background-clip:text}.flip strong,.flip .project,.flip .fact,.flip.on .when{background:var(--nebula-local);-webkit-background-clip:text;background-clip:text}}a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}@supports not ((-webkit-background-clip:text) or (background-clip:text)){.fact,.flip.on .when{color:var(--accent)}}section{margin-top:112px}section+section{margin-top:96px}h2{letter-spacing:.01em;margin:0 0 18px;font-size:34px}.rows{border-top:1px solid var(--ink);margin:0 -12px;padding:0;list-style:none}.rows li{border-bottom:1px solid var(--rule);padding:13px 12px;font-size:18px;line-height:1.4;transition:background-color .2s}.org{color:var(--muted)}.sep{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.main{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:24px;display:grid}.main>.org{text-align:right}.projects .main{grid-template-columns:220px minmax(0,1fr)}.projects .main>.org{text-align:left}.flip.on{background-color:#15171c0a}.role{grid-template-columns:110px minmax(0,1fr);column-gap:16px;display:grid}.flip{position:relative}.swap,.facts{display:grid;overflow:hidden}.swap>*,.facts>*{grid-area:1/1;align-self:start}.main,.fact{transition:transform .42s cubic-bezier(.22,1,.36,1),opacity .3s ease-out,filter .3s ease-out}.fact{font-weight:600}.fact.wait{opacity:0;transition:none;transform:translateY(110%)}.fact.exit{opacity:0;filter:blur(3px);transform:translateY(110%)}.fact.cur{opacity:1;transition-delay:60ms;transform:none}.fact.prev,.flip.on .main{opacity:0;filter:blur(3px);transform:translateY(-110%)}.when{transition:color .3s}.ticks{opacity:0;gap:4px;height:2px;transition:opacity .3s;display:flex;position:absolute;bottom:-1px;left:0;right:0}.flip.on .ticks{opacity:1}.ticks>span{background:var(--rule);flex:1;position:relative;overflow:hidden}.ticks>span.done{background:var(--nebula)}.ticks i{background:var(--nebula);transform-origin:0;animation:linear forwards tick;position:absolute;inset:0}@keyframes tick{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.flip[tabindex]:focus{outline:none}.flip[tabindex]:focus-visible,.row-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.row-link .swap{transition:transform .1s ease-out}.row-link:active .swap{transform:scale(.99)}.row-link{color:inherit;text-decoration:none;display:block}.row-link .project{text-decoration:underline;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:4px;text-decoration-thickness:1px}.row-link:hover{color:inherit}@media (hover:none){.swap>.facts{grid-area:2/1;margin-top:4px}.fact{font-size:16px;font-weight:400}.fact.exit{opacity:1;filter:none;transform:none}.facts{position:relative}.fact.wait,.fact.prev{position:absolute;inset:0 0 auto}.flip.on .main{opacity:1;filter:none;transform:none}}.when{color:var(--muted);font-variant-numeric:tabular-nums}.project{font-weight:700}.note{color:var(--muted);margin:16px 0 0;font-size:16px;line-height:1.5}.credit{margin-top:120px;font-size:12px}.credit a{color:var(--muted)}@media (width<=560px){.page{padding:56px 20px 48px}.intro{font-size:17px}.headline+.intro{font-size:21px}.role{grid-template-columns:1fr;row-gap:2px}.main,.projects .main{grid-template-columns:1fr}.main>.org{text-align:left}.window{font-size:19vw;line-height:.88;display:block}}@media (prefers-reduced-motion:reduce){.window{--gx:50%;--gy:45%;background-position:0 0,50%;animation:none}.headline .w{animation:none}.main,.fact,.when{transition:none}}::selection{background:var(--accent);color:var(--paper)}body:after{content:"";z-index:10;pointer-events:none;opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.4  0 0 0 0 0.4  0 0 0 0 0.4  0 0 0 0.22 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");background-size:200px 200px;position:fixed;inset:0}.mode-switch{z-index:20;border:1px solid var(--rule);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:44px;height:44px;color:var(--ink);cursor:pointer;background:#f2f2f2b3;border-radius:50%;place-items:center;padding:0;transition:border-color .15s,transform .1s ease-out;display:grid;position:fixed;top:20px;right:20px}.mode-switch:hover{border-color:var(--ink)}.mode-switch:hover svg{transform:rotate(-12deg)}.mode-switch svg{transition:transform .3s cubic-bezier(.22,1,.36,1)}.mode-switch:active{transform:scale(.94)}html[data-mode=space]{--ink:#fff;--muted:#ffffffb8;--rule:#ffffff42;--accent:#9fd4ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#07090d}html[data-mode=space] body{background:0 0}html[data-mode=space] body:before{content:"";z-index:-1;background:linear-gradient(#05070c80,#05070c9e),url(/crab-space.jpg) 50%/cover no-repeat;position:fixed;inset:0}html[data-mode=space] body:after{display:none}html[data-mode=space] :is(.name,h2,strong,.project,.contact a,a:hover,.fact,.when,.window),html[data-mode=space] .flip.on .when{color:#fff;background:0 0}html[data-mode=space] .window{text-shadow:0 0 40px #a0d2ff59;animation:none}html[data-mode=space] .ticks>span.done,html[data-mode=space] .ticks i{background:#fff}html[data-mode=space] .flip.on{background-color:#ffffff14}html[data-mode=space] .mode-switch{background:#07090d73}html[data-mode=space] ::selection{color:#07090d;background:#fff}html[data-mode=space] .note,html[data-mode=space] .credit a{color:var(--muted)}@media (width<=560px){.mode-switch{top:14px;right:14px}}.warp{z-index:40;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}html[data-mode=space] .wd{white-space:nowrap}html[data-mode=space] .g{white-space:pre;translate:calc(var(--fx) * var(--away,0)) calc(var(--fy) * var(--away,0));rotate:calc(var(--fr) * var(--away,0));animation:bob var(--bd) ease-in-out var(--bl) infinite alternate;transition:translate 1.6s cubic-bezier(.22,1,.36,1),rotate 1.6s cubic-bezier(.22,1,.36,1);display:inline-block}@keyframes bob{0%{transform:translateY(-.025em)rotate(-1.2deg)}to{transform:translateY(.025em)rotate(1.2deg)}}.warp-blur{z-index:35;pointer-events:none;position:fixed;inset:0;overflow:hidden}.warp-copy{will-change:transform, opacity;margin:0;position:absolute}.meteor{z-index:15;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.wish{z-index:25;border:1px solid var(--rule);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;white-space:nowrap;background:#07090db3;border-radius:999px;margin:0;padding:10px 16px;font-size:15px;animation:.3s cubic-bezier(.22,1,.36,1) wish-in;position:fixed;bottom:24px;left:50%;translate:-50%}@keyframes wish-in{0%{opacity:0;translate:-50% 10px}}
