:root,[data-theme=light]{--bg: #fafaf7;--surface: #ffffff;--fg: #1a1a1a;--text: #1a1a1a;--muted: #6b6b6b;--text-muted: #6b6b6b;--border: #e8e6e0;--accent: #b0834a;--link: #2a5fa8;--inline-bg: #f0ede5;--code-bg: #1a1a1a;--code-fg: #f5f5f5;--table-header-bg: #f5f2ea;--blockquote-bg: #f5f2ea;--blockquote-border: #b0834a;--excerpt-fg: #3a3a3a;--max-w: 720px;--max-w-wide: 1080px;--max-w-article: 1240px;--diagram-text: #1f2937;--diagram-text-muted: #6b7280;--diagram-l1-bg: #fef3c7;--diagram-l2-bg: #fde2cc;--diagram-l3-bg: #fbcfe8;--diagram-r-bg: #fef3c7;--diagram-b-bg: #dbeafe}[data-theme=dark]{--bg: #111111;--surface: #161616;--fg: #e4e4e4;--text: #e4e4e4;--muted: #888888;--text-muted: #888888;--border: #2c2c2c;--accent: #c79968;--link: #5b9bff;--inline-bg: #1e1e1e;--code-bg: #1e1e2e;--code-fg: #cdd6f4;--table-header-bg: #1a1a1a;--blockquote-bg: #171717;--blockquote-border: #444;--excerpt-fg: #c0c0c0;--diagram-text: #e5e7eb;--diagram-text-muted: #9ca3af;--diagram-l1-bg: rgba(217, 119, 6, .18);--diagram-l2-bg: rgba(234, 88, 12, .18);--diagram-l3-bg: rgba(190, 24, 93, .2);--diagram-r-bg: rgba(217, 119, 6, .18);--diagram-b-bg: rgba(37, 99, 235, .18)}*{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%}html,body{transition:background-color .2s,color .2s}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.75;font-size:16px}a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}img{max-width:100%;height:auto}hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}.muted{color:var(--muted);font-weight:400}.container{max-width:var(--max-w);margin:0 auto;padding:2rem 1rem 4rem}body.wide .container{max-width:var(--max-w-wide)}@media (max-width: 960px){body.wide .container{max-width:var(--max-w)}}.site-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:3rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.site-header .brand{color:var(--text);text-decoration:none;font-size:1.05rem;letter-spacing:.01em}.site-nav{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;font-size:.95rem}.site-nav a{color:var(--text-muted);text-decoration:none}.site-nav a:hover,.site-nav a.active{color:var(--link)}.theme-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;border:1px solid var(--border);background:transparent;cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;padding:0;flex-shrink:0;transition:border-color .15s,color .15s}.theme-btn:hover{border-color:var(--link);color:var(--link)}.theme-icon-sun{display:none}.theme-icon-moon,[data-theme=dark] .theme-icon-sun{display:inline}[data-theme=dark] .theme-icon-moon{display:none}.home-only{min-width:0;text-align:left}.home-intro{margin:2.25rem 0 2.4rem}.home-only h1{margin:0 0 .85rem;font-size:clamp(1.65rem,3vw,2.15rem);line-height:1.35}.home-bio{margin:.65rem 0 0;color:var(--text);line-height:1.8}.home-contact{margin:.95rem 0 0;color:var(--muted);font-size:.94rem}.home-columns,.layout-with-sidebar{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:2.5rem;align-items:start}.home-columns>*,.layout-with-sidebar>*{min-width:0}.home-posts{min-width:0}.home-posts h2{margin:0 0 1rem;font-size:1.45rem}.home-list{margin:0;padding:0;list-style:none}.home-list li{margin:0;padding:0;border-top:1px solid var(--border)}.home-list li:last-child{border-bottom:1px solid var(--border)}.home-row{display:flex;gap:1.15rem;align-items:center;padding:1rem 0;text-decoration:none;color:var(--text)}.home-row img{display:block;flex:0 0 188px;width:188px;height:106px;object-fit:cover;border:1px solid var(--border);background:var(--inline-bg);border-radius:4px}.home-row-copy{display:block;min-width:0}.home-row h3{margin:0;font-size:1.05rem;line-height:1.43;overflow-wrap:anywhere}.home-row p{margin:.32rem 0 0;color:var(--muted);font-size:.875rem;line-height:1.55;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.home-row:hover h3{text-decoration:underline;text-decoration-color:var(--link);text-underline-offset:3px}.home-row:focus-visible{outline:2px solid var(--link);outline-offset:3px}@media (max-width: 960px){.home-columns,.layout-with-sidebar{display:block}.home-columns .sidebar,.layout-with-sidebar .sidebar{margin-top:2.25rem;padding-top:2rem;border-top:1px solid var(--border)}}@media (max-width: 600px){.home-intro{margin:1.55rem 0 1.65rem}.home-row{gap:.72rem;align-items:flex-start;padding:.78rem 0}.home-row img{flex-basis:92px;width:92px;height:52px}.home-row h3{font-size:.94rem;line-height:1.38}.home-row p{font-size:.78rem;line-height:1.48}}.sidebar{font-size:.9rem}.sidebar-section{margin-bottom:2.25rem}.sidebar-heading{font-size:.78rem;margin:0 0 .85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.sidebar-list{list-style:none;padding:0;margin:0}.sidebar-list li{margin:.55rem 0;line-height:1.4}.sidebar-list a{color:var(--text);text-decoration:none;font-size:.88rem}.sidebar-list a:hover{color:var(--link);text-decoration:underline}.tag-cloud{display:flex;flex-wrap:wrap;gap:.4rem}.tag-chip{display:inline-block;padding:.22rem .6rem;font-size:.78rem;color:var(--muted);background:var(--inline-bg);border-radius:3px;text-decoration:none;transition:background .15s,color .15s}.tag-chip:hover{color:#fff;background:var(--link)}.article-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.article-title{font-size:clamp(1.7rem,3vw,2.3rem);line-height:1.35;margin:0 0 .75rem;font-weight:700}.article-meta{color:var(--text-muted);font-size:.9rem}.article-cover{margin:-1rem 0 2.25rem}.article-cover img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--border);border-radius:12px;background:var(--inline-bg)}@media (max-width: 600px){.article-cover{margin:-.5rem 0 1.5rem}.article-cover img{border-radius:8px}}.article-meta a{color:var(--text-muted);text-decoration:none}.article-meta a:hover{color:var(--link);text-decoration:underline}.article-body{font-size:1.02rem}.article-body>:first-child{margin-top:0}.article-body h2{font-size:1.4rem;margin-top:2.2em;line-height:1.4}.article-body h3{font-size:1.15rem;margin-top:1.8em}.article-body p:has(>img:only-child){width:100%;max-width:100%;margin:1.5rem 0}.article-body img{display:block;max-width:100%;height:auto;object-fit:contain;border-radius:12px}.article-body p:has(>img:only-child) img{width:100%}.article-body blockquote{border-left:3px solid var(--blockquote-border);margin:1.4em 0;padding:.25em 1em;color:var(--text-muted);background:var(--blockquote-bg)}.article-body code{background:var(--inline-bg);padding:.1em .35em;border-radius:3px;font-size:.88em;font-family:SF Mono,Consolas,Liberation Mono,monospace}.article-body pre{background:var(--code-bg)!important;color:var(--code-fg);padding:1rem;border-radius:6px;overflow-x:auto;font-size:.85rem;line-height:1.55}.article-body pre code{background:transparent;padding:0;color:inherit;font-size:inherit}.article-body table{width:100%;max-width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.95rem;table-layout:fixed}.article-body th{background:var(--table-header-bg);padding:.6em .8em;text-align:left;font-weight:600;border-bottom:2px solid var(--border)}.article-body td{padding:.6em .8em;border-bottom:1px solid var(--border);vertical-align:top}.article-body th,.article-body td{white-space:normal;overflow-wrap:anywhere}.article-body tr:last-child td{border-bottom:none}.article-body :not(pre)>code{white-space:normal;overflow-wrap:anywhere}.article-back{margin-top:3rem;font-size:.95rem}.about-page .article-title{margin-bottom:1.25rem}@media (max-width: 600px){.article-title{font-size:1.6rem}.article-body p:has(>img:only-child){margin:1.2rem 0}.article-body th,.article-body td{padding:.45rem}}.archive-year{font-size:1.1rem;font-weight:600;margin:28px 0 10px;color:var(--text-muted)}.archive-list{list-style:none;padding:0;margin:0}.archive-item{display:flex;gap:14px;padding:6px 0;align-items:baseline}.archive-item a{color:var(--text);text-decoration:none}.archive-item a:hover{color:var(--link);text-decoration:underline}.archive-date{color:var(--text-muted);font-size:.85rem;font-variant-numeric:tabular-nums;flex-shrink:0;width:70px}.site-footer{margin-top:5rem;padding-top:1.5rem;border-top:1px solid var(--border);color:var(--text-muted);font-size:.85rem}.site-footer p{margin:0}.site-footer a{color:var(--text-muted)}.empty{color:var(--text-muted);padding:40px 0;text-align:center;font-style:italic}.subscribe-popup{position:fixed;bottom:1.25rem;right:1.25rem;z-index:9999;width:min(360px,calc(100vw - 2rem));background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #0000001f;padding:1.25rem 1.5rem 1rem;transform:translateY(8px);opacity:0;transition:transform .22s ease,opacity .22s ease}.subscribe-popup.is-visible{transform:translateY(0);opacity:1}[data-theme=dark] .subscribe-popup{box-shadow:0 8px 32px #00000080}.subscribe-popup__close{position:absolute;top:.35rem;right:.55rem;background:transparent;border:0;color:var(--muted);font-size:1.4rem;line-height:1;cursor:pointer;padding:.25rem .45rem;border-radius:4px}.subscribe-popup__close:hover{color:var(--text);background:var(--inline-bg)}.subscribe-popup__heading{margin:0 0 .4rem;font-size:1.05rem;color:var(--text)}.subscribe-popup__desc{margin:0 0 .85rem;font-size:.85rem;color:var(--muted);line-height:1.5}.subscribe-popup__form{display:flex;gap:.4rem;margin-bottom:.55rem}.subscribe-popup__form input{flex:1;min-width:0;padding:.5rem .65rem;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font:inherit;font-size:.85rem}.subscribe-popup__form input:focus{outline:none;border-color:var(--link)}.subscribe-popup__form button{padding:.5rem .95rem;background:var(--link);color:#fff;border:0;border-radius:4px;font:inherit;font-size:.85rem;cursor:pointer;white-space:nowrap}.subscribe-popup__form button:hover{opacity:.9}.subscribe-popup__privacy{margin:0;font-size:.72rem;color:var(--muted)}@media (max-width: 480px){.subscribe-popup{bottom:.5rem;right:.5rem;left:.5rem;width:auto;padding:1rem 1.25rem .85rem}}.cat-pill,.cat-tabs a,.cat-section,.cat-hero,.sidebar-cats li{--c: var(--cat, var(--accent))}[data-theme=dark] .cat-pill,[data-theme=dark] .cat-tabs a,[data-theme=dark] .cat-section,[data-theme=dark] .cat-hero,[data-theme=dark] .sidebar-cats li{--c: var(--cat-dark, var(--accent))}.cat-pill{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.74rem;font-weight:600;letter-spacing:.02em;line-height:1.6;color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent);text-decoration:none;white-space:nowrap}a.cat-pill:hover{background:color-mix(in srgb,var(--c) 22%,transparent)}.article-category{margin:0 0 .7rem}.cat-tabs{display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--border);margin:0 0 1.75rem}.cat-tabs::-webkit-scrollbar{display:none}.cat-tabs a{flex:0 0 auto;padding:.55rem .85rem .7rem;margin-bottom:-1px;color:var(--muted);font-size:.95rem;font-weight:500;text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}.cat-tabs a:hover{color:var(--text)}.cat-tabs a.is-active{color:var(--text);font-weight:700;border-bottom-color:var(--c)}.cat-tabs a:first-child.is-active{border-bottom-color:var(--text)}.home .home-intro{margin:0 0 1.75rem}.featured{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:2rem;margin-bottom:3.25rem}.featured-hero{display:block;color:var(--text);text-decoration:none}.featured-hero-media img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border-radius:14px;border:1px solid var(--border);background:var(--inline-bg)}.featured-hero-body{display:block;padding:1rem .25rem 0}.featured-hero h2{margin:.45rem 0 .4rem;font-size:clamp(1.25rem,2.2vw,1.6rem);line-height:1.38}.featured-hero p{margin:0;color:var(--muted);font-size:.93rem;line-height:1.6;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.featured-hero:hover h2{text-decoration:underline;text-decoration-color:var(--link);text-underline-offset:3px}.featured-side{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.featured-side li a{display:flex;gap:.9rem;align-items:flex-start;color:var(--text);text-decoration:none}.featured-side img{flex:0 0 132px;width:132px;height:74px;object-fit:cover;border-radius:10px;border:1px solid var(--border);background:var(--inline-bg)}.featured-side span{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;min-width:0}.featured-side strong{font-size:.95rem;font-weight:600;line-height:1.42;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.featured-side a:hover strong{text-decoration:underline;text-decoration-color:var(--link);text-underline-offset:3px}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.4rem 1.25rem}.card-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.75rem 1.5rem}.post-card-link{display:block;color:var(--text);text-decoration:none}.post-card-media img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border-radius:12px;border:1px solid var(--border);background:var(--inline-bg);transition:transform .25s ease}.post-card-link:hover img{transform:translateY(-2px)}.post-card-body{display:block;padding:.7rem .1rem 0}.post-card-meta{display:flex;align-items:center;gap:.55rem;color:var(--muted);font-size:.76rem}.post-card h3{margin:.4rem 0 .3rem;font-size:.98rem;line-height:1.42;font-weight:600;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.card-grid-3 .post-card h3{font-size:1.05rem}.post-card p{margin:0;color:var(--muted);font-size:.84rem;line-height:1.55;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.post-card-link:hover h3{text-decoration:underline;text-decoration-color:var(--link);text-underline-offset:3px}.home-columns-stack{display:flex;flex-direction:column;gap:3rem}.cat-section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.1rem;padding-left:.9rem;border-left:4px solid var(--c)}.cat-section-head h2{margin:0;font-size:1.3rem;line-height:1.3}.cat-section-head h2 a{color:var(--text);text-decoration:none}.cat-section-head h2 a:hover{color:var(--c)}.cat-en{font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--c);margin-left:.4rem}.cat-section-head p{margin:.2rem 0 0;color:var(--muted);font-size:.88rem}.cat-more{flex:0 0 auto;font-size:.86rem;color:var(--c);text-decoration:none;white-space:nowrap}.cat-more:hover{text-decoration:underline}.cat-hero{margin:0 0 2rem;padding:1.8rem 1.75rem 1.6rem;border-radius:16px;background:color-mix(in srgb,var(--c) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--c) 22%,var(--border))}.cat-hero .cat-en{margin:0 0 .3rem}.cat-hero h1{margin:0 0 .5rem;font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.25}.cat-hero-blurb{margin:0;max-width:44em;color:var(--excerpt-fg)}.cat-hero-count{margin:.7rem 0 0;font-size:.85rem;color:var(--c);font-weight:600}.sidebar-cats a{display:inline-flex;align-items:center;gap:.5rem}.cat-dot{width:9px;height:9px;border-radius:50%;background:var(--c);flex:0 0 auto}@media (max-width: 960px){.featured{grid-template-columns:1fr;gap:1.5rem}.card-grid,.card-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 600px){.cat-tabs{margin-left:-1rem;margin-right:-1rem;padding:0 1rem}.featured{margin-bottom:2.5rem}.featured-side img{flex-basis:108px;width:108px;height:61px}.card-grid,.card-grid-3{grid-template-columns:1fr;gap:1.5rem}.cat-section-head{flex-direction:column;align-items:flex-start;gap:.4rem}.home-columns-stack{gap:2.5rem}.cat-hero{padding:1.3rem 1.2rem}}
