#app{display:flex;margin-top:50px;margin-bottom:50px;height:calc(100vh - 100px)}#app .panel-left{width:420px;min-width:320px;background:#111;border-right:1px solid #1a1a1a;display:flex;flex-direction:column;overflow:hidden}#app .viewport{flex:1;min-width:0;position:relative;background:#0d0d0d;display:flex;flex-direction:column}#app .panel-right{width:270px;min-width:270px;background:#111;border-left:1px solid #1a1a1a;display:flex;flex-direction:column;overflow-y:auto}#app .section{padding:12px;border-bottom:1px solid #1a1a1a}#app .section-title{color:#0f8;font-size:11px;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}#app .header{padding:8px 12px;background:#0a0a0a;border-bottom:1px solid #1a1a1a;display:flex;align-items:center;gap:8px}#app .header-title{color:#0f8;font-size:13px;font-weight:700;line-height:1.3}#app .header-sub{color:#444;font-size:10px}#app .btn{display:block;width:100%;padding:8px;border:1px solid #333;background:transparent;color:silver;font-family:inherit;font-size:12px;cursor:pointer;text-align:center;transition:all .2s}#app .btn:hover,#app .btn-primary{border-color:#0f8;color:#0f8}#app .btn-primary:hover{background:#00ff8815}#app .btn:disabled{opacity:.3;cursor:not-allowed}#app .btn+.btn{margin-top:6px}#app .btn.sm{padding:5px 6px;font-size:11px}#app .inp{width:100%;box-sizing:border-box;background:#0a0a0a;border:1px solid #333;color:#ddd;font-family:inherit;font-size:12px;padding:5px 6px;margin-bottom:6px}#app .inp:focus{outline:none;border-color:#0f8}#app .grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:start}#app .chk{display:flex;align-items:center;gap:6px;font-size:11px;color:#aaa;cursor:pointer;margin-bottom:8px}#app .chk input{accent-color:#00ff88}#app .hint{font-size:10px;color:#666;margin:4px 0 6px;line-height:1.6;word-break:break-all}#app .editor-wrap{position:relative;flex:1;min-height:120px;display:flex;background:#0a0a0a;border-top:1px solid #1a1a1a;overflow:hidden}#app .gutter{flex:0 0 auto;min-width:38px;padding:8px 6px 8px 4px;box-sizing:border-box;text-align:right;color:#444;background:#0c0c0c;border-right:1px solid #1a1a1a;overflow:hidden;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:18px;white-space:pre;user-select:none}#app .errline{position:absolute;left:0;right:0;height:18px;background:#ff446638;pointer-events:none;display:none}#app .src{flex:1;min-width:0;resize:none;border:0;outline:none;background:transparent;color:#d8d8d8;padding:8px;box-sizing:border-box;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:18px;white-space:pre;overflow:auto;tab-size:2;position:relative}#app .msgs{flex:0 0 auto;max-height:28%;overflow-y:auto;font-size:11px;line-height:1.6;background:#0a0a0a;border-top:1px solid #1a1a1a}#app .msgs div{padding:4px 10px;white-space:pre-wrap;word-break:break-all}#app .msgs .e{color:#f46}#app .msgs .w{color:#f80}#app .msgs .ok{color:#3a7}#app .toolbar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#0a0a0a;border-bottom:1px solid #1a1a1a}#app .toolbar .btn{width:auto;padding:4px 10px}#app .toolbar .btn+.btn{margin-top:0}#app .zlabel{color:#888;font-size:11px;min-width:44px}#app .stats{margin-left:auto;font-size:11px;color:#666}#app .vp{position:relative;flex:1;overflow:hidden;cursor:grab;touch-action:none}#app .vp.drag{cursor:grabbing}#app .vp.bg-white{background:#fff}#app .vp.bg-gray{background:#8a8a8a}#app .vp.bg-check{background-color:#fff;background-image:linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%),linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%);background-size:20px 20px;background-position:0 0,10px 10px}#app .vp.bg-dark{background:#111}#app .vp.bg-dark #stage{filter:invert(1) hue-rotate(180deg)}#app #stage{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}#app #stage svg{display:block;max-width:none}#app #stage g.node *{pointer-events:all}#app #stage g.edge text{pointer-events:all}#app #stage.hl g.node,#app #stage.hl g.edge{opacity:.12;transition:opacity .15s}#app #stage.hl g.hit{opacity:1}#app #stage g.node.sel ellipse,#app #stage g.node.sel polygon,#app #stage g.node.sel path,#app #stage g.node.sel polyline{stroke:#e0245e;stroke-width:3}#app #stage.hl g.edge.hit path{stroke:#e0245e;stroke-width:2}#app #stage.hl g.edge.hit polygon{stroke:#e0245e;fill:#e0245e}#app .vp-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#666;font-size:13px;pointer-events:none;text-align:center;padding:20px}#app .vp.bg-dark .vp-empty{color:#666}#app .vp-empty.hide{display:none}#app .status{padding:4px 10px;font-size:11px;color:#0f8;min-height:18px;background:#0a0a0a;border-top:1px solid #1a1a1a}#app .status.bad{color:#f46}#app .help-btn{margin-left:auto;background:transparent;border:1px solid #333;color:#0f8;font-family:inherit;font-size:10px;padding:3px 8px;cursor:pointer;white-space:nowrap}#app .help-btn:hover{border-color:#0f8;background:#00ff8815}#app .help-dialog{background:#111;color:#bbb;border:1px solid #00ff88;padding:0;width:min(780px,92vw);max-height:86vh;font-size:12px;line-height:1.8}#app .help-dialog::backdrop{background:#000000b8}#app .help-dialog[open]{display:flex;flex-direction:column}#app .help-head{display:flex;align-items:center;padding:10px 20px;background:#0a0a0a;border-bottom:1px solid #1a1a1a}#app .help-head b{color:#0f8;font-size:13px;letter-spacing:1px}#app .help-head .help-x{margin-left:auto;background:transparent;border:1px solid #333;color:#aaa;font-family:inherit;font-size:11px;padding:3px 10px;cursor:pointer}#app .help-head .help-x:hover{border-color:#0f8;color:#0f8}#app .help-body{padding:4px 24px 22px;overflow-y:auto}#app .help-body h4{color:#0f8;font-size:12px;letter-spacing:1px;margin:20px 0 6px;border-bottom:1px solid #1a1a1a;padding-bottom:4px}#app .help-body ul{margin:4px 0;padding-left:20px}#app .help-body code{background:#0a0a0a;border:1px solid #222;padding:0 5px;color:#ddd}#app .help-body table{border-collapse:collapse;width:100%;margin:6px 0}#app .help-body th,#app .help-body td{border:1px solid #222;padding:5px 8px;text-align:left;vertical-align:top}#app .help-body th{color:#888;background:#0a0a0a;font-weight:400}
