:root{--bg: #fbfbf9;--bg-panel: #f2efe9;--bg-elev: #ffffff;--slate: #f2efe9;--bg-hover: rgba(87, 82, 121, .05);--bg-sel: rgba(87, 82, 121, .1);--border: rgba(87, 82, 121, .22);--border-soft: rgba(87, 82, 121, .12);--text: #575279;--text-dim: #6e6a86;--text-faint: #797593;--accent: #907aa9;--accent-hi: #7a6497;--accent-soft: rgba(144, 122, 169, .14);--green: #56949f;--red: #b4637a;--amber: #ea9d34;--on-accent: #ffffff;--radius: 6px;--radius-lg: 9px;--font: "Hack Nerd Font", "Hack Nerd Font Mono", ui-monospace, Menlo, monospace;--shadow-soft: 0 8px 24px rgba(87, 82, 121, .16);--maxw: 960px;--nav-h: 60px;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 16px);-webkit-text-size-adjust:100%;background:var(--bg)}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.7;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-family:var(--font);line-height:1.25;font-weight:700;margin:0;color:var(--text)}p{margin:0}a{color:var(--accent);text-decoration:none;transition:color .18s ease,opacity .18s ease}a:hover{color:var(--accent-hi)}img{max-width:100%;display:block}ul{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}::selection{background:var(--accent-soft);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:padding-box}.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:24px}.section{padding-block:56px;scroll-margin-top:var(--nav-h)}.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 12px;font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--text-faint)}.section-title{display:flex;align-items:center;gap:12px;font-size:clamp(1.5rem,4vw,2rem);letter-spacing:-.01em}.section-title .glyph{color:var(--accent);font-weight:400}.lead{color:var(--text-dim);font-size:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;font-family:var(--font);font-size:.95rem;font-weight:600;line-height:1;border-radius:var(--radius-lg);border:1px solid transparent;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}.btn-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hi);border-color:var(--accent-hi);color:var(--on-accent)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text)}.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;font-size:.82rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);border:1px solid transparent;white-space:nowrap}.chip-list{display:flex;flex-wrap:wrap;gap:8px}a.chip:hover{background:#c4a7e73d;color:var(--accent-hi)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.nf{font-family:var(--font);font-style:normal;line-height:1;display:inline-block}.skip-link{position:absolute;left:12px;top:-48px;z-index:200;padding:8px 14px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius);font-weight:600;transition:top .18s ease}.skip-link:focus{top:12px;color:var(--on-accent)}.nav{position:sticky;top:0;z-index:100;height:var(--nav-h);background:var(--bg-panel);background:color-mix(in srgb,var(--bg-panel) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-soft)}.nav-inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}.nav-logo{font-weight:700;font-size:1rem;color:var(--accent);white-space:nowrap}.nav-logo span{color:var(--text-faint)}.nav-logo:hover{color:var(--accent-hi)}.nav-links{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.nav-link{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:var(--radius);color:var(--text-dim);font-size:.9rem}.nav-link .nf{color:var(--text-faint);font-size:.85em}.nav-link:hover{color:var(--text);background:var(--bg-hover)}.nav-link.is-active,.nav-link.is-active .nf{color:var(--accent)}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:0;background:transparent;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.nav-toggle .bar{width:18px;height:2px;margin:0 auto;border-radius:2px;background:var(--text);transition:transform .2s ease,opacity .2s ease}.nav-toggle:hover{border-color:var(--text-faint)}.nav-toggle.is-open .bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle.is-open .bar:nth-child(2){opacity:0}.nav-toggle.is-open .bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.hero{padding-top:clamp(56px,11vh,104px);padding-bottom:clamp(44px,8vh,72px)}.hero-name{font-size:clamp(2.4rem,8vw,4.5rem);letter-spacing:-.03em;line-height:1.05;margin-bottom:.5rem}.hero-role{font-size:clamp(1.1rem,3.5vw,1.9rem);font-weight:600;color:var(--text);min-height:1.4em;margin-bottom:1.5rem}.hero-role-text{color:var(--accent)}.caret{display:inline-block;width:.55em;height:1.05em;margin-left:4px;transform:translateY(.14em);background:var(--accent);animation:caret-blink 1.05s steps(1) infinite}@keyframes caret-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.hero-tagline{max-width:60ch;margin-bottom:2rem}.hero-actions{display:flex;flex-wrap:wrap;gap:12px}.about-bio{max-width:68ch}.about-bio+.about-bio{margin-top:1rem}.about-bio strong{color:var(--text);font-weight:600}.about-bio code{font-family:var(--font);color:var(--accent);background:var(--accent-soft);padding:1px 6px;border-radius:4px;font-size:.85em}.about-skills-label{margin-top:2rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-top:8px}.card{display:flex;flex-direction:column;gap:12px;padding:22px;background:var(--bg-elev);border:1px solid var(--border-soft);border-radius:var(--radius-lg);transition:border-color .18s ease,background .18s ease,transform .18s ease}.card:hover{border-color:var(--border);background:color-mix(in srgb,var(--bg-elev) 100%,var(--bg-hover));transform:translateY(-2px)}.card-title{font-size:1.1rem;letter-spacing:-.01em}.card-context{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-top:-6px}.card-desc{color:var(--text-dim);font-size:.92rem;flex:1}.card-tech{margin-top:2px}.card-tech .chip{font-size:.75rem;padding:4px 10px;background:var(--bg-sel);color:var(--text-dim)}.card-links{display:flex;gap:16px;margin-top:4px;padding-top:14px;border-top:1px solid var(--border-soft)}.card-link{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;color:var(--text-dim)}.card-link .nf,.card-link:hover{color:var(--accent)}.timeline{position:relative;margin-top:12px;padding-left:26px}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--border)}.timeline-item{position:relative;padding-bottom:34px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-26px;top:6px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}.timeline-role{font-size:1.02rem;font-weight:600}.timeline-at{color:var(--text-faint);font-weight:400}.timeline-company{color:var(--accent)}.timeline-dates{margin:2px 0 10px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.timeline-bullets{display:flex;flex-direction:column;gap:6px}.timeline-bullets li{position:relative;padding-left:18px;color:var(--text-dim);font-size:.92rem}.timeline-bullets li:before{content:"▸";position:absolute;left:0;color:var(--accent)}.timeline-tech{margin-top:12px}.timeline-tech .chip{font-size:.72rem;padding:3px 9px;background:var(--bg-sel);color:var(--text-dim)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;margin-top:8px}.contact-lead{max-width:46ch;margin-bottom:20px}.contact-chips{gap:12px}.contact-chips .chip{padding:9px 16px;font-size:.9rem}.contact-chips .nf{font-size:1em}.contact-card{padding:24px;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:var(--radius-lg)}.contact-form{display:flex;flex-direction:column;gap:16px}.form-field{display:flex;flex-direction:column;gap:7px}.form-label{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.form-input{width:100%;padding:11px 13px;font-family:var(--font);font-size:.9rem;color:var(--text);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .18s ease}.form-input::placeholder{color:var(--text-faint)}.form-input:focus{outline:none;border-color:var(--accent)}.form-textarea{resize:vertical;min-height:120px;line-height:1.6}.contact-form .btn-primary{align-self:flex-start}.contact-form .btn-primary:disabled{opacity:.6;cursor:default}.form-status{margin:0;font-size:.85rem;min-height:1.2em}.form-status .is-success{color:var(--green)}.form-status .is-error{color:var(--red)}@media (max-width: 720px){.contact-grid{grid-template-columns:1fr;gap:28px}}.footer{border-top:1px solid var(--border-soft);padding-block:28px;margin-top:24px}.footer-line{color:var(--text-faint);font-size:.82rem}.footer-line span{color:var(--accent)}@media (max-width: 620px){.section{padding-block:44px}.nav-logo{font-size:.9rem}.nav-toggle{display:flex}.nav-links{position:absolute;top:var(--nav-h);left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;padding:8px 16px 14px;background:var(--bg-panel);border-bottom:1px solid var(--border-soft);box-shadow:var(--shadow-soft);display:none}.nav-links.is-open{display:flex}.nav-link{padding:12px;font-size:.95rem;border-radius:var(--radius)}}
