:root{--bg:#f6f7fb;--panel:#fff;--header-h:56px;--sep:#cbd5e1;--text:#1f2937;--muted:#6b7280;--link:#2563eb;--link-hover:#1d4ed8;--accent:#0ea5e9;--border:#e5e7eb}:root[data-theme=dark]{--bg:#0f172a;--panel:#0b1220;--sep:#94a3b859;--text:#e5e7eb;--muted:#94a3b8;--link:#60a5fa;--link-hover:#93c5fd;--accent:#22d3ee;--border:#94a3b847}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.7 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html{scroll-behavior:smooth}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover);text-decoration:underline}.site-header,main,.site-footer{width:100%}.wrap{max-width:1180px;margin:0 auto;padding:0 24px}.site-header{border-bottom:1px solid var(--sep);background:var(--panel);z-index:2000;box-shadow:0 1px 0 var(--sep);position:fixed;top:0;left:0;right:0}.site-header .wrap{height:var(--header-h);justify-content:space-between;align-items:center;gap:16px;display:flex}.site-header .wrap .left{align-items:center;gap:10px;display:flex}.site-header .wrap .right{align-items:center;gap:12px;display:flex}.site-header .wrap .brand{font-weight:700}.site-header a{font-weight:600}nav a{color:var(--muted)}.site-header nav{align-items:center;gap:12px;display:flex}.site-header nav a{margin-right:0}nav a:hover{color:var(--link)}.theme-switch{--track:#94a3b840;--thumb:#fff;--icon:#334155;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;margin-left:8px;padding:0;display:inline-flex}.theme-switch .switch-track{border:1px solid var(--border);background:linear-gradient(#ffffffe6,#f5f6fae6);border-radius:0;width:56px;height:30px;position:relative;box-shadow:inset 0 1px 3px #0000000f}.theme-switch .switch-thumb{background:var(--thumb);border-radius:0;width:24px;height:24px;transition:transform .18s,background-color .18s;position:absolute;top:50%;left:3px;transform:translateY(-50%);box-shadow:0 2px 6px #0000002e}.theme-switch .switch-icons .icon{width:14px;height:14px;color:var(--icon);opacity:.9;position:absolute;top:50%;transform:translateY(-50%)}.theme-switch .switch-icons .sun{left:8px}.theme-switch .switch-icons .moon{right:8px}.theme-switch:hover .switch-track{border-color:#c9d7ea;border-color:color-mix(in oklab, var(--border), #93c5fd 35%)}.theme-switch:hover .switch-thumb{box-shadow:0 3px 10px #00000038}.theme-switch[data-mode=dark] .switch-thumb{transform:translate(26px,-50%)}:root[data-theme=dark] .theme-switch{--track:#94a3b840;--thumb:#0b1220;--icon:#cbd5e1}:root[data-theme=dark] .theme-switch .switch-track{background:linear-gradient(#0b1220,#0b1220);border-color:#94a3b847}main{padding:calc(var(--header-h) + 16px) 0 48px}.site-footer{border-top:1px solid var(--border);color:var(--muted)}.site-footer .wrap{justify-content:flex-end;align-items:center;padding:20px 16px;display:flex}h1,h2,h3{color:var(--text);margin:0 0 12px;line-height:1.25}h1{font-size:1.8rem}h2{margin-top:28px;font-size:1.4rem}.content h2{border-bottom:2px solid var(--border);margin-bottom:16px;padding-bottom:8px}h3{margin-top:22px;font-size:1.2rem}.content :is(h2,h3,h4,h5,h6){scroll-margin-top:calc(var(--header-h) + 16px)}.content p{white-space:pre-line}.content blockquote,.content figure.quote{border-left:6px solid #4fc9e9;border-left:6px solid color-mix(in oklab, var(--accent) 65%, var(--border));background:var(--panel);color:#686868;border-radius:8px;margin:24px 0;padding:22px 28px 22px 52px;position:relative;box-shadow:0 12px 26px #0f172a0d}.content blockquote:before,.content figure.quote:before{content:"“";color:color-mix(in oklab, var(--accent) 55%, #fff);opacity:.25;pointer-events:none;font-size:3rem;line-height:1;position:absolute;top:16px;left:18px}.content figure.quote>blockquote{box-shadow:none;color:inherit;background:0 0;border:0;border-radius:0;margin:0;padding:0}.content figure.quote>blockquote:before{content:none}.content blockquote>*{margin:0 0 12px}.content blockquote>:last-child{margin-bottom:0}.content blockquote footer,.content blockquote cite,.content figure.quote>figcaption{border-top:1px solid #c5dfe8;border-top:1px solid color-mix(in oklab, var(--accent) 25%, var(--border));color:#7a7a7a;text-align:right;justify-content:flex-end;align-items:center;gap:10px;margin-top:16px;padding-top:12px;font-size:.95rem;font-style:normal;display:flex}:root[data-theme=dark] .content blockquote footer,:root[data-theme=dark] .content blockquote cite,:root[data-theme=dark] .content figure.quote>figcaption{border-top-color:#4fa8be;border-top-color:color-mix(in oklab, var(--accent) 35%, #94a3b859)}.content blockquote footer:before,.content blockquote cite:before,.content figure.quote>figcaption:before{content:"⤷";border:1px solid #7dd3e9;border:1px solid color-mix(in oklab, var(--accent) 40%, var(--border));color:#0f172a;background:#0ea5e91f;border-radius:999px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-size:.9rem;display:inline-flex}:root[data-theme=dark] .content blockquote footer:before,:root[data-theme=dark] .content blockquote cite:before,:root[data-theme=dark] .content figure.quote>figcaption:before{border-color:#4bb8d4;border-color:color-mix(in oklab, var(--accent) 60%, #94a3b873);color:color-mix(in oklab, var(--accent) 80%, #e0f2fe);background:#0ea5e933;background:color-mix(in oklab, var(--accent) 20%, transparent)}.content blockquote footer a,.content blockquote cite a,.content figure.quote>figcaption a{color:var(--link);font-weight:600}:root[data-theme=dark] .content blockquote footer a,:root[data-theme=dark] .content blockquote cite a,:root[data-theme=dark] .content figure.quote>figcaption a{color:color-mix(in oklab, var(--link) 80%, #bfdbfe)}:root[data-theme=dark] .content blockquote,:root[data-theme=dark] .content figure.quote{border-left-color:#3fc0db;border-left-color:color-mix(in oklab, var(--accent) 70%, #94a3b873);background:var(--panel);color:#d1d5db;box-shadow:0 18px 36px #02061752}:root[data-theme=dark] .content figure.quote>blockquote{box-shadow:none;background:0 0}:root[data-theme=dark] .content blockquote:before,:root[data-theme=dark] .content figure.quote:before{color:color-mix(in oklab, var(--accent) 70%, #0b1220);opacity:.35}:root[data-theme=dark] .content blockquote footer,:root[data-theme=dark] .content blockquote cite,:root[data-theme=dark] .content figure.quote>figcaption{color:#e2e8f0}.content blockquote h1,.content blockquote h2,.content blockquote h3,.content blockquote h4,.content blockquote h5,.content blockquote h6{color:inherit}.content img,.content svg,.content video,.content iframe{max-width:100%;height:auto}.content img{margin:12px auto;display:block}ul{padding-left:1.2rem}li{margin:6px 0}.post-list{margin:0;padding:0;list-style:none}.post-list li{border:1px solid var(--border);background:linear-gradient(#fff 0%,#fcfcfd 100%);border-radius:0;grid-template-columns:160px 1fr;gap:14px;margin:14px 0;padding:16px;transition:transform .16s,box-shadow .16s,border-color .16s;display:grid;position:relative;box-shadow:0 1px 2px #0f172a0f,0 8px 20px #0f172a0a}.post-list li:hover{border-color:#dfe3ea;transform:translateY(-2px);box-shadow:0 2px 6px #0f172a14,0 14px 28px #0f172a14}.post-title a{text-decoration:none}.post-title{font-size:.95rem;font-weight:600;line-height:1.35}.post-meta{color:var(--muted);font-size:.9rem}.post-excerpt{color:var(--muted);margin-top:6px}.thumb{border:1px solid var(--border);background:#f1f5f9;border-radius:0;display:block;overflow:hidden}.thumb img{object-fit:cover;aspect-ratio:1200/630;width:100%;height:100%;display:block}.card-body{min-width:0}.post-list .post-meta{text-align:right;position:absolute;bottom:12px;right:12px}.post-grid{grid-template-columns:1fr;gap:16px;padding:0;display:grid}.post-grid>li{margin:0}@media (width>=640px){.post-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1200px){.post-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.post-list.post-grid>li{padding:0;display:block;overflow:hidden}.post-list.post-grid>li .thumb{border:none;border-radius:0;margin:0}.post-list.post-grid>li .thumb img{aspect-ratio:1200/630}.post-list.post-grid>li .card-body{padding:12px 14px 16px}.related .post-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media (width>=1200px){.related .post-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.post-list li,.post-list.post-grid>li{padding-bottom:44px}.related .post-list.post-grid>li{background:var(--panel);border:1px solid var(--border);border-radius:0;box-shadow:0 2px 8px #0f172a0f,0 12px 24px #0f172a0f}.related .post-list.post-grid>li:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0f172a1a,0 18px 36px #0f172a1f}:root[data-theme=dark] .post-list li{background:linear-gradient(#1e293b 0%,#172033 100%);border-color:#94a3b84d;box-shadow:0 2px 4px #02061766,0 10px 24px #0206174d}:root[data-theme=dark] .post-list li:hover{background:linear-gradient(#253449 0%,#1e293b 100%);border-color:#94a3b880;box-shadow:0 4px 8px #02061780,0 16px 32px #02061766}:root[data-theme=dark] .thumb{background:#94a3b81a;border-color:#94a3b833}:root[data-theme=dark] .related .post-list.post-grid>li{box-shadow:0 2px 8px #0206174d,0 12px 24px #02061740}:root[data-theme=dark] .related .post-list.post-grid>li:hover{box-shadow:0 4px 12px #02061766,0 18px 36px #02061759}.badge{color:#b45309;border:1px solid #f59e0b;margin-top:6px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:1.6;display:inline-block}:root[data-theme=dark] .badge{color:#fbbf24;border-color:#fbbf24}.post-meta .badge{margin:0 0 0 8px}article{padding:8px 0}.post-hero{border:1px solid var(--border);border-radius:0;margin:16px 0 8px;overflow:hidden}.post-hero img{width:100%;height:auto;display:block}.toc{margin:0;padding:10px 0}.toc-title{text-align:center;color:var(--muted);margin-bottom:14px;font-weight:600}.toc-list{margin:0;padding-left:0;list-style:none}.toc-list>li{margin:2px 0}.toc-list ul{margin:2px 0 4px 16px;padding-left:0;list-style:none}.toc a{color:var(--muted);padding:2px 0;line-height:1.35;display:block}.toc a:hover{color:var(--text)}.toc a.active{color:var(--accent);font-weight:600}.page-body .toc{background:0 0;border:0;padding:0}.page-body{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:32px;display:grid}.page-body .toc{top:calc(var(--header-h) + 16px);max-height:calc(100vh - var(--header-h) - 24px);-webkit-overflow-scrolling:touch;z-index:1;scrollbar-width:none;overscroll-behavior:contain;position:sticky;overflow:auto}.page-body .toc::-webkit-scrollbar{width:0;height:0;display:none}.page-body .toc.placeholder{visibility:hidden;max-height:0}.page-body .post-col{background:var(--panel);border:1px solid var(--border);border-radius:0;padding:16px 18px}.page-body .post-col .post-hero{border:0;border-radius:0}.post-col{min-width:0}.page-body.no-toc{display:block}@media (width<=1100px){.page-body{display:block}.page-body .toc,.page-body .toc.placeholder{display:none!important}}.related ul{padding:0;list-style:none}.related li{margin:6px 0}:not(pre)>code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95em}.content :not(pre)>code{color:#dc2626;overflow-wrap:anywhere;word-break:break-word;background:#dbeafe;border:1px solid #93c5fd;border-radius:3px;max-width:100%;padding:.05em .25em;display:inline-block}:root[data-theme=dark] .content :not(pre)>code{color:#f87171;background:#60a5fa4d;border-color:#60a5fa66}.codebox{border:1px solid var(--border);background:#fff;border-radius:4px;max-width:100%;margin:16px 0;padding-top:0;position:relative}.codebox .codebox-bar,.codebox-title-tab{display:none}.codebox>pre{border:1px solid var(--border);background:#f8fafc;border-radius:4px;max-width:100%;margin:0 0 10px;padding:0;overflow-x:auto}.codebox>pre code{min-width:fit-content;padding:14px 56px 14px 16px;font-size:.85em;line-height:1.5;display:block}.codebox-copy{border:1px solid var(--border);color:#334155;opacity:0;visibility:hidden;cursor:pointer;background:#fff;border-radius:4px;justify-content:center;align-items:center;padding:6px;transition:opacity .2s,visibility .2s;display:flex;position:absolute;top:8px;right:10px}.codebox-copy svg{width:16px;height:16px}.codebox:hover .codebox-copy{opacity:.9;visibility:visible;transition:opacity .15s,visibility .15s}.codebox-copy:hover{opacity:1}.codebox-copy.copied{opacity:1;visibility:visible;color:#065f46;background:#d1fae5;border-color:#0000;box-shadow:inset 0 0 0 1px #86efac}.codebox.dark .codebox-copy{color:#e5e7eb;background:#111827;border-color:#94a3b840}.codebox.dark .codebox-copy.copied{color:#bbf7d0;background:#064e3b;border-color:#0000;box-shadow:inset 0 0 0 1px #10b981}.codebox-header{box-sizing:border-box;border:1px solid var(--border);background:#e2e8f0;border-bottom:0;border-radius:4px 4px 0 0;height:34px;display:flex}.codebox-filename{box-sizing:border-box;color:#334155;white-space:nowrap;text-overflow:ellipsis;background:#f8fafc;border-top:2px solid #3b82f6;border-top-left-radius:3px;max-width:calc(100% - 48px);height:100%;padding:0 14px 0 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:31px;overflow:hidden}.codebox-filename:before{content:"";vertical-align:-2px;opacity:.65;background:currentColor;width:14px;height:14px;margin-right:7px;display:inline-block;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Z'/%3E%3Cpath d='M14 3v5h5'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Z'/%3E%3Cpath d='M14 3v5h5'/%3E%3C/svg%3E") 50%/contain no-repeat}.codebox.has-title .codebox-copy{top:2px}.codebox.dark{box-shadow:none;background:0 0;border:0;padding-top:0}.codebox.dark .codebox-bar{display:none}.codebox.dark>pre{background:#2e3440;border:1px solid #94a3b826}.codebox.dark>pre code{color:#d8dee9}.codebox.dark .codebox-header{background:#242933;border-color:#94a3b826}.codebox.dark .codebox-filename{color:#d8dee9;background:#2e3440;border-top-color:#88c0d0}.codebox.has-title>pre{border-top:0;border-radius:0 0 4px 4px}.codebox .hljs-comment,.codebox .hljs-quote{color:#616e88}.codebox .hljs-keyword,.codebox .hljs-selector-tag,.codebox .hljs-literal,.codebox .hljs-operator,.codebox .hljs-meta .hljs-keyword,.codebox .hljs-symbol,.codebox .hljs-tag{color:#81a1c1}.codebox .hljs-built_in,.codebox .hljs-title.function_,.codebox .hljs-section,.codebox .hljs-name{color:#88c0d0}.codebox .hljs-type,.codebox .hljs-title.class_,.codebox .hljs-attr,.codebox .hljs-attribute,.codebox .hljs-selector-class,.codebox .hljs-selector-id{color:#8fbcbb}.codebox .hljs-string,.codebox .hljs-addition{color:#a3be8c}.codebox .hljs-number{color:#b48ead}.codebox .hljs-regexp,.codebox .hljs-template-variable{color:#ebcb8b}.codebox .hljs-meta,.codebox .hljs-doctag{color:#5e81ac}.codebox .hljs-deletion{color:#bf616a}.codebox .hljs-variable,.codebox .hljs-params,.codebox .hljs-property{color:#d8dee9}.codebox .hljs-punctuation{color:#eceff4}.codebox .hljs-emphasis{font-style:italic}.codebox .hljs-strong{font-weight:700}.tax .pill{border:1px solid;border-radius:0;margin:0 8px 8px 0;padding:2px 10px;font-size:.85rem;display:inline-block}.tax .cat{color:#065f46;background:#ecfdf5;border-color:#a7f3d0}.tax .tag{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}:root[data-theme=dark] .tax .tag{color:#93c5fd;background:#3b82f62e;border-color:#60a5fa73}.muted{color:var(--muted)}.empty-state{color:var(--muted);text-align:center;border:1px dashed var(--border);background:var(--surface,transparent);border-radius:8px;margin:14px 0;padding:28px 16px}.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{z-index:3000;background:var(--panel);border:1px solid var(--border);padding:8px 12px;position:absolute;top:8px;left:8px;transform:translateY(-200%)}.skip-link:focus{transform:none}.table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.table-wrap table{width:max-content;min-width:520px}.content table{border-collapse:collapse;width:100%;margin:16px 0}.content *{box-sizing:border-box;max-width:100%}.content li{word-break:break-word;overflow-wrap:anywhere}.content th,.content td{border:1px solid var(--border);text-align:left;vertical-align:top;white-space:normal;word-break:break-word;overflow-wrap:anywhere;padding:10px 12px}.table-wrap th,.table-wrap td{white-space:nowrap;word-break:normal;overflow-wrap:normal}.content thead th{background:#eef2ff;font-weight:600}.content tbody tr:nth-child(2n){background:#f8fafc}:root[data-theme=dark] .content table,:root[data-theme=dark] .content th,:root[data-theme=dark] .content td{border-color:#94a3b859}:root[data-theme=dark] .content thead th{background:#94a3b826}:root[data-theme=dark] .content tbody tr:nth-child(2n){background:#94a3b814}.pagination{justify-content:center;gap:8px;margin:24px 0;font-size:.95rem;display:flex}.pagination a,.pagination span{text-align:center;border:1px solid var(--border);color:#334155;background:#fff;border-radius:0;min-width:34px;padding:6px 10px;line-height:1.2;display:inline-block}.pagination a{text-decoration:none}.pagination a:hover{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.pagination .current{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe;font-weight:600}.pagination .gap{background:0 0;border-color:#0000}:root[data-theme=dark] .pagination a,:root[data-theme=dark] .pagination span{color:var(--text);background:#1e293b;border-color:#94a3b84d}:root[data-theme=dark] .pagination a:hover{color:#93c5fd;background:#334155;border-color:#60a5fa80}:root[data-theme=dark] .pagination .current{color:#93c5fd;background:#3b82f633;border-color:#60a5fa80}:root[data-theme=dark] .pagination .gap{background:0 0;border-color:#0000}.content figure.emdash-image{margin:16px 0}.content figure.emdash-image img{border:1px solid var(--border);border-radius:0;max-width:100%;height:auto;margin:0 auto;display:block}.content figure.emdash-image figcaption{text-align:center;color:var(--muted);margin-top:6px;font-size:.9rem}:root[data-theme=dark] .content figure.emdash-image img{background:#fff}.content figure.emdash-image+p.image-source{text-align:center;color:var(--muted);margin-top:-10px;font-size:.9rem}.content .has-text-align-center{text-align:center}.content .has-text-align-right{text-align:right}.content .has-text-align-justify{text-align:justify}.note{border:1px solid var(--border);color:var(--text);background:#f1f5f9;border-left:4px solid #0f172a2e;border-radius:0;align-items:flex-start;gap:12px;margin:18px 0;padding:16px 18px;display:flex;box-shadow:0 18px 42px -22px #0f172aa6}.note .note-icon{width:1.25em;height:1.25em;-webkit-mask:var(--note-icon) center / contain no-repeat;-webkit-mask:var(--note-icon) center / contain no-repeat;mask:var(--note-icon) center / contain no-repeat;background:currentColor;flex:none;margin-top:.225em}.note .note-body{min-width:0}.note-info{--note-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5.5M12 7.5h.01'/%3E%3C/svg%3E")}.note-tip{--note-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21.5h4'/%3E%3Cpath d='M12 2.5a6.5 6.5 0 0 0-3.8 11.8c.5.4.8 1 .8 1.6V16h6v-.1c0-.6.3-1.2.8-1.6A6.5 6.5 0 0 0 12 2.5Z'/%3E%3C/svg%3E")}.note-important{--note-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16v12H9l-5 4Z'/%3E%3Cpath d='M12 7.5v4M12 13.8h.01'/%3E%3C/svg%3E")}.note-warn{--note-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 21.5 20h-19Z'/%3E%3Cpath d='M12 9.5v4M12 16.8h.01'/%3E%3C/svg%3E")}.note-alert{--note-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8.36 3.22h7.28l5.14 5.14v7.28l-5.14 5.14H8.36l-5.14-5.14V8.36Z'/%3E%3Cpath d='M12 7.5v5M12 16.2h.01'/%3E%3C/svg%3E")}.note .note-body>:first-child{margin-top:0}.note .note-body>:last-child{margin-bottom:0}.note-info{background:#eff6ff;border-color:#bfdbfe #bfdbfe #bfdbfe #3b82f6}.note-info .note-icon{background:#3b82f6}.note-tip{background:#f0fdf4;border-color:#bbf7d0 #bbf7d0 #bbf7d0 #16a34a}.note-tip .note-icon{background:#16a34a}.note-important{background:#f5f3ff;border-color:#ddd6fe #ddd6fe #ddd6fe #7c3aed}.note-important .note-icon{background:#7c3aed}.note-warn{background:#fef9c3;border-color:#facc15 #facc15 #facc15 #d97706}.note-warn .note-icon{background:#d97706}.note-alert{background:#fee2e2;border-color:#f87171 #f87171 #f87171 #dc2626}.note-alert .note-icon{background:#dc2626}:root[data-theme=dark] .note{background:#94a3b81f;border-color:#94a3b859 #94a3b859 #94a3b859 #94a3b873;box-shadow:0 0 28px -10px #0f172ad9}:root[data-theme=dark] .note .note-icon{box-shadow:none}:root[data-theme=dark] .note-info{background:#3b82f62e;border-color:#60a5fa8c #60a5fa8c #60a5fa8c #3b82f6cc}:root[data-theme=dark] .note-info .note-icon{background:#60a5fa}:root[data-theme=dark] .note-tip{background:#22c55e24;border-color:#4ade8080 #4ade8080 #4ade8080 #16a34ad9}:root[data-theme=dark] .note-tip .note-icon{background:#4ade80}:root[data-theme=dark] .note-important{background:#8b5cf62e;border-color:#a78bfa8c #a78bfa8c #a78bfa8c #7c3aedd9}:root[data-theme=dark] .note-important .note-icon{background:#a78bfa}:root[data-theme=dark] .note-warn{background:#facc1529;border-color:#facc1599 #facc1599 #facc1599 #d97706d9}:root[data-theme=dark] .note-warn .note-icon{background:#fbbf24}:root[data-theme=dark] .note-alert{background:#f871712e;border-color:#f87171b3 #f87171b3 #f87171b3 #dc2626d9}:root[data-theme=dark] .note-alert .note-icon{background:#f87171}.menu-toggle{width:34px;height:30px;color:var(--muted);cursor:pointer;box-shadow:none;background:0 0;border:0;padding:0;display:none}:root[data-theme=dark] .menu-toggle{box-shadow:none;background:0 0;border:0}.menu-toggle .icon-hamburger{margin:0 auto;display:block}.menu-toggle .icon-hamburger path{stroke:currentColor;stroke-width:1.6px;fill:none;stroke-linecap:round}.menu-toggle .icon-close{margin:0 auto;display:none}.menu-toggle .icon-close path{stroke:currentColor;stroke-width:1.6px;fill:none;stroke-linecap:round}.menu-toggle:hover{opacity:.95;color:var(--link)}.menu-toggle:hover .icon-hamburger path{stroke:color-mix(in oklab, currentColor, #3b82f6 25%)}:root[data-menu=open] .menu-toggle .icon-hamburger{display:none}:root[data-menu=open] .menu-toggle .icon-close{display:block}.nav-desktop{align-items:center;gap:12px;display:flex}.mobile-nav{top:var(--header-h);width:auto;height:auto;max-height:calc(100vh - var(--header-h) - 16px);background:var(--panel);border:1px solid var(--border);z-index:1800;flex-direction:column;padding:12px 14px;display:none;position:fixed;left:0;right:0;overflow:auto;box-shadow:0 8px 16px #0000001f}.mobile-nav a{color:var(--text);border-bottom:1px solid var(--border);padding:12px 4px;text-decoration:none;display:block}.mobile-nav a:last-child{border-bottom:0}.mobile-nav a:hover{color:var(--link)}.mobile-nav .theme-switch{margin-top:8px}@media (width<=900px){.menu-toggle{display:inline-block}.site-header .nav-desktop{display:none}:root[data-menu=open] .mobile-nav{display:flex}}.taxonomy-list{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.taxonomy-item{border:1px solid var(--border);background:var(--panel);border-radius:0;align-items:center;gap:6px;padding:8px 14px;transition:border-color .16s,box-shadow .16s;display:inline-flex}.taxonomy-item:hover{border-color:#bfdbfe;border-color:color-mix(in oklab, var(--border), var(--link) 40%);box-shadow:0 2px 8px #0f172a14}.taxonomy-item a{font-weight:500;text-decoration:none}.taxonomy-count{color:var(--muted);font-size:.9rem}.search-form{gap:8px;max-width:640px;margin:0 0 20px;display:flex}.search-form input{border:1px solid var(--border);background:var(--panel);min-width:0;color:var(--text);font:inherit;border-radius:0;flex:1;padding:8px 12px}.search-form input:focus{outline:2px solid var(--link);outline-offset:-1px}.search-form button{color:#1d4ed8;font:inherit;cursor:pointer;background:#eff6ff;border:1px solid #bfdbfe;border-radius:0;padding:8px 16px;font-weight:600}.search-form button:hover{background:#dbeafe}:root[data-theme=dark] .search-form button{color:#93c5fd;background:#3b82f633;border-color:#60a5fa80}.home-section+.home-section{margin-top:32px}.home-section .section-title{margin:0 0 12px;font-size:1.8rem}.home-more{text-align:right;margin:4px 0 0}.post-list.post-rows>li{grid-template-columns:260px minmax(0,1fr);align-items:center;gap:20px;padding-bottom:16px}.post-rows .post-meta{text-align:left;font-size:.85rem;position:static}.post-rows .post-title{margin:2px 0 0;font-size:1.15rem;line-height:1.4}.post-rows .post-excerpt{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 0;font-size:.9rem;line-height:1.6;display:-webkit-box;overflow:hidden}.post-rows .tax{flex-wrap:wrap;gap:6px 8px;margin:10px 0 0;display:flex}.post-rows .tax .pill{margin:0}.post-list.magazine-rows{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.post-list.magazine-rows>li{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:16px;margin:0;padding-bottom:16px}.magazine-rows .post-title{margin:2px 0 0;font-size:1.1rem;line-height:1.4}.magazine-rows .magazine-card-description{-webkit-line-clamp:3;white-space:pre-line}@media (width<=899px){.post-list.post-rows>li{grid-template-columns:200px minmax(0,1fr);gap:16px}.post-list.magazine-rows{grid-template-columns:1fr}}@media (width<=640px){.post-list.post-rows>li,.post-list.magazine-rows>li{grid-template-columns:120px minmax(0,1fr);align-items:start;gap:12px;padding:12px}.post-rows .post-title{font-size:1rem}}.magazine-card-description{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;font-size:.85rem;line-height:1.5;display:-webkit-box;overflow:hidden}.post-list.magazine-grid>li{padding-bottom:16px}.magazine-header{border:1px solid var(--border);background:var(--panel);grid-template-columns:360px minmax(0,1fr);align-items:start;gap:24px;margin:0 0 24px;padding:16px;display:grid}.magazine-header .thumb img{aspect-ratio:1200/630}.magazine-header h1{margin:4px 0 8px}.magazine-description{white-space:pre-line;margin:8px 0 0}@media (width<=900px){.magazine-header{grid-template-columns:1fr}}.share{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin:32px 0 0;padding-top:16px;display:flex}.share-button{border:1px solid var(--border);background:var(--panel);color:var(--text);font:inherit;cursor:pointer;border-radius:0;align-items:center;gap:6px;padding:6px 12px;font-size:.85rem;line-height:1.4;display:inline-flex}.share-button:hover{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe;text-decoration:none}.share-hatena{font-family:Verdana,sans-serif;font-weight:700}:root[data-theme=dark] .share-button:hover{color:#93c5fd;background:#3b82f62e;border-color:#60a5fa73}.post-nav{margin:16px 0 0}.post-nav-magazine{color:var(--muted);margin:0 0 8px;font-size:.9rem}.post-nav-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.post-nav-links a{border:1px solid var(--border);background:var(--panel);padding:12px 14px;text-decoration:none;display:block}.post-nav-links a:hover{background:#eff6ff;border-color:#bfdbfe}:root[data-theme=dark] .post-nav-links a:hover{background:#3b82f61f;border-color:#60a5fa73}.post-nav-links a.next{text-align:right}.post-nav-label{color:var(--muted);font-size:.8rem;display:block}.post-nav-title{margin-top:2px;font-size:.95rem;font-weight:600;line-height:1.35;display:block}@media (width<=640px){.post-nav-links{grid-template-columns:1fr}}.site-footer .wrap{gap:16px}
