1/* Compact Calendar Plugin - Sleek Design */ 2 3/* Main container: Responsive with flexible sizing */ 4.calendar-compact-container { 5 display: flex; 6 width: 100%; 7 max-width: 1200px; 8 min-width: 320px; 9 height: 600px; 10 max-height: 90vh; 11 background: #ffffff; 12 border: 1px solid #d0d0d0; 13 border-radius: 4px; 14 box-shadow: 0 2px 4px rgba(0,0,0,0.06); 15 overflow: hidden; 16 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 17 font-size: 12px; 18} 19 20/* Mobile responsive */ 21@media (max-width: 768px) { 22 .calendar-compact-container { 23 flex-direction: column; 24 height: auto; 25 min-height: 400px; 26 max-height: none; 27 } 28 29 .calendar-compact-left { 30 width: 100% !important; 31 min-width: 100% !important; 32 border-right: none !important; 33 border-bottom: 1px solid #e0e0e0; 34 height: auto; 35 min-height: 300px; 36 } 37 38 .calendar-compact-right { 39 width: 100% !important; 40 min-width: 100% !important; 41 max-height: 400px; 42 } 43} 44 45/* Tablet responsive */ 46@media (max-width: 1024px) and (min-width: 769px) { 47 .calendar-compact-container { 48 max-width: 100%; 49 } 50 51 .calendar-compact-left { 52 width: 60% !important; 53 min-width: 400px; 54 } 55 56 .calendar-compact-right { 57 width: 40% !important; 58 min-width: 250px; 59 } 60} 61 62/* Small screens */ 63@media (max-width: 600px) { 64 .calendar-compact-container { 65 font-size: 11px; 66 height: auto; 67 max-height: none; 68 } 69} 70 71/* Left side: Calendar - FLEXIBLE */ 72.calendar-compact-left { 73 flex: 1; 74 min-width: 400px; 75 border-right: 1px solid #e0e0e0; 76 display: flex; 77 flex-direction: column; 78 background: #fafafa; 79 overflow: hidden; 80} 81 82/* Right side: Event list - FLEXIBLE */ 83.calendar-compact-right { 84 flex: 0 0 300px; 85 min-width: 250px; 86 max-width: 400px; 87 display: flex; 88 flex-direction: column; 89 background: #ffffff; 90 overflow: hidden; 91} 92 93/* Calendar header - COMPACT */ 94.calendar-compact-header { 95 display: flex; 96 align-items: center; 97 gap: 12px; 98 padding: 8px 12px; 99 background: #ffffff; 100 border-bottom: 1px solid #e0e0e0; 101} 102 103.calendar-compact-header h3 { 104 margin: 0; 105 font-size: 14px; 106 font-weight: 600; 107 color: #2c3e50; 108 flex: 1; 109 text-align: center; 110} 111 112.calendar-month-picker { 113 cursor: pointer; 114 user-select: none; 115 transition: all 0.15s; 116 padding: 4px 8px; 117 border-radius: 4px; 118} 119 120.calendar-month-picker:hover { 121 background: #f0f0f0; 122 color: #008800; 123} 124 125.month-picker-overlay { 126 position: fixed; 127 top: 0; 128 left: 0; 129 right: 0; 130 bottom: 0; 131 background: rgba(0, 0, 0, 0.5); 132 display: flex; 133 align-items: center; 134 justify-content: center; 135 z-index: 10000; 136} 137 138.month-picker-dialog { 139 background: white; 140 border-radius: 8px; 141 padding: 20px; 142 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); 143 min-width: 300px; 144} 145 146.month-picker-dialog h4 { 147 margin: 0 0 16px 0; 148 font-size: 16px; 149 font-weight: 600; 150 color: #2c3e50; 151} 152 153.month-picker-selects { 154 display: flex; 155 gap: 12px; 156 margin-bottom: 16px; 157} 158 159.month-picker-select { 160 flex: 1; 161 padding: 8px 12px; 162 border: 1px solid #d0d0d0; 163 border-radius: 4px; 164 font-size: 14px; 165 background: white; 166 cursor: pointer; 167} 168 169.month-picker-select:focus { 170 outline: none; 171 border-color: #008800; 172 box-shadow: 0 0 0 2px rgba(0, 136, 0, 0.1); 173} 174 175.month-picker-actions { 176 display: flex; 177 gap: 8px; 178 justify-content: flex-end; 179} 180 181.cal-nav-btn { 182 background: #f5f5f5; 183 border: 1px solid #d0d0d0; 184 width: 28px; 185 height: 28px; 186 border-radius: 4px; 187 cursor: pointer; 188 font-size: 16px; 189 color: #555; 190 transition: all 0.15s; 191 padding: 0; 192 display: flex; 193 align-items: center; 194 justify-content: center; 195} 196 197.cal-nav-btn:hover { 198 background: #e8e8e8; 199 border-color: #aaa; 200} 201 202.cal-today-btn { 203 background: #008800; 204 border: 1px solid #388e3c; 205 color: white; 206 font-size: 11px; 207 font-weight: 600; 208 padding: 4px 10px; 209 border-radius: 4px; 210 cursor: pointer; 211 transition: all 0.15s; 212} 213 214.cal-today-btn:hover { 215 background: #388e3c; 216 border-color: #2e7d32; 217} 218 219/* Calendar grid - Excel-like sizing - RESPONSIVE */ 220.calendar-compact-grid { 221 width: 100%; 222 border-collapse: collapse; 223 table-layout: fixed; 224 flex: 1; 225} 226 227.calendar-compact-grid thead th { 228 height: 22px; 229 background: #f8f8f8; 230 border-bottom: 1px solid #d0d0d0; 231 border-right: 1px solid #e8e8e8; 232 font-size: 10px; 233 font-weight: 600; 234 color: #666; 235 text-align: center; 236 padding: 0; 237} 238 239.calendar-compact-grid thead th:last-child { 240 border-right: none; 241} 242 243.calendar-compact-grid tbody td { 244 height: 58px; 245 min-height: 40px; 246 border: 1px solid #e8e8e8; 247 border-top: none; 248 border-left: none; 249 background: #ffffff; 250 cursor: pointer; 251 padding: 3px; 252 position: relative; 253 vertical-align: top; 254 transition: background 0.1s; 255} 256 257/* Smaller cells on mobile */ 258@media (max-width: 600px) { 259 .calendar-compact-grid tbody td { 260 height: 45px; 261 min-height: 35px; 262 padding: 2px; 263 } 264 265 .calendar-compact-grid thead th { 266 height: 18px; 267 font-size: 9px; 268 } 269} 270 271.calendar-compact-grid tbody td:first-child { 272 border-left: 1px solid #e8e8e8; 273} 274 275.calendar-compact-grid tbody td:hover { 276 background: #f0f7ff; 277} 278 279.cal-empty { 280 background: #fafafa !important; 281 cursor: default !important; 282} 283 284.cal-empty:hover { 285 background: #fafafa !important; 286} 287 288.cal-today { 289 background: #e8f5e9 !important; 290} 291 292.cal-today:hover { 293 background: #c8e6c9 !important; 294} 295 296.cal-has-events { 297 background: #fffbf0; 298} 299 300.cal-has-events:hover { 301 background: #fff4d9; 302} 303 304.day-num { 305 display: inline-block; 306 font-size: 11px; 307 font-weight: 500; 308 color: #333; 309 padding: 1px 3px; 310} 311 312.cal-today .day-num { 313 background: #008800; 314 color: white; 315 border-radius: 2px; 316 font-weight: 600; 317} 318 319.event-indicators { 320 position: absolute; 321 left: 20px; 322 right: 0; 323 top: 20px; 324 bottom: 2px; 325 display: flex; 326 flex-direction: column; 327 gap: 2px; 328 pointer-events: none; 329} 330 331.event-bar { 332 width: 100%; 333 min-height: 6px; 334 height: 6px; 335 border-radius: 2px; 336 cursor: pointer; 337 pointer-events: auto; 338 transition: all 0.2s; 339 box-shadow: 0 1px 2px rgba(0,0,0,0.1); 340 position: relative; 341} 342 343.event-bar:hover { 344 transform: scaleY(1.3); 345 box-shadow: 0 2px 4px rgba(0,0,0,0.2); 346 z-index: 10; 347} 348 349.event-bar-no-time { 350 /* Events without time appear at top */ 351 order: -1; 352 opacity: 0.9; 353} 354 355.event-bar-timed { 356 /* Events with time are sorted by time */ 357 opacity: 0.95; 358} 359 360/* Multi-day event styling - creates visual continuity */ 361.event-bar-continues { 362 /* Event continues from previous day - extend left to cell edge */ 363 border-top-left-radius: 0; 364 border-bottom-left-radius: 0; 365 margin-left: -20px; 366 padding-left: 20px; 367} 368 369.event-bar-continuing { 370 /* Event continues to next day - extend right to cell edge */ 371 border-top-right-radius: 0; 372 border-bottom-right-radius: 0; 373 margin-right: -2px; 374 padding-right: 2px; 375} 376 377.event-bar-continues.event-bar-continuing { 378 /* Event continues both ways (middle of span) - no border radius, extends both sides */ 379 border-radius: 0; 380} 381 382/* Old event dot - removing */ 383.event-dot { 384 display: none; 385} 386 387/* Event list header - COMPACT */ 388.event-list-header { 389 display: flex; 390 align-items: center; 391 justify-content: space-between; 392 padding: 8px 10px; 393 border-bottom: 1px solid #e0e0e0; 394 background: #fafafa; 395} 396 397.event-list-header-content { 398 display: flex; 399 align-items: center; 400 gap: 6px; 401 flex: 1; 402} 403 404.event-list-header h4 { 405 margin: 0; 406 font-size: 12px; 407 font-weight: 600; 408 color: #2c3e50; 409} 410 411.namespace-badge { 412 background: #e8f5e9; 413 color: #388e3c; 414 padding: 2px 6px; 415 border-radius: 10px; 416 font-size: 9px; 417 font-weight: 600; 418 text-transform: uppercase; 419 letter-spacing: 0.3px; 420} 421 422.add-event-compact { 423 background: #008800; 424 color: white; 425 border: none; 426 padding: 4px 8px; 427 border-radius: 3px; 428 font-size: 11px; 429 font-weight: 500; 430 cursor: pointer; 431 transition: background 0.15s; 432} 433 434.add-event-compact:hover { 435 background: #45a049; 436} 437 438/* Event list scrollable area - COMPACT */ 439.event-list-compact { 440 flex: 1; 441 overflow-y: auto; 442 padding: 6px; 443} 444 445.event-list-compact::-webkit-scrollbar { 446 width: 6px; 447} 448 449.event-list-compact::-webkit-scrollbar-track { 450 background: #f5f5f5; 451} 452 453.event-list-compact::-webkit-scrollbar-thumb { 454 background: #ccc; 455 border-radius: 3px; 456} 457 458.event-list-compact::-webkit-scrollbar-thumb:hover { 459 background: #aaa; 460} 461 462/* Event items in list - SUPER COMPACT with checkbox on right */ 463.event-compact-item { 464 display: flex; 465 align-items: flex-start; 466 margin-bottom: 4px; 467 background: #ffffff; 468 border: 1px solid #e0e0e0; 469 border-left: 3px solid #3498db; 470 border-radius: 3px; 471 padding: 5px 6px; 472 transition: box-shadow 0.15s, background 0.15s, transform 0.15s; 473 gap: 6px; 474 position: relative; 475} 476 477.event-compact-item:hover { 478 box-shadow: 0 1px 3px rgba(0,0,0,0.08); 479 background: #f8f9fa; 480} 481 482.event-highlighted { 483 animation: highlightPulse 0.6s ease-in-out; 484 background: #fff9e6 !important; 485 box-shadow: 0 2px 8px rgba(255, 193, 7, 0.4) !important; 486} 487 488@keyframes highlightPulse { 489 0% { 490 background: #ffffff; 491 box-shadow: 0 0 0 rgba(255, 193, 7, 0); 492 } 493 50% { 494 background: #fffbea; 495 box-shadow: 0 4px 12px rgba(255, 193, 7, 0.6); 496 transform: scale(1.02); 497 } 498 100% { 499 background: #fff9e6; 500 box-shadow: 0 2px 8px rgba(255, 193, 7, 0.4); 501 transform: scale(1); 502 } 503} 504 505.event-completed { 506 opacity: 0.55; 507 background: #f5f5f5; 508} 509 510.event-completed .event-title-compact { 511 text-decoration: line-through; 512 color: #999; 513} 514 515.event-info { 516 flex: 1; 517 min-width: 0; 518 padding-right: 60px; 519 text-align: left; 520} 521 522.event-title-row { 523 display: flex; 524 align-items: center; 525 gap: 4px; 526} 527 528.event-title-compact { 529 font-size: 12px; 530 font-weight: 600; 531 color: #2c3e50; 532 overflow: hidden; 533 text-overflow: ellipsis; 534 white-space: nowrap; 535 text-align: left; 536} 537 538.event-meta-compact { 539 font-size: 10px; 540 color: #666; 541 margin-top: 1px; 542 text-align: left; 543} 544 545.event-date-time { 546 font-weight: 500; 547} 548 549.event-desc-compact { 550 font-size: 10px; 551 color: #666; 552 line-height: 1.4; 553 margin-top: 2px; 554 text-align: left; 555 word-wrap: break-word; 556 overflow-wrap: break-word; 557} 558 559.event-desc-compact img.event-image { 560 max-width: 100%; 561 height: auto; 562 margin: 4px 0; 563 border-radius: 3px; 564 display: block; 565} 566 567.event-desc-compact a { 568 color: #008800; 569 text-decoration: none; 570 border-bottom: 1px dotted #008800; 571} 572 573.event-desc-compact a:hover { 574 color: #388e3c; 575 border-bottom-style: solid; 576} 577 578.event-desc-compact strong, 579.event-desc-compact b { 580 font-weight: 600; 581 color: #333; 582} 583 584.event-desc-compact em, 585.event-desc-compact i { 586 font-style: italic; 587} 588 589.event-desc-compact code { 590 background: #f5f5f5; 591 padding: 1px 3px; 592 border-radius: 2px; 593 font-family: monospace; 594 font-size: 9px; 595} 596 597.event-actions-compact { 598 position: absolute; 599 top: 5px; 600 right: 24px; 601 display: flex; 602 gap: 2px; 603 flex-shrink: 0; 604} 605 606.event-action-btn { 607 background: none; 608 border: none; 609 font-size: 14px; 610 cursor: pointer; 611 padding: 2px; 612 opacity: 0.5; 613 transition: opacity 0.15s, transform 0.15s; 614} 615 616.event-action-btn:hover { 617 opacity: 1; 618 transform: scale(1.15); 619} 620 621.task-checkbox { 622 position: absolute; 623 top: 5px; 624 right: 6px; 625 width: 16px; 626 height: 16px; 627 margin: 0; 628 cursor: pointer; 629 flex-shrink: 0; 630} 631 632.no-events-msg { 633 text-align: center; 634 color: #999; 635 font-size: 12px; 636 font-style: italic; 637 padding: 40px 20px; 638} 639 640/* Sleek Event Dialog - FULLY RESPONSIVE */ 641.event-dialog-compact { 642 position: fixed; 643 top: 0; 644 left: 0; 645 width: 100%; 646 height: 100%; 647 z-index: 9999; 648 display: flex; 649 align-items: center; 650 justify-content: center; 651 animation: fadeIn 0.2s ease; 652 padding: 20px; 653 box-sizing: border-box; 654 overflow-y: auto; 655} 656 657@keyframes fadeIn { 658 from { opacity: 0; } 659 to { opacity: 1; } 660} 661 662.dialog-content-sleek { 663 position: relative; 664 background: #ffffff; 665 width: 100%; 666 max-width: 450px; 667 max-height: calc(100vh - 40px); 668 border-radius: 8px; 669 box-shadow: 0 8px 32px rgba(0,0,0,0.2); 670 z-index: 10000; 671 animation: slideUp 0.3s ease; 672 overflow: hidden; 673 display: flex; 674 flex-direction: column; 675 margin: auto; 676} 677 678/* Mobile responsive dialog */ 679@media (max-width: 768px) { 680 .event-dialog-compact { 681 padding: 10px; 682 } 683 684 .dialog-content-sleek { 685 max-width: 100%; 686 width: calc(100% - 20px); 687 max-height: calc(100vh - 20px); 688 } 689} 690 691@media (max-width: 480px) { 692 .event-dialog-compact { 693 padding: 0; 694 align-items: flex-start; 695 } 696 697 .dialog-content-sleek { 698 width: 100%; 699 max-width: 100%; 700 max-height: 100vh; 701 border-radius: 0; 702 margin: 0; 703 } 704} 705 706@keyframes slideUp { 707 from { 708 transform: translateY(20px); 709 opacity: 0; 710 } 711 to { 712 transform: translateY(0); 713 opacity: 1; 714 } 715} 716 717.dialog-header-sleek { 718 display: flex; 719 align-items: center; 720 justify-content: space-between; 721 padding: 10px 14px; 722 background: #2c3e50; 723 color: white; 724 cursor: move; 725 flex-shrink: 0; 726} 727 728.dialog-drag-handle { 729 cursor: move; 730} 731 732.dialog-header-sleek h3 { 733 margin: 0; 734 font-size: 15px; 735 font-weight: 600; 736} 737 738.dialog-close-btn { 739 background: rgba(255,255,255,0.2); 740 border: none; 741 color: white; 742 font-size: 22px; 743 width: 28px; 744 height: 28px; 745 border-radius: 50%; 746 cursor: pointer; 747 display: flex; 748 align-items: center; 749 justify-content: center; 750 transition: all 0.2s; 751 line-height: 1; 752 padding: 0; 753 flex-shrink: 0; 754} 755 756.dialog-close-btn:hover { 757 background: rgba(255,255,255,0.3); 758 transform: scale(1.1); 759} 760 761.sleek-form { 762 padding: 14px; 763 overflow-y: auto; 764 overflow-x: hidden; 765 flex: 1; 766 max-height: calc(100vh - 160px); 767} 768 769/* Ensure form is scrollable on small screens */ 770@media (max-height: 600px) { 771 .sleek-form { 772 max-height: calc(100vh - 120px); 773 } 774} 775 776@media (max-height: 500px) { 777 .sleek-form { 778 max-height: calc(100vh - 100px); 779 } 780} 781 782.form-field { 783 margin-bottom: 10px; 784} 785 786/* Responsive form fields */ 787@media (max-width: 480px) { 788 .form-field { 789 margin-bottom: 8px; 790 } 791} 792 793.form-field-checkbox { 794 background: #f1f8f4; 795 padding: 8px; 796 border-radius: 4px; 797 border: 1px solid #008800; 798} 799 800.checkbox-label { 801 display: flex; 802 align-items: center; 803 gap: 6px; 804 cursor: pointer; 805 font-size: 11px; 806 font-weight: 500; 807 color: #388e3c; 808} 809 810.checkbox-label input[type="checkbox"] { 811 width: 15px; 812 height: 15px; 813 cursor: pointer; 814} 815 816.recurring-options { 817 background: #f1f8f4; 818 padding: 12px; 819 border-radius: 4px; 820 border: 1px solid #81c784; 821 margin-top: 8px; 822} 823 824.form-row-group { 825 display: grid; 826 grid-template-columns: 1fr 1fr; 827 gap: 10px; 828 margin-bottom: 10px; 829} 830 831@media (max-width: 768px) { 832 .form-row-group { 833 grid-template-columns: 1fr; 834 gap: 8px; 835 } 836} 837 838.field-label { 839 display: block; 840 font-size: 11px; 841 font-weight: 600; 842 color: #2c3e50; 843 margin-bottom: 5px; 844 text-transform: uppercase; 845 letter-spacing: 0.3px; 846} 847 848@media (max-width: 480px) { 849 .field-label { 850 font-size: 10px; 851 } 852} 853 854.input-sleek { 855 width: 100%; 856 padding: 8px 10px; 857 border: 2px solid #e0e0e0; 858 border-radius: 4px; 859 font-size: 13px; 860 font-family: inherit; 861 transition: all 0.2s; 862 background: #fafafa; 863 box-sizing: border-box; 864} 865 866.input-sleek:focus { 867 outline: none; 868 border-color: #008800; 869 background: white; 870 box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1); 871} 872 873.input-date { 874 font-weight: 500; 875 color: #2c3e50; 876 cursor: pointer; 877} 878 879.input-date::-webkit-calendar-picker-indicator { 880 cursor: pointer; 881 font-size: 14px; 882 padding: 2px; 883} 884 885.textarea-sleek { 886 resize: vertical; 887 min-height: 60px; 888 line-height: 1.4; 889} 890 891.color-picker-container { 892 display: flex; 893 align-items: center; 894 gap: 10px; 895} 896 897.input-color-sleek { 898 width: 50px; 899 height: 38px; 900 border: 2px solid #e0e0e0; 901 border-radius: 6px; 902 cursor: pointer; 903 transition: all 0.2s; 904} 905 906.input-color-sleek:hover { 907 border-color: #008800; 908 transform: scale(1.05); 909} 910 911.color-label { 912 font-size: 11px; 913 color: #666; 914} 915 916.form-row-group { 917 display: grid; 918 grid-template-columns: 2fr 1fr; 919 gap: 16px; 920 margin-bottom: 20px; 921} 922 923.field-label { 924 display: block; 925 font-size: 13px; 926 font-weight: 600; 927 color: #2c3e50; 928 margin-bottom: 8px; 929 text-transform: uppercase; 930 letter-spacing: 0.5px; 931} 932 933.input-sleek { 934 width: 100%; 935 padding: 12px 16px; 936 border: 2px solid #e0e0e0; 937 border-radius: 8px; 938 font-size: 15px; 939 font-family: inherit; 940 transition: all 0.2s; 941 background: #fafafa; 942 box-sizing: border-box; 943} 944 945.input-sleek:focus { 946 outline: none; 947 border-color: #667eea; 948 background: white; 949 box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); 950} 951 952.input-date { 953 font-weight: 500; 954 color: #2c3e50; 955 cursor: pointer; 956} 957 958.input-date::-webkit-calendar-picker-indicator { 959 cursor: pointer; 960 font-size: 18px; 961 padding: 4px; 962} 963 964.textarea-sleek { 965 resize: vertical; 966 min-height: 80px; 967 line-height: 1.5; 968} 969 970.color-picker-container { 971 display: flex; 972 align-items: center; 973 gap: 12px; 974} 975 976.input-color-sleek { 977 width: 60px; 978 height: 44px; 979 border: 2px solid #e0e0e0; 980 border-radius: 8px; 981 cursor: pointer; 982 transition: all 0.2s; 983} 984 985.input-color-sleek:hover { 986 border-color: #667eea; 987 transform: scale(1.05); 988} 989 990.color-label { 991 font-size: 13px; 992 color: #666; 993} 994 995.form-field-checkbox { 996 background: #f1f8f4; 997 padding: 12px; 998 border-radius: 6px; 999 border: 1px solid #008800; 1000} 1001 1002.checkbox-label { 1003 display: flex; 1004 align-items: center; 1005 gap: 8px; 1006 cursor: pointer; 1007 font-size: 13px; 1008 font-weight: 500; 1009 color: #388e3c; 1010} 1011 1012.checkbox-label input[type="checkbox"] { 1013 width: 18px; 1014 height: 18px; 1015 cursor: pointer; 1016} 1017 1018.form-row-group { 1019 display: grid; 1020 grid-template-columns: 1fr 1fr; 1021 gap: 12px; 1022 margin-bottom: 16px; 1023} 1024 1025@media (max-width: 768px) { 1026 .form-row-group { 1027 grid-template-columns: 1fr; 1028 } 1029} 1030 1031.dialog-actions-sleek { 1032 display: flex; 1033 gap: 8px; 1034 padding: 12px 14px; 1035 background: #f8f9fa; 1036 border-top: 1px solid #e0e0e0; 1037 justify-content: flex-end; 1038 flex-shrink: 0; 1039} 1040 1041/* Ensure buttons are visible on small screens */ 1042@media (max-width: 480px) { 1043 .dialog-actions-sleek { 1044 padding: 10px; 1045 } 1046 1047 .btn-sleek { 1048 flex: 1; 1049 justify-content: center; 1050 } 1051} 1052 1053.btn-sleek { 1054 padding: 7px 14px; 1055 border: none; 1056 border-radius: 4px; 1057 font-size: 12px; 1058 font-weight: 600; 1059 cursor: pointer; 1060 transition: all 0.2s; 1061 display: inline-flex; 1062 align-items: center; 1063 gap: 4px; 1064} 1065 1066.btn-cancel-sleek { 1067 background: #e0e0e0; 1068 color: #555; 1069} 1070 1071.btn-cancel-sleek:hover { 1072 background: #d0d0d0; 1073} 1074 1075.btn-save-sleek { 1076 background: #008800; 1077 color: white; 1078 box-shadow: 0 2px 4px rgba(33, 150, 243, 0.3); 1079} 1080 1081.btn-save-sleek:hover { 1082 background: #388e3c; 1083 box-shadow: 0 4px 8px rgba(33, 150, 243, 0.4); 1084} 1085 1086.btn-save-sleek:active { 1087 transform: translateY(1px); 1088} 1089 1090/* Day popup */ 1091.day-popup { 1092 position: fixed; 1093 top: 0; 1094 left: 0; 1095 width: 100%; 1096 height: 100%; 1097 z-index: 10000; 1098 display: flex; 1099 align-items: center; 1100 justify-content: center; 1101 padding: 20px; 1102 box-sizing: border-box; 1103} 1104 1105.day-popup-overlay { 1106 position: absolute; 1107 top: 0; 1108 left: 0; 1109 width: 100%; 1110 height: 100%; 1111 background: rgba(0,0,0,0.5); 1112} 1113 1114.day-popup-content { 1115 position: relative; 1116 background: white; 1117 width: 100%; 1118 max-width: 450px; 1119 max-height: calc(100vh - 40px); 1120 border-radius: 8px; 1121 box-shadow: 0 4px 20px rgba(0,0,0,0.3); 1122 z-index: 10001; 1123 display: flex; 1124 flex-direction: column; 1125} 1126 1127/* Responsive day popup */ 1128@media (max-width: 768px) { 1129 .day-popup { 1130 padding: 10px; 1131 } 1132 1133 .day-popup-content { 1134 max-width: 100%; 1135 max-height: calc(100vh - 20px); 1136 } 1137} 1138 1139@media (max-width: 480px) { 1140 .day-popup { 1141 padding: 0; 1142 } 1143 1144 .day-popup-content { 1145 width: 100%; 1146 max-width: 100%; 1147 max-height: 100vh; 1148 border-radius: 0; 1149 } 1150} 1151 1152.day-popup-header { 1153 display: flex; 1154 align-items: center; 1155 justify-content: space-between; 1156 padding: 16px 20px; 1157 border-bottom: 2px solid #e0e0e0; 1158 background: #fafafa; 1159 border-radius: 8px 8px 0 0; 1160} 1161 1162.day-popup-header h4 { 1163 margin: 0; 1164 font-size: 16px; 1165 font-weight: 600; 1166 color: #2c3e50; 1167} 1168 1169.popup-close { 1170 background: none; 1171 border: none; 1172 font-size: 28px; 1173 color: #999; 1174 cursor: pointer; 1175 width: 32px; 1176 height: 32px; 1177 display: flex; 1178 align-items: center; 1179 justify-content: center; 1180 border-radius: 4px; 1181 transition: all 0.15s; 1182 line-height: 1; 1183 padding: 0; 1184} 1185 1186.popup-close:hover { 1187 background: #f0f0f0; 1188 color: #333; 1189} 1190 1191.day-popup-body { 1192 flex: 1; 1193 overflow-y: auto; 1194 padding: 16px 20px; 1195 max-height: 400px; 1196} 1197 1198.popup-events-list { 1199 display: flex; 1200 flex-direction: column; 1201 gap: 12px; 1202} 1203 1204.popup-event-item { 1205 display: flex; 1206 background: #f8f9fa; 1207 border: 1px solid #e0e0e0; 1208 border-radius: 6px; 1209 overflow: hidden; 1210 transition: box-shadow 0.15s; 1211} 1212 1213.popup-event-item:hover { 1214 box-shadow: 0 2px 6px rgba(0,0,0,0.1); 1215} 1216 1217.popup-event-content { 1218 flex: 1; 1219 padding: 12px; 1220} 1221 1222.popup-event-title { 1223 font-size: 14px; 1224 font-weight: 600; 1225 color: #2c3e50; 1226 margin-bottom: 6px; 1227} 1228 1229.popup-event-time { 1230 font-size: 12px; 1231 color: #008800; 1232 font-weight: 500; 1233 margin-bottom: 6px; 1234} 1235 1236.popup-event-desc { 1237 font-size: 12px; 1238 color: #666; 1239 line-height: 1.5; 1240 margin-bottom: 10px; 1241} 1242 1243.popup-event-actions { 1244 display: flex; 1245 gap: 8px; 1246} 1247 1248.day-popup-footer { 1249 padding: 16px 20px; 1250 border-top: 1px solid #e0e0e0; 1251 background: #fafafa; 1252 border-radius: 0 0 8px 8px; 1253} 1254 1255.btn-add-event { 1256 width: 100%; 1257 background: #008800; 1258 color: white; 1259 border: none; 1260 padding: 10px 16px; 1261 border-radius: 6px; 1262 font-size: 14px; 1263 font-weight: 500; 1264 cursor: pointer; 1265 transition: background 0.15s; 1266} 1267 1268.btn-add-event:hover { 1269 background: #45a049; 1270} 1271 1272.dialog-overlay { 1273 position: absolute; 1274 top: 0; 1275 left: 0; 1276 width: 100%; 1277 height: 100%; 1278 background: rgba(0,0,0,0.4); 1279} 1280 1281.dialog-content-compact { 1282 position: relative; 1283 background: white; 1284 width: 400px; 1285 border-radius: 6px; 1286 box-shadow: 0 4px 12px rgba(0,0,0,0.2); 1287 padding: 20px; 1288 z-index: 10000; 1289} 1290 1291.dialog-content-compact h4 { 1292 margin: 0 0 16px 0; 1293 font-size: 16px; 1294 font-weight: 600; 1295 color: #2c3e50; 1296} 1297 1298.form-row { 1299 margin-bottom: 14px; 1300} 1301 1302.form-row-date { 1303 background: #f1f8f4; 1304 padding: 10px; 1305 border-radius: 6px; 1306 border: 2px solid #008800; 1307 margin-bottom: 18px; 1308} 1309 1310.form-row-date label { 1311 color: #388e3c; 1312 font-size: 13px; 1313} 1314 1315.form-row label { 1316 display: block; 1317 font-size: 12px; 1318 font-weight: 600; 1319 color: #555; 1320 margin-bottom: 4px; 1321} 1322 1323.form-row input[type="text"], 1324.form-row input[type="time"], 1325.form-row input[type="date"], 1326.form-row input[type="color"], 1327.form-row textarea { 1328 width: 100%; 1329 padding: 8px; 1330 border: 1px solid #d0d0d0; 1331 border-radius: 4px; 1332 font-size: 13px; 1333 box-sizing: border-box; 1334 font-family: inherit; 1335} 1336 1337.form-row input[type="color"] { 1338 height: 36px; 1339 padding: 2px; 1340} 1341 1342.form-row textarea { 1343 resize: vertical; 1344} 1345 1346.dialog-actions { 1347 display: flex; 1348 gap: 8px; 1349 justify-content: flex-end; 1350 margin-top: 16px; 1351} 1352 1353.btn-save, 1354.btn-cancel { 1355 padding: 8px 16px; 1356 border: none; 1357 border-radius: 4px; 1358 font-size: 13px; 1359 font-weight: 500; 1360 cursor: pointer; 1361 transition: all 0.15s; 1362} 1363 1364.btn-save { 1365 background: #008800; 1366 color: white; 1367} 1368 1369.btn-save:hover { 1370 background: #45a049; 1371} 1372 1373.btn-cancel { 1374 background: #f5f5f5; 1375 color: #555; 1376 border: 1px solid #d0d0d0; 1377} 1378 1379.btn-cancel:hover { 1380 background: #e8e8e8; 1381} 1382 1383/* Standalone event list */ 1384.eventlist-standalone { 1385 max-width: 700px; 1386 margin: 20px auto; 1387 background: white; 1388 border: 1px solid #d0d0d0; 1389 border-radius: 6px; 1390 padding: 20px; 1391} 1392 1393.eventlist-standalone h3 { 1394 margin: 0 0 20px 0; 1395 font-size: 18px; 1396 font-weight: 600; 1397 color: #2c3e50; 1398 border-bottom: 2px solid #008800; 1399 padding-bottom: 10px; 1400} 1401 1402/* Compact Event List Widget */ 1403.eventlist-compact-widget { 1404 background: #ffffff; 1405 border: 1px solid #d0d0d0; 1406 border-radius: 6px; 1407 box-shadow: 0 2px 6px rgba(0,0,0,0.08); 1408 overflow: hidden; 1409 display: flex; 1410 flex-direction: column; 1411 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 1412} 1413 1414.eventlist-widget-header { 1415 background: #008800; 1416 color: white; 1417 padding: 8px 12px; 1418 flex-shrink: 0; 1419} 1420 1421.eventlist-widget-header h4 { 1422 margin: 0; 1423 font-size: 13px; 1424 font-weight: 600; 1425} 1426 1427.eventlist-widget-content { 1428 overflow-y: auto; 1429 padding: 8px; 1430 flex: 1; 1431} 1432 1433.eventlist-widget-date { 1434 font-size: 11px; 1435 font-weight: 600; 1436 color: #666; 1437 margin: 8px 0 4px 0; 1438 padding-bottom: 2px; 1439 border-bottom: 1px solid #e0e0e0; 1440} 1441 1442.eventlist-widget-item { 1443 background: #fafafa; 1444 border: 1px solid #e0e0e0; 1445 border-left: 3px solid #3498db; 1446 border-radius: 3px; 1447 padding: 6px 8px; 1448 margin-bottom: 6px; 1449 transition: all 0.15s; 1450} 1451 1452.eventlist-widget-item:hover { 1453 background: #f0f0f0; 1454 box-shadow: 0 1px 3px rgba(0,0,0,0.1); 1455} 1456 1457.eventlist-widget-title { 1458 font-size: 12px; 1459 font-weight: 600; 1460 color: #2c3e50; 1461 margin-bottom: 2px; 1462} 1463 1464.eventlist-widget-time { 1465 font-size: 11px; 1466 color: #666; 1467 margin-bottom: 4px; 1468} 1469 1470.eventlist-widget-desc { 1471 font-size: 11px; 1472 color: #555; 1473 margin-top: 4px; 1474 line-height: 1.4; 1475} 1476 1477.eventlist-widget-desc img { 1478 max-width: 100%; 1479 height: auto; 1480 border-radius: 3px; 1481 margin: 4px 0; 1482} 1483 1484.eventlist-widget-desc a { 1485 color: #008800; 1486 text-decoration: none; 1487 border-bottom: 1px dotted #008800; 1488} 1489 1490.eventlist-widget-desc a:hover { 1491 border-bottom-style: solid; 1492} 1493 1494.eventlist-widget-empty { 1495 text-align: center; 1496 color: #999; 1497 font-size: 12px; 1498 padding: 20px; 1499 margin: 0; 1500} 1501 1502/* Standalone event panel (right panel only) */ 1503.event-panel-standalone { 1504 width: 320px; 1505 background: #ffffff; 1506 border: 1px solid #d0d0d0; 1507 border-radius: 6px; 1508 box-shadow: 0 2px 6px rgba(0,0,0,0.08); 1509 display: flex; 1510 flex-direction: column; 1511 max-height: 600px; 1512 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 1513 font-size: 13px; 1514} 1515 1516.event-panel-standalone .event-list-compact { 1517 overflow-y: auto; 1518 flex: 1; 1519 padding: 10px; 1520} 1521 1522.panel-standalone-header { 1523 display: flex; 1524 align-items: center; 1525 gap: 8px; 1526 padding: 12px 12px; 1527 background: #fafafa; 1528 border-bottom: 1px solid #e0e0e0; 1529 flex-shrink: 0; 1530} 1531 1532.panel-header-content { 1533 flex: 1; 1534 display: flex; 1535 flex-direction: column; 1536 align-items: center; 1537 gap: 4px; 1538} 1539 1540.panel-standalone-header h3 { 1541 margin: 0; 1542 font-size: 12px; 1543 font-weight: 600; 1544 color: #2c3e50; 1545 white-space: nowrap; 1546} 1547 1548.panel-standalone-header .calendar-month-picker { 1549 cursor: pointer; 1550 user-select: none; 1551 transition: all 0.15s; 1552 padding: 4px 8px; 1553 border-radius: 4px; 1554 white-space: nowrap; 1555} 1556 1557.panel-standalone-header .calendar-month-picker:hover { 1558 background: #e8e8e8; 1559 color: #008800; 1560} 1561 1562.panel-standalone-header .namespace-badge { 1563 font-size: 11px; 1564 font-weight: 500; 1565 color: #388e3c; 1566 background: #e8f5e9; 1567 padding: 2px 8px; 1568 border-radius: 3px; 1569 text-decoration: none; 1570 transition: all 0.15s; 1571 display: inline-block; 1572} 1573 1574.panel-standalone-header .namespace-badge:hover { 1575 background: #c8e6c9; 1576 color: #2e7d32; 1577} 1578 1579.panel-standalone-actions { 1580 padding: 10px 16px; 1581 background: #ffffff; 1582 border-bottom: 1px solid #e0e0e0; 1583 flex-shrink: 0; 1584} 1585 1586.panel-standalone-actions .add-event-compact { 1587 width: 100%; 1588} 1589 1590.eventlist-day-group { 1591 margin-bottom: 24px; 1592} 1593 1594.eventlist-date { 1595 margin: 0 0 12px 0; 1596 font-size: 14px; 1597 font-weight: 600; 1598 color: #2c3e50; 1599 background: #f8f8f8; 1600 padding: 8px 12px; 1601 border-left: 4px solid #008800; 1602} 1603 1604.eventlist-item { 1605 display: flex; 1606 margin-bottom: 10px; 1607 background: white; 1608 border: 1px solid #e0e0e0; 1609 border-radius: 4px; 1610 overflow: hidden; 1611} 1612 1613.eventlist-content { 1614 flex: 1; 1615 padding: 12px; 1616 display: flex; 1617 align-items: center; 1618 gap: 12px; 1619} 1620 1621.eventlist-time { 1622 font-size: 12px; 1623 font-weight: 600; 1624 color: #008800; 1625 min-width: 50px; 1626} 1627 1628.eventlist-title { 1629 font-size: 14px; 1630 font-weight: 500; 1631 color: #2c3e50; 1632} 1633 1634.eventlist-desc { 1635 font-size: 12px; 1636 color: #666; 1637 margin-top: 6px; 1638 line-height: 1.4; 1639} 1640 1641/* =================================== 1642 MOBILE RESPONSIVE - EVENTLIST & EVENTPANEL 1643 =================================== */ 1644 1645/* Tablet and below (768px) */ 1646@media (max-width: 768px) { 1647 /* Event Panel Standalone */ 1648 .event-panel-standalone { 1649 width: 100%; 1650 max-width: 100%; 1651 border-radius: 0; 1652 max-height: none; 1653 min-height: 400px; 1654 } 1655 1656 /* Compact Event List Widget */ 1657 .eventlist-compact-widget { 1658 width: 100% !important; 1659 max-width: 100%; 1660 border-radius: 0; 1661 } 1662 1663 .eventlist-widget-header h4 { 1664 font-size: 14px; 1665 } 1666 1667 .eventlist-widget-title { 1668 font-size: 13px; 1669 } 1670 1671 .eventlist-widget-time { 1672 font-size: 12px; 1673 } 1674 1675 /* Standalone event list (old style) */ 1676 .eventlist-standalone { 1677 max-width: 100%; 1678 margin: 10px; 1679 padding: 15px; 1680 border-radius: 0; 1681 } 1682 1683 .eventlist-standalone h3 { 1684 font-size: 16px; 1685 } 1686} 1687 1688/* Mobile (480px and below) */ 1689@media (max-width: 480px) { 1690 /* Event Panel Standalone */ 1691 .event-panel-standalone { 1692 font-size: 12px; 1693 min-height: 300px; 1694 } 1695 1696 .panel-standalone-header { 1697 padding: 10px 12px; 1698 } 1699 1700 .panel-standalone-header h3 { 1701 font-size: 12px; 1702 } 1703 1704 .panel-standalone-actions { 1705 padding: 8px 12px; 1706 } 1707 1708 .event-panel-standalone .event-list-compact { 1709 padding: 8px; 1710 } 1711 1712 /* Compact Event List Widget */ 1713 .eventlist-compact-widget { 1714 min-width: 280px; 1715 } 1716 1717 .eventlist-widget-header { 1718 padding: 6px 10px; 1719 } 1720 1721 .eventlist-widget-header h4 { 1722 font-size: 13px; 1723 } 1724 1725 .eventlist-widget-content { 1726 padding: 6px; 1727 } 1728 1729 .eventlist-widget-item { 1730 padding: 5px 6px; 1731 margin-bottom: 5px; 1732 } 1733 1734 .eventlist-widget-title { 1735 font-size: 12px; 1736 } 1737 1738 .eventlist-widget-time { 1739 font-size: 11px; 1740 } 1741 1742 .eventlist-widget-desc { 1743 font-size: 11px; 1744 } 1745 1746 /* Standalone event list */ 1747 .eventlist-standalone { 1748 margin: 5px; 1749 padding: 10px; 1750 } 1751 1752 .eventlist-standalone h3 { 1753 font-size: 14px; 1754 margin-bottom: 15px; 1755 } 1756 1757 .eventlist-day-group { 1758 margin-bottom: 18px; 1759 } 1760 1761 .eventlist-date { 1762 font-size: 13px; 1763 padding: 6px 10px; 1764 } 1765 1766 .eventlist-title { 1767 font-size: 13px; 1768 } 1769 1770 .eventlist-time { 1771 font-size: 11px; 1772 } 1773 1774 .eventlist-desc { 1775 font-size: 11px; 1776 } 1777} 1778 1779/* Very small mobile (320px) */ 1780@media (max-width: 320px) { 1781 .eventlist-compact-widget { 1782 min-width: 100%; 1783 } 1784 1785 .event-panel-standalone { 1786 min-height: 250px; 1787 } 1788 1789 .eventlist-widget-header h4 { 1790 font-size: 12px; 1791 } 1792 1793 .eventlist-widget-title { 1794 font-size: 11px; 1795 } 1796 1797 .panel-standalone-header h3 { 1798 font-size: 12px; 1799 } 1800} 1801 1802