:root{color-scheme:light;--bg:#f5f5f5;--surface:#fff;--text:#202124;--muted:#666970;--border:#dedfe2;--accent:#285b94;--code:#eaecef;--radius:9px;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#1d1e20;--surface:#28292c;--text:#dadadb;--muted:#a9abb1;--border:#424449;--accent:#a9c8ed;--code:#34363b}}
:root[data-theme=dark]{color-scheme:dark;--bg:#1d1e20;--surface:#28292c;--text:#dadadb;--muted:#a9abb1;--border:#424449;--accent:#a9c8ed;--code:#34363b}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.65;font-size:16px;overflow-wrap:anywhere}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,input{font:inherit}button{cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{color:var(--text)}[hidden]{display:none!important}h1,h2,h3,p,figure{margin-top:0}h1,h2,h3{line-height:1.35;letter-spacing:-.025em}h1{font-size:clamp(28px,4vw,40px);margin-bottom:20px}h2{font-size:23px}small{font-size:12px}.muted,.meta{color:var(--muted)}.site-header{max-width:1120px;margin:auto;min-height:96px;padding:20px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:23px;font-weight:750;letter-spacing:-.035em}.header-tools{display:flex;gap:18px;align-items:center;min-width:0}.site-nav{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.site-nav a{font-size:14px;padding:10px 0}.site-nav [aria-current]{text-decoration:underline;text-underline-offset:7px}.theme-toggle{border:0;background:transparent;width:44px;height:44px;border-radius:50%;flex-shrink:0;display:grid;place-items:center}.theme-toggle:hover{background:var(--code)}.site-main{max-width:1064px;margin:40px auto 0;padding:0 28px;min-height:58vh}.site-main.detail{max-width:800px}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:56px}.home-grid>*,.memo-grid>*{min-width:0}.intro{padding:18px 0 54px}.intro h1{font-size:36px;margin-bottom:14px}.intro>p:last-child{color:var(--muted);max-width:560px;line-height:1.85;margin-bottom:0}.eyebrow{font-size:12px;letter-spacing:.12em;color:var(--muted);margin-bottom:14px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.section-heading h2{font-size:16px;margin:0}.section-heading>a{color:var(--muted);font-size:13px}.post-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:27px 28px;margin-bottom:20px;transition:border-color .15s}.post-card:hover{border-color:var(--muted)}.post-card h2{font-size:22px;margin:0 0 12px}.post-card h2 a{display:block}.excerpt{color:var(--muted);font-size:14px;line-height:1.9;margin-bottom:18px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12px}.home-aside{padding-top:24px}.aside-description{font-size:13px;color:var(--muted);margin-bottom:20px}.memo-preview{display:block;padding:20px 0;border-bottom:1px solid var(--border)}.memo-preview time{font-size:12px;color:var(--muted)}.memo-preview p{font-size:14px;line-height:1.85;margin:8px 0 0}.pagination{display:flex;gap:18px;align-items:center;justify-content:space-between;margin:36px 0;font-size:13px}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--text);color:var(--bg);border:1px solid transparent;border-radius:6px;min-height:44px;padding:10px 18px;font-size:13px}.button:hover{color:var(--bg);opacity:.85}.page-heading{margin:24px 0 40px}.page-heading h1{margin-bottom:12px}.list-column{max-width:760px}.breadcrumbs{display:flex;gap:10px;font-size:13px;color:var(--muted);margin-bottom:32px;flex-wrap:wrap}.article-header{margin:38px 0}.article-header h1{line-height:1.4}.cover{margin:0 0 30px}.cover img{width:100%;height:auto;border-radius:var(--radius)}.toc{background:var(--code);border-radius:var(--radius);padding:16px 22px;margin:28px 0}.toc summary{cursor:pointer;font-size:14px;font-weight:600;min-height:28px}.toc nav{display:flex;flex-direction:column;padding-top:12px;max-height:320px;overflow:auto;gap:4px}.toc a{font-size:14px;color:var(--muted);padding:4px 0 4px calc(var(--level,0)*14px + 8px);border-left:2px solid transparent}.toc a.active{color:var(--text);border-left-color:var(--accent)}.prose{font-family:var(--sans)!important;font-size:17px!important;line-height:1.95!important;color:var(--text)!important;background:transparent!important;max-width:100%;min-width:0;word-break:normal;overflow-wrap:anywhere}.prose p{margin:0 0 1.4em}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--text);margin:1.8em 0 .8em;scroll-margin-top:28px}.prose h1{font-size:30px}.prose h2{font-size:26px}.prose h3{font-size:22px}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.prose img,.prose video{max-width:100%;height:auto;border-radius:6px}.prose iframe{max-width:100%;border:0}.prose ul,.prose ol{padding-left:1.5em;margin:0 0 1.4em}.prose li{margin:.35em 0}.prose li>p{margin-bottom:.4em}.prose blockquote{margin:1.5em 0;padding:8px 20px;border-left:3px solid var(--muted);color:var(--muted)}.prose blockquote p:last-child{margin-bottom:0}.prose code,.prose pre,.prose kbd,.prose samp{font-family:var(--mono)}.prose code{background:var(--code);border-radius:4px;padding:3px 5px;font-size:.85em;white-space:break-spaces}.prose pre{position:relative;background:var(--code);border-radius:var(--radius);padding:48px 20px 20px;overflow:auto;max-width:100%;line-height:1.65;font-size:14px}.prose pre code{background:transparent;padding:0;border:0;white-space:pre;font-size:inherit;color:inherit;display:block;min-width:max-content}.copy-code{position:absolute;right:10px;top:8px;background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:4px 12px;font-size:12px;min-height:32px}.prose table{display:block;overflow:auto;max-width:100%;border-collapse:collapse;margin:24px 0;font-size:14px}.prose th,.prose td{border:1px solid var(--border);padding:10px 16px;min-width:100px}.prose th{background:var(--code)}.prose hr{border:0;border-top:1px solid var(--border);margin:32px 0}.prose input[type=checkbox]{accent-color:var(--accent)}.tags{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.tag{display:inline-flex;align-items:center;gap:6px;background:var(--code);border-radius:5px;padding:5px 10px;font-size:12px}.tag[aria-current]{outline:1px solid var(--accent)}.post-neighbors{display:flex;gap:24px;border-top:1px solid var(--border);padding-top:24px;margin:44px 0}.post-neighbors a{flex:1;min-width:0}.post-neighbors strong{display:block;margin-top:7px;font-size:14px}.post-neighbors .muted{font-size:12px}.back-link{display:inline-block;margin-top:30px;font-size:14px;color:var(--muted);padding:10px 0}.archive-year{margin-bottom:40px}.archive-year h2{display:flex;align-items:center;gap:14px;font-size:30px}.archive-year small{color:var(--muted);font-weight:400}.archive-row{display:flex;gap:24px;border-bottom:1px solid var(--border);padding:16px 0}.archive-row time{color:var(--muted);flex-shrink:0;font-size:13px}.memo-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:40px}.filter-panel{margin-bottom:26px}.filter-panel h2{font-size:14px;margin-bottom:16px}.filter-panel .tags{margin:0}.calendar-title{display:flex;align-items:center;justify-content:space-between}.calendar-title h2{margin:0}.calendar-title>a{display:grid;place-items:center;width:44px;height:44px;font-size:22px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;gap:3px;font-size:12px}.calendar>*{min-height:34px;display:grid;place-items:center}.calendar a{border-radius:5px;position:relative}.calendar a:hover{background:var(--code)}.calendar .has-memo:after{content:'';width:4px;height:4px;border-radius:50%;background:var(--accent);position:absolute;bottom:2px}.calendar [aria-current]{background:var(--text)!important;color:var(--bg)}.weekday{color:var(--muted)}.month-row{display:flex;justify-content:space-between;font-size:13px;padding:10px 0;color:var(--muted)}.active-filters{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin:0 0 20px}.active-filters a{color:var(--accent)}.memo-card{padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:22px}.memo-card>.meta{justify-content:space-between;margin-bottom:20px}.memo-card .prose{font-size:16px!important}.memo-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border);font-size:12px;margin-top:22px;padding-top:14px}.memo-meta .tags{margin:0}.memo-meta>.muted{flex-shrink:0}.empty{padding:48px 24px;border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted);text-align:center}.not-found{text-align:center;padding:80px 0}.not-found .eyebrow{font-size:60px;letter-spacing:-.04em;margin-bottom:16px}.site-footer{max-width:1064px;margin:80px auto 0;padding:30px 28px;display:flex;align-items:center;justify-content:center;gap:12px 20px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.views-badge{width:120px;height:18px;object-fit:contain}.custom-footer{width:100%;text-align:center}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;top:12px;left:12px;background:var(--surface);padding:12px;z-index:10}
@media(max-width:900px){.home-grid{grid-template-columns:minmax(0,1fr);gap:28px}.home-aside{padding-top:12px}.home-aside .memo-preview{padding:18px 0}.site-main{max-width:800px}.memo-grid{grid-template-columns:220px minmax(0,1fr);gap:26px}}
@media(max-width:640px){.site-header{padding:16px 20px;flex-wrap:wrap;gap:8px}.brand{font-size:21px}.header-tools{width:100%;gap:8px;justify-content:space-between}.site-nav{gap:8px 20px}.site-nav a{min-height:44px;display:flex;align-items:center}.site-main{padding:0 20px;margin-top:24px}.intro{padding:10px 0 36px}.intro h1{font-size:30px}.post-card{padding:22px 20px;margin-bottom:16px}.post-card h2{font-size:21px}.memo-grid{display:flex;flex-direction:column;gap:20px}.memo-filters{display:grid;grid-template-columns:1fr 1fr;gap:20px}.memo-filters .filter-panel:last-child{grid-column:1/-1}.memo-filters .filter-panel:last-child{display:flex;flex-wrap:wrap;gap:0 18px}.memo-filters .filter-panel:last-child h2{width:100%}.month-row{gap:12px}.filter-panel{margin-bottom:8px}.calendar-title>a{width:32px}.calendar{gap:0;font-size:11px}.calendar>*{min-height:30px}.memo-card{padding:20px}.prose{font-size:16px!important}.article-header{margin:26px 0}.post-neighbors{gap:20px}.site-footer{margin-top:48px}.page-heading{margin:12px 0 28px}.breadcrumbs{margin-bottom:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Reading sidebars: retain native page scrolling and constrain tall sidebars. */
.post-body-main { min-width: 0; }
@media (min-width: 1100px) {
    .site-main.detail.has-post-toc { max-width: 1120px; }
    .has-post-toc .article-header, .has-post-toc .cover { max-width: 744px; }
    .post-body-layout.has-toc {
        display: grid;
        grid-template-columns: minmax(0, 744px) minmax(0, 240px);
        gap: 40px;
        align-items: start;
    }
    .post-body-layout.has-toc > .post-body-main { grid-column: 1; grid-row: 1; }
    .post-body-layout.has-toc > .toc {
        grid-column: 2;
        grid-row: 1;
        position: sticky;
        top: 24px;
        margin: 0;
        max-height: calc(100vh - 48px);
        max-height: calc(100dvh - 48px);
        overflow-y: auto;
        scrollbar-width: thin;
    }
    .post-body-layout.has-toc > .toc nav { max-height: none; overflow: visible; }
}
@media (min-width: 641px) {
    .memo-filters {
        position: sticky;
        top: 24px;
        align-self: start;
        max-height: calc(100vh - 48px);
        max-height: calc(100dvh - 48px);
        overflow-y: auto;
        scrollbar-width: thin;
        padding: 4px 8px 4px 4px;
    }
}
