.node { border-radius: 6px; border: 2px solid transparent; background: #1e1e2e; color: #cdd6f4; font-family: 'Segoe UI', system-ui, sans-serif; font-size: 12px; min-width: 220px; max-width: 260px; box-shadow: 0 2px 8px rgba(0,0,0,0.4); position: relative; cursor: pointer; } .node.selected { border-color: #89b4fa; box-shadow: 0 0 0 3px rgba(137,180,250,0.25); } .node.hasError { border-left: 4px solid #f38ba8; } .node.hasWarning { border-left: 4px solid #f9e2af; } /* ---- Header colors ---- */ .nodeHeader { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border-radius: 4px 4px 0 0; } .lineNode.mainChar .nodeHeader { background: #1e66f5; } .lineNode.otherChar .nodeHeader { background: #40a02b; } .choiceNode .nodeHeader { background: #df8e1d; } .conditionNode .nodeHeader { background: #8839ef; } .setFlagNode .nodeHeader { background: #179299; } .cutsceneNode .nodeHeader { background: #4a4a5a; } .endNode .nodeHeader { display: none; } .speakerName { font-weight: 600; font-size: 12px; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 160px; } .nodeType { font-size: 10px; color: rgba(255,255,255,0.7); font-weight: 500; flex-shrink: 0; } .nodeId { font-size: 10px; color: #6c7086; padding: 2px 10px 0; font-family: monospace; } /* ---- Body ---- */ .nodeBody { padding: 6px 10px 8px; min-height: 32px; } .textSnippet { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; color: #cdd6f4; } .emptyText { color: #6c7086; font-style: italic; } /* ---- Trigger pills ---- */ .triggerRow { display: flex; flex-wrap: wrap; gap: 3px; padding: 0 8px 7px; } .triggerPill { background: rgba(255,255,255,0.08); border-radius: 3px; padding: 1px 5px; font-size: 10px; color: #a6adc8; } /* ---- Choice rows ---- */ .choiceRow { display: flex; align-items: center; gap: 6px; padding: 3px 0; border-top: 1px solid rgba(255,255,255,0.06); } .choiceKindBadge { font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 3px; flex-shrink: 0; text-transform: uppercase; } .kindMain { background: #fe640b; color: #fff; } .kindOptional { background: transparent; border: 1px solid #fe640b; color: #fe640b; } .choiceText { font-size: 11px; color: #cdd6f4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; } /* ---- Condition rows ---- */ .conditionRow { display: flex; align-items: center; gap: 4px; padding: 2px 0; } .flagPill { background: rgba(137,180,250,0.15); color: #89b4fa; border-radius: 3px; padding: 1px 5px; font-size: 10px; font-family: monospace; } .opBadge { color: #cba6f7; font-size: 10px; font-weight: 600; } .valuePill { background: rgba(166,227,161,0.15); color: #a6e3a1; border-radius: 3px; padding: 1px 5px; font-size: 10px; font-family: monospace; } /* ---- Condition handles ---- */ .conditionHandles { display: flex; justify-content: space-between; padding: 2px 14px 6px; } .trueLabel { font-size: 9px; font-weight: 700; color: #a6e3a1; text-transform: uppercase; margin-left: 12%; } .falseLabel { font-size: 9px; font-weight: 700; color: #f38ba8; text-transform: uppercase; margin-right: 12%; } /* ---- End node ---- */ .endNode { min-width: 100px; max-width: 120px; display: flex; flex-direction: column; align-items: center; background: #2a0e14; border: 2px solid #f38ba8; border-radius: 50px; padding: 10px 16px; } .endLabel { font-size: 14px; font-weight: 700; color: #f38ba8; letter-spacing: 2px; } /* ---- Start badge ---- */ .startBadge { position: absolute; top: -22px; left: 10px; background: #a6e3a1; color: #1e1e2e; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 4px 4px 0 0; } /* ---- Handles ---- */ .handle { width: 10px; height: 10px; background: #6c7086; border: 2px solid #1e1e2e; } .trueHandle { background: #a6e3a1 !important; } .falseHandle { background: #f38ba8 !important; } .choiceHandle { width: 8px; height: 8px; background: #fab387 !important; border: 2px solid #1e1e2e; position: absolute !important; }