1/* Calendar Plugin - Matrix Edition v5.5.0 2 * 3 * CSS VARIABLE REFERENCE 4 * ====================== 5 * All theming is driven by CSS custom properties injected per-calendar instance. 6 * The wiki theme maps these from the DokuWiki template's style.ini file. 7 * 8 * Variable | Description | Wiki Template Mapping (style.ini) 9 * ------------------------|----------------------------|------------------------------------ 10 * --background-site | Main container bg | __background_site__ 11 * --background-alt | Hover/alt bg | __background_alt__ 12 * --background-header | Header backgrounds | __background_alt__ 13 * --text-primary | Main text color | __text__ 14 * --text-bright | Accent text | __link__ 15 * --text-dim | Secondary/muted text | __text_neu__ 16 * --border-color | Grid lines, subtle borders | __border__ 17 * --border-main | Accent border, buttons | __link__ 18 * --cell-bg | Cell/input backgrounds | __background__ 19 * --cell-today-bg | Today cell highlight | __background_neu__ 20 * --grid-bg | Calendar grid bg | __background_site__ 21 * --shadow-color | Box shadow color | rgba(0,0,0,0.1) 22 * --header-border | Header bottom border | __border__ 23 * --header-shadow | Header box-shadow | 0 2px 4px rgba(0,0,0,0.1) 24 * --btn-text | Button text color | computed (contrast against --border-main) 25 * 26 * To customize for a specific DokuWiki template, edit the template's 27 * conf/style.ini [replacements] section. The calendar will automatically 28 * pick up the template colors. 29 */ 30 31/* Main container: Responsive with flexible sizing */ 32.calendar-compact-container { 33 display: flex; 34 width: 100%; 35 max-width: 1200px; 36 min-width: 320px; 37 height: 600px; 38 max-height: 90vh; 39 background-color: var(--background-site, #ffffff); 40 border: 2px solid var(--border-main, #d0d0d0); 41 border-radius: 4px; 42 box-shadow: 0 0 10px var(--shadow-color, rgba(0,0,0,0.06)); 43 overflow: hidden; 44 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 45 font-size: 12px; 46} 47 48/* Mobile responsive */ 49@media (max-width: 768px) { 50 .calendar-compact-container { 51 flex-direction: column; 52 height: auto; 53 min-height: 400px; 54 max-height: none; 55 } 56 57 .calendar-compact-left { 58 width: 100% !important; 59 min-width: 100% !important; 60 border-right: none !important; 61 border-bottom: 1px solid var(--border-main, #e0e0e0); 62 height: auto; 63 min-height: 300px; 64 } 65 66 .calendar-compact-right { 67 width: 100% !important; 68 min-width: 100% !important; 69 max-height: 400px; 70 } 71} 72 73/* Tablet responsive */ 74@media (max-width: 1024px) and (min-width: 769px) { 75 .calendar-compact-container { 76 max-width: 100%; 77 } 78 79 .calendar-compact-left { 80 width: 60% !important; 81 min-width: 400px; 82 } 83 84 .calendar-compact-right { 85 width: 40% !important; 86 min-width: 250px; 87 } 88} 89 90/* Small screens */ 91@media (max-width: 600px) { 92 .calendar-compact-container { 93 font-size: 11px; 94 height: auto; 95 max-height: none; 96 } 97} 98 99/* Left side: Calendar - FLEXIBLE */ 100.calendar-compact-left { 101 flex: 1; 102 min-width: 400px; 103 border-right: 1px solid var(--border-main, #e0e0e0); 104 display: flex; 105 flex-direction: column; 106 background: var(--background-site); 107 overflow: hidden; 108} 109 110/* Right side: Event list - FLEXIBLE */ 111.calendar-compact-right { 112 flex: 0 0 300px; 113 min-width: 250px; 114 max-width: 400px; 115 display: flex; 116 flex-direction: column; 117 background: var(--background-site); 118 overflow: hidden; 119} 120 121/* Calendar header - COMPACT */ 122.calendar-compact-header { 123 display: flex; 124 align-items: center; 125 gap: 12px; 126 padding: 8px 12px; 127 background: var(--background-header); 128 color: var(--text-primary); 129 border-bottom: 1px solid var(--header-border, var(--border-main)); 130 box-shadow: var(--header-shadow, none); 131} 132 133/* Namespace filter indicator at top of calendar */ 134.calendar-namespace-filter { 135 display: flex; 136 align-items: center; 137 gap: 6px; 138 padding: 6px 10px; 139 background: var(--cell-bg, #e8f5e9); 140 border: 1px solid var(--border-color, #81c784); 141 border-radius: 4px; 142 margin: 8px 12px 0 12px; 143 font-size: 11px; 144} 145 146.namespace-filter-label { 147 color: var(--text-primary, #2e7d32); 148 font-weight: 600; 149} 150 151.namespace-filter-name { 152 background: var(--border-main, #00cc07); 153 color: var(--btn-text, white); 154 padding: 2px 6px; 155 border-radius: 3px; 156 font-weight: 500; 157 font-family: monospace; 158 font-size: 10px; 159} 160 161.namespace-filter-clear { 162 background: none; 163 border: none; 164 color: var(--border-main, #00cc07); 165 cursor: pointer; 166 font-size: 16px; 167 padding: 0; 168 width: 20px; 169 height: 20px; 170 display: flex; 171 align-items: center; 172 justify-content: center; 173 border-radius: 3px; 174 margin-left: auto; 175 transition: background 0.2s; 176} 177 178.namespace-filter-clear:hover { 179 background: var(--shadow-color, rgba(0, 204, 7, 0.1)); 180} 181 182.namespace-filter-badge { 183 position: relative; 184 padding-right: 24px !important; 185} 186 187.filter-clear-inline { 188 position: absolute; 189 right: 4px; 190 top: 50%; 191 transform: translateY(-50%); 192 background: none; 193 border: none; 194 color: var(--text-dim, #999); 195 padding: 0; 196 width: 16px; 197 height: 16px; 198 border-radius: 50%; 199 display: flex; 200 align-items: center; 201 justify-content: center; 202 transition: all 0.15s; 203 line-height: 1; 204} 205 206.filter-clear-inline:hover { 207 background: rgba(211, 47, 47, 0.1); 208 color: #d32f2f; 209} 210 211.calendar-compact-header h3 { 212 margin: 0; 213 font-size: 14px; 214 font-weight: 600; 215 color: var(--text-primary, #2c3e50); 216 flex: 1; 217 text-align: center; 218} 219 220.calendar-month-picker { 221 cursor: pointer; 222 user-select: none; 223 transition: all 0.15s; 224 padding: 4px 8px; 225 border-radius: 4px; 226} 227 228.calendar-month-picker:hover { 229 background: var(--background-alt, #f0f0f0); 230 color: var(--text-bright, #008800); 231} 232 233.month-picker-overlay { 234 position: fixed; 235 top: 0; 236 left: 0; 237 right: 0; 238 bottom: 0; 239 background: rgba(0, 0, 0, 0.5); 240 display: flex; 241 align-items: center; 242 justify-content: center; 243 z-index: 10000; 244} 245 246.month-picker-dialog { 247 background: var(--background-site, white); 248 border: 2px solid var(--border-main, #d0d0d0); 249 border-radius: 8px; 250 padding: 20px; 251 box-shadow: 0 0 20px var(--shadow-color, rgba(0, 0, 0, 0.3)); 252 min-width: 300px; 253} 254 255.month-picker-dialog h4 { 256 margin: 0 0 16px 0; 257 font-size: 16px; 258 font-weight: 600; 259 color: var(--text-primary, #2c3e50); 260} 261 262.month-picker-selects { 263 display: flex; 264 gap: 12px; 265 margin-bottom: 16px; 266} 267 268.month-picker-select { 269 flex: 1; 270 padding: 8px 12px; 271 border: 1px solid var(--border-main, #d0d0d0); 272 border-radius: 4px; 273 font-size: 14px; 274 background: var(--cell-bg, white); 275 color: var(--text-primary, #333); 276 cursor: pointer; 277} 278 279.month-picker-select:focus { 280 outline: none; 281 border-color: var(--border-main, #008800); 282 box-shadow: 0 0 0 2px var(--shadow-color, rgba(0, 136, 0, 0.1)); 283} 284 285.month-picker-actions { 286 display: flex; 287 gap: 8px; 288 justify-content: flex-end; 289} 290 291.cal-nav-btn { 292 background: var(--border-main); 293 border: 1px solid var(--border-color); 294 color: var(--btn-text, var(--background-site)); 295 width: 28px; 296 height: 28px; 297 border-radius: 4px; 298 cursor: pointer; 299 font-size: 16px; 300 transition: all 0.15s; 301 padding: 0; 302 display: flex; 303 align-items: center; 304 justify-content: center; 305} 306 307.cal-nav-btn:hover { 308 opacity: 0.9; 309} 310 311.cal-today-btn { 312 background: var(--border-main); 313 border: 1px solid var(--border-color); 314 color: var(--btn-text, var(--background-site)); 315 font-size: 11px; 316 font-weight: 600; 317 padding: 4px 10px; 318 border-radius: 4px; 319 cursor: pointer; 320 transition: all 0.15s; 321} 322 323.cal-today-btn:hover { 324 opacity: 0.9; 325} 326 327/* Calendar grid - Excel-like sizing - RESPONSIVE */ 328.calendar-compact-grid { 329 width: 100%; 330 border-collapse: collapse; 331 table-layout: fixed; 332 flex: 1; 333 background: var(--grid-bg, var(--background-site)); 334} 335 336.calendar-compact-grid thead th { 337 height: 22px; 338 background: var(--background-header); 339 color: var(--text-primary); 340 border-bottom: 1px solid var(--border-color, #d0d0d0); 341 border-right: 1px solid var(--border-color, #e8e8e8); 342 font-size: 10px; 343 font-weight: 600; 344 text-align: center; 345 padding: 0; 346} 347 348.calendar-compact-grid thead th:last-child { 349 border-right: none; 350} 351 352.calendar-compact-grid tbody td { 353 height: 58px; 354 min-height: 40px; 355 border: 1px solid var(--border-color, #e8e8e8); 356 border-top: none; 357 border-left: none; 358 background-color: var(--cell-bg, var(--background-site)); 359 color: var(--text-primary); 360 cursor: pointer; 361 padding: 3px; 362 position: relative; 363 vertical-align: top; 364 transition: background 0.1s; 365} 366 367/* Smaller cells on mobile */ 368@media (max-width: 600px) { 369 .calendar-compact-grid tbody td { 370 height: 45px; 371 min-height: 35px; 372 padding: 2px; 373 } 374 375 .calendar-compact-grid thead th { 376 height: 18px; 377 font-size: 9px; 378 } 379} 380 381.calendar-compact-grid tbody td:first-child { 382 border-left: 1px solid var(--border-color, #e8e8e8); 383} 384 385.calendar-compact-grid tbody td:hover { 386 background-color: var(--background-alt); 387} 388 389.cal-empty { 390 background: var(--background-site) !important; 391 cursor: default !important; 392} 393 394.cal-empty:hover { 395 background: var(--background-site) !important; 396} 397 398.cal-today { 399 background: var(--cell-today-bg) !important; 400 border: 2px solid var(--border-main) !important; 401} 402 403.cal-today:hover { 404 background: var(--cell-today-bg) !important; 405} 406 407.cal-has-events { 408} 409 410.cal-has-events:hover { 411} 412 413.day-num { 414 display: inline-block; 415 font-size: 11px; 416 font-weight: 500; 417 color: var(--text-primary); 418 padding: 1px 3px; 419} 420 421.day-num-today { 422 background: var(--border-main); 423 color: var(--btn-text, var(--background-site)); 424 border-radius: 2px; 425 font-weight: 600; 426} 427 428.cal-today .day-num { 429 border-radius: 2px; 430 font-weight: 600; 431} 432 433.event-indicators { 434 position: absolute; 435 left: 20px; 436 right: 0; 437 top: 20px; 438 bottom: 2px; 439 display: flex; 440 flex-direction: column; 441 gap: 2px; 442 pointer-events: none; 443} 444 445.event-bar { 446 width: 100%; 447 min-height: 6px; 448 height: 6px; 449 border-radius: 2px; 450 cursor: pointer; 451 pointer-events: auto; 452 transition: all 0.2s; 453 box-shadow: 0 1px 2px rgba(0,0,0,0.1); 454 position: relative; 455} 456 457.event-bar:hover { 458 transform: scaleY(1.3); 459 box-shadow: 0 2px 4px rgba(0,0,0,0.2); 460 z-index: 10; 461} 462 463.event-bar-no-time { 464 /* Events without time appear at top */ 465 order: -1; 466 opacity: 0.9; 467} 468 469.event-bar-timed { 470 /* Events with time are sorted by time */ 471 opacity: 0.95; 472} 473 474/* Multi-day event styling - creates visual continuity */ 475.event-bar-continues { 476 /* Event continues from previous day - extend left to cell edge */ 477 border-top-left-radius: 0; 478 border-bottom-left-radius: 0; 479 margin-left: -20px; 480 padding-left: 20px; 481} 482 483.event-bar-continuing { 484 /* Event continues to next day - extend right to cell edge */ 485 border-top-right-radius: 0; 486 border-bottom-right-radius: 0; 487 margin-right: -2px; 488 padding-right: 2px; 489} 490 491.event-bar-continues.event-bar-continuing { 492 /* Event continues both ways (middle of span) - no border radius, extends both sides */ 493 border-radius: 0; 494} 495 496/* Old event dot - removing */ 497.event-dot { 498 display: none; 499} 500 501/* Event list header - COMPACT */ 502.event-list-header { 503 display: flex; 504 align-items: center; 505 justify-content: space-between; 506 padding: 8px 10px; 507 border-bottom: 1px solid var(--header-border, var(--border-main, #e0e0e0)); 508 background: var(--background-header); 509} 510 511.event-list-header-content { 512 display: flex; 513 align-items: center; 514 gap: 6px; 515 flex: 1; 516} 517 518.event-list-header h4 { 519 margin: 0; 520 font-size: 12px; 521 font-weight: 600; 522 color: var(--text-primary); 523} 524 525.namespace-badge { 526 background: var(--border-main, #e8f5e9); 527 color: var(--btn-text, var(--background-site)); 528 padding: 2px 6px; 529 border-radius: 10px; 530 font-size: 9px; 531 font-weight: 600; 532 text-transform: uppercase; 533 letter-spacing: 0.3px; 534} 535 536/* Event search bar - inline in header */ 537.event-search-container-inline { 538 position: relative; 539 flex: 1; 540 max-width: 200px; 541 margin: 0 8px; 542} 543 544.event-search-input-inline { 545 width: 100%; 546 padding: 4px 24px 4px 8px; 547 border: 1px solid var(--border-color, #d0d0d0); 548 border-radius: 3px; 549 font-size: 11px; 550 outline: none; 551 transition: border-color 0.2s, box-shadow 0.2s; 552 background: var(--cell-bg); 553 color: var(--text-primary); 554} 555 556.event-search-input-inline:focus { 557 border-color: var(--border-main, #00cc07); 558 box-shadow: 0 0 0 2px var(--shadow-color, rgba(0, 204, 7, 0.1)); 559} 560 561.event-search-input-inline::placeholder { 562 color: var(--text-dim); 563 font-size: 10px; 564} 565 566.event-search-clear-inline { 567 position: absolute; 568 right: 4px; 569 top: 50%; 570 transform: translateY(-50%); 571 background: none; 572 border: none; 573 color: var(--text-dim); 574 cursor: pointer; 575 padding: 2px 4px; 576 font-size: 12px; 577 line-height: 1; 578 transition: color 0.2s; 579} 580 581.event-search-clear-inline:hover { 582 color: var(--text-primary); 583} 584 585.no-search-results { 586 text-align: center; 587 color: var(--text-dim); 588 font-size: 12px; 589 padding: 20px; 590 font-style: italic; 591} 592 593.add-event-compact { 594 background: var(--border-main); 595 color: var(--btn-text, var(--background-site)); 596 border: none; 597 padding: 4px 8px; 598 border-radius: 3px; 599 font-size: 11px; 600 font-weight: 500; 601 cursor: pointer; 602 transition: background 0.15s; 603} 604 605.add-event-compact:hover { 606 opacity: 0.9; 607} 608 609/* Event list scrollable area - COMPACT */ 610.event-list-compact { 611 flex: 1; 612 overflow-y: auto; 613 padding: 6px; 614 background: var(--background-site); 615} 616 617.event-list-compact::-webkit-scrollbar { 618 width: 6px; 619} 620 621.event-list-compact::-webkit-scrollbar-track { 622 background: var(--background-site, #f5f5f5); 623} 624 625.event-list-compact::-webkit-scrollbar-thumb { 626 background: var(--border-color, #ccc); 627 border-radius: 3px; 628} 629 630.event-list-compact::-webkit-scrollbar-thumb:hover { 631 background: var(--text-dim, #aaa); 632} 633 634/* Event items in list - SUPER COMPACT with checkbox on right */ 635.event-compact-item { 636 display: flex; 637 align-items: flex-start; 638 margin-bottom: 4px; 639 background-color: var(--cell-bg, var(--background-site)); 640 color: var(--text-primary); 641 border: 1px solid var(--border-color, #e0e0e0); 642 border-left: 3px solid #3498db; 643 border-radius: 3px; 644 padding: 5px 6px; 645 transition: box-shadow 0.15s, background 0.15s, transform 0.15s; 646 gap: 6px; 647 position: relative; 648} 649 650.event-compact-item:hover { 651 box-shadow: 0 1px 3px var(--shadow-color, rgba(0,0,0,0.08)); 652 background-color: var(--background-alt); 653} 654 655.event-highlighted { 656 animation: highlightPulse 0.6s ease-in-out; 657 background: #fff9e6 !important; 658 box-shadow: 0 2px 8px rgba(255, 193, 7, 0.4) !important; 659} 660 661@keyframes highlightPulse { 662 0% { 663 background: #ffffff; 664 box-shadow: 0 0 0 rgba(255, 193, 7, 0); 665 } 666 50% { 667 background: #fffbea; 668 box-shadow: 0 4px 12px rgba(255, 193, 7, 0.6); 669 transform: scale(1.02); 670 } 671 100% { 672 background: #fff9e6; 673 box-shadow: 0 2px 8px rgba(255, 193, 7, 0.4); 674 transform: scale(1); 675 } 676} 677 678.event-completed { 679 opacity: 0.55; 680 background: var(--background-alt, #f5f5f5); 681} 682 683.event-completed .event-title-compact { 684 text-decoration: line-through; 685 color: var(--text-dim, #999); 686} 687 688.event-past { 689 opacity: 0.35; 690 background: var(--background-site, #fafafa); 691 font-size: 10px; 692 padding: 3px 6px; 693 margin-bottom: 2px; 694 cursor: pointer; 695 transition: all 0.2s ease; 696} 697 698.event-past:hover { 699 opacity: 0.6; 700 background: var(--background-alt, #f5f5f5); 701} 702 703.event-past-expanded { 704 opacity: 0.8 !important; 705 background: var(--cell-bg, #f9f9f9) !important; 706 padding: 5px 6px !important; 707 font-size: 12px !important; 708} 709 710.event-past-expanded .event-title-compact { 711 font-size: 12px !important; 712 color: var(--text-dim, #666) !important; 713} 714 715.event-past-expanded .event-date-time { 716 font-size: 11px !important; 717 color: var(--text-dim, #888) !important; 718} 719 720.event-past .event-title-compact { 721 font-size: 10px; 722 color: var(--text-dim, #aaa); 723 font-weight: 400; 724} 725 726.event-past .event-date-time { 727 font-size: 9px; 728 color: var(--text-dim, #bbb); 729} 730 731.event-past .event-action-btn { 732 font-size: 11px; 733 opacity: 0.3; 734} 735 736.event-past .event-action-btn:hover { 737 opacity: 0.7; 738} 739 740.event-today-badge { 741 background: var(--border-main, #9b59b6); 742 color: var(--btn-text, white); 743 padding: 1px 4px; 744 border-radius: 3px; 745 font-size: 9px; 746 font-weight: 600; 747 letter-spacing: 0.5px; 748 display: inline-block; 749 vertical-align: middle; 750 margin-left: auto; /* Right-align */ 751 float: right; /* Force to right side */ 752} 753 754.event-pastdue-badge { 755 background: #ff9800; 756 color: #fff; 757 padding: 1px 4px; 758 border-radius: 3px; 759 font-size: 9px; 760 font-weight: 600; 761 letter-spacing: 0.5px; 762 display: inline-block; 763 vertical-align: middle; 764 margin-left: auto; /* Right-align */ 765 float: right; /* Force to right side */ 766} 767 768.event-pastdue { 769 border: 2px solid #e74c3c !important; 770 border-radius: 4px; 771 opacity: 1 !important; 772} 773 774.event-namespace-badge { 775 background: var(--border-main, #008800); 776 color: var(--btn-text, white); 777 padding: 1px 4px; 778 border-radius: 3px; 779 font-size: 9px; 780 font-weight: 500; 781 display: inline-block; 782 vertical-align: middle; 783 margin-left: 4px; 784 cursor: pointer; 785 transition: background 0.2s; 786} 787 788.event-namespace-badge:hover { 789 opacity: 0.85; 790} 791 792.event-conflict-badge { 793 background: #ff9800; 794 color: white; 795 padding: 0px 4px; 796 border-radius: 2px; 797 font-size: 9px; 798 display: inline-block; 799 vertical-align: middle; 800 margin-left: 3px; 801 cursor: help; 802 animation: pulse-warning 2s infinite; 803 line-height: 14px; 804} 805 806@keyframes pulse-warning { 807 0%, 100% { 808 opacity: 1; 809 } 810 50% { 811 opacity: 0.7; 812 } 813} 814 815.event-conflict-badge:hover { 816 background: #f57c00; 817 animation: none; 818} 819 820/* Custom conflict tooltip - SMALLER FOR MAIN CALENDAR */ 821.conflict-tooltip { 822 position: fixed; 823 z-index: 10000; 824 background: white; 825 border: 1px solid #ff9800; 826 border-radius: 3px; 827 box-shadow: 0 2px 6px rgba(0,0,0,0.2); 828 padding: 0; 829 min-width: 120px; 830 max-width: 200px; 831 opacity: 0; 832 transition: opacity 0.2s; 833 pointer-events: none; 834} 835 836/* Custom tooltip that appears above and to the left - FIXED POSITION */ 837[data-tooltip] { 838 position: relative; 839 cursor: help; 840} 841 842[data-tooltip]:before { 843 content: attr(data-tooltip); 844 position: fixed; 845 padding: 3px 6px; 846 background: rgba(0, 0, 0, 0.95); 847 color: #fff; 848 font-size: 9px; 849 line-height: 1.3; 850 white-space: pre-line; 851 border-radius: 3px; 852 opacity: 0; 853 pointer-events: none; 854 transition: opacity 0.2s; 855 min-width: 120px; 856 max-width: 200px; 857 z-index: 10000; 858 text-align: left; 859 box-shadow: 0 2px 8px rgba(0,0,0,0.3); 860} 861 862[data-tooltip]:hover:before { 863 opacity: 1; 864} 865 866/* Pink theme tooltips - with hearts! */ 867.sidebar-pink [data-tooltip]:before { 868 background: linear-gradient(135deg, #ff1493 0%, #ff69b4 100%); 869 color: #fff; 870 border: 2px solid #ff85c1; 871 box-shadow: 0 0 15px rgba(255, 20, 147, 0.6), 0 4px 12px rgba(0, 0, 0, 0.4); 872 font-weight: 600; 873} 874 875.sidebar-pink [data-tooltip]:after { 876 content: ''; 877 position: fixed; 878 font-size: 12px; 879 opacity: 0; 880 pointer-events: none; 881 transition: opacity 0.2s; 882 z-index: 10001; 883 filter: drop-shadow(0 0 3px rgba(255, 20, 147, 0.8)); 884} 885 886.sidebar-pink [data-tooltip]:hover:after { 887 opacity: 1; 888} 889 890/* Position data-tooltip with JavaScript for no cutoff */ 891.data-tooltip-positioned:before { 892 /* Position set by JavaScript */ 893} 894 895/* Allow sidebar to overflow for tooltips */ 896.sidebar-widget, 897.sidebar-matrix { 898 overflow: visible !important; 899} 900 901.conflict-tooltip-header { 902 background: #ff9800; 903 color: white; 904 padding: 4px 8px; 905 font-weight: 600; 906 font-size: 10px; 907 border-radius: 2px 2px 0 0; 908} 909 910.conflict-tooltip-body { 911 padding: 6px 8px; 912 font-size: 9px; 913 line-height: 1.4; 914} 915 916.conflict-item { 917 padding: 2px 0; 918 color: var(--text-primary, #333); 919 border-bottom: 1px solid var(--border-color, #f0f0f0); 920 font-size: 9px; 921} 922 923.conflict-item:last-child { 924 border-bottom: none; 925} 926 927.event-info { 928 flex: 1; 929 min-width: 0; 930 padding-right: 60px; 931 text-align: left; 932} 933 934.event-title-row { 935 display: flex; 936 align-items: center; 937 gap: 4px; 938} 939 940.event-title-compact { 941 font-size: 12px; 942 font-weight: 600; 943 color: var(--text-primary, #2c3e50); 944 overflow: hidden; 945 text-overflow: ellipsis; 946 white-space: nowrap; 947 text-align: left; 948} 949 950.event-meta-compact { 951 font-size: 10px; 952 color: var(--text-dim, #666); 953 margin-top: 1px; 954 text-align: left; 955} 956 957.event-date-time { 958 font-weight: 500; 959} 960 961.event-desc-compact { 962 font-size: 10px; 963 color: var(--text-dim, #666); 964 line-height: 1.4; 965 margin-top: 2px; 966 text-align: left; 967 word-wrap: break-word; 968 overflow-wrap: break-word; 969} 970 971.event-desc-compact img.event-image { 972 max-width: 100%; 973 height: auto; 974 margin: 4px 0; 975 border-radius: 3px; 976 display: block; 977} 978 979.event-desc-compact a { 980 color: var(--border-main, #008800); 981 text-decoration: none; 982 border-bottom: 1px dotted var(--border-main, #008800); 983} 984 985.event-desc-compact a:hover { 986 opacity: 0.8; 987 border-bottom-style: solid; 988} 989 990.event-desc-compact strong, 991.event-desc-compact b { 992 font-weight: 600; 993 color: var(--text-primary, #333); 994} 995 996.event-desc-compact em, 997.event-desc-compact i { 998 font-style: italic; 999} 1000 1001.event-desc-compact code { 1002 background: var(--background-alt, #f5f5f5); 1003 padding: 1px 3px; 1004 border-radius: 2px; 1005 font-family: monospace; 1006 font-size: 9px; 1007} 1008 1009.event-actions-compact { 1010 position: absolute; 1011 top: 5px; 1012 right: 24px; 1013 display: flex; 1014 gap: 2px; 1015 flex-shrink: 0; 1016} 1017 1018.event-action-btn { 1019 background: none; 1020 border: none; 1021 font-size: 14px; 1022 cursor: pointer; 1023 padding: 2px; 1024 opacity: 0.5; 1025 transition: opacity 0.15s, transform 0.15s; 1026} 1027 1028.event-action-btn:hover { 1029 opacity: 1; 1030 transform: scale(1.15); 1031} 1032 1033.task-checkbox { 1034 position: absolute; 1035 top: 5px; 1036 right: 6px; 1037 width: 16px; 1038 height: 16px; 1039 margin: 0; 1040 cursor: pointer; 1041 flex-shrink: 0; 1042} 1043 1044.no-events-msg { 1045 text-align: center; 1046 color: var(--text-dim, #999); 1047 font-size: 12px; 1048 font-style: italic; 1049 padding: 40px 20px; 1050} 1051 1052/* Sleek Event Dialog - FULLY RESPONSIVE */ 1053.event-dialog-compact { 1054 position: fixed; 1055 top: 0; 1056 left: 0; 1057 width: 100%; 1058 height: 100%; 1059 z-index: 9999; 1060 display: flex; 1061 align-items: center; 1062 justify-content: center; 1063 animation: fadeIn 0.2s ease; 1064 padding: 20px; 1065 box-sizing: border-box; 1066 overflow-y: auto; 1067} 1068 1069@keyframes fadeIn { 1070 from { opacity: 0; } 1071 to { opacity: 1; } 1072} 1073 1074.dialog-content-sleek { 1075 position: relative; 1076 background: var(--background-site, #ffffff); 1077 border: 2px solid var(--border-main, #d0d0d0); 1078 box-shadow: 0 0 20px var(--shadow-color, rgba(0,0,0,0.2)); 1079 width: 100%; 1080 max-width: 450px; 1081 max-height: calc(100vh - 40px); 1082 border-radius: 8px; 1083 z-index: 10000; 1084 animation: slideUp 0.3s ease; 1085 overflow: hidden; 1086 display: flex; 1087 flex-direction: column; 1088 margin: auto; 1089} 1090 1091/* Mobile responsive dialog */ 1092@media (max-width: 768px) { 1093 .event-dialog-compact { 1094 padding: 10px; 1095 } 1096 1097 .dialog-content-sleek { 1098 max-width: 100%; 1099 width: calc(100% - 20px); 1100 max-height: calc(100vh - 20px); 1101 } 1102} 1103 1104@media (max-width: 480px) { 1105 .event-dialog-compact { 1106 padding: 0; 1107 align-items: flex-start; 1108 } 1109 1110 .dialog-content-sleek { 1111 width: 100%; 1112 max-width: 100%; 1113 max-height: 100vh; 1114 border-radius: 0; 1115 margin: 0; 1116 } 1117} 1118 1119@keyframes slideUp { 1120 from { 1121 transform: translateY(20px); 1122 opacity: 0; 1123 } 1124 to { 1125 transform: translateY(0); 1126 opacity: 1; 1127 } 1128} 1129 1130.dialog-header-sleek { 1131 display: flex; 1132 align-items: center; 1133 justify-content: space-between; 1134 padding: 10px 14px; 1135 background: var(--background-header, #2c3e50); 1136 color: var(--text-primary, white); 1137 border-bottom: 1px solid var(--border-main, transparent); 1138 cursor: move; 1139 flex-shrink: 0; 1140} 1141 1142.dialog-drag-handle { 1143 cursor: move; 1144} 1145 1146.dialog-header-sleek h3 { 1147 margin: 0; 1148 font-size: 15px; 1149 font-weight: 600; 1150 color: var(--text-primary, white); 1151} 1152 1153.dialog-close-btn { 1154 background: rgba(255,255,255,0.2); 1155 border: none; 1156 color: var(--text-primary, white); 1157 font-size: 22px; 1158 width: 28px; 1159 height: 28px; 1160 border-radius: 50%; 1161 cursor: pointer; 1162 display: flex; 1163 align-items: center; 1164 justify-content: center; 1165 transition: all 0.2s; 1166 line-height: 1; 1167 padding: 0; 1168 flex-shrink: 0; 1169} 1170 1171.dialog-close-btn:hover { 1172 background: rgba(255,255,255,0.3); 1173 transform: scale(1.1); 1174} 1175 1176.sleek-form { 1177 padding: 10px 12px; 1178 overflow-y: auto; 1179 overflow-x: hidden; 1180 flex: 1; 1181 max-height: calc(100vh - 160px); 1182 background: var(--background-site, #fff); 1183} 1184 1185/* Ensure form is scrollable on small screens */ 1186@media (max-height: 600px) { 1187 .sleek-form { 1188 max-height: calc(100vh - 120px); 1189 } 1190} 1191 1192@media (max-height: 500px) { 1193 .sleek-form { 1194 max-height: calc(100vh - 100px); 1195 } 1196} 1197 1198.form-field { 1199 margin-bottom: 6px; 1200} 1201 1202/* Compact form elements */ 1203.input-compact { 1204 height: 30px !important; 1205 padding: 4px 8px !important; 1206 font-size: 11px !important; 1207} 1208 1209.textarea-compact { 1210 min-height: 28px !important; 1211 padding: 4px 8px !important; 1212 font-size: 11px !important; 1213 line-height: 1.3 !important; 1214} 1215 1216.field-label-compact { 1217 font-size: 10px !important; 1218 margin-bottom: 2px !important; 1219 font-weight: 500; 1220 color: var(--text-primary, #555); 1221} 1222 1223.form-field-checkbox-compact { 1224 padding: 4px 8px !important; 1225 margin-bottom: 6px !important; 1226} 1227 1228.checkbox-label-compact { 1229 font-size: 10px !important; 1230 gap: 4px !important; 1231} 1232 1233.checkbox-label-compact input[type="checkbox"] { 1234 width: 13px !important; 1235 height: 13px !important; 1236} 1237 1238.color-picker-compact { 1239 height: 30px !important; 1240} 1241 1242/* Responsive form fields */ 1243@media (max-width: 480px) { 1244 .form-field { 1245 margin-bottom: 8px; 1246 } 1247} 1248 1249.form-field-checkbox { 1250 background: var(--background-site, #f1f8f4); 1251 padding: 8px; 1252 border-radius: 4px; 1253 border: 1px solid var(--border-color, #008800); 1254} 1255 1256.checkbox-label { 1257 display: flex; 1258 align-items: center; 1259 gap: 6px; 1260 cursor: pointer; 1261 font-size: 11px; 1262 font-weight: 500; 1263 color: var(--text-primary, #388e3c); 1264} 1265 1266.checkbox-label input[type="checkbox"] { 1267 width: 15px; 1268 height: 15px; 1269 cursor: pointer; 1270 accent-color: var(--border-main); 1271} 1272 1273.recurring-options { 1274 background: var(--background-site, #f1f8f4); 1275 padding: 8px; 1276 border-radius: 4px; 1277 border: 1px solid var(--border-color, #81c784); 1278 border-left: 2px solid var(--border-main, #008800); 1279 margin-left: 4px; 1280 margin-top: 8px; 1281} 1282 1283.form-row-group { 1284 display: grid; 1285 grid-template-columns: 1fr 1fr; 1286 gap: 10px; 1287 margin-bottom: 10px; 1288} 1289 1290@media (max-width: 768px) { 1291 .form-row-group { 1292 grid-template-columns: 1fr; 1293 gap: 8px; 1294 } 1295} 1296 1297.field-label { 1298 display: block; 1299 font-size: 11px; 1300 font-weight: 600; 1301 color: var(--text-primary, #2c3e50); 1302 margin-bottom: 5px; 1303 text-transform: uppercase; 1304 letter-spacing: 0.3px; 1305} 1306 1307@media (max-width: 480px) { 1308 .field-label { 1309 font-size: 10px; 1310 } 1311} 1312 1313.input-sleek { 1314 width: 100%; 1315 padding: 8px 10px; 1316 border: 2px solid var(--border-color, #e0e0e0); 1317 border-radius: 4px; 1318 font-size: 13px; 1319 font-family: inherit; 1320 transition: all 0.2s; 1321 background: var(--cell-bg, #fafafa); 1322 color: var(--text-primary, #333); 1323 box-sizing: border-box; 1324} 1325 1326.input-sleek:focus { 1327 outline: none; 1328 border-color: var(--border-main, #008800); 1329 background: var(--cell-bg, white); 1330 box-shadow: 0 0 0 3px var(--shadow-color, rgba(33, 150, 243, 0.1)); 1331} 1332 1333.input-date { 1334 font-weight: 500; 1335 color: var(--text-primary, #2c3e50); 1336 cursor: pointer; 1337} 1338 1339.input-date::-webkit-calendar-picker-indicator { 1340 cursor: pointer; 1341 font-size: 14px; 1342 padding: 2px; 1343} 1344 1345.textarea-sleek { 1346 resize: vertical; 1347 min-height: 60px; 1348 line-height: 1.4; 1349} 1350 1351.color-picker-container { 1352 display: flex; 1353 align-items: center; 1354 gap: 10px; 1355} 1356 1357.color-picker-wrapper { 1358 display: flex; 1359 align-items: center; 1360 gap: 8px; 1361} 1362 1363.color-picker-wrapper .color-select { 1364 flex: 1; 1365} 1366 1367.color-picker-input { 1368 width: 45px; 1369 height: 38px; 1370 border: 2px solid var(--border-color, #e0e0e0); 1371 border-radius: 6px; 1372 cursor: pointer; 1373 padding: 2px; 1374 display: none; 1375} 1376 1377.color-picker-input:hover { 1378 border-color: var(--border-main, #4CAF50); 1379} 1380 1381.input-color-sleek { 1382 width: 50px; 1383 height: 38px; 1384 border: 2px solid var(--border-color, #e0e0e0); 1385 border-radius: 6px; 1386 cursor: pointer; 1387 transition: all 0.2s; 1388} 1389 1390.input-color-sleek:hover { 1391 border-color: var(--border-main, #008800); 1392 transform: scale(1.05); 1393} 1394 1395.color-label { 1396 font-size: 11px; 1397 color: var(--text-dim, #666); 1398} 1399 1400.form-row-group { 1401 display: grid; 1402 grid-template-columns: 2fr 1fr; 1403 gap: 16px; 1404 margin-bottom: 20px; 1405} 1406 1407.field-label { 1408 display: block; 1409 font-size: 13px; 1410 font-weight: 600; 1411 color: var(--text-primary, #2c3e50); 1412 margin-bottom: 8px; 1413 text-transform: uppercase; 1414 letter-spacing: 0.5px; 1415} 1416 1417.input-sleek { 1418 width: 100%; 1419 padding: 12px 16px; 1420 border: 2px solid var(--border-color, #e0e0e0); 1421 border-radius: 8px; 1422 font-size: 15px; 1423 font-family: inherit; 1424 transition: all 0.2s; 1425 background: var(--cell-bg, #fafafa); 1426 color: var(--text-primary, #333); 1427 box-sizing: border-box; 1428} 1429 1430.input-sleek:focus { 1431 outline: none; 1432 border-color: var(--border-main, #667eea); 1433 background: var(--cell-bg, white); 1434 box-shadow: 0 0 0 3px var(--shadow-color, rgba(102, 126, 234, 0.1)); 1435} 1436 1437.input-date { 1438 font-weight: 500; 1439 color: var(--text-primary, #2c3e50); 1440 cursor: pointer; 1441} 1442 1443.input-date::-webkit-calendar-picker-indicator { 1444 cursor: pointer; 1445 font-size: 18px; 1446 padding: 4px; 1447} 1448 1449.textarea-sleek { 1450 resize: vertical; 1451 min-height: 80px; 1452 line-height: 1.5; 1453} 1454 1455.color-picker-container { 1456 display: flex; 1457 align-items: center; 1458 gap: 12px; 1459} 1460 1461.input-color-sleek { 1462 width: 60px; 1463 height: 44px; 1464 border: 2px solid var(--border-color, #e0e0e0); 1465 border-radius: 8px; 1466 cursor: pointer; 1467 transition: all 0.2s; 1468} 1469 1470.input-color-sleek:hover { 1471 border-color: var(--border-main, #667eea); 1472 transform: scale(1.05); 1473} 1474 1475.color-label { 1476 font-size: 13px; 1477 color: var(--text-dim, #666); 1478} 1479 1480.form-field-checkbox { 1481 background: var(--background-site, #f1f8f4); 1482 padding: 12px; 1483 border-radius: 6px; 1484 border: 1px solid var(--border-color, #008800); 1485} 1486 1487.checkbox-label { 1488 display: flex; 1489 align-items: center; 1490 gap: 8px; 1491 cursor: pointer; 1492 font-size: 13px; 1493 font-weight: 500; 1494 color: var(--text-primary, #388e3c); 1495} 1496 1497.checkbox-label input[type="checkbox"] { 1498 width: 18px; 1499 height: 18px; 1500 cursor: pointer; 1501} 1502 1503.form-row-group { 1504 display: grid; 1505 grid-template-columns: 1fr 1fr; 1506 gap: 12px; 1507 margin-bottom: 16px; 1508} 1509 1510@media (max-width: 768px) { 1511 .form-row-group { 1512 grid-template-columns: 1fr; 1513 } 1514} 1515 1516.dialog-actions-sleek { 1517 display: flex; 1518 gap: 8px; 1519 padding: 12px 14px; 1520 background: var(--background-site, #f8f9fa); 1521 border-top: 1px solid var(--border-color, #e0e0e0); 1522 justify-content: flex-end; 1523 flex-shrink: 0; 1524} 1525 1526/* Ensure buttons are visible on small screens */ 1527@media (max-width: 480px) { 1528 .dialog-actions-sleek { 1529 padding: 10px; 1530 } 1531 1532 .btn-sleek { 1533 flex: 1; 1534 justify-content: center; 1535 } 1536} 1537 1538.btn-sleek { 1539 padding: 7px 14px; 1540 border: none; 1541 border-radius: 4px; 1542 font-size: 12px; 1543 font-weight: 600; 1544 cursor: pointer; 1545 transition: all 0.2s; 1546 display: inline-flex; 1547 align-items: center; 1548 gap: 4px; 1549} 1550 1551.btn-cancel-sleek { 1552 background: var(--cell-bg, #e0e0e0); 1553 color: var(--text-primary, #555); 1554 border: 1px solid var(--border-color, #d0d0d0); 1555} 1556 1557.btn-cancel-sleek:hover { 1558 opacity: 0.85; 1559} 1560 1561.btn-save-sleek { 1562 background: var(--border-main, #008800); 1563 color: var(--btn-text, white); 1564 border: 1px solid var(--border-main, #008800); 1565 box-shadow: 0 2px 4px var(--shadow-color, rgba(33, 150, 243, 0.3)); 1566} 1567 1568.btn-save-sleek:hover { 1569 opacity: 0.9; 1570 box-shadow: 0 4px 8px var(--shadow-color, rgba(33, 150, 243, 0.4)); 1571} 1572 1573.btn-save-sleek:active { 1574 transform: translateY(1px); 1575} 1576 1577/* Day popup */ 1578.day-popup { 1579 position: fixed; 1580 top: 0; 1581 left: 0; 1582 width: 100%; 1583 height: 100%; 1584 z-index: 10000; 1585 display: flex; 1586 align-items: center; 1587 justify-content: center; 1588 padding: 20px; 1589 box-sizing: border-box; 1590} 1591 1592.day-popup-overlay { 1593 position: absolute; 1594 top: 0; 1595 left: 0; 1596 width: 100%; 1597 height: 100%; 1598 background: rgba(0,0,0,0.5); 1599} 1600 1601.day-popup-content { 1602 position: relative; 1603 background: var(--background-site, white); 1604 border: 2px solid var(--border-main, #d0d0d0); 1605 box-shadow: 0 0 20px var(--shadow-color, rgba(0,0,0,0.3)); 1606 width: 100%; 1607 max-width: 450px; 1608 max-height: calc(100vh - 40px); 1609 border-radius: 8px; 1610 z-index: 10001; 1611 display: flex; 1612 flex-direction: column; 1613} 1614 1615/* Responsive day popup */ 1616@media (max-width: 768px) { 1617 .day-popup { 1618 padding: 10px; 1619 } 1620 1621 .day-popup-content { 1622 max-width: 100%; 1623 max-height: calc(100vh - 20px); 1624 } 1625} 1626 1627@media (max-width: 480px) { 1628 .day-popup { 1629 padding: 0; 1630 } 1631 1632 .day-popup-content { 1633 width: 100%; 1634 max-width: 100%; 1635 max-height: 100vh; 1636 border-radius: 0; 1637 } 1638} 1639 1640.day-popup-header { 1641 display: flex; 1642 align-items: center; 1643 justify-content: space-between; 1644 padding: 10px 14px; 1645 border-bottom: 1px solid var(--border-main, #e0e0e0); 1646 background: var(--background-header, #fafafa); 1647 border-radius: 8px 8px 0 0; 1648} 1649 1650.day-popup-header h4 { 1651 margin: 0; 1652 font-size: 15px; 1653 font-weight: 600; 1654 color: var(--text-primary, #2c3e50); 1655} 1656 1657.popup-close { 1658 background: none; 1659 border: none; 1660 font-size: 24px; 1661 color: var(--text-primary, #999); 1662 cursor: pointer; 1663 width: 28px; 1664 height: 28px; 1665 display: flex; 1666 align-items: center; 1667 justify-content: center; 1668 border-radius: 4px; 1669 transition: all 0.15s; 1670 line-height: 1; 1671 padding: 0; 1672} 1673 1674.popup-close:hover { 1675 opacity: 0.7; 1676} 1677 1678.day-popup-body { 1679 flex: 1; 1680 overflow-y: auto; 1681 padding: 10px 14px; 1682 max-height: 400px; 1683 background: var(--background-site); 1684} 1685 1686.popup-events-list { 1687 display: flex; 1688 flex-direction: column; 1689 gap: 6px; 1690} 1691 1692.popup-continuation-notice { 1693 font-size: 10px; 1694 color: var(--text-dim, #666); 1695 background: var(--background-alt, #f0f0f0); 1696 padding: 3px 8px; 1697 border-radius: 3px; 1698 margin-bottom: 4px; 1699 border-left: 3px solid var(--border-main, #00cc07); 1700 font-weight: 500; 1701} 1702 1703.popup-event-item { 1704 display: flex; 1705 background: var(--cell-bg, #f8f9fa); 1706 border: 1px solid var(--border-color, #e0e0e0); 1707 border-radius: 4px; 1708 overflow: hidden; 1709 transition: box-shadow 0.15s; 1710} 1711 1712.popup-event-item:hover { 1713 box-shadow: 0 2px 6px rgba(0,0,0,0.1); 1714} 1715 1716.popup-event-content { 1717 flex: 1; 1718 padding: 6px 10px; 1719} 1720 1721.popup-event-main-row { 1722 display: flex; 1723 align-items: center; 1724 justify-content: space-between; 1725 gap: 8px; 1726} 1727 1728.popup-event-info-inline { 1729 display: flex; 1730 align-items: center; 1731 gap: 8px; 1732 flex: 1; 1733 min-width: 0; 1734} 1735 1736.popup-event-title { 1737 font-size: 13px; 1738 font-weight: 600; 1739 color: var(--text-primary, #2c3e50); 1740 white-space: nowrap; 1741 overflow: hidden; 1742 text-overflow: ellipsis; 1743 flex-shrink: 1; 1744} 1745 1746.popup-event-time { 1747 font-size: 11px; 1748 color: var(--text-dim, #008800); 1749 font-weight: 500; 1750 white-space: nowrap; 1751 flex-shrink: 0; 1752} 1753 1754.popup-event-multiday { 1755 font-size: 11px; 1756 color: var(--text-dim, #666); 1757 font-weight: 500; 1758 white-space: nowrap; 1759 flex-shrink: 0; 1760} 1761 1762.popup-event-namespace { 1763 font-size: 10px; 1764 color: var(--btn-text, #fff); 1765 background: var(--border-main, #008800); 1766 padding: 2px 6px; 1767 border-radius: 3px; 1768 font-weight: 500; 1769 white-space: nowrap; 1770 flex-shrink: 0; 1771} 1772 1773.popup-event-desc { 1774 font-size: 11px; 1775 color: var(--text-dim, #666); 1776 line-height: 1.4; 1777 margin-top: 4px; 1778 padding-left: 0; 1779} 1780 1781.popup-event-actions { 1782 display: flex; 1783 gap: 4px; 1784 flex-shrink: 0; 1785} 1786 1787.event-edit-btn, 1788.event-delete-btn { 1789 background: none; 1790 border: none; 1791 font-size: 16px; 1792 cursor: pointer; 1793 padding: 4px; 1794 border-radius: 3px; 1795 transition: background 0.15s; 1796 line-height: 1; 1797 width: 24px; 1798 height: 24px; 1799 display: flex; 1800 align-items: center; 1801 justify-content: center; 1802} 1803 1804.event-edit-btn:hover { 1805 background: var(--background-alt, #e8f5e9); 1806} 1807 1808.event-delete-btn:hover { 1809 background: var(--background-alt, #ffebee); 1810} 1811 1812.day-popup-footer { 1813 padding: 10px 14px; 1814 border-top: 1px solid var(--border-color, #e0e0e0); 1815 background: var(--background-site, #fafafa); 1816 border-radius: 0 0 8px 8px; 1817} 1818 1819.btn-add-event { 1820 width: 100%; 1821 background: var(--border-main, #008800); 1822 color: var(--btn-text, white); 1823 border: 1px solid var(--border-main, #008800); 1824 padding: 10px 16px; 1825 border-radius: 6px; 1826 font-size: 14px; 1827 font-weight: 500; 1828 cursor: pointer; 1829 transition: opacity 0.15s; 1830} 1831 1832.btn-add-event:hover { 1833 opacity: 0.9; 1834} 1835 1836.dialog-overlay { 1837 position: absolute; 1838 top: 0; 1839 left: 0; 1840 width: 100%; 1841 height: 100%; 1842 background: rgba(0,0,0,0.4); 1843} 1844 1845.dialog-content-compact { 1846 position: relative; 1847 background: var(--background-site, white); 1848 width: 400px; 1849 border-radius: 6px; 1850 box-shadow: 0 4px 12px var(--shadow-color, rgba(0,0,0,0.2)); 1851 padding: 20px; 1852 z-index: 10000; 1853} 1854 1855.dialog-content-compact h4 { 1856 margin: 0 0 16px 0; 1857 font-size: 16px; 1858 font-weight: 600; 1859 color: var(--text-primary, #2c3e50); 1860} 1861 1862.form-row { 1863 margin-bottom: 14px; 1864} 1865 1866.form-row-date { 1867 background: var(--background-site, #f1f8f4); 1868 padding: 10px; 1869 border-radius: 6px; 1870 border: 2px solid var(--border-main, #008800); 1871 margin-bottom: 18px; 1872} 1873 1874.form-row-date label { 1875 color: var(--text-primary, #388e3c); 1876 font-size: 13px; 1877} 1878 1879.form-row label { 1880 display: block; 1881 font-size: 12px; 1882 font-weight: 600; 1883 color: var(--text-primary, #555); 1884 margin-bottom: 4px; 1885} 1886 1887.form-row input[type="text"], 1888.form-row input[type="time"], 1889.form-row input[type="date"], 1890.form-row input[type="color"], 1891.form-row textarea { 1892 width: 100%; 1893 padding: 8px; 1894 border: 1px solid var(--border-color, #d0d0d0); 1895 border-radius: 4px; 1896 font-size: 13px; 1897 box-sizing: border-box; 1898 font-family: inherit; 1899 background: var(--cell-bg, #fff); 1900 color: var(--text-primary, #333); 1901} 1902 1903.form-row input[type="color"] { 1904 height: 36px; 1905 padding: 2px; 1906} 1907 1908.form-row textarea { 1909 resize: vertical; 1910} 1911 1912.dialog-actions { 1913 display: flex; 1914 gap: 8px; 1915 justify-content: flex-end; 1916 margin-top: 16px; 1917} 1918 1919.btn-save, 1920.btn-cancel { 1921 padding: 8px 16px; 1922 border: none; 1923 border-radius: 4px; 1924 font-size: 13px; 1925 font-weight: 500; 1926 cursor: pointer; 1927 transition: all 0.15s; 1928} 1929 1930.btn-save { 1931 background: var(--border-main, #008800); 1932 color: var(--btn-text, white); 1933} 1934 1935.btn-save:hover { 1936 opacity: 0.9; 1937} 1938 1939.btn-cancel { 1940 background: var(--cell-bg, #f5f5f5); 1941 color: var(--text-primary, #555); 1942 border: 1px solid var(--border-color, #d0d0d0); 1943} 1944 1945.btn-cancel:hover { 1946 opacity: 0.85; 1947} 1948 1949/* Standalone event list */ 1950.eventlist-standalone { 1951 max-width: 700px; 1952 margin: 20px auto; 1953 background: white; 1954 border: 1px solid #d0d0d0; 1955 border-radius: 6px; 1956 padding: 20px; 1957} 1958 1959.eventlist-standalone h3 { 1960 margin: 0 0 20px 0; 1961 font-size: 18px; 1962 font-weight: 600; 1963 color: #2c3e50; 1964 border-bottom: 2px solid #008800; 1965 padding-bottom: 10px; 1966} 1967 1968/* Compact Event List Widget */ 1969.eventlist-compact-widget { 1970 background: #ffffff; 1971 border: 1px solid #d0d0d0; 1972 border-radius: 6px; 1973 box-shadow: 0 2px 6px rgba(0,0,0,0.08); 1974 overflow: visible; 1975 display: flex; 1976 flex-direction: column; 1977 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 1978} 1979 1980/* Simple 2-Line Event List (New Design) */ 1981.eventlist-simple { 1982 width: 100%; 1983 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 1984 font-size: 11px; 1985 line-height: 1.4; 1986 overflow: visible; 1987} 1988 1989/* Compact pastel header for {{eventlist today}} - Single line */ 1990.eventlist-today-header { 1991 display: flex; 1992 flex-direction: column; 1993 align-items: center; 1994 padding: 6px 10px 2px 10px; 1995 background: #1a1a1a; 1996 color: #00cc07; 1997 border: 2px solid #00cc07; 1998 border-radius: 4px; 1999 margin-bottom: 8px; 2000 box-shadow: 0 0 8px rgba(0, 204, 7, 0.2); 2001 gap: 3px; 2002 overflow: visible; 2003} 2004 2005/* Purple theme overrides */ 2006.sidebar-purple .eventlist-today-header { 2007 border-color: #9b59b6; 2008 box-shadow: 0 0 8px rgba(155, 89, 182, 0.2); 2009} 2010 2011/* Professional theme overrides */ 2012.sidebar-professional .eventlist-today-header { 2013 border-color: #4a90e2; 2014 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 2015} 2016 2017/* Pink theme overrides */ 2018.sidebar-pink .eventlist-today-header { 2019 border-color: #ff1493; 2020 box-shadow: 0 0 10px rgba(255, 20, 147, 0.4); 2021} 2022 2023.eventlist-bottom-info { 2024 display: flex; 2025 justify-content: space-between; 2026 align-items: center; 2027 width: 100%; 2028 gap: 10px; 2029 overflow: visible; 2030} 2031 2032.eventlist-weather { 2033 font-size: 13px; 2034 font-weight: 700; 2035 font-family: 'Courier New', monospace; 2036 letter-spacing: 0.3px; 2037 text-shadow: 0 0 4px rgba(0, 204, 7, 0.4); 2038 color: #00cc07; 2039 white-space: nowrap; 2040} 2041 2042.eventlist-today-date { 2043 font-size: 10px; 2044 font-weight: 700; 2045 color: #00cc07; 2046 letter-spacing: 0.5px; 2047 white-space: nowrap; 2048 text-transform: uppercase; 2049 text-align: center; 2050 flex: 1; 2051} 2052 2053.eventlist-today-clock { 2054 font-size: 16px; 2055 font-weight: 700; 2056 font-family: 'Courier New', monospace; 2057 letter-spacing: 1px; 2058 text-shadow: 0 0 6px rgba(0, 204, 7, 0.5); 2059 color: #00cc07; 2060} 2061 2062.eventlist-stats-container { 2063 width: 100%; 2064 display: flex; 2065 flex-direction: column; 2066 gap: 2px; 2067 margin: 0; 2068 overflow: visible; 2069} 2070 2071.eventlist-cpu-bar { 2072 width: 100%; 2073 height: 3px; 2074 background: rgba(0, 204, 7, 0.1); 2075 border-radius: 1px; 2076 overflow: visible; 2077 position: relative; 2078 cursor: help; 2079} 2080 2081.system-tooltip { 2082 position: fixed; 2083 background: rgba(0, 0, 0, 0.95); 2084 padding: 6px 8px; 2085 border-radius: 4px; 2086 font-size: 9px; 2087 line-height: 1.3; 2088 white-space: normal; 2089 min-width: 150px; 2090 max-width: 250px; 2091 z-index: 999999; 2092 border: 1px solid; 2093 box-shadow: 0 3px 8px rgba(0,0,0,0.5); 2094 pointer-events: none; 2095 /* Position will be set by JavaScript */ 2096} 2097 2098.system-tooltip div { 2099 font-size: 9px !important; 2100 line-height: 1.3 !important; 2101 margin: 0; 2102} 2103 2104.system-tooltip .tooltip-title { 2105 font-weight: bold; 2106 margin-bottom: 2px; 2107} 2108 2109.eventlist-cpu-fill { 2110 height: 100%; 2111 background: #00cc07; 2112 transition: width 0.3s ease; 2113 box-shadow: 0 0 4px rgba(0, 204, 7, 0.6); 2114} 2115 2116.eventlist-cpu-fill-purple { 2117 background: #9b59b6; 2118 box-shadow: 0 0 4px rgba(155, 89, 182, 0.6); 2119} 2120 2121.eventlist-cpu-fill-orange { 2122 background: #ff8c00; 2123 box-shadow: 0 0 4px rgba(255, 140, 0, 0.6); 2124} 2125 2126/* Pink theme system bars - different shades of pink */ 2127.sidebar-pink .eventlist-cpu-fill { 2128 background: #ff1493; /* Hot pink for 5-min load */ 2129 box-shadow: 0 0 5px rgba(255, 20, 147, 0.7); 2130} 2131 2132.sidebar-pink .eventlist-cpu-fill-purple { 2133 background: #ff69b4; /* Pink for realtime CPU */ 2134 box-shadow: 0 0 5px rgba(255, 105, 180, 0.7); 2135} 2136 2137.sidebar-pink .eventlist-cpu-fill-orange { 2138 background: #ff85c1; /* Light pink for memory */ 2139 box-shadow: 0 0 5px rgba(255, 133, 193, 0.7); 2140} 2141 2142.sidebar-pink .eventlist-cpu-realtime { 2143 background: rgba(255, 20, 147, 0.1); 2144} 2145 2146.sidebar-pink .eventlist-mem-realtime { 2147 background: rgba(255, 133, 193, 0.1); 2148} 2149 2150.eventlist-cpu-realtime { 2151 background: rgba(155, 89, 182, 0.1); 2152} 2153 2154.eventlist-mem-realtime { 2155 background: rgba(255, 140, 0, 0.1); 2156} 2157 2158.eventlist-simple-item { 2159 border-bottom: 1px solid #e0e0e0; 2160 padding: 0; 2161} 2162 2163.eventlist-simple-item:last-child { 2164 border-bottom: none; 2165} 2166 2167.eventlist-simple-today { 2168 background: #f3eeff !important; 2169 border-left: 3px solid #9b59b6 !important; 2170} 2171 2172.eventlist-simple-today .eventlist-simple-header { 2173 background: #e8d9ff !important; 2174} 2175 2176.eventlist-simple-today .eventlist-simple-body { 2177 background: #f9f5ff !important; 2178} 2179 2180.eventlist-simple-today-badge { 2181 background: #9b59b6; 2182 color: white; 2183 padding: 1px 4px; 2184 border-radius: 3px; 2185 font-size: 9px; 2186 font-weight: 600; 2187 letter-spacing: 0.5px; 2188 display: inline-block; 2189 vertical-align: middle; 2190 float: right; /* Right-align */ 2191 margin-left: auto; 2192} 2193 2194.eventlist-simple-pastdue { 2195 background: #ffe6e6 !important; 2196 border-left: 3px solid #e74c3c !important; 2197} 2198 2199.eventlist-simple-pastdue .eventlist-simple-header { 2200 background: #ffd9d9 !important; 2201} 2202 2203.eventlist-simple-pastdue .eventlist-simple-body { 2204 background: #fff2f2 !important; 2205} 2206 2207.eventlist-simple-pastdue-badge { 2208 background: #e74c3c; 2209 color: white; 2210 padding: 1px 4px; 2211 border-radius: 3px; 2212 font-size: 9px; 2213 font-weight: 600; 2214 letter-spacing: 0.5px; 2215 display: inline-block; 2216 vertical-align: middle; 2217 float: right; /* Right-align */ 2218 margin-left: auto; 2219} 2220 2221.eventlist-simple-tomorrow { 2222 background: #fff9e6 !important; 2223} 2224 2225.eventlist-simple-tomorrow .eventlist-simple-header { 2226 background: #fff4cc !important; 2227} 2228 2229.eventlist-simple-tomorrow .eventlist-simple-body { 2230 background: #fffbf0 !important; 2231} 2232 2233.eventlist-simple-header { 2234 font-weight: 500; 2235 color: #2c3e50; 2236 padding: 4px 6px; 2237 line-height: 1.5; 2238 background: #f5fcf5; 2239 font-size: 11px; 2240} 2241 2242.eventlist-simple-title { 2243 font-weight: 700; 2244 color: #ff6600; 2245 font-size: 12px; 2246} 2247 2248.eventlist-simple-time { 2249 color: #666; 2250 font-size: 10px; 2251} 2252 2253.eventlist-simple-date { 2254 color: #888; 2255 font-size: 10px; 2256} 2257 2258.eventlist-simple-namespace { 2259 background: #e8f5e9; 2260 color: #388e3c; 2261 padding: 1px 4px; 2262 border-radius: 3px; 2263 font-size: 9px; 2264 font-weight: 500; 2265 margin-left: 4px; 2266} 2267 2268.eventlist-simple-body { 2269 color: #555; 2270 font-size: 11px; 2271 line-height: 1.5; 2272 padding: 4px 6px; 2273 background: #fff; 2274} 2275 2276.eventlist-simple-body a { 2277 color: #008800; 2278 text-decoration: none; 2279} 2280 2281.eventlist-simple-body a:hover { 2282 text-decoration: underline; 2283} 2284 2285.eventlist-simple-body strong { 2286 font-weight: 600; 2287 color: #2c3e50; 2288} 2289 2290.eventlist-simple-body code { 2291 background: #f5f5f5; 2292 padding: 1px 3px; 2293 border-radius: 3px; 2294 font-family: 'Courier New', monospace; 2295 font-size: 10px; 2296} 2297 2298.eventlist-simple-no-desc { 2299 display: none; 2300} 2301 2302.eventlist-simple-empty { 2303 padding: 10px 0; 2304 color: #999; 2305} 2306 2307.eventlist-simple-empty .eventlist-simple-header { 2308 margin-bottom: 4px; 2309 background: #f5fcf5; 2310} 2311 2312.eventlist-simple-empty .eventlist-simple-body { 2313 color: #999; 2314 font-style: italic; 2315 padding: 4px 6px; 2316 font-size: 11px; 2317} 2318 2319.eventlist-widget-header { 2320 background: #008800; 2321 color: white; 2322 padding: 8px 12px; 2323 flex-shrink: 0; 2324} 2325 2326.eventlist-widget-header h4 { 2327 margin: 0; 2328 font-size: 13px; 2329 font-weight: 600; 2330} 2331 2332.eventlist-widget-content { 2333 overflow-y: auto; 2334 padding: 8px; 2335 flex: 1; 2336} 2337 2338.eventlist-widget-date { 2339 font-size: 11px; 2340 font-weight: 600; 2341 color: #666; 2342 margin: 8px 0 4px 0; 2343 padding-bottom: 2px; 2344 border-bottom: 1px solid #e0e0e0; 2345} 2346 2347.eventlist-widget-item { 2348 background: #fafafa; 2349 border: 1px solid #e0e0e0; 2350 border-left: 3px solid #3498db; 2351 border-radius: 3px; 2352 padding: 6px 8px; 2353 margin-bottom: 6px; 2354 transition: all 0.15s; 2355} 2356 2357.eventlist-widget-item:hover { 2358 background: #f0f0f0; 2359 box-shadow: 0 1px 3px rgba(0,0,0,0.1); 2360} 2361 2362.eventlist-widget-title { 2363 font-size: 12px; 2364 font-weight: 600; 2365 color: #2c3e50; 2366 margin-bottom: 2px; 2367} 2368 2369.eventlist-widget-time { 2370 font-size: 11px; 2371 color: #666; 2372 margin-bottom: 4px; 2373} 2374 2375.eventlist-widget-desc { 2376 font-size: 11px; 2377 color: #555; 2378 margin-top: 4px; 2379 line-height: 1.4; 2380} 2381 2382.eventlist-widget-desc img { 2383 max-width: 100%; 2384 height: auto; 2385 border-radius: 3px; 2386 margin: 4px 0; 2387} 2388 2389.eventlist-widget-desc a { 2390 color: #008800; 2391 text-decoration: none; 2392 border-bottom: 1px dotted #008800; 2393} 2394 2395.eventlist-widget-desc a:hover { 2396 border-bottom-style: solid; 2397} 2398 2399.eventlist-widget-empty { 2400 text-align: center; 2401 color: #999; 2402 font-size: 12px; 2403 padding: 20px; 2404 margin: 0; 2405} 2406 2407/* Standalone event panel (right panel only) */ 2408.event-panel-standalone { 2409 width: 320px; 2410 background: #ffffff; 2411 border: 1px solid #d0d0d0; 2412 border-radius: 6px; 2413 box-shadow: 0 2px 6px rgba(0,0,0,0.08); 2414 display: flex; 2415 flex-direction: column; 2416 max-height: 600px; 2417 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 2418 font-size: 13px; 2419} 2420 2421.event-panel-standalone .event-list-compact { 2422 overflow-y: auto; 2423 flex: 1; 2424 padding: 10px; 2425} 2426 2427/* Event panel - Compact two-row header for ~500px width (10% smaller) */ 2428.panel-header-compact { 2429 background: #f5f5f5; 2430 border-bottom: 2px solid #ddd; 2431} 2432 2433.panel-header-row-1 { 2434 display: flex; 2435 align-items: center; 2436 gap: 7px; 2437 padding: 7px 11px; 2438 background: #fafafa; 2439 border-bottom: 1px solid #e8e8e8; 2440} 2441 2442.panel-header-row-2 { 2443 display: flex; 2444 align-items: center; 2445 gap: 7px; 2446 padding: 7px 11px; 2447 background: #ffffff; 2448} 2449 2450.panel-nav-btn { 2451 background: #ffffff; 2452 border: 1px solid #ccc; 2453 color: #333; 2454 width: 29px; 2455 height: 29px; 2456 border-radius: 4px; 2457 cursor: pointer; 2458 font-size: 16px; 2459 font-weight: bold; 2460 transition: all 0.2s; 2461 display: flex; 2462 align-items: center; 2463 justify-content: center; 2464 padding: 0; 2465 flex-shrink: 0; 2466} 2467 2468.panel-nav-btn:hover { 2469 background: #00cc07; 2470 color: white; 2471 border-color: #00cc07; 2472} 2473 2474.panel-month-title { 2475 margin: 0; 2476 font-size: 13px; 2477 font-weight: 600; 2478 color: #2c3e50; 2479 cursor: pointer; 2480 padding: 5px 9px; 2481 border-radius: 4px; 2482 transition: background 0.2s; 2483 white-space: nowrap; 2484 user-select: none; 2485 flex: 1; 2486 text-align: center; 2487 background: #ffffff; 2488 border: 1px solid #e0e0e0; 2489} 2490 2491.panel-month-title:hover { 2492 background: #e8f5e9; 2493 border-color: #00cc07; 2494} 2495 2496.panel-ns-badge { 2497 background: #e3f2fd; 2498 color: #1976d2; 2499 padding: 3px 7px; 2500 border-radius: 11px; 2501 font-size: 9px; 2502 font-weight: 600; 2503 text-transform: uppercase; 2504 letter-spacing: 0.3px; 2505 white-space: nowrap; 2506 border: 1px solid #bbdefb; 2507 flex-shrink: 0; 2508} 2509 2510.panel-ns-badge.filter-on { 2511 background: #ff9800; 2512 color: white; 2513 border-color: #f57c00; 2514 cursor: pointer; 2515 transition: all 0.2s; 2516} 2517 2518.panel-ns-badge.filter-on:hover { 2519 background: #f57c00; 2520} 2521 2522.panel-today-btn { 2523 background: #ffffff; 2524 border: 1px solid #ccc; 2525 color: #333; 2526 padding: 5px 11px; 2527 border-radius: 4px; 2528 cursor: pointer; 2529 font-size: 10px; 2530 font-weight: 600; 2531 transition: all 0.2s; 2532 white-space: nowrap; 2533 flex-shrink: 0; 2534} 2535 2536.panel-today-btn:hover { 2537 background: #00cc07; 2538 color: white; 2539 border-color: #00cc07; 2540} 2541 2542.panel-search-box { 2543 position: relative; 2544 flex: 1; 2545} 2546 2547.panel-search-input { 2548 width: 100%; 2549 padding: 5px 25px 5px 9px; 2550 border: 1px solid #d0d0d0; 2551 border-radius: 4px; 2552 font-size: 11px; 2553 outline: none; 2554 transition: border-color 0.2s, box-shadow 0.2s; 2555 background: #fafafa; 2556} 2557 2558.panel-search-input:focus { 2559 border-color: #00cc07; 2560 box-shadow: 0 0 0 2px rgba(0, 204, 7, 0.1); 2561 background: white; 2562} 2563 2564.panel-search-input::placeholder { 2565 color: #999; 2566} 2567 2568.panel-search-clear { 2569 position: absolute; 2570 right: 5px; 2571 top: 50%; 2572 transform: translateY(-50%); 2573 background: none; 2574 border: none; 2575 color: #999; 2576 cursor: pointer; 2577 padding: 3px; 2578 font-size: 13px; 2579 line-height: 1; 2580 transition: color 0.2s; 2581} 2582 2583.panel-search-clear:hover { 2584 color: #333; 2585} 2586 2587.panel-add-btn { 2588 background: #00cc07; 2589 border: 1px solid #00a806; 2590 color: white; 2591 padding: 5px 13px; 2592 border-radius: 4px; 2593 cursor: pointer; 2594 font-size: 11px; 2595 font-weight: 600; 2596 transition: all 0.2s; 2597 white-space: nowrap; 2598 flex-shrink: 0; 2599} 2600 2601.panel-add-btn:hover { 2602 background: #00a806; 2603 transform: translateY(-1px); 2604 box-shadow: 0 2px 4px rgba(0,0,0,0.1); 2605} 2606 2607.panel-standalone-header { 2608 display: flex; 2609 align-items: center; 2610 gap: 8px; 2611 padding: 12px 12px; 2612 background: #fafafa; 2613 border-bottom: 1px solid #e0e0e0; 2614 flex-shrink: 0; 2615} 2616 2617.panel-header-content { 2618 flex: 1; 2619 display: flex; 2620 flex-direction: column; 2621 align-items: center; 2622 gap: 4px; 2623} 2624 2625.panel-standalone-header h3 { 2626 margin: 0; 2627 font-size: 12px; 2628 font-weight: 600; 2629 color: #2c3e50; 2630 white-space: nowrap; 2631} 2632 2633.panel-standalone-header .calendar-month-picker { 2634 cursor: pointer; 2635 user-select: none; 2636 transition: all 0.15s; 2637 padding: 4px 8px; 2638 border-radius: 4px; 2639 white-space: nowrap; 2640} 2641 2642.panel-standalone-header .calendar-month-picker:hover { 2643 background: #e8e8e8; 2644 color: #008800; 2645} 2646 2647.panel-standalone-header .namespace-badge { 2648 font-size: 11px; 2649 font-weight: 500; 2650 color: #388e3c; 2651 background: #e8f5e9; 2652 padding: 2px 8px; 2653 border-radius: 3px; 2654 text-decoration: none; 2655 transition: all 0.15s; 2656 display: inline-block; 2657} 2658 2659.panel-standalone-header .namespace-badge:hover { 2660 background: #c8e6c9; 2661 color: #2e7d32; 2662} 2663 2664.panel-standalone-actions { 2665 padding: 10px 16px; 2666 background: #ffffff; 2667 border-bottom: 1px solid #e0e0e0; 2668 flex-shrink: 0; 2669 display: flex; 2670 align-items: center; 2671 gap: 8px; 2672} 2673 2674.panel-standalone-actions .add-event-compact { 2675 flex-shrink: 0; 2676} 2677 2678.eventlist-day-group { 2679 margin-bottom: 24px; 2680} 2681 2682.eventlist-date { 2683 margin: 0 0 12px 0; 2684 font-size: 14px; 2685 font-weight: 600; 2686 color: #2c3e50; 2687 background: #f8f8f8; 2688 padding: 8px 12px; 2689 border-left: 4px solid #008800; 2690} 2691 2692.eventlist-item { 2693 display: flex; 2694 margin-bottom: 10px; 2695 background: white; 2696 border: 1px solid #e0e0e0; 2697 border-radius: 4px; 2698 overflow: hidden; 2699} 2700 2701.eventlist-content { 2702 flex: 1; 2703 padding: 12px; 2704 display: flex; 2705 align-items: center; 2706 gap: 12px; 2707} 2708 2709.eventlist-time { 2710 font-size: 12px; 2711 font-weight: 600; 2712 color: #008800; 2713 min-width: 50px; 2714} 2715 2716.eventlist-title { 2717 font-size: 14px; 2718 font-weight: 500; 2719 color: #2c3e50; 2720} 2721 2722.eventlist-desc { 2723 font-size: 12px; 2724 color: #666; 2725 margin-top: 6px; 2726 line-height: 1.4; 2727} 2728 2729/* =================================== 2730 MOBILE RESPONSIVE - EVENTLIST & EVENTPANEL 2731 =================================== */ 2732 2733/* Tablet and below (768px) */ 2734@media (max-width: 768px) { 2735 /* Event Panel Standalone */ 2736 .event-panel-standalone { 2737 width: 100%; 2738 max-width: 100%; 2739 border-radius: 0; 2740 max-height: none; 2741 min-height: 400px; 2742 } 2743 2744 /* Compact Event List Widget */ 2745 .eventlist-compact-widget { 2746 width: 100% !important; 2747 max-width: 100%; 2748 border-radius: 0; 2749 } 2750 2751 .eventlist-widget-header h4 { 2752 font-size: 14px; 2753 } 2754 2755 .eventlist-widget-title { 2756 font-size: 13px; 2757 } 2758 2759 .eventlist-widget-time { 2760 font-size: 12px; 2761 } 2762 2763 /* Standalone event list (old style) */ 2764 .eventlist-standalone { 2765 max-width: 100%; 2766 margin: 10px; 2767 padding: 15px; 2768 border-radius: 0; 2769 } 2770 2771 .eventlist-standalone h3 { 2772 font-size: 16px; 2773 } 2774} 2775 2776/* Mobile (480px and below) */ 2777@media (max-width: 480px) { 2778 /* Event Panel Standalone */ 2779 .event-panel-standalone { 2780 font-size: 12px; 2781 min-height: 300px; 2782 } 2783 2784 .panel-standalone-header { 2785 padding: 10px 12px; 2786 } 2787 2788 .panel-standalone-header h3 { 2789 font-size: 12px; 2790 } 2791 2792 .panel-standalone-actions { 2793 padding: 8px 12px; 2794 } 2795 2796 .event-panel-standalone .event-list-compact { 2797 padding: 8px; 2798 } 2799 2800 /* Compact Event List Widget */ 2801 .eventlist-compact-widget { 2802 min-width: 280px; 2803 } 2804 2805 .eventlist-widget-header { 2806 padding: 6px 10px; 2807 } 2808 2809 .eventlist-widget-header h4 { 2810 font-size: 13px; 2811 } 2812 2813 .eventlist-widget-content { 2814 padding: 6px; 2815 } 2816 2817 .eventlist-widget-item { 2818 padding: 5px 6px; 2819 margin-bottom: 5px; 2820 } 2821 2822 .eventlist-widget-title { 2823 font-size: 12px; 2824 } 2825 2826 .eventlist-widget-time { 2827 font-size: 11px; 2828 } 2829 2830 .eventlist-widget-desc { 2831 font-size: 11px; 2832 } 2833 2834 /* Standalone event list */ 2835 .eventlist-standalone { 2836 margin: 5px; 2837 padding: 10px; 2838 } 2839 2840 .eventlist-standalone h3 { 2841 font-size: 14px; 2842 margin-bottom: 15px; 2843 } 2844 2845 .eventlist-day-group { 2846 margin-bottom: 18px; 2847 } 2848 2849 .eventlist-date { 2850 font-size: 13px; 2851 padding: 6px 10px; 2852 } 2853 2854 .eventlist-title { 2855 font-size: 13px; 2856 } 2857 2858 .eventlist-time { 2859 font-size: 11px; 2860 } 2861 2862 .eventlist-desc { 2863 font-size: 11px; 2864 } 2865} 2866 2867/* Very small mobile (320px) */ 2868@media (max-width: 320px) { 2869 .eventlist-compact-widget { 2870 min-width: 100%; 2871 } 2872 2873 .event-panel-standalone { 2874 min-height: 250px; 2875 } 2876 2877 .eventlist-widget-header h4 { 2878 font-size: 12px; 2879 } 2880 2881 .eventlist-widget-title { 2882 font-size: 11px; 2883 } 2884 2885 .panel-standalone-header h3 { 2886 font-size: 12px; 2887 } 2888} 2889 2890/* Past Events Collapsible Section */ 2891.past-events-section { 2892 margin-bottom: 10px; 2893 border-bottom: 1px solid var(--border-color, #e0e0e0); 2894 border-top: 1px solid var(--border-color, #e0e0e0); 2895} 2896 2897.past-events-toggle { 2898 padding: 6px 10px; 2899 background: var(--cell-bg); 2900 color: var(--text-dim); 2901 cursor: pointer; 2902 user-select: none; 2903 font-size: 11px; 2904 font-weight: 600; 2905 display: flex; 2906 align-items: center; 2907 border-radius: 3px; 2908 transition: background 0.2s; 2909} 2910 2911.past-events-toggle:hover { 2912 background: var(--background-alt); 2913} 2914 2915.past-events-arrow { 2916 font-size: 9px; 2917 margin-right: 5px; 2918 transition: transform 0.2s; 2919 display: inline-block; 2920 width: 10px; 2921 color: var(--text-dim); 2922} 2923 2924.past-events-label { 2925 color: var(--text-dim); 2926} 2927 2928.past-events-content { 2929 margin-top: 5px; 2930} 2931 2932/* Namespace Search Dropdown */ 2933.namespace-search-wrapper { 2934 position: relative; 2935} 2936 2937.namespace-search-input { 2938 width: 100%; 2939} 2940 2941.namespace-dropdown { 2942 position: absolute; 2943 top: 100%; 2944 left: 0; 2945 right: 0; 2946 max-height: 200px; 2947 overflow-y: auto; 2948 background: var(--cell-bg, white); 2949 border: 1px solid var(--border-color, #ddd); 2950 border-top: none; 2951 border-radius: 0 0 4px 4px; 2952 box-shadow: 0 4px 8px var(--shadow-color, rgba(0,0,0,0.1)); 2953 z-index: 1000; 2954 margin-top: -1px; 2955} 2956 2957.namespace-option { 2958 padding: 8px 12px; 2959 cursor: pointer; 2960 font-size: 12px; 2961 color: var(--text-primary, #333); 2962 border-bottom: 1px solid var(--border-color, #f0f0f0); 2963 transition: background-color 0.15s; 2964} 2965 2966.namespace-option:hover { 2967 background-color: var(--background-alt, #f5f5f5); 2968} 2969 2970.namespace-option.selected { 2971 background-color: var(--cell-today-bg, #e3f2fd); 2972 color: var(--text-bright, #1976d2); 2973} 2974 2975.namespace-option:last-child { 2976 border-bottom: none; 2977} 2978 2979/* Matrix-themed Sidebar Widget */ 2980.sidebar-matrix { 2981 font-family: system-ui, sans-serif !important; 2982 background: linear-gradient(180deg, #242424 0%, #2a2a2a 100%) !important; 2983 border: 2px solid #00cc07 !important; 2984 box-shadow: 0 0 15px rgba(0, 204, 7, 0.4), inset 0 0 20px rgba(0, 204, 7, 0.05) !important; 2985} 2986 2987.sidebar-matrix-header { 2988 background: linear-gradient(180deg, #2a2a2a 0%, #242424 100%) !important; 2989 border-bottom: 2px solid #00cc07 !important; 2990 box-shadow: 0 2px 8px rgba(0, 204, 7, 0.3) !important; 2991} 2992 2993.sidebar-matrix-clock { 2994 animation: matrix-pulse 2s ease-in-out infinite; 2995} 2996 2997.sidebar-matrix-date { 2998 opacity: 0.9; 2999} 3000 3001@keyframes matrix-pulse { 3002 0%, 100% { 3003 text-shadow: 0 0 6px rgba(0, 204, 7, 0.5); 3004 } 3005 50% { 3006 text-shadow: 0 0 10px rgba(0, 255, 0, 0.8), 0 0 15px rgba(0, 204, 7, 0.4); 3007 } 3008} 3009 3010/* Matrix glow effect for sidebar */ 3011.sidebar-widget.sidebar-matrix::before { 3012 content: ''; 3013 position: absolute; 3014 top: -2px; 3015 left: -2px; 3016 right: -2px; 3017 bottom: -2px; 3018 background: linear-gradient(45deg, #00cc07, #00ff00, #00cc07); 3019 border-radius: 4px; 3020 opacity: 0; 3021 z-index: -1; 3022 animation: matrix-border-glow 3s ease-in-out infinite; 3023} 3024 3025@keyframes matrix-border-glow { 3026 0%, 100% { 3027 opacity: 0; 3028 } 3029 50% { 3030 opacity: 0.3; 3031 } 3032} 3033 3034/* Scrollbar styling for matrix theme */ 3035.sidebar-matrix ::-webkit-scrollbar { 3036 width: 6px; 3037} 3038 3039.sidebar-matrix ::-webkit-scrollbar-track { 3040 background: #242424; 3041} 3042 3043.sidebar-matrix ::-webkit-scrollbar-thumb { 3044 background: #00cc07; 3045 border-radius: 3px; 3046 box-shadow: 0 0 5px rgba(0, 204, 7, 0.5); 3047} 3048 3049.sidebar-matrix ::-webkit-scrollbar-thumb:hover { 3050 background: #00ff00; 3051 box-shadow: 0 0 8px rgba(0, 255, 0, 0.8); 3052} 3053 3054/* ==================================== 3055 PINK BLING THEME - SPECIAL EFFECTS 3056 ==================================== */ 3057 3058/* Shimmer animation for today's cell - TONED DOWN */ 3059@keyframes pink-shimmer { 3060 0% { 3061 box-shadow: 0 0 3px rgba(255, 20, 147, 0.2), 3062 0 0 5px rgba(255, 20, 147, 0.1); 3063 } 3064 50% { 3065 box-shadow: 0 0 8px rgba(255, 20, 147, 0.4), 3066 0 0 12px rgba(255, 20, 147, 0.2); 3067 } 3068 100% { 3069 box-shadow: 0 0 3px rgba(255, 20, 147, 0.2), 3070 0 0 5px rgba(255, 20, 147, 0.1); 3071 } 3072} 3073 3074/* Sparkle animation for today's day number - SUBTLE */ 3075@keyframes pink-sparkle { 3076 0%, 100% { 3077 text-shadow: 0 0 3px rgba(255, 20, 147, 0.6); 3078 transform: scale(1); 3079 } 3080 50% { 3081 text-shadow: 0 0 6px rgba(255, 20, 147, 0.8), 3082 0 0 10px rgba(255, 105, 180, 0.5); 3083 transform: scale(1.02); 3084 } 3085} 3086 3087/* Glow pulse for event bars - SUBTLE */ 3088@keyframes pink-glow-pulse { 3089 0%, 100% { 3090 box-shadow: 0 0 2px currentColor; 3091 } 3092 50% { 3093 box-shadow: 0 0 4px currentColor, 3094 0 0 6px rgba(255, 105, 180, 0.3); 3095 } 3096} 3097 3098/* Gradient shimmer for headers */ 3099@keyframes pink-gradient-shimmer { 3100 0% { 3101 background-position: 0% 50%; 3102 } 3103 50% { 3104 background-position: 100% 50%; 3105 } 3106 100% { 3107 background-position: 0% 50%; 3108 } 3109} 3110 3111/* Pink particle explosion on click */ 3112@keyframes particle-explode { 3113 0% { 3114 opacity: 1; 3115 transform: translate(0, 0) scale(1); 3116 } 3117 100% { 3118 opacity: 0; 3119 transform: translate(var(--tx), var(--ty)) scale(0); 3120 } 3121} 3122 3123/* Cursor trail glow */ 3124@keyframes cursor-trail-fade { 3125 0% { 3126 opacity: 1; 3127 transform: scale(1); 3128 } 3129 100% { 3130 opacity: 0; 3131 transform: scale(0.5); 3132 } 3133} 3134 3135/* Pink particle styles */ 3136.pink-particle { 3137 position: fixed; /* Changed to fixed so it works anywhere on screen */ 3138 width: 6px; 3139 height: 6px; 3140 background: radial-gradient(circle, #ff1493, #ff69b4); 3141 border-radius: 50%; 3142 pointer-events: none; 3143 z-index: 9999999; /* Above everything including dialogs */ 3144 box-shadow: 0 0 8px #ff1493, 3145 0 0 15px #ff69b4; 3146} 3147 3148/* Cursor trail glow */ 3149.pink-cursor-trail { 3150 position: fixed; /* Changed to fixed so it works anywhere on screen */ 3151 width: 8px; 3152 height: 8px; 3153 background: radial-gradient(circle, rgba(255, 20, 147, 0.8), rgba(255, 105, 180, 0.4)); 3154 border-radius: 50%; 3155 pointer-events: none; 3156 z-index: 9999998; /* Just below particles */ 3157 box-shadow: 0 0 10px rgba(255, 20, 147, 0.6), 3158 0 0 20px rgba(255, 105, 180, 0.3); 3159} 3160 3161/* Tiny neon pixel sparkles */ 3162.pink-pixel-sparkle { 3163 position: fixed; 3164 width: 2px; 3165 height: 2px; 3166 background: #fff; 3167 border-radius: 50%; 3168 pointer-events: none; 3169 z-index: 9999997; /* Just below trail */ 3170 box-shadow: 0 0 2px #ff1493, 3171 0 0 4px #ff69b4, 3172 0 0 6px #fff; 3173} 3174 3175/* Pixel sparkle twinkle animation */ 3176@keyframes pixel-twinkle { 3177 0%, 100% { 3178 opacity: 0; 3179 transform: scale(0); 3180 } 3181 50% { 3182 opacity: 1; 3183 transform: scale(1.5); 3184 } 3185} 3186 3187/* Pixel sparkle float away */ 3188@keyframes pixel-float-away { 3189 0% { 3190 opacity: 1; 3191 transform: translateY(0) scale(1); 3192 } 3193 100% { 3194 opacity: 0; 3195 transform: translateY(-30px) scale(0); 3196 } 3197} 3198 3199/* Pink theme specific styles - TONED DOWN */ 3200.calendar-theme-pink .cal-today { 3201 animation: pink-shimmer 2s ease-in-out infinite; 3202 border: 2px solid #ff1493 !important; 3203 position: relative; 3204 overflow: visible; 3205} 3206 3207.calendar-theme-pink .cal-today .day-num { 3208 animation: pink-sparkle 1.5s ease-in-out infinite; 3209} 3210 3211.calendar-theme-pink .event-bar { 3212 animation: pink-glow-pulse 2s ease-in-out infinite; 3213} 3214 3215.calendar-theme-pink .calendar-compact-header { 3216 background: linear-gradient(90deg, #2d1a24, #3d2030, #2d1a24, #1a0d14); 3217 background-size: 300% 300%; 3218 animation: pink-gradient-shimmer 3s ease infinite; 3219} 3220 3221.calendar-theme-pink .event-list-header { 3222 background: linear-gradient(90deg, #2d1a24, #3d2030, #2d1a24); 3223 background-size: 300% 300%; 3224 animation: pink-gradient-shimmer 3s ease infinite; 3225} 3226 3227/* Subtle hover glow - TONED DOWN */ 3228.calendar-theme-pink .cal-today:hover { 3229 box-shadow: 0 0 10px rgba(255, 20, 147, 0.5), 3230 0 0 15px rgba(255, 20, 147, 0.3) !important; 3231} 3232 3233/* Pink theme event items get subtle glow */ 3234.calendar-theme-pink .event-compact-item { 3235 box-shadow: 0 0 2px rgba(255, 20, 147, 0.1); 3236 transition: all 0.3s ease; 3237} 3238 3239.calendar-theme-pink .event-compact-item:hover { 3240 box-shadow: 0 0 5px rgba(255, 20, 147, 0.3); 3241 transform: translateX(2px); 3242} 3243 3244/* Calendar borders get subtle glow */ 3245.calendar-theme-pink.calendar-compact-container { 3246 box-shadow: 0 0 8px rgba(255, 20, 147, 0.2), 3247 0 2px 4px rgba(0,0,0,0.06); 3248 position: relative; 3249} 3250 3251/* Today badge extra sparkle */ 3252.calendar-theme-pink .event-today-badge { 3253 animation: pink-sparkle 1.5s ease-in-out infinite; 3254} 3255 3256/* Past due badge pulsing effect - SUBTLE */ 3257@keyframes pink-pulse-urgent { 3258 0%, 100% { 3259 box-shadow: 0 0 3px rgba(255, 140, 0, 0.4); 3260 } 3261 50% { 3262 box-shadow: 0 0 8px rgba(255, 140, 0, 0.6); 3263 } 3264} 3265 3266.calendar-theme-pink .event-pastdue-badge { 3267 animation: pink-pulse-urgent 1s ease-in-out infinite; 3268} 3269