:root{--bg: #1b1f27;--bg2: #232833;--bg3: #2b313d;--line: #39404e;--fg: #dfe4ec;--fg-dim: #9aa4b5;--accent: #3b82f6;--accent-dim: #1d4ed8;--danger: #ef4444;--ok: #22c55e;--radius: 5px;--h-toolbar: 74px;--h-status: 26px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:13px/1.45 Segoe UI,Roboto,system-ui,sans-serif;background:var(--bg);color:var(--fg);overflow:hidden;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}kbd{background:var(--bg3);border:1px solid var(--line);border-radius:3px;padding:0 4px;font-size:11px;font-family:inherit}.ep-app{display:flex;flex-direction:column;height:100%}.ep-main{flex:1;display:flex;min-height:0}.ep-left,.ep-right{background:var(--bg2);display:flex;flex-direction:column;min-width:0;overflow:hidden}.ep-left{border-right:1px solid var(--line)}.ep-right{border-left:1px solid var(--line)}.ep-center{flex:1;min-width:0;display:flex;flex-direction:column}.ep-splitter{width:4px;cursor:col-resize;background:transparent;flex:0 0 4px}.ep-splitter:hover{background:var(--accent)}.ep-right-head{padding:7px 10px;font-weight:600;font-size:12px;letter-spacing:.3px;text-transform:uppercase;color:var(--fg-dim);border-bottom:1px solid var(--line);background:var(--bg3)}.ep-toolbar{background:var(--bg2);border-bottom:1px solid var(--line);-webkit-user-select:none;user-select:none}.ep-menubar{display:flex;align-items:center;gap:2px;padding:3px 8px;border-bottom:1px solid var(--line)}.ep-brand{display:flex;align-items:center;gap:6px;font-weight:700;letter-spacing:.3px;color:#fbbf24;margin-right:12px;padding:2px 4px}.ep-menu{position:relative}.ep-menu-btn{background:none;border:0;padding:5px 10px;border-radius:var(--radius);cursor:pointer}.ep-menu-btn:hover,.ep-menu-btn.is-open{background:var(--bg3)}.ep-menu-list{position:absolute;top:100%;left:0;z-index:60;min-width:250px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 30px #00000080;padding:4px}.ep-menu-list button{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;text-align:left;padding:6px 8px;border-radius:4px;cursor:pointer}.ep-menu-list button:hover:not(:disabled){background:var(--accent-dim)}.ep-menu-list button:disabled{opacity:.4;cursor:default}.ep-menu-list .ep-menu-label{flex:1}.ep-menu-list kbd{margin-left:auto;opacity:.7}.ep-check{width:12px;color:var(--ok)}.ep-menu-sep{height:1px;background:var(--line);margin:4px 2px}.ep-menubar-right{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--fg-dim)}.ep-file-name b{color:#fbbf24}.ep-badge{background:var(--bg3);border:1px solid var(--line);border-radius:10px;padding:1px 9px;font-size:11px}.ep-tools{display:flex;align-items:center;gap:4px;padding:5px 8px;flex-wrap:wrap}.ep-tool-group{display:flex;align-items:center;gap:2px;padding-right:8px;margin-right:4px;border-right:1px solid var(--line)}.ep-tool-group:last-child{border-right:0}.ep-tool{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;background:none;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;color:var(--fg)}.ep-tool:hover{background:var(--bg3)}.ep-tool.is-active{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ep-pot{display:flex;align-items:center;gap:6px;font-size:12px}.ep-pot span{color:var(--fg-dim)}.ep-pot select{background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:4px 6px}.ep-zoom{min-width:46px;text-align:center;font-size:12px;color:var(--fg-dim)}.ep-toggles{flex-wrap:wrap}.ep-chip{background:var(--bg3);border:1px solid var(--line);color:var(--fg-dim);border-radius:12px;padding:2px 10px;font-size:11px;cursor:pointer}.ep-chip.is-on{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ep-canvas-wrap{position:relative;flex:1;min-height:0;overflow:hidden}.ep-canvas{width:100%;height:100%;display:block;touch-action:none}.ep-node.is-selected{filter:drop-shadow(0 0 .6px #2563eb) drop-shadow(0 0 1.5px #2563eb)}.ep-node.is-hovered{opacity:.85}.ep-coords{position:absolute;right:8px;bottom:8px;background:#0000008c;color:#e5e7eb;padding:3px 8px;border-radius:4px;font-size:11px;font-variant-numeric:tabular-nums;pointer-events:none}.ep-pagebar{display:flex;gap:2px;padding:4px 6px;background:var(--bg2);border-top:1px solid var(--line);overflow-x:auto}.ep-pagebar button{background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;padding:4px 12px;cursor:pointer;white-space:nowrap;font-size:12px;color:var(--fg-dim)}.ep-pagebar button.is-active{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ep-pagebar button b{color:#fbbf24}.ep-pagebar .ep-addpage{padding:4px 10px;font-weight:700}.ep-tree{display:flex;flex-direction:column;border-bottom:1px solid var(--line);max-height:42%;min-height:150px}.ep-tabs{display:flex;border-bottom:1px solid var(--line)}.ep-tabs button{flex:1;background:var(--bg3);border:0;border-right:1px solid var(--line);padding:7px 6px;cursor:pointer;color:var(--fg-dim);font-size:12px}.ep-tabs button.is-active{background:var(--bg2);color:var(--fg);font-weight:600}.ep-tabs em{font-style:normal;background:var(--bg);border-radius:8px;padding:0 6px;margin-left:4px;font-size:11px}.ep-tree-body{flex:1;overflow:auto}.ep-page-item{display:flex;align-items:center;gap:8px;padding:5px 10px;cursor:pointer;border-left:3px solid transparent;font-size:12px}.ep-page-item:hover{background:var(--bg3)}.ep-page-item.is-active{background:var(--bg3);border-left-color:var(--accent)}.ep-page-no{min-width:22px;text-align:center;background:var(--bg);border-radius:3px;color:#fbbf24;font-weight:600}.ep-page-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ep-page-meta{color:var(--fg-dim);font-size:11px}.ep-tree-actions{display:flex;gap:4px;padding:6px;border-top:1px solid var(--line)}.ep-tree-actions button{flex:1;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:4px;cursor:pointer;font-size:12px}.ep-tree-actions button:hover{background:var(--accent-dim)}.ep-tree-actions .danger:hover{background:var(--danger)}.ep-dev-item{padding:5px 10px;border-bottom:1px solid var(--bg3)}.ep-dev-head{display:flex;gap:8px;align-items:baseline}.ep-dev-head b{color:#fbbf24}.ep-dev-head span{color:var(--fg-dim);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ep-dev-refs{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px}.ep-dev-refs button{background:var(--bg3);border:1px solid var(--line);border-radius:3px;font-size:11px;padding:0 6px;cursor:pointer;color:var(--fg-dim)}.ep-dev-refs button:hover{background:var(--accent-dim);color:#fff}.ep-palette{flex:1;display:flex;flex-direction:column;min-height:0}.ep-palette-search{position:relative;padding:6px;border-bottom:1px solid var(--line)}.ep-palette-search input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:5px 24px 5px 8px}.ep-palette-search input:focus{outline:1px solid var(--accent)}.ep-x{position:absolute;right:12px;top:11px;background:none;border:0;color:var(--fg-dim);cursor:pointer}.ep-palette-body{flex:1;overflow:auto}.ep-cat-head{display:flex;align-items:center;gap:6px;width:100%;background:var(--bg3);border:0;border-bottom:1px solid var(--line);padding:5px 8px;cursor:pointer;font-size:12px;font-weight:600;color:var(--fg);position:sticky;top:0;z-index:2}.ep-cat-head.static{cursor:default}.ep-cat-head em{margin-left:auto;font-style:normal;color:var(--fg-dim);font-weight:400}.ep-caret{display:inline-block;transition:transform .12s}.ep-caret.open{transform:rotate(90deg)}.ep-sym-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:4px;padding:6px}.ep-sym{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:5px 3px 4px;cursor:pointer;color:#e8edf6}.ep-sym:hover{border-color:var(--accent);background:#303847}.ep-sym.is-active{border-color:var(--accent);background:var(--accent-dim)}.ep-sym span{font-size:10px;line-height:1.15;text-align:center;color:var(--fg-dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ep-sym.is-active span{color:#fff}.ep-thumb{color:#e8edf6}.ep-palette-hint{border-top:1px solid var(--line);padding:6px 8px;font-size:11px;color:var(--fg-dim);background:var(--bg3)}.ep-palette-hint b{display:block;color:var(--fg);margin-bottom:2px}.ep-props{flex:1;overflow:auto;padding-bottom:20px}.ep-section{border-bottom:1px solid var(--line);padding:8px 10px 10px}.ep-section h4{margin:0 0 7px;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#fbbf24}.ep-row{display:grid;grid-template-columns:40% 1fr;align-items:center;gap:6px;margin-bottom:5px;font-size:12px}.ep-row>span{color:var(--fg-dim)}.ep-row>div{min-width:0}.ep-row input[type=text],.ep-row input:not([type]),.ep-row input[type=number],.ep-row select,.ep-row textarea,.ep-row input[type=color]{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:4px 6px}.ep-row input:focus,.ep-row select:focus,.ep-row textarea:focus{outline:1px solid var(--accent)}.ep-row input[type=checkbox]{width:auto}.ep-row input[type=color]{height:26px;padding:1px}.ep-hint{font-size:11px;color:var(--fg-dim)}.ep-hint.pad{padding:10px}.ep-status{display:flex;align-items:center;gap:16px;height:var(--h-status);padding:0 10px;background:var(--bg3);border-top:1px solid var(--line);font-size:11px;color:var(--fg-dim);white-space:nowrap;overflow:hidden}.ep-status b{color:var(--fg)}.ep-status-msg{color:var(--ok);min-width:160px}.ep-status-right{margin-left:auto;color:#93c5fd}.ep-modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.ep-modal{background:var(--bg2);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 60px #0009;width:min(720px,94vw);max-height:88vh;display:flex;flex-direction:column}.ep-modal.wide{width:min(1180px,96vw)}.ep-modal-head{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}.ep-modal-head h3{margin:0;font-size:14px}.ep-modal-head button{margin-left:auto;background:none;border:0;font-size:22px;line-height:1;color:var(--fg-dim);cursor:pointer}.ep-modal-head button:hover{color:var(--danger)}.ep-modal-body{padding:12px 14px;overflow:auto}.ep-report{display:flex;gap:12px;min-height:420px}.ep-report-tabs{display:flex;flex-direction:column;gap:2px;min-width:200px}.ep-report-tabs button{text-align:left;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:6px 9px;cursor:pointer;font-size:12px;color:var(--fg-dim)}.ep-report-tabs button.is-active{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ep-report-tabs em{font-style:normal;float:right;opacity:.7}.ep-report-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.ep-report-actions{display:flex;gap:6px;align-items:center}.ep-report-actions button{background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:4px 12px;cursor:pointer}.ep-report-actions button:hover{background:var(--accent-dim)}.ep-table-wrap{overflow:auto;max-height:62vh;border:1px solid var(--line);border-radius:var(--radius)}.ep-table{border-collapse:collapse;width:100%;font-size:12px}.ep-table th,.ep-table td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:4px 7px;text-align:left;vertical-align:top}.ep-table th{background:var(--bg3);position:sticky;top:0;z-index:1;font-weight:600;white-space:nowrap}.ep-table tbody tr:hover{background:#3b82f614}.ep-empty{text-align:center;color:var(--fg-dim);padding:20px}.ep-parts{display:flex;flex-direction:column;gap:8px}.ep-parts-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:5px}.ep-parts-form input,.ep-parts-search{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:5px 7px}.ep-parts-form button{background:var(--accent-dim);border:1px solid var(--accent);border-radius:var(--radius);padding:5px 10px;cursor:pointer}.ep-mini{background:var(--bg3);border:1px solid var(--line);border-radius:3px;font-size:11px;padding:1px 7px;margin-right:3px;cursor:pointer}.ep-mini.danger:hover{background:var(--danger)}.ep-about h2{margin:0 0 6px}.ep-about ul{margin:8px 0;padding-left:20px}.ep-about li{margin:3px 0}.ep-about code{background:var(--bg3);padding:1px 5px;border-radius:3px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#454d5c;border-radius:5px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#5a6478}.ep-panel-btns{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:6px}.ep-panel-btns button{background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px;cursor:pointer;font-size:11px;text-align:left;color:var(--fg)}.ep-panel-btns button:hover{border-color:var(--accent);background:#303847}.ep-panel-btns button.primary{grid-column:1 / -1;background:var(--accent-dim);border-color:var(--accent);color:#fff;font-weight:600;text-align:center}.ep-panel-btns button.primary:hover{background:var(--accent)}.ep-panel-row{display:grid;grid-template-columns:60px 1fr;align-items:center;gap:6px;padding:3px 8px 5px;font-size:12px}.ep-panel-row span{color:var(--fg-dim)}.ep-panel-row select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:4px 6px}.ep-rail-list{padding:4px 6px 8px}.ep-rail{display:block;width:100%;text-align:left;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);padding:5px 7px;margin-bottom:4px;cursor:pointer;color:var(--fg)}.ep-rail:hover{border-color:var(--accent)}.ep-rail-head{display:flex;align-items:baseline;gap:6px;font-size:11px;margin-bottom:4px}.ep-rail-head b{color:#fbbf24}.ep-rail-head span{color:var(--fg-dim)}.ep-rail-head em{margin-left:auto;font-style:normal;color:var(--fg-dim)}.ep-bar{height:5px;background:var(--bg);border-radius:3px;overflow:hidden}.ep-bar i{display:block;height:100%;border-radius:3px}.ep-pagebar{align-items:center;overflow:hidden}.ep-pagetabs{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin}.ep-pagetabs::-webkit-scrollbar{height:6px}.ep-pagebar .ep-nav{flex:0 0 auto;padding:4px 9px;border-radius:var(--radius);color:var(--fg);line-height:1}.ep-pagebar .ep-nav:hover:not(:disabled){background:var(--accent-dim);border-color:var(--accent)}.ep-pagebar .ep-nav:disabled{opacity:.3;cursor:default}.ep-pagecount{flex:0 0 auto;font-size:11px;color:var(--fg-dim);padding:0 6px;font-variant-numeric:tabular-nums}.ep-quick{display:flex;align-items:center;gap:2px;padding:3px 8px;background:var(--bg3);border-bottom:1px solid var(--line);overflow-x:auto}.ep-quick-label{font-size:11px;font-weight:600;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.3px;margin-right:6px;white-space:nowrap}.ep-quick-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:26px;flex:0 0 auto;background:var(--bg2);border:1px solid var(--line);border-radius:4px;cursor:pointer;color:var(--fg);padding:0}.ep-quick-btn:hover{border-color:var(--accent);background:#303847}.ep-quick-btn.is-active{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ep-quick-sep{width:1px;height:18px;background:var(--line);margin:0 5px;flex:0 0 auto}.ep-quick-hint{margin-left:auto;font-size:11px;color:var(--fg-dim);white-space:nowrap;padding-left:12px}.ep-palette-tabs{flex:0 0 auto}.ep-macro-list{padding:6px;display:flex;flex-direction:column;gap:5px}.ep-macro{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg3);overflow:hidden}.ep-macro.is-active{border-color:var(--accent);background:var(--accent-dim)}.ep-macro:hover{border-color:var(--accent)}.ep-macro-main{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;background:none;border:0;padding:7px 6px 5px;cursor:pointer;color:#e8edf6}.ep-macro-main .ep-thumb{background:#ffffff0a;border-radius:3px;padding:2px}.ep-macro-name{font-size:12px;font-weight:600;text-align:center;line-height:1.2;word-break:break-word}.ep-macro-meta{font-size:10px;color:var(--fg-dim)}.ep-macro.is-active .ep-macro-meta{color:#cfe0ff}.ep-macro-actions{display:flex;gap:3px;padding:0 6px 6px;justify-content:center}.ep-login{height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(1100px 620px at 50% -10%,#2b3444 0%,transparent 70%),var(--bg)}.ep-login-wait{color:var(--fg-dim)}.ep-login-box{width:340px;padding:26px 26px 20px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 50px #00000073}.ep-login-brand{display:flex;align-items:center;gap:9px;font-size:21px;font-weight:600;color:var(--accent)}.ep-login-sub{margin:4px 0 18px;font-size:12px;color:var(--fg-dim)}.ep-login-tabs{display:flex;gap:4px;margin-bottom:16px;background:var(--bg3);border-radius:var(--radius);padding:3px}.ep-login-tabs button{flex:1;padding:6px 0;background:none;border:0;border-radius:4px;color:var(--fg-dim);cursor:pointer}.ep-login-tabs button.is-active{background:var(--bg);color:var(--fg)}.ep-login-field{display:block;margin-bottom:12px}.ep-login-field span{display:block;margin-bottom:4px;font-size:11px;color:var(--fg-dim)}.ep-login-field input{width:100%;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);outline:none}.ep-login-field input:focus{border-color:var(--accent)}.ep-verify-bar{display:flex;align-items:center;gap:10px;padding:6px 12px;background:#eab3081f;border-bottom:1px solid rgba(234,179,8,.35);font-size:12px;color:var(--text)}.ep-verify-dot{width:7px;height:7px;border-radius:50%;background:#eab308;flex:none}.ep-verify-text{flex:1;min-width:0}.ep-verify-bar button{flex:none;padding:3px 10px;border-radius:var(--radius);border:1px solid rgba(234,179,8,.5);background:transparent;color:var(--text);cursor:pointer;font-size:12px}.ep-verify-bar button:hover:not(:disabled){background:#eab30833}.ep-verify-bar button:disabled{opacity:.5;cursor:default}.ep-verify-close{border-color:transparent!important;font-size:15px!important;line-height:1;padding:2px 7px!important}.ep-login-hint{margin:-4px 0 12px;color:var(--muted);font-size:11px}.ep-login-msg{margin-bottom:12px;padding:8px 10px;border-radius:var(--radius);font-size:12px}.ep-login-msg.is-error{background:#ef44441f;border:1px solid var(--danger);color:#fecaca}.ep-login-msg.is-ok{background:#22c55e1f;border:1px solid var(--ok);color:#bbf7d0}.ep-login-submit{width:100%;padding:9px 0;background:var(--accent);border:0;border-radius:var(--radius);color:#fff;font-weight:600;cursor:pointer}.ep-login-submit:hover:not(:disabled){background:var(--accent-dim)}.ep-login-submit:disabled{opacity:.6;cursor:default}.ep-login-link{display:block;width:100%;margin-top:10px;padding:4px 0;background:none;border:0;color:var(--fg-dim);font-size:12px;cursor:pointer}.ep-login-link:hover:not(:disabled){color:var(--accent)}.ep-login-link:disabled{opacity:.5;cursor:default}.ep-user{cursor:pointer;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ep-user:hover{border-color:var(--accent);color:var(--accent)}.ep-table tr.is-current td{background:#3b82f61a}.ep-badge-inline{margin-left:7px;padding:0 6px;border-radius:8px;background:var(--accent);color:#fff;font-size:10px}.ep-kv{display:grid;grid-template-columns:110px 1fr;gap:7px 12px;margin:0;padding:12px 10px}.ep-kv dt{color:var(--fg-dim);font-size:12px}.ep-kv dd{margin:0}.ep-report-actions .danger{border-color:var(--danger);color:#fca5a5}.ep-report-actions .danger:hover{background:var(--danger);color:#fff}.ep-offline{cursor:pointer;border-color:var(--danger);color:#fca5a5}.ep-offline:hover{background:var(--danger);color:#fff}.ep-prompt-back{z-index:200}.ep-prompt{width:min(420px,92vw)}.ep-prompt .ep-modal-body{display:flex;flex-direction:column;gap:8px}.ep-prompt-label{font-size:12px;color:var(--fg-dim)}.ep-prompt input{width:100%;padding:7px 9px;font-size:14px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--radius);color:var(--fg)}.ep-prompt input:focus{outline:none;border-color:var(--accent)}.ep-report-actions.end{justify-content:flex-end}.ep-report-actions button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.ep-report-actions button.primary:hover{filter:brightness(1.12)}.ep-report-actions button.primary:disabled{opacity:.5;cursor:default;filter:none}
