:root{--bg:#f7f8fb;--fg:#1c2030;--mut:#6b7285;--acc:#2f6bff;--card:#fff;--warn:#fff4e5;--line:#e3e6ee}
@media (prefers-color-scheme:dark){:root{--bg:#11131a;--fg:#e8eaf2;--mut:#9aa1b5;--card:#1a1d27;--warn:#2b2216;--line:#2a2e3b}}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,"Hiragino Sans","Noto Sans JP",sans-serif;background:var(--bg);color:var(--fg);line-height:1.8}
a{color:var(--acc)}main{max-width:1040px;margin:auto;padding:1rem}
.top{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center;padding:.8rem 1rem;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0}
.brand{font-weight:700;text-decoration:none;font-size:1.1rem}.top nav{display:flex;gap:1rem;flex-wrap:wrap}.top nav a{text-decoration:none;color:var(--fg)}
.hero{padding:2rem 0}.hero h1{font-size:clamp(1.5rem,4vw,2.2rem);line-height:1.4}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
article,.tool,.todo,.notice{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem 1.2rem}
.tool{margin:1.2rem 0}h2{font-size:1.15rem;margin:.2rem 0 .6rem}.src,.note,.muted{color:var(--mut);font-size:.88rem}
table{width:100%;border-collapse:collapse;font-size:.92rem;display:block;overflow-x:auto}th,td{border-bottom:1px solid var(--line);padding:.5rem;text-align:left;vertical-align:top}
.btn{background:var(--acc);color:#fff;border:0;border-radius:10px;padding:.7rem 1.2rem;font-size:1rem;cursor:pointer;text-decoration:none;display:inline-block}
.btn.ghost{background:transparent;color:var(--mut);border:1px solid var(--line);margin-top:.6rem;font-size:.85rem}
.cta{text-align:center;padding:2rem 0}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:1rem;margin-top:1rem}@media (max-width:760px){.grid2{grid-template-columns:1fr}}
.log{height:55vh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem}
.msg{padding:.6rem .9rem;border-radius:12px;margin:.4rem 0;white-space:pre-wrap;max-width:90%}
.msg.user{background:var(--acc);color:#fff;margin-left:auto}.msg.assistant{background:var(--bg)}
form{display:flex;gap:.5rem;margin-top:.6rem}textarea{flex:1;font:inherit;padding:.6rem;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--fg)}
.warn{background:var(--warn);border-radius:14px;padding:1rem 1.2rem;margin-bottom:1rem}.warn ul,.notice ul{padding-left:1.2rem;margin:.3rem 0}
.todo ul{list-style:none;padding:0}.todo li{padding:.3rem 0;border-bottom:1px dashed var(--line)}.todo input{margin-right:.5rem}
.notice{margin:1rem 0}footer{max-width:1040px;margin:2rem auto;padding:1rem;color:var(--mut);font-size:.85rem}
.ico{width:1.15em;height:1.15em;vertical-align:-.2em;margin-right:.4em;color:var(--acc);flex:none}
.warn .ico{color:#ea580c}
.fig{margin:1.2rem 0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:.8rem;text-align:center}
.fig img{max-width:100%;height:auto}
@media (max-width:600px){.fig{overflow-x:auto;text-align:left}.fig img{max-width:none;width:620px}}
details.more{margin:.8rem 0 0;border:1px solid var(--line);border-radius:10px;padding:.2rem .9rem;background:var(--bg)}
details.more summary{cursor:pointer;font-weight:600;color:var(--acc);padding:.4rem 0}
details.more[open]{padding-bottom:.6rem}details.more dl{margin:.2rem 0}details.more dt{font-weight:600;margin-top:.4rem}details.more dd{margin:0 0 .2rem 0;color:var(--mut);font-size:.92rem}
