:root{--color-ink:#252d35;--color-ink-soft:#47515c;--color-muted:#747d86;--color-line:#d9dee2;--color-paper:#fff;--color-wash:#f6f7f4;--color-warm:#fbfaf6;--color-red:#f69087;--color-green:#b0cb7a;--color-blue:#85a9b3;--color-green-light:#85ccb1;--content-width:1180px;--article-width:780px}*{box-sizing:border-box}html{width:100%;overflow-x:hidden}body{width:100%;min-width:0;color:var(--color-ink);background:var(--color-paper);margin:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6;overflow-x:hidden}body:after{content:none;display:none}img{max-width:100%;height:auto;display:block}a{color:var(--color-red);text-decoration:none}a:hover,a:focus{text-decoration:underline}.top-detail-header{grid-template-columns:repeat(4,1fr);height:5px;display:grid}.top-detail-header span:first-child{background:var(--color-red)}.top-detail-header span:nth-child(2){background:var(--color-green)}.top-detail-header span:nth-child(3){background:var(--color-blue)}.top-detail-header span:nth-child(4){background:var(--color-green-light)}.site-nav{background:var(--color-ink)}.site-nav__inner{max-width:var(--content-width);justify-content:space-between;align-items:center;gap:28px;min-height:68px;margin:0 auto;padding:0 clamp(16px,3vw,28px);display:flex}.site-nav__brand,.site-nav__link{color:#fff}.site-nav__brand{font-size:18px;font-weight:700}.site-nav__links{flex-wrap:wrap;align-items:center;gap:20px;min-width:0;display:flex}.site-nav__toggle,.site-nav__close,.site-nav__overlay,.site-nav__drawer-header{display:none}.site-nav__toggle,.site-nav__close{color:#fff;cursor:pointer;font:inherit;background:0 0;border:0;border-radius:0}.site-nav__toggle{justify-content:center;align-items:center;width:44px;height:44px;padding:0}.site-nav__toggle span{background:#fff;width:24px;height:2px;display:block}.site-nav__link{color:#eef2f4;font-size:14px}.site-nav__link[aria-current=page]{color:#fff;font-weight:700}.site-nav__language{color:#fff;border:1px solid #ffffff4d;justify-content:center;align-items:center;min-width:38px;min-height:30px;font-size:13px;font-weight:700;display:inline-flex}.page{width:min(100%, var(--content-width));max-width:var(--content-width);margin:0 auto;padding:clamp(28px,4vw,38px) clamp(16px,3vw,28px) clamp(34px,4vw,46px)}.eyebrow{color:var(--color-muted);letter-spacing:0;text-transform:uppercase;margin:0 0 10px;font-size:13px;font-weight:700}h1,h2,h3{line-height:1.14}h1{max-width:900px;margin:0 0 18px;font-size:clamp(32px,4vw,42px);font-weight:700}h2,h3,p,li,a{overflow-wrap:anywhere}.text-right{text-align:right}.legacy-label{color:var(--color-muted);text-transform:uppercase;margin-bottom:12px;font-weight:700;display:block}.legacy-feature{grid-template-columns:1fr 1fr;align-items:center;gap:42px;margin-bottom:50px;display:grid}.legacy-feature h1{font-size:clamp(30px,3.8vw,40px)}.legacy-feature small{color:var(--color-muted);margin-bottom:14px;display:block}.legacy-feature__image{width:100%}.legacy-feature__image--mobile{display:none}.legacy-presentation{border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line);grid-template-columns:minmax(120px,170px) minmax(0,1fr) minmax(180px,280px);align-items:center;gap:28px;margin:0 0 54px;padding:28px 0;display:grid}.legacy-profile{width:150px}.legacy-social{flex-wrap:wrap;justify-content:flex-end;gap:12px;display:flex}.legacy-social--inline{margin-top:18px}.legacy-social img{width:42px;height:42px}.legacy-section{margin:0 0 clamp(40px,6vw,58px)}.legacy-section__header{margin-bottom:26px}.legacy-section__header h1{margin-bottom:6px}.legacy-section__header:after{content:"";background:var(--color-line);height:1px;margin-top:18px;display:block}.legacy-reading{grid-template-columns:170px minmax(0,1fr);align-items:start;gap:28px;display:grid}.legacy-reading img{width:100%}.legacy-reading h2{font-size:28px}.legacy-reading h4{color:var(--color-muted);margin:0 0 14px;font-weight:400}.legacy-reading p+p{border-top:1px solid var(--color-line);margin-top:18px;padding-top:18px}.legacy-article-grid{grid-template-columns:repeat(3,minmax(180px,1fr));gap:24px;max-width:900px;margin:0 auto;display:grid}.legacy-article-card{background:var(--color-wash);padding:18px}.legacy-article-card img{width:100%;margin-bottom:16px}.legacy-article-card h3{font-size:19px}.legacy-project{grid-template-columns:1fr 1fr;max-width:980px;margin:0 auto;display:grid}.legacy-project img{object-fit:cover;width:100%;height:100%}.legacy-project__copy{background:var(--color-wash);min-height:0;padding:28px}.legacy-project__copy p+p{margin-top:14px}.legacy-about-header{text-align:center;background:var(--color-wash);margin:-38px -28px 48px;padding:64px 28px}.legacy-about-header img{width:174px;margin:0 auto 18px}.legacy-about-header h1{margin-left:auto;margin-right:auto}.legacy-bio{grid-template-columns:170px minmax(0,1fr);align-items:start;gap:28px;display:grid}.legacy-bio>img{width:150px}.legacy-bio .lead+.lead{margin-top:14px}.legacy-skill-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.legacy-blue-box{background:var(--color-blue);color:#fff;min-height:230px;padding:24px}.legacy-blue-box h3{color:#fff}.legacy-blue-box ul{margin:12px 0 0;padding-left:20px}.legacy-cert-grid{grid-template-columns:repeat(auto-fit,minmax(88px,1fr));align-items:center;gap:22px;display:grid}.legacy-cert-grid img{width:100%}.bg-gray{background-color:var(--color-gray-soft,#eee)}#books{clear:both;padding-top:1em;display:flow-root}#books .row{display:flow-root}#books hr{border:0;border-top:1px solid #111}#books .books__book{width:100%;margin:.75em 0;display:block}#books .books__book img{float:left;width:auto;max-width:110px;max-height:170px;margin:.75em 1em .75em 0}#books .books__book .bg-gray{min-height:150px;padding:1em;display:flow-root;overflow:hidden}#books .books__book__description{font-size:1em}#books .books__book__description h3{margin-top:.65em;font-size:1.25em}#books .books__book__description h4{color:var(--color-ink-soft);margin-bottom:.5em;font-size:1em}#books .books__book__description p:last-child{line-height:1.45}#books .books__book__description__tag{background-color:var(--color-blue);color:#fff;padding:5px;display:inline-block}.books__year-index{margin:0 0 1em;padding:1em 0 0}.books__year-index__title{color:#555;text-transform:uppercase;margin:0 0 .75em;font-size:.85em;font-weight:700}.books__year-index__total{color:var(--color-muted);margin:-.35em 0 1em;font-size:.95em}.books__year-index__select-label,.books__year-index__select{display:none}.books__year-index__button{border:1px solid var(--color-blue);color:var(--color-ink);text-align:center;background:#fff;margin:0 .5em .5em 0;padding:.45em .75em;display:inline-block}.books__year-index__button:hover,.books__year-index__button:focus{text-decoration:none}.books__year-index__button--active{background:var(--color-blue);color:#fff}.books__year-index__count{color:inherit;opacity:.75;font-size:.85em}h2{margin:0 0 14px;font-size:27px}h3{margin:0 0 8px;font-size:21px}p{margin:0}.lead{color:var(--color-ink-soft);font-size:20px}.button{border:1px solid var(--color-line);min-height:44px;color:var(--color-ink);justify-content:center;align-items:center;padding:10px 16px;font-weight:700;display:inline-flex}.button--primary{border-color:var(--color-red);background:var(--color-red);color:#fff}.text-link{margin-top:18px;font-weight:700;display:inline-block}.home-hero{border-bottom:1px solid var(--color-line);grid-template-columns:220px minmax(0,1fr) 230px;align-items:center;gap:38px;padding:18px 0 54px;display:grid}.home-hero__content{max-width:850px}.home-hero__actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.hero-portrait{border-left:5px solid var(--color-red);background:var(--color-ink);align-self:stretch;min-height:360px;overflow:hidden}.hero-portrait img{object-fit:cover;object-position:center;width:100%;height:100%}.hero-facts{background:var(--color-line);gap:1px;display:grid}.hero-facts span{min-height:94px;color:var(--color-ink-soft);background:#fff;padding:18px;font-size:14px;display:block}.hero-facts strong{color:var(--color-ink);margin-bottom:8px;font-size:30px;line-height:1;display:block}.focus-grid{background:var(--color-line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:50px 0;display:grid}.focus-grid--compact .focus-item{min-height:154px}.focus-item{background:var(--color-paper);min-height:176px;padding:24px}.focus-item:nth-child(4n+1){border-top:4px solid var(--color-red)}.focus-item:nth-child(4n+2){border-top:4px solid var(--color-green)}.focus-item:nth-child(4n+3){border-top:4px solid var(--color-blue)}.focus-item:nth-child(4n+4){border-top:4px solid var(--color-green-light)}.focus-item p{color:var(--color-ink-soft)}.home-section{border-top:1px solid var(--color-line);margin-top:44px;padding-top:44px}.home-section--split,.home-river{border-top:1px solid var(--color-line);grid-template-columns:minmax(0,1fr) 300px 300px;align-items:start;gap:34px;margin-top:48px;padding-top:48px;display:grid}.featured-post{max-width:760px}.featured-post h2{font-size:36px}.featured-post h2 a,.post-card__title a,.blog-featured h2 a{color:var(--color-ink)}.compact-list{align-self:start;gap:12px;display:grid}.compact-link{border-bottom:1px solid var(--color-line);color:var(--color-ink);gap:4px;padding:0 0 18px;display:grid}.compact-list--line{gap:18px}.home-note{border-top:5px solid var(--color-green);background:var(--color-wash);padding:24px}.home-note p:not(.eyebrow){color:var(--color-ink-soft)}.compact-link span,.post-card__meta,.post-meta{color:var(--color-muted);font-size:14px}.home-section--reading{grid-template-columns:150px minmax(0,1fr);align-items:center;gap:28px;display:grid}.reading-cover{background:var(--color-wash);padding:12px}.project-highlight{border-top:1px solid var(--color-line);grid-template-columns:minmax(0,.82fr) minmax(280px,1fr);align-items:center;gap:42px;margin-top:54px;padding-top:54px;display:grid}.project-highlight--wide{grid-template-columns:minmax(0,.7fr) minmax(420px,1fr)}.project-highlight img{aspect-ratio:16/9;object-fit:cover;width:100%}.intro,.blog-header{width:100%;max-width:900px;margin-bottom:36px}.blog-header{grid-template-columns:minmax(0,1fr) 360px;align-items:end;gap:42px;max-width:none;display:grid}.blog-title{color:var(--color-muted);text-transform:uppercase;margin:0;font-size:13px;font-weight:700}.blog-header p:last-child{color:var(--color-ink-soft)}.blog-featured{border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line);background:0 0;width:100%;margin-bottom:34px;padding:34px 0 38px}.blog-featured article{grid-template-columns:minmax(260px,.52fr) minmax(0,1fr);align-items:center;gap:30px;max-width:980px;display:grid}.blog-featured h2{font-size:38px}.blog-featured__image,.post-card__image{background:var(--color-wash);width:100%;display:block;overflow:hidden}.blog-featured__image{aspect-ratio:16/9}.post-card__image{aspect-ratio:16/9;margin-bottom:16px}.blog-featured__image img,.post-card__image img{object-fit:cover;width:100%;height:100%}.blog-layout,.blog-shell{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:36px;width:100%;min-width:0;display:grid}.post-list{gap:18px;min-width:0;display:grid}.post-list--grid{grid-template-columns:repeat(2,minmax(0,1fr))}.post-card{border:0;border-bottom:1px solid var(--color-line);background:0 0;width:100%;min-width:0;min-height:250px;padding:0 0 24px}.post-card__description{color:var(--color-ink-soft);margin-top:10px}.tag-list{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.tag{background:var(--color-blue);color:#fff;padding:6px 8px;font-size:12px;line-height:1;display:inline-block}.tag--soft{background:var(--color-ink)}.blog-aside,.side-panel{border-top:5px solid var(--color-green);background:var(--color-wash);gap:24px;min-width:0;padding:22px;display:grid}.blog-aside h2,.side-panel h2{font-size:20px}.rss-link{font-weight:700}.stats-strip{background:var(--color-line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0 0 26px;display:grid}.stats-strip>div{background:var(--color-wash);padding:18px}.stats-strip strong,.stats-strip span{display:block}.stats-strip strong{color:var(--color-ink);font-size:28px;line-height:1}.stats-strip span{color:var(--color-muted);margin-top:8px;font-size:14px}.year-grid{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px;display:grid}.year-link{background:var(--color-wash);min-height:58px;color:var(--color-ink);justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}.year-link--current{background:var(--color-ink);color:#fff}.year-link strong{color:var(--color-red);font-size:18px}.year-link--current strong{color:#fff}.about-hero,.about-cover{border-bottom:1px solid var(--color-line);grid-template-columns:minmax(0,1fr) 260px;align-items:center;gap:48px;margin-bottom:48px;padding-bottom:48px;display:grid}.about-cover img{border-left:5px solid var(--color-blue);background:var(--color-wash);justify-self:end;width:260px}.timeline-list{background:var(--color-line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-bottom:48px;display:grid}.timeline-list article{background:#fff;min-height:150px;padding:24px}.timeline-list strong{color:var(--color-red);margin-bottom:10px;font-size:20px;display:block}.timeline-list p{color:var(--color-ink-soft)}.article{max-width:var(--article-width);width:100%;min-width:0;margin:0 auto}.article__header{margin-bottom:34px}.share-links{border-top:1px solid var(--color-line);color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;padding-top:18px;font-size:13px;display:flex}.share-links>span{text-transform:uppercase;margin-right:2px;font-weight:700}.share-links a{border:1px solid var(--color-line);width:34px;height:34px;color:var(--color-ink-soft);justify-content:center;align-items:center;font-weight:700;display:inline-flex}.share-links__icon,.share-links__icon svg{width:17px;height:17px;display:block}.share-links__icon svg{fill:currentColor}.share-links__icon svg path{vector-effect:non-scaling-stroke}.share-links__label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.share-links a:hover,.share-links a:focus{border-color:var(--color-blue);color:var(--color-ink);text-decoration:none}.article__body{width:100%;min-width:0;font-size:18px;line-height:1.72}.article__body>*{max-width:100%}.article__body h2{margin-top:36px}.article__body p{font-size:inherit;margin:0 0 18px}.article__body img{border:1px solid var(--color-line);width:100%;max-width:100%;margin:28px 0}.article__body ul{padding-left:22px}.article__body li{margin-bottom:8px}.article__body pre{background:var(--color-ink);color:#fff;max-width:100%;margin:24px 0;padding:16px;overflow-x:auto}.article__body blockquote{border-left:4px solid var(--color-blue);color:var(--color-ink-soft);margin:28px 0;padding:4px 0 4px 18px}.site-footer{background:var(--color-ink);color:#d8dde1;margin:0}.site-footer__inner{max-width:var(--content-width);margin:0 auto;padding:22px 28px;font-size:14px}@media (width<=1100px){.legacy-feature{gap:30px}.legacy-presentation{grid-template-columns:130px minmax(0,1fr) 210px;gap:22px}.legacy-profile,.legacy-bio>img{width:120px}.legacy-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-layout,.blog-shell{grid-template-columns:minmax(0,1fr) 260px;gap:28px}.post-list--grid{grid-template-columns:1fr}}@media (width<=900px){.home-hero,.home-section--split,.home-river,.project-highlight,.project-highlight--wide,.legacy-feature,.legacy-presentation,.legacy-reading,.legacy-project,.legacy-bio,.blog-header,.blog-layout,.blog-shell,.about-cover,.focus-grid,.post-list--grid,.timeline-list,.legacy-article-grid,.legacy-skill-grid{grid-template-columns:1fr}.legacy-social{justify-content:flex-start}.legacy-presentation{background:var(--color-ink);color:#ddd;padding:24px}.legacy-cert-grid{grid-template-columns:repeat(3,minmax(72px,1fr))}.legacy-feature__image--desktop{display:none}.legacy-feature__image--mobile{margin-bottom:18px;display:block}.hero-portrait{max-width:260px;min-height:auto}.about-cover img{justify-self:start}.legacy-project img{height:auto}.legacy-project__copy{padding:24px}.article{max-width:100%}}@media (width<=760px){html,body{width:100%;min-width:0}.site-nav,.site-footer{width:100%;max-width:100%}.site-nav__inner{flex-direction:row;justify-content:space-between;align-items:center;width:100%;max-width:100%;min-height:64px;margin:0;padding-top:16px;padding-bottom:16px}.site-nav__toggle{flex-direction:column;flex:none;gap:5px;display:inline-flex}.site-nav__overlay{z-index:30;opacity:0;pointer-events:none;background:#252d358a;transition:opacity .18s;display:block;position:fixed;inset:0}.site-nav__links{z-index:40;background:var(--color-ink);flex-flow:column;align-items:stretch;gap:0;width:min(82vw,320px);max-width:100%;padding:22px 20px;transition:transform .22s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-16px 0 38px #0000002e}.site-menu-open{overflow:hidden}.site-menu-open .site-nav__overlay{opacity:1;pointer-events:auto}.site-menu-open .site-nav__links{transform:translate(0)}.site-nav__drawer-header{color:#fff;border-bottom:1px solid #ffffff29;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;padding-bottom:18px;font-weight:700;display:flex}.site-nav__close{border:1px solid #fff3;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;display:inline-flex}.site-nav__link{border-bottom:1px solid #ffffff1f;padding:15px 0;font-size:17px;display:block}.site-nav__language{width:fit-content;min-width:48px;min-height:36px;margin-top:18px;padding:0 14px}.page{width:100%;max-width:100%;margin:0;padding:28px 16px 30px}.site-footer__inner{padding:18px 16px}h1{font-size:34px}.legacy-feature h1{font-size:32px}.lead{font-size:18px}.legacy-feature,.legacy-section{margin-bottom:38px}.legacy-feature__copy .text-right,.legacy-project__copy .text-right{text-align:left}.legacy-presentation{padding:22px 18px}.legacy-social img{width:38px;height:38px}.legacy-reading{gap:18px}.legacy-reading img{width:min(150px,55vw)}.legacy-article-card,.legacy-blue-box,.blog-aside,.side-panel{padding:18px}.legacy-blue-box{min-height:0}.legacy-bio{gap:18px}.legacy-bio>img{width:min(150px,55vw)}.legacy-cert-grid{gap:16px}.home-hero{gap:28px}.home-section--reading,.about-hero,.about-cover,.stats-strip{grid-template-columns:1fr}.blog-featured{width:100%;margin-bottom:28px;padding:24px 0}.blog-featured article{grid-template-columns:1fr;gap:18px;width:100%;max-width:100%}.blog-featured h2,.featured-post h2{font-size:26px}.blog-header{gap:12px;margin-bottom:24px}.blog-header h1,.article__header h1{font-size:30px;line-height:1.16}.blog-layout,.blog-shell{width:100%;min-width:0;max-width:100%;display:block}.post-list{gap:26px;width:100%;max-width:100%}.post-card{width:100%;min-width:0;max-width:100%;min-height:0}.post-card__title{font-size:23px}.blog-aside{width:100%;max-width:100%;margin-top:34px}.legacy-about-header{margin-left:-18px;margin-right:-18px;padding:42px 18px}.legacy-about-header img{width:144px}.legacy-cert-grid{grid-template-columns:repeat(2,minmax(72px,1fr))}.books__year-index{margin-bottom:1.2em;padding-top:0}.books__year-index__total{margin-bottom:.8em}.books__year-index__buttons{display:none}.books__year-index__select-label{color:var(--color-muted);margin:0 0 .35em;font-size:.85em;font-weight:700;display:block}.books__year-index__select{border:1px solid var(--color-blue);width:100%;min-height:44px;color:var(--color-ink);font:inherit;background:#fff;padding:.55em .75em;display:block}#books .books__book .bg-gray{padding:.9em}#books .books__book img{max-width:92px;max-height:140px;margin:.35em .75em .5em 0}#books .books__book__description h3{font-size:1.08em}#books .books__book__description .text-right{text-align:left}.article,.article__header,.article__body{width:100%;min-width:0;max-width:100%}.article{margin-left:0;margin-right:0}.article__body{font-size:18px;line-height:1.72}.article__body img{border-left:0;border-right:0;width:calc(100% + 32px);max-width:none;margin:22px -16px}.article__body h2{margin-top:34px;font-size:25px}.article__body h3{font-size:21px}.article__body ul,.article__body ol{padding-left:20px}}@media (width>=761px) and (width<=1024px){.page{max-width:none;padding-bottom:36px;padding-left:32px;padding-right:32px}.article{max-width:820px}.article__header h1{font-size:38px}.article__body{font-size:18px}.blog-header,.blog-layout,.blog-shell{grid-template-columns:1fr}.blog-aside{margin-top:12px}.post-list--grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.site-nav__inner{gap:14px}.site-nav__links{width:min(86vw,320px)}.site-nav__link,.site-nav__language{min-height:34px}.page{padding-bottom:24px;padding-left:16px;padding-right:16px}h1{font-size:30px}h2{font-size:24px}.legacy-feature h1{font-size:28px}.legacy-section__header{margin-bottom:20px}.legacy-presentation{margin-left:-14px;margin-right:-14px}.legacy-reading img,.legacy-bio>img{width:128px}.legacy-project{margin-left:-14px;margin-right:-14px}.legacy-project__copy{padding:18px 14px}.legacy-about-header{margin-left:-14px;margin-right:-14px}#books .books__book img{float:none;max-width:128px;max-height:190px;margin:0 0 .75em}#books .books__book__description__tag{margin-bottom:.4em}.article__header{margin-bottom:24px}.article__body pre{border-radius:0;margin-left:-16px;margin-right:-16px}}@media (width<=380px){body{font-size:15px}.blog-header h1,.article__header h1{font-size:27px}.article__body{font-size:17px}}
