:root{--paper: #faf8f3;--ink: #22201c;--text: #3a362f;--muted: #6b665c;--label: #8a8578;--faint: #a39d8e;--line: #ddd8ca;--accent: #9a3b2e;--frame-bg: #f3f0e7;--code-bg: #22201c;--code-text: #e8e2d4;--font-serif: "Noto Serif JP", "Hiragino Mincho ProN", serif;--font-body: "Noto Sans JP", "Hiragino Kaku Gothic ProN", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Menlo", monospace}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}body{margin:0;min-height:100dvh}a{color:var(--ink)}a:hover{color:var(--accent)}.container{max-width:1020px;margin:0 auto;padding:0 40px;min-height:100dvh;display:flex;flex-direction:column}.container>main{flex:1}.site-header--top{padding:44px 0 22px;text-align:center;border-bottom:3px double var(--ink)}.kicker{margin:0 0 8px;font-family:var(--font-mono);font-size:11px;letter-spacing:.3em;color:var(--label)}.site-header--top .brand{text-decoration:none}.site-header--top .brand h1{margin:0;font-family:var(--font-serif);font-size:42px;font-weight:700;letter-spacing:.08em;color:var(--ink)}.site-header--top .site-nav{justify-content:center;gap:36px;margin-top:22px}.site-header--compact{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:26px 0;border-bottom:1px solid var(--line)}.brand-small{font-family:var(--font-serif);font-size:21px;font-weight:700;letter-spacing:.08em;color:var(--ink);text-decoration:none}.site-header--compact .site-nav{gap:30px}.site-nav{display:flex;font-size:13.5px;font-weight:500;letter-spacing:.08em}.site-nav a{text-decoration:none;color:var(--muted);padding-bottom:4px;border-bottom:2px solid transparent}.site-nav a:hover{color:var(--ink)}.site-nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}.site-footer{border-top:1px solid var(--line);padding:20px 0 40px;display:flex;justify-content:space-between;gap:16px;font-family:var(--font-mono);font-size:11px;color:var(--faint)}.site-footer--double{border-top:3px double var(--ink)}.site-footer a{color:var(--faint);text-decoration:none}.site-footer a:hover{color:var(--accent)}.frame{display:block;border:1px solid var(--line);padding:6px;background:var(--frame-bg)}.frame img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover}.frame-placeholder{width:100%;aspect-ratio:16 / 9;display:grid;place-items:center}.frame-placeholder svg{width:64px;height:64px;color:var(--line)}.home-main{padding:48px 0 56px;display:grid;grid-template-columns:1.5fr 1fr}.post-feed{padding-right:48px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:40px}.home-aside{padding-left:48px;display:flex;flex-direction:column;gap:40px}.post-card{display:flex;flex-direction:column;gap:12px}.post-card+.post-card{border-top:1px solid var(--line);padding-top:36px}.post-meta{display:flex;gap:14px;align-items:baseline;font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;color:var(--accent);text-transform:uppercase}.post-meta .date{color:var(--faint)}.post-card h2{margin:0;font-family:var(--font-serif);font-size:27px;font-weight:600;line-height:1.6}.post-card h2 a{text-decoration:none;color:var(--ink)}.post-card h2 a:hover{color:var(--accent)}.post-excerpt{margin:0;font-size:14.5px;line-height:2.1;color:var(--muted)}.read-more{font-size:13px;font-weight:500;color:var(--accent);text-decoration:none;letter-spacing:.05em}.aside-block{display:flex;flex-direction:column;gap:14px}.aside-title{margin:0;font-family:var(--font-mono);font-size:11px;letter-spacing:.25em;color:var(--label);border-bottom:1px solid var(--line);padding-bottom:10px}.aside-list{display:flex;flex-direction:column;gap:11px;font-size:14px}.aside-list a{text-decoration:none;color:var(--ink);display:flex;justify-content:space-between;gap:12px}.aside-list a:hover{color:var(--accent)}.aside-count{font-family:var(--font-mono);font-size:11px;font-weight:400;color:var(--faint)}.archive-list{font-size:13.5px}.archive-list a{color:var(--muted)}.author-row{display:flex;gap:16px;align-items:center}.avatar{width:56px;height:56px;flex:none;border-radius:50%;border:1px solid var(--line);background:var(--frame-bg);display:grid;place-items:center}.avatar svg{width:58%;height:58%;color:var(--accent)}.author-name{font-family:var(--font-serif);font-size:15px;font-weight:600}a.author-name{text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}a.author-name:hover{text-decoration-color:var(--accent)}.author-bio{margin:0;font-size:13px;line-height:2;color:var(--muted)}.hero{margin-top:36px}.article{max-width:720px;margin:0 auto;padding:44px 0 0}.article-meta{display:flex;gap:16px;align-items:baseline;justify-content:center;flex-wrap:wrap;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}.article-meta .sub{color:var(--faint)}.article-title{margin:18px 0 0;font-family:var(--font-serif);font-size:34px;font-weight:600;line-height:1.7;text-align:center}.title-rule{width:56px;height:3px;background:var(--accent);margin:28px auto 46px}.toc{margin:0 0 44px;border:1px solid var(--line);background:var(--frame-bg)}.toc-summary{padding:14px 18px;cursor:pointer;list-style:none;font-family:var(--font-serif);font-size:15px;font-weight:600;display:flex;align-items:baseline;gap:12px}.toc-summary::-webkit-details-marker{display:none}.toc-summary:before{content:"+";font-family:var(--font-mono);font-size:13px;color:var(--accent)}.toc-details[open] .toc-summary:before{content:"−"}.toc-kicker{font-family:var(--font-mono);font-size:11px;font-weight:400;letter-spacing:.22em;color:var(--label)}.toc-list{list-style:none;margin:0;padding:4px 18px 16px;font-size:14px;line-height:2}.toc-list a{color:var(--text);text-decoration:none}.toc-list a:hover{color:var(--accent)}.toc-sub{position:relative;padding-left:22px}.toc-sub:before{content:"";position:absolute;left:0;top:1em;width:10px;height:2px;background:var(--accent)}.prose{font-size:15.5px;line-height:2.2;color:var(--text)}.prose>:first-child{margin-top:0}.prose p{margin:0 0 28px}.prose strong{color:var(--ink)}.prose a{color:var(--accent)}.prose h2,.prose h3,.prose h4{font-family:var(--font-serif);font-weight:600;line-height:1.6;color:var(--ink)}.prose h3,.prose h4{display:flex;align-items:flex-start;gap:12px}.prose h3:before,.prose h4:before{content:"";height:2px;background:var(--accent);flex:none;margin-top:.75em}.prose h2{margin:48px 0 20px;font-size:23px;border-bottom:1px solid var(--line);padding-bottom:12px}.prose h2,.prose h3{scroll-margin-top:24px}.prose h3{margin:40px 0 16px;font-size:18.5px}.prose h3:before{width:14px}.prose h4{margin:32px 0 14px;font-size:16px}.prose h4:before{width:7px}.prose h5{margin:28px 0 12px;font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:.22em;color:var(--accent);text-transform:uppercase}.prose ul,.prose ol{margin:0 0 28px;padding-left:1.6em}.prose li{margin:.2em 0}.prose blockquote{margin:0 0 28px;padding:4px 0 4px 26px;border-left:3px solid var(--accent);font-family:var(--font-serif);font-size:16px;line-height:2.1;color:var(--muted)}.prose blockquote p{margin:0}.prose pre{margin:0 0 28px;background:var(--code-bg)!important;color:var(--code-text);border-radius:8px;padding:22px 26px;font-size:13px;line-height:1.9;overflow-x:auto}.prose .code-block{margin:0 0 28px;border-radius:8px;overflow:hidden;background:var(--code-bg)}.prose .code-block pre{margin:0;border-radius:0;padding-top:18px}.code-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px 9px 26px;border-bottom:1px solid rgba(232,226,212,.14);font-family:var(--font-mono)}.code-lang{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:#e8e2d48c}.code-copy{appearance:none;background:none;border:1px solid rgba(232,226,212,.25);border-radius:4px;padding:4px 10px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;color:#e8e2d4b3;cursor:pointer}.code-copy:hover{color:var(--code-text);border-color:#e8e2d480}.code-copy.is-copied{color:var(--code-text);border-color:transparent}.prose code{font-family:var(--font-mono)}.prose :not(pre)>code{font-size:.85em;background:var(--frame-bg);border:1px solid var(--line);border-radius:4px;padding:.1em .35em;color:var(--ink)}.prose img{display:block;max-width:100%;border:1px solid var(--line);padding:6px;background:var(--frame-bg)}.prose hr{border:none;border-top:1px solid var(--line);margin:48px 0}.prose table{border-collapse:collapse;width:100%;margin:0 0 28px;font-size:14px;line-height:1.9}.prose th,.prose td{border:1px solid var(--line);padding:.5rem .85rem;text-align:left}.prose th{background:var(--frame-bg);font-weight:600}.author-box{max-width:720px;margin:44px auto 0;border-top:1px solid var(--line);padding:26px 0;display:flex;align-items:center;gap:20px}.author-box .avatar{width:64px;height:64px}.author-box .author-col{display:flex;flex-direction:column;gap:6px}.author-box .author-bio{line-height:1.9}.post-nav{border-top:3px double var(--ink);display:grid;grid-template-columns:1fr 1fr}.post-nav>:first-child{border-right:1px solid var(--line);padding:26px 24px 26px 0}.post-nav a{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:8px}.post-nav a.next{padding:26px 0 26px 24px;text-align:right}.post-nav .dir{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.2em;color:var(--faint)}.post-nav .t{font-family:var(--font-serif);font-size:15px;font-weight:600;line-height:1.7}.post-nav a:hover .t{color:var(--accent)}.page-main{max-width:720px;margin:0 auto;padding:48px 0 56px}.page-head{text-align:center;margin-bottom:8px}.page-title{margin:0;font-family:var(--font-serif);font-size:28px;font-weight:600;letter-spacing:.06em}.page-lede{margin:14px 0 0;font-size:13.5px;color:var(--muted)}.page-head .title-rule{margin:24px auto 0}.group{margin-top:44px}.group-title{margin:0 0 4px;font-family:var(--font-serif);font-size:20px;font-weight:600;border-bottom:1px solid var(--line);padding-bottom:10px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.entry-list{list-style:none;margin:0;padding:0}.entry-list li{border-bottom:1px solid var(--line)}.entry-list li:last-child{border-bottom:none}.entry-list a{display:flex;gap:18px;align-items:baseline;padding:14px 2px;text-decoration:none;color:var(--ink)}.entry-list time{font-family:var(--font-mono);font-size:11.5px;color:var(--faint);flex:none}.entry-list .t{font-family:var(--font-serif);font-size:15.5px;font-weight:600;line-height:1.7}.entry-list a:hover .t{color:var(--accent)}.about{text-align:center}.about .avatar{width:88px;height:88px;margin:8px auto 24px}.about-kicker{margin:10px 0 0;font-family:var(--font-mono);font-size:11px;letter-spacing:.3em;color:var(--label)}.about-body{max-width:480px;margin:36px auto 0;text-align:left;font-size:14.5px;line-height:2.2;color:var(--text)}.about-body p{margin:0 0 24px}.about-body h2{margin:40px 0 16px;font-family:var(--font-serif);font-size:17px;font-weight:600;display:flex;align-items:flex-start;gap:12px}.about-body h2:before{content:"";width:14px;height:2px;background:var(--accent);flex:none;margin-top:.8em}.about-body ul{margin:0 0 24px;padding-left:1.2em}.about-body li{margin-bottom:8px}.about-body li strong{color:var(--ink)}.to-top{position:fixed;right:24px;bottom:24px;padding:8px 12px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;color:var(--label);background:var(--paper);border:1px solid var(--line);border-radius:4px;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.to-top.is-visible{opacity:1;visibility:visible}.to-top:hover{color:var(--accent);border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}html{scroll-behavior:auto}}@media(max-width:820px){.container{padding:0 20px}.site-header--top{padding-top:32px}.site-header--top .brand h1{font-size:32px}.site-header--top .site-nav{gap:20px;flex-wrap:wrap}.home-main{grid-template-columns:1fr;padding-top:40px}.post-feed{padding-right:0;border-right:none}.home-aside{padding-left:0;margin-top:48px;border-top:3px double var(--ink);padding-top:40px}.post-card h2{font-size:22px}.article-title{font-size:26px}.post-nav{grid-template-columns:1fr}.post-nav>:first-child{border-right:none;border-bottom:1px solid var(--line);padding-right:0}.post-nav a.next{padding-left:0}.to-top{right:14px;bottom:14px}}
