1/** 2 * color definitions 3 */ 4.djs-container { 5 --color-grey-225-10-15: hsl(225, 10%, 15%); 6 --color-grey-225-10-35: hsl(225, 10%, 35%); 7 --color-grey-225-10-55: hsl(225, 10%, 55%); 8 --color-grey-225-10-75: hsl(225, 10%, 75%); 9 --color-grey-225-10-80: hsl(225, 10%, 80%); 10 --color-grey-225-10-85: hsl(225, 10%, 85%); 11 --color-grey-225-10-90: hsl(225, 10%, 90%); 12 --color-grey-225-10-95: hsl(225, 10%, 95%); 13 --color-grey-225-10-97: hsl(225, 10%, 97%); 14 15 --color-blue-205-100-45: hsl(205, 100%, 45%); 16 --color-blue-205-100-45-opacity-30: hsla(205, 100%, 45%, 30%); 17 --color-blue-205-100-50: hsl(205, 100%, 50%); 18 --color-blue-205-100-50-opacity-15: hsla(205, 100%, 50%, 15%); 19 --color-blue-205-100-70: hsl(205, 100%, 75%); 20 --color-blue-205-100-95: hsl(205, 100%, 95%); 21 22 --color-green-150-86-44: hsl(150, 86%, 44%); 23 24 --color-red-360-100-40: hsl(360, 100%, 40%); 25 --color-red-360-100-45: hsl(360, 100%, 45%); 26 --color-red-360-100-92: hsl(360, 100%, 92%); 27 --color-red-360-100-97: hsl(360, 100%, 97%); 28 29 --color-white: hsl(0, 0%, 100%); 30 --color-black: hsl(0, 0%, 0%); 31 --color-black-opacity-10: hsla(0, 0%, 0%, 10%); 32 33 --canvas-fill-color: var(--color-white); 34 35 --bendpoint-fill-color: var(--color-blue-205-100-45); 36 --bendpoint-stroke-color: var(--canvas-fill-color); 37 38 --context-pad-entry-background-color: var(--color-white); 39 --context-pad-entry-hover-background-color: var(--color-grey-225-10-95); 40 41 --element-dragger-color: var(--color-blue-205-100-50); 42 --element-hover-outline-fill-color: var(--color-blue-205-100-45); 43 --element-selected-outline-stroke-color: var(--color-blue-205-100-50); 44 --element-selected-outline-secondary-stroke-color: var(--color-blue-205-100-70); 45 46 --lasso-fill-color: var(--color-blue-205-100-50-opacity-15); 47 --lasso-stroke-color: var(--element-selected-outline-stroke-color); 48 49 --palette-entry-color: var(--color-grey-225-10-15); 50 --palette-entry-hover-color: var(--color-blue-205-100-45); 51 --palette-entry-selected-color: var(--color-blue-205-100-50); 52 --palette-separator-color: var(--color-grey-225-10-75); 53 --palette-toggle-hover-background-color: var(--color-grey-225-10-55); 54 --palette-background-color: var(--color-grey-225-10-97); 55 --palette-border-color: var(--color-grey-225-10-75); 56 57 --popup-body-background-color: var(--color-white); 58 --popup-header-entry-selected-color: var(--color-blue-205-100-50); 59 --popup-header-entry-selected-background-color: var(--color-black-opacity-10); 60 --popup-header-separator-color: var(--color-grey-225-10-75); 61 --popup-background-color: var(--color-grey-225-10-97); 62 --popup-border-color: var(--color-grey-225-10-75); 63 64 --resizer-fill-color: var(--color-blue-205-100-45); 65 --resizer-stroke-color: var(--canvas-fill-color); 66 67 --search-container-background-color: var(--color-grey-225-10-97); 68 --search-container-border-color: var(--color-blue-205-100-50); 69 --search-container-box-shadow-color: var(--color-blue-205-100-95); 70 --search-container-box-shadow-inset-color: var(--color-grey-225-10-80); 71 --search-input-border-color: var(--color-grey-225-10-75); 72 --search-result-border-color: var(--color-grey-225-10-75); 73 --search-result-highlight-color: var(--color-black); 74 --search-result-selected-color: var(--color-blue-205-100-45-opacity-30); 75 76 --shape-attach-allowed-stroke-color: var(--color-blue-205-100-50); 77 --shape-connect-allowed-fill-color: var(--color-grey-225-10-97); 78 --shape-drop-allowed-fill-color: var(--color-grey-225-10-97); 79 --shape-drop-not-allowed-fill-color: var(--color-red-360-100-97); 80 --shape-resize-preview-stroke-color: var(--color-blue-205-100-50); 81 82 --snap-line-stroke-color: var(--color-blue-205-100-45-opacity-30); 83 84 --space-tool-crosshair-stroke-color: var(--color-black); 85 86 --tooltip-error-background-color: var(--color-red-360-100-97); 87 --tooltip-error-border-color: var(--color-red-360-100-45); 88 --tooltip-error-color: var(--color-red-360-100-45); 89} 90 91/** 92 * outline styles 93 */ 94 95.djs-outline, 96.djs-selection-outline { 97 fill: none; 98 shape-rendering: geometricPrecision; 99 stroke-width: 2px; 100} 101 102.djs-outline { 103 visibility: hidden; 104} 105 106.djs-selection-outline { 107 stroke: var(--element-selected-outline-stroke-color); 108} 109 110.djs-element.selected .djs-outline { 111 visibility: visible; 112 113 stroke: var(--element-selected-outline-stroke-color); 114} 115 116.djs-multi-select .djs-element.selected .djs-outline { 117 stroke: var(--element-selected-outline-secondary-stroke-color); 118} 119 120.djs-shape.connect-ok .djs-visual > :nth-child(1) { 121 fill: var(--shape-connect-allowed-fill-color) !important; 122} 123 124.djs-shape.connect-not-ok .djs-visual > :nth-child(1), 125.djs-shape.drop-not-ok .djs-visual > :nth-child(1) { 126 fill: var(--shape-drop-not-allowed-fill-color) !important; 127} 128 129.djs-shape.new-parent .djs-visual > :nth-child(1) { 130 fill: var(--shape-drop-allowed-fill-color) !important; 131} 132 133svg.drop-not-ok { 134 background: var(--shape-drop-not-allowed-fill-color) !important; 135} 136 137svg.new-parent { 138 background: var(--shape-drop-allowed-fill-color) !important; 139} 140 141 142/* Override move cursor during drop and connect */ 143.drop-not-ok, 144.connect-not-ok, 145.drop-not-ok *, 146.connect-not-ok * { 147 cursor: not-allowed !important; 148} 149 150.drop-ok, 151.connect-ok, 152.drop-ok *, 153.connect-ok * { 154 cursor: default !important; 155} 156 157.djs-element.attach-ok .djs-visual > :nth-child(1) { 158 stroke-width: 5px !important; 159 stroke: var(--shape-attach-allowed-stroke-color) !important; 160} 161 162.djs-frame.connect-not-ok .djs-visual > :nth-child(1), 163.djs-frame.drop-not-ok .djs-visual > :nth-child(1) { 164 stroke-width: 3px !important; 165 stroke: var(--shape-drop-not-allowed-fill-color) !important; 166 fill: none !important; 167} 168 169/** 170* Selection box style 171* 172*/ 173.djs-lasso-overlay { 174 fill: var(--lasso-fill-color); 175 stroke: var(--lasso-stroke-color); 176 stroke-width: 2px; 177 shape-rendering: geometricPrecision; 178 pointer-events: none; 179} 180 181/** 182 * Resize styles 183 */ 184.djs-resize-overlay { 185 fill: none; 186 187 stroke-dasharray: 5 1 3 1; 188 stroke: var(--shape-resize-preview-stroke-color); 189 190 pointer-events: none; 191} 192 193.djs-resizer-hit { 194 fill: none; 195 pointer-events: all; 196} 197 198.djs-resizer-visual { 199 fill: var(--resizer-fill-color); 200 stroke-width: 1px; 201 stroke: var(--resizer-stroke-color); 202 shape-rendering: geometricPrecision; 203} 204 205.djs-resizer:hover .djs-resizer-visual { 206 stroke: var(--resizer-stroke-color); 207 stroke-opacity: 1; 208} 209 210.djs-cursor-resize-ns, 211.djs-resizer-n, 212.djs-resizer-s { 213 cursor: ns-resize; 214} 215 216.djs-cursor-resize-ew, 217.djs-resizer-e, 218.djs-resizer-w { 219 cursor: ew-resize; 220} 221 222.djs-cursor-resize-nwse, 223.djs-resizer-nw, 224.djs-resizer-se { 225 cursor: nwse-resize; 226} 227 228.djs-cursor-resize-nesw, 229.djs-resizer-ne, 230.djs-resizer-sw { 231 cursor: nesw-resize; 232} 233 234.djs-shape.djs-resizing > .djs-outline { 235 visibility: hidden !important; 236} 237 238.djs-shape.djs-resizing > .djs-resizer { 239 visibility: hidden; 240} 241 242.djs-dragger > .djs-resizer { 243 visibility: hidden; 244} 245 246/** 247 * drag styles 248 */ 249.djs-dragger * { 250 fill: none !important; 251 stroke: var(--element-dragger-color) !important; 252} 253 254.djs-dragger tspan, 255.djs-dragger text { 256 fill: var(--element-dragger-color) !important; 257 stroke: none !important; 258} 259 260marker.djs-dragger circle, 261marker.djs-dragger path, 262marker.djs-dragger polygon, 263marker.djs-dragger polyline, 264marker.djs-dragger rect { 265 fill: var(--element-dragger-color) !important; 266 stroke: none !important; 267} 268 269marker.djs-dragger text, 270marker.djs-dragger tspan { 271 fill: none !important; 272 stroke: var(--element-dragger-color) !important; 273} 274 275.djs-dragging { 276 opacity: 0.3; 277} 278 279.djs-dragging, 280.djs-dragging > * { 281 pointer-events: none !important; 282} 283 284.djs-dragging .djs-context-pad, 285.djs-dragging .djs-outline { 286 display: none !important; 287} 288 289/** 290 * no pointer events for visual 291 */ 292.djs-visual, 293.djs-outline { 294 pointer-events: none; 295} 296 297.djs-element.attach-ok .djs-hit { 298 stroke-width: 60px !important; 299} 300 301/** 302 * all pointer events for hit shape 303 */ 304.djs-element > .djs-hit-all, 305.djs-element > .djs-hit-no-move { 306 pointer-events: all; 307} 308 309.djs-element > .djs-hit-stroke, 310.djs-element > .djs-hit-click-stroke { 311 pointer-events: stroke; 312} 313 314/** 315 * shape / connection basic styles 316 */ 317.djs-connection .djs-visual { 318 stroke-width: 2px; 319 fill: none; 320} 321 322.djs-cursor-grab { 323 cursor: -webkit-grab; 324 cursor: -moz-grab; 325 cursor: grab; 326} 327 328.djs-cursor-grabbing { 329 cursor: -webkit-grabbing; 330 cursor: -moz-grabbing; 331 cursor: grabbing; 332} 333 334.djs-cursor-crosshair { 335 cursor: crosshair; 336} 337 338.djs-cursor-move { 339 cursor: move; 340} 341 342.djs-cursor-resize-ns { 343 cursor: ns-resize; 344} 345 346.djs-cursor-resize-ew { 347 cursor: ew-resize; 348} 349 350 351/** 352 * snapping 353 */ 354.djs-snap-line { 355 stroke: var(--snap-line-stroke-color); 356 stroke-linecap: round; 357 stroke-width: 2px; 358 pointer-events: none; 359} 360 361/** 362 * snapping 363 */ 364.djs-crosshair { 365 stroke: var(--space-tool-crosshair-stroke-color); 366 stroke-linecap: round; 367 stroke-width: 1px; 368 pointer-events: none; 369 shape-rendering: geometricPrecision; 370 stroke-dasharray: 5, 5; 371} 372 373/** 374 * palette 375 */ 376 377.djs-palette { 378 position: absolute; 379 left: 20px; 380 top: 20px; 381 382 box-sizing: border-box; 383 width: 48px; 384} 385 386.djs-palette .separator { 387 margin: 5px; 388 padding-top: 5px; 389 390 border: none; 391 border-bottom: solid 1px var(--palette-separator-color); 392 393 clear: both; 394} 395 396.djs-palette .entry:before { 397 vertical-align: initial; 398} 399 400.djs-palette .djs-palette-toggle { 401 cursor: pointer; 402} 403 404.djs-palette .entry, 405.djs-palette .djs-palette-toggle { 406 color: var(--palette-entry-color); 407 font-size: 30px; 408 409 text-align: center; 410} 411 412.djs-palette .entry { 413 float: left; 414} 415 416.djs-palette .entry img { 417 max-width: 100%; 418} 419 420.djs-palette .djs-palette-entries:after { 421 content: ''; 422 display: table; 423 clear: both; 424} 425 426.djs-palette .djs-palette-toggle:hover { 427 background: var(--palette-toggle-hover-background-color); 428} 429 430.djs-palette .entry:hover { 431 color: var(--palette-entry-hover-color); 432} 433 434.djs-palette .highlighted-entry { 435 color: var(--palette-entry-selected-color) !important; 436} 437 438.djs-palette .entry, 439.djs-palette .djs-palette-toggle { 440 width: 46px; 441 height: 46px; 442 line-height: 46px; 443 cursor: default; 444} 445 446/** 447 * Palette open / two-column layout is controlled via 448 * classes on the palette. Events to hook into palette 449 * changed life-cycle are available in addition. 450 */ 451.djs-palette.two-column.open { 452 width: 94px; 453} 454 455.djs-palette:not(.open) .djs-palette-entries { 456 display: none; 457} 458 459.djs-palette:not(.open) { 460 overflow: hidden; 461} 462 463.djs-palette.open .djs-palette-toggle { 464 display: none; 465} 466 467/** 468 * context-pad 469 */ 470.djs-overlay-context-pad { 471 width: 72px; 472 z-index: 100; 473} 474 475.djs-context-pad { 476 position: absolute; 477 display: none; 478 pointer-events: none; 479 line-height: 1; 480} 481 482.djs-context-pad .entry { 483 width: 22px; 484 height: 22px; 485 text-align: center; 486 display: inline-block; 487 font-size: 22px; 488 margin: 0 2px 2px 0; 489 490 border-radius: 3px; 491 492 cursor: default; 493 494 background-color: var(--context-pad-entry-background-color); 495 box-shadow: 0 0 2px 1px var(--context-pad-entry-background-color); 496 pointer-events: all; 497 vertical-align: middle; 498} 499 500.djs-context-pad .entry:hover { 501 background: var(--context-pad-entry-hover-background-color); 502} 503 504.djs-context-pad.open { 505 display: block; 506} 507 508/** 509 * popup styles 510 */ 511.djs-popup .entry { 512 line-height: 20px; 513 white-space: nowrap; 514 cursor: default; 515} 516 517/* larger font for prefixed icons */ 518.djs-popup .entry:before { 519 vertical-align: middle; 520 font-size: 20px; 521} 522 523.djs-popup .entry > span { 524 vertical-align: middle; 525 font-size: 14px; 526} 527 528.djs-popup .entry:hover, 529.djs-popup .entry.active:hover { 530 background: var(--popup-header-entry-selected-background-color); 531} 532 533.djs-popup .entry.disabled { 534 background: inherit; 535} 536 537.djs-popup .djs-popup-header .entry { 538 display: inline-block; 539 padding: 2px 3px 2px 3px; 540 541 border: solid 1px transparent; 542 border-radius: 3px; 543} 544 545.djs-popup .djs-popup-header .entry.active { 546 color: var(--popup-header-entry-selected-color); 547 border: solid 1px var(--popup-header-entry-selected-color); 548 background-color: var(--popup-header-entry-selected-background-color); 549} 550 551.djs-popup-body .entry { 552 padding: 4px 5px; 553} 554 555.djs-popup-body .entry > span { 556 margin-left: 5px; 557} 558 559.djs-popup-body { 560 background-color: var(--popup-body-background-color); 561} 562 563.djs-popup-header { 564 border-bottom: 1px solid var(--popup-header-separator-color); 565} 566 567.djs-popup-header .entry { 568 margin: 1px; 569 margin-left: 3px; 570} 571 572.djs-popup-header .entry:last-child { 573 margin-right: 3px; 574} 575 576/** 577 * popup / palette styles 578 */ 579.djs-palette { 580 background: var(--palette-background-color); 581 border: solid 1px var(--palette-border-color); 582 border-radius: 2px; 583} 584 585.djs-popup { 586 background: var(--popup-background-color); 587 border: solid 1px var(--popup-border-color); 588 border-radius: 2px; 589} 590 591/** 592 * touch 593 */ 594 595.djs-shape, 596.djs-connection { 597 touch-action: none; 598} 599 600.djs-segment-dragger, 601.djs-bendpoint { 602 display: none; 603} 604 605/** 606 * bendpoints 607 */ 608.djs-segment-dragger .djs-visual { 609 display: none; 610 611 fill: var(--bendpoint-fill-color); 612 stroke: var(--bendpoint-stroke-color); 613 stroke-width: 1px; 614 stroke-opacity: 1; 615} 616 617.djs-segment-dragger:hover .djs-visual { 618 display: block; 619} 620 621.djs-bendpoint .djs-visual { 622 fill: var(--bendpoint-fill-color); 623 stroke: var(--bendpoint-stroke-color); 624 stroke-width: 1px; 625} 626 627.djs-segment-dragger:hover, 628.djs-bendpoints.hover .djs-segment-dragger, 629.djs-bendpoints.selected .djs-segment-dragger, 630.djs-bendpoint:hover, 631.djs-bendpoints.hover .djs-bendpoint, 632.djs-bendpoints.selected .djs-bendpoint { 633 display: block; 634} 635 636.djs-drag-active .djs-bendpoints * { 637 display: none; 638} 639 640.djs-bendpoints:not(.hover) .floating { 641 display: none; 642} 643 644.djs-segment-dragger:hover .djs-visual, 645.djs-segment-dragger.djs-dragging .djs-visual, 646.djs-bendpoint:hover .djs-visual, 647.djs-bendpoint.floating .djs-visual { 648 fill: var(--bendpoint-fill-color); 649 stroke: var(--bendpoint-stroke-color); 650 stroke-opacity: 1; 651} 652 653.djs-bendpoint.floating .djs-hit { 654 pointer-events: none; 655} 656 657.djs-segment-dragger .djs-hit, 658.djs-bendpoint .djs-hit { 659 fill: none; 660 pointer-events: all; 661} 662 663.djs-segment-dragger.horizontal .djs-hit { 664 cursor: ns-resize; 665} 666 667.djs-segment-dragger.vertical .djs-hit { 668 cursor: ew-resize; 669} 670 671.djs-segment-dragger.djs-dragging .djs-hit { 672 pointer-events: none; 673} 674 675.djs-updating, 676.djs-updating > * { 677 pointer-events: none !important; 678} 679 680.djs-updating .djs-context-pad, 681.djs-updating .djs-outline, 682.djs-updating .djs-bendpoint, 683.djs-multi-select .djs-bendpoint, 684.djs-multi-select .djs-segment-dragger, 685.connect-ok .djs-bendpoint, 686.connect-not-ok .djs-bendpoint, 687.drop-ok .djs-bendpoint, 688.drop-not-ok .djs-bendpoint { 689 display: none !important; 690} 691 692.djs-segment-dragger.djs-dragging, 693.djs-bendpoint.djs-dragging { 694 display: block; 695 opacity: 1.0; 696} 697 698 699/** 700 * tooltips 701 */ 702.djs-tooltip-error { 703 width: 160px; 704 padding: 6px; 705 706 background: var(--tooltip-error-background-color); 707 border: solid 1px var(--tooltip-error-border-color); 708 border-radius: 2px; 709 color: var(--tooltip-error-color); 710 font-size: 12px; 711 line-height: 16px; 712 713 opacity: 0.75; 714} 715 716.djs-tooltip-error:hover { 717 opacity: 1; 718} 719 720 721/** 722 * search pad 723 */ 724.djs-search-container { 725 position: absolute; 726 top: 20px; 727 left: 0; 728 right: 0; 729 margin-left: auto; 730 margin-right: auto; 731 732 width: 25%; 733 min-width: 300px; 734 max-width: 400px; 735 z-index: 10; 736 737 font-size: 1.05em; 738 opacity: 0.9; 739 background: var(--search-container-background-color); 740 border: solid 1px var(--search-container-border-color); 741 border-radius: 2px; 742 box-shadow: 0 0 0 2px var(--search-container-box-shadow-color), 0 0 0 1px var(--search-container-box-shadow-inset-color) inset; 743} 744 745.djs-search-container:not(.open) { 746 display: none; 747} 748 749.djs-search-input input { 750 font-size: 1.05em; 751 width: 100%; 752 padding: 6px 10px; 753 border: 1px solid var(--search-input-border-color); 754 box-sizing: border-box; 755} 756 757.djs-search-input input:focus { 758 outline: none; 759 border-color: var(--search-input-border-color); 760} 761 762.djs-search-results { 763 position: relative; 764 overflow-y: auto; 765 max-height: 200px; 766} 767 768.djs-search-results:hover { 769 cursor: pointer; 770} 771 772.djs-search-result { 773 width: 100%; 774 padding: 6px 10px; 775 background: white; 776 border-bottom: solid 1px var(--search-result-border-color); 777 border-radius: 1px; 778} 779 780.djs-search-highlight { 781 color: var(--search-result-highlight-color); 782} 783 784.djs-search-result-primary { 785 margin: 0 0 10px; 786} 787 788.djs-search-result-secondary { 789 font-family: monospace; 790 margin: 0; 791} 792 793.djs-search-result:hover { 794 background: var(--search-result-selected-color); 795} 796 797.djs-search-result-selected { 798 background: var(--search-result-selected-color); 799} 800 801.djs-search-result-selected:hover { 802 background: var(--search-result-selected-color); 803} 804 805.djs-search-overlay { 806 background: var(--search-result-selected-color); 807} 808 809/** 810 * hidden styles 811 */ 812.djs-element-hidden, 813.djs-element-hidden .djs-hit, 814.djs-element-hidden .djs-outline, 815.djs-label-hidden .djs-label { 816 display: none !important; 817} 818 819.djs-element .djs-hit-stroke, 820.djs-element .djs-hit-click-stroke, 821.djs-element .djs-hit-all { 822 cursor: move; 823}