:root{color:#e7ecf3;background:radial-gradient(circle at top,rgba(58,91,143,.22),transparent 30%),linear-gradient(180deg,#09111d,#081019 55%,#060c14);font-family:IBM Plex Sans,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),radial-gradient(circle at top,rgba(74,115,173,.18),transparent 28%),#08111c;background-size:24px 24px,24px 24px,auto,auto}button,input,select,textarea{font:inherit}button{cursor:pointer}#root{min-height:100vh}.app-shell{display:grid;grid-template-columns:280px minmax(0,1fr) 340px;height:100vh;overflow:hidden}.tool-page{min-height:100vh;padding:24px}.tool-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.tool-header-actions{display:flex;align-items:center;gap:10px}.prune-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.prune-panel{margin-top:0}.prune-summary{margin-top:16px}.prune-result{margin-top:16px;padding:14px;border:1px solid rgba(139,162,194,.18);border-radius:16px;background:#0d1928e6}.prune-kv{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:16px;row-gap:6px}.prune-kv strong{color:#9fb2cc;font-size:.84rem;font-weight:700}.prune-kv span{color:#e4edf9;min-width:0}.prune-result-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}.prune-result-header strong{color:#dce7f8;font-size:.96rem}.prune-badge{padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.03em}.prune-badge.success{color:#9be0b4;border:1px solid rgba(121,207,156,.4);background:#0b221aeb}.prune-badge.warning{color:#f0d890;border:1px solid rgba(200,160,60,.4);background:#372a0ee0}.layer-picker-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;color:#c8d3e2;font-size:.88rem}.layer-picker-actions{display:flex;align-items:center;gap:8px}.layer-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.layer-chip{padding:9px 12px;border-radius:999px;border:1px solid rgba(139,162,194,.2);background:#0e1828e6;color:#dce7f8}.layer-chip.kept{border-color:#79cf9c59;background:#0b221aeb}.layer-chip.dropped{border-color:#ff7f6f59;background:#311212eb;color:#f1c2be;opacity:.78;transform:scale(.97)}.prune-empty-state{margin-top:16px;padding:16px;border:1px dashed rgba(139,162,194,.26);border-radius:14px;background:#0c18288c;display:grid;gap:6px}.prune-empty-state strong{color:#cbd7e9}.prune-empty-state span{color:#95a9c8;font-size:.88rem}.sidebar,.workspace{padding:24px;min-height:0;max-height:100vh}.sidebar{overflow-y:auto;overflow-x:hidden}.sidebar{background:#060e18d1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.workspace{display:flex;flex-direction:column;gap:18px;overflow:hidden}.palette{display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden}.inspector{overflow:auto}.panel-header{margin-bottom:12px}.panel-header.row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.export-subheader{margin-top:18px}.export-actions{display:grid;gap:12px}.export-card{display:grid;gap:10px;padding:12px 14px;border:1px solid rgba(139,162,194,.18);border-radius:16px;background:#0d1928e6}.export-card span{color:#b8c4d6}.export-card .export-warning{color:#ffb7b0;font-size:.85rem}.export-buttons{display:flex;gap:8px}.export-btn{flex:1;padding:8px 6px;font-size:.82rem;text-align:center;white-space:nowrap}.export-preview{margin-top:18px}.preview-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:100;display:flex;align-items:center;justify-content:center;padding:32px}.preview-modal{background:#0d1928;border:1px solid rgba(139,162,194,.2);border-radius:16px;width:100%;max-width:900px;height:90vh;height:min(90dvh,960px);max-height:calc(100vh - 28px);max-height:calc(100dvh - 28px);display:flex;flex-direction:column;overflow:hidden}.preview-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid rgba(139,162,194,.12);flex-shrink:0}.preview-modal-actions{display:flex;gap:8px;align-items:center}.preview-modal-content{flex:1;overflow:auto;padding:20px 24px;margin:0;font-size:.82rem;line-height:1.6;color:#b8c4d6;white-space:pre}.code-viewer{flex:1;overflow:hidden;min-height:0;height:100%}.code-viewer .cm-editor{height:100%}.code-viewer .cm-scroller{height:100%;overflow:auto}.code-viewer-loading{display:grid;justify-items:center;align-content:center;gap:10px;text-align:center;white-space:normal}.code-viewer-loading-spinner{width:28px;height:28px;border-radius:999px;border:3px solid rgba(118,193,255,.2);border-top-color:#76c1ff;animation:code-viewer-spin .8s linear infinite}.code-viewer-loading-title{margin:0;font-size:.88rem;color:#d3ddec}.code-viewer-loading-subtitle{margin:0;font-size:.8rem;color:#8fa3bf}.json-editor-wrap{display:grid;grid-template-rows:auto minmax(0,1fr);align-content:stretch;gap:8px;white-space:normal}.json-editor-status{margin:0;font-size:.88rem;color:#ffb7b0}.json-editor-status.success{color:#8fd1a3}.json-editor{width:100%;min-height:0;height:100%;padding:12px;border:1px solid rgba(135,155,191,.22);border-radius:12px;background:#101c2ceb;color:#d3ddec;font-size:.82rem;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;resize:none}.copy-status{margin:12px 0 0;color:#8fd1a3;font-size:.92rem}.copy-status.error{color:#ffb7b0}.panel-header h1,.panel-header h2{margin:0;font-size:1.2rem}.eyebrow{margin:0 0 6px;color:#89a1c7;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.panel-copy,.muted,.success-copy{margin:0 0 16px;color:#b8c4d6;line-height:1.5}.success-copy{color:#8fd1a3}.block-grid{display:grid;gap:12px;padding-right:6px}.palette-scroll{flex:1;min-height:0;overflow-y:auto;padding-right:6px}.preset-section{display:grid;gap:12px;margin-bottom:16px}.preset-grid{display:grid;gap:10px}.preset-card{border-color:#73b5ff47;background:#0c1c2ff5}.section-header{display:flex;align-items:center;justify-content:space-between}.block-card,.ghost-button,.connection-form button,.danger-button,.inline-button{border:1px solid rgba(135,155,191,.22);border-radius:16px;background:#0e1828e6;color:inherit;transition:transform .12s ease,border-color .12s ease,background .12s ease}.block-card:hover,.ghost-button:hover,.connection-form button:hover,.danger-button:hover,.inline-button:hover{transform:translateY(-1px);border-color:#7dc2ff8c;background:#122034f5}.block-card{display:grid;gap:6px;width:100%;padding:14px;text-align:left}.block-category{color:#73b5ff;font-size:.73rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.canvas-panel,.connections-panel,.export-panel,.inspector-panel,.issues-panel{border:1px solid rgba(139,162,194,.18);border-radius:24px;background:#09121dcc;padding:18px}.canvas-panel{flex:1;min-height:0;display:flex;flex-direction:column}.canvas-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.palette .canvas-actions{flex-direction:row;flex-wrap:wrap;justify-content:flex-end}.palette .canvas-actions .ghost-button{padding:6px 10px;font-size:.8rem}.zoom-controls{display:flex;align-items:center;border:1px solid rgba(135,155,191,.22);border-radius:12px;background:#0e1828e6;overflow:hidden}.zoom-btn,.zoom-level-btn{padding:7px 11px;border:none;border-radius:0;background:transparent;color:#c8d3e2;font-size:1rem;line-height:1;transition:background .1s ease,color .1s ease}.zoom-btn:hover,.zoom-level-btn:hover{background:#76c1ff1f;color:#e7ecf3}.zoom-btn:disabled{opacity:.3;cursor:not-allowed}.zoom-btn:disabled:hover{background:transparent;color:#c8d3e2}.zoom-level-btn{min-width:52px;font-size:.82rem;font-weight:700;letter-spacing:.02em;border-left:1px solid rgba(135,155,191,.18);border-right:1px solid rgba(135,155,191,.18)}.zoom-fit-btn{border-left:1px solid rgba(135,155,191,.18);font-size:.95rem}.metric-pill{padding:10px 14px;border:1px solid rgba(115,181,255,.28);border-radius:999px;background:#0c1c2ff5;color:#dce7f8;font-size:.92rem;font-weight:700;letter-spacing:.02em}.connection-hint{margin:0 0 14px;color:#b8c4d6;font-size:.92rem}.connection-error{margin:-4px 0 14px;color:#ffb7b0;font-size:.92rem}.training-warning{margin:0 0 12px;color:#ffb7b0;font-size:.92rem}.project-status{margin:0 0 12px;color:#8fd1a3;font-size:.92rem}.prune-status{margin:0 0 12px;font-size:.92rem}.prune-status.success{color:#8fd1a3}.prune-status.error{color:#ffb7b0}.prune-contact-card{display:flex;flex-direction:column;gap:6px;margin:16px 0 12px;padding:14px 16px;border:1px solid rgba(139,92,246,.4);border-radius:8px;background:#8b5cf614;font-size:.9rem;color:#d4c5f9}.prune-contact-title{font-weight:600;font-size:.95rem;color:#c4b5fd}.prune-contact-card a{color:#a78bfa;text-decoration:underline}.prune-contact-card a:hover{color:#c4b5fd}.prune-run-warning{margin:8px 0 12px;color:#f0d890;font-size:.88rem}.inline-spinner{display:inline-block;width:12px;height:12px;border-radius:999px;border:2px solid rgba(118,193,255,.35);border-top-color:#76c1ff;animation:code-viewer-spin .7s linear infinite;margin-right:8px;vertical-align:-1px}.hidden-file-input{display:none}.connection-hint code{padding:2px 6px;border-radius:8px;background:#122034f5}.canvas-grid{position:relative;flex:1;min-height:0;border-radius:20px;overflow:hidden;cursor:grab;background:radial-gradient(circle at top,rgba(84,128,187,.18),transparent 30%),linear-gradient(180deg,#0a1625f0,#07101cf5)}.canvas-grid.panning{cursor:grabbing}.canvas-viewport{position:absolute;top:0;right:0;bottom:0;left:0;width:3000px;height:2000px;transform-origin:0 0;will-change:transform}.connection-overlay{position:absolute;top:0;left:0;width:3000px;height:2000px;pointer-events:none;overflow:visible}.connection-path-hitarea{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}.connection-path{fill:none;stroke:#76c1ff;stroke-width:2;stroke-linecap:round;opacity:.9;pointer-events:none;filter:drop-shadow(0 0 8px rgba(118,193,255,.3));transition:stroke .12s ease,opacity .12s ease}.connection-path.selected{stroke:#a8d8ff;opacity:1;filter:drop-shadow(0 0 12px rgba(118,193,255,.55))}.edge-delete-btn{pointer-events:all;cursor:pointer}.edge-delete-circle{fill:#3c1414f5;stroke:#cd60608c;stroke-width:1.5;transition:fill .1s ease,stroke .1s ease}.edge-delete-btn:hover .edge-delete-circle{fill:#6e1e1efa;stroke:#e66e6ed9}.edge-delete-x{fill:#ffb7b0;font-size:15px;font-weight:700;pointer-events:none;-webkit-user-select:none;user-select:none}.canvas-node{position:absolute;display:grid;gap:5px;min-width:200px;padding:14px 16px;border:1px solid rgba(120,170,226,.28);border-radius:18px;background:#0a1625f5;color:#e7ecf3;text-align:left;box-shadow:0 10px 24px #02080f47;cursor:grab;-webkit-user-select:none;user-select:none}.canvas-node.selected{border-color:#74ccffe6;box-shadow:0 0 0 1px #74ccff66}.canvas-node.dragging{cursor:grabbing;z-index:2}.node-handle{position:absolute;top:50%;width:14px;height:14px;border:2px solid #76c1ff;border-radius:999px;background:#08111c;transform:translateY(-50%);box-shadow:0 0 0 3px #76c1ff1f}.node-handle.active{background:#76c1ff;box-shadow:0 0 0 5px #76c1ff2e}.node-handle-in{left:-8px}.node-handle-out{right:-8px}.node-meta{color:#95a9c8;font-size:.76rem}.empty-canvas{margin:0;padding:24px;color:#95a9c8}.connection-form select,.connection-form button,.field input,.field select{min-height:42px;padding:10px 12px}select,input{width:100%;border:1px solid rgba(135,155,191,.22);border-radius:12px;background:#101c2ceb;color:inherit}.edge-list{display:grid;gap:10px}.edge-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-radius:14px;background:#0d1928e6}.inline-button,.ghost-button,.danger-button{padding:10px 14px}.accent-button{border-color:#8b5cf699;background:#8b5cf61f;color:#c4b5fd}.accent-button:hover{border-color:#8b5cf6e6;background:#8b5cf638}.danger-button{background:#471818f2;border-color:#cd60604d}.ghost-button:disabled,.danger-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.form-stack{display:grid;gap:12px}.field{display:grid;gap:6px}.field span{color:#c8d3e2;font-size:.92rem}.node-summary{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;margin:18px 0;color:#b6c3d9}.issues-panel{margin-top:18px}.prune-layout .prune-panel{margin-top:0}.export-panel{margin-top:18px}.issue-card{display:grid;gap:6px;margin-top:10px;padding:12px 14px;border-radius:14px;border:1px solid rgba(222,100,84,.45);border-left:3px solid rgba(222,100,84,.9);background:#501c14e0;color:#ffc8c2}.issue-card.warning{border-color:#c8a03c66;border-left-color:#e6b43ce6;background:#372a0ee0;color:#f0d890}.issues-counts{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.issues-count{padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.04em}.issues-count.error{background:#d6463c38;color:#ff9a92;border:1px solid rgba(214,70,60,.4)}.issues-count.warning{background:#c8a0282e;color:#f0d060;border:1px solid rgba(200,160,40,.35)}.issue-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.issue-badge{padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.issue-badge.error{background:#d6463c47;color:#ff9a92;border:1px solid rgba(214,70,60,.4)}.issue-badge.warning{background:#c8a02838;color:#f0d060;border:1px solid rgba(200,160,40,.35)}.issue-location{color:#95a9c8;font-size:.78rem}.prune-log-list,.prune-remap-list{display:grid;gap:8px}.prune-log-list{max-height:360px;overflow:auto;padding-right:4px}.prune-log-entry,.prune-remap-entry{border:1px solid rgba(139,162,194,.2);border-radius:12px;background:#0c1828e6;padding:10px 12px;display:grid;gap:6px}.prune-log-entry p,.prune-remap-entry p{margin:0;color:#b8c4d6;font-size:.83rem;line-height:1.45}.prune-log-entry p{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Courier New,monospace}.prune-log-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.prune-log-header strong{color:#dce7f8;font-size:.82rem}.prune-log-time{color:#89a1c7;font-size:.72rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Courier New,monospace}pre{margin:0;overflow:auto;padding:14px;border-radius:16px;background:#060c14f2;color:#aed4ff;font-size:.83rem;line-height:1.5}@keyframes code-viewer-spin{to{transform:rotate(360deg)}}@media(max-height:760px){.preview-modal-overlay{padding:12px}.preview-modal{height:calc(100vh - 24px);height:calc(100dvh - 24px);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}.preview-modal-header{padding:14px 16px 12px}.preview-modal-actions{flex-wrap:wrap;justify-content:flex-end}.preview-modal-content{padding:14px 16px}}@media(max-width:1200px){.tool-header{flex-wrap:wrap}.tool-header-actions{width:100%;justify-content:flex-start}.prune-layout{grid-template-columns:1fr}.layer-picker-header{flex-wrap:wrap;align-items:flex-start}.app-shell{grid-template-columns:1fr}.workspace{order:2}.palette{order:1}.inspector{order:3}.canvas-actions{flex-wrap:wrap}}@media(max-width:760px){.tool-page{padding:16px}.prune-kv{grid-template-columns:1fr;row-gap:4px}.prune-log-list{max-height:280px}}
