*{margin:0;padding:0;box-sizing:border-box}:root{--bg-color:#ffffff;--text-color:#000000;--text-color-dark:#000000;--nav-text-color:#000000;--footer-bar-color:#000000}[data-theme=dark]{--bg-color:#000000;--text-color:#ffffff;--text-color-dark:#ffffff;--nav-text-color:#ffffff;--footer-bar-color:#ffffff}body,html{background-color:var(--bg-color);color:var(--text-color)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.6;font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease;min-height:100vh}nav{justify-content:center;align-items:center;padding:1.25rem 3rem;position:-webkit-sticky;position:sticky;top:0;z-index:50;background-color:var(--bg-color);transition:background-color .3s ease}.nav-links,nav{display:flex;gap:2rem}.nav-links a{color:var(--nav-text-color);text-decoration:none;font-size:16px;font-weight:400;transition:opacity .2s ease}.nav-links a:hover{opacity:.7}.theme-toggle{background:none;border:none;cursor:pointer;color:var(--nav-text-color);padding:.5rem;display:flex;align-items:center;justify-content:center;transition:opacity .2s ease}.theme-toggle:hover{opacity:.7}.page-transition{will-change:opacity}.page-transition--out{opacity:0;transition:opacity .2s ease}.page-transition--in{opacity:1;transition:opacity .3s ease}@media (prefers-reduced-motion:reduce){.page-transition--in,.page-transition--out{transition:none}}.container{max-width:960px;margin:0 auto;padding:0 3rem 4rem}.intro{margin-bottom:3rem}.intro-content{display:flex;align-items:flex-start;gap:2rem}.intro-text{flex:1 1 auto;min-width:0}.intro-headshot{width:120px;height:120px;border-radius:50%;object-fit:cover;flex-shrink:0;margin-top:.25rem}.intro h1{font-size:2rem;font-weight:400;color:var(--text-color-dark);margin-bottom:.75rem;line-height:1.2}.heading-emoji{display:inline-block;width:1em;height:1em;vertical-align:-.15em;margin-left:.15em}.status{position:relative;display:block;font-size:13px;font-weight:400;color:var(--text-color);opacity:.6;margin-bottom:.75rem}.status-dot{position:absolute;left:-.95rem;top:.55em;width:7px;height:7px;flex-shrink:0;background-color:#22c55e;border-radius:50%;display:inline-block;animation:blink 2s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.intro p{font-weight:400;line-height:1.6}.chat-cta,.intro p{font-size:15px;color:var(--text-color)}.chat-cta{font-weight:500;margin-top:.5rem;margin-bottom:.75rem}.chat-cta a{color:var(--text-color);text-decoration:underline;text-underline-offset:3px;transition:opacity .2s ease}.chat-cta a:hover{opacity:.6}.experience{margin-bottom:3rem}.experience h2,.projects h2{font-size:1.3rem;font-weight:600;color:var(--text-color-dark);margin-bottom:1.5rem}.experience-item{margin-bottom:1.25rem}.experience-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.2rem;flex-wrap:nowrap;gap:.75rem}.experience-title{display:flex;align-items:center;gap:.5rem;min-width:0;flex:1 1 auto}.company-logo{width:20px;height:20px;object-fit:contain;border-radius:3px;flex-shrink:0}.experience-header h3{font-size:15px;font-weight:500;color:var(--text-color-dark);margin:0}.experience-date{font-weight:400;flex-shrink:0;margin-left:auto;white-space:nowrap}.experience-company,.experience-date{font-size:14px;color:var(--text-color);opacity:.7}.experience-blurb,.experience-company{padding-left:1.875rem}.experience-blurb{font-size:13px;color:var(--text-color);opacity:.6;margin-top:.25rem;line-height:1.5}.projects{margin-bottom:3rem}.project-item{margin-bottom:2rem}.project-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem;flex-wrap:wrap;gap:.5rem}.project-header h3{font-size:15px;font-weight:500;color:var(--text-color-dark);margin:0}.project-tags{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.5rem}.tag{font-size:12px;font-weight:400;color:#666666;background-color:#f5f5f5;padding:.15rem .6rem;border-radius:9999px;display:inline-block}[data-theme=dark] .tag{color:#999999;background-color:#1a1a1a}.project-links{display:flex;gap:.5rem;align-items:center}.project-link-text{font-size:13px;font-weight:400;color:var(--text-color);opacity:.4;background:none;border:none;padding:0;cursor:pointer;text-decoration:none;font-family:inherit;transition:opacity .2s ease}.project-link-text:hover{opacity:1}.project-link-sep{font-size:13px;color:var(--text-color);opacity:.3}.project-desc{font-size:15px;font-weight:400;color:var(--text-color);line-height:1.5}.writing-title{font-size:2rem;font-weight:400;color:var(--text-color-dark);line-height:1.2;margin-bottom:.75rem}.writing-subtitle{font-weight:400;line-height:1.6;margin-bottom:3rem}.writing-empty,.writing-subtitle{font-size:15px;color:var(--text-color)}.writing-empty{opacity:.4;padding:2rem 0}.book-title-row{display:inline-flex;align-items:center;gap:.6rem;flex-wrap:wrap}.project-header:has(.book-title-row){flex-wrap:nowrap;align-items:flex-start}.project-header:has(.book-title-row) .book-title-row{display:block;flex:1 1 auto;min-width:0}.project-header:has(.book-title-row) .book-title-row h3{display:inline;overflow-wrap:anywhere;margin-right:.6rem}.project-header:has(.book-title-row) .book-title-row .book-status{vertical-align:middle;position:relative;top:-1px}.project-header:has(.book-title-row) .project-links{flex:0 0 auto;white-space:nowrap}.project-item:has(.book-title-row) .project-desc{font-size:13px;color:var(--text-color);opacity:.55;line-height:1.45}.book-meta{font-size:13px;color:var(--text-color);opacity:.6;margin-top:-.25rem;margin-bottom:.5rem}.book-status{display:inline-flex;align-items:center;gap:.35rem;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--text-color);opacity:.65;padding:.1rem .5rem .1rem .45rem;border-radius:9999px;background-color:rgba(128,128,128,.08);line-height:1}.book-status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}.book-status--done .book-status-dot{background-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}.book-status--wip .book-status-dot{background-color:#eab308;box-shadow:0 0 0 2px rgba(234,179,8,.18);animation:blink 2s ease-in-out infinite}.main-footer{margin-top:4rem}.social-links{gap:1.5rem;margin-bottom:1rem;flex-wrap:wrap}.social-links,.social-links a{display:flex;align-items:center}.social-links a{color:var(--text-color-dark);text-decoration:none;transition:opacity .2s ease}.social-links a:hover{opacity:.7}.social-links svg{width:20px;height:20px}.resume-link{color:var(--text-color-dark)}.copyright,.resume-link{font-size:16px;font-weight:400}.copyright{color:var(--text-color)}.footer-bar{width:100%;height:1px;background-color:var(--footer-bar-color);position:fixed;bottom:0;left:0}@media (max-width:768px){nav{padding:1rem 1.5rem}.nav-links,nav{gap:1rem}.container{padding:0 1.5rem 4rem}.intro h1,.writing-title{font-size:1.75rem}.experience-header{flex-wrap:nowrap;align-items:center;gap:.5rem}.experience-header h3{font-size:14px}.experience-date{font-size:12px}.company-logo{width:18px;height:18px}.intro-content{flex-direction:column;align-items:stretch;gap:1.25rem}.intro-headshot{width:192px;height:192px;margin-top:.5rem;align-self:center}}