*,:before,:after{box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Georgia,system-ui,serif}body{background:#faf8f5;margin:0}#root{min-height:100vh}.login-container{background:linear-gradient(135deg,#f5f0e8 0%,#e8dcc8 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{text-align:center;background:#fff;border-radius:12px;width:100%;max-width:380px;padding:48px 40px;box-shadow:0 4px 24px #0000001a}.login-card h1{color:#2c1810;letter-spacing:0;margin:0 0 8px;font-family:Georgia,serif;font-size:28px}.login-subtitle{color:#8b7355;margin-bottom:32px;font-size:14px;font-style:italic}.login-card form{flex-direction:column;gap:12px;display:flex}.login-card input{border:1px solid #d4c5a9;border-radius:8px;outline:none;padding:12px 16px;font-size:16px;transition:border-color .2s}.login-card input:focus{border-color:#8b7355}.login-card button{color:#fff;cursor:pointer;background:#8b7355;border:none;border-radius:8px;padding:12px;font-size:16px;transition:background .2s}.login-card button:hover{background:#6b5540}.error{color:#c53030;margin:4px 0 0;font-size:14px}.tree-page{background:#faf8f5;flex-direction:column;height:100vh;display:flex}.tree-header{color:#f5f0e8;background:#2c1810;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.header-left h1{color:#f5f0e8;letter-spacing:0;margin:0;font-family:Georgia,serif;font-size:20px}.header-hint{color:#d4c5a9;font-size:12px}.logout-btn{color:#d4c5a9;cursor:pointer;background:0 0;border:1px solid #d4c5a9;border-radius:6px;padding:6px 16px;font-size:13px;transition:all .2s}.logout-btn:hover{color:#2c1810;background:#d4c5a9}.tree-container{flex:1;overflow:hidden}.tree-link{stroke:#8b7355!important;stroke-width:1.5px!important;fill:none!important}.detail-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.detail-card{background:#fff;border-radius:12px;min-width:300px;max-width:420px;padding:32px;position:relative;box-shadow:0 8px 32px #0003}.detail-close{cursor:pointer;color:#8b7355;background:0 0;border:none;padding:4px 8px;font-size:24px;position:absolute;top:8px;right:12px}.detail-card h2{color:#2c1810;letter-spacing:0;margin:0 0 16px;font-family:Georgia,serif;font-size:22px}.detail-attrs{margin:0}.detail-row{border-bottom:1px solid #f0ebe3;gap:12px;padding:6px 0;display:flex}.detail-row:last-child{border-bottom:none}.detail-row dt{color:#8b7355;text-transform:capitalize;min-width:70px;font-size:13px;font-weight:600}.detail-row dd{color:#2c1810;margin:0;font-size:14px}.header-right{align-items:center;gap:8px;display:flex}.header-btn{cursor:pointer;border:1px solid;border-radius:6px;padding:6px 14px;font-size:13px;transition:all .2s}.edit-btn{color:#d4c5a9;background:0 0;border-color:#d4c5a9}.edit-btn:hover{color:#2c1810;background:#d4c5a9}.export-btn,.import-btn{color:#a9d4a9;background:0 0;border-color:#a9d4a9}.export-btn:hover,.import-btn:hover{color:#1a2e1a;background:#a9d4a9}.exit-edit-btn{color:#d4a9a9;background:0 0;border-color:#d4a9a9}.exit-edit-btn:hover{color:#2e1a1a;background:#d4a9a9}.tree-header.edit-mode{background:#1a2e1a}.edit-badge{color:#fff;vertical-align:middle;letter-spacing:.5px;background:#5c8a2c;border-radius:10px;margin-left:12px;padding:2px 10px;font-family:system-ui,sans-serif;font-size:11px;font-weight:500;display:inline-block}.tree-container.edit-mode{border-top:3px solid #5c8a2c}.edit-form{width:90vw;max-width:460px}.edit-label{color:#8b7355;text-transform:uppercase;letter-spacing:.5px;margin:16px 0 6px;font-size:12px;font-weight:600;display:block}.edit-label:first-of-type{margin-top:0}.edit-input{box-sizing:border-box;border:1px solid #d4c5a9;border-radius:6px;outline:none;width:100%;padding:10px 12px;font-family:Georgia,serif;font-size:14px;transition:border-color .2s}.edit-input:focus{border-color:#5c8a2c}.edit-attrs{flex-direction:column;gap:6px;display:flex}.edit-attr-row{align-items:center;gap:6px;display:flex}.edit-attr-key{flex-shrink:0;width:35%!important}.edit-attr-val{flex:1}.edit-attr-remove{color:#c53030;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:4px 8px;font-size:18px}.edit-attr-remove:hover{background:#fee}.edit-add-attr{color:#8b7355;cursor:pointer;background:0 0;border:1px dashed #d4c5a9;border-radius:6px;margin-top:4px;padding:6px 12px;font-size:13px;transition:all .2s}.edit-add-attr:hover{background:#faf8f5;border-color:#8b7355}.edit-actions{border-top:1px solid #f0ebe3;gap:8px;margin-top:20px;padding-top:16px;display:flex}.edit-save-btn{color:#fff;cursor:pointer;background:#5c8a2c;border:none;border-radius:6px;padding:10px 20px;font-size:14px;transition:background .2s}.edit-save-btn:hover{background:#4a7023}.edit-add-child-btn{color:#5c8a2c;cursor:pointer;background:0 0;border:1px solid #5c8a2c;border-radius:6px;padding:10px 16px;font-size:13px;transition:all .2s}.edit-add-child-btn:hover{color:#fff;background:#5c8a2c}.edit-delete-btn{color:#c53030;cursor:pointer;background:0 0;border:1px solid #c53030;border-radius:6px;margin-left:auto;padding:10px 16px;font-size:13px;transition:all .2s}.edit-delete-btn:hover{color:#fff;background:#c53030}.saving-badge{background:#8b6914;animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.history-btn{color:#d4d4a9;background:0 0;border-color:#d4d4a9}.history-btn:hover{color:#1a2e1a;background:#d4d4a9}.history-panel{flex-direction:column;width:90vw;max-width:520px;max-height:80vh;display:flex}.history-list{flex-direction:column;gap:4px;max-height:60vh;display:flex;overflow-y:auto}.history-entry{background:#faf8f5;border:1px solid #f0ebe3;border-radius:6px;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.history-entry:hover{background:#f0ebe3}.history-info{flex:1;min-width:0}.history-label{color:#2c1810;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.history-time{color:#8b7355;margin-top:2px;font-size:11px}.history-restore-btn{color:#5c8a2c;cursor:pointer;background:0 0;border:1px solid #5c8a2c;border-radius:4px;flex-shrink:0;margin-left:12px;padding:5px 12px;font-size:12px;transition:all .2s}.history-restore-btn:hover{color:#fff;background:#5c8a2c}
