*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden;font-family:system-ui,-apple-system,sans-serif}.app{display:flex;flex-direction:column;height:100%}.header{display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;background:#1a1a2e;color:#eee}.header h1{margin:0;font-size:1.25rem}.header-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}.lang-btn{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;cursor:pointer}.lang-btn.active{background:#0f3460}.main{display:flex;flex:1;min-height:0}.center-area{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.sidebar{width:280px;min-width:200px;display:flex;flex-direction:column;border-right:1px solid #ccc;background:#f8f9fa;min-height:0}.tree-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:.25rem 0}.tree-visibility-bar{display:flex;gap:.4rem;padding:.35rem .5rem;border-bottom:1px solid #e0e0e0}.vis-btn{flex:1;padding:.25rem .5rem;font-size:.78rem;background:#e8ecf1;color:#333;border:1px solid #ccc;border-radius:4px;cursor:pointer}.vis-btn:hover{background:#d0d6de}.tree-root{margin-bottom:2px}.tree-root-header{display:flex;align-items:center;gap:.4rem;padding:.4rem .5rem;cursor:pointer;font-weight:600;font-size:.9rem;-webkit-user-select:none;user-select:none;background:#eef0f2;border-bottom:1px solid #dee2e6}.tree-root-header:hover{background:#e3e6ea}.tree-root-label{flex:1}.tree-folder-header{display:flex;align-items:center;gap:.3rem;padding:.2rem 0;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.85rem;color:#495057;border-radius:4px}.tree-folder-header:hover{background:#e9ecef}.tree-folder-icon{font-size:.9rem;flex-shrink:0}.tree-folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-expand-arrow{width:14px;flex-shrink:0;text-align:center;font-size:.75rem;color:#6c757d;line-height:1}.tree-leaf{position:relative;display:flex;align-items:center;gap:.3rem;padding:.2rem .5rem .2rem 0;cursor:pointer;border-radius:4px;font-size:.85rem;border-left:3px solid transparent;transition:background .1s,border-color .15s}.tree-leaf:hover{background:#e9ecef}.tree-leaf.selected{background:#d0e2ff;border-left-color:#0f3460;font-weight:600}.tree-leaf.deleted{opacity:.55;text-decoration:line-through}.tree-leaf .color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.tree-leaf .color-dot-clickable{cursor:pointer;border:1.5px solid transparent;transition:border-color .15s,transform .1s}.tree-leaf .color-dot-clickable:hover{border-color:#495057;transform:scale(1.3)}.color-picker-popover{position:absolute;z-index:100;display:flex;flex-wrap:wrap;gap:4px;padding:6px;background:#fff;border:1px solid #dee2e6;border-radius:6px;box-shadow:0 4px 12px #00000026;width:130px;margin-top:2px;margin-left:20px}.color-picker-swatch{width:18px;height:18px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color .1s,transform .1s}.color-picker-swatch:hover{transform:scale(1.2);border-color:#495057}.color-picker-swatch.active{border-color:#212529;box-shadow:0 0 0 1px #fff,0 0 0 2.5px #212529}.tree-leaf-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-leaf-loading{color:#6c757d;font-size:.8rem}.tree-leaf-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.tree-leaf:hover .tree-leaf-actions{opacity:1}.tree-leaf-actions button{padding:.1rem .3rem;font-size:.7rem;border:none;background:#dee2e6;border-radius:3px;cursor:pointer;line-height:1}.tree-leaf-actions button:hover{background:#ced4da}.tree-empty{padding:.4rem 1.5rem;font-size:.8rem;color:#6c757d;font-style:italic}.sync-btn{padding:.4rem .75rem;background:#0f3460;color:#fff;border:none;border-radius:4px;cursor:pointer}.sync-btn:hover{background:#16213e}.sync-btn:disabled{opacity:.6;cursor:not-allowed}.map-container{flex:1;position:relative;min-height:0;min-width:0}.bottom-chart-panel{flex-shrink:0;height:160px;border-top:1px solid #ccc;background:#f8f9fa;display:flex;flex-direction:column;min-height:0}.bottom-chart-inner{position:relative;flex:1;min-height:0;padding:.25rem 2rem .25rem .5rem}.bottom-chart-close{position:absolute;top:4px;right:8px;z-index:10;width:24px;height:24px;border:none;background:#dee2e6;border-radius:4px;cursor:pointer;font-size:1.2rem;line-height:1}.bottom-chart-close:hover{background:#ced4da}.chart-horizontal{height:100%;min-height:120px}.chart-placeholder{margin:0;padding:.5rem;color:#6c757d;font-size:.9rem}.map-layer-control{position:absolute;top:10px;right:10px;z-index:1000;background:#fff;padding:.5rem;border-radius:4px;box-shadow:0 1px 4px #0003}.map-layer-control label{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem;font-size:.85rem}.panels{width:280px;min-width:220px;display:flex;flex-direction:column;border-left:1px solid #ccc;background:#f8f9fa;flex-shrink:0}.panel-tabs{display:flex;border-bottom:1px solid #dee2e6}.panel-tabs button{flex:1;padding:.5rem;border:none;background:transparent;cursor:pointer}.panel-tabs button.active{background:#e9ecef;font-weight:600}.panel-content{flex:1;overflow:auto;padding:.75rem}.chart-container{height:200px;width:100%}.stats-grid{display:grid;gap:.5rem}.stats-row{display:flex;justify-content:space-between}.stats-label{color:#495057}.dropzone{border:2px dashed #adb5bd;border-radius:6px;padding:.6rem .5rem;text-align:center;color:#6c757d;margin:.35rem .5rem;cursor:pointer;font-size:.8rem}.dropzone.dragover{border-color:#0f3460;background:#e7f1ff}.settings-btn{padding:.25rem .5rem;background:transparent;border:1px solid #eee;color:#eee;border-radius:4px;cursor:pointer}.settings-btn:hover{background:#16213e}.view-menu{position:relative}.view-menu-trigger{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;cursor:pointer}.view-menu-trigger:hover{background:#0f3460}.view-menu-dropdown{position:absolute;top:100%;left:0;margin-top:4px;min-width:300px;background:#fff;border:1px solid #dee2e6;border-radius:6px;box-shadow:0 4px 12px #00000026;padding:.5rem 0;z-index:1000}.view-menu-section{display:flex;flex-direction:column}.view-menu-separator{height:1px;background:#dee2e6;margin:.35rem 0}.view-menu-label{padding:.25rem .75rem;font-size:.75rem;font-weight:600;color:#6c757d;text-transform:uppercase}.view-menu-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border:none;background:transparent;font-size:.9rem;color:#212529;cursor:pointer;text-align:left;width:100%}.view-menu-item:hover{background:#f1f3f5}.view-menu-radio,.view-menu-check{cursor:pointer;margin:0}.view-menu-radio input,.view-menu-check input{margin:0}.overlay-group{display:flex;flex-direction:column}.overlay-group-toggle{display:flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border:none;background:transparent;font-size:.85rem;font-weight:600;color:#495057;cursor:pointer;text-align:left;width:100%}.overlay-group-toggle:hover{background:#f1f3f5}.overlay-group-arrow{font-size:.7rem;width:.8em;flex-shrink:0}.overlay-group-children{display:flex;flex-direction:column;padding-left:12px}.overlay-leaf{padding-left:1.5rem}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid #dee2e6;background:#f8f9fa;flex-shrink:0}.panel-title{font-size:.9rem;font-weight:600}.panel-close{width:28px;height:28px;padding:0;border:none;background:#dee2e6;border-radius:4px;font-size:1.25rem;line-height:1;cursor:pointer;color:#495057}.panel-close:hover{background:#ced4da;color:#212529}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal{background:#fff;padding:1.5rem;border-radius:8px;min-width:320px}.modal h3{margin-top:0}.settings-ignore-section{margin-top:1rem;padding:.6rem .75rem;background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;display:flex;align-items:center;gap:.75rem}.settings-ignore-info{flex:1;margin:0;font-size:.85rem;color:#555}.modal-actions{margin-top:1rem;display:flex;gap:.5rem;justify-content:flex-end}.modal-actions button{padding:.4rem .75rem;border-radius:4px;cursor:pointer}.modal-actions button.primary{background:#0f3460;color:#fff;border:none}.modal-actions button.secondary{background:#dee2e6;border:none}
