:root{--bg:#14110f;--panel:#1d1815;--panel-2:#262019;--border:#3a3129;--text:#ece3d6;--text-dim:#a89a87;--accent:#c9973f;--accent-2:#7a4b2a;--user:#3b6d8f;--danger:#b3503f;--success:#4caf72;--rarity-common:#9a9488;--rarity-uncommon:#4caf72;--rarity-rare:#4d8fd6;--rarity-epic:#a855e6;--rarity-legendary:#e6a23c;--rarity-unique:#e63c5e;--difficulty-normal:#4caf72;--difficulty-difficile:#e6a23c;--difficulty-mortel:#b3503f;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:20px;--shadow-sm:0 2px 6px #0000004d;--shadow-md:0 6px 18px #0006;--sans:"Segoe UI", system-ui, Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font:16px/1.5 var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{min-height:100svh;margin:0}#root{flex-direction:column;min-height:100svh;display:flex}button{font:inherit}.join-screen{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.join-card{background:var(--panel);border:1px solid var(--border);text-align:center;border-radius:12px;width:100%;max-width:380px;padding:32px}.join-card h1{color:var(--accent);margin:0 0 4px;font-size:28px}.join-card p{color:var(--text-dim);margin:0 0 20px}.join-card input{border:1px solid var(--border);background:var(--panel-2);width:100%;color:var(--text);border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:16px}.join-card button,.composer button,.roll-form button{background:var(--accent-2);color:var(--text);border:1px solid var(--accent);cursor:pointer;border-radius:8px;padding:10px 16px}.join-card button{width:100%}.join-card button:hover,.composer button:hover,.roll-form button:hover{background:var(--accent);color:#1a1310}.join-error{color:var(--danger);margin-top:8px;font-size:14px}.table-app{flex-direction:column;height:100svh;min-height:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--panel);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.topbar h1{color:var(--accent);margin:0;font-size:18px}.topbar-right{align-items:center;gap:12px;display:flex}.hp-quick{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:4px 10px;font-size:13px;display:flex}.hp-quick button{border:1px solid var(--border);background:var(--panel);width:22px;height:22px;color:var(--text);cursor:pointer;border-radius:6px;line-height:1}.hp-quick button:hover{background:var(--accent);color:#1a1310}.sheet-btn{background:var(--accent-2);color:var(--text);border:1px solid var(--accent);cursor:pointer;border-radius:8px;padding:6px 12px;font-size:13px}.sheet-btn:hover{background:var(--accent);color:#1a1310}.player-strip{border-bottom:1px solid var(--border);background:var(--panel);flex-wrap:wrap;gap:8px;padding:8px 20px;display:flex}.player-chip{color:var(--text-dim);background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-size:12px}.player-chip strong{color:var(--text)}.chat-log{flex-direction:column;flex:1;gap:10px;width:100%;max-width:860px;min-height:0;margin:0 auto;padding:20px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;border-radius:10px;max-width:80%;padding:10px 14px;line-height:1.5}.msg .who{opacity:.8;margin-bottom:3px;font-size:12px;font-weight:600;display:block}.msg.chat{background:var(--user);color:#eaf3fa;align-self:flex-end}.msg.dice{background:var(--panel-2);border:1px dashed var(--border);align-self:flex-end;font-family:ui-monospace,Consolas,monospace;font-size:14px}.msg.attack{background:var(--panel-2);border:1px dashed var(--rarity-legendary,var(--border));align-self:flex-end;max-width:min(80%,360px);font-family:ui-monospace,Consolas,monospace;font-size:14px}.attack-result{flex-direction:column;gap:6px;display:flex}.attack-result-details{font-family:var(--sans);align-items:center;gap:10px;font-size:12px;display:flex}.attack-ac{color:var(--text-dim)}.attack-outcome{letter-spacing:.3px;border:1px solid;border-radius:999px;padding:1px 8px;font-weight:700}.attack-outcome.hit{color:var(--success)}.attack-outcome.miss{color:var(--text-dim)}.attack-outcome.crit{color:var(--rarity-legendary)}.attack-outcome.fumble{color:var(--danger)}.attack-damage-line{font-family:var(--sans);color:var(--text);font-size:13px}.attack-damage-line strong{color:var(--rarity-legendary)}.dice-roll{align-items:center;gap:10px;display:inline-flex}.die-3d-scene{perspective:300px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:flex;overflow:hidden}.die-3d{background:linear-gradient(145deg, var(--accent), var(--accent-2));color:#1a1310;width:36px;height:36px;transform-style:preserve-3d;border-radius:9px;justify-content:center;align-items:center;font-family:ui-monospace,Consolas,monospace;font-size:16px;font-weight:700;display:flex;box-shadow:0 4px 10px #00000059}.die-3d.kind-tinted{background:linear-gradient(145deg, var(--swatch-from), var(--swatch-to))}.dice-meta{flex-direction:column;line-height:1.3;display:flex}.dice-expr{color:var(--text-dim);font-size:12px}.dice-formatted{color:var(--accent);font-size:13px;font-weight:600;animation:.25s dice-pop}.dice-kind-tag{letter-spacing:.4px;color:var(--swatch-to,var(--accent));border:1px solid var(--swatch-to,var(--accent));vertical-align:middle;border-radius:4px;margin-right:5px;padding:1px 4px;font-size:9px;font-weight:700;display:inline-block}.dice-kind-tag.large{margin-right:8px;padding:2px 6px;font-size:11px}@keyframes dice-pop{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.15)}to{transform:scale(1)}}.msg.gm{background:var(--panel-2);border-left:3px solid var(--accent);color:var(--text);white-space:normal;align-self:flex-start;max-width:90%}.markdown p{margin:0 0 10px}.markdown p:last-child{margin-bottom:0}.markdown strong{color:var(--accent);font-weight:700}.markdown em{color:var(--text);font-style:italic}.markdown ul,.markdown ol{margin:0 0 10px;padding-left:22px}.markdown li{margin-bottom:4px}.markdown li:last-child{margin-bottom:0}.markdown h1,.markdown h2,.markdown h3{color:var(--accent);margin:0 0 8px;font-size:16px}.markdown hr{border:none;border-top:1px solid var(--border);margin:12px 0}.markdown blockquote{border-left:2px solid var(--border);color:var(--text-dim);margin:0 0 10px;padding-left:12px;font-style:italic}.markdown code{background:var(--panel);border-radius:4px;padding:1px 5px;font-family:ui-monospace,Consolas,monospace;font-size:.9em}.msg.system{color:var(--text-dim);background:0 0;align-self:center;padding:2px;font-size:13px;font-style:italic}.msg.error{color:var(--danger);border:1px solid var(--danger);background:#b3503f26;align-self:center;font-size:14px}.gm-error-body{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.gm-error-retry{flex-shrink:0}.gm-error-retry:disabled{opacity:.5;cursor:default}.gm-typing{color:var(--text-dim);align-self:flex-start;padding:0 14px;font-size:13px;font-style:italic}.composer-area{border-top:1px solid var(--border);background:var(--panel);padding:12px 20px 18px}.composer,.roll-form{gap:8px;max-width:860px;margin:0 auto;display:flex}.roll-form{margin-top:8px}.composer input,.roll-form input{border:1px solid var(--border);background:var(--panel-2);min-width:0;color:var(--text);border-radius:8px;flex:1;padding:10px 14px;font-size:15px}.roll-form input{flex:none;width:160px;font-family:ui-monospace,Consolas,monospace}.roll-hint{color:var(--text-dim);align-self:center;font-size:12px}.modal-overlay{z-index:20;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:linear-gradient(#1d1815eb, #1d1815eb), url(/assets/gothic-stone-BJANYsPb.webp) center / cover, var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:14px;width:100%;max-width:520px;max-height:90vh;padding:24px;display:flex;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-header h2{color:var(--accent);margin:0;font-size:18px}.modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:22px;line-height:1}.modal-close:hover{color:var(--text)}.sheet-form label{color:var(--text-dim);flex-direction:column;flex:1;gap:4px;font-size:13px;display:flex}.sheet-form input,.sheet-form textarea{border:1px solid var(--border);background:var(--panel-2);color:var(--text);resize:vertical;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:14px}.sheet-row{gap:10px;display:flex}.sheet-row label.small{flex:0 0 90px}.abilities-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.ability-mod{color:var(--accent);font-size:13px;font-weight:600}.ability-view{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;display:flex}.ability-view .ability-label{color:var(--text-dim);font-size:12px}.ability-view .ability-score{font-size:20px;font-weight:600}.ability-save-mastered{border-color:var(--accent)}.ability-save-star{color:var(--accent);margin-left:3px;font-size:10px}.save-proficiencies-hint{margin:2px 0 0;font-size:11px}.modal-actions{justify-content:flex-end;display:flex}.modal-actions button{background:var(--accent-2);color:var(--text);border:1px solid var(--accent);cursor:pointer;border-radius:8px;padding:10px 18px}.modal-actions button:hover{background:var(--accent);color:#1a1310}.create-card{text-align:left;max-width:480px}.field-label{color:var(--text-dim);flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px;display:flex}.field-label select{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;padding:10px 12px;font-size:15px}select{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}select option{background-color:var(--panel-2);color:var(--text)}.class-role{color:var(--text-dim);font-size:13px;font-style:italic;margin:-6px 0 14px!important}.points-remaining{color:var(--text-dim);margin-bottom:10px;font-size:14px}.points-remaining strong{color:var(--accent)}.points-remaining strong.over{color:var(--danger)}.create-abilities{margin-bottom:16px}.ability-buyer{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;display:flex}.ability-buyer .ability-label{color:var(--text-dim);font-size:12px}.ability-buyer-controls{align-items:center;gap:8px;display:flex}.ability-buyer-controls button{border:1px solid var(--border);background:var(--panel);width:24px;height:24px;color:var(--text);cursor:pointer;border-radius:6px;line-height:1}.ability-buyer-controls button:hover:not(:disabled){background:var(--accent);color:#1a1310}.ability-buyer-controls button:disabled{opacity:.35;cursor:not-allowed}.ability-buyer .ability-score{text-align:center;min-width:20px;font-size:18px;font-weight:600}.ability-buyer .ability-mod{color:var(--text-dim);font-size:11px;font-weight:400}.create-actions{justify-content:space-between;gap:10px}.create-actions button[type=submit]{flex:1}button.secondary{color:var(--text-dim);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:10px 16px}button.secondary:hover{color:var(--text);border-color:var(--text-dim)}.select-card{max-width:440px}.character-cards{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.character-card{background:var(--panel-2);border:1px solid var(--border);text-align:left;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.character-card-main{color:var(--text-dim);flex-direction:column;gap:2px;font-size:13px;display:flex}.character-card-main strong{color:var(--text);font-size:16px}.character-card-actions{flex-direction:column;gap:6px;display:flex}.character-card-actions button{padding:6px 12px;font-size:13px}.full-width{width:100%}.hint-text{color:var(--text-dim);text-align:center;font-size:13px}.sheet-subtitle{color:var(--text-dim);margin:-8px 0 0}.sheet-stats-row{gap:10px;display:flex}.sheet-stat{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px;display:flex}.stat-label{color:var(--text-dim);font-size:12px}.stat-value{font-size:20px;font-weight:600}.sheet-section h3{color:var(--accent);margin:0 0 6px;font-size:14px}.plain-list{margin:0;padding-left:18px;font-size:14px}.hp-quick.readonly{gap:0}.dice-overlay{pointer-events:none;z-index:50;opacity:1;background:radial-gradient(circle,#00000080,#0000 62%);flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .35s;display:flex;position:fixed;inset:0}.dice-overlay.fade{opacity:0}.dice-overlay.dramatic{background:radial-gradient(circle,#0000009e,#0000 66%)}.dice-overlay-name{color:var(--text);letter-spacing:.5px;text-shadow:0 2px 6px #000000b3;align-items:center;font-size:15px;display:flex}.die-3d-big{perspective:400px;width:120px;height:120px;transition:width .2s,height .2s}.dice-overlay.dramatic .die-3d-big{width:150px;height:150px}.die-3d-big span{background:linear-gradient(145deg, var(--accent), var(--accent-2));color:#1a1310;border-radius:22px;justify-content:center;align-items:center;width:100%;height:100%;font-family:ui-monospace,Consolas,monospace;font-size:46px;font-weight:800;display:flex;box-shadow:0 12px 30px #0000008c}.dice-overlay.dramatic .die-3d-big span{font-size:56px}.die-3d-big.kind-tinted span{background:linear-gradient(145deg, var(--swatch-from), var(--swatch-to));box-shadow:0 0 30px 8px color-mix(in srgb, var(--swatch-to) 55%, transparent), 0 12px 30px #00000080}.dice-overlay.tumble .die-3d-big span{animation:.9s cubic-bezier(.22,.61,.36,1) die-tumble-big}.dice-overlay.dramatic.tumble .die-3d-big span{animation-duration:1.35s}@keyframes die-tumble-big{0%{transform:rotateX(0)rotateY(0)scale(1)}15%{transform:rotateX(240deg)rotateY(150deg)scale(1.05)}30%{transform:rotateX(520deg)rotateY(340deg)scale(.95)}45%{transform:rotateX(760deg)rotateY(600deg)scale(1.05)}60%{transform:rotateX(940deg)rotateY(820deg)scale(.97)}75%{transform:rotateX(1060deg)rotateY(960deg)scale(1.03)}90%{transform:rotateX(1110deg)rotateY(1030deg)scale(.99)}to{transform:rotateX(1080deg)rotateY(1000deg)scale(1)}}.dice-overlay.reveal .die-3d-big span,.dice-overlay.fade .die-3d-big span{animation:.35s die-land-big}@keyframes die-land-big{0%{transform:scale(1.4)}55%{transform:scale(.85)}to{transform:scale(1)}}.die-3d-big.crit-crit span{background:linear-gradient(145deg,#ffd76a,#b8860b);box-shadow:0 0 44px 12px #ffc83ca6,0 12px 30px #00000080}.die-3d-big.crit-fumble span{color:#fff;background:linear-gradient(145deg,#8a3b3b,#401515);box-shadow:0 0 44px 12px #c828288c,0 12px 30px #00000080}.dice-overlay-crit{letter-spacing:1px;text-shadow:0 2px 8px #000000b3;font-size:20px;font-weight:800;animation:.3s dice-pop}.dice-overlay-crit.gold{color:#ffd76a}.dice-overlay-crit.fail{color:#e06060}.dice-overlay-formatted{color:var(--text-dim);text-shadow:0 2px 6px #000000b3;font-family:ui-monospace,Consolas,monospace;font-size:13px}.ptt-wrap{align-items:center;gap:var(--space-2);display:flex}.ptt-wrap .ptt-btn{border:1px solid var(--accent);background:var(--accent-2);width:42px;height:42px;color:var(--text);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.ptt-btn:hover:not(:disabled){background:var(--accent);color:#1a1310}.ptt-btn.recording{background:var(--danger);border-color:var(--danger);color:#fff}.ptt-btn.transcribing{background:var(--panel-2);cursor:wait}.ptt-btn.error{border-color:var(--danger);color:var(--danger)}.ptt-btn:disabled{opacity:.5;cursor:not-allowed}.ptt-ring{border:2px solid var(--danger);border-radius:50%;animation:1.1s ease-out infinite ptt-pulse;position:absolute;inset:-6px}@keyframes ptt-pulse{0%{opacity:.9;transform:scale(.85)}to{opacity:0;transform:scale(1.5)}}.ptt-spinner{border:2px solid #ece3d64d;border-top-color:var(--text);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite ptt-spin}.ptt-spinner.large{border-width:3px;width:32px;height:32px}@keyframes ptt-spin{to{transform:rotate(360deg)}}.ptt-status{color:var(--text-dim);max-width:160px;font-size:12px}.ptt-status.recording,.ptt-status.error{color:var(--danger)}.propose-screen{align-items:center;gap:var(--space-4);flex-direction:column;flex:1;padding:40px 24px;display:flex;overflow-y:auto}.propose-header{text-align:center;max-width:640px}.propose-header h1{color:var(--accent);margin-bottom:var(--space-2)}.propose-loading{align-items:center;gap:var(--space-3);color:var(--text-dim);flex-direction:column;padding:40px;display:flex}.lobby-card{width:100%;max-width:none;min-height:unset;grid-template-columns:minmax(180px,.72fr) minmax(280px,1fr);padding:0;display:grid}.lobby-gathering{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:stretch;gap:clamp(18px,3vw,34px);width:min(1060px,100%);display:grid}.lobby-campaign-visual{border-right:1px solid #c9973f42;min-height:310px;position:relative;overflow:hidden}.lobby-campaign-visual:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 45%,#181411f0 100%),linear-gradient(#0000 52%,#100d0bb8);position:absolute;inset:0}.lobby-campaign-visual .asset-image,.lobby-campaign-visual img,.lobby-campaign-visual svg{object-fit:cover;width:100%;height:100%}.lobby-campaign-copy{justify-content:center;gap:var(--space-2);flex-direction:column;padding:clamp(22px,4vw,38px) clamp(22px,3vw,34px);display:flex}.lobby-campaign-copy h3{font-size:clamp(24px,3vw,34px);line-height:1.08}.lobby-party{background:linear-gradient(145deg,#27201bf7,#161311fa),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover;border:1px solid #b2864157;flex-direction:column;min-width:0;padding:clamp(22px,3vw,32px);display:flex;position:relative;box-shadow:0 18px 48px #00000057,inset 0 0 45px #b47c3406}.lobby-party:before,.lobby-party:after{content:"";pointer-events:none;width:20px;height:20px;position:absolute}.lobby-party:before{border-top:1px solid var(--accent);border-left:1px solid var(--accent);top:8px;left:8px}.lobby-party:after{border-right:1px solid var(--accent);border-bottom:1px solid var(--accent);bottom:8px;right:8px}.lobby-party-heading{justify-content:space-between;align-items:flex-end;gap:var(--space-2);border-bottom:1px solid #99774847;margin-bottom:18px;padding-bottom:14px;display:flex}.lobby-party-heading h2{color:var(--text);margin:3px 0 0;font:500 23px/1.1 Georgia,Times New Roman,serif}.lobby-ready-count{color:#d3ae67;letter-spacing:.08em;text-transform:uppercase;flex:none;font-size:12px}.lobby-roster{gap:8px;width:100%;display:grid}.lobby-roster-chip{border-radius:3px;width:100%;min-width:0;padding:7px 9px 7px 7px;transition:border-color .18s,opacity .18s,background-color .18s}.lobby-roster-chip.is-ready{background:linear-gradient(135deg,#3d301ff5,#1e1a16f0);border-color:#c9973fb3}.lobby-roster-chip.is-offline{opacity:.58;filter:saturate(.45)}.lobby-status{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;margin-left:auto;font-size:10px;display:inline-flex}.lobby-status-dot{background:var(--text-dim);border-radius:50%;flex-shrink:0;width:7px;height:7px}.lobby-status.ready{color:#d9b66c}.lobby-status.ready .lobby-status-dot{background:var(--accent);box-shadow:0 0 6px #c9973fb3}.lobby-status.offline .lobby-status-dot{background:var(--danger)}.lobby-ready-button{color:#fff5df;cursor:pointer;background:linear-gradient(#8b5528,#6d3f20);border:1px solid #ad7435;border-radius:3px;flex-direction:column;align-items:center;gap:3px;width:100%;margin-top:18px;padding:12px 16px;display:flex;box-shadow:inset 0 1px #ffe0a429,0 8px 22px #00000042}.lobby-ready-button>span{letter-spacing:.025em;font-size:14px;font-weight:700}.lobby-ready-button small{color:#ffefd4ad;font-size:10px}.lobby-ready-button:hover:not(:disabled){background:linear-gradient(#a6662f,#814923);border-color:#d4a354}.lobby-waiting-copy{color:var(--text-dim);text-align:center;margin:12px 0 0;font:italic 12px/1.45 Georgia,Times New Roman,serif}.lobby-waiting-copy.all-ready{color:#d9b66c}.lobby-error{text-align:center;margin:12px 0 0}.propose-error{align-items:center;gap:var(--space-2);text-align:center;flex-direction:column;max-width:400px;display:flex}.campaign-cards{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));width:100%;max-width:1000px;display:grid}.campaign-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);gap:var(--space-2);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.campaign-card-type{text-transform:uppercase;letter-spacing:.6px;color:var(--accent);font-size:11px;font-weight:700}.campaign-card h3{color:var(--text);margin:0}.campaign-pitch{color:var(--text-dim);flex:1;font-size:14px}.campaign-meta{gap:var(--space-1);color:var(--text-dim);flex-wrap:wrap;font-size:12px;display:flex}.campaign-meta span{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:2px 8px}.campaign-rewards{color:var(--accent);margin:0;font-size:13px}.diff-tag{text-transform:uppercase;border:1px solid;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.diff-normal{color:var(--difficulty-normal)}.diff-difficile{color:var(--difficulty-difficile)}.diff-mortel{color:var(--difficulty-mortel)}.campaign-banner{border-bottom:1px solid var(--border);background:linear-gradient(#1d1815ed, #1d1815ed), url(/assets/gothic-stone-BJANYsPb.webp) center / cover, var(--panel)}.campaign-banner-summary{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) 20px;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:none;display:flex}.campaign-banner-meta{color:var(--text-dim);font-size:12px}.campaign-banner-caret{color:var(--text-dim);margin-left:auto;font-size:11px}.campaign-banner-detail{padding:0 20px var(--space-3);gap:var(--space-2);color:var(--text-dim);flex-direction:column;font-size:13px;display:flex}.campaign-banner-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.end-campaign-confirm{align-items:center;gap:var(--space-2);background:var(--panel-2);border:1px solid var(--danger);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);flex-wrap:wrap;font-size:13px;display:flex}.campaign-paused-banner{border:1px solid #c9973f8c;border-left:3px solid var(--accent);color:var(--text-dim);background:linear-gradient(90deg,#43311ff0,#251f1af7),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border-radius:3px;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:10px clamp(12px,3vw,28px) 0;padding:10px 12px 10px 16px;font-size:13px;display:flex;position:relative;box-shadow:0 8px 24px #00000038}.campaign-paused-banner strong{color:var(--accent);font:600 15px/1.2 Georgia,Times New Roman,serif}.campaign-paused-banner span{flex:260px}.campaign-paused-banner button{margin-left:auto}.spectator-banner{color:var(--text-dim);background:linear-gradient(90deg,#222931f0,#181b1ff7);border:1px solid #7a94a866;border-left:3px solid #7a94a8;border-radius:3px;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:10px clamp(12px,3vw,28px) 0;padding:10px 12px 10px 16px;font-size:13px;display:flex;position:relative;box-shadow:0 8px 24px #00000038}.spectator-banner strong{color:#a9c2d4;flex:100%;font:600 15px/1.2 Georgia,Times New Roman,serif}.spectator-composer-note{color:#8fa2b0;letter-spacing:.025em;text-align:center;background:#13100ed1;border:1px solid #7a94a84d;border-radius:999px;align-self:center;margin:0 12px 8px;padding:5px 14px;font-size:11px;font-style:italic}.turn-lock-notice{color:#b8aa96;letter-spacing:.025em;text-align:center;background:#13100ed1;border:1px solid #8b6c4247;border-radius:999px;align-self:center;margin:0 12px 8px;padding:5px 14px 5px 27px;font-size:11px;position:relative}.turn-lock-notice:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:50%;left:12px;transform:translateY(-50%);box-shadow:0 0 8px #c9973fb3}.combat-target-row{justify-content:center;padding:0 12px;display:flex}.combat-target-chip,.combat-target-hint{letter-spacing:.02em;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:11px;display:inline-flex}.combat-target-chip{color:var(--text);background:#c9973f24;border:1px solid #c9973f80}.combat-target-hint{border:1px dashed var(--border);color:var(--text-dim);font-style:italic}.combat-target-clear{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0 0 0 4px;line-height:1}.combat-target-error{text-align:center;color:var(--danger);margin:0 12px 4px;font-size:11px}.collective-phase{border-radius:var(--radius-md,10px);margin:0 12px 8px}.collective-phase .lobby-party-heading{margin-bottom:12px;padding-bottom:10px}.collective-phase .lobby-party-heading h2{font-size:18px}.collective-phase .lobby-roster{margin-bottom:12px}.collective-intention-text{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;font-style:italic;display:block;overflow:hidden}.turn-countdown{color:var(--text-dim);text-align:center;font-variant-numeric:tabular-nums;margin:0 0 10px;padding:4px 10px;font-size:12px}.combat-panel-active-name .turn-countdown{margin:0;padding:0;display:inline}.turn-countdown-warning{color:var(--danger);font-weight:600;animation:1.4s ease-in-out infinite turn-countdown-pulse}@keyframes turn-countdown-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.turn-countdown-warning{animation:none}}.table-app{--table-fire:#b84b1b29;--table-haze:#4a3a2b1f;isolation:isolate;color:#ded0b8;background:radial-gradient(circle at 8% 4%, var(--table-fire), transparent 24rem), radial-gradient(circle at 94% 88%, var(--table-fire), transparent 28rem), linear-gradient(#06050414, #06050457), url(/assets/table-blackened-oak-v1-Te8L1jHF.webp) center / cover;transition:background-color .9s;position:relative;overflow:hidden;box-shadow:inset 0 0 100px #000000d1}.table-app:before,.table-app:after{z-index:-1;content:"";pointer-events:none;background-position:50%;background-size:cover;position:absolute;inset:0}.table-app:before{opacity:.34;background-image:url(/assets/smoke-overlay-v1-CP970mKY.webp);animation:24s ease-in-out infinite alternate tabletop-smoke}.table-app:after{opacity:.08;background-image:url(/assets/embers-overlay-v1-DVa1J6Vy.webp);animation:9s ease-in-out infinite alternate tabletop-embers}.table-app.table-mood-combat{--table-fire:#bc311845;--table-haze:#76261829}.table-app.table-mood-combat:after,.table-app.table-mood-danger:after{opacity:.42}.table-app.table-mood-danger{--table-fire:#9b2c193b}.table-app.table-mood-ritual{--table-fire:#37595d33;--table-haze:#27534e29}.table-app.table-mood-paused{--table-fire:#7e4e2a1f;--table-haze:#39414233}.table-app.table-mood-paused:before{opacity:.46}.table-app>.topbar{z-index:4;background:linear-gradient(#0d0c0b8a,#0d0c0bdb),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/100% 100%;border:0;border-bottom:1px solid #896339a3;min-height:58px;padding:7px 24px;position:relative;box-shadow:0 7px 22px #0000009e,inset 0 -1px #e1ac6014}.table-app .brand-mark{color:#ddba78;clip-path:circle(48%);background:radial-gradient(circle at 40% 35%,#8b301e,#3a0c0b 72%);border:0;box-shadow:0 0 0 2px #22150f,0 0 0 3px #b570318c,0 5px 14px #000}.table-app .topbar h1{color:#d9c4a0;text-shadow:0 2px 4px #000}.table-app .sheet-btn,.table-app .composer button,.table-app .roll-request-button{color:#dcc8a4;letter-spacing:.04em;text-transform:uppercase;background:linear-gradient(#1f1b1761,#0c0b0ab3),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border:1px solid #9669389e;border-radius:1px;font-family:Georgia,Times New Roman,serif;box-shadow:inset 0 1px #ffffff09,0 3px 8px #0000006b}.table-workspace{z-index:1;flex:1;grid-template-columns:clamp(250px,15vw,340px) minmax(620px,1fr) clamp(300px,18vw,390px);gap:clamp(10px,1.2vw,22px);min-height:0;padding:16px 20px 10px;display:grid;position:relative}.table-rail{scrollbar-width:thin;flex-direction:column;gap:12px;min-width:0;min-height:0;display:flex;overflow:hidden auto}.table-rail-left{background:linear-gradient(#1f140d2e,#0c09077a),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border:1px solid #65462a80;padding:12px 12px 18px;box-shadow:0 14px 30px #00000080,inset 0 0 28px #0000004d}.table-rail-right{align-items:stretch;padding:10px 8px 18px}.table-center-stage{flex-direction:column;gap:0;min-width:0;min-height:0;display:flex;overflow:hidden}.table-journal{filter:drop-shadow(0 16px 18px #0000008f);background:url(/assets/journal-open-v1-BXojggyX.webp) 50%/100% 100% no-repeat;flex-direction:column;flex:1;min-width:0;min-height:0;padding:clamp(58px,7vh,92px) clamp(58px,9.5%,176px) clamp(52px,6vh,82px);display:flex;position:relative}.table-journal-heading{color:#5f251c;text-transform:uppercase;border-bottom:1px solid #5b311f47;justify-content:space-between;align-items:baseline;gap:16px;font-family:Georgia,Times New Roman,serif;display:flex;position:absolute;top:clamp(38px,5vh,55px);left:12.5%;right:12.5%}.table-journal-heading span{letter-spacing:.18em;font-size:9px}.table-journal-heading strong{letter-spacing:.08em;font-size:clamp(13px,1.1vw,18px);font-weight:500}.table-journal .chat-log{color:#312319;scrollbar-color:#5c372080 transparent;flex:1;width:auto;max-width:none;min-height:0;margin:0;padding:18px 6px 24px}.table-journal .msg{box-shadow:none;border-radius:0}.table-journal .msg.gm{color:#2b2018;overflow-wrap:anywhere;background:0 0;border:0;border-left:2px solid #69231973;align-self:flex-start;width:calc(50% - clamp(20px,2.4vw,44px));max-width:calc(50% - clamp(20px,2.4vw,44px));padding:10px 10px 14px 14px;font:clamp(15px,.78vw,18px)/1.58 Georgia,Times New Roman,serif}.table-journal .msg.gm .who{color:#74261d;letter-spacing:.08em;text-transform:uppercase}.table-journal .msg.chat,.table-journal .msg.dice,.table-journal .msg.attack{overflow-wrap:anywhere;color:#2c211a;background:#785c3b1f;border:1px solid #5c3a2347;align-self:flex-end;width:calc(50% - clamp(20px,2.4vw,44px));max-width:calc(50% - clamp(20px,2.4vw,44px));box-shadow:inset 0 0 16px #5a36200f}.table-journal .msg.system{color:#705b46}.table-journal .markdown strong,.table-journal .dice-formatted,.table-journal .attack-damage-line strong{color:#7d2c20}.table-journal .combat-panel{background:linear-gradient(90deg,#0f0b09e6,#2a1711db,#0f0b09e6),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/100% 100%;border:1px solid #b07539a3;border-radius:2px;flex:none;width:100%;margin:0;overflow:hidden;box-shadow:0 8px 20px #0000008a,inset 0 1px #efb86714}.table-journal .combat-panel-summary{color:#ead8b7;background:linear-gradient(90deg,#84261733,#0000 42%);border-bottom:1px solid #9c623247;grid-template-columns:auto minmax(0,1fr) auto;min-height:54px;padding:10px 20px;display:grid}.table-journal .combat-panel-summary>*{min-width:0}.table-journal .combat-panel-title{color:#e2ad62;letter-spacing:.045em;text-transform:uppercase;font-family:Georgia,Times New Roman,serif;font-size:15px}.table-journal .combat-panel-active-name{color:#d7c3a1;text-align:center;font-size:13px}.table-journal .combat-panel-detail{background:#0807068a;grid-template-columns:minmax(0,1.45fr) minmax(220px,.55fr);gap:16px;padding:12px 18px 14px;display:grid}.table-journal .combat-panel-order{align-content:flex-start;gap:9px}.table-journal .combat-pill{color:#dfcba8;background:linear-gradient(145deg,#412e1ff5,#191410fa);border-color:#a7703a94;border-radius:2px;min-height:36px;box-shadow:inset 0 1px #ffffff0a,0 3px 9px #0000008c}.table-journal .combat-pill-enemy{background:linear-gradient(145deg,#491d18eb,#1b100efa);border-color:#9e3a2ba3}.table-journal .combat-pill-active{color:#fff1d4;border-color:#e17b38;box-shadow:0 0 0 1px #e17b3880,0 0 18px #be381875}.table-journal .combat-panel-log{color:#bba98d;border-left:1px solid #ad703a57;max-height:92px;padding-left:14px}.table-app .campaign-banner{box-shadow:none;background:0 0;border:0;border-bottom:1px solid #8b5e3073;border-radius:0;margin:0}.table-app .campaign-banner-summary{background:0 0;grid-template:"icon difficulty title caret""icon meta meta caret"/32px auto minmax(0,1fr) 12px;align-items:center;gap:3px 7px;padding:8px 4px 12px;display:grid}.table-app .campaign-banner-icon{grid-area:icon}.table-app .campaign-banner-summary .diff-tag{grid-area:difficulty}.table-app .campaign-banner-summary strong{color:#d1b785;grid-area:title;min-width:0;font-family:Georgia,Times New Roman,serif;line-height:1.2}.table-app .campaign-banner-meta{color:#967f64;overflow-wrap:anywhere;grid-area:meta;font-size:10px;display:block}.table-app .campaign-banner-caret{grid-area:caret;margin-left:0}.table-app .campaign-banner-detail{color:#b9a488;background:#07060533}.table-app .player-strip{background:0 0;border:0;flex-flow:column;flex:none;gap:7px;padding:3px 0;display:flex}.table-app .player-chip{background:linear-gradient(90deg,#482f1d47,#0000);border:0;border-bottom:1px solid #704d2c52;border-radius:0;width:100%;min-width:0}.table-app .player-chip .asset-image,.table-app .player-chip svg{border-radius:50%;box-shadow:0 0 0 2px #20150f,0 0 0 3px #a16f3773,0 3px 8px #000}.table-app .scene-ledger-panel{color:#3c281b;min-height:280px;box-shadow:none;filter:drop-shadow(0 12px 12px #00000080);background:url(/assets/pinned-parchment-v1-CgQyjLEU.webp) top/100% 100% no-repeat;border:0;margin:0;padding:46px 34px 54px;position:relative}.table-app .scene-ledger-summary{color:#5b241b;text-transform:uppercase;background:0 0;border-bottom:1px solid #58341f40;min-height:32px;padding:0 2px 8px;font-family:Georgia,Times New Roman,serif}.table-app .scene-ledger-title,.table-app .scene-ledger-preview,.table-app .scene-ledger-caret{color:inherit}.table-app .scene-ledger-detail{background:0 0;border:0;padding:10px 2px 0;line-height:1.38}.table-app .scene-ledger-group h4{color:#6d2c20;border-bottom-color:#53331f33;font-family:Georgia,Times New Roman,serif}.table-app .scene-ledger-group p,.table-app .scene-ledger-group li,.table-app .scene-ledger-item-name,.table-app .scene-ledger-item-state{color:#3b2b20;overflow-wrap:anywhere}.table-app .composer-area,.table-app>.collective-phase{z-index:4;background:linear-gradient(#0d0b0a3d,#060605a8),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/100% 100%;border-top:1px solid #976a388f;flex:none;padding:13px clamp(24px,7vw,110px) 16px;position:relative;box-shadow:0 -8px 24px #0000008f}.table-app .composer{align-items:stretch;max-width:1080px}.table-app .composer input{color:#dfd0b8;background:#0d0b09b8;border:1px solid #84592f8c;border-radius:1px;min-height:46px;font-family:Georgia,Times New Roman,serif;box-shadow:inset 0 2px 12px #000000b8}.table-app .turn-lock-notice,.table-app .spectator-composer-note{z-index:4;color:#bba587;background:#0c0a08d1;margin:0;padding:5px 20px;position:relative}@keyframes tabletop-smoke{0%{opacity:.26;transform:translate(-.8%,-.4%)scale(1.02)}to{opacity:.4;transform:translate(.8%,.5%)scale(1.04)}}@keyframes tabletop-embers{0%{opacity:.16;transform:scale(1)}to{opacity:.42;transform:scale(1.015)}}@media (width<=1080px){.table-workspace{grid-template-columns:210px minmax(480px,1fr) 230px;gap:8px;padding-inline:8px}.table-journal{padding-inline:48px}.table-app .scene-ledger-panel{padding-inline:26px}}@media (width<=1180px){.table-journal .msg.gm{width:auto;max-width:none}}@media (width<=860px){.table-app{overflow:auto}.table-workspace{flex-direction:column;display:flex;overflow:visible}.table-rail,.table-journal{overflow:visible}.table-rail-left{order:1}.table-journal{order:2;min-height:70vh}.table-rail-right{order:3}.table-app .player-strip{flex-direction:row;overflow-x:auto}.table-app .player-chip{width:auto;min-width:180px}}@media (prefers-reduced-motion:reduce){.table-app,.table-app:before,.table-app:after{transition:none!important;animation:none!important}}.collective-autopassed{white-space:normal;text-overflow:clip;overflow:visible}.collective-timeout-notice{text-align:center;border:1px dashed #c9973f66;border-radius:3px;flex-direction:column;align-items:center;gap:8px;margin:0 0 12px;padding:12px;display:flex}.collective-timeout-notice p{color:#d3ae67;margin:0;font-size:13px;font-style:italic}.collective-restart-button{color:var(--text);cursor:pointer;background:linear-gradient(#8b5528,#6d3f20);border:1px solid #ad7435;border-radius:3px;padding:8px 14px;font-size:13px}.collective-restart-button:disabled{opacity:.5;cursor:default}.collective-resolving-notice{color:#d3ae67;text-align:center;border:1px dashed #c9973f66;border-radius:3px;margin:0 0 10px;padding:8px 12px;font-size:12px;font-style:italic}.collective-error{color:var(--danger);text-align:center;margin:0 0 10px;font-size:12px}.collective-retry-button{width:100%;color:var(--text);cursor:pointer;background:linear-gradient(#8b5528,#6d3f20);border:1px solid #ad7435;border-radius:3px;margin-bottom:12px;padding:8px 14px;font-size:13px;display:block}.collective-composer{flex-direction:column;gap:8px;display:flex}.collective-composer textarea{border:1px solid var(--border);background:var(--panel-2);width:100%;min-height:52px;color:var(--text);font:inherit;resize:vertical;border-radius:3px;padding:9px 11px}.collective-composer-actions{align-items:center;gap:8px;display:flex}.collective-validate-button,.collective-pass-button,.collective-edit-button{border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;border-radius:3px;padding:8px 14px;font-size:13px}.collective-validate-button{background:linear-gradient(#8b5528,#6d3f20);border-color:#ad7435;margin-left:auto}.collective-validate-button:disabled,.collective-pass-button:disabled,.collective-edit-button:disabled{opacity:.5;cursor:default}.collective-ready-summary{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.collective-ready-summary p{min-width:0;color:var(--text-dim);overflow-wrap:break-word;flex:1;margin:0;font-size:13px}.collective-hint{color:var(--text-dim);text-align:center;margin:0;font-size:11px;font-style:italic}@media (prefers-reduced-motion:reduce){.lobby-roster-chip{transition:none}}@media (width<=640px){.collective-composer-actions{flex-wrap:wrap}.collective-validate-button{flex-basis:100%;order:3;margin-left:0}}.roll-request-card{isolation:isolate;background:radial-gradient(circle at 88% 22%,#ba7a3026,#0000 32%),linear-gradient(135deg,#342a20fa,#191512fc),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover;border:1px solid #d6a44dad;border-radius:4px;flex-direction:column;gap:10px;width:min(720px,100% - 32px);margin:0 auto 10px;padding:18px 118px 18px 22px;display:flex;position:relative;overflow:hidden;box-shadow:0 0 0 1px #c9973f1a,0 16px 42px #0000006b}.roll-request-card:before{z-index:-1;content:"D20";color:#e7c177b8;clip-path:polygon(50% 0,95% 24%,88% 78%,50% 100%,12% 78%,5% 24%);letter-spacing:.06em;filter:drop-shadow(0 8px 12px #0006);background:radial-gradient(circle,#67462385,#1e1915b8);border:1px solid #daae5d7a;place-items:center;width:72px;height:72px;font:700 13px/1 Georgia,Times New Roman,serif;display:grid;position:absolute;top:50%;right:25px;transform:translateY(-50%)rotate(4deg)}.roll-request-card:after{z-index:-2;content:"";pointer-events:none;border:1px solid #b286412b;position:absolute;inset:7px}.roll-request-header{flex-direction:column;gap:2px;display:flex}.roll-request-kicker{letter-spacing:.14em;text-transform:uppercase;color:#a99475;font-size:11px;font-weight:700}.roll-request-header strong{color:#e0b85f;font-family:Georgia,Times New Roman,serif;font-size:clamp(20px,3vw,27px);font-weight:500;line-height:1.15}.roll-request-reason{color:#c0b19e;max-width:520px;margin:0;font:italic 13px/1.5 Georgia,Times New Roman,serif}.roll-request-breakdown{padding:0;background:#0e0c0b52;border:1px solid #8b6c423d;flex-direction:column;gap:3px;max-width:360px;margin:0;padding:8px 10px;font-size:13px;list-style:none;display:flex}.roll-request-breakdown li{justify-content:space-between;gap:var(--space-2);padding:2px 0;display:flex}.roll-request-breakdown li span:first-child{color:var(--text-dim)}.roll-request-total{border-top:1px solid var(--border);color:#e2bd70;margin-top:2px;font-weight:600;padding-top:6px!important}.roll-request-total span:first-child{color:var(--text)!important}.roll-request-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.roll-request-tag{letter-spacing:.07em;text-transform:uppercase;color:#bcae99;background:#120f0d61;border:1px solid #95754975;border-radius:999px;padding:3px 10px;font-size:10px;font-weight:700}.roll-request-tag.advantage{color:#7ed99a;border-color:#2e9e57}.roll-request-tag.disadvantage{border-color:var(--danger);color:#f0a494}.roll-request-error{color:var(--danger);margin:0;font-size:13px}.roll-request-button{color:#fff5df;letter-spacing:.035em;cursor:pointer;background:linear-gradient(#9a602d,#713f20);border:1px solid #c48a43;border-radius:3px;align-self:flex-start;min-width:240px;margin-top:2px;padding:12px 22px;font-size:15px;font-weight:700;box-shadow:inset 0 1px #ffe6b42e,0 7px 18px #0000004d}.roll-request-button:hover:not(:disabled){color:#fff9ec;background:linear-gradient(#b47435,#895027);box-shadow:inset 0 1px #ffe6b440,0 9px 22px #00000057,0 0 16px #c9973f29}@media (width<=640px){.lobby-gathering,.lobby-card{grid-template-columns:1fr}.lobby-campaign-visual{border-bottom:1px solid #c9973f42;border-right:0;min-height:175px}.lobby-campaign-visual:after{background:linear-gradient(#0000 28%,#181411f2)}.lobby-campaign-copy{padding:20px}.lobby-party{padding:22px 17px}.lobby-party-heading{align-items:center}.lobby-status{font-size:9px}.campaign-paused-banner{align-items:stretch}.campaign-paused-banner button{width:100%;margin-left:0}.roll-request-card{width:calc(100% - 20px);padding:16px}.roll-request-card:before{width:40px;height:40px;font-size:8px;top:19px;right:18px;transform:none}.roll-request-header{padding-right:52px}.roll-request-breakdown{max-width:none}.roll-request-button{width:100%;min-width:0}}button.secondary.danger{border-color:var(--danger);color:var(--danger);align-self:flex-start}button.secondary.danger:hover{background:var(--danger);color:#fff}.campaign-end-modal .rarity-dot{margin-left:4px}.sheet-section-header{justify-content:space-between;align-items:center;display:flex}button.secondary.small{padding:4px 10px;font-size:12px}.equipment-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.equip-slot{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2);flex-direction:column;gap:2px;font-size:12px;display:flex}.equip-slot.filled{border-color:var(--accent)}.equip-slot-label{color:var(--text-dim);font-size:11px}.equip-slot-item{color:var(--text);font-weight:600}.item-icon{border-radius:var(--radius-sm);flex:none;justify-content:center;align-items:center;width:38px;height:38px;padding:3px;display:inline-flex;position:relative}.item-icon-frame{object-fit:contain;pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.asset-image{animation:.32s both asset-fade-in}@keyframes asset-fade-in{0%{opacity:0}to{opacity:1}}.asset-image-empty{filter:grayscale()brightness(.45);opacity:.55}.asset-waiting{flex:none;justify-content:center;align-items:flex-end;display:inline-flex;position:relative}.asset-waiting-label{border-radius:var(--radius-sm);color:var(--text-dim);text-align:center;pointer-events:none;background:#0a0807b8;padding:3px 6px;font-size:10px;font-style:italic;line-height:1.3;position:absolute;inset:auto 6px 6px}.item-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.item-row{align-items:center;gap:var(--space-2);background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);flex-wrap:wrap;font-size:13px;display:flex}.rarity-dot{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.rarity-common{background:var(--rarity-common)}.rarity-uncommon{background:var(--rarity-uncommon)}.rarity-rare{background:var(--rarity-rare)}.rarity-epic{background:var(--rarity-epic)}.rarity-legendary{background:var(--rarity-legendary)}.rarity-unique{background:var(--rarity-unique)}.item-name{font-weight:600}.item-desc{color:var(--text-dim);flex-basis:100%;font-size:12px}.item-meta{color:var(--text-dim);flex-wrap:wrap;flex-basis:100%;gap:4px 10px;font-size:12px;display:flex}.item-weapon-info{color:var(--accent)}.item-stats{color:#d9b66c}.item-set-name{font-style:italic}.item-compare{color:var(--text-dim);border-top:1px dashed var(--border);flex-basis:100%;margin-top:2px;padding-top:4px;font-size:12px}.item-compare strong{color:var(--text)}.equip-error{margin:var(--space-2) 0 0;padding:var(--space-2) var(--space-3);border:1px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);background:#b3503f1f;font-size:13px}.set-progress-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.set-progress-item{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:12px}.set-progress-header{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.set-progress-header strong{color:var(--accent);font-family:Georgia,Times New Roman,serif;font-size:13px}.set-progress-header span{color:var(--text-dim);font-size:11px}.set-bonus-line{color:var(--text-dim);margin:2px 0}.set-bonus-line.active{color:var(--text);font-weight:600}.set-slot-list{flex-wrap:wrap;gap:4px 10px;margin:6px 0 0;padding:0;font-size:11px;list-style:none;display:flex}.set-slot-status{color:var(--text-dim)}.set-slot-status.status-equipped{color:var(--accent)}.set-slot-status.status-owned{color:var(--text)}.item-unique-facts{color:var(--rarity-unique);flex-basis:100%;font-size:12px}.illustration-action{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:6px 10px;font-size:12px;display:flex}.illustration-action .hint-text{flex-basis:100%;margin:2px 0 0}.illustration-confirm span{color:var(--text-dim)}.collection-filters{margin-bottom:var(--space-2);flex-wrap:wrap;gap:6px;display:flex}.collection-filters select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:4px 6px;font-size:12px}.collection-list{max-height:220px;overflow-y:auto}.collection-list li{padding:2px 0;font-size:13px}.item-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.item-actions button,.item-actions select{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:6px;padding:4px 8px;font-size:12px}.item-actions button:hover{background:var(--accent);color:#1a1310}.appearance-grid{gap:var(--space-2);margin-bottom:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(120px,1fr));display:grid}.field-label.small input{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.character-card.dead{opacity:.7}body{background:linear-gradient(#0a0908c7, #0a0908e6), url(/assets/gothic-table-R_wg6EP-.png) center / cover fixed, radial-gradient(circle at 50% -20%, #80562629, transparent 38rem), radial-gradient(circle at 10% 80%, #531a1d1f, transparent 32rem), repeating-linear-gradient(90deg, #ffffff03 0 1px, transparent 1px 5px), var(--bg)}.selected-class-preview{background:#120f0d73;border:1px solid #a67e4552;align-items:center;gap:14px;margin:10px 0 18px;padding:9px;display:flex}.selected-class-preview span{text-align:left;flex-direction:column;display:flex}.selected-class-preview small{color:var(--text-dim)}.starting-loadout-preview{padding:var(--space-2) var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);text-align:left;background:#120f0d4d;margin:-8px 0 18px}.starting-loadout-title{letter-spacing:.4px;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:11px;display:block}.starting-loadout-list{color:var(--text-dim);font-size:13px}.starting-loadout-list li{margin:2px 0}.sheet-identity{align-items:center;gap:13px;display:flex}.sheet-identity h2{margin:2px 0 0;font-family:Georgia,Times New Roman,serif;font-weight:500}.sheet-view{background:radial-gradient(circle at 85% 0,#8e59251a,#0000 32rem),linear-gradient(145deg,#251f1aed,#171412ed),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border-color:#c9973f6b;border-radius:3px;box-shadow:0 30px 100px #000000b3}.xp-track{background:#ffffff0f;height:3px;margin:-5px 0 14px;overflow:hidden}.xp-track span{background:linear-gradient(90deg,#795323,#dfb866);height:100%;display:block;box-shadow:0 0 10px #dfb86666}.sheet-stat,.ability-view,.item-row{background:linear-gradient(145deg,#2d251edb,#1c1815e6);border-color:#87694352;border-radius:2px}.equip-slot{background:linear-gradient(145deg,#2d251ee6,#1c1815eb),url(/assets/patinated-metal-BtyeY1SN.webp) 50%/cover;border-color:#87694352;border-radius:2px}.campaign-card-visual{height:118px;margin:calc(var(--space-4) * -1) calc(var(--space-4) * -1) 10px;opacity:.68;filter:saturate(.7)sepia(.18)contrast(1.15);border-bottom:1px solid #c9973f40;overflow:hidden}.campaign-card-visual svg,.campaign-card-visual img{object-fit:cover;width:100%;height:100%}.reward-item-row{align-items:center;gap:var(--space-2);display:flex}button,input,select,textarea{transition:border-color .16s,background-color .16s,color .16s,box-shadow .16s,transform .16s}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:2px solid #d4a955bf}button:not(:disabled):active{transform:translateY(1px)}.screen-kicker,.brand-kicker{color:#b88b46;letter-spacing:.2em;text-transform:uppercase;font-size:10px;font-weight:700;line-height:1.4;display:block}.join-screen,.propose-screen{isolation:isolate;position:relative}.join-screen:before,.propose-screen:before{z-index:-1;content:"";pointer-events:none;background:linear-gradient(#08070714,#080707b8),radial-gradient(at 50% 15%,#b37e351a,#0000 50%);position:fixed;inset:0}.join-card{background:linear-gradient(145deg,#221d19fa,#12100ffa);border:1px solid #c5974d6b;border-radius:3px;max-width:460px;position:relative;box-shadow:0 28px 90px #00000094,inset 0 0 50px #b47c3409}.join-card:before,.join-card:after{content:"";pointer-events:none;width:22px;height:22px;position:absolute}.join-card:before{border-top:1px solid var(--accent);border-left:1px solid var(--accent);top:8px;left:8px}.join-card:after{border-right:1px solid var(--accent);border-bottom:1px solid var(--accent);bottom:8px;right:8px}.join-card h1,.propose-header h1{letter-spacing:.025em;text-shadow:0 2px 18px #cd9b492e;font-family:Georgia,Times New Roman,serif;font-weight:500}.brand-lockup{align-items:center;gap:12px;display:flex}.brand-mark{color:#dfbb70;clip-path:polygon(50% 0,95% 24%,88% 78%,50% 100%,12% 78%,5% 24%);width:42px;height:42px;font:700 10px/1 var(--sans);letter-spacing:.08em;filter:drop-shadow(0 4px 8px #00000073);background:radial-gradient(circle,#302419 0%,#151210 72%);border:1px solid #c9973fbf;flex:none;place-items:center;display:grid}.topbar{background:linear-gradient(#201b17fa,#14110ffa);border-bottom-color:#c9973f52;min-height:68px;box-shadow:0 8px 30px #00000040}.topbar h1{letter-spacing:.04em;font-family:Georgia,Times New Roman,serif;font-size:20px;font-weight:500}.player-strip{background:#161311eb;padding-block:10px}.player-chip{background:linear-gradient(135deg,#2d251de6,#1b1714e6);border-color:#8b6c4259;border-radius:3px;align-items:center;gap:9px;min-width:180px;padding:5px 11px 5px 5px;display:inline-flex}.player-chip svg,.character-card>svg{border:1px solid #c9973f61;box-shadow:0 4px 14px #0006}.player-chip-copy{flex-direction:column;line-height:1.2;display:flex}.player-chip-copy small{color:var(--text-dim);margin-top:3px;font-size:10px}.chat-log{max-width:980px;padding-block:28px}.msg{border-radius:3px;box-shadow:0 8px 22px #00000024}.msg.gm{border:1px solid #7e654640;border-left:2px solid var(--accent);background:linear-gradient(135deg,#2a231cf0,#1d1916f0),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover}.msg.chat{background:linear-gradient(135deg,#344f60,#293e4c);border:1px solid #5c849d59}.composer-area{background:linear-gradient(#1d1814fa,#171411);border-top-color:#c9973f47;box-shadow:0 -12px 35px #00000040}.character-card{background:linear-gradient(135deg,#2f271fe0,#1d1916eb),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border-color:#96744459;border-radius:3px;justify-content:flex-start}.character-card-main{flex:1}.campaign-card{background:radial-gradient(circle at 80% 0,#9760291c,#0000 45%),linear-gradient(145deg,#26201beb,#171412eb),url(/assets/gothic-stone-BJANYsPb.webp) 50%/cover;border-color:#b286415c;border-radius:3px;position:relative;overflow:hidden;box-shadow:0 18px 48px #00000052}.campaign-card:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:.65;height:2px;position:absolute;inset:0 0 auto}.campaign-card h3{font-family:Georgia,Times New Roman,serif;font-size:22px;font-weight:500}@media (width<=640px){.brand-kicker,.hp-quick{display:none}.topbar{padding-inline:12px}.player-chip{min-width:150px}.join-card{padding:28px 22px}body{background-attachment:scroll,scroll,scroll,scroll,scroll}}.three-die{display:block;position:absolute;inset:0}.three-die canvas{filter:drop-shadow(0 12px 15px #000000a6);display:block;width:100%!important;height:100%!important}.three-die.webgl-fallback{border:1px solid var(--swatch-to,var(--accent));background:linear-gradient(145deg, var(--swatch-from,var(--accent)), var(--swatch-to,var(--accent-2)));clip-path:polygon(50% 0,94% 25%,86% 79%,50% 100%,14% 79%,6% 25%);inset:10%}.die-3d,.die-3d-big{position:relative;background:0 0!important}.die-3d{overflow:hidden;box-shadow:none!important}.die-3d-big span.three-die{box-shadow:none;background:0 0;display:block;position:absolute}.die-result{z-index:2;color:#fff8df;text-shadow:0 2px 4px #000,0 0 10px #000c;pointer-events:none;font:800 30px/1 Georgia,serif;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.die-result.small{font-size:13px}.dice-overlay.reveal .die-result{animation:.42s cubic-bezier(.2,.9,.25,1.4) result-reveal}@keyframes result-reveal{0%{opacity:0;filter:blur(5px);transform:translate(-50%,-50%)scale(2.4)}to{opacity:1;filter:blur();transform:translate(-50%,-50%)scale(1)}}.dice-vfx{width:1px;height:1px;position:absolute;top:50%;left:50%}.dice-vfx i{background:var(--swatch-to,#c9973f);opacity:0;border-radius:50%;width:4px;height:4px;position:absolute;box-shadow:0 0 10px}.dice-overlay.reveal .dice-vfx i{--angle:calc(var(--particle) * 20deg);animation:.85s ease-out both particle-burst;animation-delay:calc(var(--particle) * 12ms)}.dice-overlay.result-crit .dice-vfx i,.dice-overlay.result-success .dice-vfx i{color:#ffd76a;background:#ffd76a}.dice-overlay.result-fumble .dice-vfx i,.dice-overlay.result-failure .dice-vfx i{color:#d33d38;background:#d33d38}@keyframes particle-burst{0%{opacity:1;transform:rotate(var(--angle)) translateX(25px) scale(1.8)}to{opacity:0;transform:rotate(var(--angle)) translateX(180px) scale(.2)}}.dice-overlay.result-crit.reveal{animation:.7s ease-out crit-flash}.dice-overlay.result-fumble.reveal{animation:.48s ease-out fumble-shock}@keyframes crit-flash{0%{background-color:#ffe08729}to{background-color:#0000}}@keyframes fumble-shock{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-3px)}}@media (prefers-reduced-motion:reduce){.dice-vfx,.dice-overlay,.die-result,.ptt-ring,.ptt-spinner,.asset-image{animation:none!important}}::selection{color:#17120e;background:#cda85f}*{scrollbar-color:#a87e428c #0e0c0b8c;scrollbar-width:thin}button:disabled{cursor:not-allowed;color:#dbcfbe6b!important;box-shadow:none!important;background:linear-gradient(#2d251eb8,#1b1714d1)!important;border-color:#755c3c47!important}.join-card input,.field-label select,.sheet-form input,.sheet-form textarea,.composer input,.roll-form input{background:linear-gradient(#181412f5,#211b17f5);border-color:#9370436b;border-radius:3px;box-shadow:inset 0 1px 8px #0000003d}.join-card input::placeholder,.composer input::placeholder,.roll-form input::placeholder,.sheet-form textarea::placeholder{color:#b2a28c94}.selected-class-preview{background:linear-gradient(90deg,#120f0d6b,#120f0deb),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover;border-radius:2px;min-height:90px;padding:9px 12px 9px 9px;position:relative;overflow:hidden}.selected-class-preview strong{letter-spacing:.02em;font-family:Georgia,Times New Roman,serif;font-size:17px;font-weight:500}.ability-buyer{background:linear-gradient(155deg,#30271fe6,#1c1815f0);border-color:#84664057;border-radius:2px;position:relative;box-shadow:inset 0 1px #ffffff06}.ability-buyer:before{content:"";background:linear-gradient(90deg,#0000,#c797468f,#0000);width:56%;height:1px;position:absolute;top:0;left:22%}.ability-buyer .ability-label{letter-spacing:.12em}.ability-buyer-controls button{border-radius:2px}.propose-header{padding-bottom:14px;position:relative}.propose-header:after{content:"";background:linear-gradient(90deg,#0000,#c4914199,#0000);height:1px;position:absolute;bottom:0;left:22%;right:22%}.campaign-cards{align-items:stretch;gap:18px;max-width:1080px}.campaign-card{min-height:570px;padding:18px;transition:transform .18s,border-color .18s,box-shadow .18s}.campaign-card:hover{border-color:#cc9b4b94;transform:translateY(-2px);box-shadow:0 24px 58px #00000075,inset 0 1px #ffffff06}.campaign-card-visual{opacity:.94;filter:saturate(.78)sepia(.1)contrast(1.1);height:164px;margin:-18px -18px 12px;position:relative}.campaign-card-visual:after{content:"";pointer-events:none;background:linear-gradient(#0000 40%,#181412e6);position:absolute;inset:0}.campaign-card-type{letter-spacing:.13em;align-items:center;gap:9px;display:flex}.campaign-card-type:after{content:"";background:linear-gradient(90deg,#b784386b,#0000);flex:1;height:1px}.campaign-card h3{line-height:1.22}.campaign-pitch{line-height:1.58}.campaign-meta span{background:#120f0d73;border-radius:2px}.campaign-rewards{color:#d4b16f;border-top:1px solid #bd8c4140;border-bottom:1px solid #bd8c4140;gap:3px;padding:10px 11px;line-height:1.45;display:grid}.campaign-rewards span{color:#9d896d;letter-spacing:.16em;text-transform:uppercase;font-size:9px;font-weight:700}.campaign-card>button{color:#f2e8d9;cursor:pointer;background:linear-gradient(#8d572d,#6d4127);border:1px solid #cc9948b8;border-radius:2px;min-height:42px;margin-top:4px;box-shadow:inset 0 1px #ffedca1f,0 6px 18px #00000040}.campaign-card>button:hover:not(:disabled){background:linear-gradient(#a16632,#784629);border-color:#dbad5e}.modal{background:linear-gradient(145deg,#251f1af7,#141210fa),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover;border-color:#c2934b73;border-radius:3px;box-shadow:0 34px 110px #000000c7}.item-row,.equip-slot,.character-card{transition:border-color .16s,background-color .16s,transform .16s}.item-row:hover,.equip-slot:hover,.character-card:hover{border-color:#bc8f4b85}@media (width<=760px){.join-screen{padding:12px}.join-card{padding:26px 20px}.create-abilities{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-card{min-height:0}.campaign-card:hover{transform:none}.campaign-card-visual{height:142px}}:root{--occult-void:#070807;--occult-ink:#10110f;--occult-panel:#151511;--occult-panel-soft:#211d17;--occult-gold:#a88950;--occult-gold-bright:#d2b36d;--occult-gold-dim:#5e4d2d;--occult-parchment:#c8b995;--occult-parchment-light:#ded2b3;--occult-parchment-ink:#241d16;--occult-blood:#76261f;--occult-cyan:#315b60;--occult-line:#b58f4c61;--occult-glow:0 0 24px #b7702729;--occult-serif:Georgia, "Times New Roman", serif}body{background:var(--occult-void);color:#d8c9ad}button,input,textarea,select{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline-offset:3px;outline:2px solid var(--occult-gold-bright)!important}.table-app{--table-nav-width:76px;background:linear-gradient(90deg,#0203037a,#0000 18% 82%,#02030385),linear-gradient(#03040429,#0304048a),url(/assets/table-blackened-oak-v1-Te8L1jHF.webp) 50%/cover fixed;border:1px solid #b48e4b52;min-width:1120px;height:100vh;overflow:hidden;box-shadow:inset 0 0 0 3px #050605,inset 0 0 0 4px #b2894333}.table-app:before{opacity:.36;mix-blend-mode:screen}.table-app>.topbar{height:54px;min-height:54px;padding:0 18px 0 calc(var(--table-nav-width) + 22px);border-bottom:1px solid var(--occult-line);background:linear-gradient(90deg,#080a0af7,#12110eed 38%,#070909fa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;box-shadow:0 4px 18px #000,inset 0 -1px #e2bc701f}.brand-mark{border:1px solid var(--occult-gold-dim);width:38px;height:38px;color:var(--occult-gold-bright);font:700 10px/1 var(--occult-serif);box-shadow:inset 0 0 12px #000, var(--occult-glow);background:radial-gradient(circle,#44201a 0 38%,#141411 40% 100%);border-radius:50%;place-items:center;display:grid}.brand-kicker,.screen-kicker,.roll-request-kicker{color:var(--occult-gold);font:700 10px/1.2 var(--occult-serif);letter-spacing:.2em;text-transform:uppercase}.table-app .topbar h1{color:#d9c9aa;font:600 20px/1 var(--occult-serif);letter-spacing:.03em;margin:2px 0 0}.topbar-right{gap:10px}.sheet-btn,.topbar .sheet-btn,.hp-quick.readonly{border:1px solid var(--occult-gold-dim);color:#d7c6a6;min-height:32px;font:700 12px/1 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(#22201b,#11120f);border-radius:0;padding:6px 14px;box-shadow:inset 0 0 0 1px #000000bf,0 2px 8px #000}.sheet-btn:hover:not(:disabled){color:#f0d899;border-color:var(--occult-gold-bright);background:linear-gradient(#302719,#17140f)}.table-workspace{grid-template-columns:var(--table-nav-width) 286px minmax(740px, 1fr);isolation:isolate;gap:0;height:calc(100vh - 142px);min-height:620px;padding:0;display:grid;overflow:hidden}.occult-navigation{z-index:4;border-right:1px solid var(--occult-line);background:linear-gradient(#060808eb,#0b0c0bfa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;flex-direction:column;grid-column:1;align-items:stretch;display:flex;position:relative;box-shadow:5px 0 18px #0000009e,inset -1px 0 #dcb15e14}.occult-navigation-mark{height:82px;color:var(--occult-gold-bright);text-shadow:0 0 18px #ddad5059;border-bottom:1px solid var(--occult-line);place-items:center;font-size:32px;display:grid}.occult-navigation-mark span{border:1px solid var(--occult-gold-dim);place-items:center;width:46px;height:46px;display:grid;transform:rotate(45deg)}.occult-navigation-mark span:first-letter{transform:rotate(-45deg)}.occult-nav-item{appearance:none;color:#9e8b69;min-height:92px;font:700 10px/1 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;border-bottom:1px solid #9b793e3d;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:12px 4px;display:flex}.occult-nav-item:hover,.occult-nav-item.is-active{color:var(--occult-gold-bright);box-shadow:inset 3px 0 var(--occult-gold);background:radial-gradient(circle,#90602433,#0000 72%)}.occult-nav-icon{font-size:25px;line-height:1}.occult-navigation-tail{color:var(--occult-gold-dim);text-align:center;margin-top:auto;padding:20px 0;font-size:24px}.table-rail-left{border-right:1px solid var(--occult-line);scrollbar-color:var(--occult-gold-dim) transparent;background:linear-gradient(#0d0f0ef0,#0b0c0be6),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;grid-column:2;min-width:0;padding:22px 18px;overflow-y:auto;box-shadow:inset -14px 0 22px #0000006b}.table-rail-left:before{content:"TABLE OCCULTE";border-bottom:1px solid var(--occult-line);color:var(--occult-gold);font:700 13px/1 var(--occult-serif);letter-spacing:.16em;text-align:center;margin:0 0 16px;padding:0 0 14px;display:block}.campaign-banner,.campaign-paused-banner,.add-player-banner{border:0;border-bottom:1px solid var(--occult-line);box-shadow:none;background:0 0;border-radius:0}.campaign-banner-summary{padding:10px 0 16px}.campaign-banner-detail{border-top:1px dashed #a889504d;padding:12px 0 16px}.campaign-banner h2,.campaign-banner strong,.campaign-banner-title{color:#d8c29a;font-family:var(--occult-serif)}.player-strip{border-top:1px solid var(--occult-line);flex-direction:column;gap:0;margin-top:14px;display:flex}.player-strip:before{content:"JOUEURS";color:var(--occult-gold);font:700 11px/1 var(--occult-serif);letter-spacing:.15em;text-align:center;padding:14px 0 8px}.player-chip{width:100%;min-width:0;box-shadow:none;background:0 0;border:0;border-bottom:1px solid #9b793e33;border-radius:0;padding:12px 2px}.player-chip>.asset-image,.player-chip>.placeholder{border:2px solid var(--occult-gold-dim);outline:1px solid #171713;box-shadow:0 0 0 3px #080908,0 0 10px #b589462e;width:44px!important;height:44px!important}.player-chip-copy strong{color:#d9caaa;font-family:var(--occult-serif);letter-spacing:.03em}.player-chip-copy small{color:#8f8069}.table-center-stage{background:radial-gradient(#231c1338,#00000080 78%);grid-column:3;min-width:0;padding:20px 26px 8px;overflow:hidden}.table-journal{background:url(/assets/journal-open-v1-BXojggyX.webp) 50%/100% 100% no-repeat;border:0;border-radius:0;width:100%;max-width:1580px;height:100%;min-height:620px;margin:0 auto;padding:0;position:relative;overflow:hidden;box-shadow:0 26px 55px #000000c7,0 0 36px #744c1d24}.table-journal:before{content:"";pointer-events:none;z-index:1;border:1px solid #482d1b6b;position:absolute;inset:4.2% 4.6% 5.5%;box-shadow:inset 0 0 42px #4027161f}.journal-page-spread{z-index:2;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8.8%;min-height:0;display:grid;position:absolute;inset:8.5% 8.5% 26%}.journal-page{min-width:0;min-height:0;color:var(--occult-parchment-ink);text-shadow:0 1px #ffffff1a;flex-direction:column;display:flex}.table-journal-heading{color:#522e26;text-align:center;background:0 0;border-bottom:1px solid #4d311f54;flex-direction:column;justify-content:center;align-items:center;min-height:52px;padding:0 0 12px;display:flex;position:static}.table-journal-heading:after{content:"◆  ─────────  ◆";color:#74563e;letter-spacing:.14em;margin-top:7px;font-size:9px}.table-journal-heading span{color:#765d43;font:700 9px/1 var(--occult-serif);letter-spacing:.22em}.table-journal-heading strong{color:#512e27;font:600 17px/1.15 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase}.table-journal .chat-log{scrollbar-width:thin;scrollbar-color:#4e35239e transparent;background:0 0;width:100%;min-height:0;padding:14px 4px 30px;overflow:hidden auto}.table-journal .msg,.table-journal .msg.gm,.table-journal .msg.chat,.table-journal .msg.dice,.table-journal .msg.attack,.table-journal .msg.system{width:auto;max-width:none;box-shadow:none;color:#261d16;font:400 14px/1.55 var(--occult-serif);text-align:left;background:0 0;border:0;border-bottom:1px solid #4a2f1d2e;border-radius:0;margin:0 0 14px;padding:0 0 12px 20px;position:relative}.table-journal .msg:before{content:"✦";color:#74543a;font-size:10px;position:absolute;top:2px;left:2px}.table-journal .msg.chat,.table-journal .msg.dice,.table-journal .msg.attack{background:#7e664314;border:1px solid #4c321f47;padding:9px 12px 10px 18px}.table-journal .msg .who,.table-journal .msg.gm .who{color:#6d392c;font:700 10px/1 var(--occult-serif);letter-spacing:.1em;text-transform:uppercase;margin:0 0 5px;display:block}.table-journal .markdown,.table-journal .markdown p,.table-journal .dice-formatted,.table-journal .attack-damage-line{color:#261d16}.journal-empty{color:#3e2f229e;font:italic 14px/1.5 var(--occult-serif);text-align:center;margin:auto 0}.journal-actions-heading{color:#6b4b32;font:700 10px/1 var(--occult-serif);letter-spacing:.15em;text-transform:uppercase;align-items:center;gap:8px;margin:14px 0 0;display:flex}.journal-actions-heading:before,.journal-actions-heading:after{content:"";background:#4d311f47;flex:1;height:1px}.journal-page-scene .scene-ledger-panel{box-shadow:none;color:#2b2119;background:0 0;border:0;border-radius:0;margin:12px 0 0;padding:0}.journal-page-scene .scene-ledger-summary{color:#4e3526;background:0 0;border:0;border-bottom:1px solid #4d311f3d;min-height:32px;padding:5px 0 9px}.journal-page-scene .scene-ledger-title{font:700 12px/1 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase}.journal-page-scene .scene-ledger-detail{max-height:220px;padding:10px 0 0;overflow-y:auto}.journal-page-scene .scene-ledger-group{border-bottom:1px solid #4b311f29;margin:0 0 10px;padding:0 0 8px 34px;position:relative}.journal-page-scene .scene-ledger-group:before{content:"✥";color:#67472f;border:1px solid #52372473;border-radius:50%;place-items:center;width:20px;height:20px;font-size:10px;display:grid;position:absolute;top:2px;left:5px}.journal-page-scene .scene-ledger-group h4{color:#553629;font:700 10px/1.2 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase;margin:0 0 3px}.journal-page-scene .scene-ledger-group p,.journal-page-scene .scene-ledger-group li,.journal-page-scene .scene-ledger-item-name,.journal-page-scene .scene-ledger-item-state{color:#2b2119;font:400 12px/1.35 var(--occult-serif)}.journal-page-scene .action-log{flex:1;padding-top:10px}.table-journal .combat-panel{z-index:4;color:#d7c8ab;background:linear-gradient(#0b0d0dcc,#090a0aeb),url(/assets/initiative-rail-v1-Mjt3Qzq7.webp) 50%/100% 100% no-repeat;border:1px solid #b58f4c7a;border-radius:0;height:17.5%;margin:0;padding:0;position:absolute;bottom:6.4%;left:8.2%;right:8.2%;overflow:hidden;box-shadow:0 8px 18px #000000b3,inset 0 0 24px #000}.table-journal .combat-panel-summary{border:0;border-bottom:1px solid var(--occult-line);color:#d5c6aa;background:#080909bd;grid-template-columns:auto auto 1fr auto;gap:12px;min-height:38px;padding:5px 14px;display:grid}.combat-panel-title,.combat-panel-round{color:var(--occult-gold-bright);font:700 11px/1 var(--occult-serif);letter-spacing:.1em;text-transform:uppercase}.combat-panel-round{border-left:1px solid var(--occult-line);padding-left:12px}.table-journal .combat-panel-active-name{color:#a99a7d;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.table-journal .combat-panel-detail{grid-template-columns:minmax(360px,1fr) minmax(240px,.72fr);gap:14px;height:calc(100% - 38px);padding:4px 12px 8px;display:grid;overflow:hidden}.table-journal .combat-panel-order{justify-content:center;align-items:flex-start;gap:14px;padding:2px 8px;display:flex;overflow:auto hidden}.table-journal .combat-pill{color:#bba989;min-height:70px;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:0 0 82px;justify-content:flex-start;align-items:center;gap:2px;padding:0;display:flex;position:relative}.combat-token-portrait{background:#141514;border:2px solid #725d34;border-radius:50%;place-items:center;width:48px;height:48px;display:grid;overflow:hidden;box-shadow:0 0 0 3px #090a09,0 0 0 4px #b48b4480,0 5px 10px #000}.combat-pill-active .combat-token-portrait{border-color:#dcab54;box-shadow:0 0 0 3px #17140c,0 0 0 5px #a87327,0 0 18px #e49226bf}.combat-pill-enemy .combat-token-portrait{border-color:#753128}.combat-pill-selected .combat-token-portrait{box-shadow:0 0 0 3px #220c0a,0 0 0 5px #b53e2f,0 0 20px #c53120d9}.combat-token-enemy-mark{color:#b6a589;text-shadow:0 1px #000,0 0 9px #a62b1f8c;font-size:25px}.table-journal .combat-pill-name{color:#cdbd9f;max-width:86px;font:700 9px/1.1 var(--occult-serif);text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.table-journal .combat-pill-hpband{text-transform:uppercase;background:#0c0d0c;border:1px solid;border-radius:8px;padding:2px 4px;font-size:7px;line-height:1;position:absolute;top:37px;right:7px}.table-journal .combat-panel-log{border-left:1px solid var(--occult-line);background:#1d181285;height:100%;padding:6px 10px;overflow-y:auto}.table-journal .combat-log-line{color:#aa9b7f;font:400 10px/1.3 var(--occult-serif);margin:0 0 4px}.table-journal .combat-panel-caret{color:var(--occult-gold)}.composer-area,.table-app>.collective-phase,.roll-request-card{z-index:12}.composer-area{height:88px;min-height:88px;padding:8px calc(5vw + 18px) 10px calc(var(--table-nav-width) + 304px);border-top:1px solid var(--occult-gold-dim);background:linear-gradient(90deg,#070808fa,#171410f5,#080909fa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;margin:0;box-shadow:0 -8px 25px #000000bf,inset 0 1px #dbad561a}.composer{grid-template-columns:minmax(0,1fr) auto 150px;gap:8px;max-width:1320px;height:54px;margin:0 auto;padding-left:54px;display:grid;position:relative}.composer:before{content:"✒";border:1px solid var(--occult-gold-dim);width:46px;height:46px;color:var(--occult-gold-bright);font:28px/1 var(--occult-serif);background:radial-gradient(circle,#2a2419,#0c0d0c 70%);border-radius:50%;place-items:center;display:grid;position:absolute;top:0;left:0;box-shadow:inset 0 0 12px #000}.composer input,.collective-composer textarea,.codex-search,.codex-campaign-filter,.join-card input,.join-card select,.join-card textarea,.appearance-form input,.appearance-form select,.appearance-form textarea{border:1px solid var(--occult-gold-dim);color:#e0d2b8;background:#171511e6;border-radius:0;box-shadow:inset 0 2px 10px #000000a6}.composer input{height:46px;font:italic 15px/1 var(--occult-serif);padding:0 18px}.composer button[type=submit],.roll-request-button,.collective-validate-button,.loot-take-possession,.campaign-card>button,.create-actions button[type=submit]{color:#ead9b6;font:700 13px/1 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(#315862,#17343c 55%,#0d2329);border:1px solid #b88c49;border-radius:0;box-shadow:inset 0 0 0 2px #040808b8,inset 0 0 18px #46939d29,0 3px 10px #000}.composer button[type=submit]:hover:not(:disabled),.roll-request-button:hover:not(:disabled),.collective-validate-button:hover:not(:disabled){color:#fff0ca;background:linear-gradient(#41727b,#1c424a 55%,#102c32)}.combat-target-row{text-align:center;max-width:1320px;margin:0 auto 5px}.combat-target-chip,.combat-target-hint,.turn-lock-notice{color:#a79678;font:italic 11px/1.2 var(--occult-serif)}.roll-request-card{left:calc(var(--table-nav-width) + 304px + (100vw - var(--table-nav-width) - 304px) / 2);border:1px solid var(--occult-gold);width:min(520px,100vw - 440px);box-shadow:inset 0 0 0 3px #0b0c0b, 0 16px 44px #000, var(--occult-glow);background:linear-gradient(#221b14f0,#12110efa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;padding:20px 22px;position:fixed;bottom:104px;transform:translate(-50%)}.roll-request-card:after{content:"D20";clip-path:polygon(50% 0,94% 25%,94% 75%,50% 100%,6% 75%,6% 25%);color:#d1ad61;width:72px;height:72px;font:700 14px/1 var(--occult-serif);opacity:.66;background:radial-gradient(circle,#60451f,#17140d 64%);place-items:center;display:grid;position:absolute;bottom:24px;right:24px}.roll-request-header strong{color:var(--occult-gold-bright);font:600 26px/1.1 var(--occult-serif)}.roll-request-breakdown{border-color:var(--occult-line);background:#0000002e;margin-right:100px}.table-app>.collective-phase{left:calc(var(--table-nav-width) + 304px);border:1px solid var(--occult-gold-dim);background:linear-gradient(#11110ef7,#0b0c0bfa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;max-height:42vh;position:fixed;bottom:96px;right:26px;overflow-y:auto;box-shadow:inset 0 0 0 3px #070807,0 18px 50px #000}.modal,.codex-panel{border:1px solid var(--occult-gold-dim);color:#d6c8ad;background:linear-gradient(#11110ef5,#0a0b0afa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;box-shadow:inset 0 0 0 4px #080908,inset 0 0 0 5px #bb924a33,0 28px 90px #000}.modal:before,.codex-panel:before,.join-card:before,.campaign-card:before,.lobby-party:before{content:"";pointer-events:none;border:1px solid #ae86432e;position:absolute;inset:7px}.modal-header,.codex-header{border-bottom:1px solid var(--occult-line);background:linear-gradient(90deg,#5d3b1a17,#0000 60%);min-height:62px;padding:16px 22px}.modal-header h2,.codex-header h2,.sheet-section h3,.loot-reveal-name h2{color:var(--occult-gold-bright);font-family:var(--occult-serif);letter-spacing:.04em}.modal-close,.codex-close-btn{color:#a9987a;background:0 0;border:0}.modal-close:hover,.codex-close-btn:hover{color:#ecd8aa}.sheet-view{width:min(1120px,88vw);max-width:none;height:min(900px,90vh)}.sheet-view .sheet-stats-row,.sheet-view .abilities-grid{gap:8px}.sheet-view .sheet-stat,.sheet-view .ability-view,.sheet-view .set-progress-item,.sheet-view .item-row{background:#1f1c17b8;border:1px solid #ab84414d;border-radius:0}.sheet-view .worn-equipment{border:1px solid var(--occult-line);background:radial-gradient(circle,#7e59291a,#00000026);padding:20px;position:relative}.sheet-view .worn-slot{border-color:var(--occult-gold-dim);background:linear-gradient(#26231d,#151613);border-radius:0}.sheet-view .worn-slot-detail{border-color:var(--occult-gold-dim);background:#171713;border-radius:0;box-shadow:0 10px 30px #000}.codex-panel{width:min(1220px,88vw);height:min(820px,88vh);overflow:hidden}.codex-body,.codex-rumor-list{color:var(--occult-parchment-ink);background:linear-gradient(#d2c5a5eb,#b9a57df0),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover}.codex-entry-list{background:#4f3b2717;border-right:1px solid #462e1c6b}.codex-entry-row,.codex-detail-pane,.codex-rumor-standalone{color:#2a211a}.codex-entry-row:hover,.codex-entry-row.active{background:#5f3d1e29}.codex-tabs{border-bottom:1px solid var(--occult-line);background:#11120f}.codex-bookmark{color:#9f8c6a;border-radius:0}.codex-bookmark.active{color:var(--occult-gold-bright);background:#2a2117}.join-screen,.propose-screen{background:radial-gradient(#31241724,#0304049e),url(/assets/table-blackened-oak-v1-Te8L1jHF.webp) 50%/cover fixed;min-height:100vh;padding:42px}.join-card,.propose-header,.lobby-party{border:1px solid var(--occult-gold-dim);color:#d7c8ac;background:linear-gradient(#12120ff5,#0a0b0afa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;position:relative;box-shadow:inset 0 0 0 4px #070807,0 24px 70px #000}.join-card{width:min(920px,86vw);padding:38px 42px}.select-card{width:min(760px,86vw)}.join-card h1,.propose-header h1,.lobby-party h2{color:var(--occult-gold-bright);font-family:var(--occult-serif);letter-spacing:.04em}.character-cards{gap:12px}.character-card{background:linear-gradient(90deg,#241f18e6,#12120feb);border:1px solid #a57e3e57;border-radius:0;padding:14px;position:relative}.character-card:hover{border-color:var(--occult-gold);background:linear-gradient(90deg,#35291be6,#181611f2)}.character-card>.asset-image,.selected-class-preview .asset-image{border:2px solid var(--occult-gold-dim);box-shadow:0 0 0 3px #090a09, var(--occult-glow)}.abilities-grid.create-abilities{gap:8px}.ability-buyer,.selected-class-preview,.starting-loadout-preview{background:#231f19b3;border:1px solid #aa83404d;border-radius:0}.propose-header{text-align:center;width:min(1060px,90vw);margin:0 auto 24px;padding:24px 30px}.campaign-cards{gap:18px;width:min(1420px,94vw)}.campaign-card{border:1px solid var(--occult-gold-dim);color:#d0c1a6;background:linear-gradient(#1d1a15eb,#0f0f0dfa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;position:relative;overflow:hidden;box-shadow:inset 0 0 0 4px #080908,0 16px 45px #000000a8}.campaign-card:hover{border-color:var(--occult-gold);box-shadow:inset 0 0 0 4px #080908, 0 22px 55px #000, var(--occult-glow);transform:translateY(-4px)}.campaign-card-visual,.lobby-campaign-visual{border-bottom:1px solid var(--occult-gold-dim);filter:saturate(.72)contrast(1.08)}.campaign-card h2,.campaign-card h3,.lobby-card h2{color:#e1c98f;font-family:var(--occult-serif)}.lobby-gathering{width:min(1180px,92vw)}.lobby-card,.lobby-party{border-radius:0}.lobby-party{padding:24px}.lobby-ready-button{border:1px solid var(--occult-gold);color:#dfc994;width:100%;box-shadow:inset 0 0 0 2px #0b0c0b, var(--occult-glow);background:linear-gradient(#302718,#17150f);border-radius:0;margin-top:18px;padding:14px 20px}.lobby-ready-button>span,.lobby-ready-button>small{display:block}.lobby-ready-button>span{font:700 15px/1.2 var(--occult-serif);letter-spacing:.08em;text-transform:uppercase}.lobby-ready-button>small{color:#9d8b6c;margin-top:4px}.lobby-ready-button.is-ready{background:linear-gradient(#24433e,#132622);border-color:#4e7f71}.lobby-roster>*{border-bottom:1px solid #a17b3c38}.loot-reveal{text-align:center;width:min(720px,82vw)}.loot-reveal-art .item-icon{filter:drop-shadow(0 12px 18px #000)drop-shadow(0 0 14px #c2863247)}.loot-reveal-stats,.loot-comparison,.loot-reveal-lore,.campaign-end-modal .sheet-section{background:#1e1b16b8;border:1px solid #ac84414d;border-radius:0}.loot-toast,.codex-toast,.gm-error-body,.spectator-banner,.turn-lock-notice,.spectator-composer-note{border:1px solid var(--occult-gold-dim);color:#cdbc9f;background:linear-gradient(#1a1712f5,#0c0d0bfa),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/cover;border-radius:0;box-shadow:inset 0 0 0 2px #080908,0 10px 30px #000000ad}.loot-toast:before,.codex-toast:before{content:"✦";color:#d4aa62;background:#63221d;border-radius:50%;flex:0 0 28px;place-items:center;width:28px;height:28px;display:grid;box-shadow:inset 0 0 8px #250706}.secondary,.modal-actions button,.campaign-banner-actions button,.collective-pass-button,.collective-edit-button,.collective-restart-button,.collective-retry-button,.item-actions button{border:1px solid var(--occult-gold-dim);color:#cabb9e;background:linear-gradient(#29251e,#151613);border-radius:0;box-shadow:inset 0 0 0 1px #00000094}.secondary:hover:not(:disabled),.modal-actions button:hover:not(:disabled),.campaign-banner-actions button:hover:not(:disabled),.item-actions button:hover:not(:disabled){border-color:var(--occult-gold);color:#ecd8ac;background:linear-gradient(#3a3021,#1a1813)}@media (prefers-reduced-motion:reduce){.campaign-card:hover{transform:none}.table-app:before,.table-app:after{animation:none!important}}@media (width<=1280px){.table-app{--table-nav-width:66px;min-width:1024px}.table-workspace{grid-template-columns:var(--table-nav-width) 240px minmax(700px, 1fr)}.occult-nav-item{min-height:78px}.table-center-stage{padding-inline:14px}.journal-page-spread{gap:8.2%;inset-inline:8%}.table-app .table-journal .msg{font-size:12px}.table-journal-heading strong{letter-spacing:.04em;white-space:nowrap;font-size:14px}.table-journal .combat-panel-detail{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}.table-journal .combat-panel-order,.table-journal .combat-panel-log{min-width:0}.composer-area{padding-left:calc(var(--table-nav-width) + 254px)}.roll-request-card{left:calc(var(--table-nav-width) + 254px + (100vw - var(--table-nav-width) - 254px) / 2)}}.table-app{--table-fire:#d35b1f3b;background:radial-gradient(circle at 7% 5%, var(--table-fire), transparent 29rem), radial-gradient(circle at 92% 86%, var(--table-fire), transparent 34rem), linear-gradient(#09060405, #09060433), url(/assets/table-blackened-oak-v1-Te8L1jHF.webp) center / cover}.table-app .table-rail-left{background:linear-gradient(#44271538,#110b0861),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border-color:#9764309e}.table-app .scene-ledger-panel{font-size:clamp(13px,.72vw,15px)}.table-app .scene-ledger-title{color:#68271e;letter-spacing:.035em;font-size:clamp(14px,.82vw,17px)}.modal-overlay,.codex-overlay{-webkit-backdrop-filter:blur(3px)saturate(.82);backdrop-filter:blur(3px)saturate(.82);background:radial-gradient(circle at 50% 45%,#5b371b33,#0000 42rem),#050403c2}.modal:not(.sheet-view){background:linear-gradient(#1c1510e6,#0d0b09f0),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/100% 100%;border:1px solid #b57c3cad;border-radius:2px;box-shadow:0 28px 80px #000000c2,inset 0 1px #f5be6714}.modal:not(.sheet-view) .modal-header{border-bottom:1px solid #a66d3761;padding-bottom:12px}.sheet-view{scrollbar-color:#be8542b3 #0a080673;background:radial-gradient(circle at 50% 22%,#bf80342b,#0000 28rem),linear-gradient(145deg,#30251bf0,#14100df7),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border:1px solid #c9973f9e;width:min(900px,100vw - 72px);max-width:900px;max-height:min(92vh,1100px);padding:28px 32px 34px;overflow-x:hidden;box-shadow:0 32px 100px #000000c7,inset 0 0 60px #00000038}.sheet-view .modal-header{border-bottom:1px solid #b77c3e61;padding-bottom:16px}.sheet-view .sheet-identity h2,.sheet-view .sheet-section h3{color:#e4bd76}.sheet-view .sheet-stat,.sheet-view .ability-view,.sheet-view .set-progress-item,.sheet-view .item-row{background:linear-gradient(145deg,#392b1fe6,#191511f0);border-color:#ac763d7a;box-shadow:inset 0 1px #ffffff06}.sheet-view .stat-value,.sheet-view .ability-score{color:#f0e2c7}.sheet-view .sheet-section{border-top:1px solid #9a663442;padding-top:14px}.sheet-view .worn-equipment{background:radial-gradient(#cd904217,#0000 64%);grid-template-columns:minmax(100px,1fr) minmax(210px,280px) minmax(100px,1fr);gap:26px;padding:12px 14px 18px}.sheet-view .worn-slot{background:linear-gradient(145deg,#362a1ff5,#171310fa);border-color:#a06d3985;width:78px;min-height:66px}.sheet-view .worn-column-left .worn-slot-detail{left:0;right:auto}.sheet-view .worn-column-right .worn-slot-detail{left:auto;right:0}.sheet-view .worn-slot-detail{z-index:12;background:linear-gradient(#231b15f5,#110e0cfa),url(/assets/worn-leather-DdNCGV2x.webp) 50%/cover;border-color:#c9924e;width:210px}.sheet-view .worn-silhouette{filter:drop-shadow(0 11px 22px #000000b8)contrast(1.08);max-height:420px}.codex-panel{background:linear-gradient(#19130fe0,#0b0908f0),url(/assets/hammered-iron-panel-v1-DgZarA9N.webp) 50%/100% 100%;border:1px solid #be813db8;border-radius:2px;width:min(1180px,100vw - 80px);max-width:1180px;height:min(88vh,820px);box-shadow:0 30px 100px #000000c7,inset 0 1px #f7c26d14}.codex-header{border-bottom-color:#b3773a66;padding:20px 28px}.codex-header h1{color:#e0b873;text-shadow:0 2px 4px #000;font-size:25px}.codex-toolbar,.codex-tabs{padding-inline:28px}.codex-search,.codex-campaign-filter{color:#eadcc2;background:#0c0a08bd;border-color:#9b693785}.codex-body{color:#302117;background:linear-gradient(#cdbf9eed,#b8a47ff0),url(/assets/dark-parchment-D36ts9l9.webp) 50%/cover;border:1px solid #5d392085;margin:14px 20px 20px;overflow:hidden;box-shadow:inset 0 0 36px #462a1633}.codex-entry-list{background:#4d301d14;border-right-color:#58351e5c;width:330px}.codex-entry-row{color:#352318;background:#f6e4bc3d;border-color:#5e371f52}.codex-entry-row:hover,.codex-entry-row:focus-visible,.codex-entry-row-active{background:#7d34241f;border-color:#7d3424}.codex-entry-row-meta,.codex-detail-category,.codex-detail-meta,.codex-role,.codex-detail-placeholder,.codex-fact-label,.codex-rumor-heading{color:#6d5740}.codex-detail-pane,.codex-rumor-list{color:#302117;scrollbar-color:#683d229e transparent}.codex-detail-header h2,.codex-description,.codex-fact-value,.codex-memorial-header strong{color:#302117}.codex-summary{color:#5c4734;border-left-color:#7d3424}.codex-rumor-standalone{color:#4c3025;background:#78362a17;border-color:#6b2a2461;font-size:14px}.codex-rumor-tag{color:#702e29;background:#ffecc42e;border-color:#7d3424}@media (width<=1180px){.table-journal .msg.gm,.table-journal .msg.chat,.table-journal .msg.dice,.table-journal .msg.attack{width:auto;max-width:78%}.table-journal .combat-panel-detail{grid-template-columns:1fr}.table-journal .combat-panel-log{border-top:1px solid #ad703a47;border-left:0;padding-top:8px;padding-left:0}}@media (width<=860px){.table-center-stage{order:2;overflow:visible}.sheet-view{width:min(100%,680px);padding-inline:20px}}@media (prefers-reduced-motion:reduce){.campaign-card,.item-row,.equip-slot,.character-card,button,input,select,textarea{transition:none!important}.campaign-card:hover{transform:none}}.loot-toast-stack{z-index:30;flex-direction:column;gap:8px;max-width:320px;display:flex;position:fixed;top:16px;right:16px}.loot-toast{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--toast-rarity,var(--accent));border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-sm);cursor:pointer;align-items:center;gap:10px;animation:.22s both loot-toast-in;display:flex}.loot-toast-text{color:var(--text);font-size:13px}@keyframes loot-toast-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.loot-reveal-overlay.exceptional{background:#000000d1}.loot-reveal{text-align:center;border-width:1px;align-items:center;max-width:460px;position:relative;overflow:visible}.loot-reveal.rarity-rare{border-color:var(--rarity-rare)}.loot-reveal.rarity-epic{border-color:var(--rarity-epic)}.loot-reveal.rarity-legendary{border-color:var(--rarity-legendary);box-shadow:0 0 40px #e6a23c2e}.loot-reveal.rarity-unique{border-color:var(--rarity-unique);box-shadow:0 0 40px #e63c5e29}.loot-reveal-art{justify-content:center;display:flex}.loot-reveal-art .item-icon{width:auto;height:auto}.loot-reveal-name{min-height:28px}.loot-reveal-summoning{color:var(--text-dim);font-style:italic;animation:1.4s ease-in-out infinite loot-summoning-pulse}@keyframes loot-summoning-pulse{0%,to{opacity:.55}50%{opacity:1}}.loot-reveal-name h2{margin:0 0 4px;font-size:22px;animation:.48s both loot-name-in}.legendary-signature{color:var(--rarity-legendary)}.unique-signature{color:var(--rarity-unique);font-style:italic}@keyframes loot-name-in{0%{opacity:0;filter:blur(4px);transform:translateY(4px)}to{opacity:1;filter:blur();transform:translateY(0)}}.loot-reveal-kicker{color:var(--text-dim);justify-content:center;align-items:center;gap:6px;margin:0;font-size:13px;display:flex}.unique-badge{border:1px solid var(--rarity-unique);color:var(--rarity-unique);border-radius:999px;padding:1px 8px;font-size:11px}.loot-reveal-lore{color:var(--text-dim);font-size:13px;font-style:italic}.loot-reveal-stats{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);flex-direction:column;gap:4px;font-size:13px;display:flex}.loot-reveal-set-note{color:var(--text-dim);font-size:13px}.loot-reveal-unique-facts{text-align:left;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:var(--space-2) var(--space-3);color:var(--text-dim);font-size:12px}.loot-reveal-unique-facts p{margin:3px 0}.loot-take-possession{background:linear-gradient(145deg, var(--accent), var(--accent-2));border:1px solid var(--accent);font-weight:600}.loot-comparison{text-align:left;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:var(--space-2) var(--space-3);font-size:13px}.loot-comparison-current{color:var(--text-dim);margin:0 0 4px}.loot-comparison-deltas{flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;display:flex}.delta-gain{color:#7fae86}.delta-loss{color:#b08078}.loot-reveal-actions{flex-wrap:wrap;gap:8px}.modal-close-text{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:10px 6px}.modal-close-text:hover{color:var(--text)}.loot-vfx{pointer-events:none;width:1px;height:1px;position:absolute;top:38%;left:50%}.loot-vfx i{background:var(--rarity-legendary);width:4px;height:4px;color:var(--rarity-legendary);opacity:0;--angle:calc(var(--particle) * 22.5deg);animation:1.1s ease-out both particle-burst;animation-delay:calc(var(--particle) * 14ms);border-radius:50%;position:absolute;box-shadow:0 0 10px}.loot-reveal.rarity-unique .loot-vfx i{background:var(--rarity-unique);color:var(--rarity-unique)}@media (prefers-reduced-motion:reduce){.loot-toast,.loot-reveal-summoning,.loot-reveal-name h2,.loot-vfx{animation:none!important}}@media (width<=640px){.loot-toast-stack{max-width:none;left:12px;right:12px}.loot-reveal-actions{flex-direction:column;align-items:stretch}.loot-reveal-actions select{width:100%}}.worn-equipment-section{overflow:visible}.worn-equipment{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.worn-column{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.worn-column-left{align-items:flex-end}.worn-column-right{align-items:flex-start}.worn-slot-wrap{flex-direction:column;display:flex;position:relative}.worn-column-left .worn-slot-wrap:after,.worn-column-right .worn-slot-wrap:before{content:"";pointer-events:none;width:18px;height:1px;position:absolute;top:50%}.worn-column-left .worn-slot-wrap:after{background:linear-gradient(90deg, transparent, var(--border));right:-18px}.worn-column-right .worn-slot-wrap:before{background:linear-gradient(270deg, transparent, var(--border));left:-18px}.worn-slot{width:68px;padding:var(--space-2) 4px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:inherit;font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:2px;transition:border-color .15s;display:flex}.worn-slot.filled,.worn-slot:hover,.worn-slot:focus-visible{border-color:var(--accent)}.worn-slot-label{color:var(--text-dim);text-align:center;font-size:10px;line-height:1.2}.worn-slot-wrap.expanded .worn-slot{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.worn-slot-detail{z-index:5;width:180px;padding:var(--space-2) var(--space-3);background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);flex-direction:column;gap:4px;font-size:12px;display:flex;position:absolute;top:calc(100% + 4px)}.worn-column-left .worn-slot-detail{right:0}.worn-column-right .worn-slot-detail{left:0}.worn-slot-detail-name{font-weight:600}.worn-silhouette-wrap{justify-content:center;align-items:center;width:100%;min-width:120px;max-width:220px;margin:0 auto;display:flex;position:relative}.worn-silhouette-wrap:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(#c9973f29,#0000 70%);position:absolute;inset:10% 15%}.worn-equipment.full-set .worn-silhouette-wrap:before{background:radial-gradient(#c9973f52,#c9973f14 60%,#0000 75%)}.worn-silhouette{z-index:1;object-fit:contain;filter:drop-shadow(0 8px 20px #00000080);width:100%;height:auto;max-height:360px;display:block;position:relative}.worn-silhouette-missing{aspect-ratio:2/3;background:var(--panel-2);border:1px dashed var(--border);border-radius:var(--radius-sm);width:100%}.starting-equipment-tag{font-style:italic}@media (width<=640px){.worn-equipment{align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.worn-silhouette-wrap{max-width:130px}.worn-silhouette{max-height:190px}.worn-column-left,.worn-column-right{align-items:stretch;gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.worn-column-left .worn-slot-wrap:after,.worn-column-right .worn-slot-wrap:before{display:none}.worn-slot{width:100%}.worn-slot-detail{width:100%;margin-top:4px;position:static;left:auto;right:auto}}.combat-panel{border-bottom:1px solid var(--border);background:linear-gradient(#1d1815ed, #1d1815ed), url(/assets/gothic-stone-BJANYsPb.webp) center / cover, var(--panel)}.combat-panel-summary{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) 20px;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:none;display:flex}.combat-panel-title{color:var(--accent);white-space:nowrap;font-weight:700}.combat-panel-active-name{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.combat-panel-caret{color:var(--text-dim);margin-left:auto;font-size:11px}.combat-panel-detail{padding:0 20px var(--space-3);gap:var(--space-2);flex-direction:column;display:flex}.combat-panel-order{flex-wrap:wrap;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.combat-pill{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);flex-shrink:0;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:flex}.combat-pill-active{border-color:var(--accent);color:var(--text);box-shadow:0 0 0 1px var(--accent)}.combat-pill-enemy .combat-pill-name{color:var(--danger)}.combat-pill-dead{opacity:.5;text-decoration:line-through}button.combat-pill{font:inherit;cursor:pointer;text-align:inherit;appearance:none}.combat-pill-clickable{cursor:pointer}.combat-pill-clickable:hover,.combat-pill-clickable:focus-visible{border-color:var(--accent)}.combat-pill-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.combat-pill-selected{border-color:var(--accent);color:var(--text);box-shadow:0 0 0 1px var(--accent);background:#c9973f24}.combat-pill-hpband{text-transform:uppercase;border:1px solid;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:700}.combat-hpband-intact{color:var(--success,#6fae5c)}.combat-hpband-blesse{color:var(--difficulty-normal,#d4a13d)}.combat-hpband-critique{color:var(--danger)}.combat-hpband-vaincu{color:var(--text-dim)}.combat-pill-conditions{flex-wrap:wrap;gap:4px;display:flex}.combat-condition-badge{color:var(--accent);white-space:nowrap;background:#c9973f29;border:1px solid #c9973f66;border-radius:999px;padding:1px 6px;font-size:10px}.combat-panel-log{max-height:110px;color:var(--text-dim);flex-direction:column;gap:2px;font-size:12px;display:flex;overflow-y:auto}.combat-log-line{border-bottom:1px dashed #ffffff0f;margin:0;padding:2px 0}@media (prefers-reduced-motion:reduce){.combat-panel,.combat-pill{transition:none}}@media (width<=640px){.combat-panel-order{flex-wrap:nowrap}.combat-panel-active-name{max-width:40vw}}.scene-ledger-panel{border-bottom:1px solid var(--border);background:linear-gradient(#1d1815ed, #1d1815ed), url(/assets/dark-parchment-D36ts9l9.webp) center / cover, var(--panel)}.scene-ledger-summary{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) 20px;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:none;display:flex}.scene-ledger-summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.scene-ledger-title{color:var(--accent);white-space:nowrap;font-weight:700}.scene-ledger-preview{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.scene-ledger-caret{color:var(--text-dim);margin-left:auto;font-size:11px;transition:transform .15s}.scene-ledger-detail{padding:0 20px var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.scene-ledger-group h4{text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);margin:0 0 4px;font-size:12px}.scene-ledger-group p{color:var(--text);margin:0;font-size:13px}.scene-ledger-group ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.scene-ledger-group li{align-items:baseline;gap:6px;font-size:13px;display:flex}.scene-ledger-item-name{color:var(--text)}.scene-ledger-item-state{color:var(--text-dim);font-size:12px}.scene-ledger-item-state:before{content:"— "}@media (prefers-reduced-motion:reduce){.scene-ledger-caret{transition:none}}@media (width<=768px){.scene-ledger-preview{max-width:38vw}.scene-ledger-detail{padding:0 var(--space-3) var(--space-2);gap:var(--space-2)}}.codex-overlay{z-index:40;background:#080605b8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.codex-panel{background:linear-gradient(#181310f2, #181310f2), url(/assets/worn-leather-DdNCGV2x.webp) center / cover, var(--panel);border:1px solid #c9973f73;border-radius:6px;flex-direction:column;width:100%;max-width:960px;height:min(88vh,720px);display:flex;overflow:hidden;box-shadow:0 20px 60px #00000080}.codex-header{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.codex-header h1{color:var(--accent);letter-spacing:.02em;margin:0;font:600 22px/1.1 Georgia,Times New Roman,serif}.codex-close-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:20px;line-height:1}.codex-close-btn:hover,.codex-close-btn:focus-visible{color:var(--text)}.codex-empty-state{text-align:center;color:var(--text-dim);flex:1;justify-content:center;align-items:center;padding:40px;font:italic 15px/1.5 Georgia,Times New Roman,serif;display:flex}.codex-toolbar{gap:var(--space-2);flex-wrap:wrap;flex:none;padding:14px 22px 0;display:flex}.codex-search,.codex-campaign-filter{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:8px 12px;font-size:13px}.codex-search{flex:1;min-width:160px}.codex-tabs{border-bottom:1px solid var(--border);flex:none;gap:4px;padding:14px 22px 0;display:flex;overflow-x:auto}.codex-tab{white-space:nowrap;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:6px;padding:8px 14px;font-size:13px;display:flex}.codex-tab:hover{color:var(--text)}.codex-tab-active{color:var(--accent);border-color:var(--border);border-bottom:1px solid var(--panel);background:#c9973f1a;margin-bottom:-1px}.codex-body{flex:1;min-height:0;display:flex}.codex-entry-list{border-right:1px solid var(--border);flex-direction:column;flex:none;gap:6px;width:280px;padding:10px;display:flex;overflow-y:auto}.codex-empty-search{color:var(--text-dim);text-align:center;padding:20px;font-size:13px}.codex-entry-row{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);text-align:left;cursor:pointer;align-items:center;gap:10px;padding:8px 10px;display:flex}.codex-entry-row:hover,.codex-entry-row:focus-visible{border-color:var(--accent)}.codex-entry-row-active{border-color:var(--accent);background:#c9973f1f}.codex-entry-row-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.codex-entry-row-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.codex-entry-row-meta{color:var(--text-dim);font-size:11px}.codex-bookmark{flex:none;font-size:13px}.codex-seal{width:30px;height:30px;color:var(--accent);background:#c9973f14;border:1px solid #c9973f80;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:15px;display:inline-flex}.codex-seal-sm{width:24px;height:24px;font-size:12px}.codex-detail-pane{flex:1;padding:20px 24px;overflow-y:auto}.codex-detail-placeholder{color:var(--text-dim);font:italic 14px Georgia,Times New Roman,serif}.codex-back-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0 0 10px;font-size:13px;display:none}.codex-detail-header{align-items:center;gap:12px;margin-bottom:6px;display:flex}.codex-detail-category{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-size:11px;display:block}.codex-detail-header h2{color:var(--text);margin:2px 0 0;font:600 20px Georgia,Times New Roman,serif}.codex-detail-meta{color:var(--text-dim);flex-wrap:wrap;gap:4px 16px;margin-bottom:14px;font-size:12px;display:flex}.codex-role{color:var(--text-dim);margin:0 0 8px;font-style:italic}.codex-description{color:var(--text);margin:0 0 14px;font-size:14px;line-height:1.6}.codex-summary{border-left:2px solid var(--accent);color:var(--text-dim);padding-left:12px}.codex-facts{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.codex-fact{flex-direction:column;gap:2px;font-size:13px;display:flex}.codex-fact-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-size:11px}.codex-fact-value{color:var(--text)}.codex-fallen{margin-bottom:14px}.codex-rumor-section{border-top:1px dashed var(--border);margin-top:16px;padding-top:12px}.codex-rumor-heading{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin-bottom:6px;font-size:11px;display:block}.codex-rumor-line{color:var(--text-dim);margin:0 0 8px;font:italic 13px/1.5 Georgia,Times New Roman,serif}.codex-rumor-standalone{border-radius:var(--radius-sm);background:#6e253014;border:1px solid #6e253059;padding:10px 12px}.codex-rumor-tag{font:700 10px/1 var(--sans);text-transform:uppercase;letter-spacing:.05em;color:#b3707c;border:1px solid #6e2530;border-radius:999px;margin-right:6px;padding:2px 7px;font-style:normal;display:inline-block}.codex-rumor-list{flex:1;padding:16px 24px;overflow-y:auto}.codex-relic-header,.codex-memorial-header{align-items:center;gap:12px;margin-bottom:14px;display:flex}.codex-memorial-header strong{font:600 16px Georgia,Times New Roman,serif;display:block}.codex-memorial-sub{color:var(--text-dim);font-size:12px}.codex-toast-stack{z-index:30;flex-direction:column-reverse;gap:8px;max-width:320px;display:flex;position:fixed;bottom:16px;left:16px}.codex-toast{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-sm);cursor:pointer;align-items:center;gap:10px;animation:.22s both codex-toast-in;display:flex}.codex-toast-seal{flex:none}.codex-toast-text{color:var(--text);font-size:13px}@keyframes codex-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.codex-toast{animation:none}}@media (width<=760px){.codex-panel{max-width:100%;height:92vh}.codex-body{flex-direction:column}.codex-entry-list{border-right:none;border-bottom:1px solid var(--border);width:100%;max-height:40vh}.codex-body-detail-open .codex-entry-list,.codex-body:not(.codex-body-detail-open) .codex-detail-pane{display:none}.codex-back-btn{display:inline-block}.codex-toast-stack{max-width:none;left:12px;right:12px}}
