/* One stylesheet. System fonts, no imports, no client-side framework. */
:root{color-scheme:light;--ink:#162f49;--body:#3f5369;--blue:#245c94;--navy:#244f7d;--muted:#617389;--line:#d9e3ee;--pale:#f0f5fa;--sans:Inter,"Segoe UI",Arial,sans-serif;--serif:Charter,"Bitstream Charter","Iowan Old Style",Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#fff;color:var(--body);font-family:var(--serif);font-size:18px;line-height:1.65}a{color:var(--blue);text-underline-offset:4px;text-decoration-thickness:1px}a:hover{color:#102f57;text-decoration:underline}a:focus-visible,button:focus-visible{outline:2px solid #337cbb;outline-offset:5px}img,svg{max-width:100%}img{display:block;height:auto}h1,h2,h3,nav,.wordmark,.eyebrow,.text-link,.back-link,.button,.site-footer,.small-print,figcaption{font-family:var(--sans)}h1,h2,h3{color:var(--ink);line-height:1.22}h1{font-size:clamp(2.2rem,4vw,3rem);font-weight:450;letter-spacing:-.045em;margin:0 0 18px}h2{font-size:1.35rem;font-weight:500}h3{font-size:1.3rem;font-weight:500;letter-spacing:-.025em}p{margin:0 0 1.2em}.site-shell{max-width:984px;margin:0 auto;padding:0 42px}.site-header{min-height:97px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #9db5ce}.wordmark{display:inline-flex;align-items:center;gap:10px;color:var(--ink);font-size:17px;font-weight:500;text-decoration:none;white-space:nowrap;letter-spacing:-.025em}.site-mark{width:21px;height:24px;color:var(--blue)}.site-mark svg{display:block;width:100%;height:100%}nav{display:flex;gap:25px;font-size:13px}nav a{text-decoration:none;color:#536d88}nav a[aria-current=page]{color:var(--ink);text-decoration:underline;text-decoration-color:#8baac8;text-underline-offset:8px}.intro{padding:64px 0 45px}.eyebrow{font-size:10px;font-weight:550;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);display:block;margin:0 0 15px}.lede{font-size:23px;line-height:1.45;color:#3e5c7b;max-width:650px;margin:0}.section-bar{display:flex;align-items:center;justify-content:space-between;background:var(--navy);color:white;height:39px;padding:0 18px;overflow:hidden}.section-bar h2{font-size:15px;font-weight:450;color:inherit;margin:0;letter-spacing:.005em}.section-bar>span{width:68px;height:65px;transform:rotate(-10deg) translateY(7px);color:#93b3d1}.section-bar svg{width:100%;height:100%}.project-card{display:grid;grid-template-columns:1fr 275px;gap:32px;align-items:center;padding:25px 17px;border-bottom:1px solid var(--line)}.project-card .eyebrow{font-size:9px;margin-bottom:6px;letter-spacing:.11em}.project-card h3{margin:0 0 8px}.project-card h3 a{text-decoration:none}.project-card p{font-size:17px;line-height:1.45;margin-bottom:11px;max-width:360px}.text-link{font-size:12px;font-weight:500;text-decoration:none}.text-link span[aria-hidden]{display:inline-block;margin-left:5px}.project-visual{display:block;overflow:hidden;background:#09121e;aspect-ratio:16/9;border:1px solid #d3deea;text-decoration:none}.project-visual img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.project-visual:hover img{transform:scale(1.025)}.terminal-visual{background:#f0f5fa;color:#24466b;font-family:ui-monospace,"Cascadia Code",Consolas,monospace;border:1px solid #d2dfec}.terminal-bar{display:flex;justify-content:space-between;border-bottom:1px solid #d2dfec;font-size:9px;padding:6px 12px;color:#4e6b86}.terminal-content{font-size:10px;line-height:2.05;padding:15px 12px;white-space:nowrap}.terminal-comment{color:#62788d}.prompt{color:#2171b3}.terminal-cursor{display:inline-block;vertical-align:middle;background:#789bc0;width:5px;height:11px;margin-left:5px}.newsletter-note{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:2px solid #537da4;background:var(--pale);margin-top:38px;padding:22px 20px}.newsletter-note h2{font-size:18px;margin:0 0 5px;font-weight:450}.newsletter-note p{font-size:16px;margin:0}.newsletter-note>a{white-space:nowrap}.site-footer{border-top:1px solid var(--line);margin-top:45px;padding:20px 0 30px;display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted)}.site-footer nav{font-size:11px;gap:20px}.page-heading{padding:49px 0 30px}.page-heading .eyebrow{margin-top:20px}.back-link{font-size:12px;text-decoration:none;display:inline-block;margin-bottom:18px}.page-heading>.back-link+.eyebrow{margin-top:0}.project-links{display:flex;flex-wrap:wrap;gap:12px 23px;padding:0;margin:23px 0 0;list-style:none;font:13px/1.6 var(--sans)}.project-links a{text-decoration:none}.project-hero{margin:0 0 35px}.project-hero img{width:100%;border:1px solid var(--line)}figcaption{font-size:11px;line-height:1.6;color:var(--muted);margin-top:10px;max-width:720px}.prose{max-width:680px}.prose h2{margin-top:32px;margin-bottom:16px}.prose ul{padding-left:23px}.prose li{padding-left:3px;margin-bottom:8px}.prose code{font-size:.85em;background:var(--pale);padding:2px 4px}.prose pre{overflow:auto;background:var(--pale);padding:18px}.project-terminal{max-width:680px;margin-bottom:36px}.project-terminal .terminal-bar{font-size:12px;padding:10px 20px}.project-terminal .terminal-content{font-size:15px;padding:24px 20px}.project-tail{border-top:1px solid var(--line);margin-top:35px;padding-top:22px;display:flex;flex-wrap:wrap;gap:24px;font:13px var(--sans)}.contact-section{margin-top:40px}.contact-section>.section-bar{margin-bottom:24px}.interest-list{margin:0}.interest-list>div{padding:22px 0;border-bottom:1px solid var(--line)}dt{font:18px var(--sans);color:var(--ink);margin-bottom:7px}dd{margin:0}.notice{margin-top:30px;padding:20px 24px;background:var(--pale);border-left:2px solid #658bae}.notice h2{font-size:17px;margin:0 0 10px}.notice p{font-size:16px;margin:0}.button{display:inline-block;background:var(--navy);color:#fff;padding:10px 18px;text-decoration:none;font-size:14px;margin-top:22px}.button:hover{background:#183c65;color:#fff}.small-print{font-size:12px;color:var(--muted);max-width:610px}.latest-post{margin-top:35px}.latest-post>.eyebrow{margin-top:24px}.latest-post h3{margin:0 0 10px}.blog-entry{padding:24px 0;border-bottom:1px solid var(--line)}.blog-entry h2{margin:8px 0}.related{margin-top:40px}.skip-link{position:absolute;left:16px;top:-90px;background:white;padding:10px;z-index:10}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:1400px){.site-shell{max-width:1020px}.intro{padding-top:74px}}
@media(max-width:700px){.site-shell{padding:0 23px}.site-header{min-height:110px;align-items:flex-start;justify-content:center;flex-direction:column;gap:15px;padding:20px 0}nav{gap:23px;font-size:12px}.intro{padding:41px 0 31px}.lede{font-size:21px}.project-card{grid-template-columns:1fr 210px;gap:18px;padding:22px 8px}.project-card p{font-size:16px}.project-card h3{font-size:19px}.terminal-content{font-size:8px;padding:10px 8px}.terminal-bar{font-size:8px}.newsletter-note{align-items:flex-start;flex-direction:column;gap:12px;margin-top:28px}.site-footer{margin-top:32px;font-size:10px}.site-footer>span{max-width:160px}.site-footer nav{gap:13px}.page-heading{padding-top:35px}.project-terminal .terminal-content{font-size:12px}}
@media(max-width:480px){.project-card{grid-template-columns:1fr;gap:16px;padding:25px 0}.project-copy{order:1}.project-visual{order:0;width:100%}.project-card p{max-width:none}.project-card h3{font-size:21px}.terminal-content{font-size:12px;padding:16px}.terminal-bar{font-size:10px;padding:8px 16px}.desktop-break{display:none}.project-card .eyebrow{font-size:10px}.site-footer{flex-direction:column;gap:12px}.site-footer>span{max-width:none}.project-terminal .terminal-content{font-size:10px;padding:16px 12px}.section-bar{padding:0 13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-visual img{transition:none}}

/* A quiet portrait beside the About introduction. */
.about-heading{display:flex;align-items:center;justify-content:space-between;gap:28px;max-width:680px}
.about-heading .eyebrow{margin-top:0}
.about-portrait{width:116px;height:116px;flex:none;object-fit:cover;border-radius:50%;border:1px solid #b7cadd;padding:4px;background:#fff}
@media(max-width:480px){.about-heading{flex-direction:column-reverse;align-items:flex-start;gap:23px}.about-portrait{width:88px;height:88px;padding:3px}}

/* Plain support links keep third-party widgets off the site. */
.support-note{margin-top:32px;padding:22px 0 0;border-top:1px solid var(--line)}
.support-note h2{font-size:18px;margin:0 0 10px}
.support-note p{margin:0;max-width:640px}
.project-support{margin-top:18px;font-size:14px}
