slack status without the slack status.zzstoatzz.io/
quickslice
at main 13 kB view raw
1:root { 2 --bg: #0a0a0a; 3 --bg-card: #1a1a1a; 4 --text: #ffffff; 5 --text-secondary: #888; 6 --accent: #4a9eff; 7 --border: #2a2a2a; 8 --radius: 12px; 9 --font-family: ui-monospace, "SF Mono", Monaco, monospace; 10} 11 12[data-theme="light"] { 13 --bg: #ffffff; 14 --bg-card: #f5f5f5; 15 --text: #1a1a1a; 16 --text-secondary: #666; 17 --border: #e0e0e0; 18} 19 20* { 21 margin: 0; 22 padding: 0; 23 box-sizing: border-box; 24} 25 26/* Theme-aware scrollbars */ 27::-webkit-scrollbar { 28 width: 8px; 29 height: 8px; 30} 31 32::-webkit-scrollbar-track { 33 background: var(--bg); 34} 35 36::-webkit-scrollbar-thumb { 37 background: var(--border); 38 border-radius: 4px; 39} 40 41::-webkit-scrollbar-thumb:hover { 42 background: var(--text-secondary); 43} 44 45/* Firefox */ 46* { 47 scrollbar-width: thin; 48 scrollbar-color: var(--border) var(--bg); 49} 50 51body { 52 font-family: var(--font-family); 53 background: var(--bg); 54 color: var(--text); 55 line-height: 1.6; 56 min-height: 100vh; 57} 58 59#app { 60 max-width: 600px; 61 margin: 0 auto; 62 padding: 2rem 1rem; 63} 64 65header { 66 display: flex; 67 justify-content: space-between; 68 align-items: center; 69 margin-bottom: 2rem; 70 padding-bottom: 1rem; 71 border-bottom: 1px solid var(--border); 72} 73 74header h1 { 75 font-size: 1.5rem; 76 font-weight: 600; 77} 78 79nav { 80 display: flex; 81 gap: 1rem; 82 align-items: center; 83} 84 85nav a { 86 color: var(--text-secondary); 87 text-decoration: none; 88} 89 90nav a:hover { 91 color: var(--accent); 92} 93 94.nav-btn { 95 display: flex; 96 align-items: center; 97 justify-content: center; 98 padding: 0.5rem; 99 border-radius: 8px; 100 transition: background 0.15s, color 0.15s; 101 color: var(--text-secondary); 102 background: none; 103 border: none; 104 cursor: pointer; 105} 106 107.nav-btn:hover { 108 background: var(--bg-card); 109 color: var(--accent); 110} 111 112.nav-btn.active { 113 color: var(--accent); 114} 115 116.nav-btn svg { 117 display: block; 118} 119 120#theme-toggle { 121 background: none; 122 border: 1px solid var(--border); 123 border-radius: 8px; 124 padding: 0.5rem; 125 cursor: pointer; 126 font-size: 1rem; 127} 128 129#theme-toggle .sun { display: none; } 130#theme-toggle .moon { display: inline; color: var(--text); } 131[data-theme="light"] #theme-toggle .sun { display: inline; color: var(--text); } 132[data-theme="light"] #theme-toggle .moon { display: none; } 133 134.hidden { display: none !important; } 135.center { text-align: center; padding: 2rem; } 136 137/* Login form */ 138#login-form { 139 display: flex; 140 gap: 0.5rem; 141 margin-top: 1rem; 142 justify-content: center; 143} 144 145#login-form input { 146 padding: 0.75rem 1rem; 147 border: 1px solid var(--border); 148 border-radius: var(--radius); 149 background: var(--bg-card); 150 color: var(--text); 151 font-family: inherit; 152 font-size: 1rem; 153 width: 200px; 154} 155 156#login-form button, button[type="submit"] { 157 padding: 0.75rem 1.5rem; 158 background: var(--accent); 159 color: white; 160 border: none; 161 border-radius: var(--radius); 162 cursor: pointer; 163 font-family: inherit; 164 font-size: 1rem; 165} 166 167#login-form button:hover, button[type="submit"]:hover { 168 opacity: 0.9; 169} 170 171/* Profile card */ 172.profile-card { 173 background: var(--bg-card); 174 border: 1px solid var(--border); 175 border-radius: var(--radius); 176 padding: 2rem; 177 margin-bottom: 1.5rem; 178} 179 180.current-status { 181 display: flex; 182 flex-direction: column; 183 align-items: center; 184 gap: 1rem; 185 text-align: center; 186} 187 188.big-emoji { 189 font-size: 4rem; 190 line-height: 1; 191} 192 193.big-emoji img { 194 width: 4rem; 195 height: 4rem; 196 object-fit: contain; 197} 198 199.status-info { 200 display: flex; 201 flex-direction: column; 202 gap: 0.25rem; 203} 204 205#current-text { 206 font-size: 1.25rem; 207} 208 209.meta { 210 color: var(--text-secondary); 211 font-size: 0.875rem; 212} 213 214/* Status form */ 215.status-form { 216 background: var(--bg-card); 217 border: 1px solid var(--border); 218 border-radius: var(--radius); 219 padding: 1rem; 220 margin-bottom: 1.5rem; 221} 222 223.emoji-input-row { 224 display: flex; 225 gap: 0.5rem; 226 margin-bottom: 0.75rem; 227} 228 229.emoji-input-row input { 230 flex: 1; 231 padding: 0.75rem; 232 border: 1px solid var(--border); 233 border-radius: 8px; 234 background: var(--bg); 235 color: var(--text); 236 font-family: inherit; 237 font-size: 1rem; 238} 239 240#emoji-input { 241 max-width: 150px; 242} 243 244.form-actions { 245 display: flex; 246 gap: 0.5rem; 247 justify-content: flex-end; 248} 249 250.form-actions select { 251 padding: 0.75rem; 252 border: 1px solid var(--border); 253 border-radius: 8px; 254 background: var(--bg); 255 color: var(--text); 256 font-family: inherit; 257} 258 259.custom-datetime { 260 padding: 0.75rem; 261 border: 1px solid var(--border); 262 border-radius: 8px; 263 background: var(--bg); 264 color: var(--text); 265 font-family: inherit; 266} 267 268/* History */ 269.history { 270 margin-bottom: 2rem; 271} 272 273.history h2 { 274 font-size: 0.875rem; 275 text-transform: uppercase; 276 letter-spacing: 0.05em; 277 color: var(--text-secondary); 278 margin-bottom: 1rem; 279} 280 281#history-list { 282 display: flex; 283 flex-direction: column; 284 gap: 0.75rem; 285} 286 287/* Feed list */ 288.feed-list { 289 display: flex; 290 flex-direction: column; 291 gap: 1rem; 292} 293 294/* Status item (used in both history and feed) */ 295.status-item { 296 display: flex; 297 gap: 1rem; 298 padding: 1rem; 299 background: var(--bg-card); 300 border: 1px solid var(--border); 301 border-radius: var(--radius); 302 align-items: flex-start; 303} 304 305.status-item:hover { 306 border-color: var(--accent); 307} 308 309.status-item .emoji { 310 font-size: 1.5rem; 311 line-height: 1; 312 flex-shrink: 0; 313} 314 315.status-item .emoji img { 316 width: 1.5rem; 317 height: 1.5rem; 318 object-fit: contain; 319} 320 321.status-item .content { 322 flex: 1; 323 min-width: 0; 324} 325 326.status-item .author { 327 color: var(--text-secondary); 328 font-weight: 600; 329 text-decoration: none; 330} 331 332.status-item .author:hover { 333 color: var(--accent); 334} 335 336.status-item .text { 337 margin-left: 0.5rem; 338} 339 340.status-item .time { 341 display: block; 342 font-size: 0.875rem; 343 color: var(--text-secondary); 344 margin-top: 0.25rem; 345} 346 347.delete-btn { 348 background: transparent; 349 border: none; 350 color: var(--text-secondary); 351 cursor: pointer; 352 padding: 0.25rem; 353 border-radius: 4px; 354 opacity: 0; 355 transition: opacity 0.15s, color 0.15s; 356 flex-shrink: 0; 357} 358 359.status-item:hover .delete-btn { 360 opacity: 1; 361} 362 363.delete-btn:hover { 364 color: #e74c3c; 365} 366 367/* Logout */ 368.logout-btn { 369 display: block; 370 margin: 0 auto; 371 padding: 0.5rem 1rem; 372 background: none; 373 border: 1px solid var(--border); 374 border-radius: 8px; 375 color: var(--text-secondary); 376 cursor: pointer; 377 font-family: inherit; 378} 379 380.logout-btn:hover { 381 border-color: var(--text); 382 color: var(--text); 383} 384 385/* Load more */ 386#load-more-btn { 387 padding: 0.75rem 1.5rem; 388 background: var(--bg-card); 389 border: 1px solid var(--border); 390 border-radius: var(--radius); 391 color: var(--text); 392 cursor: pointer; 393 font-family: inherit; 394} 395 396#load-more-btn:hover { 397 border-color: var(--accent); 398} 399 400/* Emoji trigger button */ 401.emoji-trigger { 402 width: 3rem; 403 height: 3rem; 404 border: none; 405 border-radius: 8px; 406 background: transparent; 407 cursor: pointer; 408 display: flex; 409 align-items: center; 410 justify-content: center; 411 font-size: 1.75rem; 412 flex-shrink: 0; 413} 414 415.emoji-trigger:hover { 416 background: var(--bg-card); 417} 418 419.emoji-trigger img { 420 width: 2.5rem; 421 height: 2.5rem; 422 object-fit: contain; 423} 424 425/* Emoji picker overlay */ 426.emoji-picker-overlay { 427 position: fixed; 428 inset: 0; 429 background: rgba(0, 0, 0, 0.7); 430 display: flex; 431 align-items: center; 432 justify-content: center; 433 z-index: 1000; 434 padding: 1rem; 435} 436 437.emoji-picker { 438 background: var(--bg-card); 439 border: 1px solid var(--border); 440 border-radius: var(--radius); 441 width: 100%; 442 max-width: 600px; 443 height: 90vh; 444 max-height: 700px; 445 display: flex; 446 flex-direction: column; 447 overflow: hidden; 448} 449 450.emoji-picker-header { 451 display: flex; 452 justify-content: space-between; 453 align-items: center; 454 padding: 1rem; 455 border-bottom: 1px solid var(--border); 456} 457 458.emoji-picker-header h3 { 459 font-size: 1rem; 460 font-weight: 600; 461} 462 463.emoji-picker-close { 464 background: none; 465 border: none; 466 color: var(--text-secondary); 467 cursor: pointer; 468 font-size: 1.25rem; 469 padding: 0.25rem; 470} 471 472.emoji-picker-close:hover { 473 color: var(--text); 474} 475 476.emoji-search { 477 margin: 0.75rem; 478 padding: 0.5rem 0.75rem; 479 border: 1px solid var(--border); 480 border-radius: 8px; 481 background: var(--bg); 482 color: var(--text); 483 font-family: inherit; 484 font-size: 0.875rem; 485} 486 487.emoji-categories { 488 display: flex; 489 gap: 0.25rem; 490 padding: 0 0.75rem; 491 overflow-x: auto; 492 flex-shrink: 0; 493} 494 495.category-btn { 496 padding: 0.5rem; 497 border: none; 498 background: none; 499 cursor: pointer; 500 font-size: 1.25rem; 501 border-radius: 8px; 502 opacity: 0.5; 503 transition: opacity 0.15s; 504} 505 506.category-btn:hover, .category-btn.active { 507 opacity: 1; 508 background: var(--bg); 509} 510 511.emoji-grid { 512 padding: 0.75rem; 513 display: grid; 514 grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); 515 gap: 0.25rem; 516 overflow-y: auto; 517 flex: 1; 518 min-height: 200px; 519 align-content: start; 520} 521 522.emoji-grid.bufo-grid { 523 grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); 524 gap: 0.5rem; 525} 526 527.emoji-btn { 528 padding: 0.5rem; 529 border: none; 530 background: none; 531 cursor: pointer; 532 font-size: 1.5rem; 533 border-radius: 8px; 534 transition: background 0.15s; 535} 536 537.emoji-btn:hover { 538 background: var(--bg); 539} 540 541/* Consistent sizing for mixed emoji/bufo grids (frequent tab) */ 542.emoji-grid .emoji-btn { 543 width: 48px; 544 height: 48px; 545 display: flex; 546 align-items: center; 547 justify-content: center; 548 font-size: 1.75rem; 549} 550 551.bufo-btn { 552 padding: 0.25rem; 553} 554 555.bufo-grid .bufo-btn { 556 width: 64px; 557 height: 64px; 558} 559 560.bufo-btn img { 561 width: 100%; 562 height: 100%; 563 max-width: 48px; 564 max-height: 48px; 565 object-fit: contain; 566} 567 568.loading { 569 grid-column: 1 / -1; 570 text-align: center; 571 color: var(--text-secondary); 572 padding: 2rem; 573} 574 575.no-results { 576 grid-column: 1 / -1; 577 text-align: center; 578 color: var(--text-secondary); 579 padding: 2rem; 580} 581 582/* Custom emoji input */ 583.custom-emoji-input { 584 grid-column: 1 / -1; 585 display: flex; 586 gap: 0.5rem; 587 margin-bottom: 1rem; 588} 589 590.custom-emoji-input input { 591 flex: 1; 592 padding: 0.5rem 0.75rem; 593 border: 1px solid var(--border); 594 border-radius: 8px; 595 background: var(--bg); 596 color: var(--text); 597 font-family: inherit; 598} 599 600.custom-emoji-input button { 601 padding: 0.5rem 1rem; 602 background: var(--accent); 603 color: white; 604 border: none; 605 border-radius: 8px; 606 cursor: pointer; 607 font-family: inherit; 608} 609 610.custom-emoji-preview { 611 grid-column: 1 / -1; 612 display: flex; 613 justify-content: center; 614 min-height: 80px; 615 align-items: center; 616} 617 618.bufo-helper { 619 padding: 0.75rem; 620 text-align: center; 621 border-top: 1px solid var(--border); 622} 623 624.bufo-helper a { 625 color: var(--accent); 626 font-size: 0.875rem; 627} 628 629/* Settings Modal */ 630.settings-overlay { 631 position: fixed; 632 top: 0; 633 left: 0; 634 right: 0; 635 bottom: 0; 636 background: rgba(0, 0, 0, 0.7); 637 display: flex; 638 align-items: center; 639 justify-content: center; 640 z-index: 1000; 641 padding: 1rem; 642} 643 644.settings-modal { 645 background: var(--bg-card); 646 border: 1px solid var(--border); 647 border-radius: var(--radius); 648 width: 100%; 649 max-width: 400px; 650 display: flex; 651 flex-direction: column; 652} 653 654.settings-header { 655 display: flex; 656 justify-content: space-between; 657 align-items: center; 658 padding: 1rem; 659 border-bottom: 1px solid var(--border); 660} 661 662.settings-header h3 { 663 font-size: 1.1rem; 664 font-weight: 500; 665} 666 667.settings-close { 668 background: none; 669 border: none; 670 color: var(--text-secondary); 671 cursor: pointer; 672 font-size: 1.25rem; 673 padding: 0.25rem; 674} 675 676.settings-close:hover { 677 color: var(--text); 678} 679 680.settings-content { 681 padding: 1rem; 682 display: flex; 683 flex-direction: column; 684 gap: 1.25rem; 685} 686 687.setting-group { 688 display: flex; 689 flex-direction: column; 690 gap: 0.5rem; 691} 692 693.setting-group label { 694 font-size: 0.875rem; 695 color: var(--text-secondary); 696} 697 698.setting-group select { 699 padding: 0.75rem; 700 border: 1px solid var(--border); 701 border-radius: 8px; 702 background: var(--bg); 703 color: var(--text); 704 font-family: inherit; 705 font-size: 1rem; 706} 707 708.color-picker { 709 display: flex; 710 flex-wrap: wrap; 711 gap: 0.5rem; 712 align-items: center; 713} 714 715.color-btn { 716 width: 32px; 717 height: 32px; 718 border-radius: 50%; 719 border: 2px solid transparent; 720 cursor: pointer; 721 transition: border-color 0.15s, transform 0.15s; 722} 723 724.color-btn:hover { 725 transform: scale(1.1); 726} 727 728.color-btn.active { 729 border-color: var(--text); 730} 731 732.custom-color-input { 733 width: 32px; 734 height: 32px; 735 border: none; 736 border-radius: 50%; 737 cursor: pointer; 738 background: none; 739 padding: 0; 740} 741 742.custom-color-input::-webkit-color-swatch-wrapper { 743 padding: 0; 744} 745 746.custom-color-input::-webkit-color-swatch { 747 border: 2px solid var(--border); 748 border-radius: 50%; 749} 750 751.settings-footer { 752 padding: 1rem; 753 border-top: 1px solid var(--border); 754 display: flex; 755 justify-content: flex-end; 756} 757 758.settings-footer .save-btn { 759 padding: 0.75rem 1.5rem; 760 background: var(--accent); 761 color: white; 762 border: none; 763 border-radius: 8px; 764 cursor: pointer; 765 font-family: inherit; 766 font-size: 1rem; 767} 768 769.settings-footer .save-btn:hover { 770 opacity: 0.9; 771} 772 773.settings-footer .save-btn:disabled { 774 opacity: 0.5; 775 cursor: not-allowed; 776} 777 778/* Mobile */ 779@media (max-width: 480px) { 780 .emoji-input-row { 781 flex-direction: row; 782 } 783 784 .form-actions { 785 flex-direction: column; 786 } 787 788 .emoji-grid { 789 grid-template-columns: repeat(6, 1fr); 790 } 791}