shadow-over-bishkek001/dialogEditor/src/components/nodes/nodes.module.css
2026-06-05 21:17:51 +03:00

254 lines
4.2 KiB
CSS

.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;
}