/* A quieter, written portfolio. Light paper is the default; dark is its ink inverse. */
html[data-theme=light]{--bg:#f7f5f0;--panel:#f7f5f0;--panel2:#efede7;--line:#c9c5bd;--soft-line:#e2ded6;--text:#24231f;--muted:#66635d;--red:#ad4038;--body:'IBM Plex Mono',Consolas,monospace;--display:var(--body)}
html[data-theme=dark]{--bg:#171715;--panel:#171715;--panel2:#242420;--line:#55534d;--soft-line:#3b3934;--text:#e9e6dc;--muted:#aaa69c;--red:#e47168;--body:'IBM Plex Mono',Consolas,monospace;--display:var(--body)}
body,html[data-theme=light] body{background:var(--bg);color:var(--text);font-family:var(--body)}
body::before,html[data-theme=light] body::before{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 35px,#ad403806 36px);background-size:auto;mask-image:none;opacity:.7}
.site-shell{max-width:1440px;border:0}
.eyebrow{font:400 11px var(--body);letter-spacing:0;text-transform:lowercase}.red-rule{width:18px;height:1px}.project-card::before{display:none}
.site-header,html[data-theme=light] .site-header{height:78px;padding:0 4.5vw;background:var(--bg);border-bottom:1px solid var(--line);gap:27px}
.brand{font:500 17px var(--body);letter-spacing:-.07em}.brand-glyph{display:none}.brand .red{color:var(--red)}
.site-header nav{gap:29px;margin-left:auto;font:400 12px var(--body)}
.site-header nav a,.site-footer a{text-transform:lowercase;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:6px}
.site-header nav a:hover,.site-footer a:hover{text-decoration-color:var(--red)}
.header-status{display:none}.header-contact{background:none;color:var(--red);border:0;border-bottom:1px solid var(--red);padding:5px 0;font:500 11px var(--body);letter-spacing:0;text-transform:lowercase}.header-contact:hover{background:none;color:var(--text)}
.theme-toggle{min-width:0;min-height:0;padding:5px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--muted);font:400 11px var(--body);letter-spacing:0;text-transform:lowercase}.theme-toggle:hover{border-color:var(--red)}
.hero,html[data-theme=light] .hero{background:none;border-bottom:1px solid var(--line)}
.hero-grid{min-height:610px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(240px,.7fr);gap:5vw;align-items:center;padding:60px 4.5vw 70px}
.hero-copy{padding:0;max-width:780px;display:block}.hero-copy .eyebrow{display:block;color:var(--red);font:400 11px var(--body);letter-spacing:.03em;text-transform:lowercase}
.hero h1{font:400 clamp(48px,5.2vw,76px)/1.16 var(--body);letter-spacing:-.08em;margin:24px 0 32px;max-width:780px}.hero h1 .red{color:var(--red)}
.hero-copy>p,html[data-theme=light] .hero-copy>p{font:400 clamp(15px,1.35vw,18px)/1.9 var(--body);color:var(--text);max-width:680px;margin:0}
.hero-actions{margin-top:38px;gap:25px}.button{min-height:0;padding:10px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--text);font:500 12px var(--body);text-transform:lowercase;gap:23px;box-shadow:none}.button:hover{transform:none;color:var(--red);border-color:var(--red);background:none}.button-red,html[data-theme=light] .button-red{background:none;color:var(--red);border-color:var(--red)}.button-red:hover,.header-contact:hover{background:none;color:var(--text)}.button-outline,html[data-theme=light] .button-outline{background:none;color:var(--text);border-color:var(--line)}.button span{font-size:17px}
.hero-quick{display:flex;gap:18px;margin-top:45px;color:var(--muted);font:400 11px var(--body)}.hero-quick a{border-bottom:1px solid transparent;padding-bottom:2px;color:var(--text);text-transform:lowercase}.hero-quick a:hover{border-color:var(--red)}
.hero-photo{margin:0 0 0 auto;max-width:360px;width:100%;transform:rotate(1deg)}.hero-photo img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;filter:grayscale(1) contrast(1.12);border:1px solid var(--line)}.hero-photo figcaption{font:400 10px var(--body);color:var(--muted);padding-top:11px;text-align:right;text-transform:lowercase}
.section{padding:88px 4.5vw 100px;border-bottom:1px solid var(--line)}.section-top,.section-no,.section-status{font:400 11px var(--body);letter-spacing:0;color:var(--red);text-transform:lowercase}.section-title-row{margin:19px 0 48px}.section-title-row h2,.about-grid h2{font:400 clamp(31px,3.3vw,47px)/1.22 var(--body);letter-spacing:-.07em;margin:0 0 18px}.section-title-row h2 span,.about-grid h2 span{color:var(--red)}.section-title-row p,.about-copy>p,html[data-theme=light] .about-copy>p{font:400 15px/1.9 var(--body);color:var(--text);max-width:690px}.about-grid{gap:80px;margin-top:22px}.about-grid h2{max-width:none}.about-aside{font:400 11px var(--body);line-height:1.8;color:var(--muted);letter-spacing:0;text-transform:lowercase}.about-copy>p{max-width:650px;margin:0 0 22px}.about-copy>.about-quote{font:400 19px/1.6 var(--body);border-left:2px solid var(--red);padding-left:17px;margin:33px 0;color:var(--red)}.about-links a{font:400 12px var(--body);text-transform:lowercase}
.project-grid{display:block}.project-card,.project-card:hover,html[data-theme=light] .project-card{display:grid;grid-template-columns:minmax(240px,35%) minmax(0,1fr);gap:35px;background:none;border:0;border-top:1px solid var(--line);transform:none;transition:none}.project-card:last-child{border-bottom:1px solid var(--line)}.project-featured{grid-column:auto}.project-visual,.project-featured .project-visual{height:230px;border:0;margin:22px 0;background:var(--panel2)}.project-visual video{filter:grayscale(.5)}.project-visual img{filter:grayscale(.5)}.project-body,.project-featured .project-body{padding:29px 15px 29px 0;display:block}.project-type{font:400 10px var(--body);letter-spacing:0;color:var(--red);text-transform:lowercase}.project-body h3,.project-featured .project-body h3{font:400 clamp(24px,2.6vw,37px)/1.25 var(--body);letter-spacing:-.055em;margin:14px 0}.project-body h3 span{font-size:20px}.project-body p,html[data-theme=light] .project-body p{font:400 13px/1.8 var(--body);color:var(--muted);max-width:610px}.project-tags{margin-top:22px}.project-tags span{border:0;border-bottom:1px solid var(--line);padding:3px 0;margin-right:15px;font-size:10px;text-transform:lowercase}.clix-visual{background:var(--panel2)}.clix-big{font:400 105px var(--mono);color:var(--red)}.clix-lines{color:var(--muted)}.media-caption{background:var(--bg);color:var(--muted);border:0}.project-card:hover .project-body h3{color:var(--red)}
.post-grid,.archive-grid{display:block}.post-card,.post-card:hover,html[data-theme=light] .post-card{background:none;border:0;border-top:1px solid var(--line);transform:none}.post-card:last-child{border-bottom:1px solid var(--line)}.post-card-link{display:grid;grid-template-columns:125px minmax(0,1fr) 150px;grid-template-rows:auto auto;gap:0 25px;padding:25px 0;min-height:0}.post-card-meta{grid-column:1;grid-row:1/3;font:400 10px/1.6 var(--body);color:var(--red)}.post-card h3{grid-column:2;grid-row:1;font:400 19px/1.45 var(--body);letter-spacing:-.045em;margin:0 0 7px}.post-card p,html[data-theme=light] .post-card p{grid-column:2;grid-row:2;font:400 12px/1.7 var(--body);color:var(--muted);margin:0}.post-card-footer{grid-column:3;grid-row:1/3;align-self:center}.tag{border:0;border-bottom:1px solid var(--line);font-size:9px;padding:3px 0;margin-right:6px;text-transform:lowercase}.card-arrow{font-size:18px}.post-card:hover h3{color:var(--red)}
.tool-grid{border:0;border-top:1px solid var(--line)}.tool-card,html[data-theme=light] .tool-card{background:none;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:26px 25px 22px}.tool-card:first-child{padding-left:0}.tool-card:last-child{border-right:0}.tool-card::before{display:none}.tool-head{font:400 10px var(--body);color:var(--red)}.tool-card h3{font:400 20px var(--body);letter-spacing:-.05em;margin:26px 0 8px}.tool-card>p,html[data-theme=light] .tool-card>p{font:400 11px/1.75 var(--body);color:var(--muted)}.tool-card input,.tool-card select,html[data-theme=light] .tool-card input,html[data-theme=light] .tool-card select{background:transparent;color:var(--text);border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0 4px}.tool-result{font-size:10px}.tool-result strong{color:var(--text)}
.site-footer{padding:42px 4.5vw 55px;color:var(--muted);font:400 11px var(--body);letter-spacing:0}.site-footer strong,html[data-theme=light] .site-footer strong{font:400 16px var(--body);color:var(--text)}.site-footer div:first-child{gap:10px}.site-footer a{text-transform:lowercase}
.inner-main{padding:60px 4.5vw 100px}.back-link{font:400 11px var(--body);text-transform:lowercase}.archive-hero{padding:70px 0 65px}.archive-hero h1{font:400 clamp(45px,6vw,76px)/1.2 var(--body);letter-spacing:-.07em;margin:14px 0 28px}.archive-hero>p,html[data-theme=light] .archive-hero>p{font:400 15px/1.9 var(--body);max-width:800px;color:var(--text)}.archive-count{border:0;border-bottom:1px solid var(--red);font:400 10px var(--body);padding:7px 0}.archive-count span{font:400 19px var(--body)}
.article-main{max-width:1000px}.article-shell{margin:65px 0}.article-header{padding-bottom:36px}.article-header h1{font:400 clamp(34px,4.3vw,57px)/1.25 var(--body);letter-spacing:-.06em;margin:20px 0 25px}.article-header>p,html[data-theme=light] .article-header>p{font:400 15px/1.85 var(--body);color:var(--muted)}.article-hero-media{background:var(--panel2)}.article-toc,html[data-theme=light] .article-toc{background:none;border:0;border-left:2px solid var(--red);padding:13px 0 13px 22px;max-width:780px}.article-toc strong{font:400 11px var(--body)}.article-toc a{font:400 12px/1.7 var(--body)}.article-body{font:400 15px/1.95 var(--body);max-width:780px;color:var(--text)}.article-body h1,.article-body h2,.article-body h3,html[data-theme=light] .article-body h1,html[data-theme=light] .article-body h2,html[data-theme=light] .article-body h3{font-family:var(--body);font-weight:500;letter-spacing:-.05em;color:var(--text)}.article-body h2{font-size:29px}.article-body h3{font-size:22px}.article-body strong,html[data-theme=light] .article-body strong{color:var(--text);font-weight:600}.article-body a{color:var(--red)}.article-body blockquote{background:none;border-left:2px solid var(--red)}.article-body pre,.article-body code{font-family:var(--body)}.article-body pre{background:var(--panel2)}.article-end,html[data-theme=light] .article-end{background:none;border:0;border-top:1px solid var(--line);padding:30px 0}.article-end h2{font:400 27px var(--body)}.simulation{background:var(--panel2)}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr 240px;gap:30px;min-height:0}.hero h1{font-size:clamp(43px,7vw,65px)}.project-card,.project-featured{grid-template-columns:34% 1fr;gap:20px}.post-card-link{grid-template-columns:105px 1fr 100px}}
@media(max-width:760px){.site-header,html[data-theme=light] .site-header{height:auto;padding:15px 18px;gap:12px}.site-header nav{font-size:11px}.hero-grid{display:flex;flex-direction:column;align-items:start;gap:42px;padding:75px 18px 65px}.hero h1{font-size:clamp(40px,9vw,58px);margin:20px 0 28px}.hero-copy>p{font-size:14px}.hero-photo{margin:0;width:min(100%,280px)}.hero-photo figcaption{text-align:left}.section{padding:68px 18px 78px}.about-grid{display:block}.about-copy{margin-top:35px}.section-title-row h2,.about-grid h2{font-size:35px}.project-card,.project-featured{display:block}.project-visual,.project-featured .project-visual{height:215px;margin:20px 0 0}.project-body,.project-featured .project-body{padding:23px 0 30px}.post-card-link{display:block;padding:22px 0}.post-card h3{font-size:18px;margin:10px 0}.post-card p{font-size:12px}.post-card-footer{margin-top:18px}.tool-grid{display:block}.tool-card,html[data-theme=light] .tool-card{border-right:0;padding:23px 0}.tool-card:last-child{padding:23px 0}.site-footer{padding:35px 18px}.inner-main{padding:45px 18px 80px}.archive-hero{padding:55px 0}.article-header h1{font-size:clamp(32px,8vw,49px)}.article-body{font-size:14px}.article-body h2{font-size:26px}.article-body h3{font-size:20px}}

/* The worn headings and even-pitch text echo ink on a typewritten page. */
html[data-theme=light],html[data-theme=dark]{--body:'Courier Prime','Courier New',monospace;--display:'Special Elite','Courier Prime',monospace;--mono:var(--body)}
.hero h1,.section-title-row h2,.about-grid h2,.project-body h3,.project-featured .project-body h3,.post-card h3,.tool-card h3,.archive-hero h1,.article-header h1,.article-end h2,.article-body h1,.article-body h2,.article-body h3,html[data-theme=light] .article-body h1,html[data-theme=light] .article-body h2,html[data-theme=light] .article-body h3{font-family:var(--display);font-weight:400;letter-spacing:-.025em}
.hero h1{letter-spacing:-.035em}
.hero-copy>p,html[data-theme=light] .hero-copy>p{max-width:680px;line-height:1.75}
.article-body,html[data-theme=light] .article-body{line-height:1.85}
@media(prefers-reduced-motion:reduce){.hero-photo img,.project-visual video{filter:grayscale(1)}}
@media(max-width:760px){body[data-page=home] .project-card,html[data-theme=light] body[data-page=home] .project-card{display:block;grid-template-columns:none}}
.article-author{max-width:780px;display:grid;grid-template-columns:145px minmax(0,1fr);gap:24px;border-top:1px solid var(--line);padding:30px 0 8px}
.article-author .eyebrow{color:var(--red);padding-top:6px}
.article-author p{font:400 13px/1.8 var(--body);color:var(--text);margin:0 0 14px}
.article-author strong{font:400 19px var(--display)}
.article-author a{font:400 11px var(--body);color:var(--red);border-bottom:1px solid var(--red);padding-bottom:4px}
@media(max-width:760px){.article-author{display:block}.article-author .eyebrow{display:block;margin-bottom:17px}}
.project-visual img{display:block;width:100%;height:100%;object-fit:cover;filter:none}
