:root{--bg:#101319;--panel:#191e27;--panel2:#212834;--line:#333b49;--ink:#ecedf2;--muted:#a9b3c3;--accent:#bf4a61;--gold:#ecc782;--radius:12px;color-scheme:dark;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}a{color:var(--gold);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--accent);border:1px solid transparent;color:#fff;padding:.62rem 1.1rem;border-radius:7px;font-weight:600;line-height:1.35;cursor:pointer;text-decoration:none}button:hover,.button:hover{filter:brightness(1.13);text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:var(--panel2);border-color:var(--line);color:var(--ink)}.ghost{background:transparent;border-color:var(--line);color:var(--muted)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.topbar{min-height:82px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:16px 4%;gap:20px;background:#14181f}.brand{display:flex;gap:12px;align-items:center;letter-spacing:3px;color:var(--ink);font-weight:700;font-size:1.1rem}.brand small{display:block;color:var(--muted);font-size:.75rem;letter-spacing:2px}.brand-mark{background:#802d40;border:1px solid #b65366;border-radius:6px;padding:2px 12px;font:2rem Georgia,serif;color:var(--gold)}.topbar nav{display:flex;align-items:center;gap:24px;font-size:.9rem}.topbar nav a{color:var(--muted)}.topbar form{margin:0}.layout{display:flex;min-height:calc(100vh - 160px)}main{padding:40px;min-width:0;flex:1;max-width:1540px}.wide{width:100%;max-width:1400px;margin:0 auto}.sidebar{width:245px;flex-shrink:0;background:#14181f;border-right:1px solid var(--line);padding:32px 24px}.sidebar h2{font-size:1.3rem;margin:24px 0 12px;overflow-wrap:anywhere}.sidebar nav{display:grid;gap:5px;margin:28px -10px}.sidebar nav a{display:block;padding:10px;border-radius:6px;color:var(--muted);font-size:.94rem}.sidebar nav a:hover{background:var(--panel2);text-decoration:none;color:#fff}.back,.small,small{font-size:.875rem}.muted{color:var(--muted)}h1,h2,h3{line-height:1.17;font-weight:500;margin:0 0 16px}h1,h2{font-family:Georgia,"Times New Roman",serif}h1{font-size:2.65rem;letter-spacing:-.04em}h2{font-size:1.55rem}h3{font-size:1.15rem;font-weight:650}p{margin:.6rem 0 1rem}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.eyebrow{letter-spacing:.14em;font-size:.78rem;color:var(--gold);font-weight:700;margin:0 0 10px}.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin:10px 0 32px}.pagehead .muted{max-width:800px}.pagehead .actions{justify-content:flex-end;flex-wrap:wrap}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.sectionhead h2{margin:0}.panel{padding:26px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.section{margin-top:24px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(310px,100%),1fr));gap:20px}.campaign-card{padding:28px;border:1px solid var(--line);border-top:3px solid #9d344a;border-radius:var(--radius);background:linear-gradient(135deg,#24202a,#191e27 75%);min-height:265px;display:flex;flex-direction:column}.card-top{display:flex;align-items:center;gap:10px;margin-bottom:24px}.card-number{margin-left:auto;color:#a78696;font:1.8rem Georgia,serif}.campaign-card h2{font-size:1.85rem}.campaign-card h2 a{color:var(--ink)}.campaign-card p{color:var(--muted)}.card-bottom{margin-top:auto;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;font-size:.875rem}.badge{display:inline-block;padding:3px 9px;background:#29313f;border:1px solid #3e4858;color:#c8d2e2;border-radius:5px;font-size:.75rem;line-height:1.5;white-space:normal}.badge.gold{color:var(--gold);background:#393026;border-color:#67502f}.gold-text{color:var(--gold)}.danger{color:#ffb5c4;background:#4d2933}.character-card{display:flex;align-items:center;gap:20px;color:var(--ink)}.character-card:hover,.wiki-card:hover,.admin-link:hover{text-decoration:none;border-color:#946b45}.character-card p{margin:0 0 10px}.monogram{width:64px;height:72px;display:grid;place-items:center;background:#342330;color:var(--gold);border:1px solid #684358;font:2.4rem Georgia,serif;border-radius:8px}.two-col{display:grid;grid-template-columns:1.05fr 1fr;gap:24px}.listrow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.listrow:last-child{border-bottom:0}.block{display:block}.empty{padding:40px;border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted)}.field{margin:0 0 20px;min-width:0}.field label,label{display:block;font-weight:550;font-size:.9rem;margin:0 0 7px}.field small,.helptext{display:block;color:var(--muted);font-size:.82rem;margin-top:6px}input,select,textarea{background:#11161f;border:1px solid #414b5c;color:var(--ink);border-radius:6px;padding:9px 12px;max-width:100%;width:100%}textarea{resize:vertical;min-height:100px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);vertical-align:middle;margin-right:7px}select[multiple]{min-height:130px}.form-panel{max-width:960px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.field:has(textarea){grid-column:1/-1}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}.inline{display:inline-flex;gap:8px;align-items:center}.inline input[type=number]{width:85px}.small-button{font-size:.875rem;padding:.5rem .75rem}.errorlist{color:#ffb2be;list-style:none;padding:0;margin:8px 0;font-size:.9rem}.invalid input{border-color:#ffb2be}.message{padding:14px 18px;border:1px solid #715236;background:#30291f;border-radius:8px;margin-bottom:20px}.message.error{background:#38232b;border-color:#865063}.message.success{background:#203432;border-color:#477169}.narrow{max-width:520px;margin:40px auto}.auth-layout{display:grid;grid-template-columns:1.1fr 1fr;max-width:1000px;margin:50px auto;gap:80px;align-items:center}.auth-layout h1{font-size:4rem;line-height:1.06}.auth-layout .panel{padding:36px}.auth-layout button{width:100%}.auth-emblem{font:8rem Georgia,serif;color:#765165;line-height:1.1;letter-spacing:-12px}.formset-row{display:flex;flex-wrap:wrap;gap:16px;border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px;background:#151a22}.formset-row p{flex:1;min-width:130px;margin:0}.formset-row p:last-child{flex:0 0 70px;min-width:70px}.effect-row p{flex:1 1 150px}.savebar{position:sticky;bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:16px;background:#252d3a;border:1px solid #475166;border-radius:9px;padding:16px 22px;margin-top:24px;z-index:3}.abilities{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin-bottom:24px}.ability{display:flex;flex-direction:column;align-items:center;padding:18px 8px;border-right:1px solid var(--line);gap:3px}.ability:last-child{border:0}.ability>span{color:var(--muted);font-size:.9rem}.ability .calc{font:2.2rem Georgia,serif}.ability small{border:1px solid var(--line);padding:0 13px;border-radius:4px;min-width:42px;text-align:center}.calc{padding:2px 5px;background:transparent;border:0;color:var(--ink);font-weight:650;font-size:1.08rem;border-bottom:1px dotted #647187;border-radius:0;cursor:help;white-space:nowrap}.calc.subtle{font-size:.8rem;color:var(--muted);font-weight:400}.combat-strip{display:grid;grid-template-columns:1.55fr repeat(5,1fr);gap:0;background:#181e27;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:28px}.combat-strip>div{padding:20px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.combat-strip small{color:var(--muted);margin-bottom:7px;font-size:.8rem}.combat-strip .calc{font-size:1.7rem}.combat-strip .subtle{font-size:.78rem}.combat-strip .unit{font-size:1rem}.hp-block{background:#2d2029;border-radius:var(--radius) 0 0 var(--radius);border-right:1px solid #553344}.hp-block strong{font-size:2rem;line-height:1.5}.hp-block strong span{font-size:1.2rem;color:var(--muted)}.tooltip{position:fixed;max-width:min(340px,calc(100vw - 24px));background:#e2e7ef;color:#18212f;font-size:.875rem;padding:12px 16px;border-radius:8px;box-shadow:0 5px 20px #0006;z-index:100;pointer-events:none;overflow-wrap:anywhere}.tabs{display:flex;border-bottom:1px solid var(--line);margin:0 0 25px;gap:3px;overflow-x:auto}.tabs button{color:var(--muted);background:transparent;border-radius:0;border-bottom:3px solid transparent;white-space:nowrap;padding:12px 18px;font-size:.9rem}.tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:#fff}.skill{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #2a3340;padding:10px 0}.skill:last-child{border-bottom:0}.skill>span{display:flex;align-items:center;gap:10px;font-size:.95rem}.skill small{font-size:.75rem}.proficiency{width:9px;height:9px;border:1px solid #677489;border-radius:100%;display:inline-block;flex-shrink:0}.p1{background:#8aacc9}.p2{background:var(--gold);border-color:var(--gold);box-shadow:0 0 0 2px #7c6540}.slotrow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.slotrow p{margin:0}details summary{cursor:pointer;font-size:1.05rem;font-weight:600;padding:8px 0}details[open]>summary{margin-bottom:16px}.entry,.catalog-row{border-bottom:1px solid var(--line);padding:12px 0}.catalog-row summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.catalog-row summary strong{font-size:1.1rem}.entry .badge{margin:0 4px}.prose{line-height:1.85;overflow-wrap:anywhere}.prose p:last-child{margin-bottom:0}.filters{display:flex;gap:12px;margin:0 0 24px}.filters input{flex:2}.filters select{flex:1}.filters button{flex-shrink:0}.map{display:block;width:100%;max-height:500px;object-fit:contain;border-radius:6px}.member{padding:20px 0;border-bottom:1px solid var(--line)}.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.admin-metrics .panel{color:var(--ink)}.admin-metrics small{display:block;color:var(--muted)}.admin-metrics strong{display:block;font:2.5rem Georgia,serif;margin-top:10px}.admin-link{color:var(--ink)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);font-size:.9rem}th{color:var(--muted);font-weight:550}td input{min-width:65px;width:85px}td input[name^=xp_]{min-width:120px}dialog{max-width:620px;width:calc(100% - 32px);background:var(--panel);color:var(--ink);border:1px solid #536075;border-radius:14px;padding:28px;max-height:90vh;overflow:auto}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.check{font-weight:400;padding:15px 0}.check input{float:left;margin-top:5px}.skip{position:absolute;top:-100px;left:20px;z-index:999;background:#fff;color:#000;padding:12px}.skip:focus{top:12px}footer{text-align:center;padding:25px;color:#8692a5;font-size:.78rem;border-top:1px solid var(--line)}[hidden]{display:none!important}@media(max-width:1150px){main{padding:28px}.sidebar{width:205px;padding:24px 18px}.pagehead{flex-direction:column}.combat-strip{grid-template-columns:repeat(3,1fr)}.hp-block{border-radius:12px 0 0 0}.two-col{grid-template-columns:1fr}.cards{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}}@media(max-width:750px){.layout{display:block}.sidebar{width:auto;border-right:0;border-bottom:1px solid var(--line);padding:18px 22px}.sidebar h2{margin:10px 0;font-size:1.3rem}.sidebar nav{display:flex;flex-wrap:wrap;margin:12px -10px 0;gap:0}.sidebar>.small,.sidebar>.badge{display:none}.topbar{padding:14px 20px;flex-wrap:wrap;gap:14px}.topbar nav{gap:15px;flex-wrap:wrap}.topbar nav .username{display:none}main{padding:24px 18px}.wide{padding:24px 18px}.pagehead{margin-bottom:24px;gap:16px}h1{font-size:2.2rem}.panel{padding:20px}.abilities{grid-template-columns:repeat(3,1fr)}.ability:nth-child(3){border-right:0}.ability:nth-child(-n+3){border-bottom:1px solid var(--line)}.combat-strip>div{padding:14px 5px}.combat-strip small{font-size:.75rem}.form-grid{grid-template-columns:1fr}.filters{flex-wrap:wrap}.filters input{flex-basis:100%}.filters select{min-width:140px}.admin-metrics{grid-template-columns:1fr 1fr;gap:12px}.auth-layout{grid-template-columns:1fr;gap:25px;margin:20px 0}.auth-layout h1{font-size:3rem}.auth-layout .auth-emblem{display:none}.auth-layout .panel{padding:25px}.slotrow{align-items:flex-start;flex-wrap:wrap}.savebar .muted{display:none}.savebar{justify-content:flex-end}.sectionhead{flex-wrap:wrap}.listrow{align-items:flex-start;flex-wrap:wrap}.card-bottom{flex-wrap:wrap}.formset-row{display:grid;grid-template-columns:1fr 1fr}.formset-row p{min-width:0}.entry .actions{align-items:flex-start}.catalog-row summary{flex-wrap:wrap}}
@media print{body{background:white;color:black}.topbar,.sidebar,footer,.tabs,button,.savebar,.actions,dialog,form,details:not([open]){display:none!important}.layout,main{display:block;width:100%;padding:0}.panel,.combat-strip,.abilities,.hp-block{background:white;color:black;border-color:#999}.calc{display:inline!important;color:black;border:0;padding:0}.muted,small{color:#444}h1,h2,h3{color:black}.two-col{display:block}.panel{break-inside:avoid;margin:12px 0}.pagehead{margin-bottom:12px}[data-panel][hidden]{display:block!important}[data-panel=story],.message{display:none!important}.ability{padding:8px}.abilities{grid-template-columns:repeat(6,1fr)}.combat-strip{grid-template-columns:repeat(6,1fr)}.panel .entry{display:block!important}.entry>*{display:block!important}}

.grant-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(90px,.6fr) repeat(2,minmax(140px,1fr)) minmax(60px,.4fr);gap:16px}.grant-row p{min-width:0}.grant-row label{display:block}.grant-row select{width:100%}@media(max-width:850px){.grant-row{grid-template-columns:1fr 1fr}}@media(max-width:500px){.grant-row{grid-template-columns:1fr}}

#id_required_classes{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;max-height:320px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:7px}#id_required_classes input[type=checkbox]{width:auto;margin-right:8px}.brand-mark{font-size:1.6rem;letter-spacing:0}.brand{letter-spacing:1px}
/* Rich descriptions and local editor */
.rich-content{overflow-wrap:anywhere;line-height:1.65}.rich-content img{max-width:100%;height:auto;display:block;margin:1rem 0}.rich-content p{margin:.65em 0}.rich-content blockquote{border-left:3px solid #b49b70;margin:1em 0;padding:.3em 1em}.rich-content ul,.rich-content ol{padding-left:1.7em}.rich-editor{border:1px solid #6d6254;border-radius:8px;overflow:hidden;width:100%;min-width:0}.rich-toolbar{display:flex;flex-wrap:wrap;gap:5px;padding:8px;background:#211e1a}.rich-toolbar button,.rich-toolbar select{font:inherit;font-size:12px;padding:6px;width:auto;min-height:32px}.rich-toolbar input[type=color]{width:38px;min-width:38px;padding:2px;height:32px}.rich-input{padding:14px;min-height:180px;max-height:650px;overflow:auto;background:#151411;color:#eee;text-align:left}.rich-input:focus{outline:2px solid #b49b70;outline-offset:-2px}.rich-editor>p{padding:0 12px}.cookie-notice{position:fixed;bottom:16px;left:16px;right:16px;max-width:850px;margin:auto;z-index:1000;background:#24211c;color:#eee;border:1px solid #b49b70;border-radius:10px;padding:16px;box-shadow:0 4px 32px #0009}.cookie-notice[hidden]{display:none}.cookie-notice .actions{margin-top:8px}.cookie-table{width:100%;border-collapse:collapse}.cookie-table td,.cookie-table th{text-align:left;padding:10px;border-bottom:1px solid #63594a}@media(max-width:600px){.rich-toolbar{gap:3px}.rich-toolbar button{font-size:11px}.cookie-notice{bottom:8px;left:8px;right:8px;padding:12px}.cookie-table{font-size:12px}}@media print{.cookie-notice,.rich-toolbar{display:none!important}.rich-content img{max-height:450px;object-fit:contain}.rich-content{color:#111}}
/* UI 1: campaign navigation */
#campaign-sidebar[hidden],.sidebar-backdrop[hidden],#sidebar-toggle[hidden]{display:none!important}.sidebar-backdrop{display:none}#sidebar-toggle{white-space:nowrap;padding:9px 12px;flex-shrink:0}#sidebar-toggle:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
@media(max-width:800px){#campaign-sidebar{position:fixed;left:0;top:0;bottom:0;width:min(300px,80vw);overflow:auto;z-index:101;padding:28px 22px;box-shadow:12px 0 40px #0008}.sidebar-backdrop{display:block;position:fixed;inset:0;width:100%;height:100%;border:0;border-radius:0;background:#0009;z-index:100}.topbar{flex-wrap:wrap;gap:12px}.topbar .brand{flex:1}.topbar>nav{width:100%;flex-wrap:wrap}#sidebar-toggle{position:relative;z-index:102}}
/* Rich editor: explicit image alignment and shared table presentation. */
.rich-content img[data-align=left]{margin-left:0;margin-right:auto}.rich-content img[data-align=center]{margin-left:auto;margin-right:auto}.rich-content img[data-align=right]{margin-left:auto;margin-right:0}
.rich-content [style*="text-align:center"]>img:not([data-align]){margin-left:auto;margin-right:auto}.rich-content [style*="text-align:right"]>img:not([data-align]){margin-left:auto;margin-right:0}.rich-content [style*="text-align:left"]>img:not([data-align]){margin-left:0;margin-right:auto}
.rich-content .rich-table-wrap{width:100%;max-width:100%;overflow-x:auto;margin:1rem 0}.rich-content table{width:100%;border-collapse:collapse;table-layout:fixed;white-space:normal;margin:.5rem 0}.rich-content .rich-table-wrap table{min-width:360px}.rich-content th,.rich-content td{border:1px solid #78808c;padding:8px;vertical-align:top;overflow-wrap:anywhere;white-space:normal;min-width:50px;font-size:inherit;color:inherit}.rich-content th{font-weight:700;background:#80808018}.rich-content caption{caption-side:top;text-align:left;font-weight:700}.rich-table-dialog input[type=number]{width:100%;margin:8px 0 14px}.rich-table-dialog .check{display:flex;align-items:center;gap:8px}.rich-table-dialog input[type=checkbox]{flex-shrink:0}.rich-table-dialog h2{font-size:1.5rem}.rich-table-dialog .actions{justify-content:flex-end}.rich-input th,.rich-input td{cursor:text}.rich-input th:empty::after,.rich-input td:empty::after{content:'\00a0'}
@media print{.rich-content .rich-table-wrap{overflow:visible}.rich-content .rich-table-wrap table{min-width:0}.rich-content thead{display:table-header-group}.rich-content tr{break-inside:avoid}.rich-table-dialog{display:none!important}}

/* Support correspondence is plain text, including on narrow screens. */
.support-text{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;font-family:inherit}
