*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#0c0b0a;--color-text:#ede8e0;--color-text-muted:#8b847a;--color-text-faint:#847e73;--color-accent:#5b8dee;--color-accent-hover:#7aa3f2;--color-accent-dim:#5b8dee14;--color-surface:#161412;--color-border:#2e2a27;--color-warning:#e8a87c;--font-display:"Playfair Display", Georgia, serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", monospace;--max-width:680px;--sidebar-width:248px;--transition:.18s ease}html{scroll-behavior:smooth}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.7}body:after{content:"";opacity:.022;pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}a{color:var(--color-accent);transition:color var(--transition);text-decoration:none}a:hover{color:var(--color-accent-hover)}.skip-link{z-index:100;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);font-family:var(--font-mono);letter-spacing:.02em;transition:transform var(--transition);border-radius:0 0 4px;padding:.625rem 1rem;font-size:.8125rem;position:fixed;top:0;left:0;transform:translateY(-150%)}.skip-link:focus{color:var(--color-text);outline:2px solid var(--color-accent);outline-offset:2px;transform:translateY(0)}.content:focus{outline:none}.layout{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);min-height:100vh;display:grid}.content{max-width:var(--max-width);width:100%;padding:6rem 2.5rem 9rem}.sidebar{border-right:1px solid var(--color-border);flex-direction:column;align-self:start;height:100vh;padding:2.75rem 2rem;display:flex;position:sticky;top:0}.sidebar__name{font-family:var(--font-mono);color:var(--color-text);letter-spacing:.06em;margin-bottom:3.5rem;font-size:.875rem}.sidebar__name:hover{color:var(--color-accent)}.sidebar__footer{flex-direction:column;gap:1.25rem;margin-top:auto;display:flex}.sidebar__copy{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-text-faint);font-size:.6875rem}.socials{align-items:center;gap:.5rem;list-style:none;display:flex}.socials__link{color:var(--color-text-muted);transition:color var(--transition);justify-content:center;align-items:center;margin:-.5rem;padding:.5rem;display:inline-flex}.socials__link:hover{color:var(--color-accent)}.socials__link svg{fill:currentColor;width:18px;height:18px;display:block}.site-footer{display:none}.site-footer__copy{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-text-faint);font-size:.6875rem}.nav{flex-direction:column;align-items:flex-start;gap:1.125rem;display:flex}.nav__link{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-text-muted);transition:color var(--transition);font-size:.8125rem}.nav__link:hover{color:var(--color-text)}.nav__link--active{color:var(--color-accent)}.nav-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:2.75rem;height:2.75rem;margin-right:-.5rem;padding:0;display:none}.nav-toggle__bar{background-color:var(--color-text-muted);width:22px;height:1px;transition:transform var(--transition), opacity var(--transition), background-color var(--transition);display:block}.nav-toggle:hover .nav-toggle__bar{background-color:var(--color-text)}.nav-toggle[aria-expanded=true] .nav-toggle__bar:first-child{transform:translateY(6px)rotate(45deg)}.nav-toggle[aria-expanded=true] .nav-toggle__bar:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] .nav-toggle__bar:nth-child(3){transform:translateY(-6px)rotate(-45deg)}@media (width<=767px){.layout{display:block}.sidebar{border-right:none;border-bottom:1px solid var(--color-border);background-color:var(--color-bg);z-index:20;flex-direction:row;justify-content:space-between;align-items:center;height:auto;padding:1.25rem 1.5rem}.sidebar__name{margin-bottom:0}.sidebar__footer{display:none}.content{max-width:none;padding:3.5rem 1.5rem 4rem}.site-footer{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;padding:2rem 1.5rem;display:flex}.nav-toggle{display:flex}.nav{background-color:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;gap:0;padding:.5rem 0;display:none;position:absolute;top:calc(100% + 1px);left:0;right:0}.nav.is-open{display:flex}.nav__link{width:100%;padding:.875rem 1.5rem;font-size:.875rem}.nav__link:hover{color:var(--color-text);background-color:#ffffff08}}.section-label{align-items:center;gap:.875rem;margin-bottom:2.5rem;display:flex}.section-label__num{font-family:var(--font-mono);color:var(--color-text-faint);letter-spacing:.1em;flex-shrink:0;font-size:.6875rem}.section-label__title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--color-text-muted);flex-shrink:0;font-size:.6875rem;font-weight:400}.section-label:after{content:"";background:var(--color-border);flex:1;height:1px}.hero{margin-bottom:7rem}.hero__name{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);margin-bottom:1rem;font-size:clamp(2.75rem,7vw,4.5rem);font-style:italic;font-weight:700;line-height:1.05}.hero__tagline{font-family:var(--font-mono);color:var(--color-accent);letter-spacing:.08em;margin-bottom:2rem;font-size:.8125rem}.about{margin-bottom:7rem}.about__bio{color:var(--color-text-muted);font-size:1.0625rem;line-height:1.8}.about__bio+.about__bio{margin-top:1.25rem}.experience{margin-bottom:7rem}.timeline{flex-direction:column;gap:3rem;margin-left:.5rem;padding-left:2rem;list-style:none;display:flex;position:relative}.timeline:before{content:"";background:var(--color-border);z-index:0;width:1px;position:absolute;top:0;bottom:0;left:0;transform:translate(-50%)}.timeline__entry{position:relative}.timeline__entry:after{content:"";background:var(--color-border);width:1px;transition:background var(--transition);z-index:0;position:absolute;top:-.5rem;bottom:-.5rem;left:-2rem;transform:translate(-50%)}.timeline__entry:before{content:"";background:var(--color-bg);border:1.5px solid var(--color-text-faint);width:9px;height:9px;transition:border-color var(--transition), background var(--transition);z-index:1;border-radius:50%;position:absolute;top:50%;left:-2rem;transform:translate(-50%,-50%)}.timeline__entry:hover:before{border-color:var(--color-accent);background:var(--color-accent)}.timeline__entry:hover:after{background:var(--color-accent)}.timeline__entry:hover .tag{border-color:var(--color-accent);color:var(--color-accent-hover)}.timeline__entry:hover .timeline__hl{color:var(--color-accent-hover)}.timeline__header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.25rem;display:flex}.timeline__role{font-family:var(--font-body);color:var(--color-text);font-size:1rem;font-weight:500}.timeline__dates{font-family:var(--font-mono);color:var(--color-text-muted);white-space:nowrap;flex-shrink:0;font-size:.75rem}.timeline__company{font-family:var(--font-mono);letter-spacing:.02em;color:var(--color-accent);margin-bottom:.75rem;font-size:.8125rem}.timeline__blurb{color:var(--color-text-muted);max-width:600px;margin-bottom:1rem;font-size:.9375rem;line-height:1.7}.timeline__company:last-child,.timeline__blurb:last-child{margin-bottom:0}.timeline__hl{color:var(--color-text);transition:color var(--transition);font-weight:500}.timeline__more{justify-content:center;margin-left:-2rem;display:flex}.timeline__more-btn{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);cursor:pointer;transition:border-color var(--transition), color var(--transition);border-radius:3px;padding:.4rem 1.25rem;font-size:.6875rem}.timeline__more-btn:hover{border-color:var(--color-accent);color:var(--color-accent-hover)}.timeline__more-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@keyframes timeline-reveal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.timeline__entry--revealed{animation:.7s timeline-reveal}.tags{flex-wrap:wrap;gap:.5rem;padding-bottom:.35rem;list-style:none;display:flex}.tags li{display:flex}.tag{font-family:var(--font-mono);letter-spacing:.03em;color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;transition:border-color var(--transition), color var(--transition);background:0 0;border-radius:3px;padding:.25rem .5rem;font-size:.6875rem}.tag:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.tag--active{border-color:var(--color-accent);color:var(--color-accent-hover)}.resume{margin-bottom:7rem}.resume__preview{text-decoration:none;display:inline-block}.resume__document{background-color:var(--color-surface);border:1px solid var(--color-border);width:260px;transition:border-color var(--transition), box-shadow var(--transition);border-radius:3px;flex-direction:column;display:flex;overflow:hidden}.resume__preview:hover .resume__document{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent), 0 8px 24px #0006}.resume__doc-header{border-bottom:1px solid var(--color-border);padding:1.25rem 1.25rem 1rem}.resume__doc-name{font-family:var(--font-display);color:var(--color-text);margin-bottom:.2rem;font-size:1rem;font-style:italic;display:block}.resume__doc-role{font-family:var(--font-mono);letter-spacing:.1em;color:var(--color-accent);text-transform:uppercase;font-size:.625rem;display:block}.resume__doc-lines{flex-direction:column;flex:1;gap:.6rem;padding:1.25rem;display:flex}.resume__doc-line{background:var(--color-border);width:40%;height:1px;display:block}.resume__doc-line--wide{width:85%}.resume__doc-line--mid{width:60%}.resume__doc-cta{border-top:1px solid var(--color-border);font-family:var(--font-mono);letter-spacing:.08em;color:var(--color-text-muted);transition:color var(--transition);padding:.75rem 1.25rem;font-size:.6875rem;display:block}.resume__preview:hover .resume__doc-cta{color:var(--color-accent)}.work-with-me{margin-bottom:7rem}.work-with-me__bio{color:var(--color-text-muted);max-width:600px;margin-bottom:2rem;font-size:1.0625rem;line-height:1.8}.work-with-me__link{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);transition:color var(--transition), border-color var(--transition);border-bottom:1px solid #5b8dee4d;align-items:center;gap:.375rem;padding-bottom:.125rem;font-size:.875rem;display:inline-flex}.work-with-me__link:hover{color:var(--color-accent-hover);border-color:var(--color-accent-hover)}.work-with-me__link-arrow{transition:transform var(--transition)}.work-with-me__link:hover .work-with-me__link-arrow{transform:translate(2px,-2px)}.contact{margin-bottom:7rem}.contact__blurb{color:var(--color-text-muted);margin-bottom:2rem;font-size:1.0625rem;line-height:1.8}.contact__form{flex-direction:column;gap:1.25rem;margin-top:2rem;display:flex}.contact__label{font-family:var(--font-mono);color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.375rem;font-size:.75rem;display:block}.contact__optional{color:var(--color-text-muted);text-transform:none;letter-spacing:normal;font-size:.7rem}.contact__input,.contact__textarea{background:var(--color-surface);border:1px solid var(--color-border);width:100%;color:var(--color-text);font-family:var(--font-body);min-height:2.75rem;transition:border-color var(--transition);border-radius:2px;outline:2px solid #0000;padding:.6875rem .875rem;font-size:1rem}.contact__input:focus,.contact__textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-dim)}.contact__input:disabled,.contact__textarea:disabled{opacity:.5;cursor:not-allowed}.contact__textarea{resize:vertical;min-height:8rem;line-height:1.6}.contact__honeypot{opacity:0;pointer-events:none;position:absolute;left:-9999px}.contact__submit{background:var(--color-accent);color:var(--color-bg);cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;min-height:2.75rem;transition:background var(--transition), opacity var(--transition);border:none;border-radius:2px;align-self:flex-start;padding:.75rem 1.75rem;font-size:.8125rem}.contact__submit:hover:not(:disabled){background:var(--color-accent-hover)}.contact__submit:disabled{cursor:not-allowed;opacity:.6}.contact__error{color:var(--color-warning);font-family:var(--font-mono);border-left:2px solid var(--color-warning);padding-left:.75rem;font-size:.8125rem}.contact__success{color:var(--color-accent);font-family:var(--font-mono);margin-top:2rem;font-size:.9375rem}.fade-in{opacity:0;will-change:opacity, transform;transition:opacity .7s,transform .7s;transform:translateY(20px)}.fade-in.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.fade-in{opacity:1;transition:none;transform:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
