@import"https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Inter:wght@400;500;600&display=swap";:root{--color-bg: #fdfcfa;--color-bg-elevated: #ffffff;--color-bg-subtle: #f7f5f2;--color-surface: #efecea;--color-text: #2d2d2d;--color-text-secondary: #5a5a5a;--color-text-muted: #8a8a8a;--color-forest: #2d5a3d;--color-forest-dark: #1e3d29;--color-forest-light: #4a7c5c;--color-sage: #7d9a82;--color-moss: #a8c4a4;--color-pine: #1a3a2a;--color-accent: #c4784a;--color-accent-hover: #a8623a;--color-gold: #b8956a;--font-serif: "Libre Baskerville", Georgia, "Times New Roman", serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .35vw, 1rem);--text-base: clamp(1rem, .95rem + .25vw, 1.125rem);--text-lg: clamp(1.125rem, 1.05rem + .4vw, 1.25rem);--text-xl: clamp(1.25rem, 1.1rem + .75vw, 1.5rem);--text-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);--text-3xl: clamp(2rem, 1.6rem + 2vw, 3rem);--text-4xl: clamp(2.5rem, 2rem + 2.5vw, 4rem);--text-display: clamp(3rem, 2.5rem + 3vw, 5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem;--max-width: 1200px;--content-width: 720px;--narrow-width: 600px;--border-light: 1px solid rgba(45, 90, 61, .12);--border-medium: 1px solid rgba(45, 90, 61, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .08);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--z-base: 0;--z-elevated: 10;--z-overlay: 100;--z-modal: 1000}:root.dark-mode{--color-bg: #0f1a14;--color-bg-elevated: #152019;--color-bg-subtle: #1a2820;--color-surface: #1f3028;--color-text: #e8ebe9;--color-text-secondary: #b8c4bb;--color-text-muted: #7a8a7e;--color-forest: #6aab7d;--color-forest-dark: #4a8b5d;--color-forest-light: #8bc49a;--color-sage: #9db8a2;--color-moss: #7a9c7e;--color-pine: #4a7c5c;--color-accent: #d4926a;--color-accent-hover: #e4a27a;--color-gold: #c8a67a;--border-light: 1px solid rgba(106, 171, 125, .15);--border-medium: 1px solid rgba(106, 171, 125, .25);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.7;color:var(--color-text);background-color:var(--color-bg);min-height:100vh;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:400;line-height:1.25;letter-spacing:-.01em;color:var(--color-text)}h1{font-size:var(--text-display)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}p{margin-bottom:var(--space-4);color:var(--color-text-secondary)}p:last-child{margin-bottom:0}a{color:var(--color-forest);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color var(--transition-fast)}a:hover{color:var(--color-accent)}strong,b{font-weight:600}em,i{font-style:italic}::selection{background-color:var(--color-moss);color:var(--color-pine)}:focus-visible{outline:2px solid var(--color-forest);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-sage);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-forest-light)}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}@media(min-width:768px){.container{padding:0 var(--space-8)}}.serif{font-family:var(--font-serif)}.sans{font-family:var(--font-sans)}.text-forest{color:var(--color-forest)}.text-accent{color:var(--color-accent)}.text-muted{color:var(--color-text-muted)}.section{padding:var(--space-20) 0}@media(min-width:768px){.section{padding:var(--space-32) 0}}.divider{width:60px;height:1px;background:var(--color-forest);margin:var(--space-8) 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.flourish{display:inline-block;color:var(--color-sage);font-size:1.2em}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--space-8) var(--space-6);position:relative}.hero-content{max-width:var(--content-width);text-align:center}.hero-eyebrow{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--color-forest);margin-bottom:var(--space-6)}.hero-title{font-family:var(--font-serif);font-size:var(--text-display);font-weight:400;line-height:1.1;color:var(--color-text);margin-bottom:var(--space-8)}.hero-title em{font-style:italic;color:var(--color-forest)}.hero-divider{width:60px;height:1px;background:var(--color-forest);margin:0 auto var(--space-8)}.hero-description{font-family:var(--font-sans);font-size:var(--text-lg);line-height:1.8;color:var(--color-text-secondary);max-width:540px;margin:0 auto var(--space-10)}.hero-cta{display:flex;flex-direction:column;gap:var(--space-4);align-items:center}@media(min-width:480px){.hero-cta{flex-direction:row;justify-content:center}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-base);font-weight:500;text-decoration:none;padding:var(--space-4) var(--space-8);border-radius:2px;transition:all var(--transition-base);cursor:pointer}.btn-primary{background:var(--color-forest);color:#fff;border:1px solid var(--color-forest)}.btn-primary:hover{background:var(--color-forest-dark);border-color:var(--color-forest-dark);color:#fff}.btn-secondary{background:transparent;color:var(--color-text);border:1px solid var(--color-text)}.btn-secondary:hover{background:var(--color-text);color:var(--color-bg)}.hero-scroll{position:absolute;bottom:var(--space-8);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;opacity:1;transition:opacity var(--transition-slow)}.hero-scroll.scrolled{opacity:0;pointer-events:none}.hero-scroll:after{content:"";width:1px;height:40px;background:linear-gradient(to bottom,var(--color-text-muted),transparent)}.services{padding:var(--space-20) 0;background:var(--color-bg-subtle)}@media(min-width:768px){.services{padding:var(--space-32) 0}}.services-container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}@media(min-width:768px){.services-container{padding:0 var(--space-8)}}.services-header{text-align:center;margin-bottom:var(--space-16)}.services-eyebrow{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--color-forest);margin-bottom:var(--space-4)}.services-heading{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:400;color:var(--color-text);margin-bottom:var(--space-4)}.services-intro{font-family:var(--font-sans);font-size:var(--text-lg);color:var(--color-text-secondary);max-width:540px;margin:0 auto;line-height:1.7}.services-grid{display:grid;gap:var(--space-8)}@media(min-width:768px){.services-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-10)}}.service-card{text-align:left}.service-number{display:block;font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:400;color:var(--color-sage);margin-bottom:1rem;line-height:1}.service-title{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:400;color:var(--color-text);margin-bottom:var(--space-3)}.service-desc{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.7;margin-bottom:var(--space-4)}.service-details{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4)}.service-details li{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-muted)}.projects{padding:var(--space-20) 0;background:var(--color-bg)}@media(min-width:768px){.projects{padding:var(--space-32) 0}}.projects-container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}@media(min-width:768px){.projects-container{padding:0 var(--space-8)}}.projects-header{text-align:center;margin-bottom:var(--space-16)}.projects-eyebrow{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--color-forest);margin-bottom:var(--space-4)}.projects-heading{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:400;color:var(--color-text)}.projects-grid{display:grid;gap:var(--space-8)}@media(min-width:640px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.projects-grid{grid-template-columns:repeat(3,1fr)}}.project-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;background:var(--color-bg-elevated);border:var(--border-light);overflow:hidden;transition:all var(--transition-base)}.project-card:hover{border-color:var(--color-forest);box-shadow:var(--shadow-md);text-decoration:none}.project-image{width:100%;aspect-ratio:16 / 10;overflow:hidden;background:var(--color-bg-subtle)}.project-image img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform var(--transition-base)}.project-card:hover .project-image img{transform:scale(1.02)}.project-content{padding:var(--space-5)}.project-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-2)}.project-name{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:400;color:var(--color-text);transition:color var(--transition-fast)}.project-card:hover .project-name{color:var(--color-forest)}.project-arrow{font-size:var(--text-base);color:var(--color-text-muted);transition:all var(--transition-fast)}.project-card:hover .project-arrow{color:var(--color-forest);transform:translate(3px,-3px)}.project-desc{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-3)}.project-tech{display:flex;flex-wrap:wrap;gap:var(--space-2)}.project-tech span{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-text-muted)}.project-tech span:not(:last-child):after{content:" · ";color:var(--color-sage)}.about{padding:var(--space-20) 0;background:var(--color-bg-subtle)}@media(min-width:768px){.about{padding:var(--space-32) 0}}.about-container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}@media(min-width:768px){.about-container{padding:0 var(--space-8)}}.about-grid{display:grid;gap:var(--space-10);align-items:start}@media(min-width:768px){.about-grid{grid-template-columns:280px 1fr;gap:var(--space-16)}}.about-profile{text-align:center}@media(min-width:768px){.about-profile{text-align:left;position:sticky;top:var(--space-8)}}.profile-image{width:200px;height:200px;border-radius:4px;object-fit:cover;margin-bottom:var(--space-6);filter:grayscale(20%);transition:filter var(--transition-base)}.profile-image:hover{filter:grayscale(0%)}.profile-name{font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:400;color:var(--color-text);margin-bottom:var(--space-2)}.profile-location{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-6)}.about-links{display:flex;flex-direction:column;gap:var(--space-3)}.about-link{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary);display:flex;align-items:center;gap:var(--space-3);text-decoration:none;transition:color var(--transition-fast)}.about-link:hover{color:var(--color-forest)}.about-link-icon{width:16px;color:var(--color-sage)}.about-content{max-width:600px}.about-eyebrow{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--color-forest);margin-bottom:var(--space-4)}.about-heading{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:400;color:var(--color-text);margin-bottom:var(--space-6);line-height:1.3}.about-text{font-family:var(--font-sans);font-size:var(--text-lg);color:var(--color-text-secondary);line-height:1.8;margin-bottom:var(--space-6)}.about-text:last-of-type{margin-bottom:0}.about-skills{margin-top:var(--space-10);padding-top:var(--space-8);border-top:var(--border-light)}.about-skills-heading{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:var(--space-4)}.about-skills-list{display:flex;flex-wrap:wrap;gap:var(--space-3)}.about-skill{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary);padding:var(--space-2) var(--space-4);background:var(--color-bg-elevated);border:var(--border-light)}.contact{padding:var(--space-20) 0;background:var(--color-bg)}@media(min-width:768px){.contact{padding:var(--space-32) 0}}.contact-container{max-width:var(--content-width);margin:0 auto;padding:0 var(--space-6)}@media(min-width:768px){.contact-container{padding:0 var(--space-8)}}.contact-header{text-align:center;margin-bottom:var(--space-12)}.contact-eyebrow{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--color-forest);margin-bottom:var(--space-4)}.contact-heading{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:400;color:var(--color-text);margin-bottom:var(--space-4)}.contact-intro{font-family:var(--font-sans);font-size:var(--text-lg);color:var(--color-text-secondary);max-width:480px;margin:0 auto;line-height:1.7}.contact-form{display:flex;flex-direction:column;gap:var(--space-6)}.contact-field{display:flex;flex-direction:column;gap:var(--space-2)}.contact-label{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.contact-input,.contact-textarea{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg-elevated);border:var(--border-light);padding:var(--space-4);transition:all var(--transition-fast);width:100%}.contact-input:focus,.contact-textarea:focus{outline:none;border-color:var(--color-forest);box-shadow:0 0 0 3px #2d5a3d1a}.contact-input::placeholder,.contact-textarea::placeholder{color:var(--color-text-muted)}.contact-textarea{resize:vertical;min-height:150px;line-height:1.6}.contact-submit{font-family:var(--font-sans);font-size:var(--text-base);font-weight:500;color:#fff;background:var(--color-forest);border:1px solid var(--color-forest);padding:var(--space-4) var(--space-8);cursor:pointer;transition:all var(--transition-base);align-self:flex-start}.contact-submit:hover{background:var(--color-forest-dark);border-color:var(--color-forest-dark)}.contact-submit:disabled{opacity:.6;cursor:not-allowed}.contact-status{font-family:var(--font-sans);font-size:var(--text-sm);padding:var(--space-4);border-radius:2px}.contact-status--success{background:#2d5a3d1a;color:var(--color-forest);border:1px solid var(--color-forest)}.contact-status--error{background:#b43c3c1a;color:#8b3a3a;border:1px solid #8b3a3a}.contact-alt{margin-top:var(--space-12);padding-top:var(--space-8);border-top:var(--border-light);text-align:center}.contact-alt-text{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-4)}.contact-alt-link{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-forest);text-decoration:underline;text-underline-offset:3px}.contact-alt-link:hover{color:var(--color-accent)}.theme-toggle{position:fixed;top:var(--space-6);right:var(--space-6);z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:var(--text-lg);background:var(--color-bg-elevated);color:var(--color-text-muted);border:var(--border-light);border-radius:50%;cursor:pointer;transition:all var(--transition-base)}.theme-toggle:hover{color:var(--color-forest);border-color:var(--color-forest);box-shadow:var(--shadow-md)}.theme-toggle:active{transform:scale(.95)}.theme-toggle.hidden{opacity:0;pointer-events:none}.theme-toggle-icon{line-height:1}@media(max-width:640px){.theme-toggle{top:var(--space-4);right:var(--space-4);width:40px;height:40px;font-size:var(--text-base)}}
