:root{--bg:#fafaf7;--fg:#1d1d1b;--mut:#6b6a63;--card:#fff;--line:#e3e1d8;--acc:#b8431a;--acc2:#1a6b5c;--win:#1a7a45;--loss:#b3261e;--code:#f0eee6}
@media (prefers-color-scheme:dark){:root{--bg:#161614;--fg:#ecebe4;--mut:#a09f96;--card:#201f1d;--line:#34332f;--acc:#ff8a5c;--acc2:#5cc7ad;--win:#5fd08b;--loss:#ff8a80;--code:#2a2926}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--acc2)}a:hover{color:var(--acc)}
header.top{background:var(--card);border-bottom:1px solid var(--line)}
header.top .in{max-width:1000px;margin:0 auto;padding:.7rem 1rem;display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap}
header.top .brand{font-weight:700;color:var(--acc);text-decoration:none;font-size:1.15rem}
header.top nav{display:flex;gap:1rem;flex-wrap:wrap;flex:1}
header.top nav a{text-decoration:none;color:var(--fg)}header.top nav a.on{color:var(--acc);font-weight:600}
main{max-width:1000px;margin:0 auto;padding:1.2rem 1rem 3rem}
h1{font-size:1.7rem;margin:.2rem 0 1rem}h2{margin:2rem 0 .6rem;font-size:1.3rem;border-bottom:1px solid var(--line);padding-bottom:.25rem}h3{margin:1.2rem 0 .4rem;font-size:1.05rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;margin:.8rem 0}
.grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.muted{color:var(--mut)}.small{font-size:.88rem}
table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.95rem}th,td{padding:.35rem .55rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--mut);font-weight:600;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}
.scroll{overflow-x:auto}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--code);padding:.05rem .3rem;border-radius:4px;font-size:.9em}
.pill{display:inline-block;padding:.05rem .5rem;border-radius:999px;font-size:.8rem;border:1px solid var(--line)}
.win{color:var(--win);border-color:var(--win)}.loss{color:var(--loss);border-color:var(--loss)}
.big{font-size:2rem;font-weight:700;line-height:1.1}
meter{width:100%;height:.85rem}
.step{border-left:3px solid var(--line);padding:.25rem .8rem;margin:.35rem 0}
.step.winner,.step.result{border-color:var(--acc)}.step.hit,.step.deathblow,.step.death{border-color:var(--loss)}.step.dodge,.step.deflect,.step.druid{border-color:var(--acc2)}
.step .ph{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mut)}
.chance{color:var(--mut);font-size:.85rem}
form.inline{display:inline-flex;gap:.4rem;align-items:center;flex-wrap:wrap}
input,select,button{font:inherit;padding:.3rem .5rem;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--fg)}
button{cursor:pointer;background:var(--acc2);color:#fff;border-color:transparent}button.danger{background:var(--loss)}button.ghost{background:transparent;color:var(--fg);border-color:var(--line)}
.flash{background:var(--code);border:1px solid var(--acc2);padding:.5rem .8rem;border-radius:8px;margin:.5rem 0}
.err{color:var(--loss)}
ul.tight{margin:.3rem 0;padding-left:1.2rem}
footer{max-width:1000px;margin:0 auto;padding:1rem;color:var(--mut);font-size:.85rem}

table.grid td { padding: 0; width: 2rem; height: 2rem; text-align: center; font-size: 1.2rem; line-height: 2rem; border: 1px solid var(--border, #8884); }
table.grid { border-collapse: collapse; }
