:root{--bg:#f6f4f0;--panel:#fff;--ink:#1a1a22;--muted:#6b6b78;--line:#dcd8cf;--accent:#5b4bdb;--accent-ink:#fff;--parch:#f3ead8;--parch-line:#b9a67a;--ok:#1f7a4d;--warn:#b26a00;--bad:#b3261e;color:var(--ink);background:var(--bg);font-family:Inter,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#14141a;--panel:#1e1e27;--ink:#ecebf2;--muted:#9a9aa8;--line:#34343f;--accent:#8b7dff;--parch:#2a2519;--parch-line:#6b5d3a;--ok:#4cc38a;--warn:#f0a63a;--bad:#ff7b72}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0}h1{text-transform:uppercase;letter-spacing:.02em;margin:.5rem 0 1rem;font-size:2rem}h2,h3,h4{margin:.4rem 0}.accent{color:var(--accent)}.muted{color:var(--muted)}.ok{color:var(--ok)}a{color:var(--accent)}.topbar{background:#0d0d12;flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.75rem 1rem;display:flex}.topbar a{color:#ddd;border-radius:6px;padding:.25rem .5rem;text-decoration:none}.topbar a.active{background:var(--accent);color:#fff}.topbar .brand{color:#fff;font-size:1.1rem;font-weight:800}.topbar nav{flex-wrap:wrap;gap:.5rem;display:flex}.page{max-width:1200px;margin:0 auto;padding:1rem}.foot{text-align:center;color:var(--muted);padding:2rem 1rem;font-size:.8rem}.hero{text-align:center;padding:4rem 0}.hero h1{font-size:3rem}.row{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.3rem 0;display:flex}.row.between{justify-content:space-between}.row.center{justify-content:center}.row.end{justify-content:flex-end}.cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.8rem;display:grid}.card{background:var(--panel);border:1px solid var(--line);color:inherit;border-radius:10px;align-items:center;gap:.8rem;padding:1rem;text-decoration:none;display:flex}.card:hover{border-color:var(--accent)}.card small{color:var(--muted);display:block}.card-icon{font-size:1.8rem}.badge{background:var(--line);border-radius:999px;margin-left:.4rem;padding:.1rem .4rem;font-size:.7rem;font-style:normal}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;border-radius:8px;padding:.4rem .8rem;font-size:.9rem;text-decoration:none}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.danger{color:var(--bad)}.linklike{color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;padding:0}input,select,textarea{font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;min-width:0;padding:.45rem .6rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent)}textarea{width:100%}.wide{flex:1;min-width:160px}.narrow{width:70px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-bottom:1rem;padding:1rem}.field{flex-direction:column;gap:.25rem;margin:.5rem 0;display:flex}.field>span{font-size:.85rem;font-weight:600}.field input,.field select{width:100%}.grid2{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.check{align-items:center;gap:.4rem;display:inline-flex}.inline{align-items:center;gap:.3rem;font-size:.85rem;display:inline-flex}.back{margin-bottom:.5rem;font-size:.9rem;display:inline-block}.editor{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.editor-side{position:sticky;top:1rem}.sticky{background:var(--bg);padding:.6rem 0;position:sticky;bottom:0}.feature{border:1px dashed var(--line);border-radius:8px;margin-bottom:.5rem;padding:.5rem}.chip-row{flex-wrap:wrap;gap:.3rem;margin-bottom:.3rem;display:flex}.chip{background:var(--line);border-radius:999px;align-items:center;gap:.2rem;padding:.1rem .3rem;font-size:.85rem;display:inline-flex}.chip button{cursor:pointer;color:var(--muted);background:0 0;border:0;padding:0 .2rem}.chips input{width:100%}.statblock{background:var(--parch);border:1px solid var(--parch-line);border-radius:10px;margin-bottom:1rem;padding:1rem 1.2rem;font-size:.92rem}.statblock h2{text-transform:uppercase;margin:0;font-size:1.5rem}.statblock h3{text-transform:uppercase;border-top:1px solid var(--parch-line);margin-top:1rem;padding-top:.5rem}.statblock p{margin:.35rem 0}.statblock-img{object-fit:cover;border-radius:6px;width:100%;max-height:220px;margin-top:.5rem}.sb-tier{font-style:italic;font-weight:700}.sb-summary{color:var(--muted);font-style:italic}.sb-stats{border-top:1px solid var(--parch-line);border-bottom:1px solid var(--parch-line);background:#ffffff14;margin:.5rem 0;padding:.3rem .5rem}.issues{gap:.3rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}.issues li{border-left:4px solid var(--line);border-radius:6px;padding:.35rem .6rem;font-size:.85rem}.issues b{text-transform:uppercase;margin-right:.3rem;font-size:.7rem}.issues .error{border-color:var(--bad)}.issues .warning{border-color:var(--warn)}.issues .info{border-color:var(--accent)}.list{gap:.5rem;margin-top:.8rem;display:grid}.list-item{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.7rem 1rem}.dashed{border:1px dashed var(--line);border-radius:10px;padding:1rem}.modal-bg{z-index:10;background:#00000080;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:12px;gap:.6rem;width:min(420px,92vw);padding:1.2rem;display:grid}.title-input{background:0 0;border:0;flex:1;padding:.2rem 0;font-size:1.6rem;font-weight:800}.encounter{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.picker{gap:.3rem;max-height:320px;margin:.5rem 0;display:grid;overflow:auto}.pick{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;padding:.3rem .5rem;display:flex}.verdict{border-width:2px}.verdict.under{border-color:var(--accent)}.verdict.balanced{border-color:var(--ok)}.verdict.over{border-color:var(--bad)}.headline{font-size:1.05rem;font-weight:700}.meter{background:var(--line);border-radius:999px;height:12px;overflow:hidden}.meter div{background:var(--accent);height:100%}.verdict.balanced .meter div{background:var(--ok)}.verdict.over .meter div{background:var(--bad)}.mini{border-collapse:collapse;width:100%;font-size:.85rem}.mini td{border-bottom:1px solid var(--line);padding:.2rem 0}.mini td:last-child{text-align:right}.mini .total td{font-weight:700}.toggles{gap:.3rem;margin-top:.6rem;font-size:.85rem;display:grid}@media (width<=860px){.editor,.encounter{grid-template-columns:1fr}.editor-side{position:static}.grid3{grid-template-columns:1fr 1fr}}.stage-tabs{flex-wrap:wrap;align-items:center;gap:.4rem;margin:.5rem 0;display:flex}.stage-tab{border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;border-radius:999px;padding:.4rem .8rem;font-size:.9rem}.stage-tab.active{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.stage-tab small{opacity:.8;margin-left:.3rem}.dot{background:var(--accent);border-radius:50%;width:.6rem;height:.6rem;display:inline-block}.dot.balanced{background:var(--ok)}.dot.over{background:var(--bad)}.fear{align-items:center;gap:.6rem;margin:0;padding:.4rem .8rem;display:flex}.fear-value{text-align:center;min-width:2ch;font-size:1.5rem;font-weight:800}.battle-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:start;gap:1rem;display:grid}.combatant{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:.5rem;padding:.9rem;display:grid}.combatant h3{margin:0}.combatant.defeated{opacity:.5}.combatant.defeated h3{text-decoration:line-through}.atk{margin:0;font-size:.85rem}.meter-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.pips{flex-wrap:wrap;gap:.25rem;display:flex}.pip{border:2px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;width:1.4rem;height:1.4rem;padding:0}.pip.on{background:var(--bad);border-color:var(--bad)}.meter-row:nth-of-type(2) .pip.on{background:var(--accent);border-color:var(--accent)}.chip.status{cursor:pointer;border:1px solid var(--warn);color:var(--ink);background:0 0;padding:.1rem .5rem}.counter{border-bottom:1px solid var(--line);padding:.15rem 0}.combatant details{font-size:.85rem}.avatar{object-fit:contain;background:#7f7f7f26;border-radius:8px;width:56px;height:56px}.grow{flex:1}.pick .thumb{object-fit:contain;width:28px;height:28px}.battle-layout{grid-template-columns:minmax(0,1.2fr) minmax(320px,1fr);align-items:start;gap:1.5rem;margin-top:1rem;display:grid}.battle-tracker{gap:.6rem;max-height:calc(100vh - 1rem);padding-right:.2rem;display:grid;position:sticky;top:.5rem;overflow:auto}.battle-cards h2,.battle-tracker h2{margin:0 0 .3rem}.foe{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:.4rem;padding:.7rem;display:grid}.foe .btn{padding:.2rem .6rem}.avatar.sm{width:32px;height:32px}.meter-row.stress .pip.on{background:var(--accent);border-color:var(--accent)}.hidden-box{margin-top:1.5rem}.hidden-foe{border:1px solid var(--line);opacity:.8;border-radius:10px;align-items:center;gap:.5rem;padding:.3rem .6rem;display:flex}@media (width<=860px){.battle-layout{grid-template-columns:1fr}.battle-tracker{max-height:none;position:static}}.foe{gap:.3rem;padding:.5rem .7rem}.foe header{margin:0}.vitals{flex-wrap:wrap;align-items:center;gap:.4rem 1rem;display:flex}.vital{align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.vital .pips{gap:.15rem}.foe .pip{border-width:1.5px;border-radius:4px;width:1rem;height:1rem}.vital.stress .pip.on{background:var(--accent);border-color:var(--accent)}.foe .statuses .row{flex-wrap:nowrap;margin:.1rem 0}.foe .statuses select,.foe .statuses input{padding:.25rem .4rem;font-size:.8rem}.foe summary{cursor:pointer;font-size:.8rem}.type-card{cursor:pointer;outline-offset:2px;border-radius:12px;outline:2px solid #0000}.type-card:hover{outline-color:var(--line)}.type-card.selected,.type-card:focus-visible{outline-color:var(--accent)}.foe-name{background:0 0;border:1px solid #0000;border-radius:6px;flex:1;min-width:0;padding:.1rem .3rem;font-size:1rem;font-weight:700}.foe-name:hover{border-color:var(--line)}.foe-name:focus{border-color:var(--accent);background:var(--panel);outline:none}.stage-tab[draggable=true]{cursor:grab}.stage-tab.dragging{opacity:.4}.stage-tab.drop-target{box-shadow:-4px 0 0 var(--accent)}.title-input.sm{flex:none;width:14rem;font-size:1.2rem}.default-party{border-color:var(--accent)}.foe-name{text-overflow:ellipsis}.sheet{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.traits{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.trait{gap:.2rem;display:grid}.trait input{text-align:center;width:100%;font-size:1.1rem}.stat-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.6rem;display:grid}.stat{border:1px solid var(--line);text-align:center;border-radius:10px;padding:.4rem;display:grid}.stat small{color:var(--muted);text-transform:uppercase;font-size:.65rem}.stat b{font-size:1.4rem}.sheet-vitals{z-index:1;position:sticky;top:.5rem}.meter-row.hope .pip.on{background:var(--ok);border-color:var(--ok)}.card-row{border:1px dashed var(--line);border-radius:8px;margin-bottom:.5rem;padding:.5rem}.gear{border-bottom:1px solid var(--line);gap:.3rem;padding:.4rem 0;display:grid}.gear-label{min-width:6rem}.gear-fields{gap:.3rem;display:grid}.level-up{border-color:var(--ok)}.issues .warning{color:var(--warn)}@media (width<=860px){.sheet{grid-template-columns:1fr}.sheet-vitals{position:static}}.sheet-vitals .meter-row{justify-content:flex-start;gap:.8rem;margin:.5rem 0}.sheet-vitals .meter-row>span{min-width:7.5rem}.modal.wide{flex-direction:column;width:min(760px,94vw);max-height:88vh;display:flex}.library-list{gap:.4rem;padding-right:.2rem;display:grid;overflow:auto}.lib-card{border:1px solid var(--line);border-radius:8px;padding:.4rem .6rem}.lib-card.owned{opacity:.55}.lib-text{border-top:1px dashed var(--line);margin-top:.3rem;font-size:.85rem}.lib-text p{margin:.3rem 0}.party-panel{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.8rem;margin:.5rem 0 1rem;display:grid}.pc{background:var(--panel);border:1px solid var(--line);border-radius:12px;align-content:start;gap:.55rem;padding:.75rem .8rem;display:grid}.pc header{gap:.1rem;display:grid}.pc-name{justify-content:space-between;align-items:baseline;gap:.5rem;font-size:1.05rem;display:flex}.pc-sheet{color:var(--muted);font-size:.75rem;text-decoration:none}.pc-sheet:hover{color:var(--accent);text-decoration:underline}.pc-stats{grid-template-columns:1fr 1fr 2fr;gap:.35rem;display:grid}.pc-stats .stat{padding:.3rem .2rem}.pc-stats .stat b{white-space:nowrap;font-size:1.15rem;line-height:1.2}.pc-traits{border:1px solid var(--line);border-radius:10px;grid-template-columns:repeat(6,1fr);display:grid;overflow:hidden}.pc-traits span{text-align:center;border-right:1px solid var(--line);padding:.25rem 0;display:grid}.pc-traits span:last-child{border-right:0}.pc-traits small{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.58rem}.pc-traits b{font-size:.95rem}.pc .statuses .row{flex-wrap:nowrap;margin:.1rem 0}.pc .statuses select,.pc .statuses input{min-width:0;padding:.25rem .4rem;font-size:.8rem}.pc .statuses .chip-row:empty{display:none}.pc,.pc>*{min-width:0}.pc-stats{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr)}.pc-traits{grid-template-columns:repeat(6,minmax(0,1fr))}.pc-stats .stat b{font-size:1.05rem}.sheet-vitals{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid;position:static}.sheet-vitals .stat-grid{grid-template-columns:repeat(3,1fr);margin-bottom:0}.sheet-vitals .vitals-trackers p{margin:0 0 .2rem}@media (width<=860px){.sheet-vitals{grid-template-columns:1fr}}.party-list{gap:.3rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.party-list li{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:baseline;gap:.6rem;padding:.35rem .6rem;display:flex}
