:root{--cv-bg:#1d1e20;--cv-surface:#26272b;--cv-surface-2:#2e2e33;--cv-fg:#d8d8d6;--cv-fg-strong:#f2f2f0;--cv-fg-muted:#8b8b8f;--cv-accent:#7fa8c9;--cv-warn:#e0a94b;--cv-line:#3a3a40;--cv-mono:ui-monospace, "SFMono-Regular", "JetBrains Mono", Menlo, Consolas, monospace;--cv-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif}@media(prefers-color-scheme:light){:root{--cv-bg:#fdfdfc;--cv-surface:#f4f4f2;--cv-surface-2:#ececea;--cv-fg:#33333a;--cv-fg-strong:#1d1e20;--cv-fg-muted:#75757c;--cv-accent:#2b6a97;--cv-warn:#b9791b;--cv-line:#dedee0}}*{box-sizing:border-box}body{margin:0;background:var(--cv-bg);color:var(--cv-fg);font-family:var(--cv-sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}.cv{max-width:48rem;margin:0 auto;padding:1.5rem 1.25rem 5rem}a{color:var(--cv-accent);text-decoration:none}a:hover{text-decoration:underline}.fa-solid,.fa-brands,.fa-regular{color:var(--cv-fg-muted)}i[class*=fa-]{font-size:.9em}.cv-topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-family:var(--cv-mono);font-size:.8125rem;margin-bottom:2rem}.cv-home{color:var(--cv-fg-muted)}.cv-home i{margin-right:.4em;transition:transform 160ms ease}.cv-home:hover{color:var(--cv-fg-strong);text-decoration:none}.cv-home:hover i{transform:translateX(-3px);color:var(--cv-accent)}.cv-langs a{margin-left:.85rem;color:var(--cv-fg-muted)}.cv-langs a:hover{color:var(--cv-accent)}.cv-head{display:flex;align-items:center;gap:1.5rem;margin-bottom:2rem}.cv-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;border:1px solid var(--cv-line);flex-shrink:0}.cv-id{min-width:0}.cv-id h1{font-size:1.9rem;font-weight:600;color:var(--cv-fg-strong);margin:0;letter-spacing:-.01em}.cv-headline{font-family:var(--cv-mono);font-size:.8125rem;color:var(--cv-fg);margin:.2rem 0 .7rem}.cv-links{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;font-family:var(--cv-mono);font-size:.8125rem}.cv-links li{margin:0}.cv-link{color:var(--cv-fg-muted);white-space:nowrap}.cv-link i{margin-right:.45em;width:1em;text-align:center}a.cv-link:hover{color:var(--cv-accent);text-decoration:none}a.cv-link:hover i{color:var(--cv-accent)}.cv-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--cv-line)}.cv-toggle{display:flex;border:1px solid var(--cv-line);border-radius:6px;overflow:hidden}.cv-toggle button{appearance:none;border:0;border-left:1px solid var(--cv-line);background:0 0;color:var(--cv-fg-muted);font-family:var(--cv-mono);font-size:.8125rem;padding:.4rem .9rem;cursor:pointer;transition:background 140ms ease,color 140ms ease}.cv-toggle button i{margin-right:.45em}.cv-toggle button:first-child{border-left:0}.cv-toggle button:hover{color:var(--cv-fg);background:var(--cv-surface)}.cv-toggle button[aria-pressed=true]{background:var(--cv-surface-2);color:var(--cv-fg-strong)}.cv-toggle button[aria-pressed=true] i{color:var(--cv-accent)}.cv-toggle button:focus-visible{outline:2px solid var(--cv-accent);outline-offset:-2px}.cv-download{position:relative;margin:0;font-family:var(--cv-mono);font-size:.8125rem;color:var(--cv-fg-muted);display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .9rem;border:1px solid var(--cv-line);border-radius:6px;transition:color 140ms ease,border-color 140ms ease}.cv-download i{margin-right:.15em}.cv-download:hover{color:var(--cv-accent);border-color:var(--cv-accent);text-decoration:none}.cv-download:hover i{color:var(--cv-accent)}.cv-dl-warn{position:absolute;top:-.5rem;right:-.5rem;display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--cv-bg);cursor:help}.cv-dl-warn[hidden]{display:none}.cv-dl-warn i{margin:0;font-size:.8rem;color:var(--cv-warn)}.cv-summary{font-size:1.0625rem;line-height:1.7;color:var(--cv-fg);margin:0 0 2.5rem}.cv-section{margin-bottom:2.75rem}.cv-section h2{display:flex;align-items:center;gap:.55rem;font-family:var(--cv-mono);font-size:.75rem;font-weight:400;letter-spacing:.12em;text-transform:lowercase;color:var(--cv-fg-muted);margin:0 0 1.4rem;padding-bottom:.6rem;border-bottom:1px solid var(--cv-line)}.cv-section h2 i{color:var(--cv-accent);font-size:.95rem}.cv-entry{display:grid;grid-template-columns:7.5rem 1fr;gap:1.25rem;margin-bottom:1.85rem;transition:opacity 160ms ease}.cv-entry:last-child{margin-bottom:0}.cv-when{font-family:var(--cv-mono);font-size:.75rem;color:var(--cv-fg-muted);padding-top:.3rem;white-space:nowrap}.cv-what h3{font-size:1rem;font-weight:600;color:var(--cv-fg-strong);margin:0}.cv-org{font-weight:400;color:var(--cv-fg)}.cv-where{font-size:.8125rem;color:var(--cv-fg-muted);margin:.2rem 0 .6rem}.cv-where i{margin-right:.4em;font-size:.8em}.cv-what ul{margin:0;padding-left:1.1rem}.cv-what li{font-size:.9375rem;margin-bottom:.35rem;transition:opacity 160ms ease}.cv-links-out{margin:.5rem 0 0;font-size:.875rem}.cv-links-out i,.cv-what h3 a i{font-size:.72em;margin-left:.15em;color:inherit}.cv-topics-label{font-size:.8125rem;color:var(--cv-fg-muted);margin:.9rem 0 .5rem}.cv-topics{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.4rem}.cv-topics li{font-family:var(--cv-mono);font-size:.75rem;padding:.2rem .6rem;border:1px solid var(--cv-line);border-radius:4px;color:var(--cv-fg-muted);margin:0}.cv-topics li i{font-size:.85em;margin-right:.3em;opacity:.7}.cv-topics li:has(a){border-color:var(--cv-accent)}.cv-topics li a{color:var(--cv-accent)}.cv-topics li a i{color:var(--cv-accent)}.cv-skills{margin:0}.cv-skills>div{display:grid;grid-template-columns:7.5rem 1fr;gap:1.25rem;margin-bottom:.5rem;transition:opacity 160ms ease}.cv-skills dt{font-family:var(--cv-mono);font-size:.75rem;color:var(--cv-fg-muted);padding-top:.15rem}.cv-skills dd{margin:0;font-size:.9375rem}.cv-availability{font-size:.875rem;color:var(--cv-fg-muted);border-top:1px solid var(--cv-line);padding-top:1.25rem;margin:0}.cv-availability i{margin-right:.5em;color:var(--cv-accent)}.is-dim{opacity:.3}@media(prefers-reduced-motion:reduce){.cv-entry,.cv-what li,.cv-skills>div,.cv-home i{transition:none}}@media(max-width:34rem){.cv-head{gap:1rem}.cv-photo{width:72px;height:72px}.cv-id h1{font-size:1.55rem}.cv-entry,.cv-skills>div{grid-template-columns:1fr;gap:.35rem}.cv-when{padding-top:0}.cv-controls{flex-direction:column;align-items:flex-start}}@media print{.cv-topbar,.cv-controls{display:none}.is-dim{opacity:1}}