:root{color-scheme:light;--bg:#eef3ed;--text:#173026;--muted:#5f7168;--border:#cbd5ce;--accent:#18794e;--header:#eef3ede0;--max-width:42rem}:root[data-theme=dark]{color-scheme:dark;--bg:#07140f;--text:#e2ebe5;--muted:#879b90;--border:#20362c;--accent:#58c98b;--header:#07140fe6}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:8rem}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.94rem;line-height:1.75}button,a{font:inherit}a{color:inherit;text-underline-offset:.22em}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skip-link{z-index:3;background:var(--text);color:var(--bg);padding:.5rem .75rem;position:fixed;top:1rem;left:1rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header,main,footer{width:min(calc(100% - 2.5rem), var(--max-width));margin-inline:auto}.site-header{z-index:2;background:var(--header);backdrop-filter:blur(14px);justify-content:space-between;align-items:center;gap:1.5rem;min-height:6.5rem;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)}.site-header:after{content:"";pointer-events:none;background:linear-gradient(var(--header), transparent);width:100%;height:2rem;position:absolute;top:100%;left:0}nav{gap:clamp(.9rem,4vw,1.5rem);display:flex}nav a,.socials a{color:var(--muted);font-size:.82rem;text-decoration:none}nav a:hover,.socials a:hover,.writing-list a:hover strong{color:var(--accent)}.theme-toggle{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;display:grid}.sun-icon,.moon-icon{font-family:Georgia,serif;font-size:1.05rem;line-height:1}.moon-icon,:root[data-theme=dark] .sun-icon{display:none}:root[data-theme=dark] .moon-icon{display:inline}main{padding-top:10rem}.intro{padding-block:2rem 5rem}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.35}h1{margin-bottom:1.25rem;font-size:1.35rem;font-weight:700}h2{color:var(--muted);letter-spacing:.04em;margin-bottom:1.75rem;font-size:.82rem;font-weight:500}h3{margin-bottom:.15rem;font-size:.94rem;font-weight:600}.intro-copy p{color:var(--muted);margin-bottom:1.4rem}.intro-copy strong{color:var(--accent);font-weight:500}.socials{flex-wrap:wrap;gap:1rem;margin-top:2rem;font-size:.82rem;display:flex}.socials span{color:var(--muted);margin-right:auto}.socials a{color:var(--accent);font-weight:600}.section{padding-block:3.75rem}.timeline{margin:0;padding:0;list-style:none}.timeline li{grid-template-columns:7rem 1fr;gap:1rem;margin-bottom:1.8rem;display:grid}.timeline p{color:var(--muted);margin-bottom:.45rem;font-size:.82rem;line-height:1.65}.period{color:var(--muted);font-size:.78rem}.company{color:var(--accent)!important}.timeline .stack{color:var(--accent);font-size:.74rem}.credential-list{grid-template-columns:1fr 1fr;gap:1.4rem 2rem;margin:0;padding:0;list-style:none;display:grid}.credential-list span,.credential-list small{display:block}.credential-list span{font-size:.86rem;font-weight:600}.credential-list small{color:var(--muted);margin-top:.15rem;font-size:.76rem}.section-intro{color:var(--muted);margin:-.75rem 0 1.75rem;font-size:.82rem}.writing-list{flex-direction:column;gap:1.4rem;display:flex}.writing-list a{justify-content:space-between;align-items:flex-start;gap:1.5rem;text-decoration:none;display:flex}.writing-list strong{display:block}.writing-list .format{color:var(--accent);flex:none;font-size:.72rem}.writing-list strong{font-size:.9rem;font-weight:600}footer{border-top:1px solid var(--border);color:var(--muted);padding-block:2rem 3rem;font-size:.75rem}footer p{margin-bottom:0}@media (prefers-reduced-motion:no-preference){a,button{transition:color .18s,opacity .18s}.intro{animation:.5s ease-out both enter}@keyframes enter{0%{opacity:0;transform:translateY(.5rem)}}}@media (width<=36rem){body{font-size:.9rem}.site-header,main,footer{width:min(calc(100% - 2rem), var(--max-width))}.site-header{align-items:flex-start;min-height:7.25rem;padding-top:2rem}nav{flex-wrap:wrap;row-gap:.4rem;max-width:16rem}main{padding-top:9rem}.intro{padding-bottom:3rem}.section{padding-block:3rem}.timeline li{grid-template-columns:1fr;gap:.25rem}.credential-list{grid-template-columns:1fr}}
