@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg:light-dark(#fbfaf7,#090d16);--surface:light-dark(#fff,#0f1522);--surface-2:light-dark(#f2f1ec,#151d2d);--rule:light-dark(#e4e2da,#1f293b);--rule-strong:light-dark(#cfccc1,#2e3a50);--ink:light-dark(#121620,#e6eaf2);--muted:light-dark(#4f5664,#a3adbf);--dim:light-dark(#7a8090,#6f7a8f);--brand:light-dark(#0d9488,#2dd4bf);--brand-2:light-dark(#7c3aed,#a78bfa);--link:light-dark(#0f766e,#5eead4);--ok:light-dark(#15803d,#4ade80);--warn:light-dark(#b45309,#fbbf24);--hot:light-dark(#ea580c,#fb923c);--danger:light-dark(#dc2626,#f87171);--info:light-dark(#2563eb,#60a5fa);--shadow:light-dark(0 1px 2px #1018280d,0 1px 2px #0000004d);--shadow-lg:light-dark(0 16px 40px -18px #10182847,0 18px 44px -18px #000000b3);--font:"IBM Plex Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--r:14px;--cat:var(--brand)}@media (prefers-color-scheme:dark){:root:has(#theme-toggle:checked){color-scheme:light}}@media (prefers-color-scheme:light){:root:has(#theme-toggle:checked){color-scheme:dark}}.cat-net{--cat:light-dark(#0369a1,#38bdf8);--cat-art:#0ea5e9}.cat-id{--cat:light-dark(#6d28d9,#a78bfa);--cat-art:#8b5cf6}.cat-grc{--cat:light-dark(#b45309,#fbbf24);--cat-art:#f59e0b}.cat-ops{--cat:light-dark(#047857,#34d399);--cat-art:#10b981}.cat-risk{--cat:light-dark(#be123c,#fb7185);--cat-art:#f43f5e}.cat-ai{--cat:light-dark(#a21caf,#e879f9);--cat-art:#d946ef}.cat-web{--cat:light-dark(#0f766e,#2dd4bf);--cat-art:#14b8a6}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:24px}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.68;overflow-x:hidden}a{color:var(--link);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:4px}::selection{background:var(--brand);color:#fff}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:650;line-height:1.2}img{max-width:100%;height:auto}.mono{font-family:var(--mono)}.n{opacity:.6;margin-left:2px}.wrap{max-width:1120px;margin:0 auto;padding:0 24px}@media (width<=480px){.wrap{padding:0 16px}}.vh{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{position:absolute;left:-9999px}.skip:focus{z-index:10;background:var(--surface);border:1px solid var(--rule-strong);padding:8px 12px;top:12px;left:16px}.site-header{border-bottom:1px solid var(--rule);background:var(--bg);z-index:2;position:relative}.site-header:after{content:"";background:linear-gradient(90deg, var(--brand), var(--brand-2) 40%, transparent 75%);opacity:.7;height:2px;position:absolute;bottom:-1px;left:0;right:0}.header-inner{align-items:center;gap:22px;min-height:72px;display:flex}.brand{flex-direction:column;margin-right:auto;line-height:1.1;text-decoration:none;display:flex}.brand-title{font-family:var(--mono);color:var(--ink);letter-spacing:-.02em;font-size:22px;font-weight:500}.brand-dot{color:var(--brand)}.brand-by{color:var(--muted);margin-top:3px;font-size:12.5px}.site-header nav{gap:22px;font-size:15px;display:flex}.site-header nav a{color:var(--muted);text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:var(--ink)}.site-header nav a[aria-current=page]{box-shadow:inset 0 -2px 0 var(--brand)}.theme-btn{cursor:pointer;border:1px solid var(--rule);width:36px;height:36px;color:var(--muted);border-radius:9px;flex:none;place-items:center;display:grid}.theme-btn:hover{color:var(--ink);border-color:var(--rule-strong)}.theme-btn svg{width:17px;height:17px}#theme-toggle:focus-visible+.theme-btn{outline:2px solid var(--brand);outline-offset:2px}.theme-btn .to-light{display:none}@media (prefers-color-scheme:dark){.theme-btn .to-light{display:block}.theme-btn .to-dark,#theme-toggle:checked+.theme-btn .to-light{display:none}#theme-toggle:checked+.theme-btn .to-dark{display:block}}@media (prefers-color-scheme:light){#theme-toggle:checked+.theme-btn .to-light{display:block}#theme-toggle:checked+.theme-btn .to-dark{display:none}}@media (width<=600px){.header-inner{gap:14px}.site-header nav{gap:14px;font-size:14px}.site-header nav .ext span{display:none}.brand-title{font-size:19px}}.hero{border-bottom:1px solid var(--rule);background:radial-gradient(ellipse 50% 80% at 90% 0%, light-dark(#7c3aed1a,#a78bfa24), transparent 70%), radial-gradient(ellipse 45% 70% at 65% 110%, light-dark(#0d94881a,#2dd4bf1f), transparent 70%), radial-gradient(light-dark(#12162012,#e6eaf20f) 1px, transparent 1px) 0 0 / 22px 22px, var(--bg);padding:72px 0 56px;position:relative;overflow:hidden}.hero-kicker{color:var(--muted);margin:0 0 14px;font-size:14px}.prompt{color:var(--brand);margin-right:6px}.hero h1{letter-spacing:-.03em;max-width:820px;margin-bottom:18px;font-size:clamp(34px,5.4vw,56px)}.lede{color:var(--muted);max-width:660px;margin:0;font-size:19px}.cat-list{flex-wrap:wrap;gap:8px;margin:28px 0 0;padding:0;list-style:none;display:flex}.hero-small{padding:48px 0 40px}.hero-small h1{margin-bottom:0}.hero-small .lede{margin-top:12px}.cat-text{color:var(--cat)}.back{color:var(--muted);margin-bottom:22px;font-size:13px;text-decoration:none;display:inline-block}.back:hover{color:var(--link)}.cat-chip{color:var(--cat);background:color-mix(in srgb, var(--cat) 12%, transparent);border:1px solid color-mix(in srgb, var(--cat) 30%, transparent);border-radius:999px;align-items:center;gap:4px;padding:6px 10px;font-size:13px;font-weight:550;line-height:1;text-decoration:none;display:inline-flex}.cat-chip:before{content:"";background:var(--cat);border-radius:50%;width:7px;height:7px}a.cat-chip:hover{background:color-mix(in srgb, var(--cat) 20%, transparent);text-decoration:none}.tag-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tag{font-family:var(--mono);color:var(--muted);background:var(--surface-2);border-radius:6px;padding:2px 8px;font-size:13px;text-decoration:none}a.tag:hover{color:var(--link)}.status:before{content:"";vertical-align:1px;background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.status.complete{color:var(--ok)}.status.in-progress{color:var(--warn)}.status.ongoing{color:var(--info)}.feed{padding:40px 0 96px}.section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 16px;font-size:13px;font-weight:500}.section-label+.card-featured{margin-bottom:56px}.grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}@media (width<=980px){.grid{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.grid{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow);flex-direction:column;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;position:relative;overflow:hidden}.card:hover{box-shadow:var(--shadow-lg);border-color:color-mix(in srgb, var(--cat) 45%, var(--rule));transform:translateY(-3px)}.card-media{aspect-ratio:1200/630;background:var(--surface-2);border-bottom:1px solid var(--rule);overflow:hidden}.card-media img,.card-media svg{object-fit:cover;width:100%;height:100%;display:block}.card-body{flex-direction:column;flex:1;padding:18px 20px 20px;display:flex}.card-kicker{color:var(--dim);z-index:1;align-items:center;gap:10px;margin:0 0 12px;font-size:12.5px;display:flex;position:relative}.card-title{margin-bottom:8px;font-size:19px}.card-title a{color:var(--ink);text-decoration:none}.card-title a:after{content:"";position:absolute;inset:0}.card:hover .card-title a{color:var(--cat)}.card-summary{color:var(--muted);flex:1;margin:0 0 16px;font-size:15.5px}.card-meta{color:var(--dim);flex-wrap:wrap;gap:6px 16px;margin:0;font-size:12.5px;display:flex}.has-dl{color:var(--cat)}.card-featured{grid-template-columns:1.25fr 1fr;display:grid}.card-featured .card-media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--rule);min-height:340px}.card-featured .card-body{justify-content:center;padding:32px}.card-featured .card-title{margin-bottom:12px;font-size:clamp(24px,2.6vw,30px)}.card-featured .card-summary{flex:0;margin-bottom:22px;font-size:17px}@media (width<=860px){.card-featured{grid-template-columns:1fr}.card-featured .card-media{aspect-ratio:1200/630;border-right:0;border-bottom:1px solid var(--rule);min-height:0}.card-featured .card-body{padding:22px}}.cover .s0{stop-color:#0a0f1c}.cover .s1{stop-color:color-mix(in srgb, var(--cat-art) 42%, #0a0f1c)}.cover .g0{stop-color:var(--cat-art);stop-opacity:.38}.cover .g1{stop-color:var(--cat-art);stop-opacity:0}.cover .pdot{fill:#ffffff17}.cover .ln{stroke:color-mix(in srgb, var(--cat-art) 70%, white);stroke-opacity:.45;stroke-width:2px}.cover .dot{fill:color-mix(in srgb, var(--cat-art) 55%, white);fill-opacity:.85}.cover .hi{fill:#fff}.cover .hi-stroke{stroke:#fff!important;stroke-opacity:.9!important}.cover .ring{fill:none;stroke:color-mix(in srgb, var(--cat-art) 65%, white);stroke-opacity:.5;stroke-width:3px}.cover .cell{stroke-width:2px}.cover .cell.c1{fill:color-mix(in srgb, var(--cat-art) 20%, transparent);stroke:color-mix(in srgb, var(--cat-art) 45%, transparent)}.cover .cell.c2{fill:color-mix(in srgb, var(--cat-art) 45%, transparent);stroke:color-mix(in srgb, var(--cat-art) 75%, transparent)}.cover .cell.c3{fill:#f87171;fill-opacity:.75;stroke:#fecaca;stroke-opacity:.6}.cover .bar{fill:color-mix(in srgb, var(--cat-art) 70%, white);fill-opacity:.55}.cover .thresh{stroke:#fbbf24;stroke-width:3px;stroke-dasharray:12 10;stroke-opacity:.85}.cover .trendline{fill:none;stroke:color-mix(in srgb, var(--cat-art) 60%, white);stroke-width:6px;stroke-linejoin:round;stroke-linecap:round}.cover .layer{fill:color-mix(in srgb, var(--cat-art) 14%, transparent);stroke:color-mix(in srgb, var(--cat-art) 70%, white);stroke-opacity:.55;stroke-width:3px}.cover .cv-label{font-family:var(--mono);letter-spacing:3px;fill:#ffffffd1;font-size:26px}.article-head{padding:48px 0 0}.article-head h1{letter-spacing:-.03em;max-width:880px;margin-bottom:16px;font-size:clamp(30px,4.6vw,48px)}.article-head .lede{max-width:760px;margin-bottom:18px}.article-cover{border-radius:var(--r);border:1px solid var(--rule);aspect-ratio:1200/480;box-shadow:var(--shadow-lg);margin-top:32px;overflow:hidden}.article-cover img,.article-cover svg{object-fit:cover;width:100%;height:100%;display:block}@media (width<=640px){.article-cover{aspect-ratio:1200/630}}.article-grid{grid-template-columns:minmax(0,1fr) 260px;gap:56px;padding-top:48px;padding-bottom:32px;display:grid}.article-main{min-width:0}.article-side{flex-direction:column;align-self:start;gap:20px;display:flex;position:sticky;top:24px}@media (width<=960px){.article-grid{grid-template-columns:1fr;gap:32px}.article-side{order:-1;position:static}.toc{display:none}}.side-title{letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.toc ol{margin:0;padding-left:20px;font-size:14.5px}.toc li{margin-bottom:6px}.toc li::marker{color:var(--cat);font-family:var(--mono);font-size:12px}.toc a{color:var(--muted);text-decoration:none}.toc a:hover{color:var(--ink)}.downloads,.related{border:1px solid color-mix(in srgb, var(--cat) 35%, var(--rule));border-radius:var(--r);background:color-mix(in srgb, var(--cat) 6%, var(--surface));padding:16px}.downloads ul,.related ul{gap:12px;margin:0;padding:0;list-style:none;display:grid}.downloads a{background:var(--surface);border:1px solid var(--rule);border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;text-decoration:none;display:flex}.downloads a:hover{border-color:var(--cat)}.dl-title{color:var(--ink);font-size:15px;font-weight:600}.dl-title:before{content:"↓ ";color:var(--cat)}.dl-meta{color:var(--cat);font-size:12px}.downloads p{color:var(--muted);margin:6px 2px 0;font-size:13.5px;line-height:1.5}.glance{border-radius:var(--r);background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--cat);margin:0 0 40px;padding:20px 22px}.glance-title{letter-spacing:.1em;text-transform:uppercase;color:var(--cat);margin:0 0 12px;font-size:12px;font-weight:500}.glance dl{grid-template-columns:repeat(2,1fr);gap:14px 28px;margin:0;display:grid}.glance dt{font-family:var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.glance dd{margin:2px 0 0;font-size:15px}@media (width<=560px){.glance dl{grid-template-columns:1fr}}.figure{max-width:560px;margin:0 0 40px}.figure figcaption{color:var(--dim);font-size:13px;font-family:var(--mono);margin-top:10px}.prose{counter-reset:sec;max-width:72ch}.prose>:first-child{margin-top:0}.prose h2{border-top:1px solid var(--rule);margin:56px 0 16px;padding-top:22px;scroll-margin-top:24px;font-size:26px}.prose h2:before{counter-increment:sec;content:counter(sec, decimal-leading-zero);font-family:var(--mono);color:var(--cat);letter-spacing:.08em;margin-bottom:6px;font-size:13px;font-weight:500;display:block}.prose>h2:first-child{margin-top:0}.prose h3{margin:32px 0 10px;font-size:19px}.prose p,.prose ul,.prose ol,.prose table,.prose pre,.prose blockquote{margin:0 0 20px}.prose ul,.prose ol{padding-left:22px}.prose li{margin-bottom:8px}.prose li::marker{color:var(--cat)}.prose strong{font-weight:650}.prose code{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--rule);border-radius:5px;padding:1px 6px;font-size:.86em}.prose pre{font-family:var(--mono);color:#e6eaf2;border:1px solid var(--rule);background:#0b1020;border-radius:12px;padding:18px 20px;font-size:14px;line-height:1.6;overflow-x:auto}.prose pre code{color:inherit;background:0 0;border:0;padding:0}.prose blockquote{border-left:4px solid var(--cat);background:color-mix(in srgb, var(--cat) 7%, var(--surface));color:var(--ink);border-radius:0 10px 10px 0;padding:14px 18px}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px solid var(--rule);margin:40px 0}.prose p:has(>img){margin:32px 0}.prose p>img{border:1px solid var(--rule);width:100%;box-shadow:var(--shadow);background:#fff;border-radius:12px;display:block}.prose p:has(>img)>em{font-style:normal;font-family:var(--mono);color:var(--dim);margin-top:10px;font-size:13px;display:block}.prose table{border-collapse:collapse;width:100%;font-size:15px;display:block;overflow-x:auto}.prose thead th{text-align:left;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);font-size:12px;font-weight:500}.prose th,.prose td{border-bottom:1px solid var(--rule);vertical-align:top;padding:10px 14px}.prose tbody tr:hover{background:color-mix(in srgb, var(--cat) 5%, transparent)}.article-tags{margin-top:40px}.pager{border-top:1px solid var(--rule-strong);grid-template-columns:1fr 1fr;gap:16px;margin:24px 0 96px;padding-top:28px;display:grid}.pager a{color:var(--ink);border:1px solid var(--rule);border-radius:var(--r);background:var(--surface);flex-direction:column;gap:4px;padding:16px 18px;font-weight:550;text-decoration:none;display:flex}.pager a:hover{border-color:var(--brand)}.pager a span{color:var(--dim);font-size:12px;font-weight:400}.pager .next{text-align:right}@media (width<=560px){.pager{grid-template-columns:1fr}.pager .next{text-align:left}}.template-list{gap:16px;margin:0;padding:0;list-style:none;display:grid}.template{border-radius:var(--r);background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--cat);grid-template-columns:72px 1fr auto;align-items:center;gap:20px;padding:20px;display:grid}.template-badge{width:72px;height:72px;color:var(--cat);background:color-mix(in srgb, var(--cat) 12%, transparent);border-radius:12px;place-items:center;font-size:14px;font-weight:500;display:grid}.template h2{margin-bottom:4px;font-size:19px}.template p{color:var(--muted);margin:0 0 4px;font-size:15px}.template-from{font-size:12.5px;color:var(--dim)!important}.btn{background:var(--cat);color:light-dark(#fff,#0a0f1c);white-space:nowrap;border-radius:10px;align-items:center;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{filter:brightness(1.08)}@media (width<=640px){.template{grid-template-columns:1fr}.template-badge{width:56px;height:56px}}.post-list{border-top:1px solid var(--rule-strong);margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--rule);grid-template-columns:130px 1fr;gap:24px;padding:22px 0;display:grid}.post-list time{color:var(--dim);padding-top:4px;font-size:13px}.post-list h2{margin-bottom:4px;font-size:20px}.post-list h2 a{color:var(--ink);text-decoration:none}.post-list p{color:var(--muted);margin:0}@media (width<=560px){.post-list li{grid-template-columns:1fr;gap:4px}}.site-footer{border-top:1px solid var(--rule);color:var(--muted);background:var(--surface);padding:36px 0 44px;font-size:14px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px 40px;display:flex}.footer-title{font-family:var(--mono);color:var(--ink);margin:0;font-size:18px}.footer-by{margin:2px 0 0;font-size:13px}.footer-right{text-align:right}.footer-links{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin:0 0 4px;display:flex}.footer-meta{font-family:var(--mono);color:var(--dim);margin:0;font-size:12px}@media (width<=640px){.footer-right{text-align:left}.footer-links{justify-content:flex-start}}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r)}.matrix{padding:20px}.matrix-head{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);justify-content:space-between;align-items:center;margin-bottom:16px;font-size:11.5px;display:flex}.matrix-body{grid-template-columns:18px 1fr;gap:8px;display:grid}.axis-y{writing-mode:vertical-rl;text-align:center;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-size:10.5px;transform:rotate(180deg)}.axis-x{text-align:center;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);grid-column:2;font-size:10.5px}.grid5{aspect-ratio:5/4;grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.cell{--c:var(--brand);--a:12%;background:color-mix(in srgb, var(--c) var(--a), transparent);border:1px solid color-mix(in srgb, var(--c) calc(var(--a) * 2.6), transparent);border-radius:4px;place-items:center;display:grid;position:relative}.cell.s1{--a:8%}.cell.s2{--a:16%}.cell.s3{--c:var(--warn);--a:18%}.cell.s4{--c:var(--hot);--a:24%}.cell.s5{--c:var(--danger);--a:34%}.risk{font-family:var(--mono);background:var(--surface);color:var(--ink);border:1px solid var(--rule-strong);border-radius:5px;padding:2px 6px;font-size:11px;font-weight:500}.legend{color:var(--muted);grid-template-columns:1fr 1fr;gap:6px 16px;margin:14px 0 0;padding:0;font-size:13px;list-style:none;display:grid}.legend b{font-family:var(--mono);color:var(--ink);margin-right:6px;font-size:11px;font-weight:500}.matrix-foot{display:none}@media (width<=480px){.legend{grid-template-columns:1fr}}
