:root{--bg: #f5f1eb;--board-bg: #ffffff;--text: #1a1a1a;--text-2: #777;--border: #e5e3de;--radius: 10px;--shadow-s: 0 1px 3px rgba(0,0,0,.06);--shadow-m: 0 4px 14px rgba(0,0,0,.09)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,system-ui,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:#fff;border-bottom:1px solid var(--border);z-index:20;flex-shrink:0}.header-left{display:flex;align-items:center;gap:20px}.logo{display:flex;align-items:center;gap:8px}.logo-text{font-family:Syne,system-ui,sans-serif;font-weight:800;font-size:22px;letter-spacing:-.5px;background:linear-gradient(135deg,#2563eb,#0891b2);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.diagram-name{border:none;background:var(--bg);padding:7px 14px;border-radius:7px;font-size:14px;font-weight:500;color:var(--text);width:260px;outline:none;font-family:inherit;transition:box-shadow .2s}.diagram-name:focus{box-shadow:0 0 0 2px #0891b2}.header-right{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s;border:1px solid var(--border);white-space:nowrap}.btn-ghost{background:#fff;color:var(--text)}.btn-ghost:hover{background:var(--bg)}.btn-primary{background:#0891b2;color:#fff;border-color:#0891b2}.btn-primary:hover{background:#0e7490}.btn-danger:hover{background:#fef2f2;border-color:#ef4444;color:#ef4444}.export-group{position:relative}.export-menu{position:absolute;top:calc(100% + 4px);right:0;background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:var(--shadow-m);overflow:hidden;min-width:190px;z-index:100;animation:dropIn .12s ease-out}.export-menu button{display:block;width:100%;padding:10px 16px;text-align:left;background:none;border:none;font-size:13px;font-family:inherit;cursor:pointer;color:var(--text)}.export-menu button:hover{background:var(--bg)}@keyframes dropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.board-wrapper{flex:1;overflow:auto;padding:28px 32px}.board{position:relative;display:flex;align-items:flex-start;gap:0;min-height:500px;padding:28px;background:var(--board-bg);border-radius:16px;border:1px solid var(--border);box-shadow:var(--shadow-s);background-image:radial-gradient(circle,#ddd8d0 1px,transparent 1px);background-size:22px 22px;background-position:11px 11px}.connection-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5}.conn-path{transition:opacity .15s,stroke-width .15s}.conn-path:hover{stroke-width:3.5!important;opacity:1!important}.col-arrow{display:flex;align-items:center;justify-content:center;padding:0 2px;margin-top:60px;flex-shrink:0;opacity:.6}.column{flex:1;min-width:190px;max-width:250px;display:flex;flex-direction:column;z-index:1}.column-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--col);border-radius:var(--radius) var(--radius) 0 0;color:#fff;-webkit-user-select:none;user-select:none}.column-letter{font-family:Syne,system-ui,sans-serif;font-weight:800;font-size:24px;opacity:.55;line-height:1}.column-label{font-weight:600;font-size:13px;letter-spacing:.6px;text-transform:uppercase}.column-body{flex:1;padding:10px 8px;background:var(--col-light);border-radius:0 0 var(--radius) var(--radius);border:1px solid color-mix(in srgb,var(--col) 20%,transparent);border-top:none;display:flex;flex-direction:column;gap:8px;min-height:200px}.item-card{position:relative;display:flex;align-items:center;gap:6px;padding:10px 30px 10px 10px;background:#fff;border-radius:8px;border-left:3px solid var(--col);box-shadow:var(--shadow-s);cursor:default;transition:box-shadow .15s,transform .1s;-webkit-user-select:none;user-select:none}.item-card:hover{box-shadow:var(--shadow-m)}.item-card.dragging{opacity:.35;transform:scale(.97)}.port{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--col);border:2px solid #fff;opacity:0;transition:opacity .15s,transform .15s,box-shadow .15s;cursor:crosshair;z-index:12}.port-in{left:-7px;top:50%;transform:translateY(-50%)}.port-out{right:-7px;top:50%;transform:translateY(-50%)}.item-card:hover .port,.board.connecting .port{opacity:1}.board.connecting .port:hover{transform:translateY(-50%) scale(1.4);box-shadow:0 0 0 3px color-mix(in srgb,var(--col) 30%,transparent)}.drag-handle{cursor:grab;color:#c5c2bb;font-size:16px;-webkit-user-select:none;user-select:none;line-height:1;flex-shrink:0;letter-spacing:-1px}.drag-handle:active{cursor:grabbing}.item-text{flex:1;font-size:13px;cursor:text;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.item-input{flex:1;border:none;outline:none;font-size:13px;font-family:inherit;background:transparent;min-width:0;color:var(--text)}.item-del{position:absolute;top:2px;right:4px;width:20px;height:20px;border:none;background:none;color:#ccc;font-size:17px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s,color .12s;line-height:1}.item-card:hover .item-del{opacity:1}.item-del:hover{color:#ef4444;background:#fef2f2}.drop-bar{position:absolute;top:-5px;left:4px;right:4px;height:2px;background:var(--col);border-radius:1px;z-index:10}.drop-end{flex:1;min-height:16px}.add-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;background:transparent;border:1.5px dashed color-mix(in srgb,var(--col) 35%,transparent);border-radius:8px;color:var(--col);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;margin-top:auto}.add-btn:hover{background:color-mix(in srgb,var(--col) 8%,transparent);border-color:var(--col)}.hint{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:10px 22px;background:#1a1a1a;color:#fff;border-radius:9px;font-size:13px;z-index:100;animation:slideUp .2s ease-out;white-space:nowrap;box-shadow:0 8px 24px #00000040}.toast{position:fixed;bottom:24px;right:24px;padding:10px 20px;background:#059669;color:#fff;border-radius:9px;font-size:13px;font-weight:500;z-index:100;animation:slideUp .2s ease-out;box-shadow:0 8px 24px #0003}@keyframes slideUp{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.board.connecting,.board.connecting .item-card,.board.connecting .drag-handle{cursor:crosshair}
