:root{--color-bg: #fcfcfc;--color-text-main: #111111;--color-text-sub: #6e6e6e;--color-text-light: #9b9b9b;--color-hover-bg: rgba(0, 0, 0, .035);--color-border: rgba(0, 0, 0, .06);--color-btn-bg: #111111;--color-btn-text: #ffffff;--color-btn-hover: #222222;--color-focus-ring: rgba(0, 0, 0, .1)}@media(prefers-color-scheme:dark){:root{--color-bg: #0c0c0b;--color-text-main: #ededed;--color-text-sub: #8c8c8c;--color-text-light: #5f5f5f;--color-hover-bg: rgba(255, 255, 255, .035);--color-border: rgba(255, 255, 255, .08);--color-btn-bg: #ededed;--color-btn-text: #0c0c0b;--color-btn-hover: #ffffff;--color-focus-ring: rgba(255, 255, 255, .15)}}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background-color:var(--color-bg);color:var(--color-text-main);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;letter-spacing:-.011em;transition:background-color .3s,color .3s}a{color:inherit;text-decoration:none}.container{max-width:600px;margin:0 auto;padding:5rem 1.25rem}@media(min-width:640px){.container{padding:8rem 1.5rem}}h1,h2,h3,h4,p,span{margin:0;letter-spacing:-.015em}.prose{line-height:1.75}.prose p{margin-top:0;margin-bottom:1.25rem}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--color-text-main);margin-top:2.25rem;margin-bottom:1rem;font-weight:600;line-height:1.25}.prose h1{font-size:2.25rem}.prose h2{font-size:1.65rem}.prose h3{font-size:1.35rem}.prose h4{font-size:1.15rem}.prose a{color:var(--color-text-main);text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color .2s ease,color .2s ease}.prose a:hover{text-decoration-color:var(--color-text-main)}.prose ul,.prose ol{margin-top:0;margin-bottom:1.25rem;padding-left:1.5rem}.prose li{margin-bottom:.5rem}.prose hr{border:0;border-top:1px solid var(--color-border);margin:2rem 0}.text-sub{color:var(--color-text-sub)}.font-medium{font-weight:500}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-16{margin-top:4rem}.mb-5{margin-bottom:1.25rem}.mb-32{margin-bottom:8rem}.pb-1{padding-bottom:.25rem}.block{display:block}.inline-block{display:inline-block}.underline{text-decoration:underline}.underline:hover{color:var(--color-text-main)}.site-header{display:flex;flex-direction:column;align-items:flex-start}.quick-nav{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:2rem;margin-bottom:4rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.quick-nav a{color:var(--color-text-sub);transition:color .15s ease}.quick-nav a:hover{color:var(--color-text-main);text-decoration:underline;text-underline-offset:4px}.skills-grid{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:2rem}.skills-row{display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:640px){.skills-row{grid-template-columns:180px 1fr;gap:1.5rem}}.skills-category{font-weight:500;color:var(--color-text-main);font-size:.875rem;padding-top:.125rem}.skills-badges{display:flex;flex-wrap:wrap;gap:.375rem .5rem}.badge{display:inline-block;padding:.125rem .5rem;border-radius:.25rem;background-color:var(--color-bg);color:var(--color-text-sub);font-size:.775rem;font-weight:500;border:1px solid var(--color-border);transition:all .2s cubic-bezier(.16,1,.3,1)}.badge:hover{color:var(--color-text-main);border-color:var(--color-text-sub);background-color:var(--color-hover-bg)}.section{margin-top:5rem;scroll-margin-top:3rem}.section-title{font-size:.725rem;font-weight:600;color:var(--color-text-light);text-transform:uppercase;letter-spacing:.12em;margin-bottom:1.5rem}.section-title a{color:inherit;text-decoration:none}.section-title a:hover{color:var(--color-text-main)}.link-list{display:flex;flex-direction:column;gap:.375rem}.hover-card{display:flex;flex-direction:column;padding:.625rem .75rem;margin:0 -.75rem;border-radius:.5rem;transition:background-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1)}.hover-card:hover{background-color:var(--color-hover-bg);transform:translate(3px)}.list-item{display:flex;justify-content:space-between;align-items:baseline;padding:.625rem .75rem;margin:0 -.75rem;border-radius:.5rem;transition:background-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);font-size:.95rem}.list-item:hover{background-color:var(--color-hover-bg);transform:translate(3px)}.list-item-title{font-weight:500;color:var(--color-text-main)}.list-item-detail{font-size:.85rem;color:var(--color-text-sub)}.newsletter-form{display:flex;align-items:center;justify-content:space-between;gap:.5rem;height:3rem;overflow:hidden;border-radius:9999px;background-color:var(--color-bg);border:1px solid var(--color-border);box-shadow:0 1px 2px #0000000d;transition:all .2s}.newsletter-form:focus-within{border-color:var(--color-text-sub);outline:none;box-shadow:0 0 0 2px var(--color-focus-ring)}.newsletter-input{height:100%;width:40%;flex-grow:1;border:none;background:transparent;padding:0 1rem;color:var(--color-text-main);transition:color .2s}.newsletter-input::placeholder{color:var(--color-text-light)}.newsletter-input:focus{outline:none}.newsletter-btn{height:38px;width:100px;margin-right:5px;border-radius:9999px;background-color:var(--color-btn-bg);color:var(--color-btn-text);padding:0 .375rem;font-weight:500;border:none;cursor:pointer;transition:background-color .2s}.newsletter-btn:hover{background-color:var(--color-btn-hover)}@media(min-width:768px){.newsletter-btn{width:104px;padding:0 .875rem}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes blurFadeIn{0%{opacity:0;filter:blur(8px);transform:translateY(16px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}.blur-fade{opacity:0;animation:blurFadeIn .8s cubic-bezier(.16,1,.3,1) forwards}@media(prefers-reduced-motion:reduce){.blur-fade{opacity:1;animation:none;filter:none;transform:none}}.delay-0{animation-delay:0ms}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.delay-600{animation-delay:.6s}.delay-700{animation-delay:.7s}.delay-800{animation-delay:.8s}.delay-900{animation-delay:.9s}.delay-1000{animation-delay:1s}
