@import"https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&family=Crimson+Pro:wght@400;500;600&family=Inter:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--paper-bg: #F3F2EC;--paper-bg-alt: #FAFAF8;--paper-text: #1A1A1A;--paper-text-secondary: #2D2D2D;--paper-muted: #666666;--paper-accent: #4A4A4A;--paper-border: rgba(0, 0, 0, .08);--paper-code-bg: rgba(0, 0, 0, .04);--font-serif-heading: "Merriweather", "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", Georgia, serif;--font-serif-reading: "Crimson Pro", "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", Georgia, serif;--font-sans-ui: "Inter", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", "Monaco", monospace;--content-max-width: 720px;--toc-width: 220px;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem}@media (prefers-color-scheme: dark){:root{--paper-bg: #1A1A1A;--paper-bg-alt: #2A2A2A;--paper-text: #F3F2EC;--paper-text-secondary: #E5E5E0;--paper-muted: #999999;--paper-accent: #CCCCCC;--paper-border: rgba(255, 255, 255, .1);--paper-code-bg: rgba(255, 255, 255, .05)}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;font-size:16px}body{margin:0;padding:0;background-color:var(--paper-bg);color:var(--paper-text);font-family:var(--font-serif-reading);font-size:1.0625rem;line-height:1.75;letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif-heading);font-weight:700;letter-spacing:-.02em;color:var(--paper-text);margin-top:1.5em;margin-bottom:.5em;scroll-margin-top:80px}h1{font-size:2rem;line-height:1.3}h2{font-size:1.5rem;line-height:1.4}h3{font-size:1.25rem;line-height:1.4}h4{font-size:1.125rem;line-height:1.4}p{margin-bottom:1.2em}a{color:var(--paper-text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;transition:color .2s ease}a:hover{color:var(--paper-muted)}ul,ol{margin-bottom:1.2em;padding-left:1.5em}li{margin-bottom:.5em}blockquote{margin:var(--spacing-md) 0;padding:var(--spacing-sm) var(--spacing-md);border-left:3px solid var(--paper-accent);background-color:var(--paper-bg-alt);font-style:italic;color:var(--paper-text-secondary)}blockquote p:last-child{margin-bottom:0}code{font-family:var(--font-mono);font-size:.875em;background-color:var(--paper-code-bg);padding:.2em .4em;border-radius:4px}pre{font-family:var(--font-mono);font-size:.875rem;line-height:1.6;background-color:var(--paper-code-bg);padding:1em;border-radius:4px;overflow-x:auto;margin:var(--spacing-md) 0}pre code{background-color:transparent;padding:0;font-size:inherit}img{max-width:100%;height:auto;display:block}img[src*=plantuml]{margin:var(--spacing-md) auto;border-radius:4px;background-color:#fff}@media (prefers-color-scheme: dark){img[src*=plantuml]{filter:invert(1) hue-rotate(180deg)}}table{width:100%;border-collapse:collapse;margin:var(--spacing-md) 0}th,td{padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--paper-border);text-align:left}th{font-family:var(--font-sans-ui);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--paper-muted)}hr{border:none;border-top:1px solid var(--paper-border);margin:var(--spacing-lg) 0}.container{max-width:calc(var(--content-max-width) + var(--toc-width) + var(--spacing-xl));margin:0 auto;padding:0 var(--spacing-md)}.article-layout{display:flex;gap:var(--spacing-xl);align-items:flex-start}.article-content{flex:1;max-width:var(--content-max-width);min-width:0}.toc-sidebar{position:sticky;top:var(--spacing-lg);width:var(--toc-width);flex-shrink:0;padding-right:var(--spacing-md);border-right:1px solid var(--paper-border)}.toc-title{font-family:var(--font-serif-heading);font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--spacing-sm);color:var(--paper-text)}.toc-items{list-style:none;padding:0;margin:0}.toc-items li{margin-bottom:.625rem;line-height:1.4}.toc-items a{font-family:var(--font-sans-ui);font-size:.8125rem;color:var(--paper-muted);text-decoration:none;display:block;transition:color .2s ease}.toc-items a:hover{color:var(--paper-text)}.toc-items .toc-h2{padding-left:0}.toc-items .toc-h3{padding-left:1em}.site-header{padding:var(--spacing-md) 0;border-bottom:1px solid var(--paper-border);margin-bottom:var(--spacing-lg)}.site-title{font-family:var(--font-serif-heading);font-size:1.25rem;font-weight:700;margin:0}.site-title a{text-decoration:none}.site-nav{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-xs)}.site-nav a{font-family:var(--font-sans-ui);font-size:.875rem;color:var(--paper-muted);text-decoration:none}.site-nav a:hover{color:var(--paper-text)}.article-meta{font-family:var(--font-sans-ui);font-size:.875rem;color:var(--paper-muted);margin-bottom:var(--spacing-md)}.article-date{display:inline-block}.article-tags{display:inline-flex;gap:var(--spacing-xs);margin-left:var(--spacing-sm)}.tag{background-color:var(--paper-code-bg);padding:.125em .5em;border-radius:4px;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.post-list{list-style:none;padding:0;margin:0}.post-item{margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--paper-border)}.post-item:last-child{border-bottom:none}.post-item h2{margin-top:0;margin-bottom:var(--spacing-xs)}.post-item h2 a{text-decoration:none}.post-item h2 a:hover{text-decoration:underline}.post-excerpt{color:var(--paper-text-secondary);margin-bottom:var(--spacing-xs)}.site-footer{margin-top:var(--spacing-xl);padding:var(--spacing-md) 0;border-top:1px solid var(--paper-border);font-family:var(--font-sans-ui);font-size:.875rem;color:var(--paper-muted);text-align:center}@media (max-width: 768px){.article-layout{flex-direction:column}.toc-sidebar{position:static;width:100%;border-right:none;border-bottom:1px solid var(--paper-border);padding-right:0;padding-bottom:var(--spacing-md);margin-bottom:var(--spacing-md)}h1{font-size:1.75rem}h2{font-size:1.375rem}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
