:root{--color-bg:#10151c;--color-bg-soft:#151b23;--color-surface-1:#1b222c;--color-surface-2:#24303b;--color-surface-3:#2e3d4b;--color-surface-hover:#384b5d;--color-border:#334150;--color-border-soft:#27313c;--color-border-strong:#4f6579;--color-text:#e6dcc8;--color-text-muted:#b9b09d;--color-text-faint:#8e8677;--color-accent:#b28c4b;--color-accent-bright:#d5ab5a;--color-accent-dark:#7f6534;--color-accent-glow:#d5ab5a38;--color-danger:#c46d6d;--color-danger-bg:#b432322e;--color-success:#6f947c;--color-success-bg:#50825a33}.title{z-index:50;box-sizing:border-box;background:var(--color-surface-1);border-bottom-color:var(--color-border);height:50px;color:#fff;align-items:center;padding:0 14px;font-weight:700;display:flex;position:absolute;top:0;left:0;right:0}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:#fff;background:#1e1e1e;font-family:sans-serif}.app{background:var(--color-bg);width:100vw;height:100vh;position:relative;overflow:hidden}.main{background:#e7e7e7;position:absolute;inset:50px 320px 0 50px;overflow:hidden}.leftsidebar{z-index:200;background:var(--color-surface-1);border-color:var(--color-border);flex-direction:column;width:50px;display:flex;position:absolute;top:50px;bottom:0;left:0}.rightsidebar{z-index:20;background:var(--color-surface-1);border-color:var(--color-border);flex-direction:column;width:320px;display:flex;position:absolute;top:50px;bottom:0;right:0}.navButtons{color:#fff;cursor:pointer;background:#444;border:none;border-radius:5px;min-height:40px;margin:5px;padding:0 6px;font-size:12px}.navButtons.active{background:#5a4a2a;outline:2px solid #f0c060}#chat{flex:1;padding:10px;overflow-y:auto}#messages{flex-direction:column;gap:6px;display:flex}#inputForm{border-top:1px solid #333;flex-direction:column;gap:6px;width:auto;padding:10px;display:flex}#inputForm input{color:#fff;background:#222;border:none;border-radius:4px;outline:none;flex:1;width:auto;padding:8px}#inputForm button{color:#fff;cursor:pointer;background:#444;border:none;border-radius:4px;align-self:flex-end;padding:8px 12px}#inputForm button:hover{background:#555}.chat-message{color:#f1f1f1;border-radius:6px;margin-bottom:8px;overflow:hidden}.message-header{background:#242424;border:1px solid #363636;border-bottom:none;border-radius:6px 6px 0 0;justify-content:space-between;align-items:center;min-height:28px;padding:0 10px;display:flex}.message-player-name{color:#7db7ff;font-size:13px;font-weight:700}.message-label{color:#dcdcdc;font-variant-numeric:tabular-nums;background:#111;border:1px solid #555;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700}.text-message .message-body{background:#2b2b2b;border:1px solid #363636;border-radius:0 0 6px 6px;padding:10px}.message-content{color:#f1f1f1;white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.35}#map{z-index:1;width:100%;height:100%;display:block;position:absolute;inset:0}.ui{z-index:200;pointer-events:none}.ui *{pointer-events:auto}.diceRoller{color:#fff;cursor:pointer;background:#444;border:none;border-radius:4px;margin:10px;padding:8px 12px}.diceRoller:hover{background:#555}.dice-panel{z-index:130;background:#1f1f1f;border:1px solid #444;border-radius:8px;width:280px;padding-top:10px;padding-left:10px;position:fixed;top:330px;left:58px;box-shadow:0 12px 28px #00000073}.dice-panel-header{border-bottom:1px solid #333;margin-bottom:8px;padding-bottom:10px;font-size:16px}.dice-panel-grid{flex-direction:column;gap:2px;display:flex}.dice-panel-row{grid-template-columns:80px repeat(6,1fr);align-items:center;min-height:34px;display:grid}.dice-panel-die-label{color:#e6e6e6;font-weight:700}.dice-panel-amount-button{color:#fff;cursor:pointer;background:0 0;border:none;border-left:1px solid #333;height:30px;font-size:15px}.dice-panel-amount-button:hover{background:#ffffff14}.brush-menu-wrapper{--brush-menu-width:276px;z-index:120;position:absolute;top:8px;left:58px}.brush-menu-panel{width:var(--brush-menu-width);box-sizing:border-box;background:#303030;border:1px solid #444;border-radius:7px;align-items:center;gap:10px;height:52px;padding:8px;display:flex;box-shadow:0 8px 24px #00000059}.brush-current-color{box-sizing:border-box;cursor:pointer;border:2px solid #eee;border-radius:5px;flex:0 0 36px;width:36px;height:36px;padding:0}.brush-current-color:hover{outline:2px solid #fff6}.brush-menu-divider{background:#5d5d5d;flex:0 0 1px;width:1px;height:34px}.brush-size-button{color:#fff;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:5px;flex:1;align-items:center;gap:10px;min-width:0;height:36px;padding:0 8px;display:flex}.brush-size-button:hover,.brush-size-button.active{background:#ffffff14}.brush-size-icon{flex-direction:column;flex:0 0 28px;justify-content:center;gap:4px;width:28px;height:24px;display:flex}.brush-size-icon span{background:#fff;border-radius:999px;width:26px;height:3px;display:block}.brush-size-label{color:#fff;text-align:left;white-space:nowrap;flex:1;min-width:0;font-size:14px}.brush-size-arrow{color:#d8d8d8;flex:none;font-size:12px}.brush-popover{width:var(--brush-menu-width);box-sizing:border-box;background:#303030;border:1px solid #444;border-radius:6px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 28px #00000073}.brush-color-popover{padding:8px}.brush-color-grid{border-bottom:1px solid #5a5a5a;grid-template-columns:repeat(8,1fr);gap:4px;padding-bottom:8px;display:grid}.brush-color-square{aspect-ratio:1;cursor:pointer;box-sizing:border-box;border:1px solid #151515;border-radius:4px;width:100%;padding:0}.brush-color-square:hover{outline-offset:-2px;outline:2px solid #fff}.brush-color-square.selected{outline-offset:-4px;outline:3px solid #fff}.brush-color-value-row{align-items:center;gap:8px;margin-top:8px;display:flex}.brush-color-preview{box-sizing:border-box;border:2px solid #eee;border-radius:5px;flex:0 0 36px;width:36px;height:36px}.brush-color-text-input{color:#fff;box-sizing:border-box;background:#252525;border:1px solid #777;border-radius:4px;flex:1;min-width:0;height:36px;padding:0 10px;font-size:14px}.brush-size-popover{padding:6px 0}.brush-size-option{color:#fff;text-align:left;cursor:pointer;box-sizing:border-box;background:0 0;border:none;align-items:center;width:100%;height:36px;padding:0 12px;font-size:14px;display:flex}.brush-size-option:hover{background:#ffffff14}.brush-size-option.selected{background:#786e8c8c;font-weight:700}.dice3d-overlay{z-index:45;pointer-events:none;position:fixed;inset:50px 320px 0 50px}.dice3d-box,.dice3d-box canvas{pointer-events:none;width:100%;height:100%}.settingsButton{z-index:150;cursor:pointer;box-sizing:border-box;background-color:#333;border:1px solid #444;border-radius:5px;justify-content:center;align-items:center;width:50px;height:50px;padding:5px;display:flex;position:absolute;top:60px;right:330px}.settingsButton:hover{background:#3f3f3f}.settingsButton.active{background:#5a4a2a;outline:2px solid #f0c060}.settingsButton img{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:28px;height:28px}.settingsPanel{color:#fff;z-index:140;box-sizing:border-box;background:#111;border:1px solid #333;border-radius:8px;flex-direction:column;gap:14px;width:460px;padding:18px;display:flex;position:absolute;top:60px;right:390px;box-shadow:0 12px 28px #00000073}.settingsPanelTitle{color:#9bdcff;margin:0;font-size:15px;font-weight:800}.settingsColorField{box-sizing:border-box;grid-template-columns:90px 1fr;align-items:center;gap:8px;width:100%;font-size:12px;font-weight:700;display:grid;position:relative}.settingsColorLabel{color:#fff}.settingsColorButton{cursor:pointer;box-sizing:border-box;border:2px solid #eee;border-radius:5px;width:100%;height:34px;padding:0}.settingsColorButton:hover{outline:2px solid #ffffff59}.settingsColorPopover{z-index:200;box-sizing:border-box;background:#303030;border:1px solid #444;border-radius:6px;width:276px;padding:8px;position:absolute;top:40px;left:0;box-shadow:0 12px 28px #00000073}.settingsFormulaBlock{flex-direction:column;gap:8px;display:flex}.settingsFormulaLabel{color:#cfcfcf;font-size:13px;font-weight:700}.settingsFormulaRow{box-sizing:border-box;grid-template-columns:minmax(90px,1fr) 20px minmax(100px,1fr) 20px minmax(100px,1fr);align-items:center;gap:8px;width:100%;display:grid}.formulaInput{box-sizing:border-box;background:#151515;border:1px solid #333;border-radius:4px;grid-template-columns:1fr auto auto;height:36px;display:grid;overflow:hidden}.formulaInput input[type=number]{appearance:textfield}.formulaInput input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.formulaInput input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.formulaInput input{color:#fff;box-sizing:border-box;background:0 0;border:none;outline:none;width:100%;min-width:0;padding:0 8px;font-size:13px;font-weight:700}.formulaInput input[readonly]{color:#a0a0a0}.formulaInput span{color:#8c8c8c;white-space:nowrap;background:#181818;border-left:1px solid #333;align-items:center;padding:0 8px;font-size:11px;font-weight:800;display:flex}.formulaOperator{color:#e8e8e8;text-align:center;font-size:24px;font-weight:700}.formulaStepper{opacity:0;pointer-events:none;background:#202027;border-left:1px solid #333;flex-direction:column;width:24px;transition:opacity .12s;display:flex}.formulaInput.editable:hover .formulaStepper,.formulaInput.editable:focus-within .formulaStepper{opacity:1;pointer-events:auto}.formulaStepper button{color:#a9a9b8;cursor:pointer;background:#202027;border:none;justify-content:center;align-items:center;width:24px;height:18px;padding:0;font-size:9px;line-height:1;display:flex}.formulaStepper button:hover{color:#fff;background:#2d2d38}.formulaStepper button:active{background:#3a3a48}.settingsDistanceRow{flex-direction:column;gap:8px;display:flex}.settingsDistanceControls{grid-template-columns:150px 1fr;align-items:center;gap:8px;display:grid}.settingsUnitDropdown{min-width:0;position:relative}.settingsUnitButton{color:#fff;cursor:pointer;box-sizing:border-box;background:#151515;border:1px solid #333;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;width:100%;height:36px;padding:0 10px;font-size:13px;font-weight:700;display:flex}.settingsUnitArrow{color:#a0a0a0;font-size:12px}.settingsUnitMenu{z-index:250;background:#202027;border:1px solid #444;border-radius:6px;padding:6px 0;position:absolute;top:calc(100% + 6px);left:0;right:0;box-shadow:0 12px 28px #00000073}.settingsUnitOption{color:#fff;text-align:left;cursor:pointer;box-sizing:border-box;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;width:100%;height:34px;padding:0 10px;font-size:13px;display:flex}.settingsUnitOption span:last-child{color:#9a9a9a;font-size:11px;font-weight:800}.settingsUnitOption.selected{background:#786e8c8c;font-weight:800}.settingsToggleRow{grid-template-columns:90px 1fr;align-items:center;gap:8px;font-size:12px;font-weight:700;display:grid}.settingsToggle{cursor:pointer;box-sizing:border-box;background:#252525;border:1px solid #555;border-radius:999px;width:54px;height:28px;padding:0;transition:background .12s,border-color .12s;position:relative}.settingsToggleKnob{background:#dcdcdc;border-radius:50%;width:20px;height:20px;transition:left .12s,background .12s;position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #00000073}.settingsToggle.active .settingsToggleKnob{background:#fff;left:29px}.homePage{color:#fff;background:#1e1e1e;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.homeCard{box-sizing:border-box;background:#111;border:1px solid #333;border-radius:10px;flex-direction:column;gap:14px;width:360px;padding:24px;display:flex;box-shadow:0 12px 28px #00000073}.homeTitle{color:#9bdcff;margin:0;font-size:28px}.homeSubtitle{color:#cfcfcf;margin:0 0 8px;font-size:14px}.homeJoinForm{flex-direction:column;gap:8px;display:flex}.homeJoinForm input{color:#fff;box-sizing:border-box;background:#181818;border:1px solid #444;border-radius:5px;outline:none;height:38px;padding:0 10px}.homeJoinForm input:focus{border-color:#9bdcff}.homeJoinForm button,.homeCreateButton{color:#fff;cursor:pointer;background:#333;border:1px solid #555;border-radius:5px;height:38px;font-weight:700}.homeJoinForm button:hover,.homeCreateButton:hover{background:#444}.homeCreateButton{background:#5a4a2a;border-color:#f0c060}.boardLayerSwitcher{flex-direction:column;gap:5px;margin-top:auto;padding:5px;display:flex}.boardLayerButton{color:#fff;cursor:pointer;box-sizing:border-box;background:#333;border:1px solid #444;border-radius:5px;width:100%;padding:6px 4px;font-size:11px;font-weight:700}.boardLayerButton:hover{background:#444}.boardLayerButton.active{color:#fff;background:#5a4a2a;border-color:#f0c060}.context-menu-backdrop{z-index:9998;background:0 0;position:fixed;inset:0}.context-menu{z-index:9999;background:#1f1f1f;border:1px solid #444;border-radius:8px;min-width:170px;padding:6px;position:fixed;box-shadow:0 8px 24px #00000059}.context-menu button{color:#fff;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:5px;width:100%;padding:8px 10px;display:block}.context-menu button.danger{color:#ff7b7b}.context-menu button.danger:hover{background:#b4323240}.context-menu-separator{background:#3a3a3a;height:1px;margin:5px 4px}.objectInspector{z-index:160;color:#fff;box-sizing:border-box;background:#111;border:1px solid #333;border-radius:8px;flex-direction:column;gap:10px;width:300px;max-height:calc(100vh - 140px);padding:14px;display:flex;position:fixed;top:120px;right:330px;overflow-y:auto;box-shadow:0 12px 28px #00000073}.objectInspectorHeader{border-bottom:1px solid #333;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;display:flex}.objectInspectorTitle{color:#9bdcff;word-break:break-word;font-size:15px;font-weight:800}.objectInspectorSubtitle{color:#777;margin-top:2px;font-size:11px;font-weight:700}.objectInspectorClose{color:#fff;cursor:pointer;background:#222;border:1px solid #444;border-radius:5px;flex:0 0 28px;justify-content:center;align-items:center;width:28px;height:28px;font-size:20px;line-height:1;display:flex}.objectInspectorSectionTitle{color:#9bdcff;margin:8px 0 0;font-size:13px;font-weight:800}.objectInspectorField{grid-template-columns:76px 1fr;align-items:center;gap:8px;font-size:12px;font-weight:700;display:grid}.objectInspectorField span{color:#dcdcdc}.objectInspectorField input,.objectInspectorField select,.objectInspectorField textarea{color:#fff;box-sizing:border-box;background:#151515;border:1px solid #333;border-radius:4px;outline:none;width:100%;min-width:0}.objectInspectorField input,.objectInspectorField select{height:32px;padding:0 8px}.objectInspectorField textarea{resize:vertical;min-height:70px;padding:8px;font-family:inherit;font-size:13px}.objectInspectorField input:focus,.objectInspectorField select:focus,.objectInspectorField textarea:focus{border-color:#666}.objectInspectorField input[type=color]{padding:2px}.objectInspectorTextareaField{align-items:start}.objectInspectorTextareaField span{padding-top:8px}.objectInspectorTwoColumns{grid-template-columns:1fr 1fr;gap:8px;display:grid}.objectInspectorTwoColumns .objectInspectorField{grid-template-columns:36px 1fr}.objectInspectorToggle{grid-template-columns:76px 1fr;align-items:center;gap:8px;font-size:12px;font-weight:700;display:grid}.objectInspectorToggle>span{color:#dcdcdc}.objectInspectorToggle .settingsToggle{justify-self:start}.sidebarTabs{background:#111;border-bottom:1px solid #333;grid-template-columns:repeat(4,1fr);height:42px;display:grid}.sidebarTab{color:#bfbfbf;cursor:pointer;background:0 0;border:none;border-right:1px solid #333;min-width:0;font-size:11px;font-weight:700}.sidebarTab:last-child{border-right:none}.sidebarTab:hover{color:#fff;background:#222}.sidebarTab.active{color:#f0c060;background:#2b2b2b;box-shadow:inset 0 -2px #f0c060}.sidebarContent{flex-direction:column;flex:1;min-height:0;display:flex}.sidebarPlaceholder{color:#dcdcdc;padding:14px}.sidebarPlaceholder h3{color:#9bdcff;margin:0 0 8px;font-size:15px}.sidebarPlaceholder p{color:#aaa;margin:0;font-size:13px;line-height:1.4}.charactersPanel{color:#fff;background:#181818;flex-direction:column;flex:1;min-height:0;display:flex}.charactersHeader{border-bottom:1px solid #333;justify-content:space-between;align-items:center;min-height:42px;padding:0 10px;display:flex}.charactersHeader h3{color:#f0c060;margin:0;font-size:15px}.charactersHeader button{color:#fff;cursor:pointer;background:#333;border:1px solid #555;border-radius:5px;width:28px;height:28px}.charactersList{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.characterListCard{color:#fff;cursor:pointer;text-align:left;box-sizing:border-box;background:#242424;border:1px solid #383838;border-radius:8px;align-items:center;gap:10px;width:100%;min-height:58px;padding:8px;display:flex}.characterListCard.active{border-color:#f0c060;box-shadow:inset 0 0 0 1px #9bdcff59}.characterListAvatar{color:#f0c060;background:#111;border:1px solid #555;border-radius:50%;flex:0 0 38px;justify-content:center;align-items:center;width:38px;height:38px;font-weight:800;display:flex;overflow:hidden}.characterListAvatar img{object-fit:cover;width:100%;height:100%}.characterListInfo{flex-direction:column;gap:3px;min-width:0;display:flex}.characterListName{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;overflow:hidden}.characterListMeta{color:#8f8f8f;font-size:11px;font-weight:700}.charactersEmpty{color:#aaa;padding:14px}.charactersEmpty button{color:#fff;cursor:pointer;background:#333;border:1px solid #555;border-radius:5px;margin-top:8px;padding:8px 10px}.characterWindow{z-index:175;color:#fff;box-sizing:border-box;background:#0f0f0f;border:1px solid #333;border-radius:10px;flex-direction:column;width:min(1050px,100vw - 420px);max-height:calc(100vh - 90px);display:flex;position:fixed;overflow:hidden;box-shadow:0 18px 45px #000000a6}.characterWindow input[type=number]{appearance:textfield}.characterWindow input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.characterWindow input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.characterWindowHeader{cursor:move;-webkit-user-select:none;user-select:none;box-sizing:border-box;background:#111;border-bottom:1px solid #333;flex:0 0 58px;justify-content:space-between;align-items:center;gap:14px;height:58px;padding:0 14px;display:flex}.characterWindowIdentity{align-items:center;gap:10px;min-width:0;display:flex}.characterWindowAvatar{color:#f0c060;background:#181818;border:1px solid #555;border-radius:50%;flex:0 0 38px;justify-content:center;align-items:center;width:38px;height:38px;font-weight:800;display:flex;overflow:hidden}.characterWindowAvatar img{object-fit:cover;width:100%;height:100%}.characterWindowTitle{color:#fff;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;max-width:620px;font-size:18px;font-weight:900;overflow:hidden}.characterWindowSubtitle{color:#8f8f8f;margin-top:2px;font-size:12px;font-weight:700}.characterWindowClose{color:#dcdcdc;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:0 0 32px;justify-content:center;align-items:center;width:32px;height:32px;font-size:28px;line-height:1;display:flex}.characterWindowClose:hover{color:#fff}.characterWindowTabs{background:#111;border-bottom:1px solid #333;flex:0 0 42px;align-items:stretch;height:42px;display:flex}.characterWindowTabs button{color:#bfbfbf;cursor:pointer;background:0 0;border:none;border-right:1px solid #333;padding:0 18px;font-size:14px;font-weight:800}.characterWindowTabs button:hover{color:#fff;background:#1e1e1e}.characterWindowTabs button.active{color:#f0c060;box-shadow:inset 0 -3px #f0c060}.characterWindowContent{box-sizing:border-box;background:linear-gradient(#000000e0,#000000e0),#111;flex:1;min-height:0;padding:16px;overflow-y:auto}.characterWindow .characterSheetTab,.characterWindow .characterSettingsTab{flex-direction:column;gap:14px;display:flex}.characterWindow .characterSheetTab h4,.characterWindow .characterSettingsTab h4{color:#f0c060;margin:8px 0 0;font-size:15px}.characterWindow .characterField{grid-template-columns:110px 1fr;align-items:center;gap:10px;font-size:13px;font-weight:700;display:grid}.characterWindow .characterField input,.characterWindow .characterField textarea{color:#fff;box-sizing:border-box;background:#151515;border:1px solid #333;border-radius:5px;outline:none;width:100%;min-width:0}.characterWindow .characterField input{height:36px;padding:0 10px}.characterWindow .characterField textarea{resize:vertical;min-height:90px;padding:10px;font-family:inherit;font-size:13px}.characterWindow .characterField input:focus,.characterWindow .characterField textarea:focus,.characterWindow .abilityField input:focus{border-color:#f0c060;outline:none;box-shadow:0 0 0 1px #f0c06040}.characterWindow .characterTwoColumns{grid-template-columns:1fr 1fr;gap:12px;display:grid}.characterWindow .characterTwoColumns .characterField{grid-template-columns:70px 1fr}.characterWindow .abilitiesGrid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.characterWindow .abilityField{background:#202020;border:1px solid #333;border-radius:8px;grid-template-columns:42px 1fr 38px;align-items:center;gap:6px;padding:8px;font-size:12px;font-weight:700;display:grid}.characterWindow .abilityField span{color:#f0c060}.characterWindow .abilityField input{color:#fff;box-sizing:border-box;background:#151515;border:1px solid #333;border-radius:5px;outline:none;width:100%;min-width:0;height:32px;padding:0 8px}.characterWindow .abilityField strong{text-align:center;color:#f0c060}.abilityRollButton{color:#dcdcdc;width:100%;height:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0;font-weight:800}.characterRollButton{color:#dcdcdc;width:100%;height:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.abilityRollButton:hover,.characterRollButton:hover{color:#ffd98a}.abilityRollButton:focus,.characterRollButton:focus{color:#ffd98a;text-shadow:0 0 8px #f0c06059;outline:none}.characterDangerZone{border-top:1px solid #333;margin-top:12px;padding-top:12px}.characterDangerZone button{color:#ff7b7b;cursor:pointer;background:#b4323233;border:1px solid #ff787859;border-radius:5px;width:100%;padding:9px 10px}.navButtons,.boardLayerButton,.diceRoller,#inputForm button,.homeJoinForm button,.homeCreateButton{background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border)}.navButtons:hover,.boardLayerButton:hover,.diceRoller:hover,#inputForm button:hover,.homeJoinForm button:hover,.homeCreateButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.navButtons.active,.boardLayerButton.active,.settingsButton.active,.homeCreateButton{background:linear-gradient(to bottom, var(--color-surface-3), var(--color-surface-2));color:var(--color-accent-bright);border-color:var(--color-accent);outline:2px solid var(--color-accent-bright)}#inputForm{border-top-color:var(--color-border)}#inputForm input{background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border)}#inputForm input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.chat-message{color:var(--color-text)}.message-header{background:var(--color-surface-2);border-color:var(--color-border)}.message-player-name{color:var(--color-accent-bright)}.message-label{background:var(--color-bg-soft);border-color:var(--color-border);color:var(--color-text-muted)}.text-message .message-body{background:var(--color-surface-1);border-color:var(--color-border)}.message-content{color:var(--color-text)}.sidebarTabs{background:var(--color-surface-1);border-bottom-color:var(--color-border)}.sidebarTab{color:var(--color-text-muted);border-right-color:var(--color-border-soft)}.sidebarTab:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebarTab.active{background:linear-gradient(to bottom, var(--color-surface-3), var(--color-surface-2));color:var(--color-accent-bright);box-shadow:inset 0 -2px 0 var(--color-accent-bright)}.sidebarPlaceholder{color:var(--color-text)}.sidebarPlaceholder h3{color:var(--color-accent-bright)}.sidebarPlaceholder p{color:var(--color-text-muted)}.charactersPanel{background:var(--color-surface-1);color:var(--color-text)}.charactersHeader{border-bottom-color:var(--color-border)}.charactersHeader h3{color:var(--color-accent-bright)}.charactersHeader button{background:var(--color-surface-2);color:var(--color-accent-bright);border-color:var(--color-border-strong)}.charactersHeader button:hover{background:var(--color-surface-hover);border-color:var(--color-accent)}.characterListCard{background:linear-gradient(to bottom, var(--color-surface-2), var(--color-surface-1));color:var(--color-text);border-color:var(--color-border)}.characterListCard:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.characterListCard.active{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent-glow), 0 0 0 1px #f0c06014;background:linear-gradient(#332716,#21180f)}.characterListAvatar{background:var(--color-bg-soft);color:var(--color-accent-bright);border-color:var(--color-accent-dark)}.characterListName{color:var(--color-text)}.characterListMeta,.charactersEmpty{color:var(--color-text-muted)}.charactersEmpty button{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border)}.charactersEmpty button:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.characterWindow{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-window)}.characterWindowHeader{background:var(--color-surface-1);border-bottom-color:var(--color-border)}.characterWindowAvatar{background:var(--color-bg-soft);color:var(--color-accent-bright);border-color:var(--color-accent-dark)}.characterWindowTitle{color:var(--color-text)}.characterWindowSubtitle,.characterWindowClose{color:var(--color-text-muted)}.characterWindowClose:hover{background:var(--color-surface-hover);color:var(--color-text)}.characterWindowTabs{background:var(--color-surface-1);border-bottom-color:var(--color-border)}.characterWindowTabs button{color:var(--color-text-muted);border-right-color:var(--color-border-soft)}.characterWindowTabs button:hover{background:var(--color-surface-hover);color:var(--color-text)}.characterWindowTabs button.active{background:linear-gradient(to bottom, var(--color-surface-3), var(--color-surface-2));color:var(--color-accent-bright);box-shadow:inset 0 -3px 0 var(--color-accent-bright)}.characterWindowContent{background:linear-gradient(#0f0d0be6, #0f0d0be6), var(--color-bg)}.characterWindow .characterSheetTab h4,.characterWindow .characterSettingsTab h4{color:var(--color-accent-bright)}.characterWindow .characterField span{color:var(--color-text)}.characterWindow .characterField input,.characterWindow .characterField textarea,.characterWindow .abilityField input{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border)}.characterWindow .characterField input:focus,.characterWindow .characterField textarea:focus,.characterWindow .abilityField input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.characterWindow .abilityField{background:var(--color-surface-2);border-color:var(--color-border)}.characterWindow .abilityField span,.characterWindow .abilityField strong{color:var(--color-accent-bright)}.abilityRollButton,.characterRollButton{color:var(--color-text)}.abilityRollButton:hover,.characterRollButton:hover,.abilityRollButton:focus,.characterRollButton:focus{color:var(--color-accent-bright);text-shadow:0 0 8px var(--color-accent-glow)}.objectInspector{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-panel)}.objectInspectorHeader{border-bottom-color:var(--color-border)}.objectInspectorTitle,.objectInspectorSectionTitle{color:var(--color-accent-bright)}.objectInspectorSubtitle{color:var(--color-text-muted)}.objectInspectorClose{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border)}.objectInspectorClose:hover{background:var(--color-surface-hover)}.objectInspectorField span,.objectInspectorToggle>span{color:var(--color-text)}.objectInspectorField input,.objectInspectorField select,.objectInspectorField textarea{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border)}.objectInspectorField input:focus,.objectInspectorField select:focus,.objectInspectorField textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.settingsButton{background:var(--color-surface-2);border-color:var(--color-border)}.settingsButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.settingsPanel{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-panel)}.settingsPanelTitle{color:var(--color-accent-bright)}.settingsFormulaLabel{color:var(--color-text-muted)}.formulaInput,.settingsUnitButton{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border)}.formulaInput span{background:var(--color-bg-soft);color:var(--color-text-muted);border-left-color:var(--color-border)}.formulaOperator{color:var(--color-text)}.settingsUnitButton:hover,.settingsUnitButton.active{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.settingsUnitMenu{background:var(--color-surface-2);border-color:var(--color-border)}.settingsUnitOption{color:var(--color-text)}.settingsUnitOption:hover{background:var(--color-surface-hover)}.settingsUnitOption.selected{color:var(--color-accent-bright);background:#f0c0602e}.brush-menu-panel,.brush-popover,.settingsColorPopover{background:var(--color-surface-2);border-color:var(--color-border)}.brush-menu-divider,.brush-color-grid{border-color:var(--color-border)}.brush-size-button,.brush-size-option{color:var(--color-text)}.brush-size-button:hover,.brush-size-button.active,.brush-size-option:hover{background:var(--color-surface-hover)}.brush-size-option.selected{color:var(--color-accent-bright);background:#f0c0602e}.brush-color-text-input{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border)}.dice-panel{z-index:130;background:var(--color-surface-1);border:1px solid var(--color-border);border-radius:8px;width:280px;padding-top:10px;padding-left:10px;position:fixed;box-shadow:0 12px 28px #00000073}.dice-panel-header{border-bottom-color:var(--color-border);color:var(--color-accent-bright);justify-content:space-between;align-items:center;display:flex}.dice-panel-close{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;margin-right:10px;font-size:22px;line-height:1;display:flex}.dice-panel-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.dice-panel-die-label{color:var(--color-text)}.dice-panel-amount-button{color:var(--color-text);border-left-color:var(--color-border)}.dice-panel-amount-button:hover{background:var(--color-surface-hover);color:var(--color-accent-bright)}.context-menu{background:var(--color-surface-1);border-color:var(--color-border);box-shadow:var(--shadow-panel)}.context-menu button{color:var(--color-text)}.context-menu button:hover{background:var(--color-surface-hover)}.context-menu-separator{background:var(--color-border)}.homePage{background:var(--color-bg);color:var(--color-text)}.homeCard{background:var(--color-surface-1);border-color:var(--color-border);box-shadow:var(--shadow-panel)}.homeTitle{color:var(--color-accent-bright)}.homeSubtitle{color:var(--color-text-muted)}.homeJoinForm input{background:var(--color-surface-1);color:var(--color-text);border-color:var(--color-border)}.homeJoinForm input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.context-menu button.danger,.characterDangerZone button{color:var(--color-danger)}.characterDangerZone{border-top-color:var(--color-border)}.characterDangerZone button{background:var(--color-danger-bg);border-color:#d36b6b59}.characterDangerZone button:hover{background:#b4323247}.settingsToggle{background:var(--color-surface-2);border-color:var(--color-border)}.settingsToggle:hover{border-color:var(--color-accent-dark)}.settingsToggle.active{background:var(--color-success-bg);border-color:var(--color-success)}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) var(--color-surface-1)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--color-surface-1)}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border:2px solid var(--color-surface-1);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}.settingsSection{flex-direction:column;gap:8px;display:flex}.settingsSectionHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.settingsSmallButton{background:var(--color-surface-2);width:28px;height:28px;color:var(--color-accent-bright);border:1px solid var(--color-border);cursor:pointer;border-radius:5px;justify-content:center;align-items:center;display:flex}.settingsSmallButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent)}.settingsSceneSelect{background:var(--color-surface-1);width:100%;height:36px;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:5px;outline:none;padding:0 10px}.settingsSceneSelect:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.settingsSceneRenameForm{grid-template-columns:1fr auto;gap:8px;display:grid}.settingsSceneNameInput{background:var(--color-surface-1);min-width:0;height:36px;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:5px;outline:none;padding:0 10px}.settingsSceneNameInput:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.settingsSceneRenameButton{background:var(--color-surface-2);height:36px;color:var(--color-text);border:1px solid var(--color-border);cursor:pointer;border-radius:5px;padding:0 10px;font-weight:700}.settingsSceneRenameButton:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-accent);color:var(--color-accent-bright)}.settingsSceneRenameButton:disabled{opacity:.45;cursor:not-allowed}.settingsDangerZone{border-top:1px solid var(--color-border);margin-top:4px;padding-top:12px}.settingsDeleteSceneButton{background:var(--color-danger-bg);width:100%;height:38px;color:var(--color-danger);cursor:pointer;letter-spacing:.04em;text-transform:uppercase;box-sizing:border-box;border:1px solid #c46d6d73;border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:flex}.settingsDeleteSceneButton:hover:not(:disabled){border-color:var(--color-danger);color:#f09a9a;background:#b4323247}.settingsDeleteSceneButton:disabled{opacity:.45;cursor:not-allowed}.settingsDangerHint{color:var(--color-text-muted);text-align:center;margin-top:6px;font-size:11px;font-weight:700}.filesPanel{background:var(--color-surface-1);min-height:0;color:var(--color-text);flex-direction:column;flex:1;display:flex}.filesHeader{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;min-height:42px;padding:0 10px;display:flex}.filesHeader h3{color:var(--color-accent-bright);margin:0;font-size:15px}.filesHeader button{background:var(--color-surface-2);width:28px;height:28px;color:var(--color-accent-bright);border:1px solid var(--color-border-strong);cursor:pointer;border-radius:5px}.filesHeader button:hover{background:var(--color-surface-hover);border-color:var(--color-accent)}.filesDropZone{border:1px dashed var(--color-border-strong);color:var(--color-text-muted);text-align:center;background:#ffffff05;border-radius:8px;margin:10px;padding:12px;font-size:13px;font-weight:700}.filesDropZone.active{border-color:var(--color-accent);color:var(--color-accent-bright);background:var(--color-accent-glow)}.filesList{flex-direction:column;flex:1;gap:8px;min-height:0;padding:0 10px 10px;display:flex;overflow-y:auto}.filesEmpty{color:var(--color-text-muted);text-align:center;padding:12px;font-size:13px}.fileCard{background:var(--color-surface-2);border:1px solid var(--color-border);box-sizing:border-box;border-radius:8px;grid-template-columns:1fr 28px;align-items:center;gap:8px;min-height:62px;padding:8px;display:grid}.fileCard:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.fileMain{min-width:0;color:inherit;align-items:center;gap:8px;text-decoration:none;display:flex}.fileInfo{flex-direction:column;gap:2px;min-width:0;display:flex}.fileName{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;overflow:hidden}.fileMeta{color:var(--color-text-muted);font-size:11px;font-weight:700}.fileDeleteButton{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;font-size:20px;line-height:1;display:flex}.fileDeleteButton:hover{background:var(--color-danger-bg);color:var(--color-danger)}.fileIcon{background:var(--color-bg-soft);border:1px solid var(--color-border);border-radius:6px;flex:0 0 42px;justify-content:center;align-items:center;width:42px;height:42px;font-size:17px;display:flex;overflow:hidden}.filePreviewImage{object-fit:cover;width:100%;height:100%;display:block}.combatTracker{z-index:155;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;top:62px;left:50%;transform:translate(-50%)}.combatTracker.active{top:58px}.combatTurnOrder{pointer-events:auto;border:1px solid var(--color-border);box-sizing:border-box;background:#10151ceb;border-radius:12px;align-items:flex-start;gap:10px;max-width:min(900px,100vw - 430px);min-height:88px;padding:10px 12px 9px;display:flex;overflow:auto hidden;box-shadow:0 14px 32px #00000080}.combatantCard{flex-direction:column;align-items:center;gap:5px;width:64px;min-width:64px;display:flex;position:relative}.combatantPortrait{background:var(--color-bg-soft);border:2px solid var(--color-border);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;width:54px;height:54px;display:flex;overflow:hidden}.combatantPortrait img{object-fit:cover;width:100%;height:100%;display:block}.combatantPortrait span{color:var(--color-accent-bright);font-size:18px;font-weight:900}.combatantCard.active .combatantPortrait{border-color:var(--color-accent-bright);box-shadow:0 0 0 2px var(--color-accent-glow), 0 0 18px var(--color-accent-glow)}.combatantCard.active:before{content:"";background:var(--color-accent-bright);width:10px;height:10px;box-shadow:0 0 12px var(--color-accent-glow);border-radius:50%;position:absolute;top:-5px}.combatantInitiative{background:var(--color-bg);min-width:30px;height:20px;color:var(--color-accent-bright);border:1px solid var(--color-accent-dark);box-sizing:border-box;border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:13px;font-weight:900;line-height:1;display:flex}.characterSheetLayout{flex-direction:column;gap:12px;display:flex}.sheetBox{border:1px solid var(--color-border);background:#1b222ceb;border-radius:8px;overflow:hidden}.sheetBoxTitle{background:var(--color-surface-2);color:var(--color-accent-bright);border-bottom:1px solid var(--color-border);text-transform:uppercase;letter-spacing:.04em;padding:5px 8px;font-size:11px;font-weight:900}.sheetBoxBody{padding:8px}.sheetIdentityGrid{grid-template-columns:1.5fr 1fr 1fr 70px 1fr 1fr;gap:8px;display:grid}.sheetStatGrid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.sheetSecondaryGrid{grid-template-columns:110px 110px 1.2fr 120px 1.4fr;gap:8px;display:grid}.abilitiesSkillsGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.sheetField{flex-direction:column;gap:4px;min-width:0;display:flex}.sheetField span,.sheetTextareaField span{color:var(--color-text-muted);text-transform:uppercase;font-size:10px;font-weight:900}.sheetInput,.sheetTextarea{background:var(--color-surface-1);width:100%;min-width:0;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:5px;outline:none;font-size:13px;font-weight:700}.sheetInput{height:32px;padding:0 8px}.sheetTextarea{resize:vertical;min-height:115px;padding:8px}.sheetTextarea.large{min-height:180px}.sheetInput:focus,.sheetTextarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.sheetBigInput{background:var(--color-surface-1);width:100%;height:42px;color:var(--color-accent-bright);border:1px solid var(--color-border);text-align:center;box-sizing:border-box;border-radius:5px;outline:none;font-size:20px;font-weight:900}.sheetBigNumber{min-height:42px;color:var(--color-accent-bright);justify-content:center;align-items:center;font-size:22px;font-weight:900;display:flex}.hpMiniGrid{grid-template-columns:1fr 1fr;gap:4px;display:grid}.sheetTinyLabels{color:var(--color-text-muted);text-transform:uppercase;text-align:center;grid-template-columns:1fr 1fr;gap:4px;margin-top:3px;font-size:9px;font-weight:900;display:grid}.hitDiceGrid{grid-template-columns:.8fr 1fr 1fr;gap:4px;display:grid}.hitDiceLabels{grid-template-columns:.8fr 1fr 1fr}.inspirationButton{background:var(--color-surface-1);width:100%;height:42px;color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;border-radius:5px;font-size:24px}.inspirationButton.active{color:var(--color-accent-bright);border-color:var(--color-accent);box-shadow:0 0 12px var(--color-accent-glow)}.sheetToggleDot{background:var(--color-bg);border:1px solid var(--color-border-strong);cursor:pointer;border-radius:50%;width:13px;height:13px;padding:0}.sheetToggleDot.active{background:var(--color-accent-bright);border-color:var(--color-accent-bright);box-shadow:0 0 8px var(--color-accent-glow)}.deathSaveRow{min-height:22px;color:var(--color-text);grid-template-columns:1fr 16px 16px 16px;align-items:center;gap:5px;font-size:12px;font-weight:700;display:grid}.abilitySheetBox .sheetBoxBody{flex-direction:column;gap:6px;display:flex}.abilityHeader{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.abilityModButton{background:var(--color-bg-soft);height:54px;color:var(--color-accent-bright);border:1px solid var(--color-accent-dark);cursor:pointer;border-radius:50%;font-size:20px;font-weight:900}.abilityModButton:hover{border-color:var(--color-accent);box-shadow:0 0 12px var(--color-accent-glow)}.abilityScoreField{flex-direction:column;gap:3px;display:flex}.abilityScoreField span{color:var(--color-text-muted);text-transform:uppercase;font-size:10px;font-weight:900}.abilityScoreField input{background:var(--color-surface-1);height:30px;color:var(--color-text);border:1px solid var(--color-border);text-align:center;border-radius:5px;outline:none;font-weight:900}.skillRow{grid-template-columns:16px 1fr;align-items:center;gap:6px;min-height:22px;display:grid}.skillRollButton{color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-size:12px;font-weight:700}.skillRollButton:hover{color:var(--color-accent-bright)}.attacksTable{flex-direction:column;gap:4px;display:flex}.attacksTableHeader{color:var(--color-text-muted);text-transform:uppercase;font-size:10px;font-weight:900}.attacksTableRow input{background:var(--color-surface-1);height:30px;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:4px;padding:0 6px}.sheetAddButton{background:var(--color-surface-2);height:32px;color:var(--color-accent-bright);border:1px solid var(--color-border);cursor:pointer;border-radius:5px;margin-top:8px;font-weight:900}.sheetAddButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent)}.sheetIconButton{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;font-size:18px;font-weight:900}.sheetIconButton:hover{background:var(--color-surface-hover);color:var(--color-text)}.sheetIconButton.danger:hover{background:var(--color-danger-bg);color:var(--color-danger)}.combatTextGrid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sheetTextareaField{flex-direction:column;gap:5px;display:flex}.spellTopGrid{grid-template-columns:1fr 1.6fr;gap:10px;display:grid}.spellcastingGrid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.spellDerivedStat{background:var(--color-surface-1);border:1px solid var(--color-border);box-sizing:border-box;border-radius:5px;flex-direction:column;justify-content:center;gap:3px;min-height:42px;padding:6px;display:flex}.spellDerivedStat span{color:var(--color-text-muted);text-transform:uppercase;font-size:10px;font-weight:900}.spellDerivedStat strong{color:var(--color-accent-bright);font-size:18px}.spellSlotsGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.spellSlotRow{color:var(--color-text);grid-template-columns:52px 42px 1fr;align-items:center;gap:5px;font-size:11px;font-weight:800;display:grid}.spellSlotDots{flex-wrap:wrap;gap:3px;display:flex}.attacksTableHeader,.attacksTableRow{grid-template-columns:minmax(150px,1.2fr) 70px minmax(160px,1.4fr) minmax(130px,1fr) minmax(160px,1.2fr) 28px;align-items:center;gap:4px;display:grid}.bioGrid{grid-template-columns:1fr 1.4fr;gap:10px;display:grid}.attackNameCell{grid-template-columns:1fr 32px;align-items:center;gap:4px;display:grid}.attackNameInput{background:var(--color-surface-2);width:100%;min-width:0;height:30px;color:var(--color-accent-bright);border:1px solid var(--color-border);box-sizing:border-box;border-radius:4px;outline:none;padding:0 8px;font-weight:900}.attackNameInput:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.attackRollButton{background:var(--color-surface-2);width:32px;height:30px;color:var(--color-accent-bright);border:1px solid var(--color-border);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;font-size:14px;display:flex}.attackRollButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent);box-shadow:0 0 8px var(--color-accent-glow)}.spellsMainGrid{grid-template-columns:minmax(530px,1.7fr) minmax(300px,1fr);align-items:start;gap:10px;display:grid}.spellListTable{flex-direction:column;gap:5px;display:flex}.spellListEmpty{color:var(--color-text-muted);border:1px dashed var(--color-border);text-align:center;border-radius:6px;padding:12px;font-size:13px;font-weight:700}.spellEditorEmpty{color:var(--color-text-muted);text-align:center;padding:16px;font-size:13px;font-weight:700}.spellEditorCard{grid-template-columns:1fr 90px;gap:8px;display:grid}.spellEditorCard .sheetField:first-child{grid-column:span 1}.spellEditorNotes{grid-column:1/-1}.spellComponentToggles{background:var(--color-surface-1);border:1px solid var(--color-border);box-sizing:border-box;border-radius:6px;grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(0,.7fr) minmax(0,.7fr);gap:4px;padding:8px;display:grid}.spellComponentToggles label{color:var(--color-text);align-items:center;gap:7px;font-size:12px;font-weight:800;display:flex}.sheetBoxTitleButton{width:100%;color:var(--color-accent-bright);cursor:pointer;font:inherit;font-size:inherit;font-weight:inherit;text-transform:inherit;letter-spacing:inherit;text-align:left;background:0 0;border:none;padding:0}.sheetBoxTitleButton:hover{color:var(--color-text);text-shadow:0 0 8px var(--color-accent-glow)}.initiativeBox{flex-direction:column;gap:6px;display:flex}.initiativeBonusField{grid-template-columns:42px 1fr;align-items:center;gap:5px;display:grid}.initiativeBonusField span{color:var(--color-text-muted);text-transform:uppercase;font-size:10px;font-weight:900}.initiativeBonusField input{text-align:center;height:28px}.spellListHeader,.spellListRow{grid-template-columns:minmax(130px,1fr) 70px 90px 80px 106px;align-items:center;gap:10px;display:grid}.spellListHeader{color:var(--color-text-muted);text-transform:uppercase;margin-bottom:4px;padding:0;font-size:10px;font-weight:900}.spellListHeader span{box-sizing:border-box;align-items:center;height:18px;padding:0;display:flex}.spellListHeader span:first-child{justify-content:flex-start;padding-left:8px}.spellListHeader span:nth-child(2),.spellListHeader span:nth-child(5){justify-content:center}.spellListHeader span:nth-child(3),.spellListHeader span:nth-child(4){justify-content:flex-start}.spellListRow{min-height:34px}.spellNameButton{box-sizing:border-box;align-items:center;width:100%;height:32px;padding:0 8px;display:flex}.spellLevelPill{box-sizing:border-box;justify-content:center;align-items:center;width:100%;height:28px;display:flex}.spellListText{text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;align-items:center;width:100%;min-width:0;height:32px;display:flex;overflow:hidden}.spellActionsCell{box-sizing:border-box;grid-template-columns:68px 34px;align-items:center;gap:10px;width:156px;height:32px;display:grid}.spellEditButton{background:var(--color-surface-2);width:70px;height:32px;color:var(--color-text);border:1px solid var(--color-border);cursor:pointer;box-sizing:border-box;border-radius:5px;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:flex}.spellEditButton:hover{background:var(--color-surface-hover);color:var(--color-accent-bright);border-color:var(--color-accent)}.spellDeleteButton{width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;box-sizing:border-box;background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;font-size:18px;font-weight:900;line-height:1;display:flex}.spellDeleteButton:hover{background:var(--color-danger-bg);color:var(--color-danger);border-color:#c46d6d73}.spellNameButton{appearance:none;background:var(--color-surface-2);width:100%;min-width:0;height:32px;color:var(--color-accent-bright);border:1px solid var(--color-border);cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;border-radius:5px;align-items:center;padding:0 8px;font-family:inherit;font-size:13px;font-weight:900;display:flex;overflow:hidden}.spellNameButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent);box-shadow:0 0 8px var(--color-accent-glow)}.spellNameButton:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow);outline:none}.spellLevelPill{background:var(--color-bg-soft);width:100%;min-width:0;height:28px;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:999px;justify-content:center;align-items:center;padding:0 7px;font-size:11px;font-weight:900;display:flex}.spellListText{width:100%;min-width:0;height:32px;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;align-items:center;font-size:12px;font-weight:800;display:flex;overflow:hidden}.toolbarSeparator{background:var(--color-border);width:calc(100% - 10px);height:1px;margin:6px 5px}.toolbarCombatControls{flex-direction:column;gap:5px;padding:0 5px;display:flex}.toolbarCombatButton{letter-spacing:.04em;text-align:center;background:linear-gradient(to bottom, var(--color-surface-3), var(--color-surface-2));width:40px;min-height:40px;color:var(--color-accent-bright);cursor:pointer;box-sizing:border-box;border-radius:5px;justify-content:center;align-items:center;margin:0;padding:0 4px;font-size:9px;font-weight:900;line-height:1;display:flex}.toolbarCombatButton:hover{background:var(--color-surface-hover);border-color:var(--color-accent-dark)}.toolbarCombatButton.combatRunning{background:linear-gradient(to bottom, #3a2b17, var(--color-surface-2));border-color:var(--color-accent-bright)}.toolbarCombatButton.combatRunning:hover{border:3px solid var(--color-accent)}.toolbarEndCombatButton{color:var(--color-danger);background:var(--color-danger-bg);border-color:#c46d6d73}.toolbarEndCombatButton:hover{color:var(--color-danger);background:#b4323247}.toolbarIcon{object-fit:contain;width:26px;height:26px;image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;display:block}.text-menu-wrapper{z-index:125;position:absolute;top:8px;left:58px}.text-menu-panel{background:var(--color-surface-2);border:1px solid var(--color-border);box-sizing:border-box;border-radius:9px;align-items:center;gap:10px;min-width:520px;height:52px;padding:8px;display:flex;box-shadow:0 12px 28px #00000073}.text-color-button{background:var(--color-surface-1);border:1px solid var(--color-border);cursor:pointer;box-sizing:border-box;border-radius:5px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:flex}.text-color-button:hover{border-color:var(--color-accent);box-shadow:0 0 8px var(--color-accent-glow)}.text-color-preview{box-sizing:border-box;border:1px solid #ffffff8c;border-radius:3px;width:26px;height:26px;display:block}.text-color-preview.large{flex:0 0 36px;width:36px;height:36px}.text-menu-divider{background:var(--color-border-strong);flex:0 0 1px;width:1px;height:34px}.text-dropdown{position:relative}.text-font-button,.text-size-button{height:36px;color:var(--color-text);cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:5px;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;display:flex}.text-font-button{width:180px}.text-size-button{width:74px}.text-font-button:hover,.text-size-button:hover,.text-font-button.active,.text-size-button.active{background:var(--color-surface-hover)}.text-dropdown-arrow{color:var(--color-text-muted);font-size:12px}.text-style-button{width:36px;height:36px;color:var(--color-text-muted);cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;font-size:22px;font-weight:900;display:flex}.text-style-button.italic{font-family:Georgia,serif;font-style:italic}.text-style-button:hover,.text-style-button.active{background:var(--color-surface-hover);color:var(--color-accent-bright)}.text-popover{z-index:260;background:var(--color-surface-2);border:1px solid var(--color-border);box-sizing:border-box;border-radius:7px;position:absolute;top:calc(100% + 6px);box-shadow:0 12px 28px #00000073}.text-color-popover{width:276px;padding:8px;left:0}.text-color-grid{border-bottom:1px solid var(--color-border);grid-template-columns:repeat(8,1fr);gap:4px;padding-bottom:8px;display:grid}.text-color-square{aspect-ratio:1;cursor:pointer;box-sizing:border-box;border:1px solid #151515;border-radius:4px;width:100%;padding:0}.text-color-square:hover{outline:2px solid var(--color-text);outline-offset:-2px}.text-color-square.selected{outline:3px solid var(--color-accent-bright);outline-offset:-4px}.text-color-value-row{align-items:center;gap:8px;margin-top:8px;display:flex}.text-color-text-input{background:var(--color-surface-1);min-width:0;height:36px;color:var(--color-text);border:1px solid var(--color-border);box-sizing:border-box;border-radius:4px;outline:none;flex:1;padding:0 10px;font-size:14px}.text-color-text-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-glow)}.text-font-popover{width:180px;max-height:320px;padding:6px 0;left:0;overflow-y:auto}.text-font-option{width:100%;height:38px;color:var(--color-text);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;padding:0 12px;font-size:15px;display:flex}.text-font-option:hover,.text-font-option.selected{background:var(--color-surface-hover);color:var(--color-accent-bright)}.text-size-popover{width:74px;max-height:320px;padding:6px 0;left:0;overflow-y:auto}.text-size-option{width:100%;height:34px;color:var(--color-text);cursor:pointer;box-sizing:border-box;background:0 0;border:none;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:flex}.text-size-option:hover,.text-size-option.selected{background:var(--color-surface-hover);color:var(--color-accent-bright)}.textInlineEditorLayer{z-index:260;pointer-events:auto;position:absolute}.textInlineEditor{min-width:70px;min-height:34px;color:var(--color-text);resize:none;white-space:pre-wrap;box-sizing:border-box;background:#ffffff0a;border:1px solid;border-radius:4px;outline:none;padding:5px 8px;line-height:1.18;overflow:hidden;box-shadow:0 0 0 1px #ffffff1f,0 6px 18px #00000040}.textInlineEditor::selection{background:#d5ab5a47}.textInlineEditorMirror{white-space:pre-wrap;visibility:hidden;pointer-events:none;box-sizing:border-box;min-width:70px;padding:5px 8px;line-height:1.25;position:absolute;top:-99999px;left:-99999px}.authPage{background:radial-gradient(circle at top, #d5ab5a1f, transparent 34%), var(--color-bg,#111922);min-height:100vh;color:var(--color-text,#f1e7d0);justify-content:center;align-items:center;display:flex}.authCard{background:var(--color-surface-1,#17212b);border:1px solid var(--color-border,#314557);box-sizing:border-box;border-radius:14px;width:min(420px,100vw - 32px);padding:28px;box-shadow:0 18px 50px #00000073}.authHeader{margin-bottom:20px}.authHeader h1{color:var(--color-accent,#d5ab5a);letter-spacing:.04em;margin:0 0 8px;font-size:28px}.authHeader p{color:var(--color-text-muted,#aeb8c2);margin:0;font-size:14px}.authTabs{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px;display:grid}.authTabs button,.authSubmit{background:var(--color-surface-2,#21303d);height:38px;color:var(--color-text,#f1e7d0);border:1px solid var(--color-border,#314557);cursor:pointer;border-radius:8px;font-weight:800}.authTabs button.active,.authSubmit{background:var(--color-accent,#d5ab5a);color:#111922;border-color:var(--color-accent-bright,#f0c76d)}.authField{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.authField span{color:var(--color-text-muted,#aeb8c2);text-transform:uppercase;font-size:11px;font-weight:900}.authField input{background:var(--color-surface-0,#101820);height:40px;color:var(--color-text,#f1e7d0);border:1px solid var(--color-border,#314557);box-sizing:border-box;border-radius:8px;outline:none;padding:0 12px}.authField input:focus{border-color:var(--color-accent,#d5ab5a);box-shadow:0 0 0 2px #d5ab5a33}.authError{color:#ffb4b4;background:#be484824;border:1px solid #be484873;border-radius:8px;margin-bottom:14px;padding:10px 12px;font-size:13px}.authSubmit{width:100%}.authSubmit:disabled{opacity:.7;cursor:wait}.dashboardPage{background:radial-gradient(circle at top left, #d5ab5a24, transparent 30%), radial-gradient(circle at bottom right, #4468822e, transparent 34%), var(--color-bg,#111922);min-height:100vh;color:var(--color-text,#f1e7d0);box-sizing:border-box;padding:32px}.dashboardShell{width:min(1180px,100%);margin:0 auto}.dashboardTopbar{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.dashboardEyebrow{color:var(--color-accent,#d5ab5a);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:900}.dashboardTopbar h1{color:var(--color-text,#f1e7d0);margin:0 0 8px;font-size:clamp(28px,4vw,46px);line-height:1.08}.dashboardTopbar p{max-width:620px;color:var(--color-text-muted,#aeb8c2);margin:0;font-size:15px;line-height:1.5}.dashboardLogoutButton,.dashboardRefreshButton,.dashboardPrimaryButton,.dashboardSecondaryButton,.dashboardOpenButton{border:1px solid var(--color-border,#314557);cursor:pointer;border-radius:10px;font-weight:900;transition:transform .12s,filter .12s,border-color .12s}.dashboardLogoutButton:hover,.dashboardRefreshButton:hover,.dashboardPrimaryButton:hover,.dashboardSecondaryButton:hover,.dashboardOpenButton:hover{filter:brightness(1.08);transform:translateY(-1px)}.dashboardLogoutButton{min-width:96px;height:38px;color:var(--color-text-muted,#aeb8c2);background:#ffffff08}.dashboardStats{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.dashboardStatCard{border:1px solid var(--color-border,#314557);background:#17212beb;border-radius:14px;padding:18px;box-shadow:0 12px 30px #00000038}.dashboardStatCard span{color:var(--color-text-muted,#aeb8c2);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:900;display:block}.dashboardStatCard strong{color:var(--color-accent,#d5ab5a);margin-top:8px;font-size:30px;line-height:1;display:block}.dashboardGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.dashboardPanel{border:1px solid var(--color-border,#314557);background:#17212bf2;border-radius:16px;overflow:hidden;box-shadow:0 18px 50px #00000047}.dashboardActionPanel{padding:20px}.dashboardRoomsPanel{grid-column:1/-1;padding:0}.dashboardPanelHeader{margin-bottom:16px}.dashboardRoomsHeader{border-bottom:1px solid var(--color-border,#314557);background:#ffffff08;justify-content:space-between;align-items:center;gap:16px;margin:0;padding:18px 20px;display:flex}.dashboardPanelHeader h2{color:var(--color-accent,#d5ab5a);letter-spacing:.03em;margin:0 0 6px;font-size:17px}.dashboardPanelHeader p{color:var(--color-text-muted,#aeb8c2);margin:0;font-size:13px;line-height:1.4}.dashboardField{flex-direction:column;gap:7px;margin-bottom:14px;display:flex}.dashboardField span{color:var(--color-text-muted,#aeb8c2);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:900}.dashboardField input{background:var(--color-surface-0,#101820);height:42px;color:var(--color-text,#f1e7d0);border:1px solid var(--color-border,#314557);box-sizing:border-box;border-radius:10px;outline:none;padding:0 12px}.dashboardField input:focus{border-color:var(--color-accent,#d5ab5a);box-shadow:0 0 0 2px #d5ab5a2e}.dashboardPrimaryButton,.dashboardSecondaryButton{width:100%;height:42px}.dashboardPrimaryButton{background:var(--color-accent,#d5ab5a);color:#111922;border-color:var(--color-accent-bright,#f0c76d)}.dashboardSecondaryButton,.dashboardRefreshButton,.dashboardOpenButton{background:var(--color-surface-2,#21303d);color:var(--color-text,#f1e7d0)}.dashboardRefreshButton{height:34px;padding:0 12px}.dashboardPrimaryButton:disabled,.dashboardSecondaryButton:disabled,.dashboardRefreshButton:disabled{opacity:.65;cursor:wait;transform:none}.dashboardError{color:#ffb4b4;background:#be484824;border:1px solid #be484873;border-radius:10px;margin:16px 20px 0;padding:10px 12px;font-size:13px}.dashboardEmptyState{color:var(--color-text-muted,#aeb8c2);text-align:center;flex-direction:column;gap:6px;padding:32px 20px;display:flex}.dashboardEmptyState strong{color:var(--color-text,#f1e7d0)}.dashboardRoomList{flex-direction:column;gap:10px;padding:16px;display:flex}.dashboardRoomCard{background:#101820c7;border:1px solid #314557d9;border-radius:14px;justify-content:space-between;align-items:center;gap:16px;padding:14px;display:flex}.dashboardRoomMain{align-items:center;gap:14px;min-width:0;display:flex}.dashboardRoomIcon{width:42px;height:42px;color:var(--color-accent,#d5ab5a);background:#d5ab5a24;border:1px solid #d5ab5a59;border-radius:12px;flex:none;justify-content:center;align-items:center;font-size:17px;font-weight:1000;display:flex}.dashboardRoomInfo{min-width:0}.dashboardRoomInfo h3{color:var(--color-text,#f1e7d0);text-overflow:ellipsis;white-space:nowrap;margin:0 0 7px;font-size:15px;overflow:hidden}.dashboardRoomMeta{color:var(--color-text-muted,#aeb8c2);flex-wrap:wrap;gap:8px 12px;font-size:12px;display:flex}.dashboardCodeButton{color:var(--color-accent,#d5ab5a);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;font-weight:900}.dashboardCodeButton:hover{text-decoration:underline}.dashboardRoomActions{flex:none;align-items:center;gap:10px;display:flex}.dashboardCopiedHint{color:var(--color-accent,#d5ab5a);font-size:12px;font-weight:900}.dashboardOpenButton{height:36px;padding:0 16px}@media (width<=760px){.dashboardPage{padding:18px}.dashboardTopbar{flex-direction:column;align-items:stretch}.dashboardStats,.dashboardGrid{grid-template-columns:1fr}.dashboardRoomCard{flex-direction:column;align-items:stretch}.dashboardRoomActions{justify-content:space-between}.dashboardOpenButton{width:100%}}.languageToggle{min-width:142px;color:var(--color-text-muted,#aeb8c2);letter-spacing:0;text-transform:uppercase;justify-content:space-between;align-items:center;gap:10px;font-size:11px;font-weight:900;display:flex}.languageToggleLabel{min-width:0}.languageToggleOptions{background:var(--color-bg-soft,#101820);border:1px solid var(--color-border,#314557);border-radius:7px;flex:none;grid-template-columns:repeat(2,38px);gap:2px;padding:2px;display:grid}.languageToggleOptions button{width:38px;height:26px;color:var(--color-text-muted,#aeb8c2);cursor:pointer;letter-spacing:0;background:0 0;border:none;border-radius:5px;padding:0;font-size:10px;font-weight:900}.languageToggleOptions button:hover{background:var(--color-surface-hover,#384b5d);color:var(--color-text,#f1e7d0)}.languageToggleOptions button.active{background:var(--color-accent,#d5ab5a);color:#111922}.authLanguageToggle{margin-bottom:18px}.dashboardTopbarActions{flex-direction:column;flex:none;align-items:flex-end;gap:12px;display:flex}.sidebarSettingsPanel{flex-direction:column;gap:12px;display:flex}.sidebarSettingsPanel h3,.sidebarSettingsPanel p{margin:0}.sidebarLanguageToggle{width:100%;padding-top:4px}.settingsToggleRow{grid-template-columns:150px 1fr}.settingsColorField{grid-template-columns:130px 1fr}.settingsToggleRow>span,.settingsColorLabel{overflow-wrap:anywhere}@media (width<=760px){.dashboardTopbarActions{align-items:stretch}.dashboardLogoutButton{width:100%}}
