@font-face{font-family:Source Sans;src:url(../../../fonts/source-sans-3.woff2) format("woff2");font-style:normal;font-weight:400 700;font-display:swap}@font-face{font-family:"Source Serif";src:url(../../../fonts/source-serif-4.woff2) format("woff2");font-style:normal;font-weight:400 500;font-display:swap}:root{font-family:Source Sans,Arial,sans-serif;font-size:16px;font-synthesis:none;color:#2b2928;background:#fffdfa;--ink: #2b2928;--muted: #68615d;--accent: #bf442b;--secondary: #515b62;--highlight: #f4c7ab;--rule: #e7ded7;--accent-soft: #fbede5;--golf: #39734c;--serif: "Source Serif", Georgia, serif;scroll-behavior:smooth;scroll-padding-top:2rem;border-top:5px solid var(--accent)}*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:5px}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--highlight);color:var(--ink)}h1,h2,h3,h4,p,figure{margin:0}svg{display:block;width:100%}.page-shell{max-width:1080px;margin:0 auto;padding:0 40px}.skip-link{position:fixed;z-index:10;top:12px;left:12px;padding:10px 18px;background:var(--accent);color:#fff;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-header{min-height:98px;padding:23px 0;display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px}.monogram{font-size:2.25rem;font-weight:700;letter-spacing:-.09em;line-height:1;color:var(--accent);text-decoration:none}.monogram span{color:var(--secondary)}.site-header nav{display:flex;flex-wrap:wrap;gap:30px;margin-left:auto}.site-header nav a{font-size:1rem;text-decoration:none}.site-header nav a:hover{text-decoration:underline}.intro{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:48px;align-items:center;padding:51px 0 73px}.eyebrow{color:var(--muted);font:.75rem/1.6 ui-monospace,SFMono-Regular,Consolas,monospace}.eyebrow-divider{margin:0 10px;color:var(--secondary)}h1{color:var(--ink);font-size:clamp(3.75rem,6.5vw,5.25rem);font-weight:700;line-height:1.03;letter-spacing:-.055em;margin-top:22px}.name-period{color:var(--accent)}.role{margin-top:23px;font-size:1.4375rem;line-height:1.35;font-weight:500;letter-spacing:-.015em}.intro-copy{margin-top:22px;font-size:1.0625rem;line-height:1.65;color:var(--muted);max-width:490px}.social-links{display:flex;flex-wrap:wrap;gap:25px;margin-top:26px;font-size:1rem}.social-links a{color:var(--accent);text-decoration-color:#df9a84}.social-links a:hover{color:var(--secondary);text-decoration-color:var(--secondary)}.section-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 20px;padding-top:25px;padding-bottom:25px;border-top:3px solid var(--accent);border-bottom:1px solid var(--rule)}.section-heading h2{font:400 2rem/1.2 var(--serif);letter-spacing:-.03em}.section-meta{font-size:.875rem;line-height:1.5;color:var(--muted)}.project{--project-color: var(--accent);--project-number-ink: #fff;border-bottom:1px solid var(--rule)}.project:nth-child(2){--project-color: var(--secondary)}.project:nth-child(3){--project-color: var(--golf)}.project:nth-child(4){--project-color: #785762}.project summary{cursor:pointer;list-style:none;display:grid;grid-template-columns:2.75rem minmax(0,.65fr) minmax(0,1fr) 20px;gap:25px;align-items:start;padding:29px 0}summary::-webkit-details-marker{display:none}.project-number{display:grid;place-items:center;width:2.75rem;height:2.75rem;margin-top:1px;background:var(--project-color);color:var(--project-number-ink);font:.8125rem/1 ui-monospace,monospace}.project-identity,.project-summary{display:block}.project-title{display:block;font-size:1.5rem;font-weight:600;line-height:1.3;letter-spacing:-.025em}.project summary:hover .project-title{color:var(--accent);text-decoration:underline;text-decoration-color:var(--project-color);text-decoration-thickness:2px;text-underline-offset:5px}.project-category{display:block;font-size:.875rem;line-height:1.5;margin-top:5px;color:var(--muted)}.project-description{display:block;font-size:1.0625rem;line-height:1.55;padding-top:1px}.project-stack{display:block;font:.75rem/1.6 ui-monospace,monospace;margin-top:12px;color:var(--muted)}.progress-label{display:inline-block;color:var(--secondary);font-size:.875rem;margin-top:8px}.expand-icon{position:relative;height:22px;margin-top:4px}.expand-icon:before,.expand-icon:after{content:"";position:absolute;background:var(--accent);height:1.5px;width:13px;top:10px;left:3px}.expand-icon:after{transform:rotate(90deg)}.project[open] .expand-icon:after{transform:rotate(0)}.project[open] .project-title{color:var(--accent)}.project-notes{margin:-3px 45px 30px 69px;max-width:650px;border-left:3px solid var(--project-color);padding-left:22px}.project-notes p{font-size:1rem;line-height:1.65;color:var(--muted)}.project-notes p+p{margin-top:12px}.text-link{display:inline-block;margin-top:15px;font-size:.9375rem;color:var(--accent)}.work-footnote{text-align:right;margin-top:13px;color:var(--muted);font-size:.8125rem}.background-section{margin-top:64px}.background-section .section-heading{border-top-color:var(--secondary)}.background-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px;margin-top:28px}.column-label{color:var(--secondary);font-size:.875rem;font-weight:600;line-height:1.5}.experience-column .column-label{color:var(--accent)}.background-entry{padding:19px 0 23px}.background-entry+.background-entry{border-top:1px solid var(--rule)}.entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;justify-content:space-between}.entry-heading h4{font-size:1.125rem;font-weight:600;line-height:1.4;letter-spacing:-.015em}.entry-date{flex-shrink:0;color:var(--muted);font:.75rem/1.5 ui-monospace,monospace}.entry-subtitle{font-size:.9375rem;line-height:1.5;margin-top:7px}.background-entry>p:not(.entry-subtitle){font-size:1rem;line-height:1.65;color:var(--muted);margin-top:14px}.school-details{margin-top:18px}.school-details summary{cursor:pointer;display:flex;justify-content:space-between;gap:15px;list-style:none;font-size:.875rem;color:var(--accent)}.school-details[open] summary span{transform:rotate(45deg)}.school-details>div{font-size:.9375rem;line-height:1.6;color:var(--muted);margin-top:16px}.school-details ul{padding-left:18px;margin:12px 0 0}.school-details li+li{margin-top:6px}.contact-section{display:grid;grid-template-columns:1fr 1.2fr;gap:30px;align-items:center;margin-top:48px;padding:36px 40px 40px;border-top:3px solid var(--accent);background:var(--accent-soft);color:var(--ink)}.contact-section .eyebrow{color:var(--accent)}.contact-section h2{font:400 3.2rem/1.15 var(--serif);letter-spacing:-.04em;margin-top:10px}.contact-section h2 span{color:var(--accent)}.email-link{color:var(--accent);font-size:1.25rem;line-height:1.5;overflow-wrap:anywhere}.email-link:hover{color:var(--ink);text-decoration-color:var(--accent)}.contact-copy p{font-size:.9375rem;line-height:1.5;color:var(--muted);margin-top:12px}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:34px;padding:0 0 30px;font-size:.8125rem}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.project-map{min-width:0}.project-map>figcaption{margin-bottom:18px}.map-canvas{position:relative;height:18rem}.map-canvas svg{position:absolute;inset:0;height:100%;overflow:visible}.map-connection{stroke:var(--accent);stroke-width:1.25;opacity:.3;transition:opacity .16s ease,stroke-width .16s ease}.map-connection.emphasised{opacity:.1}.map-connection.emphasised.connected{opacity:.85;stroke-width:2}.map-node{position:absolute;top:var(--node-y);transform:translateY(-50%);min-height:2.5rem;display:flex;align-items:center;font:400 .8125rem/1.35 Source Sans,Arial,sans-serif;background:#fffdfa;border:1px solid var(--rule);color:var(--ink);text-decoration:none;transition:background .16s ease,border-color .16s ease,opacity .16s ease}.map-project{left:0;width:43.75%;padding:6px 7px;gap:8px}.map-project>span:last-child{min-width:0;overflow-wrap:anywhere}.map-number{color:var(--accent);font:.6875rem/1.4 ui-monospace,monospace;flex-shrink:0}.map-technology{right:0;width:31.875%;justify-content:center;padding:6px;cursor:pointer;overflow-wrap:anywhere}.map-node.active,.map-node:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.map-node.dimmed{opacity:.75}.map-node.dimmed:hover,.map-node.dimmed:focus-visible{opacity:1}.map-status{margin-top:18px;color:var(--accent);font-size:.8125rem;line-height:1.5}.map-hint{margin-top:5px;color:var(--muted);font-size:.75rem;line-height:1.6}.project{scroll-margin-top:1.5rem}.project.selected .project-number{outline:2px solid var(--project-color);outline-offset:4px}@media(max-width:960px){.intro{grid-template-columns:minmax(0,1fr) 280px;gap:30px}h1{font-size:4.25rem}.project summary{gap:18px}.background-grid{gap:40px}.contact-section{padding:30px;grid-template-columns:1fr 1.5fr}}@media(max-width:760px){.page-shell{padding:0 26px;max-width:660px}.site-header{min-height:80px;padding:20px 0;column-gap:20px}.site-header nav{gap:20px}.site-header nav a{font-size:.9375rem}.monogram{font-size:2rem}.intro{grid-template-columns:minmax(0,1fr);gap:0;padding:34px 0 47px;position:relative}h1{font-size:clamp(2.75rem,9vw,4rem);margin-top:19px}.role{font-size:1.25rem;margin-top:18px}.intro-copy{margin-top:20px;max-width:470px}.eyebrow-divider{margin:0 5px}.project-map{max-width:340px;width:100%;margin-top:30px}.social-links{margin-top:22px}.section-heading{padding:21px 0}.section-heading h2{font-size:1.75rem}.section-meta{font-size:.8125rem}.project summary{grid-template-columns:2.25rem minmax(0,1fr) 20px;gap:16px;padding:25px 0}.project-number{width:2.25rem;height:2.25rem}.project-identity{grid-column:2}.project-title{font-size:1.375rem}.project-category{margin-top:3px}.project-summary{grid-column:2;grid-row:2}.expand-icon{grid-column:3;grid-row:1}.project-description{font-size:1.0625rem;padding-top:0}.project-stack{margin-top:11px}.progress-label{margin-top:4px}.project-notes{margin-left:52px;margin-right:0;padding-left:16px}.background-section{margin-top:48px}.background-grid{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:25px}.background-entry{padding:16px 0 22px}.contact-section{display:block;margin-top:28px;padding:28px}.contact-section h2{font-size:2.75rem}.contact-copy{margin-top:25px}.email-link{font-size:1.0625rem}.site-footer{margin-top:27px;padding-bottom:27px}}@media(max-width:400px){.page-shell{padding:0 20px}.site-header nav{gap:16px}.site-header nav a{font-size:.875rem}h1{font-size:2.75rem}.eyebrow{font-size:.75rem}.project summary{gap:13px}.project-notes{margin-left:49px}.contact-section{padding:24px}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}.map-node,.map-connection{transition:none}}@media print{:root{background:#fff;color:#000;border:0}.page-shell{max-width:none;padding:0}.site-header,.project-map,.work-footnote,.site-footer,.expand-icon{display:none}.intro{display:block;padding:0 0 30px}h1{font-size:3rem}.project,.background-entry{break-inside:avoid}.project summary{grid-template-columns:2.75rem .65fr 1fr}.background-section{margin-top:30px}.contact-section{background:#fff;color:#000;border-top:1px solid var(--rule);padding:25px 0}.contact-section .eyebrow,.contact-copy p,.email-link{color:#000}a{text-decoration:none}}
