:root{--bg:#faf8f4;--bg-elev:#fff;--bg-soft:#f1eee6;--ink:#15171c;--ink-soft:#454a55;--ink-mute:#747a87;--line:#e3ded1;--accent:#d9480f;--accent-ink:#fff;--shadow:0 1px 2px #14141e0d, 0 8px 24px -12px #14141e26;--radius:14px;--maxw:72rem;--prose:42rem;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;color-scheme:light}:root[data-theme=dark]{--bg:#0d0f12;--bg-elev:#15181d;--bg-soft:#1b1f26;--ink:#eceef2;--ink-soft:#b5bbc7;--ink-mute:#8a91a0;--line:#262a32;--accent:#ff8a4c;--accent-ink:#1a0d05;--shadow:0 1px 2px #0006, 0 12px 28px -14px #000000b3;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);flex-direction:column;min-height:100vh;margin:0;font-size:1.0625rem;line-height:1.65;transition:background-color .25s,color .25s;display:flex}main{flex:1}img,svg,video{max-width:100%;height:auto}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}h1,h2,h3,h4{font-family:var(--font-serif);letter-spacing:-.01em;margin:0 0 .5em;line-height:1.2}h1{font-size:clamp(2rem,4.5vw + .5rem,3.4rem)}h2{font-size:clamp(1.5rem,2vw + .8rem,2.1rem)}h3{font-size:1.3rem}p{margin:0 0 1em}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}::selection{background:color-mix(in srgb, var(--accent) 30%, transparent)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--ink);color:var(--bg);z-index:100;border-radius:8px;padding:.6rem 1rem;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.container{width:min(100% - 2.5rem, var(--maxw));margin-inline:auto}.narrow{width:min(100% - 2.5rem, var(--prose));margin-inline:auto}.mono{font-family:var(--font-mono)}.muted{color:var(--ink-mute)}.section{padding-block:clamp(2.5rem,6vw,4.5rem)}.section+.section{padding-top:0}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:saturate(1.4)blur(12px);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{align-items:center;gap:1rem;height:4rem;display:flex}.brand{color:var(--ink);font-family:var(--font-mono);letter-spacing:.04em;align-items:center;gap:.6rem;font-size:1.1rem;font-weight:700;text-decoration:none;display:inline-flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--ink);width:1.9rem;height:1.9rem;color:var(--accent);border-radius:8px;place-items:center;font-size:.95rem;transition:transform .25s;display:grid}.brand:hover .brand-mark{transform:rotate(-6deg)scale(1.05)}.nav{align-items:center;gap:.25rem;margin-left:auto;display:flex}.nav a{color:var(--ink-soft);border-radius:999px;padding:.45rem .8rem;font-size:.95rem;font-weight:500;text-decoration:none}.nav a:hover{background:var(--bg-soft);color:var(--ink)}.nav a[aria-current=page]{color:var(--ink);background:var(--bg-soft)}.icon-btn{border:1px solid var(--line);background:var(--bg-elev);width:2.4rem;height:2.4rem;color:var(--ink);cursor:pointer;border-radius:999px;place-items:center;text-decoration:none;display:inline-grid}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.icon-btn svg{width:1.15rem;height:1.15rem}.theme-toggle .moon,:root[data-theme=dark] .theme-toggle .sun{display:none}:root[data-theme=dark] .theme-toggle .moon{display:block}.header-actions{gap:.5rem;margin-left:.5rem;display:flex}.menu-wrap{display:none}@media (width<=52rem){.nav{display:none}.header-actions{margin-left:auto}.menu-wrap{display:block;position:relative}.menu-wrap summary{list-style:none}.menu-wrap summary::-webkit-details-marker{display:none}.menu-panel{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);min-width:14rem;box-shadow:var(--shadow);padding:.5rem;display:grid;position:absolute;top:3rem;right:0}.menu-panel a{color:var(--ink);border-radius:10px;padding:.7rem .9rem;text-decoration:none}.menu-panel a:hover,.menu-panel a[aria-current=page]{background:var(--bg-soft)}}.site-footer{border-top:1px solid var(--line);color:var(--ink-mute);margin-top:4rem;padding-block:2.5rem;font-size:.92rem}.footer-grid{grid-template-columns:1.4fr repeat(2,1fr);gap:2rem;display:grid}.footer-grid h2{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mute);margin-bottom:.8rem;font-size:.78rem}.footer-grid ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.footer-grid a{color:var(--ink-soft);text-decoration:none}.footer-grid a:hover{color:var(--accent)}.footer-bottom{border-top:1px dashed var(--line);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-top:2rem;padding-top:1.2rem;display:flex}@media (width<=40rem){.footer-grid{grid-template-columns:1fr}}.hero{padding-block:clamp(3rem,9vw,6.5rem) clamp(2rem,5vw,3.5rem);position:relative;overflow:hidden}.hero:before{content:"";background:radial-gradient(closest-side, color-mix(in srgb, var(--accent) 22%, transparent), transparent);pointer-events:none;z-index:-1;width:38rem;height:38rem;position:absolute;inset:-30% -10% auto auto}.kicker{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.82rem;display:inline-flex}.kicker:before{content:"";background:currentColor;width:1.6rem;height:2px}.hero h1{max-width:16ch}.hero .lede{max-width:38rem;color:var(--ink-soft);font-size:1.2rem}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.btn{border:1px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.5rem;padding:.7rem 1.2rem;font-family:inherit;font-size:.98rem;font-weight:600;text-decoration:none;transition:transform .15s,background-color .2s;display:inline-flex}.btn:hover{background:var(--bg-soft);text-decoration:none;transform:translateY(-1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:color-mix(in srgb, var(--accent) 88%, black)}.search-box{max-width:34rem;margin-top:1.75rem;display:flex;position:relative}.search-box input{border:1px solid var(--line);background:var(--bg-elev);width:100%;color:var(--ink);font:inherit;box-shadow:var(--shadow);border-radius:999px;padding:.85rem 1.1rem .85rem 2.9rem;font-size:1rem}.search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 20%, transparent);outline:none}.search-box svg{width:1.2rem;color:var(--ink-mute);pointer-events:none;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.result-list{gap:.75rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.result{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);color:var(--ink);padding:1rem 1.25rem;text-decoration:none;display:block}.result:hover{border-color:var(--accent)}.result strong{font-family:var(--font-serif);font-size:1.15rem}.result p{color:var(--ink-soft);margin:.25rem 0 0;font-size:.95rem}.result .meta{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mute);font-size:.75rem}.section-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem;padding-bottom:.75rem;display:flex}.section-head h2{margin:0}.section-head .more{font-family:var(--font-mono);font-size:.85rem;text-decoration:none}.page-head{padding-block:clamp(2.5rem,6vw,4rem) 1.5rem}.page-head .lede{color:var(--ink-soft);max-width:40rem;font-size:1.15rem}.grid{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1.5rem;display:grid}.grid.two{grid-template-columns:repeat(auto-fill,minmax(22rem,1fr))}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;transition:transform .2s,border-color .2s,box-shadow .2s;animation:.5s both rise;display:flex;position:relative;overflow:hidden}.card:hover{border-color:var(--card-accent,var(--accent));box-shadow:var(--shadow);transform:translateY(-3px)}.card-body{flex-direction:column;flex:1;gap:.5rem;padding:1.1rem 1.25rem 1.3rem;display:flex}.card h3{margin:0;font-size:1.28rem}.card h3 a{color:var(--ink);text-decoration:none}.card h3 a:after{content:"";position:absolute;inset:0}.card p{color:var(--ink-soft);margin:0;font-size:.97rem}.card-meta{color:var(--ink-mute);font-size:.82rem;font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:.4rem .9rem;display:flex}.card.featured{grid-column:1/-1}@media (width>=52rem){.card.featured{flex-direction:row}.card.featured .cover{aspect-ratio:auto;flex:52%;min-height:18rem}.card.featured .card-body{flex:48%;justify-content:center;padding:2rem}.card.featured h3{font-size:1.9rem}}.cover{aspect-ratio:16/9;object-fit:cover;background:var(--bg-soft);width:100%;display:block}.cover.generated{background:linear-gradient(135deg, color-mix(in srgb, var(--cover-accent) 85%, #000) 0%, color-mix(in srgb, var(--cover-accent) 55%, var(--bg-soft)) 100%);place-items:center;display:grid;position:relative;overflow:hidden}.cover.generated:before{content:"";background-image:linear-gradient(#ffffff1a 1px,#0000 1px),linear-gradient(90deg,#ffffff1a 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;mask-image:radial-gradient(circle at 70% 30%,#000,#0000 70%)}.cover.generated span{font-family:var(--font-mono);color:#ffffffe6;letter-spacing:.06em;font-size:2.2rem;font-weight:700;position:relative}.chip{border:1px solid var(--line);background:var(--bg-soft);color:var(--ink-soft);font-size:.78rem;font-family:var(--font-mono);z-index:2;border-radius:999px;align-items:center;gap:.4rem;padding:.15rem .65rem;text-decoration:none;display:inline-flex;position:relative}a.chip:hover{border-color:var(--accent);color:var(--accent)}.chip .dot{background:var(--chip-accent,var(--accent));border-radius:50%;width:.55rem;height:.55rem}.chip-row{flex-wrap:wrap;gap:.4rem;display:flex}.badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#fff;background:#c2255c;border-radius:6px;padding:.12rem .5rem;font-size:.7rem;font-weight:700}.badge.demo{background:#5f3dc4}.badge.status{background:var(--bg-soft);color:var(--ink-soft);border:1px solid var(--line)}.empty{border:1px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--ink-mute);background:color-mix(in srgb, var(--bg-soft) 50%, transparent);padding:2rem}.empty strong{color:var(--ink);font-family:var(--font-serif);margin-bottom:.3rem;font-size:1.15rem;display:block}.empty code{font-size:.85rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.blog-hero{border-bottom:1px solid var(--line);background:linear-gradient(180deg, color-mix(in srgb, var(--blog-accent) 9%, transparent), transparent);padding-block:2.5rem 1.5rem}.blog-hero-inner{grid-template-columns:1.3fr 1fr;align-items:center;gap:2rem;display:grid}.blog-hero .cover{border-radius:var(--radius);border:1px solid var(--line)}.blog-hero .kicker{color:var(--blog-accent)}@media (width<=52rem){.blog-hero-inner{grid-template-columns:1fr}}.layout-2{grid-template-columns:minmax(0,1fr) 16rem;gap:3rem;padding-block:2.5rem;display:grid}.sidebar h2{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mute);font-size:.78rem}.sidebar section{margin-bottom:2rem}@media (width<=62rem){.layout-2{grid-template-columns:1fr}}.article-head{padding-block:clamp(2rem,5vw,3.5rem) 1.5rem}.article-head h1{font-size:clamp(2rem,4vw + .5rem,3.1rem)}.article-head .lede{color:var(--ink-soft);font-size:1.2rem;font-family:var(--font-serif)}.byline{font-family:var(--font-mono);color:var(--ink-mute);flex-wrap:wrap;align-items:center;gap:.4rem 1rem;margin-block:1rem;font-size:.82rem;display:flex}.article-cover{border-radius:var(--radius);border:1px solid var(--line);margin-block:0 2rem}.notice{background:#5f3dc41a;border-left:4px solid #5f3dc4;border-radius:0 10px 10px 0;margin-bottom:1.5rem;padding:.8rem 1rem;font-size:.95rem}.notice.draft{background:#c2255c1a;border-color:#c2255c}.prose{font-size:1.1rem;line-height:1.8}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2.2em}.prose h3{margin-top:1.8em}.prose h2,.prose h3{scroll-margin-top:5.5rem}.prose blockquote{border-left:3px solid var(--accent);color:var(--ink-soft);font-family:var(--font-serif);margin-inline:0;padding:.2rem 1.2rem;font-size:1.15em}.prose img{border-radius:10px}.prose code{font-family:var(--font-mono);background:var(--bg-soft);border-radius:6px;padding:.12em .4em;font-size:.88em}.prose pre{border:1px solid var(--line);border-radius:12px;padding:1rem 1.2rem;font-size:.9rem;line-height:1.6;overflow-x:auto;background:var(--bg-elev)!important}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;font-size:.95em;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:.5rem .8rem}.prose th{background:var(--bg-soft)}.prose hr{border:0;border-top:1px solid var(--line);margin-block:2.5rem}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.35em}.astro-code,.astro-code span{color:var(--shiki-light)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)}.toc{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);padding:1rem 1.2rem;font-size:.92rem}.toc h2{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:.5rem;font-size:.75rem}.toc ol{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.toc ol ol{margin-top:.3rem;padding-left:1rem}.toc a{color:var(--ink-soft);text-decoration:none}.toc a:hover{color:var(--accent)}.abstract{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);margin-block:1.5rem;padding:1.2rem 1.5rem}.abstract h2{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:.4rem;font-size:.78rem}.abstract p{font-family:var(--font-serif);margin:0;font-size:1.05rem}.sources{border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem;font-size:.95rem}.sources h2{font-size:1.2rem}.callout{border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--bg-elev);border-radius:0 12px 12px 0;margin-block:1.5rem;padding:.9rem 1.2rem}.callout ul{margin:.4rem 0 0;padding-left:1.2rem}.journal-head{text-align:center;padding-block:clamp(3rem,8vw,5.5rem) 1.5rem}.journal-head .byline{justify-content:center}.journal .prose{font-family:var(--font-serif);font-size:1.2rem}.journal .prose>p:first-of-type:first-letter{float:left;color:var(--accent);padding:.35rem .6rem 0 0;font-size:4.2rem;font-weight:700;line-height:.85}.post-nav{border-top:1px solid var(--line);margin-top:4rem;padding-top:2rem}.gallery{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;margin-block:1.5rem;display:grid}.gallery figure{margin:0}.gallery img{border:1px solid var(--line);border-radius:10px;width:100%}.gallery figcaption{color:var(--ink-mute);margin-top:.4rem;font-size:.85rem}.link-row{flex-wrap:wrap;gap:.6rem;margin-block:1rem;display:flex}.detail-list{grid-template-columns:max-content 1fr;gap:.4rem 1.2rem;margin-block:1.5rem;font-size:.95rem;display:grid}.detail-list dt{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mute);padding-top:.15rem;font-size:.78rem}.detail-list dd{margin:0}.yt{aspect-ratio:16/9;border-radius:var(--radius);border:1px solid var(--line);background:#000;position:relative;overflow:hidden}.yt iframe,.yt button{border:0;width:100%;height:100%;position:absolute;inset:0}.yt button{cursor:pointer;background:#000 50%/cover no-repeat;padding:0}.yt button:after{content:"";background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M9 6.5v11l9-5.5z'/%3E%3C/svg%3E") center / 55% no-repeat;border-radius:50%;width:4.5rem;height:4.5rem;transition:transform .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000080}.yt button:hover:after{transform:translate(-50%,-50%)scale(1.08)}.yt-note{color:var(--ink-mute);margin-top:.5rem;font-size:.8rem}.video-card .thumb{position:relative}.video-card .thumb:after{content:"▶";color:#fff;background:#000000b3;border-radius:50%;place-items:center;width:2.4rem;height:2.4rem;font-size:.85rem;display:grid;position:absolute;bottom:.8rem;right:.8rem}.stats{font-family:var(--font-mono);flex-wrap:wrap;gap:2rem;margin-top:2.5rem;display:flex}.stats div{display:grid}.stats strong{font-size:1.8rem;font-family:var(--font-serif);color:var(--ink);line-height:1}.stats span{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mute);font-size:.75rem}.error-page{text-align:center;padding-block:6rem}.error-page .code{font-family:var(--font-mono);color:var(--accent);font-size:clamp(4rem,14vw,9rem);font-weight:800;line-height:1}
