:root{--bg: #ffffff;--bg-subtle: #f6f7f9;--surface: #ffffff;--border: #e4e7ec;--border-strong: #cfd4dc;--text: #101828;--text-muted: #475467;--text-subtle: #667085;--accent: #0e7367;--accent-hover: #0a5c52;--accent-soft: #e6f4f1;--accent-contrast: #ffffff;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 8px 24px -8px rgba(16, 24, 40, .12);--header-bg: rgba(255, 255, 255, .85);--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--content-width: 1120px;--header-height: 64px;color-scheme:light}[data-theme=dark]{--bg: #0b0f17;--bg-subtle: #10151f;--surface: #131a26;--border: #222b3a;--border-strong: #334155;--text: #edf0f5;--text-muted: #a9b3c2;--text-subtle: #8792a3;--accent: #3cc7b4;--accent-hover: #6ad8c9;--accent-soft: rgba(60, 199, 180, .12);--accent-contrast: #06201c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 12px 32px -12px rgba(0, 0, 0, .6);--header-bg: rgba(11, 15, 23, .85);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px);-webkit-text-size-adjust:100%}body{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4{color:var(--text);line-height:1.2;letter-spacing:-.02em;font-weight:700}p{color:var(--text-muted)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}img{display:block;max-width:100%}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}::selection{background:var(--accent-soft);color:var(--text)}.skip-link{position:absolute;left:16px;top:-48px;z-index:100;padding:8px 14px;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-contrast);font-weight:600}.skip-link:focus{top:12px;color:var(--accent-contrast)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.container{width:100%;max-width:var(--content-width);margin:0 auto;padding:0 24px}.section{padding:96px 0;border-top:1px solid var(--border)}.section--subtle{background:var(--bg-subtle)}.section-header{max-width:680px;margin-bottom:48px}.eyebrow{display:inline-block;margin-bottom:12px;color:var(--accent);font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.section-title{font-size:clamp(1.75rem,3vw,2.25rem)}.section-lead{margin-top:12px;font-size:1.0625rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid transparent;border-radius:var(--radius);font-size:.9375rem;font-weight:600;line-height:1;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.btn:disabled{cursor:progress;opacity:.7}.btn--primary{background:var(--accent);color:var(--accent-contrast)}.btn--primary:hover:not(:disabled){background:var(--accent-hover);color:var(--accent-contrast)}.btn--secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn--secondary:hover:not(:disabled){border-color:var(--text-subtle);color:var(--text)}.btn svg{width:18px;height:18px;flex-shrink:0}.tag-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none}.tag{padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-subtle);color:var(--text-muted);font-size:.8125rem;font-weight:500;line-height:1.4}.form-error{margin-top:12px;color:#b42318;font-size:.875rem}[data-theme=dark] .form-error{color:#fda29b}@media (max-width: 720px){.container{padding:0 20px}.section{padding:72px 0}.section-header{margin-bottom:36px}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.chat{display:flex;flex-direction:column;height:560px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);overflow:hidden}.chat__log{display:flex;flex:1;flex-direction:column;gap:12px;padding:24px;overflow-y:auto;overscroll-behavior:contain}.chat__empty{margin:auto 0}.chat__empty-title{color:var(--text);font-size:1.0625rem;font-weight:600}.chat__empty>p+p{margin-top:2px;font-size:.9375rem}.chat__suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.chat__suggestion{padding:8px 14px;border:1px solid var(--border-strong);border-radius:999px;background:var(--bg);color:var(--text);font-size:.875rem;font-weight:500;text-align:left;transition:border-color .15s ease,background-color .15s ease}.chat__suggestion:hover{border-color:var(--accent);background:var(--accent-soft)}.chat__message{max-width:85%;padding:12px 16px;border-radius:14px;font-size:.9375rem;line-height:1.6;overflow-wrap:anywhere}.chat__message p{color:inherit}.chat__message--user{align-self:flex-end;border-bottom-right-radius:4px;background:var(--accent);color:var(--accent-contrast);white-space:pre-wrap}.chat__message--assistant{align-self:flex-start;border-bottom-left-radius:4px;background:var(--bg-subtle);color:var(--text)}.chat__message--error{align-self:flex-start;border:1px solid #fecdca;background:#fef3f2;color:#b42318}[data-theme=dark] .chat__message--error{border-color:#7a271a;background:#f044381f;color:#fda29b}.chat__message--assistant>*+*{margin-top:8px}.chat__message--assistant ul,.chat__message--assistant ol{padding-left:20px}.chat__message--assistant code{padding:1px 5px;border-radius:4px;background:var(--border);font-size:.875em}.chat__typing{display:flex;gap:5px;padding:16px}.chat__typing span[aria-hidden]{width:7px;height:7px;border-radius:50%;background:var(--text-subtle);animation:chat-typing 1.2s infinite ease-in-out}.chat__typing span[aria-hidden]:nth-of-type(3){animation-delay:.15s}.chat__typing span[aria-hidden]:nth-of-type(4){animation-delay:.3s}@keyframes chat-typing{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.chat__form{position:relative;display:flex;align-items:flex-end;gap:10px;padding:16px;border-top:1px solid var(--border);background:var(--surface)}.chat__form textarea{flex:1;min-height:44px;max-height:140px;padding:11px 14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);resize:none;field-sizing:content;line-height:1.4}.chat__form textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.chat__form textarea::placeholder{color:var(--text-subtle)}.chat__send{width:44px;padding:0}.chat__counter{position:absolute;right:76px;bottom:2px;font-size:.75rem;color:var(--text-subtle)}@media (max-width: 720px){.chat{height:520px}.chat__log{padding:18px}.chat__message{max-width:92%}}.assistant{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:56px}.assistant__intro{position:sticky;top:calc(var(--header-height) + 32px)}.assistant__facts{display:grid;gap:10px;margin-top:28px;list-style:none}.assistant__facts li{position:relative;padding-left:28px;color:var(--text-muted);font-size:.9375rem}.assistant__facts li:before{content:"";position:absolute;top:.35em;left:0;width:16px;height:16px;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5'/%3E%3C/svg%3E") center / 12px no-repeat,var(--accent)}@media (max-width: 900px){.assistant{grid-template-columns:1fr;gap:32px}.assistant__intro{position:static}}.timeline{list-style:none}.timeline__item{display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px;padding:32px 0;border-top:1px solid var(--border)}.timeline__item:first-child{padding-top:0;border-top:0}.timeline__period{color:var(--text);font-size:.9375rem;font-weight:600}.timeline__location{margin-top:2px;color:var(--text-subtle);font-size:.875rem}.timeline__title{font-size:1.1875rem;letter-spacing:-.01em}.timeline__company{color:var(--accent);font-weight:600}.timeline__highlights{display:grid;gap:8px;margin-top:14px;padding-left:18px;color:var(--text-muted)}.timeline__highlights li::marker{color:var(--text-subtle)}.education{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:40px;padding:24px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-subtle)}.education__title{margin-bottom:4px;font-size:.875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.education p{color:var(--text)}@media (max-width: 720px){.timeline__item{grid-template-columns:1fr;gap:8px;padding:28px 0}.timeline__meta{display:flex;flex-wrap:wrap;gap:4px 12px}.timeline__location{margin-top:0}.education{grid-template-columns:1fr}}.contact__inner{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:48px}.contact__actions{display:grid;gap:12px;justify-items:stretch}.contact__secondary{display:grid;grid-template-columns:repeat(3,auto);gap:12px}.site-footer{padding:28px 0;border-top:1px solid var(--border)}.site-footer__inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px}.site-footer p{color:var(--text-subtle);font-size:.875rem}.site-footer a{font-weight:500}@media (max-width: 860px){.contact__inner{grid-template-columns:1fr;align-items:start;gap:28px}.contact__actions{justify-items:start}}@media (max-width: 480px){.contact__actions,.contact__secondary{width:100%;grid-template-columns:1fr;justify-items:stretch}.contact__actions .btn--primary{white-space:normal}}.site-header{position:sticky;top:0;z-index:50;height:var(--header-height);border-bottom:1px solid var(--border);background:var(--header-bg);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px)}.site-header__inner{display:flex;align-items:center;gap:24px;height:100%}.site-header__brand{display:inline-flex;align-items:center;gap:10px;color:var(--text);font-weight:700;letter-spacing:-.01em}.site-header__brand:hover{color:var(--text)}.site-header__monogram{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--accent);color:var(--accent-contrast);font-size:.8125rem;font-weight:700;letter-spacing:.02em}.site-nav{margin-left:auto}.site-nav ul{display:flex;gap:4px;list-style:none}.site-nav a{display:block;padding:8px 12px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.9375rem;font-weight:500}.site-nav a:hover,.site-nav a[aria-current]{color:var(--text);background:var(--bg-subtle)}.site-header__actions{display:flex;align-items:center;gap:4px}.icon-button{display:grid;place-items:center;width:40px;height:40px;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--text-muted)}.icon-button:hover{border-color:var(--border);color:var(--text)}.icon-button svg{width:20px;height:20px}.site-header__menu-toggle{display:none}@media (max-width: 860px){.site-header__brand span:last-child{font-size:.9375rem}.site-header__menu-toggle{display:grid}.site-nav{position:absolute;top:var(--header-height);right:0;left:0;display:none;border-bottom:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow-md)}.site-nav--open{display:block}.site-nav ul{flex-direction:column;gap:0;padding:8px 12px 16px}.site-nav a{padding:12px;font-size:1rem}.site-header__actions{margin-left:auto}}.hero{position:relative;padding:104px 0 96px;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse 70% 60% at 70% 30%,#000 20%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 70% 30%,#000 20%,transparent 75%);opacity:.6}.hero__inner{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:64px}.hero__status{display:inline-flex;align-items:center;gap:8px;margin-bottom:24px;padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-muted);font-size:.875rem;font-weight:500}.hero__status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.hero__title{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;letter-spacing:-.035em;line-height:1.05}.hero__role{margin-top:16px;color:var(--text);font-size:clamp(1.125rem,2.2vw,1.375rem);font-weight:600}.hero__role span{margin:0 4px;color:var(--text-subtle)}.hero__summary{max-width:620px;margin-top:16px;font-size:1.125rem;line-height:1.7}.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.hero__links{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:32px;list-style:none}.hero__links a,.hero__location{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.9375rem;font-weight:500}.hero__links a:hover{color:var(--text)}.hero__links svg{width:18px;height:18px}.hero__portrait{position:relative}.hero__portrait:after{content:"";position:absolute;inset:16px -16px -16px 16px;z-index:-1;border:1px solid var(--border-strong);border-radius:24px}.hero__avatar{width:280px;height:280px;border:1px solid var(--border);border-radius:24px;object-fit:cover;background:var(--bg-subtle);box-shadow:var(--shadow-md)}.hero__avatar--fallback{display:grid;place-items:center;color:var(--accent);font-size:4rem;font-weight:800}@media (max-width: 900px){.hero{padding:64px 0 72px}.hero__inner{grid-template-columns:1fr;gap:40px}.hero__portrait{order:-1}.hero__portrait:after{display:none}.hero__avatar{width:112px;height:112px;border-radius:20px}.hero__avatar--fallback{font-size:2rem}}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.project-card{display:flex;flex-direction:column;gap:24px;padding:28px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);transition:border-color .15s ease,box-shadow .15s ease}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.project-card__badge{display:inline-block;margin-bottom:14px;padding:3px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.8125rem;font-weight:600}.project-card__title{font-size:1.3125rem}.project-card__summary{margin-top:6px}.project-card__story{display:grid;gap:14px;padding-top:20px;border-top:1px solid var(--border)}.project-card__story dt{color:var(--text);font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.project-card__story dd{margin-top:2px;color:var(--text-muted);font-size:.9375rem}.project-card__links{display:flex;flex-wrap:wrap;gap:20px;margin-top:auto}.project-card__links a,.github-strip a{display:inline-flex;align-items:center;gap:6px;font-size:.9375rem;font-weight:600}.project-card__links svg,.github-strip svg{width:16px;height:16px}.github-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin-top:32px;padding:18px 24px;border:1px dashed var(--border-strong);border-radius:var(--radius-lg)}.github-strip p{font-size:.9375rem}.github-strip__label{color:var(--text);font-weight:600}@media (max-width: 860px){.project-grid{grid-template-columns:1fr}.project-card{padding:24px}}.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.skills-group{padding:24px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface)}.skills-group:nth-child(3n){border-right:0}.skills-group:nth-last-child(-n+3){border-bottom:0}.skills-group__title{margin-bottom:14px;font-size:1rem}@media (max-width: 860px){.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-group:nth-child(3n){border-right:1px solid var(--border)}.skills-group:nth-child(2n){border-right:0}.skills-group:nth-last-child(-n+3){border-bottom:1px solid var(--border)}.skills-group:nth-last-child(-n+2){border-bottom:0}}@media (max-width: 560px){.skills-grid{grid-template-columns:1fr}.skills-group,.skills-group:nth-child(3n){border-right:0;border-bottom:1px solid var(--border)}.skills-group:last-child{border-bottom:0}}
