
:root{--ink:#181a20;--muted:#666b76;--line:#dfe2e8;--blue:#a63a2b;--wash:#f2f3f6;--paper:#fcfcfd;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure{margin:0}a{color:inherit;text-decoration:none}a:hover{color:var(--blue)}a:focus-visible{outline:3px solid var(--blue);outline-offset:5px}img{display:block;max-width:100%}.wrap{width:min(1080px,calc(100% - 80px));margin:auto}.review-note{background:var(--wash);border-bottom:1px solid var(--line);padding:7px 20px;text-align:center;font-size:11px;color:var(--muted)}.review-note a{margin-left:12px;text-decoration:underline;text-underline-offset:3px}.header{position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--line);z-index:5}.header .wrap{height:72px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:17px;font-weight:750;letter-spacing:-.05em}.brand span{color:var(--blue)}nav{display:flex;align-items:center;gap:26px;font-size:13px}.nav-contact{padding:9px 15px;background:var(--ink);color:white;border-radius:4px}.nav-contact:hover{background:var(--blue);color:white}.eyebrow{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.hero{padding:62px 0 44px}.hero-inner{display:grid;grid-template-columns:1fr 245px;align-items:center;gap:48px}.hero h1{font-size:clamp(42px,5.5vw,68px);font-weight:750;letter-spacing:-.065em;line-height:1.04;margin-top:16px;max-width:720px}.hero h1 span{color:var(--blue)}.hero .intro{font-size:21px;color:var(--muted);letter-spacing:-.02em;margin-top:20px}.hero-links{display:flex;gap:24px;align-items:center;margin-top:27px}.link{font-size:13px;font-weight:550;display:inline-flex;gap:18px;align-items:center;min-height:42px}.link.blue{color:var(--blue)}.app-signature{border-left:1px solid var(--line);padding-left:36px}.icon-strip{display:flex;gap:12px}.icon-strip img{width:52px;height:52px;border:1px solid #0001;border-radius:12px}.app-signature p{font-size:12px;line-height:1.7;color:var(--muted);margin-top:15px}.hero-foot{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:42px;padding-top:17px;font-size:12px;color:var(--muted)}.hero-foot strong{color:var(--ink);font-weight:500}.section{padding:52px 0 56px;border-top:1px solid var(--line)}.wash{background:var(--wash)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:32px;margin-bottom:28px}.section-head h2{font-size:34px;font-weight:700;line-height:1.15;letter-spacing:-.045em;margin-top:9px}.section-head>p{font-size:13px;color:var(--muted);max-width:270px}.work-grid{display:grid;grid-template-columns:1.55fr 1fr;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--paper)}.work-card{min-width:0;display:flex;flex-direction:column}.work-card+.work-card{border-left:1px solid var(--line)}.work-art{height:232px;border-bottom:1px solid var(--line)}.creative-art{position:relative;background:#22232b;display:flex;align-items:center;justify-content:center;gap:18px;overflow:hidden;padding:18px 32px}.creative-art img{width:auto;height:195px;border-radius:3px}.image-caption{position:absolute;left:14px;bottom:9px;font-size:9px;color:#cacbd3}.quality-art{background:#e9ecf2;display:flex;justify-content:center;align-items:center;position:relative}.quality-symbol{display:grid;grid-template-columns:repeat(2,42px);gap:7px;transform:rotate(-8deg)}.quality-symbol i{width:42px;height:42px;border:1px solid #b6bfce;background:#f7f8fb}.quality-symbol i:last-child{border-color:var(--blue);background:#dde6ff}.quality-art .image-caption{color:#71798a}.work-copy{padding:25px 27px 23px;display:flex;flex-direction:column;flex:1}.project-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.project-heading img{width:34px;height:34px;border-radius:8px}.work-copy h3{font-size:25px;letter-spacing:-.04em;line-height:1.2;margin-top:10px}.work-copy .description{font-size:15px;color:var(--muted);margin-top:10px;max-width:400px}.card-bottom{margin-top:auto;padding-top:23px}.card-link{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:4px;padding:11px 13px;font-size:12px;font-weight:550}.card-link:hover{border-color:var(--blue)}.status{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:13px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.status strong{color:var(--ink);font-weight:500}.apps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);border-radius:7px;overflow:hidden}.app-card{padding:22px;display:flex;flex-direction:column;min-width:0;background:var(--paper)}.app-card+.app-card{border-left:1px solid var(--line)}.app-art{display:flex;align-items:center;justify-content:center;gap:9px;height:230px;background:#ecf1eb;border-radius:3px;overflow:hidden;padding:18px 12px}.app-art img{min-width:0;width:auto;max-width:47%;height:194px;object-fit:contain}.app-art.plot{background:#f1f1e5}.app-art.time{background:#eeeaf4}.app-name{display:flex;align-items:center;gap:10px;margin-top:21px}.app-name img{height:34px;width:34px;border-radius:8px}.app-name h3{font-size:18px;line-height:1.2;letter-spacing:-.035em}.app-card p{font-size:13px;color:var(--muted);margin:12px 0 21px;line-height:1.6}.app-card .card-link{margin-top:auto}.other-layout{display:grid;grid-template-columns:270px 1fr;gap:60px}.other-layout .section-head{display:block;margin:0}.other-layout .section-head p{font-size:14px;color:var(--muted);margin-top:16px;max-width:230px}.other-row{display:grid;grid-template-columns:42px 1fr 20px;gap:20px;align-items:center;border-bottom:1px solid var(--line);padding:22px 0}.other-row:first-child{border-top:1px solid var(--line)}.other-row h3{font-size:17px;letter-spacing:-.025em;font-weight:650}.other-row p{font-size:13px;color:var(--muted);margin-top:5px}.other-icon{width:42px;height:42px;background:#e7eaf0;border:1px solid #d6dbe4;display:grid;place-items:center;font-family:ui-monospace,monospace;font-size:12px;color:#606b7e;border-radius:3px}.other-icon img{width:100%;height:100%;object-fit:cover}.arrow{color:var(--blue)}.closing{padding:48px 0 35px}.closing-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.closing h2{font-size:29px;letter-spacing:-.045em;line-height:1.25;margin-top:12px}.closing p:not(.eyebrow){font-size:14px;color:var(--muted);margin-top:14px;max-width:460px}.closing strong{font-weight:550;color:var(--ink)}.contact-link{display:inline-flex;align-items:center;gap:28px;margin-top:18px;color:var(--blue);border-bottom:1px solid #d6aaa3;padding:7px 0;font-size:16px;font-weight:550}.footer{border-top:1px solid var(--line);margin-top:44px;padding-top:20px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted)}.footer div{display:flex;gap:20px}.skip{position:fixed;top:-100px;padding:12px;background:var(--ink);color:white;z-index:20}.skip:focus{top:10px;left:10px}
@media(max-width:900px){.wrap{width:calc(100% - 48px)}.hero-inner{grid-template-columns:1fr 195px;gap:24px}.app-signature{padding-left:22px}.icon-strip{gap:8px}.icon-strip img{width:45px;height:45px}.work-grid{grid-template-columns:1.2fr 1fr}.app-card{padding:16px}.app-art{height:195px;padding:12px 6px;gap:5px}.app-art img{height:168px}.other-layout{grid-template-columns:220px 1fr;gap:30px}}
@media(max-width:650px){.wrap{width:calc(100% - 40px)}.header .wrap{height:64px;gap:14px}.brand{font-size:15px}nav{gap:15px;font-size:12px}nav a:nth-child(2){display:none}.nav-contact{padding:8px 11px}.hero{padding:39px 0 28px}.hero-inner{display:block}.hero h1{font-size:46px;max-width:360px}.hero .intro{font-size:18px;max-width:290px}.hero-links{margin-top:20px}.app-signature{display:none}.hero-foot{display:block;line-height:1.8;margin-top:27px;padding-top:16px}.hero-foot>span{display:block}.hero-foot>span+span{margin-top:5px}.section{padding:34px 0 38px}.section-head{display:block;margin-bottom:23px}.section-head h2{font-size:29px}.section-head>p{margin-top:12px}.work-grid{grid-template-columns:1fr}.work-card+.work-card{border-left:0;border-top:1px solid var(--line)}.work-art{height:205px}.creative-art img{height:175px}.quality-art{height:135px}.quality-symbol{grid-template-columns:repeat(2,28px);gap:5px}.quality-symbol i{width:28px;height:28px}.work-copy{padding:22px}.work-copy h3{font-size:24px}.work-copy .description{font-size:14px}.apps-grid{grid-template-columns:1fr}.app-card{padding:22px}.app-card+.app-card{border-left:0;border-top:1px solid var(--line)}.app-art{height:235px;padding:18px;gap:15px}.app-art img{height:205px}.app-card p{margin-bottom:17px}.other-layout{grid-template-columns:1fr;gap:26px}.other-layout .section-head p{max-width:none}.other-row{gap:13px;padding:19px 0;grid-template-columns:38px 1fr 15px}.other-icon{width:38px;height:38px}.other-row h3{font-size:16px}.other-row p{font-size:12px}.closing{padding:34px 0 26px}.closing-grid{grid-template-columns:1fr;gap:32px}.closing h2{font-size:27px}.footer{margin-top:32px;align-items:start;gap:20px}.footer div{gap:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Broader engineering portfolio: equal prominence for automation and open source. */
.hero-inner{display:block}.hero h1{max-width:none}.hero .intro{color:var(--ink);max-width:800px}.intro-detail{max-width:720px;font-size:15px;line-height:1.8;color:var(--muted);margin-top:16px}.hero-foot{margin-top:30px}
.automation-feature{display:grid;grid-template-columns:1fr 380px;align-items:center;gap:70px}.automation-story h3{font-size:27px;line-height:1.3;letter-spacing:-.035em}.automation-story>p{font-size:15px;line-height:1.75;color:var(--muted);margin:17px 0 14px;max-width:480px}.shorts{display:grid;grid-template-columns:1fr 1fr;gap:16px}.shorts img{width:100%;height:235px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}.shorts span{display:block;font-size:12px;line-height:1.5;margin-top:10px;font-weight:500}.tools-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--paper)}.tools-grid article{padding:28px;display:flex;flex-direction:column}.tools-grid article+article{border-left:1px solid var(--line)}.tools-grid h3{font-size:24px;letter-spacing:-.035em;margin-top:13px}.tools-grid article>p:not(.eyebrow){font-size:14px;line-height:1.7;color:var(--muted);margin:12px 0 24px}.tools-grid .card-link{margin-top:auto}.experiment-links{margin-top:28px}.experiment-links a{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.experiment-links .eyebrow{margin-bottom:7px}.experiment-links a span{color:var(--blue)}
@media(max-width:900px){.automation-feature{grid-template-columns:1fr 300px;gap:32px}.shorts img{height:210px}}
@media(max-width:650px){.hero .intro{max-width:340px;font-size:20px}.intro-detail{font-size:14px;line-height:1.75}.hero h1{font-size:44px}.automation-feature{grid-template-columns:1fr;gap:24px}.automation-story h3{font-size:24px}.automation-story>p{font-size:14px}.shorts{max-width:380px}.shorts img{height:auto;aspect-ratio:9/16}.tools-grid{grid-template-columns:1fr}.tools-grid article{padding:23px}.tools-grid article+article{border-left:0;border-top:1px solid var(--line)}nav a:nth-child(3){display:none}.hero-links{flex-wrap:wrap;gap:12px 24px}}

.automation-grid .shorts{max-width:320px;margin:0 0 25px;gap:16px}.automation-grid .shorts img{height:180px;width:100%;object-fit:contain;background:#f0f1f4}.automation-grid .shorts span{font-size:11px}.lab-scope{margin:0 0 14px}.lab-scope>div{padding:15px 0;border-top:1px solid var(--line)}.lab-scope dt{font-size:14px;font-weight:550}.lab-scope dd{font-size:13px;color:var(--muted);margin:5px 0 0}.automation-grid article>.lab-note{font-size:12px;margin:0 0 23px;color:var(--muted)}
@media(max-width:650px){.automation-grid .shorts img{height:190px;aspect-ratio:auto}}

.experience-roles{margin-top:23px}.experience-roles article{border-top:1px solid var(--line);padding:18px 0}.experience-roles h3{font-size:16px;letter-spacing:-.02em}.closing .experience-roles .role-company{margin-top:5px;font-size:13px;color:var(--ink)}.role-company span{display:inline-block;color:var(--muted);font-size:11px;margin-left:12px}.experience-apps{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:12px}.experience-apps a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:12px}.experience-apps img{width:25px;height:25px;border-radius:5px}.footer .footer-socials{flex-wrap:wrap;gap:8px 22px}.footer-socials a{display:inline-flex;align-items:center;min-height:44px}.footer{align-items:center}
@media(max-width:650px){.footer{flex-direction:column;align-items:flex-start;gap:12px}.footer .footer-socials{gap:8px 22px}.role-company span{margin-left:8px}}
.footer .footer-socials{gap:8px}.footer-socials a{justify-content:center;width:44px;height:44px;border-radius:4px;color:var(--muted)}.footer-socials a:hover{color:var(--blue);background:var(--wash)}.footer-socials svg{display:block;flex-shrink:0}

.services-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--paper)}.services-grid article{display:flex;flex-direction:column;padding:27px;min-width:0}.services-grid article:nth-child(even){border-left:1px solid var(--line)}.services-grid article:nth-child(n+3){border-top:1px solid var(--line)}.service-number{font:11px ui-monospace,SFMono-Regular,monospace;color:var(--muted);margin-bottom:13px}.services-grid h3{font-size:20px;letter-spacing:-.03em;line-height:1.3}.services-grid p{font-size:14px;color:var(--muted);line-height:1.7;margin:12px 0 18px}.service-example{font-size:12px;color:var(--blue);margin-top:auto;min-height:44px;display:flex;align-items:center;gap:10px}.service-example:hover{text-decoration:underline;text-underline-offset:4px}
@media(max-width:650px){.services-grid{grid-template-columns:1fr}.services-grid article{padding:23px}.services-grid article:nth-child(even){border-left:0}.services-grid article+article{border-top:1px solid var(--line)}}

.writing-entry{display:grid;grid-template-columns:150px minmax(0,1fr) 120px;gap:28px;align-items:center;padding:28px;border:1px solid var(--line);border-radius:6px;background:var(--paper)}.writing-entry:hover{border-color:#a4b7e8}.writing-meta{display:flex;flex-direction:column;align-self:start;gap:8px;font-size:11px;color:var(--muted)}.writing-meta span:first-child{color:var(--blue);font-family:ui-monospace,SFMono-Regular,monospace;letter-spacing:.05em;text-transform:uppercase}.writing-copy h3{font-size:22px;line-height:1.35;letter-spacing:-.035em}.writing-copy p{font-size:14px;line-height:1.7;color:var(--muted);margin-top:12px}.writing-read{display:inline-flex;gap:18px;color:var(--blue);font-size:12px;font-weight:550;margin-top:18px}.writing-mark{display:flex;gap:6px;align-items:center;justify-content:center;height:92px}.writing-mark span{width:30px;height:57px;border:1px solid #bdc8df;background:#f0f3fa}.writing-mark span:nth-child(2){height:73px;border-color:#7e9cde;background:#e6edfc}
@media(max-width:900px){.writing-entry{grid-template-columns:110px minmax(0,1fr);gap:22px}.writing-mark{display:none}}
@media(max-width:650px){.writing-entry{grid-template-columns:1fr;padding:23px;gap:15px}.writing-meta{flex-direction:row;flex-wrap:wrap;gap:10px 18px}.writing-copy h3{font-size:20px}.header .wrap{height:auto;min-height:64px;flex-wrap:wrap;padding-block:12px;gap:8px}.header nav{width:100%;justify-content:space-between;gap:12px}.header nav .nav-writing{display:block}.header nav .nav-open-source,.header nav .nav-about{display:none}html{scroll-padding-top:120px}}
/* Editorial review: a personal introduction and independent project columns. */
:root{--paper:#fff;--wash:#fff;--ink:#202124;--muted:#686b72;--line:#e4e5e8}
.wrap{width:min(880px,calc(100% - 64px))}
.header{position:static}.header .wrap{height:74px}.brand{letter-spacing:-.04em;font-size:18px}nav{font-size:14px;gap:27px}.nav-contact{background:none;color:var(--ink);padding:0;border-radius:0}.nav-contact:hover{background:none;color:var(--blue)}
.review-note{font-size:10px;background:#f7f8fa}
.hero{padding:48px 0 34px}.hero h1{font-size:clamp(40px,5vw,60px);margin:0;letter-spacing:-.055em;line-height:1.12}.hero .intro{font-size:21px;line-height:1.6;margin-top:23px;max-width:none}.intro-detail{font-size:16px;line-height:1.8;max-width:810px;margin-top:13px;color:#555961}.hero-links{margin-top:20px;gap:30px}.hero-links .link{font-size:14px;color:var(--blue);text-decoration:underline;text-underline-offset:5px}
.section{padding:32px 0;border:0}.section-head{align-items:center;gap:20px;margin-bottom:24px}.section-head>div{display:flex;align-items:center;flex:1;gap:24px}.section-head>div:after{content:"";height:1px;background:var(--line);flex:1}.section-head h2{font-size:28px;letter-spacing:-.035em;margin:0}.section-head>p{display:none}.section-head>.link{font-size:12px}
.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;border:0;border-radius:0;overflow:visible}.work-card+.work-card{border:0}.work-art{height:264px;border:1px solid var(--line);border-radius:4px}.creative-art{padding:18px 18px 27px;gap:14px}.creative-art img{height:219px;max-width:45%;object-fit:contain}.image-caption{font-size:9px;bottom:7px}.work-copy{padding:20px 0 0}.work-copy h3{font-size:24px;margin-top:9px}.work-copy .description{font-size:15px;line-height:1.65}.card-bottom{padding-top:15px}.card-link{border:0;border-radius:0;padding:7px 0;justify-content:flex-start;gap:14px;color:var(--blue);font-size:13px}.card-link:hover{text-decoration:underline;text-underline-offset:4px}.status{border:0;padding:7px 0;font-size:12px;justify-content:flex-start;gap:16px}
.quality-art{background:#f2f4f8;justify-content:flex-start;padding:28px}.quality-title>span{font:10px ui-monospace,monospace;letter-spacing:.12em;color:var(--muted)}.quality-title strong{display:block;font-size:48px;line-height:.98;letter-spacing:-.06em;margin:19px 0 15px;font-weight:650}.quality-title strong span{color:var(--blue)}.quality-title small{font-size:13px;color:var(--muted)}
.tools-grid{border:0;border-radius:0;gap:30px;overflow:visible}.tools-grid article{padding:20px 0;border-top:1px solid var(--line)}.tools-grid article+article{border-left:0}.tools-grid h3{font-size:23px}.tools-grid article>p:not(.eyebrow){font-size:14px;margin-bottom:15px}.automation-grid article{border-top:0;padding-top:0}.automation-grid .shorts{max-width:none;gap:14px}.automation-grid .shorts img{height:225px;background:#f5f5f6;border:0}.lab-scope>div{padding:12px 0}.experiment-links{margin-top:16px}
.apps-grid{border:0;border-radius:0;gap:24px;overflow:visible}.app-card{padding:0}.app-card+.app-card{border-left:0}.app-art{height:215px;padding:12px 8px;gap:8px;border:1px solid var(--line)}.app-art img{height:185px}.app-name h3{font-size:17px}.app-card p{font-size:14px}.writing-entry{border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;border-radius:0;grid-template-columns:120px 1fr}.writing-mark{display:none}.writing-copy h3{font-size:21px}
.services-grid{border:0;border-radius:0;gap:0 30px}.services-grid article{padding:22px 0;border-top:1px solid var(--line)}.services-grid article:nth-child(even){border-left:0}.service-number{display:none}.services-grid h3{font-size:18px}.closing-grid{gap:40px}.closing h2{font-size:28px}.closing{padding-top:38px}.footer{margin-top:28px}
@media(max-width:650px){.wrap{width:calc(100% - 40px)}.header .wrap{height:auto;min-height:72px;padding-block:14px;gap:14px}.header nav{width:auto;flex-wrap:wrap;gap:18px;font-size:12px}.header nav .nav-about{display:block}.header nav .nav-contact{display:none}.hero{padding:34px 0 22px}.hero h1{font-size:42px;max-width:360px}.hero .intro{font-size:19px;max-width:none;margin-top:20px}.intro-detail{font-size:15px;line-height:1.75}.hero-links{gap:24px; margin-top:17px}.section{padding:26px 0}.section-head{margin-bottom:20px}.section-head h2{font-size:25px}.section-head>div{gap:16px}.section-head>.link{display:none}.work-grid,.tools-grid,.apps-grid,.services-grid{grid-template-columns:1fr;gap:30px}.work-card+.work-card{border:0}.work-art{height:260px}.creative-art img{height:216px}.quality-art{height:230px}.work-copy{padding-top:18px}.tools-grid article{padding:18px 0 0}.automation-grid article{padding:0}.apps-grid{gap:32px}.app-art{height:260px}.app-art img{height:228px}.app-card{padding:0}.app-card+.app-card{border:0}.automation-grid .shorts img{height:240px}.services-grid{gap:0}.services-grid article{padding:20px 0}.writing-entry{grid-template-columns:1fr;gap:15px}.closing-grid{grid-template-columns:1fr;gap:28px}.footer{align-items:flex-start}.review-note a{margin-left:8px}}
@media(min-width:651px) and (max-height:760px){.hero{padding-top:28px;padding-bottom:22px}.hero h1{font-size:48px}.hero .intro{margin-top:16px;font-size:19px}.intro-detail{font-size:15px;line-height:1.65}.hero-links{margin-top:10px}.section{padding-top:24px}}

/* Readability pass: fewer labels, comfortable text, and a consistent reading order. */
:root{--ink:#202124;--muted:#64696e;font-family:"Helvetica Neue",Arial,sans-serif}
body{font-size:17px;line-height:1.7}.wrap{width:min(864px,calc(100% - 64px))}
h1,h2,h3{letter-spacing:-.025em!important}.brand{letter-spacing:-.015em;font-size:18px}.header .wrap{height:68px}nav{font-size:16px;color:var(--muted)}
.hero{padding:48px 0 28px}.hero h1{font-size:58px;font-weight:700;line-height:1.15;max-width:none}.hero .intro{font-size:19px;line-height:1.8;color:var(--ink);max-width:none;margin-top:26px}.hero .intro a{color:var(--blue);text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px}.hero-links{margin-top:24px;gap:28px}.hero-links .link{font-size:16px;font-weight:400}
.section{padding:28px 0}.section-head{margin-bottom:26px}.section-head h2{font-size:31px;font-weight:650}.section-head>div:after{height:2px;background:#dededc}.work-grid,.tools-grid{gap:32px}.work-copy h3,.tools-grid h3{font-size:25px;font-weight:650;margin:0}.work-copy .description,.tools-grid article>p:not(.eyebrow):not(.project-type):not(.lab-note),.app-card p{font-size:17px;line-height:1.7;color:var(--ink);margin-top:10px}.project-type,.tools-grid article>p.project-type{font-size:15px;font-style:italic;color:var(--muted);margin:3px 0 0;line-height:1.6}.card-link{font-size:15px;font-weight:400;min-height:44px;text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px}.card-bottom{padding-top:8px}.status{font-size:14px;gap:4px 15px}.status strong{font-weight:400}.eyebrow{font-family:inherit;font-size:14px;text-transform:none;letter-spacing:0;font-weight:400}.tools-grid article{padding-top:22px}.automation-grid article{padding-top:0}.automation-grid article>.lab-note{font-size:15px;line-height:1.7;margin:4px 0 12px}.automation-grid .shorts span{font-size:14px;font-weight:400}.automation-grid .shorts{margin-top:6px}.experiment-links a{font-size:15px}.tools-grid .card-link{margin-top:0}.apps-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.app-art{height:264px;padding:18px;gap:16px}.app-art img{height:225px}.app-name h3{font-size:23px;font-weight:650}.app-name img{width:29px;height:29px}.app-card p{margin-bottom:8px}.writing-entry{grid-template-columns:1fr;gap:8px}.writing-meta{flex-direction:row;gap:16px;font-size:14px}.writing-meta span:first-child{font-family:inherit;font-size:14px;text-transform:none;letter-spacing:0;color:var(--muted)}.writing-copy h3{font-size:23px;font-weight:600}.writing-copy p{font-size:17px;color:var(--ink);line-height:1.7}.writing-read{font-size:15px;font-weight:400}.services-grid h3{font-size:20px;font-weight:600}.services-grid p{font-size:16px;color:var(--ink)}.service-example{font-size:14px}.closing p:not(.eyebrow){font-size:16px}.experience-roles h3{font-size:18px}.closing .experience-roles .role-company{font-size:16px}.role-company span{font-size:13px}.experience-apps a{font-size:14px}.footer{font-size:13px}
@media(max-width:650px){.wrap{width:calc(100% - 40px)}.header .wrap{height:auto;gap:10px}.brand{font-size:17px}.header nav{font-size:14px;gap:20px}.hero{padding:32px 0 22px}.hero h1{font-size:42px;max-width:340px}.hero .intro{font-size:17px;line-height:1.8;margin-top:20px}.hero-links{margin-top:18px}.section-head h2{font-size:27px}.section{padding:25px 0}.apps-grid{grid-template-columns:1fr}.work-copy .description,.tools-grid article>p:not(.eyebrow):not(.project-type):not(.lab-note),.app-card p{font-size:16px}.work-copy h3,.tools-grid h3{font-size:23px}.writing-copy p{font-size:16px}.writing-entry{padding-block:20px}.section-head>div{gap:18px}}

/* Shared navigation and detail-page layout. */
.header nav a{display:inline-block!important;padding:8px 0;color:var(--muted)}.header nav a[aria-current="page"]{color:var(--blue)}.header nav a:hover{color:var(--ink)}.page-intro{padding:44px 0 14px}.page-intro h1{font-size:42px;line-height:1.2;font-weight:650}.page-intro p{font-size:18px;line-height:1.8;max-width:760px;margin-top:18px}.page-intro a,.browse a,.page-links a{color:var(--blue);text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px}.browse{padding:18px 0 30px}.page-links{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;padding:28px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.page-links h2{font-size:20px}.page-links p{font-size:15px;color:var(--muted);margin-top:8px}.site-end{margin-top:30px;padding-bottom:24px}.site-end .footer{margin-top:0}.about-detail .closing-grid{grid-template-columns:1.2fr 1fr}.review-note{font-size:11px}.page-intro+.section{padding-top:26px}
@media(max-width:650px){.header .wrap{justify-content:space-between}.header nav{width:auto;gap:18px}.page-intro{padding-top:30px}.page-intro h1{font-size:36px}.page-intro p{font-size:17px}.page-links{grid-template-columns:1fr;gap:24px}.about-detail .closing-grid{grid-template-columns:1fr}.review-note a{display:inline-block}.hero h1{font-size:42px}}

/* Detail pages share the homepage's editorial rhythm. */
.about-work .experience-roles{margin-top:0}.about-work .experience-roles article{padding:0 0 30px;margin-bottom:28px;border:0;border-bottom:1px solid var(--line)}.about-work .experience-roles h3{font-size:24px;font-weight:650}.about-work .role-company{font-size:16px;color:var(--muted);font-style:italic;margin-top:5px}.about-work article>p:not(.role-company){font-size:17px;margin-top:12px}.about-work .experience-apps{margin-top:10px}.about-prose{font-size:17px;line-height:1.8}.about-prose h2{font-size:29px}.about-prose p+p,.about-prose h2+p{margin-top:16px}.about-prose a{color:var(--blue);text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px}.about-page .services-grid{display:block}.about-page .services-grid article{padding:20px 0}.about-page .services-grid p{font-size:17px;max-width:760px}.repository-list{display:block}.repository-list article{display:grid;grid-template-columns:1fr auto;gap:0 24px;padding:21px 0;border-top:1px solid var(--line)}.repository-list article h3{font-size:22px}.repository-list article .project-type{grid-column:1}.repository-list article>p:not(.project-type){grid-column:1;margin-bottom:0!important}.repository-list article .card-link{grid-column:2;grid-row:1 / span 3;align-self:center}.repository-list article:last-child{border-bottom:1px solid var(--line)}
@media(max-width:650px){.repository-list article{display:flex}.repository-list article .card-link{align-self:flex-start;margin-top:8px}.about-work .experience-roles h3{font-size:23px}.about-work article>p:not(.role-company),.about-prose,.about-page .services-grid p{font-size:16px}}

/* Homepage highlights keep the full catalogue on Projects. */
.home-feature{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}.home-film{display:flex;justify-content:center;gap:14px;background:#f5f3ef;padding:18px;border-radius:4px;overflow:hidden}.home-film img{width:calc(50% - 7px);height:242px;object-fit:contain}.home-feature h3,.home-writing h3{font-size:25px;font-weight:650;line-height:1.35}.home-feature p:not(.project-type){font-size:17px;line-height:1.7;margin:12px 0}.home-apps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.home-apps article{display:flex;flex-direction:column;align-items:flex-start}.home-apps img{border-radius:11px;border:1px solid var(--line)}.home-apps h3{font-size:20px;font-weight:650;line-height:1.35;margin-top:15px}.home-apps p{font-size:16px;line-height:1.7;margin:10px 0;color:var(--muted)}.home-apps .card-link{margin-top:auto}.home-repositories{list-style:none;padding:0;margin:0 0 10px}.home-repositories li{padding:17px 0;border-bottom:1px solid var(--line)}.home-repositories li:first-child{border-top:1px solid var(--line)}.home-repositories li>a{font-size:18px;font-weight:600;color:var(--ink)}.home-repositories li>a:hover{color:var(--blue);text-decoration:underline;text-underline-offset:4px}.home-repositories p{font-size:16px;line-height:1.7;color:var(--muted);margin-top:4px}.home-writing{padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.home-writing h3{margin:8px 0 10px;font-size:23px}.home-writing h3 a:hover{text-decoration:underline;text-underline-offset:4px}.home-writing>p:last-child{font-size:17px;line-height:1.7;color:var(--muted)}.home-contact p{font-size:17px;line-height:1.8;max-width:760px}.home-contact-links{display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:15px}
@media(max-width:650px){.home-feature{grid-template-columns:1fr;gap:22px}.home-film img{height:225px}.home-apps{grid-template-columns:1fr;gap:26px}.home-apps article{display:grid;grid-template-columns:48px 1fr;gap:0 16px;padding-bottom:20px;border-bottom:1px solid var(--line)}.home-apps img{grid-column:1;grid-row:1 / span 3}.home-apps h3{grid-column:2;margin-top:0}.home-apps p,.home-apps .card-link{grid-column:2}.home-feature p:not(.project-type),.home-writing>p:last-child,.home-contact p{font-size:16px}.home-writing h3{font-size:21px}}

/* Give the homepage's first project row more visual space. */
@media(min-width:651px){
  .home-page #work .work-art{height:var(--first-work-art-height,328px)}
  .home-page #work .creative-art{padding:20px 18px 30px;gap:18px}
  .home-page #work .creative-art img{height:100%;max-height:100%;object-fit:contain}
  .home-page #work .quality-art{padding:32px}
  .home-page #work .quality-title strong{font-size:56px;margin-block:22px 18px}
}

@media(min-width:651px){
  .home-page #work .work-copy{padding-top:28px}
  .home-page #work .quality-title strong{font-size:clamp(36px,4vw,56px)}
}

.footnotes-socials{display:flex;flex-wrap:nowrap;align-items:center;gap:24px}.footnotes-socials .card-link{white-space:nowrap;flex:0 0 auto}

.footnotes-socials{display:block!important;white-space:nowrap;margin-top:16px!important}.footnotes-socials a{display:inline!important;color:var(--blue);font-size:15px;font-weight:400;text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px}.footnotes-socials a+a{margin-left:24px}

.app-card .app-name+p{margin-top:9px}

/* Native platform mark sits beside each app title. */
.app-card .app-name{align-items:center;gap:10px}
.app-card .app-name h3{flex:1;min-width:0}
.app-card .app-name .platform-label{display:inline-flex;align-items:center;flex:0 0 auto;gap:5px;margin:0 0 0 auto;padding:0;border:0;border-radius:0;background:none;color:var(--muted);font-size:13px;font-weight:500;white-space:nowrap}
.app-card .app-name .platform-label img{display:block;width:14px;height:14px;border:0;border-radius:0}

/* Personal video experiments have their own place on the homepage. */
.home-channel .section-head{align-items:center;margin-bottom:10px}
.home-channel .channel-link{color:var(--blue);font-size:16px;text-decoration:underline;text-decoration-color:#d6aaa3;text-underline-offset:4px;white-space:nowrap}
.home-channel .channel-intro{color:var(--muted);font-size:17px;line-height:1.7;margin-bottom:22px}
.channel-videos{border-top:1px solid var(--line)}
.channel-videos>a{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px 0;border-bottom:1px solid var(--line)}
.channel-videos>a:hover .channel-video-copy strong{color:var(--blue);text-decoration:underline;text-underline-offset:4px}
.channel-play{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;font-size:15px;padding-left:2px;color:var(--blue)}
.channel-video-copy{display:grid;gap:2px}.channel-video-copy small{color:var(--muted);font-size:14px}.channel-video-copy strong{font-size:19px;font-weight:600;line-height:1.4}.channel-arrow{color:var(--blue);font-size:19px}
@media(max-width:650px){.home-channel .section-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px 20px}.home-channel .channel-intro{font-size:16px}.channel-videos>a{grid-template-columns:38px minmax(0,1fr) auto;gap:12px}.channel-play{width:38px;height:38px}.channel-video-copy strong{font-size:17px}}

/* Buildgrain uses its real Mac app identity and a complete app screenshot. */
.buildgrain-art{position:relative;display:flex;align-items:center;justify-content:center;padding:18px;background:#272525;overflow:hidden}
.buildgrain-art img{display:block;width:100%;height:100%;object-fit:contain;border-radius:4px;filter:drop-shadow(0 7px 12px #1b17151c)}
.buildgrain-caption{position:absolute;left:16px;bottom:10px;color:#e7dcd5;font-size:10px;letter-spacing:.01em;text-shadow:0 1px 4px #000}
.work-app-title{display:flex;align-items:center;gap:10px}.work-app-title img{width:34px;height:34px;flex:none;object-fit:contain}.work-app-title h3{margin:0}
@media(max-width:650px){.buildgrain-art{height:220px!important;padding:12px}.work-app-title img{width:30px;height:30px}}
