:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#e8e4da;--bg:#181816;--surface:#20201d;--surface-2:#292824;--surface-3:#34322c;--line:#47443b;--line-strong:#696356;--text:#e8e4da;--muted:#aaa598;--faint:#777267;--accent:#c46f49;--accent-hover:#d57d55;--danger:#da6b61;--ok:#7ba77a;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;background:#181816;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{min-width:960px}button,input,select,textarea{font:inherit;color:inherit}button,select,input,textarea{border:1px solid var(--line);background:var(--surface-2);border-radius:3px}button{cursor:pointer;min-height:32px;padding:5px 10px}button:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-3)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#1a1511;font-weight:700}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}input,select,textarea{width:100%;padding:7px 8px}textarea{resize:vertical;line-height:1.45}h1,h2,h3,p{margin:0}h1{font-size:1.5rem;line-height:1.2}h2{font-size:1.25rem;line-height:1.2}h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.82rem;line-height:1.2}code{color:#d9c68d;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.app-shell{background:var(--bg);grid-template-rows:44px minmax(0,1fr);height:100%;display:grid}.topbar{align-items:center;gap:var(--space-lg);padding:0 var(--space-md);border-bottom:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(260px,1fr) auto minmax(330px,1fr);display:grid}.brand,.status-line{align-items:center;gap:var(--space-md);min-width:0;display:flex}.brand strong{letter-spacing:.02em}.brand span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.scene-title{font-weight:700}.scene-switcher{align-items:center;gap:var(--space-xs);min-width:0;display:flex}.scene-switcher select{min-width:0}.scene-switcher button{min-width:32px;padding:0}.status-line{color:var(--muted);justify-content:flex-end}.status{align-items:center;gap:6px;display:inline-flex}.status:before{background:var(--danger);content:"";border-radius:50%;width:7px;height:7px}.status.online:before{background:var(--ok)}.status-line button{min-height:28px}.workbench{grid-template-columns:minmax(0,1fr) 360px;min-height:0;display:grid}.map-shell{background:#11110f;grid-template-rows:38px minmax(0,1fr);min-width:0;min-height:0;display:grid;position:relative}.map-toolbar{align-items:center;gap:var(--space-sm);padding:4px var(--space-sm);border-bottom:1px solid var(--line);background:var(--surface);min-width:0;display:flex;overflow:visible}.toolbar-group{align-items:center;gap:var(--space-xs);min-width:0;display:flex}.toolbar-overflow{margin-left:auto;position:relative}.toolbar-overflow summary{cursor:pointer;place-items:center;min-width:36px;min-height:28px;list-style:none;display:grid}.toolbar-overflow-menu{z-index:30;border:1px solid var(--line);background:var(--surface);gap:4px;min-width:220px;padding:8px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 28px #0009}.toolbar-overflow-menu button{text-align:left;width:100%}.fog-view-controls{border-bottom:1px solid var(--line);gap:8px;padding-bottom:8px;display:grid}.fog-view-controls label{gap:4px;display:grid}.grid-settings,.resize-settings{position:relative}.grid-settings summary,.resize-settings summary{cursor:pointer;place-items:center;min-height:28px;padding:0 8px;list-style:none;display:grid}.grid-settings-popover,.resize-settings-popover{z-index:32;border:1px solid var(--line);background:var(--surface);gap:8px;min-width:220px;padding:10px;display:grid;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 10px 28px #0009}.grid-settings-popover label{grid-template-columns:1fr 90px;align-items:center;gap:8px;display:grid}.resize-settings-popover button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.aspect-lock{z-index:16;border:1px solid var(--line);background:var(--surface);align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;top:12px;left:12px}.aspect-lock input{width:auto}.map-toolbar button{min-height:28px}.map-toolbar button[aria-pressed=true]{color:#191815;background:#ded4bd;border-color:#ded4bd}.map-toolbar span{padding-right:var(--space-sm);color:var(--muted);margin-left:auto;font-size:.82rem}.map-viewport{background-color:#131311;background-image:linear-gradient(#292823 1px,#0000 1px),linear-gradient(90deg,#292823 1px,#0000 1px);background-size:24px 24px;min-height:0;position:relative;overflow:hidden}.map-scale{border:1px solid var(--line);background:var(--surface);color:var(--muted);pointer-events:auto;justify-items:center;gap:4px;padding:3px 6px;font:11px ui-monospace,monospace;display:grid;position:absolute;bottom:8px;right:8px}.map-scale input[type=range]{writing-mode:vertical-lr;direction:rtl;width:24px;height:128px;padding:0}.map-scale button{min-width:34px;min-height:28px;padding:3px}.token-context-menu{z-index:40;border:1px solid var(--line-strong);background:var(--surface);min-width:180px;padding:6px;display:grid;position:absolute;box-shadow:0 10px 30px #000b}.token-context-menu strong{color:var(--muted);padding:6px 8px}.token-context-menu button{text-align:left;background:0 0;border:0}.token-context-menu button[aria-checked=true]{color:var(--accent)}.token-tray{z-index:12;border:1px solid var(--line);background:var(--surface);max-width:min(720px,100% - 120px);position:absolute;bottom:12px;left:12px;box-shadow:0 8px 24px #0008}.token-tray summary{cursor:pointer;color:var(--muted);padding:7px 10px}.token-tray-list{gap:6px;max-width:100%;padding:8px;display:flex;overflow-x:auto}.token-tray-list button{text-align:left;flex:none;grid-template-columns:32px minmax(72px,auto);align-items:center;gap:7px;display:grid}.token-tray-list img,.token-tray-list button>span{object-fit:cover;background:var(--surface-3);border-radius:50%;place-items:center;width:32px;height:32px;display:grid}.empty-map{color:var(--muted);place-items:center;display:grid}.sidebar{border-left:1px solid var(--line);background:var(--surface);grid-template-rows:39px minmax(0,1fr);min-height:0;display:grid;position:relative}.tabs{border-bottom:1px solid var(--line);display:flex;overflow-x:auto}.tabs button{min-width:max-content;min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:0;flex:1}.tabs button[aria-pressed=true]{background:var(--surface-2);color:var(--text);box-shadow:inset 0 -2px var(--accent)}.tabs span{color:var(--faint);font-size:.75rem}.panel-scroll{min-height:0;overflow:auto}.panel-scroll.chat-scroll{overflow:hidden}.panel-section{gap:var(--space-lg);padding:var(--space-lg);flex-direction:column;display:flex}.section-heading{justify-content:space-between;align-items:end;gap:var(--space-md);display:flex}.eyebrow{margin-bottom:var(--space-xs);color:var(--faint);letter-spacing:.09em;text-transform:uppercase;font-size:.72rem;font-weight:700;display:block}.revision{color:var(--faint);font:.72rem ui-monospace,monospace}.subsection{gap:var(--space-sm);padding-top:var(--space-lg);border-top:1px solid var(--line);flex-direction:column;display:flex}.field{color:var(--muted);flex-direction:column;gap:5px;font-size:.8rem;display:flex}.stats-grid{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.stat-field{border:1px solid var(--line);background:var(--surface-2);grid-template-columns:38px 1fr;display:grid}.stat-field>span{color:var(--muted);place-items:center;font-size:.72rem;font-weight:800;display:grid}.stat-field input{border-width:0 0 0 1px;border-color:var(--line);text-align:center;background:0 0;border-radius:0;min-width:0;font-size:1.15rem;font-weight:700}.stat-field button{min-height:26px;color:var(--muted);border-width:1px 0 0;border-radius:0;grid-column:1/-1;font-size:.72rem}.action-row{justify-content:space-between;gap:var(--space-md);text-align:left;width:100%;display:flex}.plain-row{gap:var(--space-xs);padding:var(--space-sm) 0;flex-direction:column;display:flex}.plain-row+.plain-row{border-top:1px solid var(--line)}.plain-row p{color:var(--muted);line-height:1.45}.muted{color:var(--muted);font-size:.85rem}.chat-panel{grid-template-rows:minmax(0,1fr) auto auto;height:100%;min-height:0;display:grid;position:relative}.message-list{gap:var(--space-md);min-height:0;padding:var(--space-md);overscroll-behavior:contain;flex-direction:column;display:flex;overflow:auto}.message{flex-direction:column;gap:5px;display:flex}.message:focus{outline:2px solid var(--accent);outline-offset:4px}.message header{align-items:baseline;gap:var(--space-sm);color:var(--muted);font-size:.75rem;display:flex}.message header strong{color:var(--text)}.message header time{margin-left:auto}.message header span{border:1px solid var(--line);padding:1px 4px}.message p{white-space:pre-wrap;line-height:1.45}.roll-result{border:1px solid var(--line);background:var(--surface-2);display:grid}.roll-result div{padding:6px 8px 0;font-weight:700}.roll-result small{color:var(--muted);padding:0 8px 6px;font-family:ui-monospace,monospace}.chat-tools{gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-top:1px solid var(--line);flex-direction:column;display:flex}.chat-compose{gap:var(--space-sm);padding:var(--space-md);border-top:1px solid var(--line);grid-template-columns:1fr auto;display:grid}.chat-compose textarea{resize:none}.new-messages{right:var(--space-md);z-index:2;border-color:var(--accent);background:var(--surface-3);min-height:28px;position:absolute;bottom:164px}.roll-toast-stack{z-index:15;top:50px;right:var(--space-md);gap:var(--space-sm);pointer-events:none;width:min(340px,100% - 24px);display:grid;position:absolute}.roll-toast{border:1px solid var(--line-strong);background:var(--surface);pointer-events:auto;grid-template-columns:minmax(0,1fr) auto;display:grid;box-shadow:0 8px 24px #0008}.roll-toast-open{justify-content:space-between;align-items:center;gap:var(--space-md);text-align:left;background:0 0;border:0;min-width:0;display:flex}.roll-toast-open strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.roll-toast-open span{color:var(--accent);font-size:1.2rem;font-weight:800}.roll-toast-close{background:0 0;border-width:0 0 0 1px;border-radius:0;min-width:32px;padding:0}.player-character-drawer{z-index:12;border:1px solid var(--line);background:var(--surface);grid-template-rows:auto minmax(0,1fr);width:min(440px,100vw - 360px);display:grid;position:absolute;top:0;bottom:0;right:100%;box-shadow:-12px 0 32px #0008}.drawer-heading{min-height:39px;padding-left:var(--space-md);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.drawer-heading button{border-width:0 0 0 1px;border-radius:0;min-width:39px}.field-error{color:#f0bbb4;font-size:.82rem}.inline-fields,.copy-field,.upload-row{align-items:stretch;gap:var(--space-sm);display:flex}.inline-fields input,.copy-field input{min-width:0}.compact-check{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:.8rem;display:flex}.compact-check input{width:auto}.copy-field{flex-direction:column}.copy-field input{font-family:ui-monospace,monospace;font-size:.72rem}.file-button{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:3px;justify-content:center;align-items:center;min-height:32px;padding:5px 10px;display:inline-flex}.file-button input{opacity:0;width:1px;height:1px;position:absolute}.asset-list{flex-direction:column;display:flex}.asset-row{gap:var(--space-sm);padding:var(--space-sm) 0;border-bottom:1px solid var(--line);grid-template-columns:64px 1fr;display:grid}.asset-row>span{border:1px solid var(--line);color:var(--muted);text-align:center;align-self:start;padding:2px 4px;font-size:.68rem}.asset-row div{flex-direction:column;gap:2px;min-width:0;display:flex}.asset-row strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.asset-row small{color:var(--muted)}.music-bar{align-items:stretch;gap:var(--space-md);min-width:0;padding:var(--space-lg);background:var(--surface);flex-direction:column;display:flex}.music-state{flex-direction:column;width:220px;min-width:0;display:flex}.music-state span{color:var(--faint);text-transform:uppercase;font-size:.68rem}.music-state strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.music-bar select{max-width:260px}.music-bar .primary{margin-left:0}.volume{align-items:center;gap:var(--space-sm);color:var(--muted);margin-left:0;font-size:.8rem;display:flex}.seek{gap:var(--space-xs);color:var(--muted);flex-direction:column;font-size:.8rem;display:flex}.seek input,.volume input{width:100%}.palette-grid{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.palette-card{gap:var(--space-xs);min-width:0;padding:var(--space-sm);border:1px solid var(--line);background:var(--surface-2);flex-direction:column;display:flex}.palette-place{gap:var(--space-xs);text-align:left;background:0 0;border:0;grid-template-rows:72px auto;padding:0;display:grid}.palette-place img,.palette-place>span{object-fit:contain;border:1px solid var(--line);width:100%;height:72px;color:var(--accent);background:#171715;place-items:center;font-size:1.35rem;font-weight:800;display:grid}.palette-place strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.danger-link{color:#e8a18f;border-color:#73463c;font-size:.72rem}.volume input{width:140px;padding:0}.auth-shell,.loading{background:#171715;place-items:center;width:100%;height:100%;display:grid}.auth-panel{gap:var(--space-lg);border:1px solid var(--line);background:var(--surface);flex-direction:column;width:min(420px,100vw - 48px);padding:32px;display:flex}.auth-panel p{max-width:45ch;color:var(--muted);line-height:1.5}.wordmark{letter-spacing:.03em;font-weight:800}.loading{align-content:center;gap:var(--space-md);color:var(--muted)}.error-box{padding:var(--space-sm);color:#f0bbb4;background:#392522;border:1px solid #81554f}.toast{z-index:20;align-items:center;gap:var(--space-md);max-width:520px;padding:var(--space-sm);color:#f0bbb4;background:#392522;border:1px solid #81554f;display:flex;position:fixed;bottom:64px;right:16px}.empty{gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);color:var(--muted);flex-direction:column;display:flex}.empty strong{color:var(--text)}@media (max-width:1150px){.workbench{grid-template-columns:minmax(0,1fr) 320px}.topbar{grid-template-columns:minmax(220px,1fr) auto minmax(280px,1fr)}.brand span{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
