:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;color:#f4f0e8;background:#080a12;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:linear-gradient(#080a12eb,#080a12),url("data:image/svg+xml,%3Csvg width='160' height='160' viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23222a3e' fill-opacity='0.34'%3E%3Cpath d='M0 80h160v1H0zM80 0h1v160h-1z'/%3E%3C/g%3E%3C/svg%3E");min-width:320px;overflow-x:hidden}button{font:inherit}.shell{width:min(1440px,100%);max-width:100%;margin:0 auto;padding:28px}.topbar{justify-content:space-between;align-items:center;gap:20px;min-height:72px;margin-bottom:20px;display:flex}.eyebrow{color:#8ed9c9;letter-spacing:0;text-transform:uppercase;margin:0 0 6px;font-size:.76rem;font-weight:800}h1,h2,h3,p{margin:0}h1{color:#fff8ec;font-size:clamp(2rem,4vw,4rem);font-weight:850;line-height:1}h2{color:#fff8ec;font-size:1.22rem;line-height:1.2}h3{color:#f5f1e8;font-size:1rem;line-height:1.2}.icon-button{color:#f4f0e8;cursor:pointer;background:#121827;border:1px solid #34405d;border-radius:8px;place-items:center;width:44px;height:44px;display:inline-grid}.icon-button:hover,.icon-button:focus-visible{color:#8ed9c9;border-color:#8ed9c9;outline:none}.icon-button.small{width:34px;height:34px}.icon-button:disabled{cursor:not-allowed;opacity:.62}.status-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px;display:grid}.status-tile{background:#101522;border:1px solid #2b344d;border-radius:8px;min-height:84px;padding:16px}.status-tile span{color:#aab2c5;text-transform:uppercase;margin-bottom:10px;font-size:.78rem;font-weight:700;display:block}.status-tile strong{overflow-wrap:anywhere;color:#fff8ec;font-size:1.15rem;display:block}.status-good{border-color:#8ed9c980}.status-good strong{color:#8ed9c9}.status-bad{border-color:#db5b5b80}.status-bad strong{color:#ffb0a3}.workspace{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px;min-width:0;display:grid}.main-panel,.side-panel{background:#101522eb;border:1px solid #2b344d;border-radius:8px;min-width:0}.main-panel{padding:20px}.side-panel{padding:18px}.auth-panel{margin-bottom:18px}.panel-heading{justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;display:flex}.panel-heading.compact{margin-bottom:12px}.pill{border-radius:999px;align-items:center;min-height:30px;padding:6px 10px;font-size:.8rem;font-weight:800;display:inline-flex}.pill-good{color:#8ed9c9;background:#54b79024}.pill-warn{color:#ffd586;background:#dbb35b26}.module-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0;display:grid}.campaign-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.campaign-heading{margin-bottom:14px}.campaign-layout{grid-template-columns:300px minmax(220px,.8fr) minmax(280px,1.2fr);align-items:start;gap:12px;display:grid}.campaign-form,.session-form{gap:10px;min-width:0;display:grid}.campaign-form label,.session-form label{gap:6px;display:grid}.campaign-form label span,.session-form label span{color:#aab2c5;font-size:.82rem;font-weight:800}.campaign-form input,.campaign-form textarea,.session-form input,.character-editor input,.character-editor select,.character-editor textarea,.dice-form input,.dice-form select,.map-form input,.map-form select,.token-form input,.token-form select,.action-form input,.action-form select,.action-form textarea,.scene-editor input,.scene-editor select,.scene-editor textarea,.obs-url-field input,.redirect-field input,.twitch-config-field input,.vtt-card input,.vtt-card textarea,.asset-upload input,.room-name-field input,.room-request-form input,.room-request-form textarea{color:#fff8ec;width:100%;min-height:42px;font:inherit;background:#0d1220;border:1px solid #34405d;border-radius:8px;padding:10px 12px}.campaign-form textarea,.character-editor textarea,.action-form textarea,.scene-editor textarea{resize:vertical}.campaign-form input:focus,.campaign-form textarea:focus,.session-form input:focus,.character-editor input:focus,.character-editor select:focus,.character-editor textarea:focus,.dice-form input:focus,.dice-form select:focus,.map-form input:focus,.map-form select:focus,.token-form input:focus,.token-form select:focus,.action-form input:focus,.action-form select:focus,.action-form textarea:focus,.scene-editor input:focus,.scene-editor select:focus,.scene-editor textarea:focus,.obs-url-field input:focus,.redirect-field input:focus,.twitch-config-field input:focus,.vtt-card input:focus,.vtt-card textarea:focus,.asset-upload input:focus,.room-name-field input:focus,.room-request-form input:focus,.room-request-form textarea:focus{border-color:#8ed9c9;outline:none}.campaign-list,.session-list{gap:8px;min-width:0;display:grid}.campaign-row{color:#f4f0e8;cursor:pointer;text-align:left;background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:minmax(0,1fr) 34px;gap:10px;width:100%;min-height:62px;padding:12px;display:grid}.campaign-row:hover,.campaign-row:focus-visible,.campaign-row.is-selected{border-color:#8ed9c9;outline:none}.campaign-row span{gap:4px;min-width:0;display:grid}.campaign-row strong,.session-row strong{overflow-wrap:anywhere;color:#fff8ec;line-height:1.2}.campaign-row small,.session-row span{overflow-wrap:anywhere;color:#aab2c5;font-size:.86rem}.campaign-row em{color:#8ed9c9;background:#171f31;border-radius:999px;place-items:center;width:30px;height:30px;font-style:normal;font-weight:850;display:inline-grid}.session-panel{gap:12px;min-width:0;display:grid}.session-heading{background:#0d1220;border:1px solid #2b344d;border-radius:8px;padding:12px}.session-heading div{gap:4px;display:grid}.session-heading span{color:#aab2c5;text-transform:uppercase;font-size:.78rem;font-weight:800}.session-heading strong{overflow-wrap:anywhere;color:#fff8ec}.session-row{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:5px;min-height:58px;padding:12px;display:grid}.live-session-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.live-heading{margin-bottom:14px}.live-session-grid{grid-template-columns:minmax(280px,.9fr) minmax(220px,.8fr) minmax(240px,.7fr);align-items:stretch;gap:12px;min-width:0;display:grid}.live-card{background:#0d1220;border:1px solid #2b344d;border-radius:8px;align-content:space-between;gap:12px;min-width:0;min-height:148px;padding:14px;display:grid}.live-card div{gap:6px;min-width:0;display:grid}.live-card span,.live-metrics span{color:#aab2c5;text-transform:uppercase;font-size:.78rem;font-weight:850}.live-card strong{overflow-wrap:anywhere;color:#fff8ec;font-size:1.25rem;line-height:1.15}.live-card em{color:#8ed9c9;background:#171f31;border-radius:999px;justify-self:start;min-height:30px;padding:6px 10px;font-style:normal;font-weight:900}.live-card small{overflow-wrap:anywhere;color:#c9ceda;line-height:1.35}.live-status-live{border-color:#8ed9c97a}.live-status-paused{border-color:#ffd58675}.live-status-completed,.live-status-cancelled{border-color:#aab2c557}.live-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;display:grid}.live-metrics div{background:#0d1220;border:1px solid #2b344d;border-radius:8px;align-content:center;gap:8px;min-height:68px;padding:12px;display:grid}.live-metrics strong{color:#fff8ec;font-size:1.35rem;line-height:1}.live-actions{flex-wrap:wrap;align-content:start;align-items:start;gap:8px;min-width:0;display:flex}.live-action{color:#f4f0e8;cursor:pointer;background:#121827;border:1px solid #34405d;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:8px 12px;font-weight:850;display:inline-flex}.live-action:disabled{cursor:not-allowed;opacity:.62}.live-action-good{color:#8ed9c9;border-color:#8ed9c980}.live-action-warn{color:#ffd586;border-color:#ffd58680}.live-action-bad{color:#ffb0a3;border-color:#db5b5b80}.live-action:hover:not(:disabled),.live-action:focus-visible:not(:disabled){outline:none}.live-action-good:hover:not(:disabled),.live-action-good:focus-visible:not(:disabled){border-color:#8ed9c9}.live-action-warn:hover:not(:disabled),.live-action-warn:focus-visible:not(:disabled){border-color:#ffd586}.live-action-bad:hover:not(:disabled),.live-action-bad:focus-visible:not(:disabled){border-color:#ffb0a3}.character-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.character-heading{margin-bottom:14px}.mini-command{color:#8ed9c9;cursor:pointer;background:#54b79024;border:1px solid #8ed9c980;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:8px 12px;font-weight:850;display:inline-flex}.mini-command:disabled{cursor:not-allowed;opacity:.62}.mini-command:hover:not(:disabled),.mini-command:focus-visible:not(:disabled){border-color:#8ed9c9;outline:none}.mini-link{color:#8ed9c9;cursor:pointer;background:#54b79024;border:1px solid #8ed9c980;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:8px 12px;font-weight:850;text-decoration:none;display:inline-flex}.mini-link:hover,.mini-link:focus-visible{border-color:#8ed9c9;outline:none}.character-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.character-roster{gap:8px;min-width:0;display:grid}.character-row{color:#f4f0e8;cursor:pointer;text-align:left;background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:68px;padding:12px;display:grid}.character-row:hover,.character-row:focus-visible,.character-row.is-selected{border-color:#8ed9c9;outline:none}.character-row-icon{color:#ffd586;background:#171f31;border-radius:8px;place-items:center;width:38px;height:38px;display:grid}.character-row span:nth-child(2){gap:4px;min-width:0;display:grid}.character-row strong{overflow-wrap:anywhere;color:#fff8ec;line-height:1.2}.character-row small{overflow-wrap:anywhere;color:#aab2c5;font-size:.84rem}.character-row em{color:#8ed9c9;font-size:.78rem;font-style:normal;font-weight:850}.character-editor{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:12px;min-width:0;padding:14px;display:grid}.editor-toolbar{color:#ffd586;border-bottom:1px solid #2b344d;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding-bottom:12px;display:flex}.editor-toolbar div{gap:4px;min-width:0;display:grid}.editor-toolbar span,.editor-section-title span,.character-editor label span{color:#aab2c5;font-size:.82rem;font-weight:800}.editor-toolbar strong{overflow-wrap:anywhere;color:#fff8ec}.form-grid{gap:10px;min-width:0;display:grid}.form-grid.two-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.character-editor label{gap:6px;min-width:0;display:grid}.editor-section{gap:10px;min-width:0;display:grid}.editor-section-title{color:#ffd586;align-items:center;gap:8px;display:flex}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.resource-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.resource-row{background:#121827;border:1px solid #2b344d;border-radius:8px;grid-template-columns:minmax(0,1fr) 84px 84px;align-items:end;gap:8px;min-width:0;padding:10px;display:grid}.resource-row strong{overflow-wrap:anywhere;color:#fff8ec;align-self:center}.dice-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.dice-heading{margin-bottom:14px}.dice-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.dice-form{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;padding:14px;display:grid}.dice-form label{gap:6px;min-width:0;display:grid}.dice-form label span{color:#aab2c5;font-size:.82rem;font-weight:800}.quick-dice{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.quick-dice button{color:#ffd586;cursor:pointer;background:#121827;border:1px solid #34405d;border-radius:8px;min-height:38px;font-weight:850}.quick-dice button:hover,.quick-dice button:focus-visible{border-color:#ffd586;outline:none}.dice-history{gap:8px;min-width:0;display:grid}.dice-roll{background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:86px minmax(0,1fr);gap:12px;min-width:0;min-height:82px;padding:12px;display:grid}.dice-secret,.dice-gm{border-color:#dbb35b73}.dice-total{background:#171f31;border-radius:8px;align-content:center;place-items:center;gap:4px;min-width:0;display:grid}.dice-total strong{color:#fff8ec;font-size:1.55rem;line-height:1}.dice-total span{overflow-wrap:anywhere;color:#8ed9c9;font-size:.8rem;font-weight:850}.dice-roll-body{gap:5px;min-width:0;display:grid}.dice-roll-title{justify-content:space-between;align-items:start;gap:8px;min-width:0;display:flex}.dice-roll-title strong{overflow-wrap:anywhere;color:#fff8ec}.dice-roll-title span{color:#ffd586;flex:none;font-size:.78rem;font-weight:850}.dice-roll p{overflow-wrap:anywhere;color:#c9ceda;font-size:.9rem;line-height:1.35}.dice-roll small{overflow-wrap:anywhere;color:#aab2c5;font-size:.8rem}.map-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.map-heading{margin-bottom:14px}.map-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.map-tools{gap:12px;min-width:0;display:grid}.map-form,.token-form{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;padding:14px;display:grid}.map-form label,.token-form label,.action-form label{gap:6px;min-width:0;display:grid}.map-form label span,.token-form label span,.action-form label span{color:#aab2c5;font-size:.82rem;font-weight:800}.map-list{gap:8px;min-width:0;display:grid}.map-row{color:#f4f0e8;cursor:pointer;text-align:left;background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:10px;width:100%;min-height:62px;padding:12px;display:grid}.map-row:hover,.map-row:focus-visible,.map-row.is-selected{border-color:#8ed9c9;outline:none}.map-row span{gap:4px;min-width:0;display:grid}.map-row strong{overflow-wrap:anywhere;color:#fff8ec}.map-row small{overflow-wrap:anywhere;color:#aab2c5;font-size:.84rem}.map-row svg{color:#ffd586}.map-stage{gap:12px;min-width:0;display:grid}.map-toolbar{background:#0d1220;border:1px solid #2b344d;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:12px;display:flex}.map-toolbar div{gap:4px;min-width:0;display:grid}.map-toolbar span{color:#aab2c5;font-size:.82rem;font-weight:800}.map-toolbar strong{overflow-wrap:anywhere;color:#fff8ec}.map-board{cursor:crosshair;background-image:linear-gradient(#8ed9c929 1px,#0000 1px),linear-gradient(90deg,#8ed9c929 1px,#0000 1px);border:1px solid #34405d;border-radius:8px;width:100%;min-height:260px;position:relative;overflow:hidden}.map-board.grid-none{background-image:none}.map-token{color:#080a12;cursor:pointer;border:2px solid #fff8ecdb;border-radius:999px;place-items:center;min-width:24px;min-height:24px;font-weight:900;display:grid;position:absolute;box-shadow:0 8px 18px #00000052}.map-token:hover,.map-token:focus-visible,.map-token.is-selected{border-color:#ffd586;outline:2px solid #ffd58647}.map-token span{text-overflow:ellipsis;max-width:100%;padding:2px;font-size:.78rem;line-height:1;overflow:hidden}.token-effect{border-radius:8px}.map-selection{background:#0d1220;border:1px solid #2b344d;border-radius:8px;justify-content:space-between;gap:12px;min-width:0;padding:12px;display:flex}.map-selection strong,.map-selection span{overflow-wrap:anywhere}.map-selection strong{color:#fff8ec}.map-selection span{color:#aab2c5}.action-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.action-heading{margin-bottom:14px}.action-layout{grid-template-columns:340px minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.action-form{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;padding:14px;display:grid}.action-list{gap:8px;min-width:0;display:grid}.action-request{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;min-height:118px;padding:12px;display:grid}.action-pending{border-color:#ffd58670}.action-approved,.action-applied{border-color:#8ed9c966}.action-rejected,.action-failed{border-color:#db5b5b6b}.action-request-head{justify-content:space-between;align-items:start;gap:12px;min-width:0;display:flex}.action-request-head div{align-items:center;gap:8px;min-width:0;display:flex}.action-request-head strong{overflow-wrap:anywhere;color:#fff8ec;line-height:1.25}.action-priority{color:#ffd586;background:#171f31;border-radius:8px;flex:none;place-items:center;min-width:34px;height:30px;font-size:.78rem;font-weight:900;display:inline-grid}.action-status{color:#aab2c5;background:#171f31;border-radius:999px;flex:none;min-height:28px;padding:6px 9px;font-size:.76rem;font-weight:850}.action-status-pending{color:#ffd586}.action-status-approved,.action-status-applied{color:#8ed9c9}.action-status-rejected,.action-status-failed{color:#ffb0a3}.action-meta{flex-wrap:wrap;gap:6px;display:flex}.action-meta span{color:#c9ceda;background:#121827;border:1px solid #2b344d;border-radius:8px;min-height:26px;padding:5px 8px;font-size:.8rem;font-weight:760}.action-summary,.action-target{overflow-wrap:anywhere;color:#c9ceda;line-height:1.4}.action-summary{font-size:.92rem}.action-target{color:#aab2c5;font-size:.82rem}.action-decisions{flex-wrap:wrap;gap:8px;display:flex}.decision-button{color:#f4f0e8;cursor:pointer;background:#121827;border:1px solid #34405d;border-radius:8px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:8px 11px;font-weight:850;display:inline-flex}.decision-button:disabled{cursor:not-allowed;opacity:.64}.decision-button:hover:not(:disabled),.decision-button:focus-visible:not(:disabled){outline:none}.decision-approve{color:#8ed9c9;border-color:#8ed9c980}.decision-approve:hover:not(:disabled),.decision-approve:focus-visible:not(:disabled){border-color:#8ed9c9}.decision-reject{color:#ffb0a3;border-color:#db5b5b80}.decision-reject:hover:not(:disabled),.decision-reject:focus-visible:not(:disabled){border-color:#ffb0a3}.scene-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.scene-heading{margin-bottom:14px}.scene-layout{grid-template-columns:minmax(340px,.9fr) minmax(360px,1.1fr);align-items:start;gap:12px;min-width:0;display:grid}.scene-editor{gap:12px;min-width:0;display:grid}.scene-editor label{gap:6px;min-width:0;display:grid}.scene-editor label span,.scene-subpanel-head span,.scene-widget-toolbar span{color:#aab2c5;font-size:.82rem;font-weight:800}.scene-toggles{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.scene-toggles label,.scene-subpanel-head label,.scene-widget-toolbar label{background:#0d1220;border:1px solid #2b344d;border-radius:8px;align-items:center;gap:8px;min-width:0;min-height:38px;padding:8px 10px;display:inline-flex}.scene-subpanel{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;padding:12px;display:grid}.scene-subpanel-head,.scene-widget-toolbar{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.scene-subpanel-head strong{color:#fff8ec}.scene-widget-list{gap:10px;display:grid}.scene-widget-editor{background:#121827;border:1px solid #34405d;border-radius:8px;gap:10px;min-width:0;padding:10px;display:grid}.scene-position-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.scene-preview{--scene-accent:#8ed9c9;background:#080a12;border:1px solid #8ed9c957;border-radius:8px;min-height:520px;position:sticky;top:16px;overflow:hidden}.scene-preview-ember{background:#120c08}.scene-preview-aether{background:#091014}.scene-preview-header{border-bottom:1px solid #fff8ec1f;justify-content:space-between;gap:12px;padding:14px;display:flex}.scene-preview-header span{color:var(--scene-accent);text-transform:uppercase;font-size:.74rem;font-weight:900}.scene-preview-header strong{overflow-wrap:anywhere;color:#fff8ec}.scene-preview-announcement{color:#fff8ec;background:#121827eb;border:1px solid #8ed9c966;border-radius:8px;margin:12px;padding:10px 12px;font-weight:820}.scene-preview-announcement.tone-warning{color:#ffd586;border-color:#ffd58675}.scene-preview-announcement.tone-danger{color:#ffb0a3;border-color:#ffb0a380}.scene-preview-announcement.tone-success{color:#8ed9c9;border-color:#8ed9c980}.scene-preview-grid{grid-template-columns:minmax(0,1.45fr) minmax(0,.72fr);grid-auto-rows:minmax(96px,1fr);gap:10px;min-height:320px;padding:12px;display:grid}.scene-layout-cinematic .scene-preview-grid{grid-template-columns:1fr}.scene-layout-minimal .scene-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));min-height:220px}.scene-preview-map,.scene-preview-side{background-color:#111827;background-image:linear-gradient(#8ed9c91f 1px,#0000 1px),linear-gradient(90deg,#8ed9c91f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #2b344d;border-radius:8px}.scene-preview-map{grid-row:span 2}.scene-preview-side{color:#aab2c5;place-items:center;font-weight:850;display:grid}.scene-preview-lower{border-left:4px solid var(--scene-accent);background:#080a12e6;border-radius:8px;gap:4px;width:min(430px,100% - 36px);padding:12px 14px;display:grid;position:absolute;bottom:18px;left:18px}.scene-preview-lower strong,.scene-preview-widget strong{overflow-wrap:anywhere;color:#fff8ec}.scene-preview-lower span,.scene-preview-widget span{overflow-wrap:anywhere;color:#c9ceda;font-size:.88rem}.scene-preview-widget{background:#0d1220e6;border:1px solid #8ed9c952;border-radius:8px;align-content:start;gap:5px;min-width:120px;padding:10px;display:grid;position:absolute}.scene-preview-widget.widget-stat{border-color:#ffd58673}.scene-preview-widget.widget-image{border-style:dashed}.obs-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.obs-heading{margin-bottom:14px}.obs-layout{grid-template-columns:minmax(320px,.62fr) minmax(0,1fr);align-items:stretch;gap:12px;min-width:0;display:grid}.obs-url-field{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:8px;min-width:0;padding:14px;display:grid}.obs-url-field span{color:#aab2c5;font-size:.82rem;font-weight:800}.obs-preview{background:#080a12;border:1px solid #8ed9c957;border-radius:8px;grid-template-rows:auto minmax(140px,1fr);gap:12px;min-width:0;padding:14px;display:grid}.obs-preview-header{justify-content:space-between;gap:12px;min-width:0;display:flex}.obs-preview-header span{color:#8ed9c9;text-transform:uppercase;font-size:.78rem;font-weight:900}.obs-preview-header strong{overflow-wrap:anywhere;color:#fff8ec}.obs-preview-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:minmax(0,1.4fr) minmax(0,.7fr);gap:10px;min-height:140px;display:grid}.obs-preview-grid div{background-color:#111827;background-image:linear-gradient(#8ed9c91f 1px,#0000 1px),linear-gradient(90deg,#8ed9c91f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #2b344d;border-radius:8px}.obs-preview-grid div:first-child{grid-row:1/span 2}.module-card{background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:42px minmax(0,1fr);gap:12px;min-width:0;min-height:118px;padding:14px;display:grid}.module-icon{color:#b9c1d4;background:#171f31;border-radius:8px;place-items:center;width:42px;height:42px;display:grid}.module-title-row{justify-content:space-between;align-items:start;gap:8px;min-width:0;margin-bottom:8px;display:flex}.module-card>div:last-child{min-width:0}.module-title-row span{color:#aab2c5;text-transform:uppercase;flex:none;font-size:.72rem;font-weight:800}.module-card p{color:#aab2c5;font-size:.92rem;line-height:1.35}.module-done{border-color:#8ed9c96b}.module-done .module-icon{color:#8ed9c9;background:#54b79024}.module-current{border-color:#de7e5980}.module-current .module-icon{color:#ffad8d;background:#de7e5926}.module-next{border-color:#ffd58673}.module-next .module-icon{color:#ffd586;background:#dbb35b26}.validation-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.validation-heading{margin-bottom:12px}.validation-summary{grid-template-columns:auto auto;align-items:center;gap:10px;min-height:34px;display:inline-grid}.validation-summary span,.validation-section-head span{color:#aab2c5;text-transform:uppercase;font-size:.78rem;font-weight:850}.validation-summary strong{color:#8ed9c9;font-size:1.1rem;line-height:1}.validation-progress{background:#0d1220;border:1px solid #2b344d;border-radius:8px;height:8px;overflow:hidden}.validation-progress span{background:#8ed9c9;border-radius:8px;height:100%;transition:width .18s;display:block}.validation-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.validation-sync{overflow-wrap:anywhere;color:#aab2c5;min-width:0;font-size:.86rem;font-weight:760}.validation-sync.is-error{color:#ffb0a3}.validation-sections{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin-top:12px;display:grid}.validation-section{background:#0d1220;border:1px solid #2b344d;border-radius:8px;align-content:start;gap:10px;min-width:0;padding:12px;display:grid}.validation-section.is-complete{border-color:#8ed9c975}.validation-section-head{border-bottom:1px solid #2b344d;grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:10px;min-width:0;padding-bottom:10px;display:grid}.validation-section-head div{gap:4px;min-width:0;display:grid}.validation-section-head strong{overflow-wrap:anywhere;color:#fff8ec;line-height:1.2}.validation-items{gap:7px;min-width:0;display:grid}.validation-item{color:#c9ceda;background:#121827;border:1px solid #2b344d;border-radius:8px;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:9px;min-width:0;min-height:34px;padding:8px;line-height:1.35;display:grid}.validation-item input{accent-color:#8ed9c9;width:16px;height:16px;margin:2px 0 0}.validation-item input:disabled{cursor:not-allowed}.validation-item span{overflow-wrap:anywhere;min-width:0}.validation-item.is-checked{color:#8ed9c9;background:#54b7901a;border-color:#8ed9c957}.health-list{background:#2b344d;border:1px solid #2b344d;border-radius:8px;gap:1px;margin:0;display:grid;overflow:hidden}.health-list div{background:#0d1220;grid-template-columns:130px minmax(0,1fr);gap:12px;min-height:46px;padding:12px;display:grid}.health-list dt{color:#aab2c5;font-size:.82rem;font-weight:800}.health-list dd{overflow-wrap:anywhere;color:#f4f0e8;min-width:0;margin:0;font-size:.9rem}.runtime-note{color:#c9ceda;background:#121827;border:1px solid #34405d;border-radius:8px;margin-top:12px;padding:12px;font-size:.9rem;line-height:1.4}.runtime-error{color:#ffb0a3;border-color:#db5b5b80}.auth-heading-icon{color:#ffd586;background:#dbb35b26;flex:none}.auth-form{gap:12px;display:grid}.auth-form label{gap:6px;display:grid}.auth-form label span{color:#aab2c5;font-size:.82rem;font-weight:800}.auth-form input{color:#fff8ec;width:100%;min-height:42px;font:inherit;background:#0d1220;border:1px solid #34405d;border-radius:8px;padding:10px 12px}.auth-form input:focus{border-color:#8ed9c9;outline:none}.command-button{color:#8ed9c9;cursor:pointer;background:#54b79024;border:1px solid #8ed9c980;border-radius:8px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:42px;font-weight:850;display:inline-flex}.command-button:disabled{cursor:not-allowed;opacity:.68}.command-button:hover:not(:disabled),.command-button:focus-visible:not(:disabled){border-color:#8ed9c9;outline:none}.form-message{color:#ffb0a3;font-size:.9rem;line-height:1.35}.form-success{color:#8ed9c9}.auth-user{gap:12px;display:grid}.auth-user dl{background:#2b344d;border:1px solid #2b344d;border-radius:8px;gap:1px;margin:0;display:grid;overflow:hidden}.auth-user dl div{background:#0d1220;gap:4px;padding:12px;display:grid}.auth-user dt{color:#aab2c5;font-size:.82rem;font-weight:800}.auth-user dd{overflow-wrap:anywhere;color:#f4f0e8;min-width:0;margin:0;font-size:.92rem}.twitch-panel{margin-bottom:18px}.twitch-heading-icon{color:#c7a7ff;background:#6e56cf29;flex:none}.twitch-body{gap:12px;display:grid}.twitch-account{background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:12px;min-width:0;padding:12px;display:grid}.twitch-account img,.twitch-avatar-fallback{border-radius:8px;width:58px;height:58px}.twitch-account img{object-fit:cover}.twitch-avatar-fallback{color:#c7a7ff;background:#171f31;place-items:center;font-weight:900;display:grid}.twitch-account dl{gap:7px;min-width:0;margin:0;display:grid}.twitch-account dl div{gap:3px;min-width:0;display:grid}.twitch-account dt,.redirect-field span{color:#aab2c5;font-size:.82rem;font-weight:800}.twitch-account dd{overflow-wrap:anywhere;color:#f4f0e8;min-width:0;margin:0;font-size:.92rem}.scope-list{flex-wrap:wrap;gap:6px;display:flex}.scope-list span{color:#c9ceda;background:#121827;border:1px solid #2b344d;border-radius:8px;min-height:26px;padding:5px 8px;font-size:.78rem;font-weight:780}.redirect-field{gap:6px;min-width:0;display:grid}.twitch-settings-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;padding-top:4px;display:grid}.twitch-settings-head{grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.twitch-settings-head strong{color:#f4f0e8;font-size:.9rem}.twitch-settings-head span{flex:none;font-size:.76rem;font-weight:900}.twitch-config-field{gap:6px;min-width:0;display:grid}.twitch-config-field span{color:#aab2c5;justify-content:space-between;align-items:center;gap:8px;min-width:0;font-size:.82rem;font-weight:800;display:flex}.twitch-config-field em{color:#8ed9c9;text-transform:uppercase;flex:none;font-size:.7rem;font-style:normal;font-weight:900}.twitch-settings-form .command-button,.twitch-config-field:last-of-type{grid-column:1/-1}.eventsub-panel{margin-bottom:18px}.eventsub-heading-icon{color:#ffad8d;background:#de7e5926;flex:none}.eventsub-body{gap:12px;display:grid}.eventsub-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.eventsub-checks span{background:#0d1220;border:1px solid #2b344d;border-radius:8px;align-items:center;gap:6px;min-width:0;min-height:34px;padding:8px 10px;font-size:.82rem;font-weight:850;display:inline-flex}.check-good{color:#8ed9c9}.check-bad{color:#ffb0a3}.eventsub-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.event-list{gap:8px;display:grid}.event-row{background:#0d1220;border:1px solid #2b344d;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.event-row div{gap:4px;min-width:0;display:grid}.event-row strong,.event-row span{overflow-wrap:anywhere}.event-row strong{color:#fff8ec;font-size:.9rem}.event-row span{color:#aab2c5;font-size:.8rem;line-height:1.3}.event-row em{color:#8ed9c9;text-transform:uppercase;font-size:.74rem;font-style:normal;font-weight:850}.room-shell{color:#f4f0e8;background:#080a12;min-height:100vh;padding:18px}.room-topbar{border-bottom:1px solid #2b344d;grid-template-columns:minmax(0,1fr) minmax(220px,320px);align-items:end;gap:16px;margin-bottom:16px;padding-bottom:14px;display:grid}.room-topbar h1{margin:0 0 4px;font-size:clamp(1.8rem,3vw,3.2rem)}.room-topbar span,.muted{color:#aab2c5}.room-name-field,.room-request-form label,.vtt-card label,.asset-upload{gap:6px;min-width:0;display:grid}.room-name-field span,.room-request-form label span,.vtt-card label span,.asset-upload span{color:#aab2c5;font-size:.82rem;font-weight:850}.room-layout{grid-template-columns:280px minmax(0,1fr) 320px;align-items:start;gap:14px;display:grid}.room-side,.room-stack,.room-events,.presence-list,.vtt-token-list{gap:8px;min-width:0;display:grid}.room-card,.vtt-card{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:10px;min-width:0;padding:12px;display:grid}.room-card h2{margin:0}.room-stage,.vtt-stage{min-width:0}.room-interaction{background:#121827;border:1px solid #34405d;border-radius:8px;gap:8px;min-width:0;padding:10px;display:grid}.room-option-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.room-events span,.presence-list span,.vtt-token-list span{overflow-wrap:anywhere;color:#c9ceda;min-width:0;font-size:.82rem}.vtt-shell-panel{border-top:1px solid #2b344d;margin-top:20px;padding-top:20px}.vtt-topline{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;margin-bottom:12px;display:grid}.vtt-topline h2{margin:0 0 4px}.vtt-topline span{color:#aab2c5}.vtt-mode-switch{background:#0d1220;border:1px solid #2b344d;border-radius:8px;gap:6px;padding:4px;display:inline-flex}.vtt-mode-switch button{color:#aab2c5;min-height:32px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:.82rem;font-weight:850}.vtt-mode-switch button.is-active{color:#8ed9c9;background:#182132}.vtt-grid{grid-template-columns:112px minmax(0,1fr) 320px;align-items:start;gap:12px;display:grid}.vtt-tools{gap:8px;display:grid;position:sticky;top:12px}.tool-button{color:#c9ceda;min-height:64px;font:inherit;cursor:pointer;background:#0d1220;border:1px solid #2b344d;border-radius:8px;justify-items:center;gap:5px;padding:8px;font-size:.78rem;font-weight:850;display:grid}.tool-button.is-active,.tool-button:hover{color:#8ed9c9;border-color:#8ed9c98c}.tool-button:disabled{cursor:not-allowed;opacity:.6}.vtt-map-preview{background-position:50%;background-repeat:no-repeat;border:1px solid #2b344d;border-radius:8px;min-height:320px;position:relative;overflow:hidden}.vtt-map-preview.grid-square{background-image:linear-gradient(#ffffff14 1px,#0000 1px),linear-gradient(90deg,#ffffff14 1px,#0000 1px)}.vtt-zone-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.vtt-preview-token{color:#081018;border:2px solid #ffffffb3;border-radius:999px;place-items:center;min-width:22px;min-height:22px;font-size:.72rem;font-weight:950;display:grid;position:absolute;box-shadow:0 8px 18px #00000059}.vtt-map-caption{background:#080a12d6;border:1px solid #ffffff1f;border-radius:8px;justify-content:space-between;gap:10px;min-width:0;padding:8px 10px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.vtt-map-caption strong,.vtt-map-caption span{overflow-wrap:anywhere;min-width:0}.vtt-map-caption span{color:#aab2c5;font-size:.82rem}.vtt-inspector{gap:10px;min-width:0;display:grid}.asset-upload input{min-height:44px;padding:9px}@media (width<=1100px){.workspace{grid-template-columns:1fr}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.validation-sections,.campaign-layout,.live-session-grid,.character-layout,.dice-layout,.map-layout,.action-layout,.scene-layout{grid-template-columns:1fr}.scene-preview{position:relative;top:auto}.obs-layout,.resource-grid,.room-layout,.vtt-grid{grid-template-columns:1fr}.vtt-tools{grid-template-columns:repeat(4,minmax(0,1fr));position:static}}@media (width<=720px){.shell{width:100%;padding:18px}.topbar{grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.icon-button{justify-self:start}.status-strip,.module-grid{grid-template-columns:1fr}.panel-heading{grid-template-columns:minmax(0,1fr);place-items:flex-start start;display:grid}.room-shell{padding:14px}.room-topbar,.vtt-topline,.room-option-grid,.vtt-tools{grid-template-columns:1fr}.vtt-mode-switch{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.validation-actions{grid-template-columns:1fr;display:grid}.validation-actions .mini-command{width:100%}.module-title-row{flex-direction:column;gap:4px}.health-list div{grid-template-columns:1fr;gap:4px}.form-grid.two-cols,.twitch-settings-form,.stat-grid{grid-template-columns:1fr}.character-row{grid-template-columns:34px minmax(0,1fr)}.character-row em{grid-column:2}.resource-row{grid-template-columns:1fr}.quick-dice{grid-template-columns:repeat(2,minmax(0,1fr))}.dice-roll{grid-template-columns:1fr}.dice-total{min-height:64px}.dice-roll-title,.map-toolbar,.map-selection{display:grid}.map-board{min-height:220px}.action-request-head{display:grid}.action-request-head div,.action-decisions{grid-template-columns:1fr;display:grid}.action-status{justify-self:start}.live-metrics{grid-template-columns:1fr}.live-actions{grid-template-columns:1fr;display:grid}.scene-toggles,.scene-position-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.scene-subpanel-head,.scene-widget-toolbar,.scene-preview-header{display:grid}.scene-preview-grid,.scene-layout-minimal .scene-preview-grid{grid-template-columns:1fr}.scene-preview-map{grid-row:auto}.obs-preview-header{display:grid}.obs-preview-grid{grid-template-columns:1fr}.obs-preview-grid div:first-child{grid-row:auto}}
