*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f7f6f1;color:#252821;font:16px/1.75 system-ui,-apple-system,"PingFang SC",sans-serif}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,select{font:inherit}button,a,select{touch-action:manipulation}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skip{position:absolute;top:-80px}.skip:focus{top:8px;left:8px;background:#fff;z-index:5}.site-header,main,footer{max-width:1160px;margin:auto;padding:0 40px}.site-header{min-height:112px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid #dedfd5}.brand{font-weight:700;font-size:22px;letter-spacing:-.04em}.brand small{display:block;color:#777c71;font-size:11px;font-weight:400;letter-spacing:.08em}.site-header nav{display:flex;gap:28px;font-size:14px}.hero{padding:100px 0 76px;max-width:870px}.hero.compact{padding:65px 0 45px}.eyebrow{color:var(--accent);font-size:12px;letter-spacing:.12em;margin:0 0 20px}h1{font-size:clamp(36px,5vw,64px);letter-spacing:-.05em;line-height:1.2;margin:0 0 26px;font-weight:600}.hero>p:not(.eyebrow){font-size:18px;color:#737969;max-width:650px}.hero-links{display:flex;gap:32px;margin-top:34px;font-size:14px;color:var(--accent)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:40px 0 22px;border-bottom:1px solid #d9ddcf;padding-bottom:15px}.section-heading h2{margin:0;font-size:23px;font-weight:600}.section-heading>span{color:#7b8075;font-size:12px}.entries{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px}.entry{padding:25px 0 28px;border-bottom:1px solid #d9ddcf;display:flex;flex-direction:column;align-items:start}.entry-meta{font-size:12px;color:var(--accent);display:flex;gap:20px;flex-wrap:wrap}.entry-meta span{color:#777f72}.entry h3{font-size:22px;line-height:1.55;letter-spacing:-.025em;font-weight:600;margin:16px 0 9px}.entry p{color:#737969;font-size:14px;margin:0 0 20px}.read{font-size:12px;margin-top:auto}.read span{margin-left:20px}.column-links{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.column-links>a{padding:24px;background:#eeeee5;font-size:20px}.column-links span{display:block;font-size:11px;color:#828879;margin-bottom:22px}.column-links small{display:block;font-size:12px;color:#828879}.reading{max-width:750px;margin:65px auto}.back{display:block;font-size:13px;color:#777f72;margin-bottom:40px}.reading>.entry-meta{margin-bottom:22px}.prose h1{font-size:38px;line-height:1.4}.prose{line-height:1.95;overflow-wrap:anywhere}.prose h2{font-size:24px;margin-top:36px}.prose p{margin:22px 0}.prose img{max-width:100%;height:auto}.prose pre{overflow:auto;padding:20px;background:#e9ece2}.prose a,.sources a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.sources{border-top:1px solid #d9ddcf;margin-top:45px;font-size:14px}.sources h2{font-size:18px}.sources a{display:block}.empty{color:#828879;padding:20px 0}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #dedfd5;margin-top:100px;padding-top:30px;padding-bottom:35px;font-size:11px;color:#7b8075}@media(max-width:750px){.site-header,main,footer{padding-left:22px;padding-right:22px}.site-header{align-items:start;flex-direction:column;justify-content:center;padding-top:22px;padding-bottom:20px;gap:15px}.site-header nav{gap:24px;font-size:13px}.hero{padding:58px 0 36px}.hero.compact{padding:42px 0 24px}.entries{grid-template-columns:1fr}.column-links{grid-template-columns:repeat(2,1fr)}.prose h1{font-size:30px}footer{margin-top:65px;flex-direction:column}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.brand .site-logo{float:left;object-fit:contain;border-radius:8px;margin-right:10px}

.site-header nav,.hero-links{flex-wrap:wrap}.column-links{grid-template-columns:repeat(4,minmax(0,1fr))}.column-links>a{overflow-wrap:anywhere}@media(max-width:850px){.column-links{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:750px){.site-header nav{gap:12px 20px}.hero-links{gap:16px 24px}}
/* Theme accents for the shared reading/calendar modules. The authored homepages
   retain their own CSS and scripts and are not wrapped in these layouts. */
body[data-theme="portfolio"]{--accent:#313ff4;background:#f9f8f4;color:#252638}
[data-theme="portfolio"] .site-header{border-bottom:2px solid #313ff4}
[data-theme="portfolio"] .brand{font-weight:800}
[data-theme="portfolio"] .column-links>a{background:#eeedff;border-radius:16px}
[data-theme="portfolio"] .entry h3{font-weight:700}
body[data-theme="personal"]{--accent:#3a7c77;background:#f1ede3;color:#293638}
[data-theme="personal"] .site-header{border-bottom-color:#c7cdc6}
[data-theme="personal"] .column-links>a{background:#e1e6de;border-radius:10px}
[data-theme="personal"] .prose{font-family:ui-serif,"Songti SC",serif}

.site-header nav a[aria-current="page"]{color:var(--accent);text-decoration:underline;text-underline-offset:7px;text-decoration-thickness:2px}
.feed-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:56px;align-items:start}
.content-feed .hero.compact{padding-bottom:24px}
.feed-sidebar{position:sticky;top:24px;font-size:14px}
.feed-sidebar form label{display:block;font-weight:600;margin-bottom:10px}
.feed-search-control{display:flex;gap:6px}
.feed-search-control input{width:100%;min-width:0;padding:9px 10px;border:1px solid #cdd2c8;border-radius:5px;background:transparent;color:inherit;font:inherit}
.feed-search-control button,.feed-pagination button{border:1px solid #cdd2c8;border-radius:5px;background:transparent;color:inherit;padding:7px 12px;white-space:nowrap;cursor:pointer}
.feed-search-control input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.feed-filters{display:flex;flex-direction:column;gap:4px;margin-top:22px}
.feed-filters a{display:flex;justify-content:space-between;gap:16px;padding:10px 12px;border-radius:5px}
.feed-filters a[aria-current="page"]{color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,transparent);font-weight:600}
.feed-filters small{font-size:12px;color:#747b70}
.feed-legacy{margin-top:24px;color:#687160}.feed-legacy summary{cursor:pointer}.feed-legacy .feed-filters{margin-top:8px}
#feed-count{font-size:12px;color:#747b70;margin:0;padding:0 0 18px;border-bottom:1px solid #d9ddcf}
.feed-entry{padding:25px 0;border-bottom:1px solid #d9ddcf;overflow-wrap:anywhere}
.feed-entry h2{font-size:23px;line-height:1.5;margin:9px 0 8px;font-weight:600}
.feed-entry p{font-size:15px;color:#687160;line-height:1.8;margin:0}
.feed-pagination{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:30px 0;font-size:14px}
.feed-pagination a{color:var(--accent)}
.prose .article-body a[href],.reading .sources a[href]{color:light-dark(#1769c2,#8ab4f8);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
@media(max-width:750px){.feed-layout{grid-template-columns:1fr;gap:28px}.feed-sidebar{position:static}.feed-filters{flex-direction:row;flex-wrap:wrap;gap:6px}.feed-filters a{gap:10px;padding:8px 10px}.feed-legacy{margin-top:12px}.feed-entry h2{font-size:20px}.feed-search-control{max-width:420px}}

/* Quiet article captions, including their attribution links. */
.article-body p.article-caption,.article-body figcaption{font-size:10px;line-height:1.5;font-weight:400;color:var(--seo-muted,var(--muted,#777));margin:6px 0 20px;letter-spacing:0}
.article-body p.article-caption a[href],.article-body figcaption a[href]{font-size:inherit;color:inherit;text-decoration:none}
.article-body p.article-caption a[href]:hover,.article-body figcaption a[href]:hover{text-decoration:underline}
/* Shared adaptation layer; no fonts, dependencies or runtime scripts. */
body[data-blog]{--paper:#fcfbf8;--ink:#292b28;--muted:#666b65;--line:#dedfd7;--soft:#f0f1eb;--reading:720px;background:var(--paper);color:var(--ink);font:16px/1.75 system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
[data-blog] :is(.site-header,main,footer){width:min(1120px,100% - 96px);max-width:none;padding-inline:0}
[data-blog] .site-header{min-height:100px;border-bottom:1px solid var(--line);gap:32px}
[data-blog] .brand{display:grid;grid-template-columns:38px auto;column-gap:12px;align-items:center;font-size:21px;letter-spacing:-.035em;flex-shrink:0}
[data-blog] .brand .site-logo{grid-row:1/3;float:none;margin:0;border-radius:0;width:36px;height:36px}
.brand-monogram{grid-row:1/3;display:grid;place-items:center;width:36px;height:36px;background:var(--accent);color:#fff;font:22px/1.2 ui-serif,"Songti SC",SimSun,serif}
[data-blog] .brand small{grid-column:2;font-size:10px;letter-spacing:.06em;color:var(--muted);font-weight:400}
[data-blog] .site-header nav{gap:9px 24px;justify-content:flex-end;font-size:13px}
[data-blog] .site-header nav a{padding:8px 0;white-space:nowrap}
[data-blog] .site-header nav a[aria-current=page]{text-decoration-thickness:1px;text-underline-offset:8px}
[data-blog] .hero{max-width:none;padding:72px 0 46px}
.blog-intro{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:48px;align-items:center;border-bottom:1px solid var(--line)}
[data-blog] .eyebrow{font:11px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:var(--accent);margin:0 0 22px}
[data-blog] h1{font-size:clamp(38px,5.5vw,68px);font-weight:650;letter-spacing:-.045em;line-height:1.2;margin:0 0 22px}
.blog-slogan{font-size:clamp(17px,2vw,21px);line-height:1.8;color:var(--muted);margin:0;max-width:38em}
.blog-emblem{display:grid;place-items:center;aspect-ratio:1;color:var(--accent);background:var(--soft);border-radius:50%}
.blog-emblem img{width:108px;height:108px;object-fit:contain}
.blog-emblem span{font:76px/1.2 ui-serif,"Songti SC",SimSun,serif}
[data-blog] .hero-links{gap:12px 24px;margin-top:30px;font-size:13px;align-items:center}
[data-blog] .hero-links a{padding:5px 0;border-bottom:1px solid var(--line)}
.home-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:64px;align-items:start;margin:44px 0 0}
[data-blog] .section-heading{margin:0 0 12px;padding:0 0 16px;border-color:var(--line);align-items:baseline}
[data-blog] .section-heading h2{font-size:20px;font-weight:650;letter-spacing:-.02em}
[data-blog] .section-heading>a{font-size:12px;color:var(--muted)}
[data-blog] .entries{display:block}
[data-blog] .entry{padding:28px 0 30px;border-color:var(--line);min-width:0;overflow-wrap:anywhere}
[data-blog] .entry-meta{font-size:11px;letter-spacing:.015em;gap:12px;align-items:center}
[data-blog] .entry-meta time{color:var(--muted);font:11px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace}
[data-blog] .entry h3{font-size:23px;line-height:1.5;letter-spacing:-.025em;margin:12px 0 9px;font-weight:650}
[data-blog] .entry p{font-size:14px;line-height:1.9;color:var(--muted);margin:0 0 14px}
[data-blog] .read{font-size:12px;color:var(--accent)}
.entry-cover{display:block;width:100%;max-height:290px;object-fit:cover;aspect-ratio:16/9;margin:0 0 20px;border-radius:6px}
.home-directory{padding-top:4px}
.home-directory h2{font-size:12px;color:var(--muted);font-weight:500;letter-spacing:.12em;margin:0 0 16px}
.home-directory nav{border-top:1px solid var(--line)}
.home-directory nav a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;border-bottom:1px solid var(--line);font-size:14px}
.home-directory nav small{font:11px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted)}
.directory-note{margin-top:28px;color:var(--muted);font-size:12px;line-height:1.9}
.directory-note a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
[data-blog] .empty{padding:40px 0;color:var(--muted);font-size:14px}
[data-blog] .hero.compact{padding:50px 0 34px}
[data-blog] .hero.compact h1{font-size:clamp(30px,4vw,44px)}
[data-blog] .feed-layout{grid-template-columns:200px minmax(0,1fr);gap:64px}
[data-blog] .feed-entry,[data-blog] #feed-count{border-color:var(--line)}
[data-blog] .feed-entry p,[data-blog] #feed-count,[data-blog] .feed-filters small{color:var(--muted)}
[data-blog] .feed-entry h2{font-size:22px;font-weight:600}
[data-blog] .feed-filters a{border-radius:3px}
[data-blog] .reading{max-width:var(--reading);margin:56px auto 80px}
[data-blog] .back{font-size:12px;margin-bottom:32px;color:var(--muted)}
[data-blog] .prose{font-size:17px;line-height:1.95;overflow-wrap:anywhere}
[data-blog] .prose h1{font-size:clamp(28px,3.5vw,40px);line-height:1.45;margin-bottom:32px}
[data-blog] .prose :is(h2,h3){line-height:1.5;letter-spacing:-.02em;margin-top:2em}
[data-blog] .prose p{margin:1.4em 0}
[data-blog] .prose blockquote{border-left:3px solid var(--accent);margin:1.5em 0;padding:.1em 1.4em;color:var(--muted);background:var(--soft)}
[data-blog] .prose :is(img,video,iframe){max-width:100%}
[data-blog] .prose pre{box-sizing:border-box;max-width:100%;overflow:auto;white-space:pre;overflow-wrap:normal;word-break:normal;background:var(--soft);border:1px solid var(--line);border-radius:6px;padding:20px;font:14px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4}
[data-blog] .prose pre code{font:inherit;white-space:inherit;background:none;padding:0}
[data-blog] .prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:15px}
[data-blog] .prose :is(th,td){padding:10px 14px;border-bottom:1px solid var(--line);text-align:left}
[data-blog] .prose th{background:var(--soft)}
[data-blog] .sources{border-color:var(--line)}
[data-blog] .showcase-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 36px}
[data-blog] .showcase-card{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding-bottom:24px}
[data-blog] .showcase-cover{display:none}
[data-blog] .showcase-copy{padding:16px 0 0}
[data-blog] .showcase-copy h2{font-size:22px;line-height:1.5}
[data-blog] .showcase-copy p{color:var(--muted)}
[data-blog] .showcase-card img{height:auto;aspect-ratio:16/10;border-radius:4px;object-fit:contain;background:var(--soft)}
[data-blog] .column-links>a{background:var(--soft);border-radius:3px}
@media(max-width:650px){[data-blog] .showcase-grid{grid-template-columns:1fr}}
[data-blog] footer{margin-top:80px;padding-block:24px 30px;border-color:var(--line);font-size:11px;color:var(--muted);align-items:center;flex-wrap:wrap}
.footer-links{display:flex;gap:20px;align-items:center}
[data-blog] a{transition:color .15s ease}
[data-blog] a:hover{color:var(--accent)}
[data-blog] :focus-visible{outline:2px solid var(--accent);outline-offset:5px}
[data-blog] .skip:focus{padding:8px 16px;background:var(--paper)}
@media(min-width:900px){.home-directory{position:sticky;top:32px}}
@media(max-width:850px){[data-blog] :is(.site-header,main,footer){width:calc(100% - 48px)}[data-blog] .site-header{flex-wrap:wrap;gap:12px;padding-block:20px}[data-blog] .site-header nav{justify-content:flex-start;gap:8px 22px}.home-layout{grid-template-columns:minmax(0,1fr) 190px;gap:32px}[data-blog] .feed-layout{gap:32px;grid-template-columns:180px minmax(0,1fr)}}
@media(max-width:650px){[data-blog] :is(.site-header,main,footer){width:calc(100% - 40px)}[data-blog] .site-header{min-height:110px;align-items:flex-start;gap:12px}[data-blog] .site-header nav{font-size:12px;gap:4px 20px}[data-blog] .hero{padding:42px 0 32px}.blog-intro{grid-template-columns:minmax(0,1fr) 72px;gap:16px;align-items:start}.blog-emblem{margin-top:35px}.blog-emblem img{width:58px;height:58px}.blog-emblem span{font-size:39px}[data-blog] .eyebrow{font-size:9px;letter-spacing:.1em;margin-bottom:18px}.blog-slogan{font-size:16px}[data-blog] .hero-links{gap:8px 18px;margin-top:22px}.home-layout{display:flex;flex-direction:column-reverse;gap:32px;margin-top:28px}.home-main,.home-directory{width:100%}.home-directory nav{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.home-directory nav a{min-height:48px;font-size:13px}.home-directory h2{margin-bottom:12px}.directory-note{display:none}[data-blog] .section-heading h2{font-size:19px}[data-blog] .entry h3{font-size:21px}[data-blog] .feed-layout{grid-template-columns:1fr;gap:24px}[data-blog] .feed-sidebar{position:static}[data-blog] .feed-filters{flex-direction:row;flex-wrap:wrap}[data-blog] .reading{margin-top:36px}[data-blog] .prose{font-size:16px}[data-blog] footer{align-items:flex-start;gap:14px;margin-top:56px}}
@media(prefers-reduced-motion:reduce){[data-blog] *,[data-blog] *::before,[data-blog] *::after{scroll-behavior:auto;transition:none!important;animation:none!important}}
/*! Adapted from Archie (MIT), Athul. See /theme-license.txt. */
body[data-blog=archie]{--paper:#fff;--soft:#eff3f1;--line:#dedfdd}
[data-blog=archie] .blog-intro{border-bottom:3px dotted var(--accent)}
[data-blog=archie] :is(.eyebrow,.entry-meta,.read,.home-directory h2){font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
[data-blog=archie] .entry h3 a{border-bottom:2px solid color-mix(in srgb,var(--accent) 25%,transparent);text-decoration:none}
[data-blog=archie] .entry h3 a:hover{border-color:var(--accent)}
[data-blog=archie] .prose blockquote{border-left:3px solid var(--accent);padding-left:1em;color:var(--muted);background:transparent;font-style:italic}
[data-blog=archie] .blog-emblem{border:1px solid var(--accent);background:transparent;border-radius:0;box-shadow:8px 8px 0 var(--soft)}
[data-blog=archie] .entry{padding-block:28px}
[data-site=piggytuck]{--paper:#fcfbf8;--soft:#eaeafa}
[data-site=enter]{--paper:#fafbfd;--soft:#e9eef6}
@media(max-width:650px){[data-blog=archie] .blog-emblem{box-shadow:4px 4px 0 var(--soft)}}
/* Reusable structures (web/themes/structures.mjs) and article atoms.
   Generic classes only; sites flavour them through the preset variables. */

/* Callout atom — after Starlight asides / Just the Docs callouts. */
.callout{--callout:var(--accent)}
[data-blog] .prose blockquote.callout,.prose .callout{margin:1.6em 0;padding:.9em 1.2em;border:1px solid color-mix(in srgb,var(--callout) 35%,transparent);border-left:4px solid var(--callout);border-radius:6px;background:color-mix(in srgb,var(--callout) 7%,var(--paper,#fff));color:inherit;font-style:normal}
[data-blog] .prose blockquote.callout{border-left-width:4px;border-left-color:var(--callout)}
.prose .callout.callout-tip{--callout:light-dark(#2f7d4f,#8fd0a6)}
.prose .callout.callout-important{--callout:light-dark(#6a4bb0,#c3b0f0)}
.prose .callout.callout-warning{--callout:light-dark(#9a6400,#f0c36a)}
.prose .callout.callout-caution{--callout:light-dark(#b23b2e,#f2a093)}
[data-blog] .prose .callout>p,.prose .callout>p{margin:.5em 0}
[data-blog] .prose .callout>.callout-title,.prose .callout>.callout-title{margin:0 0 .2em;font-size:.82em;font-weight:650;letter-spacing:.06em;color:var(--callout)}

/* Table of contents rail — after Starlight "On this page". */
.reading-layout{display:grid;grid-template-columns:minmax(0,var(--reading,720px)) 200px;gap:64px;justify-content:center;align-items:start}
[data-blog] .reading-layout>.reading{margin-inline:0;max-width:none}
.reading-aside{position:sticky;top:32px;margin-top:56px;max-height:calc(100vh - 64px);overflow:auto}
.toc{font-size:13px;line-height:1.5;border-left:1px solid var(--line)}
.toc-title{margin:0 0 10px;padding-left:16px;font-size:11px;letter-spacing:.12em;color:var(--muted)}
.toc ol{list-style:none;margin:0;padding:0}
.toc li a{display:block;padding:5px 0 5px 16px;margin-left:-1px;border-left:2px solid transparent;color:var(--muted)}
.toc li a:hover{color:var(--accent);border-left-color:var(--accent)}
.toc .toc-h3 a{padding-left:28px;font-size:12px}
.prose :is(h2,h3)[id]{scroll-margin-top:24px}
@media(max-width:1100px){.reading-layout{display:block}.reading-aside{display:none}}

/* Previous / next — after Starlight pagination links. */
.article-neighbors{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:48px}
.article-neighbors a{display:flex;flex-direction:column;gap:4px;padding:14px 18px;border:1px solid var(--line);border-radius:6px;min-width:0}
.article-neighbors a:hover{border-color:var(--accent)}
.article-neighbors small{font-size:11px;color:var(--muted)}
.article-neighbors span{font-size:15px;line-height:1.5;overflow-wrap:anywhere}
.article-neighbors .neighbor-next{text-align:right;grid-column:2}
@media(max-width:650px){.article-neighbors{grid-template-columns:1fr}.article-neighbors .neighbor-next{grid-column:auto}}

/* Data tables — after Just the Docs' table wrapper. */
.table-scroll{max-width:100%;overflow-x:auto;margin:1.6em 0;border:1px solid var(--line);border-radius:6px;max-height:80vh}
.table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[data-blog] .prose .table-scroll table.data-table{display:table;width:100%;margin:0;border:0;font-size:14px;font-variant-numeric:tabular-nums}
[data-blog] .prose .data-table thead th{position:sticky;top:0;z-index:1;background:var(--soft);border-bottom:1px solid var(--line);font-weight:600;white-space:nowrap}
[data-blog] .prose .data-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--soft) 55%,transparent)}
[data-blog] .prose .data-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
[data-blog] .prose .data-table :is(th,td){padding:9px 14px}

/* Byline — after Distill's d-byline: a quiet grid under the title. */
.article-byline{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px 24px;margin:-8px 0 36px;padding:14px 0;border-block:1px solid var(--line);font-size:13px;line-height:1.5}
.article-byline div{min-width:0}
.article-byline dt{font-size:10px;letter-spacing:.14em;color:var(--muted);margin-bottom:2px}
.article-byline dd{margin:0;overflow-wrap:anywhere}

/* Wide figures — after Distill's l-page layout: lone images leave the text column. */
@media(min-width:1000px){
  .figures-wide .article-body>p:has(>img:only-child){margin-inline:-120px}
  .figures-wide .article-body>p:has(>img:only-child) img{width:100%;border-radius:4px}
  .figures-wide .article-body>p:has(>img:only-child)+p.article-caption{margin-inline:-120px}
  .has-toc.figures-wide .article-body>p:has(>img:only-child),.has-toc.figures-wide .article-body>p:has(>img:only-child)+p.article-caption{margin-right:0}
}

/* Appendix — after Distill's d-appendix: sources and notes in a quieter band. */
.has-appendix>:is(.sources,.prose:has(.article-endnotes)){margin:0;padding:22px 0;border-top:1px solid var(--line);font-size:13px;line-height:1.8;color:var(--muted)}
.has-appendix>.sources,.has-appendix .article-endnotes{display:grid;grid-template-columns:140px minmax(0,1fr);grid-auto-flow:dense;gap:4px 32px;align-items:start}
.has-appendix>.sources>h2,.has-appendix .article-endnotes>h2{grid-column:1;grid-row:1;margin:0;font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--ink)}
.has-appendix>.sources>a,.has-appendix .article-endnotes>:not(h2){grid-column:2;margin:0}
.has-appendix .article-endnotes h3{font-size:12px;margin:12px 0 0}
.has-appendix .article-endnotes :is(ol,ul){padding-left:1.4em}
.has-appendix .article-endnotes li{margin:0 0 4px}
[data-blog] .has-appendix .article-endnotes li>p{margin:0}
.has-appendix>.entry-tags{padding:18px 0;border-top:1px solid var(--line)}
@media(max-width:650px){.has-appendix>.sources,.has-appendix .article-endnotes{grid-template-columns:1fr}.has-appendix>.sources>a,.has-appendix .article-endnotes>:not(h2){grid-column:1}}

/* Fact sheet — after CourtListener's case header: the holding first, then facts. */
.fact-sheet{margin:-8px 0 36px;border:1px solid var(--line);border-top:3px solid var(--accent);background:var(--card,var(--paper));font-size:13px;line-height:1.6}
.fact-sheet dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0}
.fact-sheet dl>div{padding:12px 18px;min-width:0}
.fact-sheet .fact-summary{grid-column:1/-1;border-bottom:1px solid var(--line);font-size:15px;line-height:1.8}
.fact-sheet dt{font-size:10px;letter-spacing:.14em;color:var(--muted);margin-bottom:2px}
.fact-sheet dd{margin:0;overflow-wrap:anywhere}
.fact-sheet a{color:var(--accent)}

/* Citations — after CourtListener's authorities list. */
.sources.citations h2 small{font:11px/1 ui-monospace,SFMono-Regular,monospace;color:var(--muted);margin-left:6px}
.sources.citations ol{margin:0;padding-left:1.6em}
.sources.citations li{margin:0 0 8px;padding-left:4px}
.sources.citations li::marker{font:12px ui-monospace,SFMono-Regular,monospace;color:var(--muted)}
.sources.citations li a{display:inline}
.sources.citations li small{display:block;font-size:11px;color:var(--muted)}
.has-appendix>.sources.citations>ol{grid-column:2;margin:0}
@media(max-width:650px){.has-appendix>.sources.citations>ol{grid-column:1}}

/* Infobox — after MediaWiki's infobox: floats right of the opening text. */
.infobox{float:right;width:260px;margin:4px 0 20px 28px;border:1px solid var(--line);background:var(--card,var(--paper));font-size:13px;line-height:1.6}
.infobox-title{margin:0;padding:10px 14px;background:color-mix(in srgb,var(--accent) 14%,var(--paper));font-weight:650;text-align:center;line-height:1.5}
[data-blog] .prose .infobox-title{margin:0}
[data-blog] .prose .infobox table{display:table;width:100%;margin:0;font-size:13px;border:0}
[data-blog] .prose .infobox :is(th,td){padding:7px 12px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left;background:none}
[data-blog] .prose .infobox th{width:4.5em;color:var(--muted);font-weight:500;white-space:nowrap}
[data-blog] .prose .infobox tr:last-child :is(th,td){border-bottom:0}
.has-infobox .article-body>:is(h2,h3,pre,table,.table-scroll,.callout){clear:both}
.has-infobox .prose::after{content:"";display:block;clear:both}
@media(max-width:650px){.infobox{float:none;width:auto;margin:0 0 28px}}

/* See also — after MediaWiki's "See also" section. */
.see-also{margin-top:44px;padding-top:20px;border-top:1px solid var(--line)}
.see-also h2{font-size:16px;margin:0 0 10px}
.see-also ul{margin:0;padding-left:1.2em}
.see-also li{margin:6px 0}
.see-also a{color:var(--accent)}
.see-also small{margin-left:10px;font-size:11px;color:var(--muted)}

/* Epigraph — after Tufte CSS: no box, larger serif, attribution set right. */
[data-blog] .prose blockquote.epigraph{margin:0 0 2.4em;padding:0 0 0 1.2em;border-left:2px solid color-mix(in srgb,var(--accent) 45%,transparent);background:none;font:1.08em/1.9 ui-serif,"Songti SC","STSong",SimSun,Georgia,serif;font-style:normal;color:var(--ink)}
[data-blog] .prose blockquote.epigraph>p{margin:.4em 0}
[data-blog] .prose blockquote.epigraph>.epigraph-source{text-align:right;font-size:.86em;color:var(--muted)}

/* Title seal — after classical book title slips (题签), in Tufte's margin. */
.title-seal{display:none}
@media(min-width:1180px){
  .has-title-seal>.prose{position:relative}
  .has-title-seal .title-seal{display:block;position:absolute;top:6px;left:-84px;max-height:420px;padding:14px 8px;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);outline:3px double color-mix(in srgb,var(--accent) 25%,transparent);outline-offset:3px;background:var(--paper);writing-mode:vertical-rl;font:15px/1.6 ui-serif,"Songti SC","STSong",SimSun,serif;letter-spacing:.18em;color:var(--accent);overflow:hidden}
  .has-title-seal .title-seal span{display:block;max-height:392px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* Source action — after WebStack's direct "visit" links. */
.source-action{display:inline-flex;align-items:center;gap:6px;margin:-12px 0 28px;padding:8px 16px;border:1px solid var(--accent);border-radius:999px;font-size:13px;color:var(--accent)}
[data-blog] .prose a.source-action,.prose a.source-action{text-decoration:none;color:var(--accent)}
[data-blog] .prose a.source-action:hover,.source-action:hover{background:var(--accent);color:var(--paper)}

/* Link directory — after WebStack: category chips, then compact link cards. */
.link-directory{margin-top:64px}
.link-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px;position:sticky;top:0;z-index:2;padding:10px 0;background:var(--paper)}
.link-chips a{display:inline-flex;gap:6px;align-items:baseline;padding:6px 14px;border:1px solid var(--line);border-radius:999px;font-size:13px}
.link-chips a:hover{border-color:var(--accent)}
.link-chips small{font:11px ui-monospace,SFMono-Regular,monospace;color:var(--muted)}
.link-group{scroll-margin-top:64px;margin:28px 0}
.link-group h3{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 14px;font-size:17px}
.link-group .link-more{font-size:12px;font-weight:400;color:var(--muted)}
.link-group ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:0;padding:0;list-style:none}
.link-card{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--card,var(--paper));transition:border-color .15s ease,transform .15s ease}
.link-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.link-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:8px;background:color-mix(in srgb,var(--accent) 14%,var(--paper));color:var(--accent);font-weight:650}
.link-card div{display:flex;flex-direction:column;gap:3px;min-width:0}
.link-title{font-size:14px;font-weight:600;line-height:1.45;overflow-wrap:anywhere}
.link-card small{font-size:12px;line-height:1.55;color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.link-host{font:11px ui-monospace,SFMono-Regular,monospace;color:var(--accent);overflow-wrap:anywhere}
@media(prefers-reduced-motion:reduce){.link-card{transition:none}.link-card:hover{transform:none}}

/* Post meta — after AstroPaper: one quiet line under the title. */
.post-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin:-12px 0 32px;font-size:13px;color:var(--muted)}
.post-meta time{font-variant-numeric:tabular-nums}
.post-tag{color:var(--accent)}

/* Reading progress — after AstroPaper's progress bar, as a CSS scroll timeline. */
.reading-progress{display:none}
@supports(animation-timeline:scroll()){
  .reading-progress{display:block;position:fixed;inset:0 0 auto;height:3px;z-index:20;background:var(--accent);transform-origin:0 50%;transform:scaleX(0);animation:reading-progress linear both;animation-timeline:scroll(root)}
  @keyframes reading-progress{to{transform:scaleX(1)}}
}
@media(prefers-reduced-motion:reduce){.reading-progress{display:none}}

/* Image rows — after Hugo Theme Gallery's album rows: even height, small gaps. */
.image-row{display:grid;grid-template-columns:repeat(var(--images,3),minmax(0,1fr));gap:6px;margin:1.6em 0 0}
.image-row+:not(.article-caption){margin-top:1.6em}
[data-blog] .prose .image-row img{display:block;width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:3px;background:var(--soft)}
.image-row+.article-caption{margin-top:8px}
@media(min-width:1000px){.figures-wide:not(.has-toc) .image-row,.figures-wide:not(.has-toc) .image-row+.article-caption{margin-inline:-120px}}
@media(max-width:650px){.image-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Inline contents — after al-folio's table of contents at the start of a post. */
.article-contents{margin:0 0 32px;padding:10px 16px;border:1px solid var(--line);border-radius:6px;font-size:14px}
.article-contents summary{cursor:pointer;font-weight:600}
.article-contents summary small{font-weight:400;color:var(--muted);margin-left:4px}
.article-contents ol{margin:10px 0 4px;padding-left:1.4em}
.article-contents li{margin:4px 0}
.article-contents .toc-h3{margin-left:1.2em;list-style:circle}
.article-contents a{color:var(--muted)}
.article-contents a:hover{color:var(--accent)}
/* Follow the browser's system preference, including changes while reading.
   Kept in the existing stylesheet: no theme script, storage or extra request. */
:root{color-scheme:light dark}
body[data-blog]{color-scheme:inherit;--paper:light-dark(#fcfbf8,#1c1f20);--ink:light-dark(#292b28,#eceee9);--muted:light-dark(#60665f,#b1b8b2);--line:light-dark(#dedfd7,#424945);--soft:light-dark(#f0f1eb,#282e2b);--card:light-dark(#fff,#242a27);--night-accent:#a8ceb6;--accent:light-dark(var(--blog-accent,#376c68),var(--night-accent))}
body[data-blog=papermod]{--paper:light-dark(#f7f7f5,#1c201e);--soft:light-dark(#edeee9,#2b322d)}
body[data-blog=archie]{--paper:light-dark(#fff,#1c1f22);--soft:light-dark(#eff3f1,#29312f)}
body[data-blog=bear]{--paper:light-dark(#faf8f2,#24221f);--soft:light-dark(#eeeae0,#322f29);--line:light-dark(#dedbcf,#4b4740)}
body[data-blog=xmin]{--paper:light-dark(#f9f7f0,#23221f);--soft:light-dark(#eeece4,#302f29);--line:light-dark(#d6d3c8,#4b4941)}
body[data-site=piggytuck]{--paper:light-dark(#fcfbf8,#1e2029);--soft:light-dark(#eaeafa,#2d3041);--night-accent:#b1bbff}
body[data-site=personal]{--paper:light-dark(#f6f5ef,#202928);--ink:light-dark(#29362f,#f4f0e7);--muted:light-dark(#59685f,#b7c3b8);--soft:light-dark(#e8ede5,#293330);--line:light-dark(#cfd7cb,#45534b);--night-accent:#b3d3b5}
body[data-site=pets]{--night-accent:#e0b594}
body[data-site=legis]{--paper:light-dark(#fbfbf9,#202429);--soft:light-dark(#eceef0,#2c333c);--night-accent:#b2c6df}
body[data-site=metho]{--night-accent:#9ed4c2}
body[data-site=enter]{--paper:light-dark(#fafbfd,#1d232c);--soft:light-dark(#e9eef6,#2b3544);--night-accent:#a9c4ee}
body[data-site=xsiching]{--night-accent:#e4b5a9}
body[data-site=study]{--soft:light-dark(#e8eddf,#2e352a);--night-accent:#c0d3ac}
[data-blog=papermod] .entry{background:var(--card)}
[data-blog=bear] .blog-emblem{background:var(--soft)}
[data-blog] :is(.hero>p:not(.eyebrow),.entry-meta span,.column-links span,.column-links small,.section-heading>span,.section-description,.standing-gallery figcaption,.legacy-archives summary,.entry-tags){color:var(--muted)}
[data-blog] :is(.feed-search-control input,.feed-search-control button,.feed-pagination button,.entry-tags span,.legacy-archives,.calendar-toolbar button,.calendar-toolbar select,#day-details){border-color:var(--line)}
[data-blog] :is(.standing-gallery img,.standing-cover,.month){background:var(--soft)}
[data-blog] :is(.month-grid,.day){color:var(--muted)}
[data-blog] .day.has-items{background:var(--accent);color:var(--paper)}
[data-blog] .day:hover{background:var(--line);color:var(--ink)}
[data-blog] select option{background:var(--paper);color:var(--ink)}
[data-blog] input::placeholder{color:var(--muted);opacity:1}
[data-blog] .feed-legacy{color:var(--muted)}
[data-blog] .prose :not(pre)>code{background:var(--soft);border-radius:3px;padding:.1em .25em}
[data-blog] :is(.gallery-toolbar,.gallery-item small,.graph-toolbar,.graph-caption,.graph-relation h2 small,.graph-scope,.graph-review){color:var(--muted)}
[data-blog] :is(.gallery-toolbar,.gallery-toolbar select,.graph-toolbar,.graph-toolbar select,.graph-stage,.graph-relation,.graph-entities,.graph-empty){border-color:var(--line)}
[data-blog] :is(.gallery-art,.graph-stage,.graph-evidence blockquote,.graph-empty){background:var(--soft)}
[data-blog] :is(.graph-node circle,.graph-edge circle){fill:var(--paper)}
[data-blog] :is(.graph-node text,.graph-edge text){fill:var(--ink)}
[data-blog] :is(.graph-node:hover circle,.graph-node:focus circle){fill:var(--soft)}
