:root{--ink:#111;--muted:#565656;--paper:#faf9f6;--line:#d0cfca;--accent:#0039a6;--route:#0039a6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid #006cca;outline-offset:5px}::selection{background:#fccc0a;color:#111}.container{width:min(1240px,calc(100% - 80px));margin-inline:auto}.skip-link{position:fixed;top:-100px;left:20px;background:#fff;padding:12px;z-index:20}.skip-link:focus{top:10px}.masthead{background:#111;color:#fff;padding:26px 0 0}.topbar{display:flex;flex-wrap:wrap;align-items:center;border-top:2px solid #fff}.wordmark{font-size:clamp(36px,5vw,68px);font-weight:700;letter-spacing:-.055em;line-height:1.05;padding:21px 0 25px;width:100%;display:flex;align-items:baseline;justify-content:space-between}.wordmark span{font-size:15px;letter-spacing:0;font-weight:400}.nav-wrap{width:100%;border-top:1px solid #666}.tabs{display:flex;justify-content:space-between;gap:16px}.tabs a{display:flex;align-items:center;gap:12px;padding:18px 0 22px;position:relative;font-size:16px;font-weight:700}.tabs a:after{position:absolute;bottom:0;left:0;right:0;height:5px;background:#fff;content:"";transform:scaleX(0)}.tabs a.active:after,.tabs a:hover:after{transform:scaleX(1)}.route-bullet{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;width:38px;height:38px;border-radius:50%;background:var(--route);color:#fff;font-size:25px;font-weight:700;line-height:1;letter-spacing:-.04em}.route-0,.route-about{--route:#0039a6}.route-1{--route:#ff6319}.route-2{--route:#00933c}.route-3{--route:#fccc0a}.route-4{--route:#b933ad}.route-1 .route-bullet,.route-3 .route-bullet{color:#111}.section-projects{--accent:#c84400}.section-cv{--accent:#007b32}.section-blog{--accent:#a77b00}.section-misc{--accent:#a02796}.menu-toggle{display:none}.location-strip{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-block:16px;font-size:12px;font-weight:700}.location-end{white-space:nowrap}.location-end span{margin-left:16px;font-size:18px}.page-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:70px;padding-block:54px 80px}.sidebar{padding-top:6px}.profile-photo{display:block;width:160px;height:160px;object-fit:cover;border-radius:50%;filter:grayscale(1);border:6px solid #fff;box-shadow:0 4px 12px #0002;margin:0 0 22px}.profile-name{font-size:25px;letter-spacing:-.04em;font-weight:700;line-height:1.2;margin:0 0 8px}.profile-role{font-size:15px;margin:0 0 26px;color:var(--muted)}.side-link{display:flex;align-items:center;gap:9px;font-size:13px;padding:9px 0}.side-link svg{width:18px;height:18px}.side-link span:last-child{margin-left:auto}.side-link:hover{text-decoration:underline}.line-guide{border-top:5px solid #111;margin-top:30px;padding-top:8px}.line-guide p{font-size:12px;font-weight:700;margin:0 0 20px}.line-guide a{display:flex;align-items:center;gap:12px;position:relative;font-size:13px;font-weight:700;padding:12px 0}.line-guide a:before{content:"";position:absolute;left:6px;top:0;bottom:0;width:3px;background:#111}.line-guide a:first-of-type:before{top:50%}.line-guide a:last-of-type:before{bottom:50%}.stop{width:15px;height:15px;border:3px solid var(--route);background:var(--paper);border-radius:50%;z-index:1;flex-shrink:0}.line-guide a:hover{color:var(--route)}main{min-width:0}.paper{background:none;border:0;box-shadow:none;border-radius:0;padding:0}.platform-label{display:flex;gap:12px;align-items:center;font-size:13px;font-weight:700;border-top:8px solid #111;padding-top:18px;margin-bottom:28px}.direction-arrow{font-size:38px;line-height:1;margin-left:auto}.platform-label .route-bullet{width:30px;height:30px;font-size:21px}h1{font-size:clamp(44px,6vw,80px);font-weight:700;letter-spacing:-.06em;line-height:1.02;margin:0 0 32px}h2,h3{font-weight:700;line-height:1.15;letter-spacing:-.035em}.prose{font-size:18px;line-height:1.65;max-width:760px}.prose p{margin:0 0 24px}.prose strong{font-weight:700}.prose h2{font-size:28px;margin:40px 0 16px;border-top:2px solid #111;padding-top:16px}.prose h3{font-size:23px;margin:28px 0 12px}.prose a{text-decoration:underline;text-underline-offset:3px}.prose img{max-width:100%;height:auto}.prose pre{overflow:auto;padding:20px;background:#eae9e5;font-size:14px}.prose blockquote{border-left:5px solid var(--accent);margin:28px 0;padding:0 22px}.prose table{border-collapse:collapse;width:100%;font-size:15px}.prose td,.prose th{border-bottom:1px solid var(--line);text-align:left;padding:10px}.about-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px}.button{border:2px solid #111;border-radius:0;display:inline-flex;align-items:center;justify-content:space-between;gap:36px;padding:13px 20px;font-size:15px;font-weight:700;cursor:pointer}.raised{color:#fff;background:#111}.flat{background:transparent}.button:hover{background:var(--accent);border-color:var(--accent);color:#fff}.explore{margin-top:58px}.section-heading{border-top:5px solid #111;padding-top:12px;display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:23px}.section-heading h2{font-size:24px;margin:0}.section-heading>span{font-size:12px}.explore-grid{display:block}.explore-card{display:flex;align-items:center;gap:22px;padding:22px 0;border-top:1px solid var(--line)}.explore-card:last-child{border-bottom:1px solid var(--line)}.explore-card .route-bullet{width:52px;height:52px;font-size:35px}.explore-card h3{font-size:29px;margin:0}.text-action{margin-left:auto;font-size:36px;line-height:1}.explore-card:hover h3{text-decoration:underline;text-underline-offset:5px}.explore-card:hover .text-action{transform:translateX(3px)}.list-paper,.document-paper{border-top:8px solid #111;padding-top:28px}.entry-list{margin-top:34px}.entry{display:block;border-top:2px solid #111;padding:24px 0 30px}.entry:last-child{border-bottom:2px solid #111}.entry-meta{font-size:12px;font-weight:700;display:flex;gap:12px;align-items:center;text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}.badge{display:inline-block;background:#e7e6e0;color:#333;padding:3px 7px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.entry-title{display:flex;gap:20px;justify-content:space-between;align-items:baseline}.entry-title h2{font-size:32px;margin:15px 0 10px}.entry-title>span{font-size:30px}.entry:hover h2{text-decoration:underline;text-underline-offset:4px}.entry p{font-size:16px;color:var(--muted);margin:0 0 18px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips span{border:1px solid #aaa;font-size:11px;padding:3px 8px}.back-link{display:inline-block;margin-top:30px;font-size:14px;font-weight:700;text-decoration:underline}.page-description{font-size:20px;color:var(--muted);margin-bottom:24px}.article-meta{font-size:12px;padding-bottom:20px;border-bottom:1px solid var(--line)}.document-paper>.badge{margin-bottom:20px}.footer{border-top:8px solid #111;padding-block:20px 35px;display:flex;justify-content:space-between;font-size:12px;font-weight:700}.footer a{text-decoration:underline}.empty-state{padding:25px 0;color:var(--muted)}
@media(min-width:1400px){.page-grid{gap:100px;grid-template-columns:240px minmax(0,1fr)}}
@media(max-width:1000px){.container{width:calc(100% - 48px)}.page-grid{grid-template-columns:180px minmax(0,1fr);gap:40px}.tabs a{font-size:13px;gap:9px}.route-bullet{width:32px;height:32px;font-size:23px}.explore-card h3{font-size:25px}}
@media(max-width:900px){.masthead{padding-top:16px}.topbar{justify-content:space-between}.wordmark{width:auto;font-size:36px;padding:20px 0}.wordmark span{display:none}.menu-ready .menu-toggle{display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #777;color:#fff;width:46px;height:46px}.menu-ready .nav-wrap{display:none}.menu-ready .nav-wrap.is-open{display:block}.tabs{flex-direction:column;gap:0;padding:0 0 12px}.tabs a{padding:12px 0;font-size:17px}.tabs a:after{left:auto;width:6px;height:6px;bottom:50%;border-radius:50%}.page-grid{padding-top:36px;gap:32px;grid-template-columns:160px minmax(0,1fr)}.profile-photo{width:136px;height:136px}.profile-name{font-size:23px}.prose{font-size:17px}.section-heading>span{display:none}}
@media(max-width:600px){.container{width:calc(100% - 36px)}.wordmark{font-size:32px}.location-strip{font-size:11px}.page-grid{display:flex;flex-direction:column;gap:32px;padding-top:28px;padding-bottom:48px}.sidebar{display:grid;grid-template-columns:76px 1fr;column-gap:18px;padding:0;align-items:center}.profile-photo{width:76px;height:76px;border:3px solid #fff;grid-row:1/4;margin:0}.profile-name{font-size:23px;margin:0;align-self:end}.profile-role{font-size:13px;margin:3px 0}.side-link{font-size:12px;padding:3px 0}.side-link svg{width:14px;height:14px}.side-link span:last-child{margin-left:0}.line-guide{display:none}.platform-label{margin-bottom:22px;padding-top:14px;border-top-width:6px}h1{font-size:54px;margin-bottom:24px}.prose{font-size:17px}.about-actions{gap:10px}.button{font-size:13px;padding:12px 14px;gap:16px}.explore{margin-top:38px}.explore-card{gap:16px;padding:19px 0}.explore-card h3{font-size:23px}.explore-card .route-bullet{width:42px;height:42px;font-size:29px}.text-action{font-size:28px}.entry-title h2{font-size:28px}.footer{border-top-width:6px;font-size:11px}.list-paper,.document-paper{border-top-width:6px}.location-end{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.masthead,.sidebar,.location-strip,.footer,.about-actions,.back-link{display:none}.container{width:100%}.page-grid{display:block;padding:0}body{background:#fff;font-size:12px}.prose{font-size:12px}.document-paper{border:0}h1{font-size:32px}a{text-decoration:none}}
.prose h1{font-size:34px;line-height:1.15;margin:36px 0 20px;letter-spacing:-.035em}.prose{overflow-wrap:anywhere}.prose table{display:block;overflow-x:auto}.document-paper>h1{font-size:clamp(38px,4.5vw,64px)}.prose code{overflow-wrap:anywhere}.location-strip>span:first-child{min-width:0;overflow-wrap:anywhere}
/* Transit wayfinding arrows: a solid shaft, square corners, and 45-degree head. */
.mta-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.12em;flex-shrink:0;overflow:visible}.side-link .mta-arrow{width:16px;height:16px}.line-guide .mta-arrow{width:15px;height:15px}.direction-arrow .mta-arrow{width:34px;height:34px}.button .mta-arrow{width:19px;height:19px}.text-action .mta-arrow{width:30px;height:30px}.entry-title>span{flex-shrink:0}.back-link .mta-arrow{width:17px;height:17px}.section-heading .mta-arrow{margin-left:6px}

/* A schematic route with rounded changes of direction between stops. */
.route-map{position:relative}.route-track{position:absolute;top:0;left:0;width:52px;height:240px;pointer-events:none}.line-guide .route-map a{height:48px;padding:0 0 0 56px;line-height:1.2;font-size:12px}.line-guide .route-map a:before{content:none}.route-map .stop{position:absolute;left:.5px;top:16.5px}.route-map a:nth-of-type(2) .stop,.route-map a:nth-of-type(3) .stop,.route-map a:nth-of-type(5) .stop{left:26.5px}
