@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');

:root{color-scheme:light;--paper:#f8f7f2;--ink:#242e28;--muted:#656b64;--green:#2b4639;--line:#dedfd5;--accent:#d8e5a9;font-family:'DM Sans',sans-serif;font-size:16px;background:var(--paper);color:var(--ink)}
*{box-sizing:border-box}body{margin:0}a{color:inherit}button{font:inherit}::selection{background:var(--accent);color:var(--ink)}:focus-visible{outline:3px solid #38633d;outline-offset:5px}html{scroll-behavior:smooth;scroll-padding-top:24px}.page{max-width:1000px;margin:auto;padding:0 40px}.skip-link{position:fixed;top:12px;left:12px;z-index:10;background:var(--green);color:white;padding:12px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}
.masthead{display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding:24px 0;font-size:.75rem;letter-spacing:.14em;font-weight:600;color:var(--muted)}.wordmark{font-family:'Manrope',sans-serif;font-size:1.8rem;font-weight:800;letter-spacing:-.09em;color:var(--ink);text-decoration:none}.wordmark span{color:#728448}.masthead .edition{font-size:.75rem}main{max-width:592px;margin:0 auto}.intro{text-align:center;padding:52px 0 38px}.portrait-wrap{position:relative;width:112px;margin:0 auto 26px}.portrait{display:block;object-fit:cover;object-position:center;border-radius:50%;border:5px solid white;box-shadow:0 0 0 1px var(--line)}.hello{position:absolute;right:-27px;bottom:1px;background:var(--accent);padding:6px 13px;border:1px solid #c6d28f;border-radius:3px;transform:rotate(-10deg);font-family:Georgia,serif;font-style:italic;font-size:1.2rem}.eyebrow{font-size:.75rem;letter-spacing:.17em;font-weight:700;color:var(--muted);line-height:1.7;margin:0 0 13px}h1{font-family:'Manrope',sans-serif;font-size:clamp(2.4rem,7vw,3.5rem);letter-spacing:-.065em;line-height:1.18;margin:0 0 18px;font-weight:800}h1>span{color:#7c9255}.intro-copy{font-size:1.25rem;line-height:1.5;letter-spacing:-.025em;margin:0 0 15px}.description{color:var(--muted);font-size:.9rem;line-height:1.8;margin:0}.description strong{font-weight:600;color:var(--ink)}.contact{display:inline-flex;align-items:center;gap:27px;margin-top:23px;min-height:44px;border-bottom:1px solid var(--green);text-decoration:none;font-size:.875rem;font-weight:600}.contact:hover{color:#47723d}
.section-label{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px;gap:12px}.section-label h2{font-size:.75rem;letter-spacing:.17em;margin:0;font-weight:700}.section-label>span{font-family:Georgia,serif;font-size:.875rem;font-style:italic;color:var(--muted)}.link-list{list-style:none;margin:0;padding:0;display:grid;gap:11px}.link-card{display:flex;align-items:center;gap:18px;border:1px solid var(--line);border-radius:12px;background:#fffefa;padding:20px;text-decoration:none;min-height:98px;transition:transform .18s,border-color .18s,box-shadow .18s}.link-card:hover{transform:translateY(-2px);border-color:#81916e;box-shadow:0 5px 15px #263b2710}.icon{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:10px;font-weight:700;font-size:1.45rem}.linkedin{background:#eaf0f2;color:#24576c;font-family:Arial,sans-serif}.medium{background:#edece7;font-family:Georgia,serif;color:#32352f}.substack{background:#fbede4;color:#b7562a}.icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.substack svg{width:21px;height:21px}.codeploy{background:#e9eee2;color:#446039;font-size:1.9rem;letter-spacing:-.1em}.codeploy span{font-size:1rem;align-self:center;margin-top:-12px}.sport{background:#eeedf5;color:#645780}.art{background:#f1e5df;color:#9b624c}.card-copy{flex:1;min-width:0}.card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:700;line-height:1.5;font-size:1rem;letter-spacing:-.025em}.card-description{display:block;font-size:.875rem;line-height:1.55;color:var(--muted);margin-top:3px}.tag{font-size:.75rem;font-weight:600;letter-spacing:.065em;color:#586149;background:#eff1e5;border-radius:4px;padding:3px 6px}.role{font-size:.8rem;color:var(--muted);font-weight:400;letter-spacing:0}.arrow{font-size:1.3rem;font-weight:400;color:#737a68}.little-star{color:#9e6546;font-size:1.35rem}.art-card{background:#f6f2e9}
.bio{margin-top:23px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.bio summary{display:flex;align-items:center;gap:18px;padding:24px 4px;cursor:pointer;list-style:none}.bio summary::-webkit-details-marker{display:none}.bio-symbol{width:44px;flex-shrink:0;text-align:center;font-family:Georgia,serif;font-style:italic;font-size:2rem;color:#4f6249}.bio summary>span:nth-child(2){flex:1}.plus{font-size:1.5rem;font-weight:400;transition:transform .2s;margin-right:12px}.bio[open] .plus{transform:rotate(45deg)}.bio-content{padding:0 22px 26px;line-height:1.8;color:var(--muted)}.bio-content h2{font-family:Georgia,serif;font-weight:400;color:var(--ink);font-size:1.7rem;line-height:1.3}.bio-content h3{font-size:.95rem;color:var(--ink);margin-top:26px}.experience{padding:0;list-style:none}.experience li{padding:10px 0;border-bottom:1px solid var(--line)}.experience strong,.experience span{display:block}.experience strong{color:var(--ink);font-size:.95rem}.experience span{font-size:.875rem}.skills{display:flex;gap:8px;flex-wrap:wrap;list-style:none;padding:0}.skills li{font-size:.875rem;border:1px solid var(--line);padding:4px 12px;border-radius:30px;color:var(--green)}
.contacts{text-align:center;padding:42px 0 44px}.contacts .eyebrow{font-size:.75rem}.contacts h2{font-family:Georgia,serif;font-weight:400;font-style:italic;letter-spacing:-.025em;font-size:1.7rem;margin:0 0 18px}.contacts>a{display:inline-flex;align-items:center;gap:24px;background:var(--green);color:white;text-decoration:none;border-radius:7px;padding:13px 22px;font-size:.875rem;min-height:48px}.contacts>a:hover{background:#3c5943}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:25px 0 28px;font-size:.75rem;color:var(--muted)}
@media(min-width:1000px){.intro{padding-top:58px}.page{max-width:1040px}}
@media(max-width:600px){.arrow,.contact>span[aria-hidden="true"],.contacts>a>span[aria-hidden="true"]{display:none}.page{padding:0 22px}.masthead{padding:15px 0}.masthead>span{font-size:.75rem;letter-spacing:.09em}.masthead .edition{display:none}.intro{padding:38px 0 32px}.portrait-wrap{margin-bottom:25px}h1{font-size:2.7rem}.intro-copy{font-size:1.125rem}.description{font-size:.875rem}.link-card{padding:17px 14px;gap:13px;min-height:100px}.icon{width:40px;height:40px}.card-title{gap:5px 8px}.card-description{font-size:.875rem}.tag{font-size:.75rem}.section-label>span{font-size:.8rem}.bio summary{gap:12px}.bio-content{padding-left:4px;padding-right:4px}footer{flex-direction:column;align-items:center;gap:8px;font-size:.7rem}.contacts .eyebrow{letter-spacing:.1em}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

.brand-logo img{display:block;width:100%;height:100%;object-fit:contain}
