@font-face{font-family:Archivo;src:url(/fonts/archivo.woff2) format("woff2");font-weight:400 900;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono.woff2) format("woff2");font-weight:500 700;font-display:swap}:root{--ground: #f4f4f1;--ink: #111;--paper: #fff;--orange: #ff5a1f;--cobalt: #2b4bff;--lime: #c6f432;--muted: #45453f;--line: 3px solid var(--ink);--shadow: 8px 8px 0 var(--ink);--gap: clamp(16px, 4vw, 64px);--ease: cubic-bezier(.16, 1, .3, 1);color-scheme:light;scrollbar-color:var(--ink) var(--ground)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--ground);color:var(--ink);font:400 18px/1.6 Archivo,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}::selection{background:var(--lime);color:var(--ink)}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0;padding:0}ul,ol{list-style:none}a{color:inherit}a:focus-visible{outline:3px solid var(--cobalt);outline-offset:4px}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.wrap{max-width:1312px;margin:0 auto;padding:0 var(--gap)}.box{border:var(--line);box-shadow:var(--shadow);background:var(--paper)}header.wrap{padding-top:28px}.bar{display:flex;align-items:center;gap:24px;padding:10px 12px 10px 18px}.mark{font-weight:700;font-size:17px;text-decoration:none;letter-spacing:.04em}.sections{display:flex;gap:4px 22px;margin-left:auto;flex-wrap:wrap}.sections a{font-weight:600;font-size:16px;text-decoration:none;text-underline-offset:6px;text-decoration-thickness:3px}.sections a:hover{text-decoration-line:underline;text-decoration-color:var(--orange)}.lang{background:var(--lime);border:var(--line);padding:4px 10px;font-weight:700;font-size:15px;text-decoration:none;box-shadow:3px 3px 0 var(--ink);transition:transform .12s var(--ease),box-shadow .12s var(--ease)}.lang:hover{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}.hero{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:clamp(28px,4vw,56px);padding:clamp(36px,5vw,56px) 0 clamp(40px,5vw,56px);align-items:start}.photo{background:var(--cobalt);padding:16px}.photo img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;border:var(--line)}h1{font-weight:900;font-size:clamp(3rem,7.4vw,5.75rem);line-height:.9;letter-spacing:-.04em;text-wrap:balance;margin-bottom:22px}.phd{color:var(--cobalt)}.plates{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.plate{border:var(--line);padding:5px 14px;font-weight:800;font-size:clamp(17px,1.6vw,22px);line-height:1.3}.plate.orange{background:var(--orange)}.intro{max-width:66ch;margin-bottom:14px}.intro+.intro{color:var(--muted)}.profiles{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}.btn{display:inline-flex;align-items:center;gap:8px;border:var(--line);background:var(--paper);box-shadow:4px 4px 0 var(--ink);padding:8px 14px;font-weight:700;font-size:16px;text-decoration:none;transition:transform .12s var(--ease),box-shadow .12s var(--ease),background-color .12s}.btn svg{width:14px;height:14px}.btn:hover{background:var(--lime);transform:translate(4px,4px);box-shadow:0 0 0 var(--ink)}.btn:active{background:var(--orange)}.gantt{padding:22px clamp(16px,2.5vw,28px) 26px}figcaption{font-weight:900;font-size:clamp(22px,2.4vw,30px);letter-spacing:-.02em;margin-bottom:18px}.chart{position:relative;--label: clamp(160px, 22vw, 280px)}.axis{position:relative;height:26px;margin-left:var(--label);font-size:13px;color:var(--muted)}.axis li{position:absolute;top:0;padding-left:6px;border-left:2px solid var(--ink);line-height:1.4}.row{display:grid;grid-template-columns:var(--label) 1fr;align-items:center;min-height:46px;text-decoration:none;border-top:2px dashed #c9c9c2}.row:last-of-type{border-bottom:2px dashed #c9c9c2}.label{font-weight:600;font-size:16px;padding-right:16px;line-height:1.25}.track{position:relative;height:34px}.span{position:absolute;top:0;height:100%;border:var(--line);display:flex;align-items:center;overflow:hidden;transform-origin:left center;animation:grow .9s var(--ease) calc(.15s + var(--i) * .14s) both;transition:box-shadow .12s var(--ease),transform .12s var(--ease)}.when{font-size:12px;font-weight:700;padding:0 8px;white-space:nowrap}.span.cobalt .when{color:#fff}.row:hover .span,.row:focus-visible .span{box-shadow:4px 4px 0 var(--ink);transform:translate(-2px,-2px)}.row:hover .label{text-decoration:underline 3px;text-underline-offset:5px}.row:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}.now{position:absolute;top:26px;bottom:-22px;left:calc(var(--label) + (100% - var(--label)) * var(--today) / 100);border-right:3px solid var(--orange);padding-right:6px;transform:translate(-100%);font-size:12px;font-weight:700;display:flex;align-items:flex-end;line-height:1;pointer-events:none}@keyframes grow{0%{transform:scaleX(.15)}}.orange{--c: var(--orange)}.lime{--c: var(--lime)}.cobalt{--c: var(--cobalt)}.span{background:var(--c)}.block{padding-top:clamp(64px,8vw,104px)}h2{font-weight:900;font-size:clamp(2.25rem,5vw,4rem);line-height:.95;letter-spacing:-.04em;margin-bottom:clamp(24px,3vw,36px)}h3{font-weight:800;font-size:clamp(21px,2vw,26px);line-height:1.15;letter-spacing:-.01em}.org{font-weight:600;color:var(--muted)}.date{font-size:14px;font-weight:700}.jobs{display:grid;gap:32px}.job{display:grid;grid-template-columns:minmax(240px,.8fr) 2fr;scroll-margin-top:24px}.job{transition:transform .12s var(--ease),box-shadow .12s var(--ease)}.job:hover{transform:translate(-2px,-2px);box-shadow:10px 10px 0 var(--ink)}.job>header{grid-row:span 2;background:var(--c);border-right:var(--line);padding:22px 24px;display:flex;flex-direction:column;gap:6px}.job .org{color:var(--ink)}.job.cobalt>header{color:#fff}.job.cobalt .org{color:#e4e8ff}.job>header .date{margin-top:auto;padding-top:14px}.items{padding:22px 28px 0;display:grid;gap:10px;max-width:76ch}.items li{padding-left:22px;position:relative}.items li:before{content:"";position:absolute;left:0;top:.62em;width:10px;height:10px;background:var(--ink)}.tech{padding:18px 28px 24px;display:flex;flex-wrap:wrap;gap:8px;grid-column:2}.job:not(:has(.tech)) .items{padding-bottom:24px}.chip{border:2px solid var(--ink);padding:2px 10px;font-size:14px;font-weight:600;background:var(--ground);line-height:1.6}.tech .chip{font-size:13px;font-weight:500}:target.job{animation:flash 1.2s var(--ease)}@keyframes flash{0%,30%{box-shadow:14px 14px 0 var(--c)}}.edu{display:grid;grid-template-columns:repeat(2,1fr);gap:32px}.degree{padding:22px 24px 24px;display:grid;gap:6px;align-content:start}.degree .date{justify-self:start;margin-top:8px}.grade{justify-self:start;margin-top:10px;background:var(--cobalt);color:#fff;border:var(--line);padding:2px 12px;font-weight:800}.skills{display:grid;grid-template-columns:repeat(2,1fr);border:var(--line);box-shadow:var(--shadow);background:var(--paper)}.group{padding:22px 24px 26px}.group:nth-child(odd){border-right:var(--line)}.group:nth-child(n+3){border-top:var(--line)}.group dt{font-weight:800;font-size:20px;margin-bottom:14px;display:flex;align-items:center;gap:10px}.group dt:before{content:"";width:16px;height:16px;border:var(--line);background:var(--c, var(--paper))}.group ul{display:flex;flex-wrap:wrap;gap:8px}.langs{display:grid;grid-template-columns:repeat(2,1fr);gap:32px}.lng{padding:20px 24px;display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.lng dt{font-weight:900;font-size:clamp(26px,3vw,36px);letter-spacing:-.03em}.lng dd{text-align:right}.level{display:inline-block;background:var(--ink);color:var(--ground);border:var(--line);padding:0 12px;font-weight:800;font-size:20px}.note{display:block;font-size:15px;color:var(--muted);margin-top:8px}.foot{margin-top:clamp(80px,10vw,128px);background:var(--ink);color:var(--ground);padding:clamp(48px,6vw,72px) 0 56px}.sign{font-weight:900;font-size:clamp(2.5rem,7vw,5.5rem);line-height:.9;letter-spacing:-.04em}.contact{margin:16px 0 6px;color:#d6d6cf}.foot .btn{color:var(--ink);border-color:var(--ground);box-shadow:4px 4px 0 var(--lime)}.foot .btn:hover{box-shadow:0 0 0 var(--lime)}.foot a:focus-visible{outline-color:var(--lime)}@media(max-width:860px){.hero{grid-template-columns:1fr}.photo{width:min(240px,60vw);padding:12px}.job{grid-template-columns:1fr}.job>header{grid-row:auto;border-right:0;border-bottom:var(--line)}.tech{grid-column:1}.edu,.langs,.skills{grid-template-columns:1fr}.group:nth-child(odd){border-right:0}.group+.group{border-top:var(--line)}.bar{flex-wrap:wrap}.sections{order:3;width:100%;margin:0;padding-top:8px;border-top:2px dashed #c9c9c2}.sections{gap:4px 14px}.sections a{font-size:15px}.lang{margin-left:auto}.chart{--label: 0px}.row{grid-template-columns:1fr;padding:8px 0 10px;gap:6px}.label{font-size:15px}}@media(max-width:520px){body{font-size:17px}.box{box-shadow:5px 5px 0 var(--ink)}.axis li:nth-child(2n){visibility:hidden}.when{display:none}.now{top:26px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
