@font-face{font-family:Inter;src:url('assets/inter-latin.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{
 color-scheme:dark;
 --bg:#08090b;--surface:#10151c;--hover:#171e27;
 --text:#f5f5f7;--muted:#a1a1aa;--accent:#b3d5ef;
 --line:#ffffff1a;--line-hover:#ffffff38;--tile:#f5f4f0;
 --radius:20px;--radius-small:12px;--column:600px;
 --space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:48px;--space-6:64px;
 --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:100px}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5}
a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
button{font:inherit}
a:focus-visible,button:focus-visible,pre:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
::selection{background:#38576c;color:var(--text)}
.skip{position:fixed;top:-100px;left:20px;padding:12px 18px;background:var(--text);color:var(--bg);z-index:20;border-radius:var(--radius-small)}
.skip:focus{top:12px}
/* One navigation shell for home, journal and reading. */
.topbar{position:fixed;inset:0 0 auto;z-index:10;background:linear-gradient(var(--bg) 65%,#08090b00);padding:0 24px 20px;pointer-events:none}
.topbar-inner{width:min(100%,var(--column));height:72px;margin:auto;display:flex;align-items:center;gap:var(--space-2);pointer-events:auto}
.wordmark{font-size:27px;font-weight:600;letter-spacing:-.08em;display:flex;align-items:center;min-width:44px;min-height:44px}
.wordmark span{color:var(--accent)}
.site-nav{display:flex;gap:var(--space-2);margin-left:auto}
.site-nav a{display:flex;align-items:center;min-height:44px;font-size:13px;color:var(--muted)}
.site-nav a:hover,.site-nav a[aria-current="page"]{color:var(--text)}
.language-switch{display:flex;gap:4px;padding-left:8px;border-left:1px solid var(--line)}
.language-switch a{display:grid;place-items:center;width:44px;height:44px;border:1px solid transparent;border-radius:50%;opacity:.7;filter:none;transition:opacity .2s,border-color .2s}
.language-switch a:hover{opacity:1}
.language-switch a[aria-current="page"]{opacity:1;filter:none;border-color:var(--line-hover)}
.language-flag{width:22px;height:22px;object-fit:cover;border-radius:50%;display:block}
/* Quiet, full-screen introduction. The approved sentence stays intact. */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:112px 24px 124px;text-align:center}
.portrait{width:96px;height:96px;padding:1px;border:1px solid var(--line-hover);border-radius:50%;margin-bottom:var(--space-3)}
.portrait-inner{height:100%;display:grid;place-items:center;border-radius:inherit;background:radial-gradient(ellipse at 30% 10%,#30353e,#13181f);font-size:32px;font-weight:500;letter-spacing:-.08em;padding-right:3px}
.identity{margin:0;color:var(--muted);font-size:15px;font-weight:500}
.hero h1{max-width:620px;margin:var(--space-3) 0 0;font-size:clamp(34px,calc(25.75px + 2.115vw),56px);font-weight:500;line-height:1.06;letter-spacing:-.045em;text-wrap:balance}
.socials{display:flex;justify-content:center;margin-top:var(--space-4)}
.social{display:flex;align-items:center;justify-content:center;gap:12px;min-height:52px;padding:14px 24px;border:1px solid var(--line);border-radius:16px;background:var(--surface);font-size:14px;transition:background .2s,border-color .2s}
.social:hover{background:var(--hover);border-color:var(--line-hover)}
.social svg{width:22px;height:22px;color:#e178a4}
.external{color:var(--muted)}
.scroll-cue{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;min-width:160px;font-size:13px;color:var(--muted)}
.scroll-cue svg{width:18px;height:18px}
/* Shared column, section rhythm and card vocabulary. */
.writing,.toolbox,.journal,.reading,.footer{width:min(calc(100% - 40px),var(--column));margin-inline:auto}
.writing{padding:var(--space-6) 0}
.toolbox{padding-bottom:var(--space-6)}
.section-intro{text-align:center;margin-bottom:var(--space-3)}
.eyebrow{font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0}
.article-list,.tool-links{display:grid;gap:12px}
.article-card,.tool-link{position:relative;display:grid;align-items:center;gap:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;transition:background .2s,border-color .2s}
.article-card:hover,.tool-link:hover{background:var(--hover);border-color:var(--line-hover)}
.article-card{grid-template-columns:180px minmax(0,1fr);padding:20px}
.card-copy{min-width:0;padding-right:2px}
.card-copy h2,.card-copy h3{font-size:21px;font-weight:500;letter-spacing:-.025em;line-height:1.3;margin:0;text-wrap:pretty}
.card-copy p{font-size:14px;color:var(--muted);line-height:1.65;margin:12px 0 0}
.meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;line-height:1.5;color:var(--muted);margin-bottom:10px}
.meta span+span::before{content:'·';margin-right:10px}
.arrow-tile{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--radius-small);background:var(--tile);color:var(--bg);font-size:19px;flex:none;transition:transform .2s var(--ease)}
.article-card>.arrow-tile{grid-column:2;justify-self:end;margin-top:-4px}
.article-card:hover>.arrow-tile,.tool-link:hover>.arrow-tile{transform:translateX(2px)}
.thumbnail{aspect-ratio:4/3;border-radius:var(--radius-small);overflow:hidden;align-self:start;background:var(--surface)}
.thumbnail picture{display:block;width:100%;height:100%}
.editorial-art{display:block;width:100%;height:100%;object-fit:contain}
.compact-card{grid-template-columns:100px minmax(0,1fr) 36px;gap:16px;padding:16px}
.compact-card .thumbnail{align-self:center;aspect-ratio:1}
.compact-card .card-copy h3{font-size:18px;line-height:1.35}
.compact-card .meta span+span{display:none}
.compact-card>.arrow-tile{grid-column:auto;justify-self:auto;margin:0}
.all-notes{display:flex;align-items:center;justify-content:center;gap:12px;min-height:44px;margin-top:var(--space-3);font-size:14px;color:var(--accent)}
.all-notes:hover{text-decoration:underline;text-underline-offset:5px}
.tool-link{grid-template-columns:48px minmax(0,1fr) 36px;padding:16px;gap:16px}
.logo-tile{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--radius-small);background:var(--tile)}
.logo-tile img{width:30px;height:30px;object-fit:contain;display:block}
.tool-copy strong{display:block;font-size:15px;font-weight:500}
.tool-copy small{display:block;font-size:13px;color:var(--muted);margin-top:4px}
.footer{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding:24px 0 32px;font-size:12px;color:var(--muted)}
.footer span{padding-inline:5px}
.footer a{display:flex;align-items:center;min-height:44px}
.footer a:hover{color:var(--text)}
/* Journal opening matches the home without repeating a full viewport. */
.journal{padding:120px 0 64px}
.journal-header{text-align:center;margin-bottom:var(--space-5)}
.journal h1{font-size:40px;letter-spacing:-.045em;line-height:1.15;font-weight:500;margin:20px 0 16px;text-wrap:balance}
.intro{max-width:470px;margin:0 auto;color:var(--muted);font-size:15px;line-height:1.7}
.status{font-size:12px;color:var(--muted);margin:20px 0 0}
/* Reading begins with the introduction; art supports the text. */
.reading{padding:112px 0 64px}
.article-header{margin-bottom:var(--space-4)}
.article-header h1{font-size:38px;font-weight:500;letter-spacing:-.04em;line-height:1.16;margin:16px 0;text-wrap:balance}
.article-header .dek{font-size:18px;line-height:1.65;color:var(--muted);margin:0 0 20px}
.byline{font-size:12px;color:var(--muted);line-height:1.6;margin:0}
.article-body{font-size:17px;line-height:1.75;color:#c8ccd2}
.article-body>p:first-child{margin-top:0}
.article-body p{margin:0 0 24px}
.article-body h2{font-size:25px;font-weight:500;letter-spacing:-.025em;line-height:1.3;margin:40px 0 16px;scroll-margin-top:100px;color:var(--text)}
.article-body ul{padding-left:22px;margin:20px 0 28px}
.article-body li{padding-left:4px;margin:10px 0}
.article-body strong{font-weight:600;color:var(--text)}
.article-body a{color:var(--accent);text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.article-body blockquote{margin:32px 0;padding:0 0 0 22px;border-left:2px solid var(--accent);font-size:22px;line-height:1.45;letter-spacing:-.02em;color:var(--text)}
.article-body blockquote p{margin:0}
.cover{height:200px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);margin:28px 0}
.cover .editorial-art{object-fit:contain}
.article-toc{margin:28px 0 36px;padding:20px 24px;border-block:1px solid var(--line)}
.article-toc>p{margin:0 0 12px;font-size:13px;font-weight:500;color:var(--muted)}
.article-toc ol{margin:0;padding-left:22px;font-size:14px;font-variant-numeric:tabular-nums}
.article-toc li{margin:0;padding-left:6px;color:var(--muted)}
.article-toc a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;color:var(--text)}
.article-toc a:hover{color:var(--accent)}
.article-body code{font-family:ui-monospace,"SFMono-Regular",Consolas,monospace;font-size:.84em;color:var(--accent);overflow-wrap:anywhere}
.code-sample{position:relative;margin:28px 0;border:1px solid var(--line);border-radius:var(--radius-small);overflow:hidden;background:var(--surface)}
.code-sample figcaption{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);padding:8px 16px;min-height:52px;border-bottom:1px solid var(--line);line-height:1.5}
.code-sample pre{margin:0;padding:20px;overflow-x:auto;max-width:100%;font-size:13px;line-height:1.7;tab-size:2}
.code-sample pre:focus-visible{outline-offset:-3px}
.code-sample code{font-size:inherit;white-space:pre;overflow-wrap:normal;color:var(--text)}
.copy-button{min-width:72px;min-height:44px;flex:none;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);font-size:12px;padding:8px 12px;cursor:pointer}
.copy-button:hover{background:var(--hover)}
.copy-status{display:block;padding:0 16px;font-size:12px;color:var(--muted)}
.copy-status:not(:empty){padding-block:10px}
.draft-note{font-size:13px;color:var(--muted);padding-top:24px;border-top:1px solid var(--line)}
.next-article{display:block;margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}
.next-article small{font-size:13px;color:var(--muted)}
.next-article p{font-size:20px;letter-spacing:-.02em;margin:12px 0;color:var(--text)}
@keyframes arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.portrait,.identity,.hero h1,.socials{animation:arrive .65s var(--ease) both}
/* Layouts adapt to available width; article prose stays comfortably readable. */
@media(min-width:601px){
 :root{--column:760px}
 .tool-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .reading{max-width:700px}
 .tool-link{gap:12px;padding:18px}
 .tool-copy{min-width:0}
}
/* Keep journal cards vertical at every width, adding columns only when roomy. */
.journal .article-card{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto;align-items:start;gap:20px;padding:24px}
.journal .thumbnail{width:100%;aspect-ratio:2/1;max-height:200px}
.journal .article-card>.arrow-tile{grid-column:1;margin:0}
@media(min-width:701px){
 .journal .article-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
 .journal .thumbnail{max-height:240px}
 .journal .featured-card{grid-column:1/-1}
 .journal .featured-card .thumbnail{max-height:260px}
}
@media(min-width:1000px){
 :root{--column:1080px}
 .topbar{padding-inline:48px}
 .writing,.toolbox,.journal,.footer{width:min(calc(100% - 96px),var(--column))}
 .hero h1{max-width:860px}
 .writing .article-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
 .compact-card{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:20px;padding:20px;align-items:start}
 .compact-card .thumbnail{width:100%;aspect-ratio:5/3}
 .compact-card .card-copy h3{font-size:21px;line-height:1.35}
 .compact-card>.arrow-tile{grid-column:1;justify-self:end}
 .journal h1{font-size:48px}
 .journal .featured-card{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:1fr auto;align-items:center;gap:24px 32px;padding:32px}
 .journal .featured-card .thumbnail{grid-column:1;grid-row:1/3;aspect-ratio:4/3;max-height:none;align-self:center}
 .journal .featured-card .card-copy{grid-column:2;grid-row:1}
 .journal .featured-card h2{font-size:clamp(28px,2.2vw,32px);line-height:1.15}
 .journal .featured-card>.arrow-tile{grid-column:2;grid-row:2}
 .reading{max-width:720px}
 .article-header h1{font-size:44px}
 .cover{height:240px}
 .tool-links{gap:20px}
 .tool-link{padding:20px;gap:20px}
}
@media(min-width:601px) and (max-height:700px){
 .hero{padding-top:96px;padding-bottom:104px}
 .portrait{width:80px;height:80px;margin-bottom:16px}
 .hero h1{margin-top:16px}
 .socials{margin-top:24px}
}
@media(max-width:600px){
 .topbar{padding-inline:20px}.topbar-inner{height:68px;gap:8px}.site-nav{gap:14px}
 .hero{padding:100px 20px 112px}.hero h1{letter-spacing:-.04em}.portrait{width:88px;height:88px}
 .socials{width:min(100%,360px)}.social{width:100%}.social .external{margin-left:auto}
 .writing{padding:48px 0}.toolbox{padding-bottom:48px}
 .compact-card{grid-template-columns:72px minmax(0,1fr) 32px;gap:12px;padding:14px}
 .compact-card .card-copy h3{font-size:16px}.compact-card .meta{font-size:12px;margin-bottom:6px}
 .compact-card>.arrow-tile{width:32px;height:32px;border-radius:10px}
 .journal{padding-top:104px}.journal h1{font-size:34px}
 .journal .article-card{grid-template-columns:1fr;gap:20px;padding:18px}
 .journal .thumbnail{width:100%;aspect-ratio:2/1;max-height:200px}
 .journal .article-card>.arrow-tile{grid-column:1}
 .card-copy h2{font-size:22px}.card-copy p{font-size:14px}
 .reading{padding-top:100px}.article-header h1{font-size:32px}.article-header .dek{font-size:17px}
 .article-body{font-size:16px}.article-body h2{font-size:23px}.article-body blockquote{font-size:20px}
 .cover{height:180px}.article-toc{padding-inline:16px}
 .code-sample pre{padding:16px;font-size:13px}.code-sample figcaption{padding-inline:12px;gap:8px}
 .tool-link{gap:12px}.footer{font-size:12px;flex-wrap:wrap}
}
@media(max-width:389px){.hero h1{font-size:clamp(31px,calc(10vw - 5px),34px)}}
@media(max-width:360px){.compact-card{grid-template-columns:56px minmax(0,1fr) 28px;gap:10px}.compact-card>.arrow-tile{width:28px;height:28px}.site-nav{gap:10px}.topbar{padding-inline:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

/* Only shown when code extends beyond the visible scroll area. */
.code-sample.has-overflow::after{content:"";position:absolute;right:0;top:var(--code-top);width:32px;height:var(--code-height);pointer-events:none;background:linear-gradient(90deg,transparent,var(--surface))}
