:root{--bg:#0a0a0f;--surface:#14141c;--accent:#89dceb;--green:#a6e3a1;--text:#cdd6f4;--muted:#7f849c;--border:#313244}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Noto Sans JP,system-ui,sans-serif;line-height:1.85}.site-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:14px 20px;display:flex}.site-header a{color:var(--accent);font-weight:600;text-decoration:none}.site-header .crumb{color:var(--muted);font-size:.85rem}.site-header .crumb a{color:var(--muted);font-weight:400}.site-header .site-tools{align-items:center;gap:12px;margin-left:auto;display:flex}.site-header .site-tools>a{color:#f9e2af;font-size:.8rem;font-weight:500}.article{max-width:720px;margin:0 auto;padding:40px 16px}.article-meta{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:12px;margin-bottom:10px;font-size:.8rem;display:flex}.article-cat{color:var(--accent);border:1px solid var(--border);letter-spacing:.04em;border-radius:4px;padding:1px 8px}.article h1{text-wrap:balance;margin-bottom:14px;font-size:1.6rem;line-height:1.45}.article-lead{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:32px;padding-bottom:24px}.article h2{border-left:3px solid var(--accent);text-wrap:balance;margin:44px 0 14px;padding-left:12px;font-size:1.2rem}.article h3{color:var(--green);margin:28px 0 10px;font-size:1.02rem}.article p{margin-bottom:16px}.article ul,.article ol{margin:0 0 16px 24px}.article li{margin-bottom:6px}.article strong{color:#f5e0dc}.article a{color:var(--accent)}.article a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.article .table-wrap{border:1px solid var(--border);border-radius:8px;margin:0 0 20px;overflow-x:auto}.article table{border-collapse:collapse;width:100%;min-width:480px;font-size:.9rem}.article th{background:var(--surface);color:var(--muted);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px;font-size:.8rem;font-weight:500}.article td{vertical-align:top;border-bottom:1px solid #1e1e2e;padding:9px 12px}.article tr:last-child td{border-bottom:none}.article .callout{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:0 0 20px;padding:14px 18px}.article .cta{background:var(--accent);color:#0a0a0f;border-radius:8px;margin:4px 0 20px;padding:10px 18px;font-weight:700;text-decoration:none;display:inline-block}.article .cta:hover{opacity:.9}.article pre.code{border:1px solid var(--border);background:#11111b;border-radius:8px;margin:0 0 18px;padding:14px 16px;font-family:Consolas,Courier New,monospace;font-size:.84rem;line-height:1.6;overflow-x:auto}.article code{font-family:Consolas,Courier New,monospace}.article :not(pre)>code{background:#1e1e2e;border-radius:4px;padding:1px 5px;font-size:.88em}.article details.qa{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-bottom:10px;padding:12px 16px}.article details.qa summary{cursor:pointer;font-weight:500}.article details.qa summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.article .qa-n{color:var(--accent);margin-right:8px;font-weight:700}.article details.qa p{margin:10px 0 0}.article-meta{flex-wrap:wrap}.article .lang-btn{color:#0a0a0f;background:var(--accent);border-radius:999px;margin-left:auto;padding:2px 12px;font-size:.78rem;font-weight:700;text-decoration:none}.article .lang-btn:hover{opacity:.9}.toc{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:0 0 28px;padding:12px 18px}.toc summary{cursor:pointer;color:var(--muted);letter-spacing:.06em;font-size:.85rem;font-weight:700}.toc summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toc ol{margin:8px 0 0 20px}.toc li{margin:0 0 2px;font-size:.9rem;line-height:1.6}.toc a{color:var(--text);text-decoration:none}.toc a:hover{color:var(--accent);text-decoration:underline}.article h2{scroll-margin-top:16px}.roadmap{margin-top:40px}.roadmap-h,.practice-h{color:var(--muted);letter-spacing:.06em;font-size:.8rem;margin:0 0 8px!important}.roadmap ol{flex-wrap:wrap;align-items:center;gap:6px;margin:0;list-style:none;display:flex}.roadmap li{align-items:center;gap:6px;margin:0;display:flex}.roadmap li+li:before{content:"→";color:var(--muted)}.roadmap a,.rm-cur{text-align:center;border:1px solid var(--border);border-radius:999px;min-width:52px;padding:4px 12px;font-size:.85rem;font-weight:700;text-decoration:none;display:inline-block}.roadmap a{color:var(--text);background:var(--surface)}.roadmap a:hover{border-color:var(--accent);color:var(--accent)}.rm-cur{color:#0a0a0f;background:var(--accent);border-color:var(--accent)}.practice{margin-top:40px}.practice-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.practice-grid a{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;gap:2px;padding:12px 14px;line-height:1.5;text-decoration:none;display:grid}.practice-grid a:hover{border-color:var(--green)}.practice-grid strong{color:var(--green);font-size:.92rem}.practice-grid span{color:var(--muted);font-size:.8rem}.related{margin-top:48px}.related ul{gap:8px;margin:0;list-style:none;display:grid}.related li{margin:0}.related a{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;align-items:baseline;gap:10px;padding:10px 14px;line-height:1.5;text-decoration:none;display:flex}.related a:hover{border-color:var(--accent)}.related-cat{color:var(--accent);border:1px solid var(--border);border-radius:4px;flex:none;padding:0 6px;font-size:.7rem}.article-back{border-top:1px solid var(--border);margin-top:48px;padding-top:20px}
