:root{--bg: #fff;--fg: #09090b;--muted: #68686f;--faint: #a1a1aa;--edge: #e4e4e7;--soft: #f4f4f5;--sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;color-scheme:light}[data-theme=dark]{--bg: #09090b;--fg: #fafafa;--muted: #a1a1aa;--faint: #71717a;--edge: #27272a;--soft: #18181b;color-scheme:dark}*{box-sizing:border-box}html{overflow-x:clip;scroll-behavior:smooth;scroll-padding-top:4rem;scrollbar-color:var(--faint) var(--bg)}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:clip}::selection{background:var(--fg);color:var(--bg)}a{color:inherit;text-underline-offset:3px;text-decoration-color:var(--faint)}img{max-width:100%;display:block}h1,h2,h3,p,ul{margin:0}:focus-visible{outline:2px solid var(--fg);outline-offset:2px;border-radius:4px}.muted{color:var(--muted)}.skip{position:absolute;left:.5rem;top:-3rem;z-index:20;padding:.5rem .75rem;border-radius:.5rem;background:var(--fg);color:var(--bg);font-weight:500;text-decoration:none}.skip:focus{top:.5rem}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.icon{width:1rem;height:1rem;flex:none}.pad{padding:1rem}.container{max-width:48rem;margin-inline:auto}@media (min-width: 768px){.container{border-inline:1px solid var(--edge)}}.line-t,.line-b{position:relative}.line-t:before,.line-b:after{content:"";position:absolute;left:-100vw;right:-100vw;height:1px;background:var(--edge);pointer-events:none}.line-t:before{top:0}.line-b:after{bottom:0}.sep{height:2rem;background:repeating-linear-gradient(315deg,var(--edge) 0 1px,transparent 0 50%) 0 0 / 10px 10px}.h2{font-size:1.875rem;font-weight:600;letter-spacing:-.025em;line-height:1.5;padding-inline:1rem}.header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.header-in{display:flex;align-items:center;gap:.25rem;height:3.5rem;padding-inline:1rem}.logo{font:600 .875rem var(--mono);text-decoration:none;border:1px solid var(--edge);border-radius:.5rem;padding:.2rem .5rem;margin-right:auto}.nav{display:flex;gap:.125rem;margin-right:.5rem}.nav a{font-size:.875rem;font-weight:500;color:var(--muted);text-decoration:none;padding:.25rem .5rem;border-radius:.375rem}.nav a:hover{color:var(--fg)}@media (max-width: 560px){.nav{display:none}}.icon-btn{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.5rem;border:0;background:none;color:var(--fg);cursor:pointer}.icon-btn:hover{background:var(--soft)}.cover{display:grid;gap:1.75rem;justify-items:start;padding:clamp(2rem,6vw,3rem) 1rem clamp(1.5rem,5vw,2.5rem)}.cover:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--edge) 1px,transparent 1px),linear-gradient(90deg,var(--edge) 1px,transparent 1px);background-size:2rem 2rem;background-position:top right;-webkit-mask-image:radial-gradient(ellipse at top right,#000 10%,transparent 65%);mask-image:radial-gradient(ellipse at top right,#000 10%,transparent 65%)}.cover>*{position:relative}.headline{font-size:clamp(2.1rem,6.5vw,3.5rem);font-weight:600;letter-spacing:-.04em;line-height:1.08;text-wrap:balance;max-width:22ch}.headline span{color:var(--muted)}.profile{display:flex}.avatar-wrap{flex:none;border-right:1px solid var(--edge);padding:5px}.avatar{width:clamp(6rem,22vw,8rem);height:auto;aspect-ratio:1;border-radius:50%;background:var(--soft);border:1px solid var(--edge);outline:1px solid var(--edge);outline-offset:2px}.profile-text{flex:1;display:flex;flex-direction:column;min-width:0}.deco{flex:1}.name{border-top:1px solid var(--edge);padding:.125rem 1rem;font-size:clamp(1.5rem,5vw,1.875rem);font-weight:600;letter-spacing:-.025em;line-height:1.35}.role{border-top:1px solid var(--edge);padding:.35rem 1rem;color:var(--muted);font-size:.9375rem;text-wrap:balance}.fit{display:grid;gap:.75rem;padding:1rem}.seg{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:.375rem}.seg legend{float:left;margin-right:.375rem;font-size:.875rem;font-weight:500;color:var(--muted)}.seg label{position:relative;font-size:.875rem;font-weight:500;padding:.3rem .75rem;border:1px solid var(--edge);border-radius:999px;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.seg label:hover{color:var(--fg)}.seg label:has(:checked){background:var(--fg);border-color:var(--fg);color:var(--bg)}.seg label:has(:focus-visible){outline:2px solid var(--fg);outline-offset:2px}.seg input{position:absolute;opacity:0;pointer-events:none}@media (max-width: 480px){.seg legend{float:none;width:100%;margin-bottom:.25rem}}.proof{list-style:none;padding:0;display:grid}.proof a{display:flex;align-items:center;gap:.75rem;padding:.4rem .5rem;margin-inline:-.5rem;border-radius:.5rem;color:var(--muted);text-decoration:none;transition:background .15s}.proof a:hover{background:var(--soft)}.proof b{color:var(--fg);font-weight:600}.proof-arrow{margin-left:auto;color:var(--faint)}.proof a:hover .proof-arrow{color:var(--fg)}.overview{display:grid;gap:.625rem;padding:1rem;font-size:.9375rem}@media (min-width: 640px){.overview{grid-template-columns:1fr 1fr}}.ov-row{display:flex;align-items:center;gap:.75rem;min-width:0;overflow-wrap:anywhere}.ov-row a{text-decoration:none}.ov-row a:hover{text-decoration:underline}.ibox{display:grid;place-items:center;width:1.5rem;height:1.5rem;flex:none;border-radius:.5rem;background:var(--soft);border:1px solid var(--edge);color:var(--muted);box-shadow:0 0 0 1px var(--bg),0 0 0 2px var(--edge)}.ibox .icon{width:.875rem;height:.875rem}.ibox.lg{width:2.5rem;height:2.5rem;border-radius:.625rem;color:var(--fg)}.ibox.lg .icon{width:1.25rem;height:1.25rem}.cells{display:grid;margin-bottom:-1px}.cell{border-bottom:1px solid var(--edge);padding:1rem;text-decoration:none;transition:background .15s}a.cell:hover{background:var(--soft)}@media (min-width: 640px){.cells{grid-template-columns:1fr 1fr}.cell:nth-child(odd){border-right:1px solid var(--edge)}}.social{display:flex;align-items:center;gap:1rem}.social b{display:block;font-weight:500}.social small{display:block;color:var(--muted);font:.8125rem var(--mono)}.social .arrow{margin-left:auto;color:var(--muted)}.prose{padding-left:1.25rem;display:grid;gap:.5rem;max-width:68ch}.prose li::marker{color:var(--faint)}.tags{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.375rem}.tag{font:.75rem/1.6 var(--mono);border:1px solid var(--edge);background:var(--soft);border-radius:.5rem;padding:.1rem .5rem;color:var(--muted)}.link{display:inline-flex;align-items:center;gap:.25rem;width:fit-content;font-weight:500}.about{display:grid;gap:.75rem;max-width:65ch;font-size:1.0625rem}.about p:last-child{color:var(--muted);font-size:1rem}.stack{display:grid;gap:1rem}.stack-group{font-size:.875rem;font-weight:500;color:var(--muted);margin-bottom:.375rem}.edu{font-size:.9375rem}.edu b{font-weight:500}.company{display:grid;gap:1rem}.company-head{display:flex;align-items:center;gap:.75rem;font-weight:500;font-size:1.0625rem}.company-note{font-weight:400;font-size:.875rem;color:var(--muted);margin-left:.25rem}.logo-box{flex:none;width:1.5rem;height:1.5rem;border-radius:.375rem;background:var(--fg);color:var(--bg);display:grid;place-items:center;font:600 .75rem var(--mono)}.live{flex:none;position:relative;width:.5rem;height:.5rem;border-radius:50%;background:#3b82f6}.live:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:inherit;animation:ping 1.6s cubic-bezier(0,0,.2,1) infinite}@keyframes ping{75%,to{transform:scale(2.4);opacity:0}}.positions{position:relative;display:grid;gap:1.25rem}.positions:before{content:"";position:absolute;left:.75rem;top:.5rem;bottom:0;width:1px;background:var(--edge)}.pos{position:relative}.pos summary,.pos-head{display:grid;grid-template-columns:auto 1fr auto;column-gap:.75rem;align-items:center}.pos summary{list-style:none;cursor:pointer}.pos summary::-webkit-details-marker{display:none}.pos summary:focus-visible{outline-offset:6px}.pos summary:hover .pos-title{text-decoration:underline;text-decoration-color:var(--faint)}.pos-title{font-weight:500;text-wrap:balance}.pos-meta{grid-column:2;font:.8125rem var(--mono);color:var(--muted)}.chev{color:var(--muted);transition:transform .2s cubic-bezier(.2,.7,.2,1)}.pos[open]>summary .chev{transform:rotate(180deg)}.pos-body{padding:.75rem 0 0 2.25rem;display:grid;gap:.75rem}.pos.bare summary{grid-template-columns:1fr auto;align-items:start}.pos.bare .pos-meta{grid-column:1}.pos.bare .chev{margin-top:.3rem}.pos.bare .pos-body{padding-left:0}.proj{margin-bottom:-1px}.proj .pos{padding:1.125rem 1rem;border-bottom:1px solid var(--edge)}.proj .pos-title{font-size:1.125rem;font-weight:600;letter-spacing:-.01em;line-height:1.35}.proj .pos-meta{font:.9375rem/1.5 var(--sans);margin-top:.2rem}.posts{list-style:none;padding:0;margin-bottom:-1px}.post{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding:.875rem 1rem;border-bottom:1px solid var(--edge);text-decoration:none;transition:background .15s}.post:hover{background:var(--soft)}.post-title{font-weight:500}.post-date{font:.8125rem var(--mono);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.more{display:flex;justify-content:center;padding:1rem}.contact{display:grid;gap:1rem}.contact p{color:var(--muted);max-width:60ch}.row{display:flex;flex-wrap:wrap;gap:.5rem}.btn{display:inline-flex;align-items:center;gap:.5rem;font:500 .875rem var(--sans);padding:.5rem 1rem;border-radius:.5rem;border:1px solid var(--edge);background:var(--bg);color:var(--fg);text-decoration:none;cursor:pointer;transition:background .15s}.btn:hover{background:var(--soft)}button.btn{justify-content:center;min-width:7.5rem}.btn-solid{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn-solid:hover{background:var(--fg);opacity:.88}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;padding:1.25rem 1rem;font-size:.875rem;color:var(--muted)}.footer-links{display:flex;gap:1rem}.footer-links a{text-decoration:none}.footer-links a:hover{color:var(--fg)}.search-btn{display:flex;align-items:center;gap:.5rem;height:2rem;padding:0 .375rem 0 .625rem;margin-right:.25rem;border:1px solid var(--edge);border-radius:.5rem;background:var(--soft);color:var(--muted);font:.8125rem var(--sans);cursor:pointer}.search-btn:hover{color:var(--fg)}.search-btn span{padding-right:1.5rem}kbd{font:.6875rem var(--mono);border:1px solid var(--edge);border-radius:.3rem;padding:.05rem .3rem;background:var(--bg);color:var(--muted)}@media (max-width: 720px){.search-btn{width:2rem;padding:0;justify-content:center;background:none;border:0;color:var(--fg)}.search-btn span,.search-btn kbd{display:none}}.palette{padding:0;margin:12vh auto auto;width:min(36rem,calc(100vw - 2rem));max-height:70vh;border:1px solid var(--edge);border-radius:.75rem;background:var(--bg);color:var(--fg);box-shadow:0 16px 32px -12px #0000004d;overflow:hidden}.palette[open]{display:flex;flex-direction:column}.palette::backdrop{background:#0006}.palette-input{display:flex;align-items:center;gap:.625rem;padding:0 .875rem;border-bottom:1px solid var(--edge);color:var(--muted)}.palette-input input{flex:1;min-width:0;height:3rem;border:0;outline:0;background:none;color:var(--fg);font:1rem var(--sans);caret-color:var(--fg)}.palette-input input::placeholder{color:var(--muted)}.palette-list{list-style:none;margin:0;padding:.375rem;overflow-y:auto;overscroll-behavior:contain}.palette-group{padding:.625rem .5rem .25rem;font:500 .75rem var(--sans);color:var(--muted)}.palette-opt{display:flex;align-items:center;gap:.625rem;padding:.5rem;border-radius:.5rem;cursor:pointer;font-size:.9375rem}.palette-opt[aria-selected=true]{background:var(--soft)}.palette-opt .icon{color:var(--muted)}.opt-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.opt-sub{margin-left:auto;padding-left:.75rem;font:.75rem var(--mono);color:var(--muted);white-space:nowrap}@media (max-width: 480px){.opt-sub{display:none}}.palette-empty{padding:1.5rem;text-align:center;color:var(--muted)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.live:after{animation:none}.chev{transition:none}}
