:root{--bg: #f5f7fb;--card: #ffffff;--ink: #0f172a;--muted: #5b6478;--line: #e2e7ef;--acc: #1d4ed8;--acc-soft: #e8efff;--code-bg: #f0f3f9;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -12px rgba(15, 23, 42, .12);--sans: Inter, "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;--mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, "Liberation Mono", monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0b0f14;--card: #111721;--ink: #e5e9f0;--muted: #8a94a6;--line: #1f2937;--acc: #7aa2f7;--acc-soft: #15213a;--code-bg: #0d1219;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -12px rgba(0, 0, 0, .6);color-scheme:dark}}:root[data-theme=dark]{--bg: #0b0f14;--card: #111721;--ink: #e5e9f0;--muted: #8a94a6;--line: #1f2937;--acc: #7aa2f7;--acc-soft: #15213a;--code-bg: #0d1219;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -12px rgba(0, 0, 0, .6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:4px}img{max-width:100%;height:auto}h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.015em;font-weight:700}p{margin:0}.wrap{width:100%;max-width:1100px;margin:0 auto;padding:0 24px}.skip{position:absolute;left:16px;top:-100px;background:var(--acc);color:#fff;padding:8px 12px;border-radius:6px;z-index:100}.skip:focus{top:16px}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:64px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;letter-spacing:-.01em;white-space:nowrap}.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--acc);color:#fff;display:inline-grid;place-items:center;font-family:var(--mono);font-size:12px;font-weight:600}.nav{display:flex;align-items:center;gap:24px;font-size:14px;font-weight:600;color:var(--muted)}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--acc);text-underline-offset:6px;text-decoration-thickness:2px}.controls{display:flex;align-items:center;gap:8px}.control{height:34px;min-width:34px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-family:var(--mono);font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}.control:hover{border-color:var(--acc)}.control svg{width:16px;height:16px}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:block}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:none}}main{min-height:60vh}.section{padding:48px 0}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:24px}.section-head h2{font-size:26px}.section-head a{font-size:14px;font-weight:600;color:var(--acc)}.section-sub{color:var(--muted);margin-top:-16px;margin-bottom:24px;max-width:640px}.hero{padding:72px 0 40px}.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--acc);font-weight:600;margin-bottom:18px}.hero h1{font-size:clamp(32px,5vw,50px);max-width:820px;letter-spacing:-.025em}.lead{font-size:18px;color:var(--muted);max-width:640px;margin-top:22px}.cta{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;padding:11px 18px;border-radius:10px;font-weight:700;font-size:14px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.btn:hover{border-color:var(--acc)}.btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.grid{display:grid;gap:18px}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:8px;transition:border-color .15s ease,transform .15s ease}a.card:hover{border-color:var(--acc);transform:translateY(-1px)}.card h3{font-size:18px}.card p{color:var(--muted);font-size:14.5px;flex:1}.meta{font-family:var(--mono);font-size:12px;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;align-items:center}.meta .sep:before{content:"·"}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-family:var(--mono);font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--acc-soft);color:var(--acc)}a.chip:hover{filter:brightness(.95)}.count{font-family:var(--mono);font-size:12px;color:var(--muted)}.post-list{display:flex;flex-direction:column;gap:14px}.post-row{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px 24px;display:grid;grid-template-columns:1fr auto;gap:8px 24px;align-items:start;transition:border-color .15s ease}.post-row:hover{border-color:var(--acc)}.post-row h3{font-size:19px;line-height:1.3}.post-row p{color:var(--muted);font-size:15px;grid-column:1}.post-row .meta{grid-column:1}.post-row time{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap;grid-column:2;grid-row:1}.principles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.principle{padding:22px 0 0;border-top:2px solid var(--acc)}.principle h3{font-size:17px;margin-bottom:8px}.principle p{color:var(--muted);font-size:14.5px}.page-head{padding:56px 0 8px}.page-head h1{font-size:clamp(30px,4vw,40px)}.page-head .lead{margin-top:14px}.article-head{padding:56px 0 24px;border-bottom:1px solid var(--line)}.article-head h1{font-size:clamp(30px,4vw,42px);max-width:820px;margin:16px 0 14px}.article-head .lead{margin-top:0;font-size:18px}.article-body{padding:32px 0 48px}.prose{max-width:72ch;font-size:17px;line-height:1.75}.prose>*+*{margin-top:1.1em}.prose h2{font-size:26px;margin-top:2em}.prose h3{font-size:20px;margin-top:1.6em}.prose a{color:var(--acc);text-decoration:underline;text-underline-offset:3px}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose blockquote{margin:1.4em 0;padding:4px 20px;border-left:3px solid var(--acc);color:var(--muted)}.prose code{font-family:var(--mono);font-size:.88em;background:var(--code-bg);padding:2px 6px;border-radius:5px}.prose pre{background:var(--code-bg)!important;border:1px solid var(--line);border-radius:10px;padding:16px 18px;overflow-x:auto;font-size:14px;line-height:1.6}.prose pre code{background:none;padding:0;font-size:inherit}.prose table{width:100%;border-collapse:collapse;font-size:15px;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}.prose th{font-weight:700}.prose hr{border:0;border-top:1px solid var(--line)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}.article-foot{border-top:1px solid var(--line);padding:28px 0 56px;display:flex;flex-direction:column;gap:18px}.notice{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 20px;font-size:15px;color:var(--muted)}.notice a{color:var(--acc);font-weight:600}.back{font-size:14px;font-weight:600;color:var(--acc)}.about-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;padding:24px 0 56px}.about-grid .prose{max-width:none}.stack{display:flex;flex-direction:column;gap:12px}.stack-item{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.stack-item b{display:block;font-size:13px;margin-bottom:4px}.stack-item span{font-family:var(--mono);font-size:13px;color:var(--muted)}.site-footer{border-top:1px solid var(--line);padding:32px 0;color:var(--muted);font-size:13px}.site-footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.site-footer nav{display:flex;gap:18px}.site-footer a:hover{color:var(--ink)}.notfound{padding:96px 0;text-align:center}.notfound .code{font-family:var(--mono);font-size:64px;color:var(--acc);font-weight:600}.notfound h1{font-size:28px;margin:12px 0}.notfound p{color:var(--muted)}.notfound .cta{justify-content:center}.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}.hero-illus svg{width:100%;height:auto;display:block;color:var(--acc)}.illus .n-card{fill:var(--card)}.illus .n-soft{fill:var(--acc-soft)}.illus .n-dots{fill:currentColor;opacity:.18}.illus .n-label{font-family:var(--mono);font-size:12px;fill:var(--muted);stroke:none}.icon{width:44px;height:44px;border-radius:12px;background:var(--acc-soft);color:var(--acc);display:inline-grid;place-items:center;flex-shrink:0}.icon svg{width:24px;height:24px}.icon.big{width:64px;height:64px;border-radius:18px}.icon.big svg{width:34px;height:34px}.card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.grid-topics{grid-template-columns:repeat(5,minmax(0,1fr))}.topic-card h3{font-size:16px}.topic-card p{font-size:13.5px}.topic-head{display:flex;align-items:center;gap:18px}.topic-head .kicker{margin-bottom:6px}.article-head{padding:40px 24px 0;border-bottom:0}.article-band{background:linear-gradient(135deg,var(--acc-soft),transparent 65%),var(--card);border:1px solid var(--line);border-radius:18px;padding:32px 36px;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}.article-band h1{font-size:clamp(28px,3.6vw,38px);margin:14px 0 12px;max-width:760px}.article-band .lead{margin-top:0;font-size:17px}.article-band .chips{margin-top:16px}.band-icon{width:96px;height:96px;border-radius:26px}.band-icon svg{width:48px;height:48px;stroke-width:1.5}:root{--bad: #dc2626}:root[data-theme=dark]{--bad: #f87171}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bad: #f87171}}.diagram,.prose h2,.prose h3{scroll-margin-top:84px}.diagram{margin:0 0 36px;max-width:760px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px 14px}.diagram-svg svg{width:100%;height:auto;display:block;font-family:var(--sans)}.diagram figcaption{font-family:var(--mono);font-size:12.5px;color:var(--muted);margin-top:12px;line-height:1.5}.d-box{fill:var(--bg);stroke:var(--line);stroke-width:1.5}.d-box.acc{fill:var(--acc-soft);stroke:var(--acc)}.d-box.bad{stroke:var(--bad);stroke-dasharray:4 3}.d-txt{font-size:13px;font-weight:600;fill:var(--ink)}.d-sub{font-size:11px;font-family:var(--mono);fill:var(--muted)}.d-sub.d-strong{fill:var(--ink);font-weight:600}.d-sub.d-small{font-size:10px}.d-bad-txt{fill:var(--bad)}.d-arr{fill:none;stroke:var(--muted);stroke-width:1.5}.d-arr.acc{stroke:var(--acc)}.d-arr.bad{stroke:var(--bad)}.d-dash{stroke-dasharray:4 4}.d-line{stroke:var(--line);stroke-width:1.5}.d-mk{fill:var(--muted)}.d-mk-acc{fill:var(--acc)}.d-mk-bad{fill:var(--bad)}@media(max-width:1000px){.grid-topics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:880px){.hero{grid-template-columns:1fr}.hero-illus{max-width:420px}}@media(max-width:640px){.grid-topics{grid-template-columns:1fr 1fr}.article-band{grid-template-columns:1fr;padding:24px}.band-icon{display:none}.topic-head{align-items:flex-start}}@media(max-width:480px){.grid-topics{grid-template-columns:1fr}}@media(max-width:880px){.grid-3,.principles{grid-template-columns:1fr 1fr}.about-grid{grid-template-columns:1fr}}@media(max-width:640px){.site-header .wrap{height:auto;flex-wrap:wrap;padding-top:12px;padding-bottom:12px;row-gap:10px}.nav{order:3;width:100%;gap:18px}.grid-3,.grid-2,.principles,.post-row{grid-template-columns:1fr}.post-row time{grid-column:1;grid-row:auto}.hero{padding-top:48px}.section{padding:36px 0}}
