:root{--bg-app: #fafafa;--bg-panel: #fff;--bg-panel-soft: #f5f5f5;--bg-toolbar: #fff;--border: #e0e0e0;--border-soft: #f0f0f0;--border-strong: #d5d5d5;--text-primary: #333;--text-muted: #999;--text-soft: #666;--primary: #1976d2;--flash-recalc: rgba(76, 175, 80, .55);--flash-undo: rgba(33, 150, 243, .55);--select-strong: rgba(25, 118, 210, .35);--select-soft: rgba(25, 118, 210, .22);--cell-bg-manual: #fdf8e8;--cell-bg-locked: #fce4ec;--cell-bg-formula: #ffffff;--cell-bg-sum: #fafafa;--cell-bg-empty: #f5f5f5;--cell-bg-loading: #fafbfc;--cell-text-manual: #666;--cell-text-locked: #880e4f;--cell-text-formula: #1565c0;--cell-text-sum: #2e7d32;--cell-text-empty: #bbb;--cell-text-negative: #d32f2f;--cell-bg-sumcol: #eef6ff;--cell-text-sumcol: #0d47a1}[data-theme=dark]{--bg-app: #1a1a1a;--bg-panel: #242424;--bg-panel-soft: #2d2d2d;--bg-toolbar: #242424;--border: #3a3a3a;--border-soft: #2f2f2f;--border-strong: #4a4a4a;--text-primary: #e0e0e0;--text-muted: #888;--text-soft: #b0b0b0;--primary: #64b5f6;--flash-recalc: rgba(76, 175, 80, .45);--flash-undo: rgba(100, 181, 246, .45);--select-strong: rgba(100, 181, 246, .4);--select-soft: rgba(100, 181, 246, .25);--cell-bg-manual: #3a3520;--cell-bg-locked: #3a1f29;--cell-bg-formula: #1f1f1f;--cell-bg-sum: #232323;--cell-bg-empty: #1f1f1f;--cell-bg-loading: #1f1f1f;--cell-text-manual: #d4c98a;--cell-text-locked: #f48fb1;--cell-text-formula: #64b5f6;--cell-text-sum: #81c784;--cell-text-empty: #555;--cell-text-negative: #ef5350;--cell-bg-sumcol: #1c2738;--cell-text-sumcol: #90caf9}html,body,#root{background:var(--bg-app);color:var(--text-primary)}.app-root{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-toolbar{display:flex;align-items:center;gap:8px;padding:4px 12px;border-bottom:1px solid var(--border);background:var(--bg-toolbar);min-height:40px}.app-toolbar h1{font-size:16px;font-weight:600;margin:0;color:var(--text-primary)}.app-body{display:flex;flex:1;overflow:hidden}.panel-left{height:100%;min-width:180px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--bg-panel)}.panel-center{flex:1;overflow:auto;padding:16px;background:var(--bg-app)}.splitter{width:5px;cursor:col-resize;background:var(--border);flex-shrink:0;transition:background .15s}.splitter:hover,.splitter:active{background:var(--primary)}.ag-theme-alpine .ag-status-bar{min-height:28px;display:flex!important}.ag-cell-data-changed,.ag-cell-data-changed-animation{background-color:var(--flash-recalc)!important;transition:background-color .6s ease-out}.ag-cell-data-changed-animation{background-color:transparent!important}.undo-flashing .ag-cell-data-changed,.undo-flashing .ag-cell-data-changed-animation{background-color:var(--flash-undo)!important;transition:none!important}.undo-flashing .ag-cell-data-changed-animation{background-color:transparent!important}.panel-left-toolbar{display:flex;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid var(--border-soft)}.panel-left-toolbar input{flex:1;border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:12px;outline:none;background:var(--bg-panel);color:var(--text-primary)}.panel-left-toolbar input:focus{border-color:var(--primary)}.panel-left-tree{flex:1;overflow:auto;padding:4px 0;min-height:0}.panel-left-tree>ul{height:100%}.tree-item-label{display:flex;align-items:center;gap:6px;font-size:13px;padding:1px 0;width:100%}.tree-item-label .actions{margin-left:auto;display:flex;gap:2px;visibility:hidden}.tree-item-label:hover .actions{visibility:visible}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);gap:8px}.ag-center-header .ag-header-cell-label,.ag-center-header .ag-header-group-cell-label{justify-content:center}.ag-cell:hover .cell-menu-btn{opacity:1!important}.cell-menu-btn:hover{color:var(--primary)!important}.ag-theme-alpine .ag-cell,.ag-theme-alpine .ag-header-cell,.ag-theme-alpine .ag-header-group-cell{border-right:1px solid var(--border)!important}.ag-theme-alpine .ag-cell{border-bottom:1px solid var(--border-soft)!important}.ag-cell-focus:not(.ag-cell-inline-editing),.ag-cell-range-single-cell{box-shadow:inset 0 0 0 2px var(--primary)!important;background:var(--select-strong)!important}.ag-cell-range-selected:not(.ag-cell-range-single-cell):not(.ag-cell-focus){background:var(--select-soft)!important}
