@import "https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600&display=swap";:root{--bg:#f5f5f2;--bg-elev:#fff;--ink:#111;--ink-soft:#3f3f3f;--ink-muted:#6a6a6a;--line:#d8d8d3;--shadow-soft:0 16px 36px #0000000f;--shadow:0 24px 60px #00000014;--radius-sm:10px;--radius-md:16px;--radius-full:999px;--tracking-wide:.12em;--transition-fast:.15s ease;--transition-smooth:.28s cubic-bezier(.16, 1, .3, 1);--space-section:clamp(40px, 6vw, 64px);--sans:"Manrope", "Segoe UI", sans-serif;--serif:"Playfair Display", "Times New Roman", serif;font:16px/1.6 var(--sans);letter-spacing:.1px;color:var(--ink-soft);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body{background:var(--bg)}body{color:var(--ink-soft);margin:0}#root{max-width:960px;margin:0 auto;padding:72px 24px 96px}h1,h2{font-family:var(--serif);color:var(--ink);margin:0;font-weight:500}h1{letter-spacing:-.02em;font-size:clamp(2.4rem,4.2vw,3.4rem)}h2{letter-spacing:-.01em;font-size:clamp(1.3rem,2.5vw,1.6rem)}p{margin:0}.page{gap:var(--space-section);flex-direction:column;display:flex}.hero{grid-template-columns:1.2fr .8fr;align-items:start;gap:32px;display:grid}.hero-copy{flex-direction:column;gap:16px;display:flex}.eyebrow{letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--ink-muted);font-size:.7rem}.lead{max-width:36ch;font-size:1.05rem}.hero-meta{gap:16px;display:grid}.meta-block{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-elev);box-shadow:var(--shadow-soft);flex-direction:column;gap:6px;padding:16px 18px;display:flex}.meta-label{text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--ink-muted);font-size:.72rem}.section{border-top:1px solid var(--line);padding-top:32px}.section-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.section-label{text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--ink-muted);margin-bottom:6px;font-size:.7rem}.section-body{flex-direction:column;gap:16px;display:flex}.body{max-width:62ch}.stack-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.stack-card{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-elev);transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-fast);padding:18px}.stack-title{color:var(--ink);margin-bottom:10px;font-weight:600}.tag-list{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tag{border-radius:var(--radius-full);border:1px solid var(--line);color:var(--ink-soft);background:#f7f7f4;align-items:center;padding:6px 12px;font-size:.82rem;line-height:1.1;display:inline-flex}.experience-list{gap:16px;display:grid}.experience-card{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-elev);transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-fast);flex-direction:column;gap:20px;padding:20px;display:flex}.experience-header{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.experience-title-wrap{flex-direction:column;gap:4px;display:flex}.experience-role{color:var(--ink);margin:0;font-size:1.05rem;font-weight:600}.experience-org{color:var(--ink-soft);margin:0;font-size:.95rem;font-weight:500}.experience-period{text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--ink-muted);white-space:nowrap;margin:0;font-size:.85rem}.experience-details{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.experience-details li{color:var(--ink-soft);padding-left:20px;font-size:.95rem;line-height:1.6;position:relative}.experience-details li:before{content:"•";color:var(--ink-muted);font-size:1.1rem;line-height:1.4;position:absolute;top:0;left:0}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.project-card{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-elev);transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-fast);flex-direction:column;gap:16px;padding:18px;display:flex}.project-content{flex-direction:column;gap:8px;display:flex}.project-footer{flex-direction:column;gap:12px;margin-top:auto;display:flex}.project-title{color:var(--ink);font-weight:600}.project-links{flex-wrap:wrap;gap:12px;display:flex}.link-button{text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--ink);border-bottom:1px solid var(--ink);transition:color var(--transition-fast), border-color var(--transition-fast);padding-bottom:2px;font-size:.82rem;text-decoration:none}.link-button:hover,.link-button:focus-visible{color:var(--ink-soft);border-color:var(--ink-soft)}.link-button:focus-visible{outline:2px solid var(--line);outline-offset:3px}.project-summary{font-size:.95rem}.awards-list{gap:12px;display:grid}.award-item{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-elev);transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-fast);padding:16px 18px}.award-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.award-title{color:var(--ink);font-weight:600}.award-detail{color:var(--ink-muted);font-size:.92rem}.award-year{letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--ink-muted);font-size:.8rem}.footer{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--ink-muted);padding-top:24px;font-size:.85rem}@media (hover:hover){.stack-card:hover,.experience-card:hover,.project-card:hover,.award-item:hover,.stack-card:focus-within,.experience-card:focus-within,.project-card:focus-within,.award-item:focus-within{box-shadow:var(--shadow);border-color:#0000;transform:translateY(-3px)}}@media (width<=780px){#root{padding:56px 20px 72px}.hero{grid-template-columns:1fr}.meta-block{box-shadow:none}.project-footer{gap:10px}}@media (width>=600px){.experience-header{flex-direction:row;justify-content:space-between;align-items:baseline}}
