@layer components{.post-entry{padding:var(--space-6) 0;border-bottom:1px solid var(--line)}.post-entry:first-child{padding-top:0}.post-entry-title{font-size:var(--text-lg);letter-spacing:-.03em;margin-bottom:var(--space-1);font-weight:600;line-height:1.25}.post-entry-title a{border-bottom:none}.post-entry-meta{color:var(--muted);margin-bottom:var(--space-2);font-size:.85em}.post-entry-desc{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.95em;line-height:1.55;display:-webkit-box;overflow:hidden}.post-cover{padding:0 var(--page-gutter);border-bottom:1px solid var(--line)}.post-cover-inner{max-width:80vw;padding:var(--space-16) 0 var(--space-12);margin:0 auto}.arrow-icon{vertical-align:middle;opacity:.7;transition:opacity var(--duration-fast) var(--ease-out);display:inline}a:hover .arrow-icon{opacity:1}.post-back-cover{color:var(--muted);margin-bottom:var(--space-8);transition:color var(--duration-fast) var(--ease-out);border-bottom:none;align-items:center;gap:4px;font-size:.9em;display:inline-flex}.post-back-cover:hover{color:var(--text)}.post-cover-title{letter-spacing:-.04em;color:var(--text);margin-bottom:var(--space-6);font-size:clamp(1.8rem,5vw,2.8rem);font-weight:700;line-height:1.15}.post-cover-meta{color:var(--muted);margin-bottom:var(--space-4);flex-wrap:wrap;gap:.3em;font-size:.9em;display:flex}.post-cover-meta time{font-family:var(--font-mono)}.post-cover-tags{gap:var(--space-2);color:var(--muted);flex-wrap:wrap;font-size:.88em;display:flex}.post-tag{color:var(--muted);background:var(--surface);border:1px solid var(--line);transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);border-bottom:none;border-radius:999px;padding:.15em .45em}.post-tag:hover{color:var(--text);border-color:color-mix(in srgb, var(--text) 24%, transparent)}.post{width:100%;max-width:calc(var(--post-measure) + 200px + var(--space-12) + var(--post-gutter) + var(--post-gutter));padding:var(--space-12) var(--post-gutter) 0;gap:var(--space-12);margin:0 auto;display:flex;position:relative}.post-article{width:100%;max-width:var(--post-measure);flex:1;min-width:0;margin-inline:auto}.post-footer{margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--line)}.post-nav{justify-content:space-between;gap:var(--space-4);display:flex}.post-nav a{color:var(--muted);word-break:break-word;max-width:48%;transition:color var(--duration-fast) var(--ease-out);border-bottom:none;font-size:.92em;line-height:1.4}.post-nav a:hover{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.25em;text-decoration-style:wavy;text-decoration-thickness:.08em}.post-nav span{color:var(--muted);word-break:break-word;max-width:48%;font-size:.92em;line-height:1.4}.post-toc-inline{margin-bottom:var(--space-8);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-family:var(--font-sans)}.post-toc-inline summary{align-items:center;gap:var(--space-3);min-height:48px;color:var(--text);cursor:pointer;font-size:.9em;font-weight:600;list-style:none;display:flex}.post-toc-inline summary::-webkit-details-marker{display:none}.post-toc-inline summary:after{content:"+";color:var(--muted);margin-left:auto;font-size:1.15em;font-weight:400}.post-toc-inline[open] summary:after{content:"−"}.post-toc-hint{color:var(--muted);font-size:.88em;font-weight:400}.post-toc-inline-content{max-height:min(50vh,24rem);padding:var(--space-3) 0 var(--space-4);border-top:1px solid var(--line);overscroll-behavior:contain;overflow-y:auto}.post-toc-inline .toc a{padding:.3em 0;line-height:1.4;display:block}.post-toc{flex-shrink:0;width:200px;display:none}@media (min-width:1200px){.post-toc-inline{display:none}.post-toc{display:block}}.toc-sticky{top:var(--space-12);max-height:calc(100vh - var(--space-24));padding-right:var(--space-2);overscroll-behavior:contain;scrollbar-gutter:stable;position:sticky;overflow-y:auto}.toc ul{padding:0;list-style:none}.toc li{margin-bottom:var(--space-1)}.toc a{color:var(--muted);transition:color var(--duration-fast) var(--ease-out);border-bottom:none;font-size:.85em}.toc a:hover,.toc a.active{color:var(--text)}.toc .toc-level-h3 a{padding-left:var(--space-4);font-size:.82em}.post-toc .toc-level-h2>ul{display:none}.post-toc .toc-level-h2.toc-section-active>ul,.post-toc .toc-level-h2:focus-within>ul,.post-toc .toc-level-h2:hover>ul{display:block}.related-posts{margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--line);font-family:var(--font-sans)}.related-posts h2{margin-bottom:var(--space-4);font-size:.9em;font-weight:600}.related-posts ul{padding:0;list-style:none}.related-posts li{justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--line);display:flex}.related-posts li:last-child{border-bottom:none}.related-posts a{border-bottom:none;line-height:1.4}.related-posts li>span{color:var(--muted);flex-shrink:0;font-size:.75em}.progress{transform-origin:0;background:var(--accent);z-index:100;pointer-events:none;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}.code-copy{top:var(--space-2);right:var(--space-2);background:var(--surface);border:1px solid var(--line);min-width:3.4rem;min-height:32px;color:var(--muted);font-family:var(--font-sans);letter-spacing:.02em;padding:0 var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), opacity var(--duration-fast) var(--ease-out);opacity:.72;z-index:1;justify-content:center;align-items:center;font-size:.7em;font-weight:500;display:flex;position:absolute}.prose pre:hover .code-copy,.prose pre:focus-within .code-copy,.code-copy:focus-visible{opacity:1}.code-copy:hover{color:var(--text);border-color:color-mix(in srgb, var(--text) 24%, transparent)}.code-copy:active,.code-copy[data-state=copied]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.back-to-top{bottom:var(--space-6);right:var(--space-6);width:44px;height:44px;color:var(--muted);cursor:pointer;opacity:0;transition:opacity var(--duration-normal) var(--ease-out), color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);z-index:50;pointer-events:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:fixed}.back-to-top svg{width:22px;height:22px;display:block}.back-to-top.visible{opacity:.55;pointer-events:auto}.back-to-top:hover{opacity:1;color:var(--text);transform:translateY(-3px)}.site-nav a,.theme-toggle,.post-back,.post-nav a,.footer-links a{align-items:center;min-width:44px;min-height:44px;display:inline-flex}.theme-toggle,.code-copy{justify-content:center}.search-label{margin-bottom:var(--space-2);color:var(--muted);letter-spacing:.01em;font-size:.82em;font-weight:500;display:block}@media (max-width:640px){.prose .code-copy{min-width:44px;min-height:44px}.prose pre code{padding-right:4.5rem}.hero{margin:var(--space-12) auto var(--space-8)}.post{padding-top:var(--space-8)}.post-nav{gap:var(--space-2);flex-direction:column}.post-nav a{max-width:100%}.footer-inner{gap:var(--space-1);text-align:center;flex-direction:column}.footer-links{justify-content:center}.footer-meta{text-align:center}.header-inner{gap:var(--space-3);padding-top:var(--space-3);padding-bottom:var(--space-3);flex-wrap:wrap}.site-nav{gap:var(--space-3);font-size:.92em}}.book-cover{padding:0 var(--page-gutter);border-bottom:1px solid var(--line)}.book-cover-inner{max-width:52rem;padding:var(--space-16) 0;margin:0 auto}.book-library-link{margin-bottom:var(--space-12);color:var(--muted);border-bottom:none;font-size:.88em;display:inline-block}.book-eyebrow,.books-index-header>p:first-child,.book-card>p:first-child{color:var(--accent);font-family:var(--font-mono);letter-spacing:.08em;font-size:.72em;font-weight:600}.book-cover h1{max-width:18ch;margin:var(--space-3) 0 var(--space-6);letter-spacing:-.055em;font-size:clamp(2.2rem,7vw,4.6rem);font-weight:700;line-height:1.04}.book-description{max-width:42rem;color:var(--muted);font-family:var(--font-serif);font-size:clamp(1rem,1.8vw,1.2rem);line-height:1.65}.book-meta{gap:var(--space-4);margin-top:var(--space-8);color:var(--muted);flex-wrap:wrap;font-size:.82em;display:flex}.book-meta span+span:before{content:"·";margin-right:var(--space-4)}.book-reader{width:100%;max-width:calc(var(--post-measure) + 220px + var(--space-12) + var(--post-gutter) + var(--post-gutter));padding:var(--space-12) var(--post-gutter) 0;gap:var(--space-12);margin:0 auto;display:flex}.book-content{width:100%;max-width:var(--post-measure);min-width:0;margin-inline:auto}.book-chapter{padding:var(--space-12) 0 var(--space-16);border-bottom:1px solid var(--line);scroll-margin-top:var(--space-6)}.book-chapter:first-of-type{padding-top:var(--space-8)}.book-chapter:last-of-type{border-bottom:none}.book-chapter-header{margin-bottom:var(--space-8)}.book-chapter-header>p:first-child{margin-bottom:var(--space-2);color:var(--accent);font-family:var(--font-mono);font-size:.74em;font-weight:600}.book-chapter-header h2{letter-spacing:-.04em;font-size:clamp(1.65rem,4vw,2.35rem);font-weight:700;line-height:1.15}.book-chapter-description{margin-top:var(--space-3);color:var(--muted);line-height:1.6}.book-chapter-nav{justify-content:space-between;gap:var(--space-6);margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--line);font-family:var(--font-sans);font-size:.85em;display:flex}.book-chapter-nav a{max-width:46%;color:var(--muted);border-bottom:none;line-height:1.45}.book-chapter-next{text-align:right}.book-toc-sidebar{flex-shrink:0;width:220px;display:none}.book-toc-sticky{top:var(--space-12);max-height:calc(100vh - var(--space-24));overscroll-behavior:contain;scrollbar-gutter:stable;position:sticky;overflow-y:auto}.book-toc-title{margin-bottom:var(--space-4);font-size:.82em;font-weight:600;line-height:1.4}.book-toc-list ol{padding:0;list-style:none}.book-toc-list a{gap:var(--space-3);color:var(--muted);border-bottom:none;grid-template-columns:2ch minmax(0,1fr);padding:.36em 0;font-size:.78em;line-height:1.4;display:grid}.book-toc-list a>span:first-child{color:color-mix(in srgb, var(--muted) 70%, transparent);font-family:var(--font-mono);font-size:.88em}.book-toc-list a:hover,.book-toc-list a.active{color:var(--text)}.book-toc-list a.active>span:first-child{color:var(--accent)}.book-toc-mobile{margin-bottom:var(--space-8);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-family:var(--font-sans)}.book-toc-mobile summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:48px;font-size:.86em;font-weight:600;list-style:none;display:flex}.book-toc-mobile summary::-webkit-details-marker{display:none}.book-toc-mobile summary>span:last-child{color:var(--muted);font-weight:400}.book-toc-mobile .book-toc-list{max-height:min(55vh,28rem);padding:var(--space-3) 0 var(--space-4);border-top:1px solid var(--line);overflow-y:auto}.book-resume{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8);padding:var(--space-4);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 24%, transparent);border-radius:var(--radius-md);font-family:var(--font-sans);display:flex}.book-resume[hidden]{display:none}.book-resume strong,.book-resume span{display:block}.book-resume strong{font-size:.84em}.book-resume span{color:var(--muted);margin-top:2px;font-size:.76em}.book-resume button{min-height:40px;padding:0 var(--space-3);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.book-reading-status{bottom:max(var(--space-4), env(safe-area-inset-bottom));z-index:40;color:var(--muted);background:color-mix(in srgb, var(--bg) 88%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-sm);pointer-events:none;border-radius:999px;padding:.4em .8em;font-size:.72em;line-height:1.2;position:fixed;left:50%;transform:translate(-50%)}@media (min-width:1200px){.book-toc-mobile{display:none}.book-toc-sidebar{display:block}}.books-index{max-width:var(--measure);margin:var(--space-16) auto;padding:0 var(--page-gutter)}.books-index-header{margin-bottom:var(--space-12)}.books-index-header h1{margin:var(--space-2) 0;font-size:var(--text-xl);letter-spacing:-.04em}.books-index-header>p:last-child{color:var(--muted)}.books-grid{border-top:1px solid var(--line)}.book-card{padding:var(--space-8) 0;border-bottom:1px solid var(--line)}.book-card h2{margin:var(--space-2) 0 var(--space-3);font-size:var(--text-lg);letter-spacing:-.03em}.book-card h2 a{border-bottom:none}.book-card>p:nth-child(3){max-width:42rem;color:var(--muted);line-height:1.55}.book-card>div{gap:var(--space-4);margin-top:var(--space-4);color:var(--muted);font-size:.78em;display:flex}@media (max-width:640px){.book-cover-inner{padding:var(--space-12) 0}.book-library-link{margin-bottom:var(--space-8)}.book-reader{padding-top:var(--space-8)}.book-chapter{padding:var(--space-8) 0 var(--space-12)}.book-chapter-nav{gap:var(--space-3);flex-direction:column}.book-chapter-nav a{max-width:100%}.book-chapter-next{text-align:left}}.tag-cloud{gap:var(--space-3);margin-bottom:var(--space-12);padding-bottom:var(--space-8);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.tag-cloud-link{color:var(--muted);transition:color var(--duration-fast) var(--ease-out);white-space:nowrap;border-bottom:none}.tag-cloud-link:hover{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.25em;text-decoration-style:wavy;text-decoration-thickness:.08em}.tag-cloud-lg{font-size:1.1em;font-weight:600}.tag-cloud-md{font-size:.95em}.tag-cloud-sm{font-size:.82em}.tag-page{max-width:var(--measure);margin:var(--space-16) auto;padding:0 var(--page-gutter)}.tag-header{margin-bottom:var(--space-12)}.tag-back{color:var(--muted);margin-bottom:var(--space-6);border-bottom:none;font-size:.9em;display:inline-block}.tag-back:hover{color:var(--text)}.tag-header h1{font-size:var(--text-xl);letter-spacing:-.04em;font-weight:700}.tag-count{color:var(--muted);margin-top:var(--space-2);font-size:.92em}.tag-post-list{padding:0;list-style:none}.tag-post-list li{gap:var(--space-6);padding:var(--space-2) 0;font-size:.95em;display:flex}.tag-post-list time{color:var(--muted);font-family:var(--font-mono);white-space:nowrap;min-width:85px;font-size:.85em}.search-page{max-width:var(--measure);margin:var(--space-16) auto;padding:0 var(--page-gutter)}.search-hero h1{font-size:var(--text-xl);margin-bottom:var(--space-6);font-weight:700}.search-input{width:100%;padding:var(--space-4) var(--space-6);font-size:1.1em;font-family:var(--font-sans);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);transition:border-color var(--duration-fast) var(--ease-out);outline:none}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--muted)}.search-results{margin-top:var(--space-12)}.search-empty,.search-count{color:var(--muted);font-size:.92em}.search-count{margin-bottom:var(--space-8)}.search-result{padding:var(--space-6) 0;border-bottom:1px solid var(--line)}.search-result-list{border-top:1px solid var(--line)}.search-result.is-active{margin-inline:calc(var(--space-3) * -1);padding-inline:var(--space-3);background:var(--accent-soft);border-radius:var(--radius-sm)}.search-result mark{color:inherit;background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-soft);border-radius:2px}.search-result-title{font-size:var(--text-lg);letter-spacing:-.03em;margin-bottom:var(--space-1);font-weight:600}.search-result-title a{border-bottom:none}.search-result-meta{color:var(--muted);margin-bottom:var(--space-2);font-size:.85em}.search-result-desc{color:var(--muted);margin:0;font-size:.95em;line-height:1.55}.not-found{width:min(100% - (var(--page-gutter) * 2), 42rem);margin:var(--space-24) auto}.not-found-code{margin-bottom:var(--space-2);color:var(--accent);font-family:var(--font-mono);font-size:.85em;font-weight:600}.not-found h1{margin-bottom:var(--space-4);font-size:var(--text-xl);letter-spacing:-.04em}.not-found-desc{max-width:34rem;color:var(--muted);line-height:1.6}.not-found-search{margin:var(--space-12) 0}.not-found-search>label{margin-bottom:var(--space-2);color:var(--muted);font-size:.82em;font-weight:500;display:block}.not-found-search>div{gap:var(--space-2);display:flex}.not-found-search input{min-width:0;padding:var(--space-3) var(--space-4);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);flex:1}.not-found-search button{padding:var(--space-3) var(--space-4);color:#fff;background:var(--accent);border-radius:var(--radius-md);cursor:pointer;border:none}.not-found-recent{margin-bottom:var(--space-8)}.not-found-recent h2{margin-bottom:var(--space-3);font-size:.9em}.not-found-recent ul{padding:0;list-style:none}.not-found-recent li{padding:var(--space-2) 0}.not-found-home{color:var(--muted)}@media (max-width:640px){.prose pre{-webkit-overflow-scrolling:touch}.related-posts li{gap:var(--space-1);flex-direction:column}}}