*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-text: #1a1a1a;--color-text-muted: #6b7280;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-border: #e5e7eb;--font-sans: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--max-width: 720px;--max-width-wide: 1080px}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.8;-webkit-font-smoothing:antialiased}a{color:var(--color-accent);text-decoration:none;transition:color .2s}a:hover{color:var(--color-accent-hover)}img{max-width:100%;height:auto;display:block}.container{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}.container--wide{max-width:var(--max-width-wide)}.site-header{border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:100;backdrop-filter:blur(8px);background:#ffffffe6}.site-header__inner{max-width:var(--max-width-wide);margin:0 auto;padding:1rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.site-header__logo{font-size:1.25rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.site-header__logo:hover{color:var(--color-text)}.site-nav{display:flex;gap:2rem;list-style:none}.site-nav a{color:var(--color-text-muted);font-size:.9rem;font-weight:500;transition:color .2s}.site-nav a:hover{color:var(--color-text)}.site-footer{border-top:1px solid var(--color-border);padding:2rem 0;margin-top:4rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.hero{padding:5rem 0 3rem;text-align:center}.hero__title{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;line-height:1.2;margin-bottom:1rem}.hero__subtitle{font-size:1.1rem;color:var(--color-text-muted);max-width:480px;margin:0 auto}.post-list{list-style:none;display:flex;flex-direction:column;gap:1px}.post-item{display:flex;justify-content:space-between;align-items:baseline;padding:1.25rem 0;border-bottom:1px solid var(--color-border);gap:1rem}.post-item:first-child{border-top:1px solid var(--color-border)}.post-item__title{font-size:1.05rem;font-weight:600;color:var(--color-text);transition:color .2s}.post-item__title:hover{color:var(--color-accent)}.post-item__date{font-size:.85rem;color:var(--color-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin-top:.75rem}.tag{font-size:.75rem;padding:.2rem .6rem;border-radius:9999px;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted)}.article-header{padding:3rem 0 2rem}.article-header__title{font-size:2rem;font-weight:800;letter-spacing:-.02em;line-height:1.3;margin-bottom:.75rem}.article-header__meta{color:var(--color-text-muted);font-size:.9rem}.article-body{padding-bottom:3rem}.article-body h2{font-size:1.4rem;font-weight:700;margin:2.5rem 0 1rem;letter-spacing:-.01em}.article-body h3{font-size:1.15rem;font-weight:600;margin:2rem 0 .75rem}.article-body p{margin-bottom:1.25rem}.article-body ul,.article-body ol{margin:0 0 1.25rem 1.5rem}.article-body li{margin-bottom:.4rem}.article-body blockquote{border-left:3px solid var(--color-accent);padding-left:1.25rem;margin:1.5rem 0;color:var(--color-text-muted);font-style:italic}.article-body code{font-family:var(--font-mono);font-size:.9em;background:#f3f4f6;padding:.15rem .4rem;border-radius:4px}.article-body pre{background:#1e1e1e;color:#d4d4d4;padding:1.25rem;border-radius:8px;overflow-x:auto;margin:1.5rem 0}.article-body pre code{background:none;padding:0;font-size:.85rem}.article-body a{text-decoration:underline;text-underline-offset:2px}.back-link{display:inline-block;margin-bottom:1rem;font-size:.9rem;color:var(--color-text-muted)}.back-link:hover{color:var(--color-accent)}.section-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:1.5rem}@media(max-width:640px){.hero__title{font-size:1.75rem}.hero{padding:3rem 0 2rem}.post-item{flex-direction:column;gap:.25rem}.article-header__title{font-size:1.5rem}.site-nav{gap:1.25rem}}
