:root{--color-primary:#2d9e5e;--color-primary-light:#e8f5ee;--color-accent:#3b82f6;--color-accent-light:#eff6ff;--color-text:#1a1a2e;--color-text-secondary:#64748b;--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-border-light:#f1f5f9;--max-width:1180px;--sidebar-width:300px;--radius:8px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;--transition:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scrollbar-gutter:stable;font-size:16px}body{color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;line-height:1.85;display:flex}a{color:var(--color-accent);transition:color var(--transition);text-decoration:none}a[href^=http]:after{content:"↗";vertical-align:super;margin-left:.15em;font-size:.75em}.site-header a[href^=http]:after,.site-footer a[href^=http]:after,.post-card a[href^=http]:after,.sidebar a[href^=http]:after,.pagination a[href^=http]:after,a[href^=http]:has(img):after{content:none}a:hover{color:#2563eb}img{border-radius:4px;max-width:100%;height:auto}.site-header{background:var(--color-surface);box-shadow:var(--shadow-sm);z-index:100;border-bottom:none;position:sticky;top:0}.site-header .inner{max-width:var(--max-width);justify-content:space-between;align-items:center;margin:0 auto;padding:.8rem 1.5rem;display:flex}.site-title{letter-spacing:-.02em;font-size:1.4rem;font-weight:800}.site-title a{color:var(--color-primary)}.site-title a:hover{opacity:.85;text-decoration:none}.site-nav{gap:.25rem;display:flex}.site-nav a{color:var(--color-text-secondary);transition:all var(--transition);border-radius:6px;padding:.4rem .75rem;font-size:.85rem;font-weight:500}.site-nav a:hover{color:var(--color-primary);background:var(--color-primary-light);text-decoration:none}.main-container{width:100%;max-width:var(--max-width);gap:2.5rem;margin:2rem auto;padding:0 1.5rem;display:flex}.main-content{flex:1;min-width:0}.sidebar{width:var(--sidebar-width);flex-shrink:0}.site-footer{background:var(--color-text);color:#94a3b8;text-align:center;letter-spacing:.02em;margin-top:auto;padding:2rem 0;font-size:.8rem}.site-footer a{color:#fff}.post-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);transition:all var(--transition);margin-bottom:1rem;overflow:hidden}.post-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.post-card a{color:var(--color-text);padding:1.25rem 1.5rem;display:block}.post-card a:hover{text-decoration:none}.post-card .post-title{margin-bottom:.4rem;font-size:1.05rem;font-weight:600;line-height:1.55}.post-card .post-meta{color:var(--color-text-secondary);font-size:.78rem}.post-card .post-categories{margin-top:.5rem}.category-tag{background:var(--color-primary);color:#fff;letter-spacing:.01em;border-radius:4px;margin-right:.3rem;padding:.15rem .55rem;font-size:.7rem;font-weight:600;display:inline-block}a.category-tag{color:#fff;transition:opacity var(--transition)}a.category-tag:hover{opacity:.85;text-decoration:none}.static-container{width:100%;max-width:760px;margin:2rem auto;padding:0 1.5rem}.static-page{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);padding:2.5rem}.static-page h1{letter-spacing:-.01em;margin-bottom:1.5rem;font-size:1.5rem;font-weight:800;line-height:1.4}.static-page h2{margin-top:2rem;margin-bottom:.6rem;font-size:1.1rem;font-weight:700}.static-page h2:first-of-type{margin-top:1rem}.static-page p{margin-bottom:1rem}.static-page ul,.static-page ol{margin:.5rem 0 1.2rem 1.5rem}.static-page li{margin-bottom:.35rem}.static-page li::marker{color:var(--color-primary)}.article{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);padding:2.5rem}.article h1{letter-spacing:-.01em;margin-bottom:.75rem;font-size:1.65rem;font-weight:800;line-height:1.4}.article-meta{color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:2rem;padding-bottom:1.25rem;font-size:.82rem;display:flex}.article-body h2{border-left:4px solid var(--color-primary);background:var(--color-primary-light);border-radius:0 var(--radius) var(--radius) 0;margin:2.5rem 0 1rem;padding:.6rem 0 .6rem 1rem;font-size:1.3rem;font-weight:700}.article-body h3{border-bottom:2px solid var(--color-border);margin:2rem 0 .75rem;padding-bottom:.4rem;font-size:1.1rem;font-weight:700}.article-body h4{border-left:3px solid var(--color-primary);color:var(--color-text);margin:1.5rem 0 .5rem;padding-left:.6rem;font-size:1rem;font-weight:700}.article-body p{margin-bottom:1.1rem}.article-body ul,.article-body ol,.main-content>ul,.main-content>ol{margin:.5rem 0 1.2rem 1.5rem}.article-body li{margin-bottom:.35rem}.article-body li::marker{color:var(--color-primary)}.article-body pre{border-radius:var(--radius);background:#1e293b;margin:1.2rem 0;padding:1.2rem 1.4rem;font-size:.88rem;line-height:1.7;overflow-x:auto}.article-body pre.mermaid{text-align:center;background:0 0;border-radius:0;margin:1.5rem 0;padding:.5rem 0;line-height:normal;overflow-x:auto}.article-body pre.mermaid:not([data-processed=true]){visibility:hidden}.article-body code{font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.88em}.article-body :not(pre)>code{color:#e11d48;background:#f1f5f9;border-radius:4px;padding:.15rem .45rem;font-size:.85em}.article-body blockquote{background:var(--color-surface);border:2px solid var(--color-border);color:var(--color-text);border-radius:1rem;margin:1.2rem 1rem 1.2rem 0;padding:.8rem 1.2rem;position:relative}.article-body blockquote:after{content:"";background:var(--color-surface);border-right:2px solid var(--color-border);border-top:2px solid var(--color-border);width:12px;height:12px;position:absolute;top:50%;right:-7px;transform:translateY(-50%)rotate(45deg)}.article-body table{border-collapse:collapse;width:100%;margin:1.2rem 0;font-size:.92rem}.article-body th,.article-body td{border:1px solid var(--color-border);text-align:left;padding:.6rem .85rem}.article-body th{background:var(--color-bg);color:var(--color-text-secondary);font-weight:600}.article-body tr:hover td{background:#fafbfc}.box{border-radius:var(--radius);margin:1.5rem 0;padding:1.2rem 1.5rem;position:relative}.box:has(.box-title){border-top-left-radius:0;margin-top:2.5rem}.box.blue{background:var(--color-accent-light);border:1px solid #bfdbfe}.box.default{background:var(--color-bg);border:1px solid var(--color-border)}.box-title{border-radius:var(--radius) var(--radius) 0 0;letter-spacing:.02em;padding:.35rem 1rem;font-size:.78rem;font-weight:600;display:inline-block;position:absolute;top:0;left:0;transform:translateY(-100%)}.box.blue .box-title{background:var(--color-accent);color:#fff}.box.default .box-title{color:#fff;background:#64748b}.box.red{background:#fef2f2;border:1px solid #fecaca}.box.red .box-title{color:#fff;background:#ef4444}.box.green{background:#f0fdf4;border:1px solid #bbf7d0}.box.green .box-title{color:#fff;background:#22c55e}.kanren-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);transition:all var(--transition);margin:1rem 0 1.5rem}.kanren-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.kanren-card a{color:var(--color-text);padding:1rem 1.25rem;display:block}.kanren-card a:hover{text-decoration:none}.kanren-card a:after{content:none!important}.kanren-label{background:var(--color-primary);color:#fff;border-radius:3px;margin-bottom:.4rem;padding:.15rem .5rem;font-size:.7rem;font-weight:600;display:inline-block}.kanren-title{margin-bottom:.3rem;font-size:.95rem;font-weight:600;line-height:1.55;display:block}.kanren-date{color:var(--color-text-secondary);font-size:.75rem;display:block}aside.note{border-radius:0 var(--radius) var(--radius) 0;color:var(--color-text-secondary);background:#fefce8;border:1px solid #fde68a;border-left:4px solid #f59e0b;margin:1.5rem 0;padding:.85rem 1.2rem .85rem 2.8rem;font-size:.9rem;position:relative}aside.note:before{content:"ℹ";color:#f59e0b;font-size:1rem;font-style:normal;font-weight:700;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}aside.warning{border-radius:0 var(--radius) var(--radius) 0;color:var(--color-text-secondary);background:#fef2f2;border:1px solid #fecaca;border-left:4px solid #ef4444;margin:1.5rem 0;padding:.85rem 1.2rem .85rem 2.8rem;font-size:.9rem;position:relative}aside.warning:before{content:"⚠";color:#ef4444;font-size:1rem;font-style:normal;font-weight:700;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}strong.emphasis{background:linear-gradient(#0000 65%,#fde68a 65%);padding:0 .1rem;font-weight:700}strong.bold{font-weight:700}a.btn-yellow{color:#fff;text-align:center;background:#ffc107;border-radius:6px;width:fit-content;margin:1rem auto;padding:.7rem 2rem;font-weight:700;text-decoration:none;transition:background .2s;display:block;box-shadow:0 2px 4px #00000026}a.btn-yellow:hover{color:#fff;background:#e0a800}strong.positive-emphasis{background:linear-gradient(#0000 65%,#bbf7d0 65%);padding:0 .1rem;font-weight:700}.conversation{flex-direction:column;gap:.6rem;margin:1.5rem 0;display:flex}.speech{max-width:80%}.speech.is-reply{align-self:flex-end}.speech-name{color:var(--color-text-secondary);margin-bottom:.15rem;padding-left:.85rem;font-size:.73rem;font-weight:600;display:block}.speech.is-reply .speech-name{text-align:right;padding-left:0;padding-right:.85rem}.speech>p{background:var(--color-surface);border:1px solid var(--color-border);border-radius:1.1rem;margin:0;padding:.6rem 1rem;font-size:.93rem;line-height:1.6}.speech.is-reply>p{background:var(--color-primary-light);border-color:#0000}.kanren-link{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);transition:all var(--transition);margin:.5rem 0;padding:.85rem 1.2rem;font-weight:500;display:block}.kanren-link:hover{box-shadow:var(--shadow-md);border-color:var(--color-accent);text-decoration:none;transform:translateY(-1px)}.article-body a[href^=\#fn-]{vertical-align:super;color:var(--color-accent);font-size:.72em;font-weight:600;line-height:0}.article-body .footnotes h2{display:none}.article-body .footnotes{border-top:1px solid var(--color-border);color:var(--color-text-secondary);margin-top:2rem;padding-top:1rem;font-size:.85rem}.article-body .footnotes ol{margin-left:1.2rem}.article-body .footnotes li{margin-bottom:.4rem}.content-tags{flex-wrap:wrap;gap:.4rem;margin:.8rem 0 1.2rem;display:flex}.content-tag{background:var(--color-primary-light);color:var(--color-primary);letter-spacing:.02em;border:1px solid #a7d9be;border-radius:20px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:inline-block}.article-body p.img-caption{color:#fff;border-radius:var(--radius);letter-spacing:.02em;background:#c0392b;margin:.6rem 0 .2rem;padding:.3rem .9rem;font-size:.78rem;font-weight:600;display:inline-block}.article-body p.code_title{color:#94a3b8;border-radius:var(--radius) var(--radius) 0 0;letter-spacing:.02em;background:#334155;margin-bottom:0;padding:.35rem 1rem;font-size:.78rem;font-weight:600;display:inline-block}p.code_title+pre,p.code_title+p:empty+pre{border-top-left-radius:0;margin-top:0}p.code_title+p:empty{display:none}figure{text-align:center;margin:1.5rem 0}figure figcaption{color:var(--color-text-secondary);margin-top:.5rem;font-size:.82rem}.sidebar-section{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);margin-bottom:1.25rem;padding:1.5rem}.sidebar-section h3{border-bottom:2px solid var(--color-primary);color:var(--color-text);letter-spacing:.04em;margin-bottom:.85rem;padding-bottom:.5rem;font-size:.88rem;font-weight:700}.sidebar-section ul{list-style:none}.sidebar-section li{font-size:.88rem}.sidebar-section li a{color:var(--color-text);border-bottom:1px solid var(--color-border-light);transition:all var(--transition);padding:.35rem 0;display:block}.sidebar-section li:last-child a{border-bottom:none}.sidebar-section li a:hover{color:var(--color-accent);padding-left:.3rem;text-decoration:none}.cat-group{border-bottom:1px solid var(--color-border-light)}.cat-group:last-child{border-bottom:none}.cat-group summary{cursor:pointer;color:var(--color-text);transition:color var(--transition);align-items:center;padding:.6rem 0;font-size:.9rem;font-weight:600;list-style:none;display:flex}.cat-group summary span:first-of-type{text-align:left;flex:1}.cat-group summary::-webkit-details-marker{display:none}.cat-group summary:before{content:"▸";color:var(--color-text-secondary);transition:transform var(--transition);margin-right:.5rem;font-size:.7rem}.cat-group[open] summary:before{transform:rotate(90deg)}.cat-group summary:hover{color:var(--color-accent)}.cat-count{color:var(--color-text-secondary);background:var(--color-bg);text-align:center;border-radius:10px;min-width:1.5rem;padding:.1rem .45rem;font-size:.72rem;font-weight:500}.cat-children{padding-bottom:.4rem;padding-left:1.2rem}.cat-children li a{border-bottom:1px dotted var(--color-border-light);justify-content:space-between;align-items:center;padding:.3rem 0;font-size:.84rem;display:flex}.cat-children li:last-child a{border-bottom:none}.cat-children li a:hover{color:var(--color-accent);padding-left:.2rem;text-decoration:none}.tag-list{flex-wrap:wrap;gap:.35rem;padding:0;list-style:none;display:flex}.tag-list li{font-size:inherit}.sidebar-section .tag-chip{background:var(--color-bg);border:1px solid var(--color-border-light);color:var(--color-text);transition:all var(--transition);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .7rem;font-size:.75rem;line-height:1.4;display:inline-flex}.sidebar-section .tag-chip:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);padding:.35rem .7rem;text-decoration:none}.tag-count{color:var(--color-text-secondary);font-size:.7rem}.tag-chip:hover .tag-count{color:var(--color-primary)}.tag-more{margin-top:.6rem}.tag-more>summary{cursor:pointer;color:var(--color-primary);align-items:center;gap:.3rem;padding:.2rem 0;font-size:.78rem;list-style:none;display:inline-flex}.tag-more>summary::-webkit-details-marker{display:none}.tag-more>summary:before{content:"▸";transition:transform var(--transition);font-size:.7rem}.tag-more[open]>summary:before{transform:rotate(90deg)}.tag-more>summary:hover{text-decoration:underline}.tag-more .tag-more-label-open,.tag-more[open] .tag-more-label-closed{display:none}.tag-more[open] .tag-more-label-open{display:inline}.tag-list-extra{margin-top:.5rem}.pagination{justify-content:center;gap:.4rem;margin-top:2.5rem;display:flex}.pagination a,.pagination span{min-width:2.2rem;height:2.2rem;transition:all var(--transition);border-radius:6px;justify-content:center;align-items:center;padding:0 .6rem;font-size:.88rem;font-weight:500;display:inline-flex}.pagination a{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text)}.pagination a:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);text-decoration:none}.pagination .current{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary)}.pagination .ellipsis{color:var(--color-text-secondary);pointer-events:none}.search-btn{cursor:pointer;color:var(--color-text-secondary);border:none;border-left:1px solid var(--color-border);transition:color var(--transition);background:0 0;border-radius:0;justify-content:center;align-items:center;margin-left:.5rem;padding:.4rem .4rem .4rem .9rem;display:inline-flex}.search-btn:hover{color:var(--color-primary);background:var(--color-primary-light)}.search-modal{z-index:200;display:none;position:fixed;inset:0}.search-modal.is-open{justify-content:center;align-items:flex-start;padding-top:10vh;display:flex}.search-overlay{background:#00000080;position:fixed;inset:0}.search-dialog{background:var(--color-surface);box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;width:90%;max-width:600px;max-height:70vh;display:flex;position:relative;overflow:hidden}.search-header{border-bottom:1px solid var(--color-border);align-items:center;padding:.5rem;display:flex}.search-input-wrapper{flex:1;align-items:center;gap:.5rem;padding:0 .75rem;display:flex}.search-input-icon{color:var(--color-text-secondary);flex-shrink:0}#search-input{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;padding:.75rem 0;font-family:inherit;font-size:1rem}#search-input::placeholder{color:var(--color-text-secondary)}.search-close{cursor:pointer;color:var(--color-text-secondary);transition:all var(--transition);background:0 0;border:none;border-radius:6px;padding:.5rem .75rem;font-size:1.5rem;line-height:1}.search-close:hover{color:var(--color-text);background:var(--color-bg)}.search-results{padding:.5rem;overflow-y:auto}.search-message{text-align:center;color:var(--color-text-secondary);padding:2rem 1rem;font-size:.9rem}.search-result-item{border-radius:var(--radius);color:var(--color-text);transition:background var(--transition);padding:.75rem 1rem;display:block}.search-result-item:hover{background:var(--color-bg);text-decoration:none}.search-result-title{margin-bottom:.25rem;font-size:.95rem;font-weight:600;display:block}.search-result-excerpt{color:var(--color-text-secondary);font-size:.82rem;line-height:1.5;display:block}.search-result-excerpt mark{color:inherit;background:#fde68a;border-radius:2px;padding:0 .1rem}@media (width<=768px){.main-container{flex-direction:column;gap:1.5rem}.sidebar{width:100%}.article,.static-page{padding:1.5rem}.static-page h1{font-size:1.3rem}.article h1{font-size:1.35rem}.article-body h2{padding:.5rem 0 .5rem .85rem;font-size:1.15rem}.site-header .inner{flex-direction:column;gap:.5rem}.site-nav{flex-wrap:wrap;justify-content:center}.site-nav a{padding:.3rem .5rem;font-size:.78rem}}@media (width<=480px){.article,.static-page{border-radius:0;padding:1rem}.post-card{border-radius:0}.main-container,.static-container{padding:0 .75rem}}
