:root{--bg-dark: #1a1a1a;--bg-panel: #2d2d2d;--bg-toolbar: #383838;--bg-hover: #454545;--accent: #5a8de0;--accent-hover: #4a7dcf;--fg-primary: #e8eaed;--fg-secondary: #a8a8a8;--fg-muted: #6b7280;--border: #4a4a4a;--border-light: #585858;--success: #22c55e;--danger: #ef4444;--warning: #f59e0b}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{background:var(--bg-dark);color:var(--fg-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.4}.app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:nowrap;overflow-x:auto;min-height:40px}.toolbar::-webkit-scrollbar{height:4px}.toolbar-group{display:flex;align-items:center;gap:6px;flex-shrink:0}.toolbar-label{font-size:11px;color:var(--fg-secondary);white-space:nowrap}.toolbar h1{font-size:13px;font-weight:600;color:var(--fg-primary);margin-right:4px;white-space:nowrap}.toolbar-title{font-size:12px;font-weight:600}.toolbar-divider{width:1px;height:20px;background:var(--border);margin:0 2px;flex-shrink:0}.toolbar-spacer{flex:1;min-width:8px}.map-controls-section{display:flex;align-items:center;gap:8px}.map-controls-section.locked{opacity:.6}.sidebar-toggle{min-width:32px;padding:4px 6px!important;justify-content:center;font-weight:700}.lock-btn{font-size:13px!important}.lock-btn.locked{background:rgba(245,158,11,.2)!important;border-color:var(--warning)!important}.map-control{min-width:26px;padding:3px 6px!important;justify-content:center}.map-control:disabled{opacity:.5;cursor:not-allowed}.map-control-value{min-width:36px;text-align:center;font-size:11px;font-weight:600;white-space:nowrap}.fog-label{color:var(--fg-primary);font-weight:500}.compact-controls{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.compact-controls .checkbox-label{margin:0 4px}.control-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:5px;cursor:pointer;font-size:12px;transition:all .15s;white-space:nowrap}.control-btn:hover{background:var(--bg-hover);border-color:var(--border-light)}.control-btn.active{background:var(--accent);border-color:var(--accent)}.control-btn.danger{color:var(--danger)}.control-btn.danger:hover{background:rgba(239,68,68,.15)}.control-btn.mini{padding:2px 8px;font-size:11px}select{padding:4px 6px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:4px;font-size:12px;cursor:pointer}input[type=number]{width:50px;padding:4px 6px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:4px;font-size:12px}input[type=range]{width:70px;cursor:pointer}.checkbox-label{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:12px;color:var(--fg-secondary);white-space:nowrap}.checkbox-label input{width:13px;height:13px;accent-color:var(--accent);cursor:pointer}.badge{display:inline-flex;align-items:center;padding:2px 6px;background:var(--bg-hover);color:var(--fg-primary);border-radius:4px;font-size:10px;font-weight:500}.badge.success{background:rgba(34,197,94,.2);color:var(--success)}.badge.warning{background:rgba(245,158,11,.2);color:var(--warning)}.color-presets{display:flex;gap:3px;flex-wrap:wrap}.color-preset{width:18px;height:18px;border-radius:3px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex-shrink:0}.color-preset:hover{transform:scale(1.1)}.color-preset.active{border-color:var(--fg-primary)}.layout{display:flex;flex:1;overflow:hidden;position:relative}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}.sidebar{width:280px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;position:absolute;left:0;top:0;bottom:0;z-index:10}.sidebar.closed{width:0;min-width:0;overflow:hidden;border-right:none}.sidebar-tabs{display:flex;border-bottom:1px solid var(--border);flex-wrap:wrap}.sidebar-tab{flex:1;padding:8px 4px;text-align:center;font-size:11px;font-weight:500;color:var(--fg-secondary);background:transparent;border:none;cursor:pointer;transition:all .15s;min-width:0;overflow:hidden;text-overflow:ellipsis}.sidebar-tab:hover{color:var(--fg-primary);background:var(--bg-hover)}.sidebar-tab.active{color:var(--fg-primary);background:var(--bg-toolbar);border-bottom:2px solid var(--accent)}.sidebar-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:10px}.sidebar-right{width:300px;background:var(--bg-panel);border-left:1px solid var(--border);display:flex;flex-direction:column;position:absolute;right:0;top:0;bottom:0;z-index:10}.sidebar-right.closed{width:0;min-width:0;overflow:hidden;border-left:none}.right-tabs{border-bottom:1px solid var(--border)}.right-tabs .sidebar-tab{font-size:11px;padding:8px 2px}.panel-section{display:flex;flex-direction:column;gap:12px}.panel-section h3{font-size:11px;font-weight:600;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.5px}.panel-group{display:flex;flex-direction:column;gap:6px}.panel-label{font-size:11px;color:var(--fg-secondary);font-weight:500}.panel-controls{display:flex;align-items:center;gap:6px}.panel-value{min-width:40px;text-align:center;font-weight:600;font-size:12px}.panel-info{padding:8px;background:var(--bg-toolbar);border-radius:5px;font-size:11px;color:var(--fg-secondary)}.map-library{display:flex;flex-direction:column;gap:10px}.map-library h3{font-size:11px;font-weight:600;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.map-upload-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;background:var(--bg-toolbar);border:2px dashed var(--border);border-radius:6px;cursor:pointer;color:var(--fg-secondary);font-size:11px;transition:all .15s}.map-upload-btn:hover{border-color:var(--accent);color:var(--fg-primary);background:rgba(59,130,246,.1)}.map-previews{display:grid;grid-template-columns:1fr 1fr;gap:6px}.map-preview{position:relative;aspect-ratio:16/10;border-radius:5px;overflow:hidden;border:2px solid transparent;cursor:pointer;transition:all .15s;content-visibility:auto;contain-intrinsic-size:125px}.map-preview:hover{border-color:var(--border-light)}.map-preview.active{border-color:var(--accent)}.map-preview img{width:100%;height:100%;object-fit:cover;display:block}.map-preview .remove{position:absolute;top:3px;right:3px;width:18px;height:18px;background:rgba(0,0,0,.7);border-radius:50%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;cursor:pointer;font-size:12px;color:var(--fg-primary)}.map-preview:hover .remove{opacity:1}.token-editor{display:flex;flex-direction:column;gap:10px}.token-editor h3{font-size:11px;font-weight:600;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.5px}.empty-state{padding:12px;text-align:center;color:var(--fg-muted);font-size:11px}.token-list{display:flex;flex-direction:column;gap:3px;max-height:150px;overflow-y:auto}.token-list-item{display:flex;align-items:center;gap:6px;padding:6px;background:var(--bg-toolbar);border-radius:5px;cursor:pointer;transition:all .15s}.token-list-item:hover{background:var(--bg-hover)}.token-list-item.active{background:var(--bg-hover);border:1px solid var(--accent)}.token-swatch{width:14px;height:14px;border-radius:50%;flex-shrink:0}.token-name{font-size:11px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-type{font-size:9px;color:var(--fg-muted);text-transform:uppercase;flex-shrink:0}.token-edit-form{margin-top:12px;padding:10px;background:var(--bg-toolbar);border-radius:6px}.token-edit-form h4{font-size:11px;margin-bottom:10px}.form-group{margin-bottom:10px}.form-group label{display:block;font-size:10px;color:var(--fg-muted);margin-bottom:3px}.form-group input[type=text],.form-group input[type=number],.form-group select{width:100%}.form-group input[type=color]{width:100%;height:28px;padding:1px;cursor:pointer}.position-inputs{display:flex;align-items:center;gap:6px}.position-inputs input{flex:1}.position-inputs span{color:var(--fg-muted);font-size:11px}.scale-inputs{display:flex;align-items:center;gap:6px}.scale-inputs input{flex:1}.scale-inputs span{color:var(--fg-muted);min-width:28px;font-size:11px}.fog-indicator{font-size:11px;margin-left:3px}.form-section{margin-top:12px;padding:6px;background:var(--bg-panel);border-radius:5px}.section-label{font-size:10px;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600;display:block;margin-bottom:6px}.fog-toggle-label{color:var(--fg-primary);font-weight:500}.radius-inputs{display:flex;align-items:center;gap:6px}.radius-value{min-width:45px;text-align:center;font-weight:600;font-size:12px}.radius-presets{display:flex;gap:3px;margin-top:6px;flex-wrap:wrap}.radius-preset-btn{padding:3px 6px;background:var(--bg-toolbar);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:10px;color:var(--fg-secondary);transition:all .1s}.radius-preset-btn:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--fg-primary)}.canvas-container{flex:1;display:flex;flex-direction:column;background:var(--bg-dark);overflow:hidden;position:relative;min-width:0}.canvas-stage{flex:1;position:relative;overflow:hidden;background:#141414;outline:none;user-select:none;-webkit-user-select:none}.canvas-stage-inner{position:absolute;top:0;right:0;bottom:0;left:0;will-change:transform}.grid-container{will-change:transform}.map-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;transition:opacity .4s ease;pointer-events:auto}.map-image.loading{opacity:.6;filter:blur(12px);transform:scale(1.08)}.map-thumb-placeholder{z-index:1;opacity:1}.placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--fg-muted);gap:10px;pointer-events:auto}.placeholder-icon{font-size:42px;opacity:.3}.placeholder-text{font-size:13px}.tokens-layer{pointer-events:none!important}.tokens-layer .token-container{pointer-events:auto}.fog-overlay{will-change:auto}.grid-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.token-container{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;z-index:1}.token-container:has(.selected){z-index:10}.token{width:30px;height:30px;border-radius:50%;cursor:grab;display:flex;align-items:center;justify-content:center;transition:opacity .15s;user-select:none;-webkit-user-select:none}.token:hover{opacity:.85}.token.dragging{opacity:.7;cursor:grabbing}.token-label{font-size:10px;font-weight:700;color:#000000b3;pointer-events:none}.token-nametag{margin-top:2px;padding:1px 5px;background:rgba(0,0,0,.7);color:#fff;font-size:10px;border-radius:3px;white-space:nowrap;pointer-events:none}.token.defeated{opacity:.35;filter:grayscale(.8)}.defeated-x{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:900;color:#ef4444;text-shadow:0 0 5px rgba(239,68,68,.8);pointer-events:none;z-index:5}.stat-bar-row{display:flex;gap:2px;margin-top:2px;justify-content:center}.stat-dot{width:6px;height:6px;border-radius:50%;border:1.5px solid;cursor:pointer;transition:transform .1s}.stat-dot:hover{transform:scale(1.4)}.stat-dot.empty{background:transparent!important}.stat-editor-section{margin-top:10px;padding:6px;background:var(--bg-panel);border-radius:5px}.stat-toggle{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:11px}.stat-toggle input{width:12px;height:12px;accent-color:var(--accent);cursor:pointer}.stat-toggle-label{font-weight:600}.hp-color{color:#ef4444}.mp-color{color:#3b82f6}.bar-color{color:#22c55e}.stat-controls{display:flex;align-items:center;gap:4px;margin-top:5px}.stat-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:12px;font-weight:700;transition:all .1s;padding:0}.stat-btn:hover{background:var(--bg-hover);border-color:var(--accent)}.stat-value{font-size:12px;font-weight:700;min-width:14px;text-align:center}.stat-sep{color:var(--fg-muted);font-size:12px}.stat-max-input{width:36px!important;padding:2px!important;text-align:center;font-size:11px!important}.status-bar{display:flex;align-items:center;justify-content:space-between;padding:4px 10px;background:var(--bg-toolbar);border-top:1px solid var(--border);font-size:10px;color:var(--fg-secondary);flex-shrink:0}.status-left{display:flex;gap:12px;flex-wrap:wrap}.status-right{display:flex;align-items:center;gap:8px}.status-item{display:flex;align-items:center;gap:3px;white-space:nowrap}.token-browser{display:flex;flex-direction:column;gap:10px;height:100%}.browser-search{position:relative}.browser-search input{width:100%;padding:6px 28px 6px 10px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:5px;font-size:11px}.browser-search input::placeholder{color:var(--fg-muted)}.browser-search input:focus{border-color:var(--accent);outline:none}.clear-search{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--fg-muted);cursor:pointer;font-size:14px;padding:0;line-height:1}.clear-search:hover{color:var(--fg-primary)}.folder-select{width:100%;padding:6px 10px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:5px;font-size:11px;cursor:pointer}.folder-select:focus{border-color:var(--accent);outline:none}.token-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;overflow-y:auto;overflow-x:hidden;padding:3px;flex:1;align-content:start}.token-item-browser{aspect-ratio:1;border-radius:6px;overflow:hidden;border:2px solid transparent;cursor:grab;transition:all .15s;background:var(--bg-toolbar);display:flex;align-items:center;justify-content:center;padding:3px;min-height:50px}.token-item-browser:hover{border-color:var(--accent);transform:scale(1.05)}.token-item-browser img{max-width:100%;max-height:100%;object-fit:contain}.token-browser-loading{padding:20px;text-align:center;color:var(--fg-muted)}.notes-textarea{width:100%;padding:6px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:5px;font-size:11px;line-height:1.5;resize:none;font-family:inherit}.notes-textarea:focus{border-color:var(--accent);outline:none}.notes-textarea::placeholder{color:var(--fg-muted)}.campaign-panel{display:flex;flex-direction:column;height:100%}.campaign-subtabs{display:flex;border-bottom:1px solid var(--border)}.campaign-subtabs .sidebar-tab{flex:1;padding:6px 2px;font-size:11px}.campaign-pane{display:flex;flex-direction:column;gap:10px}.campaign-pane .panel-section{margin-bottom:0}.campaign-input{width:100%;padding:6px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:5px;font-size:12px}.campaign-input:focus{border-color:var(--accent);outline:none}.entry-list{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.entry-card{padding:6px;background:var(--bg-toolbar);border-radius:5px;border:1px solid var(--border)}.entry-header{display:flex;align-items:center;gap:4px;margin-bottom:4px}.entry-title-input{flex:1;padding:3px 4px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:11px;font-weight:600}.entry-title-input:focus{border-color:var(--accent);outline:none}.entry-date{font-size:10px;color:var(--fg-muted);white-space:nowrap}.entry-remove{background:none;border:none;color:var(--fg-muted);cursor:pointer;font-size:12px;padding:0 2px;line-height:1}.entry-remove:hover{color:var(--danger)}.entry-textarea{width:100%;padding:4px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:11px;line-height:1.4;resize:none;font-family:inherit}.entry-textarea:focus{border-color:var(--accent);outline:none}.quest-status{font-size:10px;padding:2px 4px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;cursor:pointer}.battlelog-pane{display:flex;flex-direction:column;gap:8px}.battle-name{flex:1;font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.outcome-badge{font-size:9px;padding:1px 5px;border-radius:3px;text-transform:uppercase;font-weight:600}.outcome-ongoing{background:rgba(245,158,11,.2);color:var(--warning)}.outcome-victory{background:rgba(34,197,94,.2);color:var(--success)}.outcome-defeat{background:rgba(239,68,68,.2);color:var(--danger)}.outcome-retreat{background:rgba(107,114,128,.2);color:var(--fg-muted)}.battle-details{margin-top:6px;display:flex;flex-direction:column;gap:6px}.battle-details .form-group label{font-size:10px;color:var(--fg-muted);display:block;margin-bottom:2px}.battle-details .form-group input,.battle-details .form-group select{width:100%;font-size:11px;padding:4px}.round-card{padding:4px;background:var(--bg-panel);border-radius:4px;margin-bottom:3px;border:1px solid var(--border)}.round-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}.round-label{font-size:10px;font-weight:600;color:var(--fg-secondary)}.action-row{display:flex;gap:3px;margin-bottom:2px}.action-token{flex:2;min-width:0;padding:2px 4px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:10px}.action-desc{flex:3;min-width:0;padding:2px 4px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:10px}.action-dmg{flex:1;min-width:0;padding:2px 4px;background:var(--bg-toolbar);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:10px;width:40px}.rewards-pane{display:flex;flex-direction:column;gap:8px}.rewards-totals{display:flex;gap:6px}.total-box{flex:1;display:flex;flex-direction:column;align-items:center;padding:8px;background:var(--bg-toolbar);border-radius:5px;border:1px solid var(--border)}.total-label{font-size:10px;color:var(--fg-muted);text-transform:uppercase}.total-value{font-size:16px;font-weight:700;color:var(--accent)}.reward-session-label{flex:1;font-size:11px;font-weight:600}.reward-fields{display:flex;gap:4px;margin-bottom:6px}.reward-field{flex:1}.reward-field label{display:block;font-size:9px;color:var(--fg-muted);margin-bottom:1px}.reward-field input{width:100%;padding:3px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:11px}.reward-field input:focus{border-color:var(--accent);outline:none}.item-row{display:flex;gap:3px;margin-bottom:2px}.item-name{flex:3;padding:2px 4px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:10px}.item-qty{flex:1;padding:2px 4px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border);border-radius:3px;font-size:10px;width:30px}.player-sidebar-left{left:0}.token-group{margin-bottom:4px}.token-group-header{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.token-group-header:hover{background:var(--bg-hover)}.token-group-header.expanded{background:var(--bg-toolbar)}.token-type-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.token-type-dot.type-player{background:#22c55e}.token-type-dot.type-enemy{background:#ef4444}.token-type-dot.type-npc{background:#a855f7}.token-type-dot.type-neutral{background:#eab308}.token-group-label{flex:1;font-size:11px;font-weight:600;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.3px}.token-group-count{font-size:10px;color:var(--fg-muted);background:var(--bg-panel);padding:0 5px;border-radius:8px;line-height:16px;min-width:18px;text-align:center}.token-group-chevron{font-size:8px;color:var(--fg-muted)}.token-group-body{padding:2px 0 2px 16px;display:flex;flex-direction:column;gap:2px}.player-token-item{display:flex;align-items:center;gap:6px;padding:5px 8px;background:transparent;border-radius:5px;cursor:pointer;transition:all .12s;border:1px solid transparent}.player-token-item:hover{background:var(--bg-toolbar)}.player-token-item.active{background:var(--bg-hover);border-color:var(--accent)}.player-token-item-swatch{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px #ffffff26}.player-token-type-badge{font-size:9px;padding:1px 6px;border-radius:4px;text-transform:uppercase;font-weight:600;flex-shrink:0;letter-spacing:.3px}.player-token-type-badge.type-player{background:rgba(34,197,94,.15);color:#22c55e}.player-token-type-badge.type-enemy{background:rgba(239,68,68,.15);color:#ef4444}.player-token-type-badge.type-npc{background:rgba(168,85,247,.15);color:#a855f7}.player-token-type-badge.type-neutral{background:rgba(234,179,8,.15);color:#eab308}.player-token-detail{margin-top:12px;padding:12px;background:var(--bg-toolbar);border-radius:8px;display:flex;flex-direction:column;gap:12px}.player-detail-header{display:flex;align-items:center;gap:12px}.player-detail-close{margin-left:auto;background:none;border:none;color:var(--fg-muted);font-size:16px;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1;transition:all .12s;align-self:flex-start}.player-detail-close:hover{color:var(--fg-primary);background:var(--bg-hover)}.player-detail-image{width:56px;height:56px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg-panel)}.player-detail-image img{width:100%;height:100%;object-fit:contain}.player-detail-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#00000080}.player-detail-info{display:flex;flex-direction:column;gap:4px}.player-detail-name{font-size:13px;font-weight:600}.player-detail-stats{display:flex;flex-direction:column;gap:6px}.player-stat-row{display:flex;align-items:center;gap:8px}.player-stat-label{font-size:10px;font-weight:700;min-width:20px}.player-stat-bar-bg{flex:1;height:8px;background:var(--bg-panel);border-radius:4px;overflow:hidden}.player-stat-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.hp-fill{background:linear-gradient(90deg,#ef4444,#dc2626)}.mp-fill{background:linear-gradient(90deg,#3b82f6,#2563eb)}.bar-fill{background:linear-gradient(90deg,#22c55e,#16a34a)}.player-stat-value{font-size:10px;font-weight:600;min-width:36px;text-align:right;color:var(--fg-secondary)}.player-section-label{font-size:9px;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.7px;font-weight:600;margin-bottom:4px}.player-notes-text{font-size:11px;color:var(--fg-secondary);line-height:1.5;white-space:pre-wrap;padding:8px;background:var(--bg-panel);border-radius:6px}.player-inv-list{display:flex;flex-direction:column;gap:2px}.player-inv-item{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--bg-panel);border-radius:4px;font-size:11px}.player-inv-name{flex:1}.player-inv-qty{color:var(--fg-muted);font-size:10px}.dice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:1000}.dice-modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:16px;width:400px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;gap:12px;box-shadow:0 15px 40px #00000080}.dice-modal-header{display:flex;align-items:center;justify-content:space-between}.dice-modal-header h3{font-size:14px;font-weight:600}.dice-close{background:none;border:none;color:var(--fg-secondary);font-size:20px;cursor:pointer;padding:0 3px;line-height:1}.dice-close:hover{color:var(--fg-primary)}.dice-sets{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}.dice-set-row{display:flex;align-items:center;gap:6px}.dice-plus{color:var(--fg-muted);font-size:14px;font-weight:700;padding:0 3px}.dice-set-controls{display:flex;align-items:center;gap:6px;flex:1;flex-wrap:wrap}.dice-count-mini,.dice-mod-mini{display:flex;align-items:center;gap:2px;background:var(--bg-toolbar);border-radius:4px;padding:2px}.dice-count-mini span,.dice-mod-mini span{min-width:22px;text-align:center;font-size:12px;font-weight:600}.dice-mini-btn{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--bg-panel);border:1px solid var(--border);border-radius:3px;cursor:pointer;font-size:12px;font-weight:700;color:var(--fg-primary);padding:0;line-height:1}.dice-mini-btn:hover{background:var(--bg-hover);border-color:var(--accent)}.dice-set-controls select{width:60px;font-size:11px}.dice-remove-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;cursor:pointer;font-size:14px;color:var(--fg-muted);padding:0;line-height:1;flex-shrink:0}.dice-remove-btn:hover{color:var(--danger);background:rgba(239,68,68,.1)}.dice-add-set{padding:5px 10px;background:transparent;color:var(--accent);border:1px dashed var(--border);border-radius:5px;cursor:pointer;font-size:11px;transition:all .15s}.dice-add-set:hover{border-color:var(--accent);background:rgba(90,141,224,.1)}.dice-formula{padding:6px 10px;background:var(--bg-toolbar);border-radius:5px;text-align:center;font-size:14px;font-weight:700;color:var(--accent)}.dice-roll-btn{padding:7px 20px;background:var(--accent);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:13px;font-weight:600;transition:all .15s;align-self:flex-end}.dice-roll-btn:hover{background:var(--accent-hover)}.dice-results-area{min-height:100px;display:flex;flex-direction:column;align-items:stretch;gap:10px;overflow-y:auto}.dice-result-group{display:flex;flex-direction:column;gap:6px}.dice-set-label{font-size:11px;color:var(--fg-secondary);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dice-set-subtotal{font-weight:600;color:var(--fg-primary)}.dice-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px;color:var(--fg-muted)}.dice-placeholder-icon{font-size:40px;opacity:.4}.dice-grid{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.die{width:58px;height:58px}.die-face{width:100%;height:100%;background:var(--bg-toolbar);border:2px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center}.die-number{font-size:22px;font-weight:800;color:var(--fg-primary)}.d100-result{display:flex;flex-direction:column;align-items:center}.d100-value{font-size:20px;font-weight:800;color:var(--fg-primary)}.die-label{text-align:center;font-size:9px;color:var(--fg-muted);margin-top:2px}.dice-total{font-size:18px;color:var(--fg-primary);padding:10px 16px;background:var(--bg-toolbar);border-radius:6px;text-align:center;margin-top:4px}.dice-total strong{color:var(--accent);font-size:22px}.dice-inline{display:flex;flex-direction:column;gap:10px;height:100%}.player-view{width:100vw;height:100vh;overflow:hidden;background:var(--bg-dark);display:flex;flex-direction:column}.player-waiting{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-dark);z-index:100}.player-waiting-content{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--fg-muted)}.player-waiting-icon{font-size:64px;opacity:.5}.player-waiting-content h2{font-size:20px;color:var(--fg-primary)}.player-waiting-content p{font-size:14px}.dice-inline .dice-roll-btn{width:100%}.dice-inline .dice-results-area{max-height:260px}.dice-inline .dice-results-area .die{width:42px;height:42px}.dice-inline .dice-results-area .die-face{border-radius:8px}.dice-inline .dice-results-area .die-number{font-size:16px}.dice-inline .dice-results-area .d100-value{font-size:15px}.dice-inline .dice-results-area .dice-total{font-size:15px;padding:8px 12px}.dice-inline .dice-results-area .dice-total strong{font-size:18px}.control-btn{transition:all .12s ease}.control-btn:active{transform:scale(.96)}.sidebar-tab{transition:all .12s ease;position:relative}.sidebar-tab.active:after{content:"";position:absolute;bottom:-1px;left:20%;right:20%;height:2px;background:var(--accent);border-radius:1px}.sidebar,.sidebar-right{transition:width .18s ease}.sidebar-content{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.sidebar-content::-webkit-scrollbar{width:4px}.sidebar-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sidebar-content::-webkit-scrollbar-thumb:hover{background:var(--border-light)}.token-container{transition:opacity .12s ease}input:focus-visible,select:focus-visible,button:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.panel-section h3{position:relative;display:inline-block}.stat-editor-section{border:1px solid var(--border);transition:border-color .15s}.stat-editor-section:hover{border-color:var(--border-light)}.token-edit-form{border:1px solid var(--border)}.player-waiting{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 900px){.sidebar.closed,.sidebar-right.closed{display:none}.sidebar{position:absolute;left:0;top:40px;bottom:0;z-index:50;height:auto;border-right:1px solid var(--border)}.sidebar-right{position:absolute;right:0;top:40px;bottom:0;z-index:50;height:auto;border-left:1px solid var(--border)}.toolbar{padding:4px 8px}.toolbar h1{font-size:12px}}
