:root{color-scheme:dark;--color-bg: #0E0E10;--color-bg-raised: #18181B;--color-bg-subtle: #1E1E22;--color-border: #2A2A2E;--color-border-hover: #3A3A3F;--color-text: #E8E6E3;--color-text-secondary: #9B9A97;--color-text-muted: #6B6A67;--color-accent: #C9835A;--color-accent-hover: #D9956C;--color-accent-subtle: rgba(201, 131, 90, 0.10);--font-serif: 'Newsreader', Georgia, serif;--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--font-mono: 'JetBrains Mono', 'Fira Code', monospace;--spacing-xs: 0.5rem;--spacing-sm: 1rem;--spacing-md: 2rem;--spacing-lg: 3rem;--spacing-xl: 4rem;--spacing-2xl: 6rem;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4)}*{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:16px;line-height:1.6;color:var(--color-text);background:var(--color-bg);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:400;line-height:1.2;color:var(--color-text)}h1{font-size:clamp(2.5rem, 5vw, 4rem);font-weight:600}h2{font-size:clamp(1.75rem, 3.5vw, 2.5rem);margin-bottom:var(--spacing-md)}h3{font-size:clamp(1.125rem, 2.5vw, 1.5rem);margin-bottom:var(--spacing-sm)}p{margin-bottom:var(--spacing-sm)}.lead{font-size:1.125rem;line-height:1.7;color:var(--color-text-secondary)}a{color:var(--color-accent);text-decoration:none;-webkit-transition:color 0.3s ease;transition:color 0.3s ease}a:hover{color:var(--color-accent-hover)}.container{max-width:1100px;margin:0 auto;padding:0 var(--spacing-md)}.section{padding:var(--spacing-2xl) 0}.nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:var(--spacing-sm) var(--spacing-md);background:rgba(14,14,16,0.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border)}.nav__inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.nav__name{font-family:var(--font-serif);font-size:1.125rem;font-weight:600;color:var(--color-text);letter-spacing:-0.01em}.nav__name:hover{color:var(--color-accent)}.nav__links{display:flex;gap:var(--spacing-md)}.nav__links a{font-size:0.875rem;color:var(--color-text-secondary);-webkit-transition:color 0.3s ease;transition:color 0.3s ease}.nav__links a:hover{color:var(--color-text)}.card{background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);-webkit-transition:border-color 0.3s ease;transition:border-color 0.3s ease}.card:hover{border-color:var(--color-border-hover)}.project-card-link{text-decoration:none;color:inherit;display:block}.project-card{background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;-webkit-transition:border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:border-color 0.3s ease, box-shadow 0.3s ease;transition:border-color 0.3s ease, box-shadow 0.3s ease, -webkit-box-shadow 0.3s ease}.project-card:hover{border-color:var(--color-accent);-webkit-box-shadow:0 0 0 1px var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}.project-card__image{aspect-ratio:16 / 10;overflow:hidden;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.project-card__image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.project-card__placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:0.875rem;color:var(--color-text-muted);background:linear-gradient(135deg, var(--color-bg-subtle) 0%, var(--color-bg-raised) 100%)}.project-card__body{padding:var(--spacing-md)}.project-card__title{font-family:var(--font-sans);font-weight:500;font-size:1.125rem;margin-bottom:var(--spacing-xs)}.project-card__description{font-size:0.9375rem;color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--spacing-sm)}.project-card__tags{display:flex;gap:var(--spacing-xs);flex-wrap:wrap;margin-bottom:var(--spacing-sm)}.tag{padding:3px 10px;background:var(--color-accent-subtle);color:var(--color-accent);border-radius:var(--radius-sm);font-size:0.75rem;font-weight:500;font-family:var(--font-mono)}.project-card__links{display:flex;gap:var(--spacing-sm)}.project-card__links a{font-size:0.875rem;font-weight:500}.work-card{padding:var(--spacing-md);border-left:2px dashed var(--color-accent);margin-bottom:var(--spacing-md)}.work-card__date{font-size:0.8125rem;color:var(--color-accent);font-weight:500;font-family:var(--font-mono);display:block;margin-bottom:var(--spacing-xs)}.work-card__role{font-family:var(--font-sans);font-weight:500;font-size:1.125rem;margin-bottom:4px}.work-card__company{color:var(--color-text-secondary);font-weight:400;margin-bottom:var(--spacing-xs)}.work-card__description{color:var(--color-text-secondary);font-size:0.9375rem}.quote{margin:var(--spacing-lg) 0;padding:var(--spacing-md);border-left:2px solid var(--color-accent);background:var(--color-accent-subtle);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.quote p{font-family:var(--font-serif);font-size:1.25rem;font-style:italic;margin-bottom:var(--spacing-xs);color:var(--color-text)}.quote cite{color:var(--color-text-muted);font-style:normal;font-size:0.875rem}.button{display:inline-block;padding:var(--spacing-xs) var(--spacing-md);background:var(--color-accent);color:var(--color-bg);border-radius:var(--radius-sm);font-weight:500;font-size:0.875rem;-webkit-transition:background 0.3s ease, -webkit-transform 0.2s ease;transition:background 0.3s ease, -webkit-transform 0.2s ease;transition:background 0.3s ease, transform 0.2s ease;transition:background 0.3s ease, transform 0.2s ease, -webkit-transform 0.2s ease}.button:hover{background:var(--color-accent-hover);color:var(--color-bg);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.about{text-align:center;padding-top:calc(var(--spacing-2xl) + 60px)}.about__title{margin-bottom:var(--spacing-sm)}.about__lead{max-width:640px;margin:0 auto var(--spacing-lg)}.about .quote{max-width:640px;margin:0 auto;text-align:left}.projects-grid{display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2, 1fr);gap:var(--spacing-md)}.section-intro{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg);max-width:600px}.work-grid{display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2, 1fr);gap:0 var(--spacing-lg)}.teaching .card{max-width:740px}.course-title{font-family:var(--font-sans);font-weight:500;color:var(--color-accent);margin-bottom:var(--spacing-sm)}.course-outcomes{margin:var(--spacing-md) 0}.course-outcomes ul{list-style:none}.course-outcomes li{padding:var(--spacing-xs) 0;padding-left:var(--spacing-md);position:relative;color:var(--color-text-secondary)}.course-outcomes li::before{content:'\2192';position:absolute;left:0;color:var(--color-accent)}.connect{text-align:center;padding-bottom:var(--spacing-lg)}.connect__lead{max-width:500px;margin:0 auto var(--spacing-md);color:var(--color-text-secondary)}.footer{padding:var(--spacing-lg) 0;text-align:center;border-top:1px solid var(--color-border)}.footer__social{display:flex;justify-content:center;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.footer__social a{color:var(--color-text-muted);-webkit-transition:color 0.3s ease, -webkit-transform 0.2s ease;transition:color 0.3s ease, -webkit-transform 0.2s ease;transition:color 0.3s ease, transform 0.2s ease;transition:color 0.3s ease, transform 0.2s ease, -webkit-transform 0.2s ease;display:flex;align-items:center}.footer__social a:hover{color:var(--color-text);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.footer__copy{font-size:0.8125rem;color:var(--color-text-muted);margin:0}.writing-nav{position:fixed;top:var(--spacing-md);left:var(--spacing-md);z-index:100}.back-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:0.875rem;-webkit-transition:all 0.3s ease;transition:all 0.3s ease}.back-link:hover{color:var(--color-text);border-color:var(--color-border-hover);-webkit-transform:translateX(-4px);transform:translateX(-4px)}.writing-header{padding:var(--spacing-2xl) 0 var(--spacing-xl);text-align:center}.writing-intro{max-width:600px;margin:0 auto;color:var(--color-text-secondary)}.writing-list{max-width:740px;margin:0 auto}.writing-item{margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);opacity:0;-webkit-animation:fadeInUp 0.6s ease forwards;animation:fadeInUp 0.6s ease forwards}.writing-item:nth-child(1){-webkit-animation-delay:0.1s;animation-delay:0.1s}.writing-item:nth-child(2){-webkit-animation-delay:0.2s;animation-delay:0.2s}.writing-item:nth-child(3){-webkit-animation-delay:0.3s;animation-delay:0.3s}.writing-item:nth-child(4){-webkit-animation-delay:0.4s;animation-delay:0.4s}.writing-item:nth-child(5){-webkit-animation-delay:0.5s;animation-delay:0.5s}.writing-date{font-size:0.8125rem;color:var(--color-accent);font-weight:500;font-family:var(--font-mono);margin-bottom:var(--spacing-xs)}.writing-title{font-family:var(--font-serif);font-size:1.5rem;margin-bottom:var(--spacing-sm);color:var(--color-text)}.writing-content{color:var(--color-text-secondary);line-height:1.7}.writing-content strong{color:var(--color-text)}.divider{height:1px;background:-webkit-gradient(linear, left top, right top, from(transparent), color-stop(var(--color-border)), to(transparent));background:linear-gradient(to right, transparent, var(--color-border), transparent);margin:var(--spacing-lg) 0}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.fade-in{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px);-webkit-transition:opacity 0.6s ease, -webkit-transform 0.6s ease;transition:opacity 0.6s ease, -webkit-transform 0.6s ease;transition:opacity 0.6s ease, transform 0.6s ease;transition:opacity 0.6s ease, transform 0.6s ease, -webkit-transform 0.6s ease}.fade-in.visible{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}@media (max-width: 768px){:root{--spacing-2xl: 4rem;--spacing-xl: 3rem;--spacing-lg: 2rem}.nav__links{gap:var(--spacing-sm)}.nav__links a{font-size:0.8125rem}.projects-grid{-ms-grid-columns:1fr;grid-template-columns:1fr}.work-grid{-ms-grid-columns:1fr;grid-template-columns:1fr}.writing-nav{position:static;padding:var(--spacing-md)}}@media (max-width: 480px){.nav__inner{flex-direction:column;gap:var(--spacing-xs)}.nav__links{flex-wrap:wrap;justify-content:center;gap:var(--spacing-xs) var(--spacing-sm)}}