:root{--bg: #e6eef9;--surface: #f7faff;--surface2: #dbe6f5;--border: #b6c8e4;--text: #0b1d3a;--muted: #4a5e80;--accent: #1d4f9e;--accent-ink: #ffffff;--good: #1f8a62;--bad: #b8382b;--warn: #a86a12;--grid: #d3deef;--font: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;--display: "Cormorant SC", Georgia, serif;color-scheme:light}:root[data-theme=dark]{--bg: #070b14;--surface: #0c1220;--surface2: #131c30;--border: #1f2b46;--text: #d9e1f2;--muted: #8392b3;--accent: #6db5ff;--accent-ink: #061120;--good: #39b58c;--bad: #e46b5b;--warn: #e3b24e;--grid: #172139;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 var(--font)}body{background:radial-gradient(1200px 500px at 20% -10%,#c9dbf5 0%,transparent 60%),var(--bg);min-height:100vh}:root[data-theme=dark] body{background:radial-gradient(1200px 500px at 20% -10%,#10203d 0%,transparent 60%),var(--bg)}a{color:var(--accent)}h1,h2,h3,h4{margin:0;font-weight:600}.hidden{display:none}[hidden]{display:none!important}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 18px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(6px);position:sticky;top:0;z-index:5;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.brand h1{font-family:var(--display);font-size:24px;letter-spacing:.02em;line-height:1.1}.brand p{margin:0;color:var(--muted);font-size:12.5px}.ankh{font-size:26px;color:var(--accent)}.tabs{display:flex;gap:6px;align-items:center}.tab{background:none;border:1px solid var(--border);color:var(--text);padding:7px 18px;border-radius:6px;cursor:pointer;font:600 14px var(--font)}.tab.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.body{display:grid;grid-template-columns:360px minmax(0,1fr);gap:0;min-height:calc(100vh - 110px)}body.panel-closed .body{grid-template-columns:minmax(0,1fr)}body.panel-closed .panel{display:none}.panel{border-right:1px solid var(--border);background:var(--surface);padding:12px 14px;overflow-y:auto;max-height:calc(100vh - 62px);position:sticky;top:62px}.view{padding:16px 20px 40px;min-width:0;overflow-x:hidden}footer{color:var(--muted);font-size:12px;padding:14px 20px;border-top:1px solid var(--border)}.panel-sec{border-bottom:1px solid var(--border);padding:10px 0}.panel-sec h4{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:6px 0 8px}.panel-sec:first-child{padding-top:0}.drop{border:1px dashed var(--border);border-radius:8px;padding:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted)}.drop.over{border-color:var(--accent);background:var(--surface2)}.load-status{color:var(--warn);margin:6px 0 0;font-size:12.5px}.load-status:empty{display:none}.hint{color:var(--muted);font-size:12px;margin:6px 0 0}.warn{color:var(--warn);font-size:12.5px;margin:4px 0}.derived{margin:6px 0 0;font-size:12.5px;color:var(--muted)}.derived b{color:var(--text)}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 8px}.skills{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}.lab{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}.skills .lab{flex-direction:row;justify-content:space-between;align-items:center}.row{display:flex;gap:10px;align-items:center}.wrap{flex-wrap:wrap}input.num,select{background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:4px 6px;font:13px var(--font)}input.num{width:64px;font-family:var(--mono)}.skills input.num{width:52px}select{max-width:100%}.toggle{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;cursor:pointer;margin:6px 10px 0 0}.btn{background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;cursor:pointer;font:500 13px var(--font)}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;padding:7px 18px}.btn.ghost{background:none}table.mini{border-collapse:collapse;font-size:12.5px;margin-top:6px}table.mini th{text-align:left;color:var(--muted);font-weight:500;padding:3px 8px 3px 0;border-bottom:1px solid var(--border)}table.mini td{padding:3px 8px 3px 0;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums}table.wide{width:100%}td.muted{color:var(--muted)}table.mini tr.on td{color:var(--text);font-weight:600}.equip{display:flex;flex-direction:column;gap:6px}.eq-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:4px 6px;align-items:center}.eq-row select{width:100%;min-width:0}.eq-row select.ench,.eq-q{grid-column:2}.eq-q{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.eq-slot{font-size:12px;color:var(--muted)}.runes{display:flex;flex-wrap:wrap;gap:4px}.rune{background:var(--surface2);border:1px solid var(--border);color:var(--muted);border-radius:4px;padding:2px 6px;font:12px var(--mono);cursor:pointer}.rune.on{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.buffs{display:flex;flex-direction:column;gap:4px}.buff{display:flex;gap:6px;align-items:flex-start;font-size:12.5px}.buff small,.buff.off{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));gap:14px;margin-top:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;min-width:0;box-shadow:0 1px 2px #142d5a14}.card header{margin-bottom:6px}.card h3{font-size:15px}.card .sub{margin:2px 0 0;color:var(--muted);font-size:12px}.card p{margin:6px 0}.lead{font-size:15px}.lead.big{font-size:34px;font-family:var(--display);color:var(--accent)}.lead.big small{font:14px var(--font);color:var(--muted)}.effect{font-size:12.5px;color:var(--muted)}.legend{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--muted)}.sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.chart svg{display:block;overflow:visible}.chart text{fill:var(--muted);font:11px var(--font)}.axis path,.axis line{stroke:var(--border)}.grid line{stroke:var(--grid)}.grid path{display:none}.axis-label{fill:var(--muted);font-size:11px}.marker{stroke:var(--accent);stroke-dasharray:4 3;stroke-width:1.5}.readout{fill:var(--text)!important;font-family:var(--mono)!important;font-size:11px}.readout-box rect{fill:var(--surface);fill-opacity:.82;stroke:var(--border);stroke-opacity:.8}.bar-label{font-size:10.5px!important;fill:var(--text)!important}.heat-mark{fill:none;stroke:var(--accent);stroke-width:2.5}.sharebar{display:flex;height:26px;border-radius:6px;overflow:hidden;margin:8px 0}.sharebar div{display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;white-space:nowrap;overflow:hidden}.skills-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px}.catalogue h3{font-size:15px}.check-list{display:flex;flex-direction:column;gap:3px;margin-top:8px}.check{display:grid;grid-template-columns:1fr 54px 40px;gap:6px;align-items:center;background:none;border:1px solid transparent;color:var(--text);text-align:left;padding:5px 8px;border-radius:6px;cursor:pointer;font:13px var(--font)}.check:hover{background:var(--surface)}.check.on{background:var(--surface);border-color:var(--accent)}.check b{font:12px var(--mono);text-align:right;color:var(--muted)}.pbar{height:6px;background:var(--surface2);border-radius:3px;overflow:hidden}.pbar i{display:block;height:100%;background:var(--accent)}.ctrls{align-items:flex-end}.combat-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:18px}.picker h3{font-size:15px}.world-tabs{display:flex;gap:3px;margin:4px 0 8px;flex-wrap:wrap}.wld{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:5px;padding:3px 8px;cursor:pointer;font:500 12px var(--font)}.wld.on{background:var(--surface2);color:var(--text);border-color:var(--accent)}.level-tabs{display:flex;gap:3px;margin:4px 0 8px;flex-wrap:wrap}.lvl{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:5px;min-width:30px;height:28px;padding:0 6px;cursor:pointer;font:600 13px var(--font)}.lvl.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.enemy-list{display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 220px);overflow-y:auto;padding-right:4px}.enemy{display:grid;grid-template-columns:1fr auto;gap:0 6px;background:none;border:1px solid transparent;color:var(--text);text-align:left;padding:4px 8px;border-radius:6px;cursor:pointer;font:13px var(--font)}.enemy:hover{background:var(--surface)}.enemy.on{background:var(--surface);border-color:var(--accent)}.enemy.inert{opacity:.45}.en-hp{font:12px var(--mono);color:var(--muted);text-align:right}.en-att,.en-n,.en-trap{font-size:11px;color:var(--muted)}.en-att.att0{color:var(--bad)}.en-att.att3{color:var(--good)}.en-trap{color:var(--warn)}.enemy-head h2{font-size:20px;font-family:var(--display)}.enemy-head h2 small{font:13px var(--font);color:var(--muted)}.ctrl-grid{display:flex;flex-wrap:wrap;gap:10px 14px;margin-top:12px;align-items:flex-end}.run-row{margin-top:12px}.all-ctrls{margin-top:8px;align-items:flex-end}.progress{width:160px;height:8px;background:var(--surface2);border-radius:4px;overflow:hidden;visibility:hidden}.progress.on{visibility:visible}.progress i{display:block;height:100%;width:0;background:var(--accent);transition:width .15s}.prog-text{color:var(--muted);font-size:12.5px}.scroll{max-height:440px;overflow-y:auto}table.sortable tr[class]{cursor:pointer}table.sortable tr.ok td:nth-child(5){color:var(--good)}table.sortable tr.bad td:nth-child(5){color:var(--bad)}table.sortable tr:hover td{background:var(--surface2)}@media (max-width: 1100px){.combat-layout,.skills-layout{grid-template-columns:1fr}.enemy-list{max-height:260px}.check-list{max-height:260px;overflow-y:auto}}@media (max-width: 760px){.body{grid-template-columns:1fr}.panel{position:static;max-height:none;border-right:none;border-bottom:1px solid var(--border)}.view{padding:12px 16px 30px}.cards{grid-template-columns:1fr}}.eq-note{grid-column:2;margin:0;font-size:12px}.ench-note summary{cursor:pointer;color:var(--warn)}.ench-note p{margin:6px 0 0}:root{--val: #0b62c4;--tgt: #c62828}:root[data-theme=dark]{--val: #4fa3ff;--tgt: #ff5d5d}.val{color:var(--val)}.tgt{color:var(--tgt)}td.val,td.tgt{font-weight:600}.chart .val text,.chart text.val,.chart .axis.val text{fill:var(--val)}.chart .tgt text,.chart text.tgt,.chart .axis.tgt text{fill:var(--tgt)}.chart .axis.val path,.chart .axis.val line{stroke:color-mix(in srgb,var(--val) 60%,transparent)}.chart .axis.tgt path,.chart .axis.tgt line{stroke:color-mix(in srgb,var(--tgt) 60%,transparent)}.marker.val{stroke:var(--val)}.val-lab>span:first-child{color:var(--val);font-weight:600}.tgt-lab>span:first-child{color:var(--tgt);font-weight:600}.val-lab small,.tgt-lab small{font-weight:400;color:var(--muted)}input.val-in{border-color:var(--val)!important;color:var(--val);font-weight:600}input.tgt-in{border-color:var(--tgt)!important;color:var(--tgt);font-weight:600}td.good{color:var(--good)}.card.span-all{grid-column:1 / -1}.mark-label{fill:var(--text)!important;font-size:10.5px!important}.sw-line{display:inline-block;width:22px;height:0;border-top:2.5px solid;margin-right:6px;vertical-align:3px}.sw-line.dash{border-top-style:dashed}.formula{margin:8px 0 4px}.tex.display{overflow-x:auto;overflow-y:hidden;padding:4px 0}.tex .katex{font-size:1.08em}.tex .katex .val{color:var(--val)}.tex .katex .tgt{color:var(--tgt)}pre.py{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:8px 10px;margin:6px 0 4px;overflow-x:auto;font:12.5px/1.5 var(--mono);color:var(--text)}pre.py .val,pre.py .tgt{font-weight:600}pre.py .cm{color:var(--muted)}.copy-row{gap:6px}.btn.tiny{padding:2px 8px;font-size:11.5px}.details .this-check{font-size:13.5px}.details details.roll{margin-top:10px;border-top:1px solid var(--border);padding-top:6px}.details details.roll summary{cursor:pointer;color:var(--muted);font-size:12.5px}.details .extra{margin-top:8px}.timed-info{margin-top:6px}.help{position:relative;display:inline-block;margin-left:6px;vertical-align:1px}.help-btn{width:17px;height:17px;border-radius:50%;border:1px solid var(--border);background:var(--surface2);color:var(--muted);font:600 11px/1 var(--font);cursor:help;padding:0}.help-btn:hover,.help-btn:focus{border-color:var(--accent);color:var(--text);outline:none}.help-pop{display:none;position:absolute;z-index:20;left:50%;top:22px;transform:translate(-50%);width:min(340px,80vw);background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:9px 11px;box-shadow:0 8px 24px #142d5a38;font:400 12.5px/1.45 var(--font);color:var(--text);text-transform:none;letter-spacing:normal}.help:hover .help-pop,.help:focus-within .help-pop{display:block}@media (max-width: 700px){.help-pop{left:0;transform:none}}.chargen .cg-title{font-family:var(--display);font-size:22px;margin:0}.class-picker{gap:6px;margin-top:8px}.class-picker .wld{font-size:13px;padding:5px 12px}.class-picker .wld.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.cg-entries{margin:6px 0;padding-left:22px;font-size:13px}.mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px 14px;margin-top:6px}.mini-hist{border:1px solid var(--grid);border-radius:8px;padding:6px 8px 2px;min-width:0}.mini-title{font-weight:600;font-size:13px}.mini-title small{font-weight:400;color:var(--muted)}.mini-note{font-size:11.5px;color:var(--muted)}.cg-h{margin:10px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.cg-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px 10px}.cg-field{display:grid;grid-template-columns:1fr 52px;grid-template-rows:auto auto;align-items:center;column-gap:6px;font-size:12.5px}.cg-field>span{grid-column:1}.cg-field input{grid-column:2;grid-row:1 / span 2;width:52px}.cg-field .cg-note{grid-column:1;font-size:11px;color:var(--muted);min-height:1em}.cg-field.na>span{color:var(--muted);text-decoration:line-through}input.cg-in.improbable{border-color:var(--bad)!important;background:color-mix(in srgb,var(--bad) 22%,var(--surface));color:var(--text)}input.cg-in.unlikely{border-color:var(--warn)!important;background:color-mix(in srgb,var(--warn) 14%,var(--surface))}.improbable,.impossible,.cg-note.improbable,.cg-note.impossible{color:var(--bad)!important;font-weight:600}.unlikely,.cg-note.unlikely{color:var(--warn)!important}tr.row-improbable td:first-child,tr.row-impossible td:first-child{color:var(--bad);font-weight:600}.cg-result{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}.cg-big{font-size:15px}.cg-big b{font-size:22px;font-variant-numeric:tabular-nums}.cg-classes tr.on td{color:var(--text);font-weight:600}.cg-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:14px;margin-top:6px}.chart .iso-halo{stroke:#fff;stroke-opacity:.55;stroke-width:3.5}.chart .iso{stroke:#000;stroke-opacity:.85;stroke-width:1.4;stroke-dasharray:4 3}.chart .iso-label{font-size:10.5px!important;font-weight:600;fill:#000!important;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.legend .toggle-item{cursor:pointer;user-select:none;border-radius:4px;padding:1px 4px}.legend .toggle-item:hover{background:var(--surface2)}.legend .toggle-item.off{opacity:.4;text-decoration:line-through}.btn.collapse.on{background:color-mix(in srgb,var(--accent) 22%,var(--surface2));border-color:var(--accent);color:var(--text);box-shadow:inset 0 2px 5px #00000059;transform:translateY(1px)}
