:root{color-scheme:light;--bg:#fdfefd;--fg:#111620;--muted:#596274;--line:#e0e5e8;--accent:#008631;--panel:#f8faf9;--grid:#28503c06}:root[data-theme=dark]{color-scheme:dark;--bg:#0b1110;--fg:#edf0f3;--muted:#a8b3c0;--line:#263737;--accent:#80efa0;--panel:#0e1615;--grid:#78dcb406}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#0b1110;--fg:#edf0f3;--muted:#a8b3c0;--line:#263737;--accent:#80efa0;--panel:#0e1615;--grid:#78dcb406}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--bg);color:var(--fg);margin:0;font-family:Cascadia Code,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}a:hover{color:var(--accent)}.site-frame{border-inline:1px solid var(--line);max-width:1240px;margin:auto}.site-header{border-bottom:1px solid var(--line);align-items:center;gap:24px;min-height:72px;padding-left:24px;display:flex}.brand{white-space:nowrap;letter-spacing:-.8px;align-items:center;gap:20px;font-size:21px;display:flex}.brand-dot{background:var(--accent);width:10px;height:10px}nav{align-items:center;gap:28px;margin-left:auto;font-size:12px;display:flex}nav a{padding-block:18px}.header-tools{border-left:1px solid var(--line);align-self:stretch;align-items:center;display:flex}.language{padding:16px;font-size:12px}#theme-toggle{border:0;border-left:1px solid var(--line);cursor:pointer;background:0 0;place-items:center;width:58px;min-height:58px;display:grid}#theme-toggle:hover{color:var(--accent)}.skip{background:var(--bg);border:2px solid var(--accent);z-index:10;padding:12px;position:fixed;top:-100px;left:16px}.skip:focus{top:16px}.hero{border-bottom:1px solid var(--line);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:12px 12px;grid-template-columns:1.4fr 1fr;gap:40px;padding:42px 24px 32px;display:grid}.eyebrow{text-transform:uppercase;color:var(--muted);margin:5px 0 20px;font-size:12px}.eyebrow span{color:var(--accent);margin-right:12px}h1{letter-spacing:-2.6px;margin:0 0 22px;font-size:clamp(32px,4.1vw,52px);font-weight:700;line-height:1.12}.intro{max-width:66ch;margin:0;font-size:16px;line-height:1.7}.hero-caption{color:var(--muted);margin-top:24px;font-size:12px}.hero-caption span{color:var(--accent);margin-right:10px;font-size:22px}.terminal{border:1px solid var(--line);background:var(--panel);border-radius:2px;align-self:start;min-height:274px}.terminal-bar{border-bottom:1px solid var(--line);align-items:center;gap:6px;height:38px;padding:0 14px;display:flex}.terminal-bar i{background:#fa5653;border-radius:50%;width:10px;height:10px}.terminal-bar i:nth-child(2){background:#f3bf43}.terminal-bar i:nth-child(3){background:#38bb63}.terminal-bar span{text-align:center;color:var(--muted);flex:1;font-size:10px}.terminal-code{color:var(--accent);padding:32px 26px;font-size:21px;line-height:1.45}.cursor{background:var(--accent);width:12px;height:23px;margin-top:30px;display:block}.section-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:62px;padding-left:24px;display:flex}.section-heading h2{text-transform:uppercase;color:var(--muted);white-space:nowrap;margin:0;font-size:12px;font-weight:400}.section-heading h2 span{color:var(--accent);margin-right:16px}.section-heading>div{align-items:center;gap:20px;display:flex}.section-note{color:var(--muted);font-size:12px}.view-all{border-left:1px dashed var(--line);place-items:center;min-width:60px;min-height:60px;font-size:22px;display:grid}.content-card{border-bottom:1px solid var(--line);display:block;position:relative}.content-card:hover{background:var(--panel);color:var(--fg)}.content-card:hover h3{color:var(--accent)}.content-card h3{letter-spacing:-.6px;margin:0 0 8px;font-size:18px;font-weight:600;line-height:1.4}.articles-card{grid-template-columns:280px 1fr;gap:30px;min-height:152px;padding:18px 24px;display:grid}.articles-card img{object-fit:cover;border:1px solid var(--line);filter:saturate(.2);width:100%;height:128px}.card-meta{text-transform:uppercase;color:var(--muted);flex-wrap:wrap;gap:14px;margin:3px 0 8px;font-size:10px;display:flex}.articles-card .card-meta time{position:absolute;top:20px;right:24px}.articles-card .card-meta{padding-right:135px}.card-meta span{color:var(--accent)}.summary{color:var(--muted);max-width:62ch;margin:0;font-size:13px;line-height:1.65}.articles-card .summary{padding-right:52px}.card-arrow{color:var(--accent);margin-top:12px;font-size:27px;line-height:1;display:block}.articles-card .card-arrow{position:absolute;bottom:26px;right:24px}.thoughts .content-grid,.projects .content-grid{grid-template-columns:repeat(3,1fr);display:grid}.thoughts-card,.projects-card{border-right:1px solid var(--line);padding:24px}.thoughts-card:last-child,.projects-card:last-child{border-right:0}.thoughts-card .card-copy{border-left:1px dashed var(--line);height:100%;padding-left:16px}.thoughts-card .card-arrow{margin-top:20px}.projects-card .card-copy{border:1px dashed var(--line);flex-direction:column;align-items:flex-start;height:100%;padding:16px;display:flex}.project-symbol{color:var(--accent);border:1px solid var(--line);border-radius:8px;place-items:center;width:48px;height:48px;margin:5px 0 14px;font-size:30px;display:grid}.tagline{color:var(--muted);margin:0 0 18px;font-size:10px}.project-status{border:1px solid var(--line);border-radius:30px;align-self:flex-end;margin-top:24px;padding:6px 12px;font-size:10px}.project-status i{background:var(--accent);border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}footer{padding:24px;position:relative}footer p{color:var(--muted);margin:4px 0 0;font-size:11px}.footer-name{font-weight:600}.footer-prompt{color:var(--accent);font-size:24px;position:absolute;top:24px;right:24px}.listing-intro{border-bottom:1px solid var(--line);padding:42px 24px}.listing-intro h1{margin-top:22px}.listing-intro p{color:var(--muted);max-width:70ch}.back{color:var(--muted);font-size:12px}.detail{max-width:850px;margin:auto;padding:44px 32px 64px}.detail>.eyebrow{margin-top:40px}.detail h1{font-size:clamp(32px,5vw,52px)}.detail-summary{color:var(--muted);font-size:19px;line-height:1.6}.date{color:var(--muted);text-transform:uppercase;font-size:11px}.example-note{border-left:3px solid var(--accent);background:var(--panel);color:var(--muted);margin:26px 0;padding:16px;font-size:12px}.detail-image{border:1px solid var(--line);width:100%;height:auto;margin-bottom:20px}.prose{font-size:16px;line-height:1.9}.prose h2,.related h2{letter-spacing:-.5px;font-size:21px;line-height:1.4}.prose p{margin:22px 0}.related{border-top:1px solid var(--line);margin-top:40px;padding-top:18px}.related a{border-bottom:1px solid var(--line);padding:12px 0;display:block}.related a span{color:var(--accent)}@media (width<=950px){.brand{gap:12px;font-size:18px}nav,.site-header{gap:16px}.hero{grid-template-columns:1.3fr 1fr;gap:24px}h1{font-size:38px}.intro{font-size:14px}.terminal-code{padding:28px 20px;font-size:18px}.articles-card{grid-template-columns:220px 1fr}.thoughts-card,.projects-card{padding:18px 14px}.card-meta{font-size:9px}}@media (width<=700px){.site-header{flex-wrap:wrap;gap:0;padding-left:18px}.brand{flex:1;min-height:62px}.header-tools{align-self:auto}#theme-toggle{width:48px;min-height:62px}nav{border-top:1px solid var(--line);flex-basis:calc(100% + 18px);order:3;justify-content:space-between;gap:8px;width:100%;margin-left:-18px;padding:0 18px}nav a{padding:12px 0;font-size:11px}.hero{grid-template-columns:1fr;gap:24px;padding:30px 18px}h1{letter-spacing:-1.8px;font-size:clamp(29px,7vw,44px)}.intro{font-size:14px}.terminal{width:100%;min-height:225px}.terminal-code{padding:22px;font-size:19px}.cursor{margin-top:18px}.section-heading{min-height:58px;padding-left:18px}.section-note{display:none}.view-all{min-width:50px;min-height:58px}.articles-card{grid-template-columns:110px 1fr;gap:16px;min-height:154px;padding:18px}.articles-card img{height:105px}.articles-card .card-meta{gap:4px;padding-right:0}.articles-card .card-meta time{order:2;position:static}.articles-card .summary{padding-right:0;font-size:12px}.content-card h3{font-size:16px}.articles-card .card-arrow{margin-top:8px;font-size:22px;position:static}.thoughts .content-grid,.projects .content-grid{grid-template-columns:1fr}.thoughts-card,.projects-card{border-right:0;padding:22px 18px}.thoughts-card .summary{max-width:none}.thoughts-card .card-meta{font-size:10px}.projects-card .card-copy{padding:20px}.listing-intro{padding:32px 18px}.detail{padding:30px 18px 44px}.detail-summary{font-size:16px}.prose{font-size:15px}footer{padding:24px 18px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media (forced-colors:active){.brand-dot,.cursor,.project-status i{background:canvastext}}.projects-card .card-copy{display:block}.projects-card .project-symbol{float:left;margin:5px 18px 16px 0}.projects-card h3{padding-top:7px}.projects-card .tagline{min-height:30px}.projects-card .summary{clear:both}.projects-card .project-status{margin-left:auto;display:table}.preview-notice{border-bottom:1px solid var(--line);color:var(--muted);background:var(--panel);padding:10px 24px;font-size:11px}.preview-notice a{color:var(--accent);margin-left:10px}@media (width<=700px){.preview-notice{padding:10px 18px}.preview-notice a{margin-left:0;display:block}}.prose figure{margin:2rem 0}.prose figure img,.prose video{max-width:100%;height:auto;display:block}.prose iframe{aspect-ratio:16/9;border:0;width:100%;display:block}.prose figcaption{color:var(--muted);font-size:.85rem}.prose blockquote{border-left:3px solid;margin:1.5rem 0;padding-left:1rem}.prose p,.prose li{white-space:pre-wrap}.embedded-video summary{cursor:pointer}.detail h1,.detail-summary,.prose,.prose a,.prose figcaption{overflow-wrap:anywhere}.prose figure{max-width:100%}.last-updated{color:var(--muted);overflow-wrap:anywhere;margin:12px 0;font-size:11px;line-height:1.6}.section-heading .last-updated{margin:10px 0 10px auto;padding-right:16px}.section-heading{flex-wrap:wrap}.section-heading h2{white-space:normal}.section-heading>div{margin-left:auto}.hero .last-updated{margin-top:18px}@media (width<=700px){.section-heading{gap:0 12px;padding-top:10px}.section-heading .last-updated{flex-basis:100%;order:3;margin:0 0 10px;padding-right:18px}.last-updated{font-size:11px}}.terminal-cycle{fill:currentColor;width:19ch;max-width:100%;height:auto;font-family:inherit;font-size:22px;display:block;overflow:visible}.terminal-return{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter}footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;display:flex}.footer-contact{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px 22px;margin-left:auto;font-size:12px;display:flex}.footer-contact a{align-items:center;gap:8px;max-width:100%;min-height:44px;display:inline-flex}.footer-contact svg{width:18px;height:18px;color:var(--accent);flex:none}.github-link-icon{vertical-align:-.15em;width:1.1em;height:1.1em;color:var(--accent);margin-right:.4em;display:inline-block}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.prose{counter-reset:section}.prose h2.numbered{margin-top:48px}.prose h2.numbered:before{counter-increment:section;content:counter(section,decimal-leading-zero) ". ";color:var(--accent)}.prose .logo-figure img{object-fit:contain;border-radius:20px;width:96px;height:96px}.prose figure:not(.logo-figure)>img,.prose figure:not(.logo-figure)>a>img{border:1px solid var(--line);border-radius:8px}.prose .logo-figure img,.prose .image-download img{border:0}.gallery{gap:24px;margin:2rem 0;display:grid}.gallery figure{flex-direction:column;align-items:center;gap:12px;margin:0;display:flex}.gallery figcaption{text-align:center}.gallery-phone{background:var(--panel);border:1px solid var(--line);border-radius:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));padding:28px 24px}.prose .gallery-phone img{border:6px solid var(--fg);border-radius:26px;width:100%;max-width:220px;height:auto}.gallery-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.prose .gallery-grid img{width:100%;height:auto}.download-jump{margin:20px 0 0}.download-jump a{background:var(--accent);min-height:44px;color:var(--bg);border-radius:6px;align-items:center;gap:8px;padding:0 18px;font-size:14px;text-decoration:none;display:inline-flex}.downloads{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px;margin:2rem 0;scroll-margin-top:24px;display:grid}.download-card{border:1px solid var(--line);background:var(--panel);color:var(--fg);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:10px;padding:24px 12px 20px;line-height:1.4;text-decoration:none;display:flex}.download-card img{width:56px;height:56px}.download-card.soon{color:var(--muted);border-style:dashed}.download-card.soon img{opacity:.6}.download-name{font-size:15px;font-weight:700}.download-status{color:var(--muted);font-size:12px}.download-action{background:var(--accent);min-height:40px;color:var(--bg);border-radius:6px;align-items:center;margin-top:4px;padding:0 16px;font-size:13px;display:inline-flex}a.download-card:hover .download-action,a.download-card:focus-visible .download-action{text-decoration:underline}@media (width<=700px){.gallery-phone{flex-wrap:wrap;justify-content:center;gap:20px 16px;padding:20px 16px;display:flex}.gallery-phone figure{flex:0 0 calc(50% - 8px);min-width:0}.downloads{grid-template-columns:repeat(2,minmax(0,1fr))}}.like{margin:36px 0 8px}.like-button{border:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--fg);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:10px;padding:0 18px;font-size:15px;display:inline-flex}.like-button:hover{border-color:var(--accent)}.like-button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.like-button[aria-pressed=true] path{fill:currentColor;fill-opacity:.18}.like-button:disabled{cursor:progress}
