:root{color-scheme:light dark;--bg: #ffffff;--bg-2: #f5f5f7;--bg-3: #ffffff;--fg: #1d1d1f;--fg-2: #515156;--line: rgba(0, 0, 0, .14);--accent: #126034;--accent-fg: #ffffff;--glass-bg: rgba(255, 255, 255, .72);--glass-edge: rgba(255, 255, 255, .75);--glass-shadow: 0 10px 40px rgba(0, 0, 0, .14);--aurora-a: rgba(26, 127, 69, .16);--aurora-b: rgba(0, 0, 0, .06);--aurora-c: rgba(110, 110, 115, .1);--lit: rgba(0, 0, 0, .05);--sel-bg: rgb(44 44 46);--sel-fg: rgb(255 255 255);--tint-hover: color-mix(in srgb, var(--fg) 12%, transparent);--tint-current: color-mix(in srgb, var(--fg) 22%, transparent);--tint-press: color-mix(in srgb, var(--fg) 28%, transparent);--lane-0: var(--fg-2);--lane-1: var(--accent);--lane-2: var(--fg);--lane-3: color-mix(in srgb, var(--accent) 55%, var(--fg-2));--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--t-large-title: clamp(2.125rem, 1.55rem + 2.6vw, 3.5rem);--t-title1: clamp(1.75rem, 1.45rem + 1.2vw, 2.375rem);--t-title2: 1.375rem;--t-headline: 1.0625rem;--t-body: 1.0625rem;--t-callout: 1rem;--t-subhead: .9375rem;--t-footnote: .8125rem;--gutter: max(16px, env(safe-area-inset-left), env(safe-area-inset-right));--bar-h: 56px;--tabbar-h: 64px;--radius: 22px;--r-ctl: 16px;--r-pop: 10px;--ease-spring: linear(0, .049, .164, .308, .458, .597, .717, .815, .891, .947, .985, 1.009, 1.023, 1.03, 1.031, 1.029, 1.025, 1.02, 1.016, 1.012, 1.008, 1.005, 1.003, 1.001, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--dur-press: .15s;--dur-short: .25s;--dur-med: .4s;--dur-ring: .6s}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #000000;--bg-2: #1c1c1e;--bg-3: #2c2c2e;--fg: #f5f5f7;--fg-2: #b8b8bd;--line: rgba(255, 255, 255, .16);--accent: #34d65c;--accent-fg: #000000;--glass-bg: rgba(28, 28, 30, .7);--glass-edge: rgba(255, 255, 255, .22);--glass-shadow: 0 10px 40px rgba(0, 0, 0, .55);--aurora-a: rgba(48, 209, 88, .16);--aurora-b: rgba(255, 255, 255, .07);--aurora-c: rgba(152, 152, 157, .1);--lit: rgba(255, 255, 255, .1);--sel-bg: rgb(90 90 94);--sel-fg: rgb(255 255 255);--tint-hover: color-mix(in srgb, var(--fg) 11%, transparent);--tint-current: color-mix(in srgb, var(--fg) 19%, transparent);--tint-press: color-mix(in srgb, var(--fg) 24%, transparent)}}:root[data-theme=dark]{color-scheme:dark;--bg: #000000;--bg-2: #1c1c1e;--bg-3: #2c2c2e;--fg: #f5f5f7;--fg-2: #b8b8bd;--line: rgba(255, 255, 255, .16);--accent: #34d65c;--accent-fg: #000000;--glass-bg: rgba(28, 28, 30, .7);--glass-edge: rgba(255, 255, 255, .22);--glass-shadow: 0 10px 40px rgba(0, 0, 0, .55);--aurora-a: rgba(48, 209, 88, .16);--aurora-b: rgba(255, 255, 255, .07);--aurora-c: rgba(152, 152, 157, .1);--lit: rgba(255, 255, 255, .1);--sel-bg: rgb(90 90 94);--sel-fg: rgb(255 255 255);--tint-hover: color-mix(in srgb, var(--fg) 11%, transparent);--tint-current: color-mix(in srgb, var(--fg) 19%, transparent);--tint-press: color-mix(in srgb, var(--fg) 24%, transparent)}:root[data-theme=light]{color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;background:var(--bg)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;font:400 var(--t-body)/1.47 var(--font);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,p,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}h1{font:700 var(--t-large-title)/1.08 var(--font);letter-spacing:-.02em}h2{font:700 var(--t-title1)/1.15 var(--font);letter-spacing:-.015em}h3{font:600 var(--t-headline)/1.3 var(--font)}a{color:var(--accent);text-underline-offset:.2em}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}a:not([class]):focus-visible{border-radius:6px}.mono{font-family:var(--mono)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip{position:fixed;left:12px;top:-64px;z-index:50;padding:.75rem 1rem;border-radius:var(--r-pop);background:var(--fg);color:var(--bg);text-decoration:none;font-weight:600}.skip:focus{top:12px}.chip{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:0 .9rem;border:0;border-radius:999px;background:transparent;color:var(--fg);font:500 var(--t-subhead)/1 var(--font);text-decoration:none;cursor:pointer}@media(hover:hover){.chip:hover{background:var(--tint-hover)}}.chip:active{background:var(--tint-press)}.chip kbd{font:500 var(--t-footnote)/1 var(--mono);color:var(--fg-2)}.btn{display:inline-flex;align-items:center;min-height:48px;padding:0 1.5rem;border-radius:999px;background:var(--accent);color:var(--accent-fg);font:600 var(--t-body)/1 var(--font);text-decoration:none}@media(hover:hover){.btn:hover{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}}.link-action{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;margin-inline:-.75rem;padding:0 .75rem;border-radius:999px;color:var(--accent);font-weight:600;text-underline-offset:.2em;transition:background-color var(--dur-short) var(--ease-out),scale var(--dur-press) var(--ease-out)}.link-action svg{flex:none}@media(hover:hover){.link-action:hover{background:var(--tint-hover)}}.link-action:active{background:var(--tint-press);scale:.96}@media(prefers-reduced-motion:reduce){.link-action:active{scale:none}}.tags{position:relative;isolation:isolate;display:flex;flex-wrap:wrap;row-gap:.25rem;margin-inline:-4px;font:500 var(--t-footnote)/1.2 var(--font);color:var(--fg)}.tags span{padding:.3rem .65rem;border:4px solid transparent;border-radius:999px;background:color-mix(in srgb,var(--fg) 8%,transparent);background-clip:padding-box}.tags .sel{display:none}@supports (anchor-name: --a){.tags .sel{display:block;position:absolute;z-index:-1;position-anchor:--tag;pointer-events:none;opacity:0;top:anchor(top);bottom:anchor(bottom);left:anchor(left);right:anchor(right);border-radius:999px;background:var(--tint-current);transition:top var(--dur-short) var(--ease-spring),bottom var(--dur-short) var(--ease-spring),left var(--dur-short) var(--ease-spring),right var(--dur-short) var(--ease-spring)}@media(hover:hover){.tags span:hover{anchor-name:--tag;background-color:transparent}.tags:has(span:hover) .sel{opacity:1}}}::selection{background:var(--sel-bg);color:var(--sel-fg)}img,picture,svg{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}img::selection{background:transparent}html:has(app-pup .pup,dialog[open]){overflow:hidden}[data-tip]{position:relative}[data-tip]:after{--tip-x: -50%;--tip-dy: -4px;content:attr(data-tip);display:none;position:absolute;z-index:40;top:calc(100% + 8px);left:50%;translate:var(--tip-x) 0;width:max-content;max-width:14rem;padding:.375rem .625rem;border-radius:var(--r-pop);pointer-events:none;text-align:center;white-space:normal;background:var(--bg-2);color:var(--fg);border:1px solid var(--line);box-shadow:var(--glass-shadow);font:500 var(--t-footnote)/1.3 var(--font);letter-spacing:0}[data-tip][data-tip-pos=top]:after{top:auto;bottom:calc(100% + 8px);--tip-dy: 4px}[data-tip][data-tip-align=end]:after{left:auto;right:0;--tip-x: 0px}@media(hover:hover){[data-tip]:hover:after{display:block;animation:tip-in .12s var(--ease-out) .4s both}}[data-tip]:focus-visible:after,[data-tip].tip-open:after{display:block;animation:tip-in .12s var(--ease-out) both}html.tips-off [data-tip]:after{display:none!important}@keyframes tip-in{0%{opacity:0;translate:var(--tip-x) var(--tip-dy)}}@media(prefers-reduced-motion:reduce){[data-tip]:hover:after,[data-tip]:focus-visible:after,[data-tip].tip-open:after{animation:none}}.info{overflow:hidden}.info:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent);transform-origin:left}@keyframes info-life{to{scale:0 1}}@media(prefers-reduced-motion:no-preference){.info:after{animation:info-life var(--life, 2s) linear forwards}}@media(prefers-reduced-motion:reduce){.info:after{display:none}}.wrap{width:min(100% - 2 * var(--gutter),68rem);margin-inline:auto}.measure{max-width:44rem}.block{padding-block:clamp(2rem,4.5vw,3.5rem);scroll-margin-top:calc(var(--bar-h) + 1.5rem);outline:none}.block+.block{border-top:1px solid var(--line)}.block.alt{background:var(--bg-2)}#experience,#skills,#projects,#about,#contact{content-visibility:auto;contain-intrinsic-block-size:auto 900px}.eyebrow{margin-bottom:.75rem;font:500 .875rem/1 var(--mono);letter-spacing:.04em;color:var(--fg-2)}.lead{font-size:var(--t-title2);line-height:1.4}.lead+.lead{margin-top:1rem}.rule-fade{padding-bottom:.5rem;margin-bottom:.75rem;background:no-repeat left bottom/100% 1px linear-gradient(90deg,transparent,color-mix(in srgb,var(--fg) 22%,transparent) 30%,color-mix(in srgb,var(--accent) 55%,transparent) 50%,color-mix(in srgb,var(--fg) 22%,transparent) 70%,transparent)}.intro{margin-top:.5rem;color:var(--fg-2);max-width:44rem}.card{scroll-margin-top:calc(var(--bar-h) + 1.25rem);--card: var(--bg-2);padding:1.25rem 1.5rem;border-radius:var(--radius);background:var(--card)}.block.alt .card{--card: var(--bg-3)}@supports (corner-shape: squircle){.card,.glass{corner-shape:squircle}}.flash{animation:flash 1.4s var(--ease-out)}@keyframes flash{0%{background:color-mix(in srgb,var(--accent) 22%,transparent)}to{background:transparent}}@media(prefers-reduced-motion:reduce){.flash{animation:none;background:color-mix(in srgb,var(--accent) 16%,transparent)}}.dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--accent)}.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow),inset 0 1px 0 var(--glass-edge)}html.refract .glass{-webkit-backdrop-filter:url(#cv-refract) blur(18px) saturate(180%);backdrop-filter:url(#cv-refract) blur(18px) saturate(180%)}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.glass,html.refract .glass{background:var(--bg-2);-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--line)}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass{background:var(--bg-2)}}.card{position:relative}@media(hover:hover)and (pointer:fine){.glass:hover:after,.card:hover:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%),var(--lit),transparent 65%);animation:lit-in var(--dur-short) var(--ease-out) both}}@keyframes lit-in{0%{opacity:0}}html.sweep .glass:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.5) 50%,transparent 65%);background-size:250% 100%;animation:sweep 1.2s var(--ease-out) both}@keyframes sweep{0%{background-position:150% 0}to{background-position:-50% 0}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.reveal{animation:reveal linear both;animation-timeline:view();animation-range:entry 0% entry 40%}}}@keyframes reveal{0%{transform:translateY(18px)}to{transform:none}}.chip,.btn{transition:scale var(--dur-press) var(--ease-out),background-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.chip:active,.btn:active{scale:.96;transition-duration:60ms}@media(prefers-reduced-motion:no-preference){html.theme-vt::view-transition-old(root){animation:none}html.theme-vt::view-transition-new(root){animation:theme-reveal var(--dur-med) var(--ease-out)}}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--vt-x, 50%) var(--vt-y, 0))}to{clip-path:circle(var(--vt-r, 150vmax) at var(--vt-x, 50%) var(--vt-y, 0))}}@media(prefers-reduced-motion:reduce){:root{--dur-press: 0s;--dur-short: 0s;--dur-med: 0s}.chip:active,.btn:active{scale:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
