@import "https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300&family=Fraunces:ital,opsz,wght@0,9..144,200;0,9..144,400;1,9..144,200;1,9..144,300&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#080a0f;--bg2:#0d1018;--surface:#111520;--border:#ffffff0f;--border-hover:#ffffff1f;--text:#dde0e8;--text-muted:#5a6178;--text-dim:#3a4055;--text-body:#b8bdc8;--accent:#c8d4f0;--accent2:#7a9fff;--mono:"DM Mono", monospace;--serif:"Fraunces", serif}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--mono);min-height:100vh;font-size:14px;line-height:1.7;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:60px 60px;position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle,#7896ff0a 0%,#0000 65%);width:60vw;height:60vw;position:fixed;top:-20%;left:-10%}.wrap{z-index:1;max-width:860px;margin:0 auto;padding:0 28px;position:relative}a{color:var(--accent2);text-decoration:none}a:hover{color:var(--accent)}.back{letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);align-items:center;gap:8px;padding:48px 0 0;font-size:11px;text-decoration:none;transition:color .2s;display:inline-flex}.back:hover{color:var(--accent2)}.back:before{content:"←";font-size:13px;transition:transform .2s}.back:hover:before{transform:translate(-3px)}.post-header{padding:36px 0 0;animation:.8s both fadeUp}.kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--accent2);font-size:10px;font-family:var(--mono);margin-bottom:20px}.post-title{font-family:var(--serif);letter-spacing:-.01em;color:var(--accent);margin-bottom:16px;font-size:clamp(2.2rem,7vw,4rem);font-style:italic;font-weight:200;line-height:1.05}.post-subtitle{font-family:var(--serif);color:var(--text-muted);margin-bottom:20px;font-size:clamp(1.1rem,2.5vw,1.4rem);font-style:italic;font-weight:300;line-height:1.4}.post-meta{color:var(--text-dim);letter-spacing:.1em;border-bottom:1px solid var(--border);margin-bottom:52px;padding-bottom:40px;font-size:11px}.prose{animation:.8s .1s both fadeUp}.prose p{color:var(--text-body);margin:1.4rem 0;font-size:15px;font-weight:300;line-height:1.85}.prose a{color:var(--accent2);border-bottom:1px solid #7a9fff4d}.prose a:hover{color:var(--accent);border-color:var(--accent2)}.prose ul,.prose ol{color:var(--text-body);margin:1.4rem 0 1.8rem 1.2rem;padding-left:1.1rem}.prose li{color:var(--text-body);margin:.55rem 0;font-size:14px;font-weight:300;line-height:1.75}.prose code{font-family:var(--mono);color:var(--accent);border:1px solid var(--border);background:#ffffff09;border-radius:5px;padding:.08rem .3rem;font-size:.92em}.prose pre{border:1px solid var(--border);color:var(--text-body);font-family:var(--mono);background:#ffffff06;margin:2rem 0;padding:18px 20px;font-size:12px;line-height:1.65;overflow-x:auto}.prose pre code{color:inherit;background:0 0;border:0;padding:0}.prose blockquote{border-left:2px solid var(--border-hover);color:var(--text);background:#ffffff05;margin:2.4rem 0;padding:20px 24px;font-size:15px;font-style:italic;line-height:1.65}.prose blockquote.idea{border-left-color:var(--accent2);font-family:var(--serif);color:var(--accent);background:#7a9fff0a;padding:24px 28px;font-size:clamp(1.1rem,2.5vw,1.5rem);font-style:italic;font-weight:200}.section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);align-items:center;gap:10px;margin:3.2rem 0 1.2rem;font-size:10px;display:flex}.section-label:after{content:"";background:var(--border);flex:1;height:1px}.covered{border-top:1px solid var(--border);margin-top:64px;padding-top:28px}.covered h2{font-family:var(--serif);color:var(--accent);margin-bottom:18px;font-size:clamp(1.3rem,3vw,1.8rem);font-style:italic;font-weight:300}.closing{border-top:1px solid var(--border);color:var(--text-dim);letter-spacing:.06em;margin-top:64px;padding-top:28px;font-size:12px}footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:80px;padding:28px 0 48px;display:flex}.footer-status{color:var(--text-dim);letter-spacing:.1em;align-items:center;gap:8px;font-size:11px;display:flex}.status-dot{background:#4caf7a;border-radius:50%;width:5px;height:5px;animation:2.4s ease-in-out infinite pulse}.footer-links{gap:20px;display:flex}.footer-links a{color:var(--text-dim);letter-spacing:.08em;font-size:11px;text-decoration:none;transition:color .2s}.footer-links a:hover{color:var(--accent2)}.site-header{padding:52px 0 0;animation:.8s both fadeUp}.eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:14px;margin-bottom:28px;font-size:11px;display:flex}.eyebrow:before{content:"";background:var(--text-dim);width:28px;height:1px;display:inline-block}.site-name{font-family:var(--serif);letter-spacing:-.02em;color:var(--accent);margin-bottom:28px;font-size:clamp(3.2rem,8vw,6rem);font-style:italic;font-weight:200;line-height:.9}.site-name span{color:var(--text-muted);letter-spacing:.04em;font-size:.42em;font-style:normal;font-weight:400;font-family:var(--mono);margin-top:6px;display:block}.tagline{color:var(--text-muted);border-left:2px solid var(--border-hover);max-width:500px;margin:32px 0 0;padding-left:18px;font-size:13px;font-style:italic;font-weight:300;line-height:1.8}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.rule{background:linear-gradient(90deg, var(--border-hover), transparent);height:1px;margin:52px 0 44px;position:relative}.rule:after{content:attr(data-label);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);background:var(--bg);padding-left:12px;font-size:10px;position:absolute;top:-8px;right:0}.devlog-list{margin-top:4px;list-style:none}.devlog-link{border-bottom:1px solid var(--border);grid-template-columns:48px 1fr auto;align-items:baseline;gap:0 20px;padding:15px 0;text-decoration:none;transition:border-color .2s;display:grid}.devlog-link:hover{border-color:var(--border-hover)}.devlog-num{color:var(--text-dim);letter-spacing:.06em;padding-top:1px;font-size:11px;font-weight:300}.devlog-title{font-family:var(--serif);color:var(--text);font-size:1.05rem;font-style:italic;font-weight:300;line-height:1.3;transition:color .2s}.devlog-sub{font-family:var(--mono);color:var(--text-muted);margin-top:5px;font-size:11.5px;font-style:normal;font-weight:300;line-height:1.5;display:block}.devlog-chevron{color:var(--text-dim);align-self:center;font-size:11px;transition:color .2s,transform .2s}.devlog-link:hover .devlog-num,.devlog-link:hover .devlog-chevron{color:var(--accent2)}.devlog-link:hover .devlog-title{color:var(--accent)}.devlog-link:hover .devlog-chevron{transform:translate(3px)}.post-nav{grid-template-columns:1fr 1fr;gap:16px;margin-top:64px;display:grid}.nav-card{border:1px solid var(--border);background:#ffffff05;padding:18px}.nav-card span{color:var(--text-dim);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px;font-size:10px;display:block}.nav-card strong{color:var(--accent);font-family:var(--serif);font-style:italic;font-weight:300}.project-archive-header{margin-bottom:18px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px;display:grid}.project-grid.compact{margin-top:0}.project-card{border:1px solid var(--border);background:#ffffff05;min-height:100%;padding:20px;transition:border-color .2s,background .2s,transform .2s}.project-card.featured{background:#7a9fff09;border-color:#7a9fff2e;grid-column:1/-1}.project-card:hover{border-color:var(--border-hover);background:#ffffff08;transform:translateY(-2px)}.card-topline{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.status-pill,.featured-mark{border:1px solid var(--border-hover);width:fit-content;color:var(--accent);letter-spacing:.12em;text-transform:uppercase;background:#ffffff06;align-items:center;padding:4px 8px;font-size:10px;line-height:1;display:inline-flex}.featured-mark{color:var(--accent2);border-color:#7a9fff38}.project-card h2{font-family:var(--serif);color:var(--accent);margin-bottom:10px;font-size:clamp(1.45rem,3vw,2rem);font-style:italic;font-weight:300;line-height:1.1}.project-card p{color:var(--text-body);font-size:13px;font-weight:300;line-height:1.7}.project-subtitle{margin-bottom:12px;font-style:italic;color:var(--text-muted)!important}.stack-list{flex-wrap:wrap;gap:7px;margin:18px 0 0;list-style:none;display:flex}.stack-list li{border:1px solid var(--border);color:var(--text-muted);background:#ffffff05;padding:4px 7px;font-size:10.5px;line-height:1.2}.card-actions,.section-actions,.link-row,.project-meta-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.card-actions{margin-top:20px}.section-actions{margin-top:22px}.cta-link{min-height:34px;color:var(--accent);letter-spacing:.08em;text-transform:uppercase;background:#7a9fff0b;border:1px solid #7a9fff47;align-items:center;padding:7px 11px;font-size:11px;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.cta-link:hover{color:#fff;background:#7a9fff13;border-color:#c8d4f080}.cta-link.muted{border-color:var(--border);color:var(--text-muted);background:#ffffff04}.cta-link.muted:hover{border-color:var(--border-hover);color:var(--accent)}.project-hero{border-bottom:1px solid var(--border);padding:36px 0 34px;animation:.8s both fadeUp}.project-meta-row{margin-top:22px}.hero-stack{margin-top:20px}.project-page{animation:.8s 80ms both fadeUp}.project-copy{padding-top:18px}.project-copy h2{font-family:var(--serif);color:var(--accent);margin:2.4rem 0 .8rem;font-size:clamp(1.35rem,3vw,1.9rem);font-style:italic;font-weight:300}.project-panel{margin-top:42px;padding-top:4px}.highlight-list{gap:10px;list-style:none;display:grid}.highlight-list li{color:var(--text-body);border-left:2px solid var(--border-hover);background:#ffffff05;padding:11px 14px;font-size:13px;font-weight:300;line-height:1.65}.panel-copy{color:var(--text-body);max-width:680px;margin-bottom:16px;font-size:13px;font-weight:300;line-height:1.75}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}@media (width<=560px){.wrap{padding:0 20px}.devlog-link{grid-template-columns:40px 1fr auto;gap:0 12px}.project-grid{grid-template-columns:1fr}.project-card.featured{grid-column:auto}footer{flex-direction:column;gap:12px}.prose p{font-size:14px}.post-nav{grid-template-columns:1fr}}
