*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#eef0f3;--surface:#fff;--border:#d5d9e0;--text:#1c1f26;--text-muted:#5c6370;--accent:#2563eb;--accent-hover:#1d4ed8}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}a{color:inherit;text-decoration:none}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border);padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between}.nav-logo{font-size:1.25rem;font-weight:700;color:var(--accent)}.nav-links{display:flex;gap:2rem;list-style:none}.nav-links a{color:var(--text-muted);font-size:.95rem;font-weight:500;transition:color .2s}.nav-links a.active,.nav-links a:hover{color:var(--text)}.container{max-width:900px;margin:0 auto;padding:4rem 2rem}.hero{padding:6rem 2rem;text-align:center;max-width:700px;margin:0 auto}.hero-home{padding:4rem 2rem 3rem;max-width:760px}.hero-location{color:var(--text-muted);font-size:.9rem;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.75rem}.hero-contact{color:var(--text-muted);font-size:.95rem;margin:-.35rem 0 1.1rem;line-height:1.5}.hero-contact a{color:var(--text-muted);transition:color .2s}.hero-contact a:hover{color:var(--accent)}.hero h1{font-size:3rem;font-weight:800;margin-bottom:1rem}.hero .tagline{font-size:1.2rem;color:var(--text-muted);margin-bottom:1.75rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.cta{display:inline-block;background:var(--accent);color:#fff;padding:.7rem 1.4rem;border-radius:8px;font-weight:600;font-size:.95rem;transition:background .2s,border-color .2s,color .2s}.cta:hover{background:var(--accent-hover)}.cta-secondary{background:transparent;border:1px solid var(--border);color:var(--text)}.cta-secondary:hover{background:var(--surface);border-color:var(--accent);color:var(--text)}.cta-ghost{background:transparent;color:var(--text-muted);padding-left:.5rem;padding-right:.5rem}.cta-ghost:hover{background:transparent;color:var(--text)}.home-section{padding-top:2.5rem;padding-bottom:2.5rem;scroll-margin-top:5rem;border-top:1px solid var(--border)}.section-title{font-size:2rem;font-weight:700;margin-bottom:2rem}.home-section .section-title,.resume-header .section-title{margin-bottom:.5rem}.section-lead{color:var(--text-muted);margin-bottom:1.75rem;max-width:36rem}.resume-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.resume-header .section-title{margin-bottom:.35rem}.resume-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:2rem;gap:2rem;margin-top:1.5rem}.resume-block h3{font-size:1rem;margin-bottom:1rem;color:var(--text)}.resume-list{list-style:none;display:grid;grid-gap:1.25rem;gap:1.25rem}.resume-list li p{color:var(--text-muted);font-size:.95rem;margin-top:.35rem}.resume-meta{display:block;color:var(--text-muted);font-size:.85rem;margin-top:.2rem}.resume-skills{margin-top:2rem}.resume-note{margin-top:1.5rem;font-size:.85rem;color:var(--text-muted)}.resume-note code{font-size:.8rem;background:var(--surface);border:1px solid var(--border);padding:.1rem .4rem;border-radius:4px}.contact-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:1rem;gap:1rem}.contact-strip>a,.contact-strip>div{display:flex;flex-direction:column;gap:.25rem;padding:.25rem 0}.contact-strip .label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.contact-strip .value{font-size:.98rem;color:var(--text)}.contact-strip>a:hover .value{color:var(--accent)}.about-content{display:grid;grid-gap:2rem;gap:2rem}.about-content p{color:var(--text-muted);font-size:1.1rem}.skills{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.skill-tag{background:var(--surface);border:1px solid var(--border);padding:.4rem 1rem;border-radius:20px;font-size:.85rem;color:var(--text-muted)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:1.5rem;gap:1.5rem}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem;transition:border-color .2s}.project-card:hover{border-color:var(--accent)}.project-card h3{font-size:1.1rem;margin-bottom:.5rem}.project-card p{color:var(--text-muted);font-size:.9rem;margin-bottom:1rem}.project-card .tech{display:flex;flex-wrap:wrap;gap:.5rem}.project-card .tech span{font-size:.75rem;background:var(--bg);padding:.25rem .6rem;border-radius:4px;color:var(--text-muted)}.contact-info{display:grid;grid-gap:1.5rem;gap:1.5rem}.contact-item{display:flex;align-items:center;gap:1rem;background:var(--surface);border:1px solid var(--border);padding:1.25rem 1.5rem;border-radius:10px}.contact-item .label{font-size:.85rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.contact-item .value{font-size:1.05rem;color:var(--text)}.footer{text-align:center;padding:2rem;color:var(--text-muted);font-size:.85rem;border-top:1px solid var(--border);margin-top:4rem}.project-embed{height:calc(100vh - 57px);background:var(--bg)}.project-embed-frame{display:block;width:100%;height:100%;border:0;background:#fff}.case-study{padding-top:2.5rem;padding-bottom:4rem;max-width:820px}.case-study-header{margin-bottom:2.5rem}.case-study-eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.5rem}.case-study-header h1{font-size:clamp(1.75rem,4vw,2.25rem);margin-bottom:.75rem;line-height:1.2}.case-study-lead{color:var(--text-muted);font-size:1.05rem;margin-bottom:1.25rem}.case-study-tech{display:flex;flex-wrap:wrap;gap:.5rem}.case-study-tech span{font-size:.75rem;background:var(--surface);border:1px solid var(--border);padding:.25rem .6rem;border-radius:4px;color:var(--text-muted)}.case-study-section{margin-bottom:2.5rem}.case-study-section h2{font-size:1.25rem;margin-bottom:.75rem}.case-study-section p{color:var(--text-muted);margin-bottom:1rem}.case-study-section ul{color:var(--text-muted);padding-left:1.25rem;margin-bottom:1.25rem}.case-study-section li{margin-bottom:.35rem}.case-study-figure{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin:1rem 0 0}.case-study-figure img{display:block;width:100%;height:auto;background:#e8ebf0}.case-study-figure figcaption{padding:.75rem 1rem;font-size:.85rem;color:var(--text-muted);border-top:1px solid var(--border)}.case-study-gallery{display:grid;grid-gap:1.25rem;gap:1.25rem}.case-study-note{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;margin-bottom:0!important}@media (max-width:600px){.hero h1{font-size:2rem}.nav{padding:1rem}.nav-links{gap:1rem}.hero-actions{flex-direction:column;align-items:stretch}.hero-actions .cta{text-align:center}.resume-header{flex-direction:column}}