:root{--paper: #F6F2E8;--paper-grid: #E8E2D2;--paper-edge: #B5AD9C;--ink: #211E19;--ink-soft: #3D382F;--muted: #5C564B;--faint: #8A8273;--rule: #DCD5C5;--vermilion: #C2401F;--blueprint: #2D5A7B;--font-sans: "IBM Plex Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;--font-mono: "IBM Plex Mono", "Hiragino Kaku Gothic ProN", monospace;--font-serif: "Shippori Mincho", "Hiragino Mincho ProN", serif;--measure: 42rem}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.9}body{margin:0}a{color:var(--blueprint);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--vermilion)}code,kbd,pre{font-family:var(--font-mono)}::selection{background:var(--ink);color:var(--paper)}.wrap{max-width:var(--measure);margin:0 auto;padding:0 1.25rem}.site-header{border-bottom:2px solid var(--ink);padding:1.5rem 0 1rem}.site-header .brand{font-family:var(--font-mono);font-size:1.35rem;font-weight:500;color:var(--ink);text-decoration:none}.site-header .tagline{font-size:.8rem;color:var(--muted);margin:.25rem 0 0}.site-header .head-flex{display:flex;justify-content:space-between;align-items:center;gap:1rem}.seal{width:2.75rem;height:2.75rem;border:2.5px solid var(--vermilion);color:var(--vermilion);font-family:var(--font-serif);font-weight:700;font-size:1.6rem;line-height:1;display:flex;align-items:center;justify-content:center;text-decoration:none;transform:rotate(-4deg);flex-shrink:0}.site-footer{border-top:1px solid var(--ink);margin-top:5rem;padding:1.5rem 0 3rem;font-family:var(--font-mono);font-size:.75rem;color:var(--faint)}.badges{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.badge{font-family:var(--font-mono);font-size:.75rem;border:1.5px solid var(--ink);padding:.15rem .7rem;white-space:nowrap}.badge.vermilion{border-color:var(--vermilion);color:var(--vermilion)}.badge.blueprint{border-color:var(--blueprint);color:var(--blueprint)}.badge.fill{background:var(--ink);color:var(--paper);border-color:var(--ink)}.stamp{width:4.75rem;height:4.75rem;border:2.5px solid var(--vermilion);color:var(--vermilion);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-4deg);flex-shrink:0;line-height:1}.stamp .ja{font-family:var(--font-serif);font-weight:700;font-size:1.7rem}.stamp .date{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.05em;margin-top:4px;white-space:nowrap;text-align:center}.article{counter-reset:section}.article h2{counter-increment:section;counter-reset:subsection;font-size:1.45rem;font-weight:700;line-height:1.5;margin:3.5rem 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--ink)}.article h2:before{display:block;content:"§ " counter(section,decimal-leading-zero);font-family:var(--font-mono);font-weight:500;font-size:.75rem;letter-spacing:.15em;color:var(--vermilion);margin-bottom:.3rem}.article h3{counter-increment:subsection;font-size:1.15rem;font-weight:700;margin:2.5rem 0 .75rem}.article h3:before{content:counter(section) "." counter(subsection);font-family:var(--font-mono);font-weight:500;color:var(--faint);margin-right:.8em}.article p{margin:0 0 1.4rem;color:var(--ink-soft)}.article strong{color:var(--ink)}.lead{font-family:var(--font-serif);font-weight:600;font-size:1.1rem;line-height:2;color:var(--ink-soft);margin:1.5rem 0 2.5rem}.article figure,.article p:has(>img){margin:2.5rem 0}.article img{display:block;width:100%;border:1px solid var(--paper-edge)}.article img+em,.article figcaption{display:block;font-family:var(--font-mono);font-style:normal;font-size:.75rem;color:var(--muted);margin-top:.5rem}.article pre{background:var(--ink);color:var(--paper);font-size:.85rem;line-height:1.7;padding:1rem 1.25rem;overflow-x:auto}.article :not(pre)>code{font-size:.88em;background:var(--paper-grid);padding:.1em .35em}.article blockquote{margin:2rem 0;padding:0;font-family:var(--font-serif);font-weight:600;font-size:1.05rem;color:var(--muted)}.article blockquote p:before{content:"「"}.article blockquote p:after{content:"」"}.article hr{border:none;border-top:.5px solid var(--rule);margin:3rem 0}.article table{width:100%;border-collapse:collapse;font-size:.9rem;margin:2rem 0}.article th{font-family:var(--font-mono);font-weight:500;font-size:.75rem;text-align:left;border-bottom:1.5px solid var(--ink);padding:.4rem .75rem .4rem 0;color:var(--muted)}.article td{border-bottom:.5px solid var(--rule);padding:.5rem .75rem .5rem 0;vertical-align:top}.newsletter{border:1.5px solid var(--ink);padding:1.5rem 1.75rem;margin:3.5rem 0 0}.newsletter .label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.15em;color:var(--vermilion);margin:0 0 .4rem}.newsletter p{margin:0 0 1rem;font-size:.95rem;color:var(--ink-soft)}.newsletter form{display:flex;gap:10px;flex-wrap:wrap}.newsletter input[type=email]{flex:1;min-width:220px;font-family:var(--font-mono);font-size:.9rem;color:var(--ink);background:var(--paper);border:1.5px solid var(--ink);border-radius:0;padding:.5rem .75rem}.newsletter input[type=email]:focus{outline:2px solid var(--blueprint);outline-offset:1px}.newsletter .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.newsletter button{font-family:var(--font-mono);font-size:.85rem;background:var(--ink);color:var(--paper);border:none;border-radius:0;padding:.5rem 1.5rem;cursor:pointer}.newsletter button:hover{background:var(--vermilion)}.newsletter .msg{margin:.75rem 0 0;font-family:var(--font-mono);font-size:.8rem;color:var(--muted)}.site-footer a{color:var(--faint)}
