:root{--ink:#212323;--muted:#69716f;--line:#d9dfdc;--paper:#fffef9;--wash:#eef2ec;--pink:#f33a70;--blue:#137ab5}*{box-sizing:border-box}html{background:#f2f3ee}body{min-width:320px;color:var(--ink);background:var(--paper);font-family:var(--font-atkinson), Arial, sans-serif;margin:0;font-size:18px;line-height:1.55}a{color:var(--blue);text-underline-offset:.16em}a:hover{color:#075b8a}.site-header{border-bottom:1px solid var(--line);background:#aeb0ae}.masthead{width:min(1120px,100% - 3rem);margin:0 auto;padding:2.45rem 0 1.1rem}.wordmark{color:#fffdf1;letter-spacing:-.09em;font-size:clamp(2.2rem,6vw,4.6rem);font-weight:700;line-height:.8;text-decoration:none}nav{width:min(1120px,100% - 3rem);margin:0 auto;display:flex;overflow-x:auto}nav a{color:#eaf3f8;white-space:nowrap;background:linear-gradient(#248fca,#08639c);border-left:1px solid #ffffff2e;padding:.58rem .9rem;font-size:1rem;font-weight:700;text-decoration:none;display:block}nav a:first-child{border-radius:1rem 0 0}nav a:last-child{border-radius:0 1rem 0 0}nav a:hover,nav a.active{color:#fff;background:linear-gradient(#f45b84,#e52459)}.page-grid{grid-template-columns:minmax(0,1fr) 275px;gap:clamp(2.5rem,6vw,5rem);width:min(1120px,100% - 3rem);margin:0 auto;padding:clamp(3.5rem,9vw,7rem) 0;display:grid}.page-grid.without-sidebar{grid-template-columns:minmax(0,780px)}.page-content{min-width:0}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.055em;max-width:14ch;margin-bottom:1.4rem;font-size:clamp(2.6rem,6vw,5.2rem);line-height:.98}h2{font-size:1.7rem;line-height:1.05}h3{margin-bottom:.45rem;font-size:1.3rem}.eyebrow,.post-date{color:var(--muted);letter-spacing:.09em;text-transform:uppercase;font-size:.9rem;font-weight:700}.lead{max-width:37rem;font-size:1.35rem;line-height:1.4}.intro-copy{max-width:39rem}.things{border-top:5px solid var(--ink)}.things>h2{letter-spacing:-.04em;font-size:clamp(2rem,4vw,3rem)}.things-grid{gap:2.25rem;max-width:48rem;display:grid}.things-grid section{border-bottom:1px solid var(--line);padding-bottom:2rem}.things-grid section:last-child{border-bottom:0}.things-grid p{color:#47504e;font-size:1rem}.sidebar{padding-top:.75rem}.sidebar-panel{background:var(--wash);padding:1.1rem 1.25rem 1.25rem;box-shadow:7px 7px #21232312}.sidebar-panel h2{color:#fff;background:var(--pink);text-transform:uppercase;margin:-.55rem -.45rem 1rem;padding:.35rem .55rem;font-size:1.25rem}.sidebar ul{margin:0 0 1.1rem;padding-left:1.15rem}.sidebar li{margin-bottom:.55rem;font-size:.96rem;line-height:1.3}.archive-link,.text-link{font-weight:700}.post-list{border-top:1px solid var(--line)}.post-preview{border-bottom:1px solid var(--line);padding:1.75rem 0}.post-preview h2{margin-bottom:.6rem}.post-preview h2 a{color:var(--ink);text-decoration-thickness:2px}.post-preview p:not(.post-date){max-width:38rem;margin-bottom:.8rem}.post-preview .post-date{margin-bottom:.5rem;font-size:.75rem}.archive-list{border-top:1px solid var(--line);margin:2.5rem 0 0;padding:0;list-style:none}.archive-list li{border-bottom:1px solid var(--line);grid-template-columns:9rem 1fr;gap:1rem;padding:1rem 0;display:grid}.archive-list time{color:var(--muted);font-size:.9rem}.archive-list a{font-weight:700}.placeholder-card{border:1px solid var(--line);border-left:6px solid var(--pink);background:#f8faf5;max-width:39rem;margin-top:2.5rem;padding:1.7rem}.placeholder-card h2{margin-bottom:.5rem}.placeholder-card p{margin:0}.prose{max-width:42rem;margin-top:2.5rem}.prose p{margin-bottom:1.4rem}.prose img{max-width:100%;height:auto}.related-posts{border-top:5px solid var(--ink);max-width:42rem;margin-top:4rem;padding-top:2rem}.related-posts h2{letter-spacing:-.04em;margin-bottom:1.25rem;font-size:clamp(1.8rem,4vw,2.5rem)}.related-posts ul{margin:0;padding:0;list-style:none}.related-posts li{border-top:1px solid var(--line);padding:1.1rem 0}.related-posts li:last-child{border-bottom:1px solid var(--line)}.related-posts h3{margin:.25rem 0;font-size:1.2rem}.related-posts h3 a{color:var(--ink);text-decoration-thickness:2px}.related-posts .post-date{margin:0;font-size:.75rem}.matching-tags{color:var(--muted);margin:.45rem 0 0;font-size:.85rem}.cv-section{border-top:5px solid var(--ink);max-width:46rem;margin-top:3.5rem;padding-top:1.5rem}.cv-section>h2{letter-spacing:-.04em;margin-bottom:1.5rem;font-size:clamp(1.8rem,4vw,2.5rem)}.cv-entry{margin-bottom:2.2rem}.cv-entry h3{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-bottom:.75rem;display:flex}.cv-entry h3 span{color:var(--muted);white-space:nowrap;font-size:.85rem;font-weight:400}.cv-entry h4{margin:1.3rem 0 .5rem;font-size:1.05rem}.cv-entry p{margin-bottom:.75rem}.cv-section ul{margin:0;padding-left:1.25rem}.cv-section li{margin-bottom:.4rem}.portfolio-list{max-width:48rem;margin-top:3.5rem}.portfolio-project{border-top:5px solid var(--ink);padding:2.5rem 0}.portfolio-project:last-child{border-bottom:5px solid var(--ink)}.portfolio-project h2{letter-spacing:-.04em;margin-bottom:1.2rem;font-size:clamp(1.8rem,4vw,2.7rem)}.portfolio-content{color:#47504e}.portfolio-content p{margin-bottom:1rem}.portfolio-content img{border:1px solid var(--line);vertical-align:top;border-radius:0;max-width:min(100%,220px);max-height:360px;margin:1rem .75rem 0 0;display:inline-block}.portfolio-content a{font-weight:700}.app-feature{border-top:5px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(180px,250px);gap:2rem clamp(2rem,6vw,5rem);max-width:50rem;margin-top:3.75rem;padding-top:2rem;display:grid}.app-feature h2{letter-spacing:-.04em;font-size:clamp(2rem,4vw,3rem)}.app-tagline{font-size:1.25rem;font-weight:700;line-height:1.35}.app-screenshot{border:1px solid var(--line);object-fit:contain;border-radius:0;width:100%;max-height:510px;margin:0 auto}.store-links{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.store-links img{border-radius:0;width:auto;height:44px;display:block}@media (width<=600px){.app-feature{grid-template-columns:1fr}.app-screenshot{max-width:250px}}footer{color:#dce1db;text-align:center;background:#2c3432;padding:2.5rem 1.5rem;font-size:.9rem}footer p{margin:0}@media (width<=760px){.masthead,nav,.page-grid{width:min(100% - 2rem,1120px)}.masthead{padding-top:1.8rem}.page-grid{padding-top:3.5rem;display:block}.sidebar{margin-top:3.5rem}.things-grid{grid-template-columns:1fr}.archive-list li{grid-template-columns:1fr;gap:.2rem}}
