.article-main { flex:1; padding:clamp(2.5rem,6vw,5rem) 1.25rem; }
.article-shell { width:100%; max-width:56rem; margin-inline:auto; min-width:0; }
.article-heading { padding-bottom:2rem; margin-bottom:2.5rem; border-bottom:1px solid #ffffff1a; }
.article-title { font-size:clamp(1.6rem,3.2vw,2.4rem); font-weight:700; line-height:1.5; letter-spacing:.015em; overflow-wrap:anywhere; line-break:strict; word-break:normal; word-break:auto-phrase; text-wrap:pretty; margin-bottom:1rem; }
.article-title--long { font-size:clamp(1.45rem,2.7vw,2rem); line-height:1.6; }
.article-title--extra-long { font-size:clamp(1.35rem,2.4vw,1.8rem); line-height:1.65; }
.post-content { font-size:1rem; line-height:1.95; color:#d1d5db; overflow-wrap:anywhere; min-width:0; }
.post-content p,.post-content div { margin-block:0 1.35em; line-height:inherit; }
.post-content h2 { font-size:1.5rem; font-weight:700; margin:2em 0 1em; }
.post-content h3 { font-size:1.25rem; font-weight:700; margin:1.75em 0 .75em; }
.post-content a { color:#93c5fd; text-decoration:underline; text-underline-offset:.2em; }
.post-content ul,.post-content ol { list-style-position:outside; padding-inline-start:1.6em; margin-block:1em; }
.post-content ul { list-style-type:disc; } .post-content ol { list-style-type:decimal; }
.post-content li { margin-block:.35em; }
.post-content blockquote { border-left:3px solid #64748b; padding-left:1.2em; margin-block:1.5em; }
.post-content img { max-width:100%; height:auto; margin:1.5rem auto; }
.post-content pre { white-space:pre-wrap; padding:1rem; background:#161616; }
.align-left { text-align:left; } .align-center { text-align:center; } .align-right { text-align:right; }
.post-content.align-center ul,.post-content.align-center ol { width:fit-content; max-width:100%; margin-inline:auto; text-align:left; }
@media(max-width:600px) { .article-main { padding-inline:1.25rem; } .post-content { font-size:.95rem; } .article-heading { margin-bottom:2rem; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; } .opacity-0 { opacity:1!important; } }
.hover-underline.inline-flex { display:inline-flex; align-items:center; vertical-align:baseline; white-space:nowrap; }
.hover-underline.inline-flex > svg { flex-shrink:0; }
.public-error { min-height:100vh; display:flex; flex-direction:column; margin:0; background:#050505; color:#fff; font-family:system-ui,"Noto Sans JP",sans-serif; }
.public-error-header { padding:1.5rem max(1.25rem,calc((100% - 56rem)/2)); border-bottom:1px solid #ffffff1a; background:#0a0a0a; }
.public-error-header a { font-size:1.25rem; font-weight:700; letter-spacing:.1em; }
.public-error-main { flex:1; width:100%; max-width:56rem; margin:auto; padding:clamp(4rem,10vw,8rem) 1.25rem; text-align:center; }
.public-error-code { color:#9ca3af; font-size:clamp(3rem,10vw,5rem); font-weight:700; letter-spacing:.1em; margin-bottom:1rem; }
.public-error-main h1 { font-size:clamp(1.4rem,4vw,2rem); font-weight:700; line-height:1.6; }
.public-error-message { color:#9ca3af; margin:1.5rem 0 2.5rem; line-height:1.9; overflow-wrap:anywhere; }
.public-error-back { display:inline-block; padding:.9rem 1.75rem; border:1px solid #ffffff66; border-radius:4px; }
.public-error a:hover { color:#bfdbfe; } .public-error a:focus-visible { outline:2px solid #93c5fd; outline-offset:5px; }
.public-error-footer { padding:2rem 1.25rem; border-top:1px solid #ffffff1a; background:#0a0a0a; text-align:center; color:#9ca3af; font-size:.85rem; }
.public-error-footer nav { display:flex; justify-content:center; gap:1rem 2rem; flex-wrap:wrap; }
.public-error-footer p { margin-top:1.5rem; font-size:.75rem; }
