@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Playfair+Display:wght@600;700&display=swap";:root{color-scheme:light;--background: #f6f0e6;--surface: #faf7f2;--surface-alt: #ffffff;--border: rgba(17, 17, 17, .08);--border-strong: rgba(17, 17, 17, .16);--text: #161616;--text-muted: rgba(34, 34, 34, .68);--eyebrow: rgba(34, 34, 34, .6);--accent: #111111;--accent-soft: rgba(17, 17, 17, .08);--shadow: 0 18px 60px rgba(17, 17, 17, .08);--radius-lg: 10px;--radius-md: 6px;--radius-sm: 4px;--font-body: "IBM Plex Mono", "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading: "Playfair Display", "Inter", serif}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-body);background:var(--background);color:var(--text);line-height:1.6;letter-spacing:.01em;-webkit-font-smoothing:antialiased}#root{min-height:100vh;isolation:isolate}a{color:var(--accent);text-decoration:none;transition:color .2s ease,opacity .2s ease}a:hover{opacity:.7}img{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit;background:transparent;border-radius:0}textarea{resize:vertical}p+p{margin-top:1rem}::selection{background:#222;color:#fefcf7}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.page-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--background)}.site-header{position:sticky;top:0;z-index:100;background:#faf7f2f5;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.nav-bar{max-width:1060px;margin:0 auto;padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);font-family:var(--font-heading);font-weight:600;font-size:1.25rem;letter-spacing:.18em;color:var(--text);background:var(--surface-alt)}.nav-toggle{width:2.75rem;height:2.75rem;display:none;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:background .2s ease,border-color .2s ease}.nav-toggle span{width:1.45rem;height:2px;background:var(--text)}.nav-links{display:flex;align-items:center;gap:1.75rem;font-size:.9rem;text-transform:uppercase;letter-spacing:.18em}.nav-links a{color:var(--text);font-weight:500}.resume-link{padding:.6rem 1.4rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.18em;font-size:.75rem}main{flex:1;background:var(--background)}.section{max-width:1060px;margin:0 auto;padding:5.5rem 1.75rem;display:flex;flex-direction:column;gap:2.5rem;border-bottom:1px solid var(--border)}.section:first-of-type{border-top:1px solid var(--border)}.section-heading{max-width:860px;width:100%;display:flex;flex-direction:column;gap:.75rem}.section-heading h2{font-family:var(--font-heading);font-size:clamp(2.1rem,2.8vw + 1rem,3.1rem);line-height:1.05;text-transform:uppercase;letter-spacing:.12em;color:var(--text)}.section-heading p{color:var(--text-muted);font-size:.95rem}.eyebrow{letter-spacing:.28em;text-transform:uppercase;font-size:.75rem;font-weight:600;color:var(--eyebrow)}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:3rem}.hero-media{max-width:420px;justify-self:center}.hero-media img{width:100%;aspect-ratio:4 / 5;object-fit:cover;border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:var(--surface-alt)}.hero-content{display:flex;flex-direction:column;gap:1.5rem;max-width:540px}.hero-content h1{font-family:var(--font-heading);font-size:clamp(2.5rem,4vw + 1rem,4rem);line-height:1.02;text-transform:uppercase;letter-spacing:.06em;color:var(--text);white-space:nowrap}.hero-content .lede{color:var(--text-muted);font-size:1rem}.hero-actions{display:flex;flex-wrap:wrap;gap:1rem}.action{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.9rem 2.2rem;border-radius:999px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;font-size:.75rem;transition:opacity .2s ease,transform .2s ease}.action.primary{background:var(--accent);color:var(--surface-alt)}.action.ghost{border:1px solid var(--border-strong);color:var(--text);background:var(--surface-alt)}.action:hover{transform:translateY(-2px)}.projects-grid{display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.project-card{display:flex;flex-direction:column;background:var(--surface-alt);border-radius:var(--radius-md);border:1px solid var(--border);transition:transform .25s ease,border-color .25s ease}.project-card:hover{transform:translateY(-6px);border-color:var(--border-strong)}.project-card__body{padding:2.2rem;display:flex;flex-direction:column;gap:1.2rem}.project-card__meta{font-size:.78rem;text-transform:uppercase;letter-spacing:.24em;color:var(--eyebrow)}.project-card h3{font-family:var(--font-heading);font-size:1.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--text)}.project-card ul{display:flex;flex-direction:column;gap:.75rem;font-size:.92rem;color:var(--text-muted);list-style:none;max-width:52ch}.project-card ul li{position:relative;padding-left:1.4rem}.project-card ul li:before{content:"";position:absolute;top:.55rem;left:.2rem;width:.55rem;height:1px;background:var(--text)}.project-card__links{display:flex;gap:1rem;flex-wrap:wrap}.project-card__links a{padding:.55rem 1.5rem;border:1px solid var(--border);border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;color:var(--text);background:var(--surface)}.about-content{display:flex;flex-direction:column;gap:2.5rem}.about-timeline{display:flex;flex-direction:column;gap:1.6rem;border-left:1px solid var(--border-strong);padding-left:1.75rem}.timeline-item{width:700px;position:relative;display:flex;gap:1.25rem}.timeline-dot{position:absolute;left:-2.35rem;top:.35rem;width:.75rem;height:.75rem;border-radius:50%;border:1px solid var(--text);background:var(--surface-alt)}.timeline-content{background:var(--surface-alt);border-radius:var(--radius-sm);padding:1.35rem;border:1px solid var(--border)}.timeline-timeframe{display:block;font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;color:var(--eyebrow);margin-bottom:.45rem}.timeline-content h3{font-family:var(--font-heading);font-size:1.4rem;text-transform:uppercase;letter-spacing:.18em;margin-bottom:.75rem;color:var(--text)}.timeline-content p{color:var(--text-muted);font-size:.95rem}.timeline-list{display:flex;flex-direction:column;gap:.35rem;margin-top:.8rem}.timeline-list span{text-transform:uppercase;font-size:.72rem;letter-spacing:.2em;color:var(--eyebrow)}.timeline-list ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem;color:var(--text-muted);font-size:.92rem}.timeline-list ul li{position:relative;padding-left:1.1rem}.timeline-list ul li:before{content:"";position:absolute;top:.55rem;left:0;width:.5rem;height:1px;background:var(--text)}.skills-list{display:flex;flex-direction:column;gap:1.75rem;width:min(720px,100%)}.skill-card{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.9rem 2.1rem;display:flex;flex-direction:column;gap:1.4rem;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.skill-card:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:0 22px 52px #1111111f}.skill-card header{display:flex;flex-direction:column;gap:.45rem}.skill-card__eyebrow{text-transform:uppercase;font-size:.72rem;letter-spacing:.24em;color:var(--eyebrow)}.skill-card h3{font-family:var(--font-heading);font-size:1.45rem;text-transform:uppercase;letter-spacing:.12em;margin:0}.skill-card__body{display:flex;flex-wrap:wrap;gap:.65rem}.skill-chips{display:contents}.skill-chip{display:inline-flex;align-items:center;gap:.65rem;padding:.55rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);letter-spacing:.12em;text-transform:uppercase;font-size:.68rem;color:var(--text)}.skill-chip img{width:1.4rem;height:1.4rem;object-fit:contain;filter:grayscale(100%)}.experience-timeline{display:grid;gap:1.8rem}.experience-card{border-radius:var(--radius-md);background:var(--surface-alt);padding:2rem;border:1px solid var(--border);display:flex;flex-direction:column;gap:1.1rem}.experience-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center;font-size:.85rem;text-transform:uppercase;letter-spacing:.22em;color:var(--eyebrow)}.experience-card h3{font-family:var(--font-heading);font-size:1.45rem;text-transform:uppercase;letter-spacing:.2em;color:var(--text)}.experience-card ul{list-style:none;display:flex;flex-direction:column;gap:.75rem;color:var(--text-muted);font-size:.96rem}.experience-card ul li{position:relative;padding-left:1.4rem}.experience-card ul li:before{content:"";position:absolute;top:.55rem;left:.2rem;width:.55rem;height:1px;background:var(--text)}.contact-card{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);padding:2.1rem;display:flex;flex-direction:column;gap:1.4rem}.contact-card--solo{max-width:520px}.contact-card h3{font-family:var(--font-heading);font-size:1.35rem;text-transform:uppercase;letter-spacing:.18em;color:var(--text)}.contact-card ul{list-style:none;display:flex;flex-direction:column;gap:1rem}.contact-card li{display:flex;flex-direction:column;gap:.25rem;color:var(--text-muted);font-size:.95rem}.contact-card li span{text-transform:uppercase;font-size:.7rem;letter-spacing:.24em;color:var(--eyebrow)}.site-footer{border-top:1px solid var(--border);background:#faf7f2f5;padding:3rem 1.75rem 3.5rem}.footer-content{max-width:1060px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2rem;align-items:start}.footer-content p{color:var(--text-muted);margin-top:.85rem;font-size:.9rem;line-height:1.6}.footer-links{display:flex;flex-direction:column;gap:.55rem;text-transform:uppercase;letter-spacing:.2em;font-size:.75rem}.footer-links a{color:var(--text)}.footer-meta{display:flex;flex-direction:column;gap:.35rem;color:var(--text-muted);font-size:.75rem;letter-spacing:.18em;text-transform:uppercase}@media (max-width: 1080px){.hero{grid-template-columns:minmax(0,1fr) minmax(0,.9fr)}.nav-bar{padding:1.15rem 1.25rem}}@media (max-width: 900px){.nav-toggle{display:inline-flex}.nav-links{position:absolute;top:100%;right:1.25rem;flex-direction:column;align-items:flex-start;gap:1rem;padding:1.35rem;background:var(--surface-alt);border:1px solid var(--border);min-width:230px;opacity:0;visibility:hidden;transform:translateY(-.5rem);transition:opacity .2s ease,transform .2s ease;box-shadow:var(--shadow)}.nav-links.is-open{opacity:1;visibility:visible;transform:translateY(0)}.nav-links a,.resume-link{width:100%}.hero{grid-template-columns:1fr;text-align:center}.hero-actions{justify-content:center}.hero-content{align-items:center}.hero-content h1{white-space:normal}.about-timeline{border-left:none;padding-left:0}.timeline-item{padding-left:1.5rem}.timeline-dot{left:.2rem}}@media (max-width: 640px){.section{padding:4.25rem 1.25rem}.hero-media{max-width:320px}.project-card__body{padding:1.8rem}.contact-card{padding:1.75rem}}@media (max-width: 480px){.nav-bar{padding:1rem}.brand-mark{width:2.6rem;height:2.6rem;font-size:1.1rem}.action{width:100%}.experience-meta{flex-direction:column;align-items:flex-start}}
