:root{--bg:#f7f3ee;--surface:#ede8e3;--text:#2b2420;--text-muted:#5c534d;--rule:#2b242024;--accent:#2a6b6e;--accent-muted:#2a6b6e38;--font-heading:"Lora", Georgia, "Times New Roman", serif;--font-body:"Source Serif 4", Georgia, "Times New Roman", serif;font-family:var(--font-body);font-optical-sizing:auto;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px;line-height:1.62}*,:before,:after{box-sizing:border-box}body{min-height:100dvh;margin:0;position:relative}body:before{content:"";z-index:0;pointer-events:none;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='280' height='280' viewBox='0 0 280 280'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;position:fixed;inset:0}#root{z-index:1;min-height:100dvh;position:relative}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:#1f5356}button{font-family:inherit}.reveal{opacity:0;transition:opacity .85s}.reveal--visible{opacity:1}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none}}.app{flex-direction:column;max-width:38rem;min-height:100dvh;margin:0 auto;padding:0 clamp(1.35rem,4vw,2.25rem) 2.25rem;display:flex}.site-header{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem 1.5rem;margin-bottom:3rem;padding:2.25rem 0 1.75rem;display:flex}.site-name{font-family:var(--font-heading);color:var(--text);letter-spacing:.01em;margin:0;font-size:1.35rem;font-weight:500}.site-name a{color:inherit;text-decoration:none}.site-name a:hover{color:var(--accent)}.nav{align-items:center;gap:0;display:flex}.nav button{font-family:var(--font-body);color:var(--text-muted);cursor:pointer;letter-spacing:.02em;background:0 0;border:none;border-bottom:1px solid #0000;margin-left:1.35rem;padding:.35rem 0;font-size:.95rem;font-weight:400;transition:color .35s,border-color .35s}.nav button:first-of-type{margin-left:0}.nav button:hover{color:var(--text)}.nav button:focus-visible{outline:1px solid var(--accent);outline-offset:4px}.nav button.active{color:var(--text);border-bottom-color:var(--accent)}main{text-align:left;flex:1 0 auto}.site-footer{border-top:1px solid var(--rule);flex-shrink:0;margin-top:auto;padding-top:1.35rem}.site-footer p{color:var(--text-muted);letter-spacing:.02em;margin:0;font-size:.82rem}.hero{border-bottom:1px solid var(--rule);gap:2rem;margin-bottom:3.25rem;padding-bottom:3rem;display:grid}@media (width>=560px){.hero{grid-template-columns:152px 1fr;align-items:start;gap:2.25rem}}.photo-wrap{justify-self:start}.photo{object-fit:cover;border:1px solid var(--rule);background:var(--surface);width:132px;height:132px}@media (width>=560px){.photo{width:152px;height:152px}}.photo-placeholder{width:132px;height:132px;font-family:var(--font-heading);color:var(--text);background:var(--surface);border:1px solid var(--rule);justify-content:center;align-items:center;font-size:2.5rem;font-weight:500;display:flex}@media (width>=560px){.photo-placeholder{width:152px;height:152px;font-size:2.75rem}}.hero-copy h1{font-family:var(--font-heading);color:var(--text);letter-spacing:.01em;margin:0 0 .85rem;font-size:clamp(1.85rem,4.2vw,2.35rem);font-weight:500;line-height:1.22}.hero-copy .intro{color:var(--text);max-width:36em;margin:0}.section-head{align-items:center;gap:.75rem;margin:0 0 1.35rem;display:flex}.section-head__rule{background:var(--rule);flex:1;min-width:2rem;height:1px}.section-title{font-family:var(--font-heading);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.7rem;font-weight:600}.projects{flex-direction:column;display:flex}.project{border:none;border-top:1px solid var(--rule);background:0 0;border-radius:0}.project:last-of-type{border-bottom:1px solid var(--rule)}.project summary{cursor:pointer;font-family:var(--font-body);color:var(--text);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:1rem;padding:1.05rem 0 1.05rem .15rem;font-size:1.02rem;font-weight:600;list-style:none;transition:color .35s;display:flex}.project summary::-webkit-details-marker{display:none}.project summary:after{content:"";border-right:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);opacity:.75;border-radius:0 0 1px;flex-shrink:0;width:.55rem;height:.55rem;transition:transform .45s;transform:rotate(45deg)}.project[open] summary:after{margin-top:.12rem;transform:rotate(-135deg)}.project summary:hover{color:var(--accent)}.project summary:focus-visible{outline:1px solid var(--accent);outline-offset:6px}.project-body{border-top:1px solid var(--rule);color:var(--text-muted);padding:0 0 1.15rem .15rem;font-size:.98rem}.project-body p{max-width:36em;margin:.75rem 0 0}.project-body p:first-child{margin-top:.85rem}.project-attribution{max-width:36em;color:var(--text-muted);letter-spacing:.01em;margin:.85rem 0 0;font-size:.78rem;line-height:1.5}.project-cta-group{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1.35rem;display:flex}.project-cta-group .project-cta{margin-top:0}.project-cta{font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;margin-top:1.35rem;padding:.55rem 1.1rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .35s,color .35s,border-color .35s;display:inline-block}.project-cta:hover{background:var(--surface);color:var(--text);border-color:var(--text-muted)}.project-cta:focus-visible{outline:1px solid var(--accent);outline-offset:3px}.about h1{font-family:var(--font-heading);color:var(--text);border-bottom:1px solid var(--rule);letter-spacing:.01em;margin:0 0 2rem;padding-bottom:1rem;font-size:2rem;font-weight:500}.about-block{border-bottom:1px solid var(--rule);margin-bottom:2.25rem;padding-bottom:2.25rem}.about>.reveal:last-child .about-block{border-bottom:none;margin-bottom:0;padding-bottom:0}.about-block h2{font-family:var(--font-heading);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 .75rem;font-size:.82rem;font-weight:600}.about-block p,.about-block li{color:var(--text);margin:0}.about-block p+p{margin-top:.75rem}.about-block ul{color:var(--text);margin:0;padding:0;list-style:none}.about-block li{padding-left:1.1rem;position:relative}.about-block li+li{margin-top:.5rem}.about-block li:before{content:"";background:var(--accent);opacity:.75;border-radius:50%;width:.28rem;height:.28rem;position:absolute;top:.58em;left:0}.contact-panel{background:var(--surface);border-left:2px solid var(--accent);margin:0}.contact-list{margin:0;padding:0}.contact-row{border-bottom:1px solid var(--rule);margin:0;padding:1.1rem 1.25rem 1.15rem}.contact-row:last-child{border-bottom:none;padding-bottom:1.2rem}.contact-row:first-child{padding-top:1.15rem}.contact-label{font-family:var(--font-heading);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 .45rem;font-size:.68rem;font-weight:600}.contact-value{margin:0}.contact-value a{color:var(--text);overflow-wrap:anywhere;font-size:1.05rem;font-weight:400;text-decoration:none;transition:color .35s}.contact-value a:hover{color:var(--accent);text-decoration:underline}.contact-value a:focus-visible{outline:1px solid var(--accent);outline-offset:3px}
