:root{--bg: #0e0b07;--panel: #1b140c;--panel-2: #241a0f;--ink: #ece0c8;--muted: #b29a70;--gold: #c9a24b;--gold-bright: #e6c878;--red: #9a2b2b;--red-bright: #c0453b;--line: #4a3a22;--ok: #7fb069;--err: #c0453b;--radius: 8px;--display: "Cinzel", "Trajan Pro", Georgia, serif;--body: "EB Garamond", "Iowan Old Style", "Palatino Linotype", Georgia, serif}*{box-sizing:border-box}body{margin:0;font-family:var(--body);font-size:18px;color:var(--ink);line-height:1.55;background-color:var(--bg);background-image:radial-gradient(1200px 600px at 50% -10%,rgba(201,162,75,.1),transparent 60%),radial-gradient(900px 700px at 100% 100%,rgba(154,43,43,.08),transparent 55%),repeating-linear-gradient(45deg,rgba(0,0,0,.18) 0 2px,transparent 2px 4px);background-attachment:fixed}@supports (-webkit-touch-callout: none){body{background-attachment:scroll}}.nav-toggle{display:none;background:transparent;border:1px solid var(--line);color:var(--gold-bright);font-size:1.25rem;line-height:1;padding:6px 12px;min-height:0;border-radius:4px;cursor:pointer;text-shadow:none}.nav-toggle:hover{border-color:var(--gold);background:transparent}h1,h2,h3,h4,.brand{font-family:var(--display);font-weight:700;line-height:1.2}h1{font-size:1.9rem;margin:0 0 6px;color:var(--gold-bright);letter-spacing:1px}h2{font-size:1.4rem;color:var(--gold);letter-spacing:.5px;border-bottom:1px solid var(--line);padding-bottom:6px}h3{font-size:1.15rem;color:var(--gold);letter-spacing:.4px}h4{font-size:1.05rem;color:var(--gold-bright)}a{color:var(--gold-bright);text-decoration:none}a:hover{text-decoration:underline}header.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 26px;background:linear-gradient(180deg,#241a0e,#160f08);border-bottom:2px solid var(--gold);box-shadow:0 2px #3a2c18,0 6px 18px #00000080}header.topbar .brand{font-size:1.5rem;letter-spacing:2px;color:var(--gold-bright);text-shadow:0 1px 0 #000,0 0 14px rgba(201,162,75,.35)}header.topbar .brand:before{content:"✧ ";color:var(--gold)}header.topbar nav{margin-left:auto}header.topbar nav a{margin-left:20px;color:var(--muted);font-variant:small-caps;letter-spacing:.5px}header.topbar nav a:hover{color:var(--gold-bright)}main{max-width:1000px;margin:0 auto;padding:30px 24px 90px}.crumbs{color:var(--muted);font-size:.95rem;margin-bottom:18px;font-variant:small-caps;letter-spacing:.5px}.card{background:linear-gradient(180deg,var(--panel),#160f08);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;margin-bottom:16px;box-shadow:inset 0 0 0 1px #c9a24b1f,0 6px 16px #00000073;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.campaign-card{overflow:hidden;display:flex;flex-direction:column}.card-cover{display:block;width:calc(100% + 44px);height:150px;object-fit:cover;margin:-18px -22px 14px;border-bottom:2px solid var(--gold);flex-shrink:0}.cc-header{display:flex;align-items:flex-start;gap:8px;margin-bottom:4px}.cc-title{flex:1;min-width:0;font-weight:600;color:var(--ink);text-decoration:none;font-size:1rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cc-title:hover{color:var(--gold-bright)}.cc-actions{flex-shrink:0;display:flex;gap:6px;align-items:center;padding-top:2px}.cc-meta{font-size:.82rem;color:var(--muted);margin-bottom:8px}.cc-desc{font-size:.85rem;color:var(--muted);margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cc-sessions{border-top:1px solid var(--line);padding-top:10px;margin-top:6px;display:flex;flex-direction:column;gap:5px;flex:1}.cc-session{display:flex;align-items:center;gap:8px}.cc-session-title{flex:1;min-width:0;font-size:.82rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none}.cc-session-title:hover{color:var(--gold-bright)}.cc-status{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 7px;border-radius:10px;flex-shrink:0}.cc-status.complete{background:#0f2a1a;color:#56d364}.cc-status.failed{background:#2a1010;color:var(--red-bright)}.cc-status.cancelled{background:#21262d;color:var(--muted)}.cc-status.uploaded{background:var(--panel-2);color:var(--muted)}.cc-status.working{background:#1a2a3a;color:#58a6ff}.cc-footer{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}.cc-discord{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;font-size:.8rem}.cover{display:block;width:100%;max-height:260px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line)}label{display:block;font-size:.85rem;color:var(--muted);margin:10px 0 4px;font-variant:small-caps;letter-spacing:.6px}input,select,textarea{width:100%;background:#120c06;border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:10px 12px;font-size:1rem;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 2px #c9a24b33}textarea{min-height:80px;resize:vertical}input[type=file]{padding:8px;color:var(--muted)}button,.btn{display:inline-block;background:linear-gradient(180deg,var(--gold-bright),#a07d30);color:#1a1207;border:1px solid #7a5e22;border-radius:6px;padding:10px 16px;font-size:.95rem;font-weight:700;font-family:var(--body);cursor:pointer;letter-spacing:.3px;text-shadow:0 1px 0 rgba(255,255,255,.25)}button:hover,.btn:hover{background:linear-gradient(180deg,#f0d489,#b68c36);text-decoration:none}button.ghost,.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--muted);text-shadow:none}button.ghost:hover,.btn.ghost:hover{border-color:var(--gold);color:var(--gold-bright);background:transparent}button.danger,.btn.danger{background:transparent;border:1px solid var(--red);color:var(--red-bright);text-shadow:none}button.danger:hover,.btn.danger:hover{background:var(--red);color:#f3e6d2}button:disabled{opacity:.5;cursor:not-allowed}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.muted{color:var(--muted)}.pill{display:inline-block;font-size:.72rem;text-transform:uppercase;letter-spacing:.8px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.pill.complete{color:var(--ok);border-color:var(--ok)}.pill.failed{color:var(--err);border-color:var(--err)}.pill.working{color:var(--gold-bright);border-color:var(--gold)}.error{color:var(--err);margin:10px 0;min-height:1.2em}.progress{background:#120c06;border-radius:999px;height:12px;overflow:hidden;border:1px solid var(--line)}.progress>span{display:block;height:100%;background:linear-gradient(90deg,#a07d30,var(--gold-bright));width:0;transition:width .4s ease}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.tabs button{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);border-radius:0;padding:8px 14px;font-variant:small-caps;letter-spacing:.5px;text-shadow:none}.tabs button:hover{background:transparent;color:var(--gold-bright)}.tabs button.active{color:var(--gold-bright);border-bottom-color:var(--gold)}.scene{border-left:3px solid var(--gold);padding:10px 16px 14px 18px;margin-left:0;margin-bottom:10px;background:var(--panel-2);border-radius:0 6px 6px 0}.scene .ts{font-size:.8rem;color:var(--muted);font-variant:small-caps;letter-spacing:.5px}.scene h3{margin:2px 0 6px}details.card>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}details.card>summary::-webkit-details-marker{display:none}details.card>summary:after{content:"▶";font-size:.6rem;opacity:.45;margin-left:4px}details[open].card>summary:after{content:"▼"}.entity{background:linear-gradient(170deg,#362214,#1e1208);border:1px solid #6b4d25;border-radius:var(--radius);padding:14px 16px;box-shadow:inset 0 1px #c9a24b38,0 4px 14px #0000008c}.entity h4{margin:0 0 6px}.entity .type{font-size:.7rem;text-transform:uppercase;color:var(--gold-bright);letter-spacing:.8px;opacity:.75}.entity-portrait{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:6px;border:1px solid var(--line);margin-bottom:10px}.rip-overlay{position:absolute;top:0;left:0;right:0;bottom:10px;display:flex;align-items:center;justify-content:center;font-family:Trebuchet MS,Georgia,serif;font-size:1.4rem;font-weight:700;letter-spacing:.1em;color:#ece0c8;text-shadow:0 2px 8px rgba(0,0,0,.85),0 0 3px rgba(0,0,0,.9);pointer-events:none}.entity-link{color:var(--gold-bright);border-bottom:1px dotted var(--gold);cursor:pointer}.entity-link:hover{background:#c9a24b29;text-decoration:none}.map-thumb{display:block;width:100%;height:170px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:zoom-in}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:1100;padding:24px;cursor:zoom-out}.lightbox img{max-width:95vw;max-height:92vh;object-fit:contain;border:1px solid var(--gold);border-radius:4px}.center-wrap{max-width:440px;margin:8vh auto}.or-divider{display:flex;align-items:center;text-align:center;color:var(--muted);margin:18px 0;font-variant:small-caps;letter-spacing:1px}.or-divider:before,.or-divider:after{content:"";flex:1;border-bottom:1px solid var(--line)}.or-divider span{padding:0 12px;font-size:.85rem}.md p{margin:.5em 0}.md h1,.md h2,.md h3{margin:.8em 0 .3em}.md ul{margin:.4em 0;padding-left:1.3em}.md strong{color:var(--gold-bright)}.sb-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;z-index:1000;align-items:center;justify-content:center;padding:20px}.sb-modal{background:#1f1509;border:2px solid var(--gold);border-radius:var(--radius);box-shadow:0 0 0 4px #3a2a0a,0 20px 60px #000c;max-width:560px;width:100%;max-height:85vh;overflow-y:auto;padding:20px 24px}.sb-modal.sb-wide{max-width:720px}.sb-modal .entity-portrait{max-height:55vh;object-fit:contain;background:#00000059;cursor:zoom-in}.sb-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.sb-close{font-size:.85rem;padding:3px 10px}.sb-ext-links{display:flex;gap:12px;font-size:.82rem}.sb-ext-links a{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:2px 8px}.sb-ext-links a:hover{color:var(--gold-bright);border-color:var(--gold)}.sb-loading,.sb-error{color:var(--muted);font-style:italic;text-align:center;padding:24px 0}.sb-error{color:var(--err)}.sb-notfound{padding:16px 0;text-align:center}.sb-notfound p{color:var(--muted);margin:6px 0;font-size:.95rem}.sb-picker{padding:8px 0 4px}.sb-block{font-size:.92rem;line-height:1.5}.sb-name{font-family:var(--display);font-size:1.3rem;color:#6b1f1f;margin:0 0 2px;letter-spacing:.3px}.sb-subtitle{color:var(--muted);font-style:italic;margin:0 0 8px;font-size:.88rem}.sb-rule{border:none;border-top:2px solid #6b1f1f;margin:10px 0}.sb-prop{margin:3px 0}.sb-prop strong{color:var(--ink)}.sb-abilities-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.sb-abilities{width:100%;border-collapse:collapse;text-align:center;margin:10px 0;font-size:.85rem}.sb-abilities th{color:#6b1f1f;font-weight:700;padding:2px 4px;font-family:var(--display);font-size:.78rem;letter-spacing:.4px}.sb-abilities td{color:var(--ink);padding:1px 4px}.sb-section{margin:10px 0 0}.sb-section p{margin:6px 0;font-size:.88rem}.sb-section p em{color:var(--gold-bright);font-style:normal;font-weight:600}.sb-section-title{font-family:var(--display);font-size:.95rem;color:#6b1f1f;margin:8px 0 4px;padding-bottom:3px;border-bottom:1px solid #6b1f1f;font-weight:700;letter-spacing:.4px}.sb-source{color:var(--muted);font-size:.75rem;font-style:italic;margin-top:14px;text-align:right}.codex-toggle{position:fixed;right:18px;bottom:18px;z-index:900;background:linear-gradient(180deg,#2e2213,#1c130a);color:var(--gold-bright);border:1px solid var(--gold);border-radius:999px;padding:10px 20px;font-family:var(--display);font-size:.85rem;letter-spacing:.08em;text-shadow:none;min-height:0;box-shadow:0 4px 18px #0000008c;transition:right .25s ease}.codex-toggle:hover{background:linear-gradient(180deg,#3a2c18,#241a0e);color:var(--gold-bright)}.codex-toggle.shifted{right:calc(min(360px,92vw) + 14px)}.codex-drawer{position:fixed;top:0;right:0;bottom:0;width:min(360px,92vw);z-index:950;background:linear-gradient(180deg,#1b140c,#120c06);border-left:2px solid var(--gold);box-shadow:-12px 0 34px #0009;transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;padding:16px 16px 12px}.codex-drawer.open{transform:translate(0)}.codex-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.codex-close{font-size:.85rem;padding:3px 10px;min-height:0}.codex-search{margin-bottom:10px;font-size:.95rem;padding:8px 12px}.codex-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.codex-chip{background:transparent;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:3px 12px;font-size:.74rem;font-variant:small-caps;letter-spacing:.5px;text-shadow:none;min-height:0}.codex-chip:hover{background:transparent;border-color:var(--gold);color:var(--gold-bright)}.codex-chip.active{border-color:var(--gold);color:var(--gold-bright);background:#c9a24b1f}.codex-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px;padding-right:4px}.codex-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--ink);padding:7px 8px;font-family:var(--body);font-size:.95rem;font-weight:400;text-shadow:none;min-height:0;cursor:pointer}.codex-row:hover{background:#c9a24b1a;border-color:var(--line)}.codex-row-icon{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1rem;opacity:.8}.codex-row-thumb{width:30px;height:30px;object-fit:cover;border-radius:50%;border:1px solid var(--line);flex-shrink:0}.codex-row-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.codex-row-type{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);flex-shrink:0}@media(max-width:700px){.codex-toggle{padding:9px 16px;font-size:.78rem;bottom:14px;right:14px}.codex-toggle.shifted{right:14px;z-index:960}}@media(max-width:900px){.grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}main{padding:24px 18px 80px}}@media(max-width:700px){.nav-toggle{display:inline-flex;align-items:center;justify-content:center}header.topbar{flex-wrap:wrap;padding:10px 16px;gap:0;align-items:center}header.topbar .brand{flex:1}header.topbar nav{display:none;width:100%;flex-direction:column;gap:0;border-top:1px solid var(--line);margin-top:10px;padding-top:6px;padding-bottom:4px}header.topbar nav.open{display:flex}header.topbar nav a{margin-left:0;padding:11px 2px;border-bottom:1px solid rgba(74,58,34,.35);font-size:1rem;display:block}header.topbar nav a:last-child{border-bottom:none}main{padding:20px 16px 70px}.spread{gap:8px}button,.btn{min-height:44px;touch-action:manipulation}.nav-toggle{min-height:38px}.tabs button{min-height:40px}.card{padding:14px 16px}.card-cover{width:calc(100% + 32px);margin:-14px -16px 12px}.tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap}.sb-overlay{padding:12px}.sb-modal{max-width:100%;padding:16px 14px}.lightbox{padding:10px}}@media(max-width:480px){main{padding:16px 12px 60px}h1{font-size:1.4rem}h2{font-size:1.15rem}.grid{grid-template-columns:1fr}.spread{flex-direction:column;align-items:flex-start}.card{padding:12px 14px}.card-cover{width:calc(100% + 28px);margin:-12px -14px 12px}.sb-abilities-wrap{overflow-x:auto}.sb-abilities{min-width:320px}.sb-overlay{padding:6px}.sb-modal{border-radius:6px;padding:14px 12px}.center-wrap{margin:3vh auto}}
