dialog.svelte-1btwglb{width:min(38rem, calc(100vw - 2 * var(--gutter)));border:1px solid var(--line);background:var(--paper);max-height:min(90vh,56rem);color:var(--ink);border-radius:3px;padding:26px;box-shadow:0 24px 60px #17222b2e}dialog.svelte-1btwglb::backdrop{background:#17222b6b}.head.svelte-1btwglb{align-items:baseline;gap:16px;margin-bottom:10px;display:flex}h2.svelte-1btwglb{margin:0;font:500 15px var(--display);letter-spacing:.01em;margin-inline-end:auto}.close.svelte-1btwglb{color:var(--grey);cursor:pointer;background:0 0;border:0;padding:2px 4px;font-size:22px;line-height:1}.close.svelte-1btwglb:hover{color:var(--ink)}.lede.svelte-1btwglb{color:var(--ink-soft);margin:0 0 22px;font-size:13px;line-height:1.7}.hatch.svelte-nbanen,.cover.svelte-nbanen{top:0;bottom:0;transition:opacity .55s;position:absolute;inset-inline-start:calc(-1 * max(var(--rail), var(--gutter)));inset-inline-end:calc(-1 * var(--gutter))}.hatch.svelte-nbanen{z-index:0;opacity:.16;background:var(--hatch);pointer-events:none}.cover.svelte-nbanen{z-index:6;cursor:crosshair;touch-action:none;background:var(--hatch-opaque);-webkit-mask-composite:source-in;-webkit-mask-composite:source-in;mask-composite:intersect}.gone.svelte-nbanen{opacity:0;pointer-events:none}.hint.svelte-nbanen{inset-inline:0;text-align:center;font:500 16px/1.8 var(--mono);letter-spacing:.06em;color:var(--ink-soft);pointer-events:none;margin:0;transition:opacity .3s;animation:2.6s ease-in-out infinite svelte-nbanen-breathe;position:absolute;top:50%;transform:translateY(-50%)}.hint.svelte-nbanen span:where(.svelte-nbanen){font:400 13px var(--mono);color:var(--grey);display:block}.hint.faded.svelte-nbanen{opacity:0}.cover.svelte-nbanen button:where(.svelte-nbanen){background:var(--paper);border:1px solid var(--line);min-height:44px;font:500 12px var(--sans);color:var(--ink-soft);cursor:pointer;border-radius:4px;padding:0 16px;position:absolute;bottom:56px;left:50%;transform:translate(-50%)}.cover.svelte-nbanen button:where(.svelte-nbanen):hover{border-color:var(--accent);color:var(--accent)}@keyframes svelte-nbanen-breathe{0%,to{opacity:.55}50%{opacity:.9}}@media (scripting:none){.hatch.svelte-nbanen,.cover.svelte-nbanen{display:none}}.rail.svelte-1fhsx1r{inset-inline-start:0;width:var(--rail);z-index:20;background:linear-gradient(90deg, var(--paper) 60%, transparent);flex-direction:column;justify-content:center;gap:2px;display:flex;position:fixed;top:0;bottom:0}.rail.svelte-1fhsx1r:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){background:linear-gradient(270deg, var(--paper) 60%, transparent)}.rail.svelte-1fhsx1r a:where(.svelte-1fhsx1r){align-items:center;gap:8px;height:44px;padding-inline-start:14px;display:flex}.dash.svelte-1fhsx1r{background:var(--line);width:10px;height:1.5px;transition:width .18s,background .18s;display:block}.dash.on.svelte-1fhsx1r{background:var(--accent);width:22px}.num.svelte-1fhsx1r{font:500 12px/1 var(--mono);letter-spacing:.1em;color:var(--grey);writing-mode:vertical-rl;transition:color .18s}.num.on.svelte-1fhsx1r{color:var(--accent)}.rail.svelte-1fhsx1r a:where(.svelte-1fhsx1r):hover .dash:where(.svelte-1fhsx1r){background:var(--accent)}.rail.svelte-1fhsx1r a:where(.svelte-1fhsx1r):hover .num:where(.svelte-1fhsx1r){color:var(--accent)}@media (width<=720px){.rail.svelte-1fhsx1r{display:none}}section.svelte-1lc6crg{padding:88px 0}.section-head.svelte-1lc6crg{align-items:baseline;gap:12px;margin-bottom:36px;display:flex}.section-head.svelte-1lc6crg .num:where(.svelte-1lc6crg){font:500 12px var(--mono);letter-spacing:.14em;color:var(--accent)}.section-head.svelte-1lc6crg h2:where(.svelte-1lc6crg){font:700 clamp(17px, 2.2vw, 22px) var(--sans);margin:0}.section-head.svelte-1lc6crg .rule:where(.svelte-1lc6crg){background:var(--line-soft);flex:1;height:1px}.section-note.svelte-1lc6crg{font:400 13px/1.8 var(--sans);color:var(--grey);max-width:32em;margin:-22px 0 32px}.redacted.svelte-1lc6crg{vertical-align:-3px;background:var(--hatch);border-inline:1px solid var(--grey);width:clamp(90px,22vw,150px);height:16px;margin:0 5px;display:inline-block}.redacted-note.svelte-1lc6crg{font:400 12px var(--mono);color:var(--grey)}.glyph.svelte-1lc6crg{font-family:var(--mono)}#hero.svelte-1lc6crg{flex-direction:column;justify-content:center;min-height:calc(100vh - 64px);padding:76px 0 64px;display:flex;position:relative}.hero-content.svelte-1lc6crg{z-index:1;position:relative}.eyebrow.svelte-1lc6crg{align-items:center;gap:10px;margin:0 0 28px;display:flex}.eyebrow.svelte-1lc6crg .spec:where(.svelte-1lc6crg){font:500 12px var(--mono);letter-spacing:.14em;color:var(--accent)}.eyebrow.svelte-1lc6crg .tick:where(.svelte-1lc6crg){background:var(--line);width:60px;height:1px}.eyebrow.svelte-1lc6crg .origin:where(.svelte-1lc6crg){font:500 12px var(--mono);letter-spacing:.14em;color:var(--grey)}h1.svelte-1lc6crg{font:900 clamp(30px, 6.4vw, 60px) / 1.34 var(--sans);letter-spacing:-.01em;text-wrap:pretty;word-break:auto-phrase;max-width:19em;margin:0}.mark.svelte-1lc6crg{white-space:nowrap;position:relative}.mark.svelte-1lc6crg:after{content:"";inset-inline:0;background:var(--accent);height:3px;position:absolute;bottom:.06em}.lede.svelte-1lc6crg{font:400 clamp(14px, 1.6vw, 17px) / 1.95 var(--sans);color:var(--ink-soft);text-wrap:pretty;max-width:36em;word-break:auto-phrase;margin:28px 0 0}.cta.svelte-1lc6crg{flex-wrap:wrap;gap:10px;margin-top:34px;display:flex}.cta.svelte-1lc6crg a:where(.svelte-1lc6crg){min-height:44px;font:500 13px var(--sans);border-radius:4px;align-items:center;gap:8px;padding:0 20px;display:inline-flex}.cta.svelte-1lc6crg .primary:where(.svelte-1lc6crg){background:var(--ink);color:var(--paper)}.cta.svelte-1lc6crg .primary:where(.svelte-1lc6crg):hover{background:var(--accent)}.cta.svelte-1lc6crg .secondary:where(.svelte-1lc6crg){border:1px solid var(--line);color:var(--ink);padding:0 18px}.cta.svelte-1lc6crg .secondary:where(.svelte-1lc6crg):hover{border-color:var(--accent);color:var(--accent)}.cta.svelte-1lc6crg .secondary:where(.svelte-1lc6crg) .glyph:where(.svelte-1lc6crg){font-size:12px}.stats.svelte-1lc6crg{border-top:1px solid var(--line);flex-wrap:wrap;margin:64px 0 0;display:flex}.stats.svelte-1lc6crg>div:where(.svelte-1lc6crg){border-inline-end:1px solid var(--line-soft);flex-direction:column-reverse;flex:130px;padding:20px 20px 18px;display:flex}.stats.svelte-1lc6crg>div:where(.svelte-1lc6crg):first-child{padding-inline-start:0}.stats.svelte-1lc6crg dd:where(.svelte-1lc6crg){font:700 clamp(20px, 2.6vw, 28px) var(--display);letter-spacing:-.02em;margin:0}.stats.svelte-1lc6crg dt:where(.svelte-1lc6crg){font:400 12px var(--mono);color:var(--grey);margin-top:3px}.about-grid.svelte-1lc6crg{flex-wrap:wrap;gap:40px;display:flex}.prose.svelte-1lc6crg{flex-direction:column;flex:340px;gap:22px;max-width:36em;display:flex}.prose.svelte-1lc6crg p:where(.svelte-1lc6crg){font:400 14.5px/1.95 var(--sans);color:var(--ink-soft);text-wrap:pretty;margin:0}.prose.svelte-1lc6crg .lead:where(.svelte-1lc6crg){font:400 clamp(15px, 1.8vw, 19px) / 1.9 var(--sans);color:var(--ink)}.timeline.svelte-1lc6crg{border-inline-start:1px solid var(--line);flex:0 260px;min-width:220px;margin:0;padding:0;padding-inline-start:1px;list-style:none}.timeline.svelte-1lc6crg li:where(.svelte-1lc6crg){border-bottom:1px solid var(--line-soft);flex-direction:column;padding-block:14px;padding-inline:18px 0;display:flex;position:relative}.timeline.svelte-1lc6crg .dot:where(.svelte-1lc6crg){inset-inline-start:-4px;background:var(--line);border-radius:50%;width:6px;height:6px;position:absolute;top:20px}.timeline.svelte-1lc6crg .current:where(.svelte-1lc6crg) .dot:where(.svelte-1lc6crg){background:var(--accent)}.timeline.svelte-1lc6crg .year:where(.svelte-1lc6crg){font:400 12px var(--mono);letter-spacing:.08em;color:var(--grey)}.timeline.svelte-1lc6crg .title:where(.svelte-1lc6crg){font:700 14px var(--sans);margin-top:3px}.timeline.svelte-1lc6crg .note:where(.svelte-1lc6crg){font:400 12px/1.7 var(--sans);color:var(--ink-soft);margin-top:2px}.skills.svelte-1lc6crg{flex-wrap:wrap;gap:14px;display:flex}.skills.svelte-1lc6crg article:where(.svelte-1lc6crg){background:var(--card);border:1px solid var(--line-soft);border-radius:6px;flex:260px;padding:20px 20px 18px;transition:border-color .18s}.skills.svelte-1lc6crg article:where(.svelte-1lc6crg):hover{border-color:var(--accent)}.skill-head.svelte-1lc6crg{justify-content:space-between;align-items:baseline;display:flex}.skill-head.svelte-1lc6crg .code:where(.svelte-1lc6crg){font:500 12px var(--mono);letter-spacing:.12em;color:var(--accent)}.skill-head.svelte-1lc6crg .category:where(.svelte-1lc6crg){font:400 12px var(--mono);color:var(--grey)}.skills.svelte-1lc6crg h3:where(.svelte-1lc6crg){font:700 16px var(--sans);margin:10px 0 6px}.skills.svelte-1lc6crg p:where(.svelte-1lc6crg){font:400 12.5px/1.8 var(--sans);color:var(--ink-soft);text-wrap:pretty;margin:0}.tags.svelte-1lc6crg{border-top:1px dashed var(--line-soft);flex-wrap:wrap;gap:5px;margin:14px 0 0;padding:14px 0 0;list-style:none;display:flex}.tags.svelte-1lc6crg li:where(.svelte-1lc6crg){font:400 12px var(--mono);color:var(--ink-soft);border:1px solid var(--line);border-radius:3px;padding:2px 6px}.banner.svelte-1lc6crg{background:var(--card);border:1px solid var(--line-soft);border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;padding:14px 16px;transition:border-color .3s;display:flex}.banner.open.svelte-1lc6crg{border-color:var(--accent)}.banner.svelte-1lc6crg p:where(.svelte-1lc6crg){font:400 12.5px/1.7 var(--sans);color:var(--ink-soft);flex:240px;margin:0}.keyform.svelte-1lc6crg{align-items:center;gap:8px;display:flex}.keyform.svelte-1lc6crg label:where(.svelte-1lc6crg){font:500 12px var(--mono);letter-spacing:.1em;color:var(--grey)}.keyform.svelte-1lc6crg input:where(.svelte-1lc6crg){border:1px solid var(--line);background:var(--paper);width:150px;min-height:40px;font:400 12.5px var(--mono);color:var(--ink);border-radius:4px;padding:0 10px}.keyform.svelte-1lc6crg button:where(.svelte-1lc6crg){background:var(--ink);min-height:40px;color:var(--paper);font:500 12.5px var(--sans);cursor:pointer;border:none;border-radius:4px;padding:0 16px}.keyform.svelte-1lc6crg button:where(.svelte-1lc6crg):hover{background:var(--accent)}.relock.svelte-1lc6crg{border:1px solid var(--line);min-height:40px;font:500 12px var(--sans);color:var(--grey);cursor:pointer;background:0 0;border-radius:4px;padding:0 14px}.relock.svelte-1lc6crg:hover{border-color:var(--ink);color:var(--ink)}.key-error.svelte-1lc6crg{font:400 12px var(--sans);color:var(--danger);margin:-14px 0 20px}.empty.svelte-1lc6crg{font:400 13px var(--sans);color:var(--grey)}.projects.svelte-1lc6crg{grid-template-columns:repeat(auto-fill,minmax(min(380px,100%),1fr));gap:16px;display:grid}.projects.svelte-1lc6crg article:where(.svelte-1lc6crg){background:var(--card);border:1px solid var(--line-soft);border-radius:6px;flex-direction:column;transition:border-color .3s;display:flex;position:relative;overflow:hidden}.projects.svelte-1lc6crg article.open:where(.svelte-1lc6crg),.projects.svelte-1lc6crg article:where(.svelte-1lc6crg):hover{border-color:var(--accent)}.strip.svelte-1lc6crg{border-bottom:1px solid var(--line-soft);background:var(--paper);font:500 12px var(--mono);letter-spacing:.12em;color:var(--grey);align-items:center;gap:10px;padding:11px 14px;display:flex}.projects.svelte-1lc6crg article.stamped:where(.svelte-1lc6crg) .strip:where(.svelte-1lc6crg){padding-inline-end:68px}.strip.svelte-1lc6crg .code:where(.svelte-1lc6crg){color:var(--ink-soft)}.strip.svelte-1lc6crg .state:where(.svelte-1lc6crg){border:1px solid var(--line);border-radius:3px;padding:1px 6px}.projects.svelte-1lc6crg article.open:where(.svelte-1lc6crg) .strip:where(.svelte-1lc6crg) .state:where(.svelte-1lc6crg){color:var(--accent);border-color:var(--accent)}.strip.svelte-1lc6crg .year:where(.svelte-1lc6crg){letter-spacing:.08em;margin-inline-start:auto;font-weight:400}.cover.svelte-1lc6crg{background:var(--line-faint);border-bottom:1px solid var(--line-soft);overflow:hidden}.cover.svelte-1lc6crg img:where(.svelte-1lc6crg){aspect-ratio:16/9;object-fit:cover;width:100%;transition:transform .4s;display:block}.projects.svelte-1lc6crg article:where(.svelte-1lc6crg):hover .cover:where(.svelte-1lc6crg) img:where(.svelte-1lc6crg){transform:scale(1.03)}.stamp.svelte-1lc6crg{top:8px;z-index:1;background:var(--card);border:1.5px solid var(--accent);width:44px;height:44px;font:700 18px var(--sans);color:var(--accent);pointer-events:none;border-radius:50%;justify-content:center;align-items:center;animation:.5s both svelte-1lc6crg-stamp;display:flex;position:absolute;inset-inline-end:12px}@keyframes svelte-1lc6crg-stamp{0%{opacity:0;transform:rotate(-24deg)scale(1.5)}60%{opacity:1;transform:rotate(-8deg)scale(.96)}to{opacity:1;transform:rotate(-8deg)scale(1)}}.card-body.svelte-1lc6crg{flex-direction:column;flex:1;padding:16px 16px 14px;display:flex}.company.svelte-1lc6crg{font:400 12px var(--mono);color:var(--ink-soft);align-items:center;gap:9px;margin:0 0 8px;display:flex}.company.masked.svelte-1lc6crg{color:var(--grey)}.projects.svelte-1lc6crg article.open:where(.svelte-1lc6crg) .company:where(.svelte-1lc6crg){color:var(--accent)}.company.svelte-1lc6crg .redacted:where(.svelte-1lc6crg){flex:none;width:84px;height:18px;margin:0}.projects.svelte-1lc6crg h3:where(.svelte-1lc6crg){font:700 clamp(16px, 1.9vw, 19px) / 1.5 var(--sans);text-wrap:pretty;margin:0}.projects.svelte-1lc6crg h3:where(.svelte-1lc6crg) a:where(.svelte-1lc6crg){color:var(--ink)}.projects.svelte-1lc6crg article:where(.svelte-1lc6crg):hover h3:where(.svelte-1lc6crg) a:where(.svelte-1lc6crg){color:var(--accent)}.projects.svelte-1lc6crg h3:where(.svelte-1lc6crg) a:where(.svelte-1lc6crg):after{content:"";position:absolute;inset:0}.summary.svelte-1lc6crg{-webkit-line-clamp:3;line-clamp:3;font:400 13px/1.8 var(--sans);color:var(--ink-soft);text-wrap:pretty;-webkit-box-orient:vertical;margin:10px 0 0;display:-webkit-box;overflow:hidden}.detail.svelte-1lc6crg{font:500 12px var(--sans);color:var(--accent);align-items:center;gap:6px;margin-top:auto;padding-top:16px;display:inline-flex}.detail.svelte-1lc6crg .glyph:where(.svelte-1lc6crg){transition:transform .2s}.projects.svelte-1lc6crg article:where(.svelte-1lc6crg):hover .detail:where(.svelte-1lc6crg) .glyph:where(.svelte-1lc6crg){transform:translate(2px,-2px)}.projects.svelte-1lc6crg article:where(.svelte-1lc6crg):hover .detail:where(.svelte-1lc6crg) .glyph:where(.svelte-1lc6crg):is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){transform:scaleX(-1)translate(2px,-2px)}#contact.svelte-1lc6crg{padding-bottom:120px}.contact-grid.svelte-1lc6crg{flex-wrap:wrap;align-items:flex-start;gap:36px;display:flex}.contact-grid.svelte-1lc6crg>div:where(.svelte-1lc6crg){flex:300px}.contact-headline.svelte-1lc6crg{font:900 clamp(22px, 3.4vw, 34px) / 1.45 var(--sans);text-wrap:pretty;margin:0}.contact-body.svelte-1lc6crg{max-width:28em;font:400 13.5px/1.9 var(--sans);color:var(--ink-soft);margin:16px 0 0}.contact-cta.svelte-1lc6crg{font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--paper);background:var(--ink);border-radius:3px;align-items:center;gap:8px;margin-top:24px;padding:12px 22px;display:inline-flex}.contact-cta.svelte-1lc6crg:hover{color:var(--paper);background:var(--accent)}.contact-list.svelte-1lc6crg{background:var(--card);border:1px solid var(--line-soft);border-radius:6px;min-width:260px;overflow:hidden}.list-head.svelte-1lc6crg{background:var(--paper);border-bottom:1px solid var(--line-soft);font:500 12px var(--mono);letter-spacing:.12em;color:var(--grey);justify-content:space-between;padding:11px 16px;display:flex}.contact-list.svelte-1lc6crg a:where(.svelte-1lc6crg){border-bottom:1px solid var(--line-faint);justify-content:space-between;align-items:center;gap:12px;min-height:52px;padding:0 16px;transition:background .15s;display:flex}.contact-list.svelte-1lc6crg a:where(.svelte-1lc6crg):hover{background:var(--paper)}.contact-list.svelte-1lc6crg .labels:where(.svelte-1lc6crg){flex-direction:column;display:flex}.contact-list.svelte-1lc6crg .label:where(.svelte-1lc6crg){font:500 13px var(--sans);color:var(--ink)}.contact-list.svelte-1lc6crg .sub:where(.svelte-1lc6crg){font:400 12px var(--mono);color:var(--grey);margin-top:2px}.contact-list.svelte-1lc6crg .glyph:where(.svelte-1lc6crg){color:var(--accent);font-size:13px}footer.svelte-1lc6crg{border-top:1px solid var(--line);font:400 12px var(--mono);letter-spacing:.08em;color:var(--grey);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:56px;padding-top:16px;display:flex}
