*{box-sizing:border-box}:root{color-scheme:light;--ink: #4c4f69;--ink-soft: #6c6f85;--ink-mute: #9ca0b0;--bg: #eff1f5;--bg-soft: #e6e9ef;--line: #ccd0da;--accent: #179299;--accent-soft: #d5eef0;}html{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC",sans-serif;font-size:112.5%;scrollbar-gutter:stable}body{margin:0;display:flex;flex-direction:column;min-height:100vh;color:var(--ink);background:var(--bg)}a{line-height:1.3}main{min-width:0}main article{line-height:1.75}main h1{font-size:2rem;line-height:1.25;margin:0 0 .5em}main h2{font-size:1.5rem;line-height:1.35;margin:1.8em 0 .6em}main h3{font-size:1.2rem;line-height:1.4;margin:1.6em 0 .5em}main h4{font-size:1rem;line-height:1.5;margin:1.4em 0 .4em}code,pre{font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,"Liberation Mono",Menlo,monospace}pre{overflow-x:auto;padding:.75em 1em;margin:.8em 0;border-radius:8px}.giallo-l{display:inline-block;min-height:1lh;width:100%}.giallo-ln{user-select:none;margin-right:.4em;padding:.4em;min-width:3ch;text-align:right;opacity:.8}main img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--line)}blockquote{margin:1em 0;padding:.5em 1rem;border-left:3px solid var(--ink-mute);border-radius:0 6px 6px 0;background:var(--bg-soft);color:var(--ink-soft)}:where(article) code:not(pre code){background:var(--bg-soft);border:1px solid var(--line);border-radius:4px;padding:.1em .35em;margin:0 .15em;font-size:.9em}:where(article) kbd{font-family:inherit;font-size:.875em;padding:.1em .4em;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:var(--bg-soft);color:var(--ink)}:where(article) table{border-collapse:collapse;margin:1em 0;font-size:.9375rem}:where(article) th,:where(article) td{border:1px solid var(--line);padding:.5em .75em;text-align:left}:where(article) th{background:var(--bg-soft);font-weight:600}:where(article) a{color:inherit;text-decoration-color:var(--ink-mute);text-underline-offset:3px}:where(article) a:hover{color:var(--accent);text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--ink: #cdd6f4;--ink-soft: #a6adc8;--ink-mute: #6c7086;--bg: #1e1e2e;--bg-soft: #313244;--line: #45475a;--accent: #94e2d5;--accent-soft: #2f3b45;}}:root[data-theme=dark]{color-scheme:dark;--ink: #cdd6f4;--ink-soft: #a6adc8;--ink-mute: #6c7086;--bg: #1e1e2e;--bg-soft: #313244;--line: #45475a;--accent: #94e2d5;--accent-soft: #2f3b45;}:root[data-theme=light]{color-scheme:light}.layout{flex:1;display:grid;grid-template-columns:clamp(280px,18vw,380px) minmax(0, 760px) 200px;gap:56px;justify-content:space-between;padding:40px 24px;width:100%;box-sizing:border-box}.layout>.sidebar{grid-column:1}.layout>main{grid-column:2}.layout>.toc{grid-column:3}@media (max-width: 1280px){.layout{grid-template-columns:clamp(280px,18vw,380px) minmax(0, 1fr)}.toc{display:none}}@media (max-width: 800px){.layout{display:block;padding:24px 16px}.sidebar{position:static;margin-bottom:24px;border-right:none;border-bottom:1px solid var(--line);padding-bottom:16px}}.site-header{border-bottom:1px solid var(--line)}.header-inner{height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.site-title{font-weight:700;text-decoration:none}.site-nav{display:flex;gap:4px}.site-nav a{text-decoration:none;color:var(--ink-soft);font-size:.875rem;padding:6px 12px;border-radius:6px}.site-nav a:hover{background:var(--bg-soft);color:var(--ink)}.site-nav a.active{color:var(--accent);background:var(--accent-soft)}.sidebar nav a{display:block;padding:6px 10px;text-decoration:none;color:var(--ink-soft);white-space:nowrap}.sidebar summary{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;cursor:pointer;list-style:none}.sidebar summary::-webkit-details-marker{display:none}.sidebar summary:hover{background:color-mix(in srgb, var(--ink) 8%, rgba(0,0,0,0));border-radius:6px}.sidebar summary::after{content:"";width:5px;height:5px;border-right:1.5px solid var(--ink-mute);border-bottom:1.5px solid var(--ink-mute);transform:rotate(-45deg);transition:transform .15s;flex-shrink:0}.sidebar details[open]>summary::after{transform:rotate(45deg)}.sidebar summary a{padding:0;flex:1;min-width:0;white-space:nowrap}.sidebar a.active{color:var(--accent);background:var(--accent-soft);border-radius:6px}.sidebar{position:sticky;top:20px;align-self:start;font-size:.9375rem;line-height:1.5;max-height:calc(100vh - 40px);overflow:auto;border-right:1px solid var(--line);padding-right:16px}.sidebar nav ul{list-style:none;padding:0;margin:0}.sidebar nav ul ul{margin:4px 0 4px 12px;padding-left:8px;border-left:1px solid var(--line)}.sidebar nav li{margin:5px 0}.sidebar nav a:hover{background:color-mix(in srgb, var(--ink) 8%, rgba(0,0,0,0));color:var(--ink);border-radius:6px}.sidebar summary.active{background:var(--accent-soft);border-radius:6px}.sidebar summary.active>a{color:var(--accent)}.sidebar summary.active::after{border-color:var(--accent)}.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--ink-mute)}.toc{position:sticky;top:40px;align-self:start;width:200px}.toc-title{font-size:.75em;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute);margin:0 0 8px}.toc ul{list-style:none;padding:0;margin:0}.toc nav>ul>li>a{display:block;font-size:.8125rem;color:var(--ink-mute);text-decoration:none;padding:3px 0}.toc nav>ul>li>ul{padding-left:12px}.toc nav>ul>li>ul>li>a{display:block;font-size:.8125rem;color:var(--ink-mute);text-decoration:none;padding:3px 0}.toc nav a:hover{color:var(--ink)}.toc-link{display:block;font-size:.8125rem;line-height:1.5;padding:4px 8px;text-decoration:none;color:var(--ink-mute);border-left:2px solid rgba(0,0,0,0);transition:color .2s}.toc-link:hover{color:var(--ink-soft)}.toc a.active{color:var(--accent)}.toc-link.active{border-left-color:var(--accent)}.search-input{font:inherit;background:var(--bg);color:var(--ink);width:100%;max-width:480px;padding:8px 12px;border:1px solid var(--line);border-radius:6px}.search-status{font-size:.8125rem;color:var(--ink-mute);margin:8px 0}.search-results{list-style:none;padding:0;margin:8px 0 0}.search-results li{margin:8px 0}.search-results a{color:var(--ink);text-decoration:none}.search-results a:hover{color:var(--accent)}.theme-btn{font:inherit;padding:4px 10px;border:1px solid var(--line);border-radius:6px;background:none;color:var(--ink-soft);cursor:pointer;line-height:1}.theme-btn:hover{border-color:var(--ink-mute);color:var(--ink)}.reading-progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--accent);z-index:100}.back-to-top{position:fixed;bottom:24px;right:24px;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--bg);color:var(--ink-soft);font-size:1rem;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .2s;z-index:100}.back-to-top.visible{opacity:1;pointer-events:auto}.back-to-top:hover{color:var(--accent);border-color:var(--accent)}.code-wrap{margin:.8em 0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.code-wrap pre{margin:0;border-radius:0}.code-header{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--bg-soft)}.code-lang{font-size:.75rem;color:var(--ink-mute);font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,Menlo,monospace}.copy-btn{margin-left:auto;font-size:.75rem;line-height:1;padding:4px 10px;border:1px solid var(--line);border-radius:6px;background:rgba(0,0,0,0);color:var(--ink-mute);cursor:pointer}.copy-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.code-wrap pre::-webkit-scrollbar{height:8px}.code-wrap pre::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.code-wrap pre::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.code-wrap pre::-webkit-scrollbar-thumb:hover{background:var(--ink-mute)}footer{flex-shrink:0;border-top:1px solid var(--line)}.footer-inner{padding:24px;display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;color:var(--ink-mute)}.footer-inner a{color:var(--ink-mute);text-decoration:none}.footer-inner a:hover{color:var(--accent)}.layout-blog .sidebar,.layout-blog .toc{display:none}.layout-blog .layout{grid-template-columns:minmax(0, 760px);justify-content:center}.layout-blog main{grid-column:1}.layout-blog main>h1{letter-spacing:-.5px;margin:0 0 6px}.section-intro{color:var(--ink-mute)}.post-list{list-style:none;padding:0;margin:30px 0 0}.post-row{display:grid;gap:6px;padding:16px 0px;border-bottom:1px solid var(--line)}.post-row:last-child{border-bottom:none}.post-title{font-size:1.125rem;font-weight:600;color:var(--ink);text-decoration:none}.post-row:hover .post-title{color:var(--accent)}.post-meta{display:inline-flex;align-items:baseline;gap:10px;flex-wrap:wrap}.meta-tag,.meta-date{font-size:.8125rem;color:var(--ink-mute);text-decoration:none}.meta-tag:hover{color:var(--accent)}.meta-date{font-variant-numeric:tabular-nums}.post-page-meta{display:flex;gap:16px;margin:-16px 0 28px}.post-nav{display:flex;justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}.post-nav-item{flex:1;min-width:0}.post-nav-item.next{text-align:right}.post-nav-label{display:block;font-size:.75rem;color:var(--ink-mute);margin-bottom:4px}.post-nav a{color:var(--ink);text-decoration:none}.post-nav a:hover{color:var(--accent)}.back-to-blog{display:inline-block;margin-top:24px;font-size:.875rem;color:var(--ink-mute);text-decoration:none}.back-to-blog:hover{color:var(--accent)}@media print{.sidebar,.toc,.site-nav,.code-header{display:none}.layout{display:block;max-width:100%;padding:0}pre{white-space:pre-wrap;overflow:visible}}