/* Quiet monochrome: generous black space, restrained typography. */
:root,html[data-theme="light"] {
  --bg:#fafafa;--surface:#fafafa;--bg-soft:#f0f0f0;--border:#dedede;
  --text:#303030;--heading:#161616;--text-muted:#666;--text-light:#727272;
  --primary:#333;--primary-dark:#111;--primary-soft:#ededed;--code-bg:#f0f0f0;
  --radius:2px;--left-w:160px;--right-w:160px;--header-h:80px;
  --shadow-sm:none;--shadow-md:none;color-scheme:light;
}
html[data-theme="dark"] {
  --bg:#050505;--surface:#050505;--bg-soft:#101010;--border:#222;
  --text:#dedede;--heading:#f0f0f0;--text-muted:#aaa;--text-light:#999;
  --primary:#d2d2d2;--primary-dark:#fff;--primary-soft:#151515;--code-bg:#0d0d0d;
  --shadow-sm:none;color-scheme:dark;
}
html {font-size:16px;scroll-padding-top:100px;}
body {background:var(--bg);font-size:18px;line-height:1.8;}
::selection {background:var(--text);color:var(--bg);}
:focus-visible {outline:1px solid var(--text-muted);outline-offset:5px;}
.site-header {background:var(--bg);border-bottom:0;box-shadow:none;}
.header-inner {max-width:1260px;padding:0 40px;gap:28px;}
.site-brand {font-size:16px;letter-spacing:-.3px;font-weight:500;flex-shrink:0;color:var(--heading);}
.site-brand:hover {text-decoration:none;}
.top-nav {margin:0;gap:2px;min-width:0;overflow-x:auto;}
.top-nav-item {font-size:15px;font-weight:400;padding:8px 10px;border-radius:0;color:var(--text-muted);}
.top-nav-item.active {background:none;color:var(--heading);font-weight:400;}
.top-nav-item:hover {background:none;color:var(--heading);}
.header-right {gap:12px;}
.header-search {border:0;border-bottom:1px solid var(--border);background:none;border-radius:0;}
.search-input {width:110px;font-size:15px;padding:6px;}
.search-btn {font-size:16px;padding:6px;}
.theme-toggle {border:0;padding:6px;font-size:18px;color:var(--text-muted);}
.holiday-badge {padding:0;order:3;border-radius:0;}
.holiday-badge:hover {background:none;}
.hb-emoji {display:none;}
.hb-body {flex-direction:row;align-items:baseline;gap:5px;}
.hb-num {font-size:15px;font-weight:400;background:none!important;-webkit-text-fill-color:var(--text-muted);}
.hb-unit,.hb-name {font-size:13px!important;letter-spacing:0;color:var(--text-muted);}
.page-layout {max-width:1160px;padding:0 40px;grid-template-columns:var(--left-w) minmax(0,1fr);gap:58px;min-height:calc(100vh - 160px);}
.main-content {background:none;padding:58px 0 80px;border:0;}
.left-sidebar {background:none;border:0;padding:64px 0 30px;height:calc(100vh - var(--header-h));}
.right-sidebar {display:none;background:none;border:0;}
.nav-section {margin-bottom:34px;}
.nav-section-title {font-size:14px;font-weight:400;letter-spacing:0;border:0;padding:0 0 12px;color:var(--text-light);margin:0;}
.nav-section-title .nav-icon {display:none;}
.nav-group-title,.nav-item {font-size:15px;font-weight:400;padding:8px 0;border-radius:0;}
.nav-group-title:hover,.nav-item:hover {background:none;}
.nav-icon {width:12px;height:12px;color:var(--text-light);}
.nav-count {background:none;font-size:13px;color:var(--text-light);padding:0;}
.nav-tags {padding:0;gap:7px 10px;}
.tag-item {background:none;border:0;border-radius:0;padding:0;font-size:14px;font-style:normal;color:var(--text-muted);}
.tag-item:hover {background:none;text-decoration:underline;}
.tag-count {background:none;font-size:12px;color:var(--text-light);padding:0;}
.tag-item:hover .tag-count {background:none;color:var(--text-muted);}
.archive-hero {padding:18px 0 65px;margin:0 0 36px;border:0;border-bottom:1px solid var(--border);background:none;}
.archive-hero h1 {font-size:36px;font-weight:400;line-height:1.4;letter-spacing:-1px;color:var(--heading);}
.archive-hero p {font-size:16px;color:var(--text-muted);margin-top:14px;}
.page-header {margin-bottom:16px;}
.page-header h1 {font-size:18px;font-weight:400;letter-spacing:0;color:var(--text-muted);}
.page-header .breadcrumb,.page-desc {font-size:15px;}
.post-card {background:none;border:0;border-bottom:1px solid var(--border);border-radius:0;margin:0;transition:none;}
.post-card:hover {background:none;box-shadow:none;transform:none;border-color:var(--border);}
.post-card-body {padding:27px 0 30px;}
.post-title-row {margin-bottom:8px;}
.post-card h2,.post-card-title {font-size:22px;font-weight:400;line-height:1.65;margin-bottom:8px;}
.post-card h2 a {color:var(--heading);overflow-wrap:anywhere;}
.post-card h2 a:hover {color:var(--primary-dark);text-decoration:underline;text-underline-offset:5px;}
.post-meta {font-size:14px;gap:12px;color:var(--text-muted);}
.meta-icon {color:var(--text-light);width:11px;height:11px;}
.meta-tag-link {font-style:normal;}
.post-card-preview {font-size:16px;line-height:1.9;color:var(--text-muted);margin-top:12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.post-card-arrow {display:none;}
.post-card-cover {width:140px;padding:27px 0 27px 24px;}
.post-card-cover img {max-height:140px;filter:saturate(.4);border-radius:1px;}
.post-article {padding:0;background:none;max-width:100%;}
.post-header {padding-bottom:28px;border-bottom:1px solid var(--border);}
.post-title {font-size:34px;line-height:1.5;font-weight:400;letter-spacing:-.3px;overflow-wrap:anywhere;}
.post-abstract {min-width:0;line-height:1.8;margin-top:18px;}
.abstract-content {min-width:0;overflow-wrap:anywhere;}
.abstract-label {flex-shrink:0;}
.markdown-body {font-size:18px;line-height:1.9;overflow-wrap:anywhere;}
.markdown-body h1::before,.markdown-body h2::before,.markdown-body h3::before,.markdown-body h4::before {content:none;}
.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4 {font-weight:500;}
.markdown-body blockquote {border-left:1px solid var(--text-light);background:none;border-radius:0;}
.markdown-body :not(pre)>code {color:var(--text);border-radius:2px;}
.markdown-body li::marker {color:var(--text-muted);}
.code-block-wrapper {border-radius:2px;}
.code-dots {display:none;}
.code-header {padding:8px 12px;}.code-lang {text-align:left;}
.toc-title {font-size:13px;font-weight:400;letter-spacing:0;}
.toc-item {font-size:14px;}
.pagination {justify-content:flex-start;gap:12px;}
.pagination a,.pagination span {border:0;padding:4px 8px;}
.pagination .current {background:var(--bg-soft);color:var(--heading);}
.btn-primary,.btn-admin {color:var(--bg)!important;border-radius:2px;}
.btn-edit {border-radius:2px;font-size:13px;}
.site-footer {background:none;border-top:0;font-size:13px;color:var(--text-light);padding:26px;gap:12px;}
.back-to-top {right:24px;bottom:24px;width:32px;height:32px;border-radius:0;background:var(--bg);color:var(--text-muted);font-size:18px;box-shadow:none;}
@media(max-width:1200px){.holiday-badge{display:none}.page-layout{gap:38px}.header-inner{padding:0 28px;gap:20px}.top-nav-item{padding:8px;}}
@media(max-width:768px){:root{--header-h:108px}.header-inner{height:auto;min-height:108px;flex-wrap:wrap;padding:17px 22px 8px;gap:10px}.site-brand{font-size:16px}.header-right{margin-left:auto;gap:8px}.search-input{width:88px}.top-nav{display:flex;order:4;flex-basis:100%;gap:12px;margin:0}.top-nav-item{font-size:14px;padding:5px 0}.page-layout{display:block;padding:0 24px}.left-sidebar{display:none}.main-content{padding:42px 0 50px}.archive-hero{padding:15px 0 45px;margin-bottom:28px}.archive-hero h1{font-size:32px}.archive-hero p{font-size:15px}.post-card-body{padding:24px 0}.post-card h2{font-size:21px}.post-meta{font-size:13px;gap:8px}.post-card-preview{font-size:15px}.post-card-cover{width:90px;padding:24px 0 24px 15px}.post-title{font-size:28px}.post-nav{gap:20px}.btn-admin,.header-link{font-size:13px;padding:4px}.header-right{flex-wrap:wrap}.markdown-body{font-size:18px}.site-footer{padding-bottom:34px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important;}}

/* Readable secondary content and code at every viewport size. */
.post-abstract {font-size:15px;line-height:1.85;}
.meta-icon {width:14px;height:14px;}
.code-body pre > code,.line-numbers {font-size:16px;line-height:1.8;}
.code-lang,.post-nav a,.btn-edit {font-size:14px;}
.post-card-preview {line-height:1.85;}
@media(max-width:768px){
  .top-nav {gap:20px;}
  .top-nav-item {min-height:40px;display:flex;align-items:center;}
  .header-inner {padding-left:20px;padding-right:20px;}
  .search-input {font-size:16px;width:82px;}
  .page-layout {padding:0 22px;}
  .post-meta {line-height:1.8;gap:8px 12px;}
  .post-card-cover {width:80px;}
  .post-abstract {font-size:15px;}
}

/* The article uses the same content track as the list; TOC lives in the existing sidebar. */
.left-sidebar .toc-widget {padding:0;margin-bottom:36px;}

/* Editorial finish: quiet hierarchy and a single shared reading grid. */
html {scrollbar-gutter:stable;}
.header-inner {max-width:1160px;}
.site-brand {font-family:Georgia,'Times New Roman',serif;font-size:22px;letter-spacing:-.8px;}
.header-search {border-bottom-color:transparent;transition:border-color .2s;}
.header-search:focus-within,.header-search:hover {border-bottom-color:var(--border);}
.site-header {border-bottom:1px solid var(--border);}
.top-nav-item.active {text-decoration:underline;text-underline-offset:8px;text-decoration-thickness:1px;}
.main-content {padding-top:64px;}
.left-sidebar {padding-top:70px;}
.nav-group-label .nav-icon {display:none;}
.nav-section-title {color:var(--text-muted);font-size:14px;margin-bottom:8px;}
.nav-group-title {padding:10px 0;}
.nav-count,.tag-count {font-variant-numeric:tabular-nums;}
.archive-hero {padding:0 0 62px;margin-bottom:34px;}
.journal-kicker {font-size:13px;letter-spacing:2px;color:var(--text-muted);margin-bottom:24px;}
.journal-kicker span {margin:0 8px;color:var(--text-light);}
.archive-hero h1 {font-family:Georgia,'Times New Roman','Songti SC',serif;font-size:58px;letter-spacing:-2px;line-height:1.12;font-weight:400;}
.archive-hero p {font-size:17px;margin-top:23px;letter-spacing:1px;}
.archive-heading h1 {font-size:15px;letter-spacing:2px;}
.post-card-body {padding:31px 0 35px;}
.post-card h2 {font-size:24px;font-weight:500;line-height:1.65;letter-spacing:.1px;margin-bottom:8px;}
.post-card h2 a:hover {text-decoration:none;}
.post-card h2 a {transition:color .18s;}
.post-card h2 a:hover {color:var(--text-muted);}
.journal-meta {font-size:14px;gap:10px;line-height:1.8;font-variant-numeric:tabular-nums;}
.journal-meta a {color:var(--text-muted);}
.post-card-preview {font-size:17px;line-height:1.9;margin-top:17px;}
.post-title {font-weight:500;font-size:36px;line-height:1.5;letter-spacing:.2px;}
.post-header .meta-icon {display:none;}
.post-header .post-meta {row-gap:10px;}
.post-abstract {display:block;margin-top:24px;padding-left:18px;border-left:1px solid var(--border);}
.abstract-label {display:none;}
.abstract-content {font-size:16px;line-height:1.9;color:var(--text-muted);}
.markdown-body {margin-top:40px;}
.markdown-body p {margin-bottom:24px;}
.markdown-body h2 {margin-top:44px;padding-bottom:14px;}
.site-footer {max-width:1080px;margin:0 auto;border-top:1px solid var(--border);padding:30px 0;}
@media(max-width:768px){
  .header-inner {padding-top:20px;padding-bottom:12px;}
  .site-brand {font-size:21px;}
  .main-content {padding-top:40px;}
  .archive-hero {padding-bottom:40px;margin-bottom:28px;}
  .journal-kicker {font-size:13px;margin-bottom:20px;letter-spacing:1.5px;}
  .archive-hero h1 {font-size:44px;letter-spacing:-1.5px;}
  .archive-hero p {font-size:16px;margin-top:20px;}
  .post-card h2 {font-size:22px;line-height:1.65;}
  .post-card-preview {font-size:16px;}
  .journal-meta {font-size:14px;}
  .post-card-body {padding:27px 0 30px;}
  .post-title {font-size:28px;line-height:1.6;}
  .site-footer {margin:0 22px;padding:25px 0;}
}
/* Article tools; reading mode keeps the text width while centering the page. */
.reading-toolbar {display:flex;justify-content:flex-end;margin-bottom:24px;min-height:34px;}
#reading-toggle {border:1px solid var(--border);border-radius:2px;background:var(--bg);color:var(--text-muted);padding:8px 13px;font-family:inherit;font-size:14px;line-height:1.5;cursor:pointer;}
#reading-toggle:hover,#reading-toggle:focus-visible {color:var(--heading);border-color:var(--text-muted);}
body.reading-mode .site-header,body.reading-mode .left-sidebar,body.reading-mode .right-sidebar,body.reading-mode .site-footer {display:none;}
body.reading-mode .page-layout {display:block;max-width:calc(var(--reading-width) + 80px);margin:0 auto;}
body.reading-mode .main-content {padding-top:88px;}
body.reading-mode .reading-toolbar {position:fixed;top:20px;right:24px;z-index:250;margin:0;}
body.reading-mode .post-article {width:100%;}
@media(max-width:768px){
  .reading-toolbar {margin-bottom:20px;}
  body.reading-mode .reading-toolbar {top:12px;right:22px;}
  body.reading-mode .main-content {padding-top:78px;}
}
.article-comments {margin-top:72px;padding-top:36px;border-top:1px solid var(--border);}
.article-comments h2 {font-size:22px;line-height:1.5;font-weight:500;margin-bottom:12px;color:var(--heading);}
.comments-note {font-size:15px;line-height:1.8;color:var(--text-muted);margin-bottom:24px;}
.comments-fallback {font-size:14px;line-height:1.8;color:var(--text-muted);margin-top:20px;}
.giscus,.giscus-frame {width:100%;}
/* Giscus is a cross-origin iframe: monochrome treatment applies to its
   rendered contents without interfering with GitHub authentication. */
.giscus-frame {display:block;border:0;color-scheme:normal;filter:grayscale(1);}
.comments-fallback a {color:var(--text-muted);text-decoration:none;font-size:14px;}
.comments-fallback a:hover {color:var(--heading);text-decoration:underline;text-underline-offset:4px;}
@media(max-width:768px){.article-comments{margin-top:48px;padding-top:28px;}}
body.reading-mode .article-comments {display:none;}

/* Keep navigation steady; contain sidebar scrolling without edge bounce. */
html,body {overscroll-behavior-y:none;}
.site-header,.left-sidebar,.right-sidebar {transform:none;transition:none;animation:none;}
.left-sidebar,.right-sidebar {overscroll-behavior:none;scroll-behavior:auto;}
.top-nav {overscroll-behavior-x:none;scroll-behavior:auto;}
/* Fixed viewport anchoring avoids sticky's push-off at the layout bottom. */
@media(min-width:769px){
  .left-sidebar {
    position:fixed;
    top:var(--header-h);
    bottom:0;
    left:max(40px, calc((100% - 1160px) / 2 + 40px));
    width:var(--left-w);
    height:auto;
    overflow-y:auto;
    z-index:100;
  }
  .main-content {grid-column:2;}
}

/* Quiet, predictable keyboard and touch interactions. */
.sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}
.skip-link {position:fixed;top:12px;left:12px;z-index:1000;padding:12px 18px;background:var(--bg);color:var(--heading);border:1px solid var(--border);transform:translateY(-160%);}
.skip-link:focus {transform:translateY(0);}
a:focus-visible,button:focus-visible,input:focus-visible,[tabindex="0"]:focus-visible {outline:2px solid var(--text-muted);outline-offset:4px;}
.main-content:focus {outline:none;}
.theme-toggle,.search-btn,.back-to-top,.code-copy-btn {min-width:40px;min-height:40px;touch-action:manipulation;}
.code-copy-btn {display:inline-flex;align-items:center;justify-content:center;}
.code-header {min-height:44px;}
.markdown-fallback {white-space:pre-wrap;overflow-wrap:anywhere;}
.markdown-body {overflow-wrap:anywhere;}
.markdown-body table {display:block;max-width:100%;overflow-x:auto;}
.post-card:focus-within {border-color:var(--text-muted);}
@media (pointer:coarse) {.toc-item,.nav-item,.top-nav-item {min-height:44px;}}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {scroll-behavior:auto!important;animation:none!important;transition:none!important;}
}

/* Warm paper and ink: the paper theme reads like a printed book. */
html[data-theme="paper"] {
  --bg:#f3eedf;--surface:#f3eedf;--bg-soft:#eae3d2;--border:#d6cdb9;
  --text:#39352d;--heading:#26231e;--text-muted:#706756;--text-light:#786e5b;
  --primary:#574934;--primary-dark:#292217;--primary-soft:#e8dfcc;--code-bg:#eae3d3;
}
html[data-theme="paper"] body {
  background-color:var(--bg);
  background-image:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(99,77,42,.018) 3px,rgba(99,77,42,.018) 4px);
}
html[data-theme="paper"] .post-title,
html[data-theme="paper"] .post-card-title,
html[data-theme="paper"] .markdown-body,
html[data-theme="paper"] .post-card-preview,
html[data-theme="paper"] .abstract-content {
  font-family:'Iowan Old Style','Palatino Linotype','Songti SC','Noto Serif CJK SC',serif;
}
html[data-theme="paper"] .markdown-body {line-height:2;letter-spacing:.02em;}
html[data-theme="paper"] .markdown-body blockquote {color:var(--text-muted);border-left-color:#b4a487;}
html[data-theme="paper"] .code-block-wrapper,
html[data-theme="paper"] .code-body,
html[data-theme="paper"] .code-body pre,
html[data-theme="paper"] .code-body .hljs {background:var(--code-bg);}
html[data-theme="paper"] .code-header {background:#e4dcc9;}
html[data-theme="paper"] .line-numbers {background:transparent;color:var(--text-light);}
html[data-theme="paper"] .markdown-body code,
html[data-theme="paper"] .markdown-body pre {letter-spacing:normal;}

/* Tone the cross-origin light comment surface to warm paper and ink.
   This preserves iframe input, authentication, and drafts during theme changes. */
html[data-theme="paper"] .article-comments {isolation:isolate;}
html[data-theme="paper"] .giscus-frame {filter:grayscale(1) brightness(.9) sepia(.18) saturate(1.2);mix-blend-mode:normal;}

/* Keep text links recognizable without requiring hover. */
.main-content a:not(.btn-edit):not(.btn-primary),
.main-content a:not(.btn-edit):not(.btn-primary):hover {
  text-decoration-line:underline;
  text-decoration-thickness:1px;
  text-underline-offset:.22em;
  text-decoration-skip-ink:auto;
}
.markdown-body a:has(> img:only-child) {text-decoration:none;}

/* Shared page scale requested for all themes and routes. */
html {zoom:1;}
