*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}:root{--color-bg: #ffffff;--color-text: #1a1a2e;--color-text-muted: #555770;--color-primary: #2b6cb0;--color-primary-dark: #1e4e8c;--color-accent: #ed8936;--color-border: #e2e8f0;--color-bg-muted: #f7fafc;--color-bg-code: #edf2f7;--max-width: 1100px;--content-width: 740px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--radius: 6px}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);line-height:1.8;font-size:16px;-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{line-height:1.4;font-weight:700}.site-wrapper{min-height:100vh;display:flex;flex-direction:column}.site-main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding:2rem 1rem}.site-header{border-bottom:1px solid var(--color-border);background:var(--color-bg)}.site-header-inner{max-width:var(--max-width);margin:0 auto;padding:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.site-title{font-size:1.25rem;font-weight:700;color:var(--color-text)}.site-title:hover{text-decoration:none;color:var(--color-primary)}.site-nav{display:flex;gap:1.25rem;font-size:.9rem}.site-nav a{color:var(--color-text-muted)}.site-nav a:hover{color:var(--color-primary);text-decoration:none}.site-footer{border-top:1px solid var(--color-border);padding:2rem 1rem;text-align:center;font-size:.85rem;color:var(--color-text-muted)}.prose{max-width:var(--content-width);margin:0 auto}.prose h2{font-size:1.5rem;margin:2.5rem 0 1rem;padding-bottom:.3rem;border-bottom:2px solid var(--color-primary)}.prose h3{font-size:1.25rem;margin:2rem 0 .75rem}.prose p{margin-bottom:1.25rem}.prose ul,.prose ol{margin-bottom:1.25rem;padding-left:1.5rem}.prose li{margin-bottom:.4rem}.prose blockquote{border-left:4px solid var(--color-primary);padding:.75rem 1rem;margin-bottom:1.25rem;background:var(--color-bg-muted);color:var(--color-text-muted)}.prose pre{background:var(--color-bg-code);padding:1rem;border-radius:var(--radius);overflow-x:auto;margin-bottom:1.25rem;font-size:.9rem}.prose code{font-family:var(--font-mono);font-size:.9em}.prose :not(pre)>code{background:var(--color-bg-code);padding:.15em .35em;border-radius:3px}.prose img{border-radius:var(--radius);margin:1.5rem 0}.prose table{width:100%;border-collapse:collapse;margin-bottom:1.25rem}.prose th,.prose td{border:1px solid var(--color-border);padding:.6rem .8rem;text-align:left}.prose th{background:var(--color-bg-muted);font-weight:600}.article-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;transition:box-shadow .2s}.article-card:hover{box-shadow:0 2px 8px #00000014}.article-card a{color:var(--color-text);font-weight:600;font-size:1.05rem}.article-card .meta{font-size:.85rem;color:var(--color-text-muted);margin-top:.5rem}.article-card .description{font-size:.9rem;color:var(--color-text-muted);margin-top:.5rem;line-height:1.6}.article-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:640px){.article-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:960px){.article-grid{grid-template-columns:repeat(3,1fr)}}.category-badge{display:inline-block;background:var(--color-bg-muted);color:var(--color-primary);font-size:.8rem;padding:.15em .6em;border-radius:3px;font-weight:600}.section-heading{font-size:1.35rem;margin-bottom:1.25rem;padding-bottom:.3rem;border-bottom:2px solid var(--color-primary)}.article-meta{font-size:.9rem;color:var(--color-text-muted);margin-bottom:2rem;display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}.tag{display:inline-block;background:var(--color-bg-muted);font-size:.8rem;padding:.1em .5em;border-radius:3px;color:var(--color-text-muted)}
