grain.social is a photo sharing platform built on atproto.
1/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */ 2@layer properties; 3@layer theme, base, components, utilities; 4@layer theme { 5 :root, :host { 6 --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", 7 "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 8 --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", 9 "Courier New", monospace; 10 --color-sky-500: oklch(68.5% 0.169 237.323); 11 --color-zinc-100: oklch(96.7% 0.001 286.375); 12 --color-zinc-200: oklch(92% 0.004 286.32); 13 --color-zinc-500: oklch(55.2% 0.016 285.938); 14 --color-zinc-600: oklch(44.2% 0.017 285.786); 15 --color-zinc-800: oklch(27.4% 0.006 286.033); 16 --color-zinc-900: oklch(21% 0.006 285.885); 17 --color-zinc-950: oklch(14.1% 0.005 285.823); 18 --color-black: #000; 19 --color-white: #fff; 20 --spacing: 0.25rem; 21 --container-md: 28rem; 22 --container-xl: 36rem; 23 --container-5xl: 64rem; 24 --text-xs: 0.75rem; 25 --text-xs--line-height: calc(1 / 0.75); 26 --text-sm: 0.875rem; 27 --text-sm--line-height: calc(1.25 / 0.875); 28 --text-xl: 1.25rem; 29 --text-xl--line-height: calc(1.75 / 1.25); 30 --text-2xl: 1.5rem; 31 --text-2xl--line-height: calc(2 / 1.5); 32 --text-4xl: 2.25rem; 33 --text-4xl--line-height: calc(2.5 / 2.25); 34 --font-weight-semibold: 600; 35 --font-weight-bold: 700; 36 --default-font-family: var(--font-sans); 37 --default-mono-font-family: var(--font-mono); 38 } 39} 40@layer base { 41 *, ::after, ::before, ::backdrop, ::file-selector-button { 42 box-sizing: border-box; 43 margin: 0; 44 padding: 0; 45 border: 0 solid; 46 } 47 html, :host { 48 line-height: 1.5; 49 -webkit-text-size-adjust: 100%; 50 tab-size: 4; 51 font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); 52 font-feature-settings: var(--default-font-feature-settings, normal); 53 font-variation-settings: var(--default-font-variation-settings, normal); 54 -webkit-tap-highlight-color: transparent; 55 } 56 hr { 57 height: 0; 58 color: inherit; 59 border-top-width: 1px; 60 } 61 abbr:where([title]) { 62 -webkit-text-decoration: underline dotted; 63 text-decoration: underline dotted; 64 } 65 h1, h2, h3, h4, h5, h6 { 66 font-size: inherit; 67 font-weight: inherit; 68 } 69 a { 70 color: inherit; 71 -webkit-text-decoration: inherit; 72 text-decoration: inherit; 73 } 74 b, strong { 75 font-weight: bolder; 76 } 77 code, kbd, samp, pre { 78 font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); 79 font-feature-settings: var(--default-mono-font-feature-settings, normal); 80 font-variation-settings: var(--default-mono-font-variation-settings, normal); 81 font-size: 1em; 82 } 83 small { 84 font-size: 80%; 85 } 86 sub, sup { 87 font-size: 75%; 88 line-height: 0; 89 position: relative; 90 vertical-align: baseline; 91 } 92 sub { 93 bottom: -0.25em; 94 } 95 sup { 96 top: -0.5em; 97 } 98 table { 99 text-indent: 0; 100 border-color: inherit; 101 border-collapse: collapse; 102 } 103 :-moz-focusring { 104 outline: auto; 105 } 106 progress { 107 vertical-align: baseline; 108 } 109 summary { 110 display: list-item; 111 } 112 ol, ul, menu { 113 list-style: none; 114 } 115 img, svg, video, canvas, audio, iframe, embed, object { 116 display: block; 117 vertical-align: middle; 118 } 119 img, video { 120 max-width: 100%; 121 height: auto; 122 } 123 button, input, select, optgroup, textarea, ::file-selector-button { 124 font: inherit; 125 font-feature-settings: inherit; 126 font-variation-settings: inherit; 127 letter-spacing: inherit; 128 color: inherit; 129 border-radius: 0; 130 background-color: transparent; 131 opacity: 1; 132 } 133 :where(select:is([multiple], [size])) optgroup { 134 font-weight: bolder; 135 } 136 :where(select:is([multiple], [size])) optgroup option { 137 padding-inline-start: 20px; 138 } 139 ::file-selector-button { 140 margin-inline-end: 4px; 141 } 142 ::placeholder { 143 opacity: 1; 144 } 145 @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { 146 ::placeholder { 147 color: currentcolor; 148 @supports (color: color-mix(in lab, red, red)) { 149 color: color-mix(in oklab, currentcolor 50%, transparent); 150 } 151 } 152 } 153 textarea { 154 resize: vertical; 155 } 156 ::-webkit-search-decoration { 157 -webkit-appearance: none; 158 } 159 ::-webkit-date-and-time-value { 160 min-height: 1lh; 161 text-align: inherit; 162 } 163 ::-webkit-datetime-edit { 164 display: inline-flex; 165 } 166 ::-webkit-datetime-edit-fields-wrapper { 167 padding: 0; 168 } 169 ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { 170 padding-block: 0; 171 } 172 :-moz-ui-invalid { 173 box-shadow: none; 174 } 175 button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { 176 appearance: button; 177 } 178 ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { 179 height: auto; 180 } 181 [hidden]:where(:not([hidden="until-found"])) { 182 display: none !important; 183 } 184} 185@layer utilities { 186 .sr-only { 187 position: absolute; 188 width: 1px; 189 height: 1px; 190 padding: 0; 191 margin: -1px; 192 overflow: hidden; 193 clip: rect(0, 0, 0, 0); 194 white-space: nowrap; 195 border-width: 0; 196 } 197 .absolute { 198 position: absolute; 199 } 200 .relative { 201 position: relative; 202 } 203 .static { 204 position: static; 205 } 206 .inset-0 { 207 inset: calc(var(--spacing) * 0); 208 } 209 .top-1 { 210 top: calc(var(--spacing) * 1); 211 } 212 .top-2 { 213 top: calc(var(--spacing) * 2); 214 } 215 .right-0 { 216 right: calc(var(--spacing) * 0); 217 } 218 .right-1 { 219 right: calc(var(--spacing) * 1); 220 } 221 .right-2 { 222 right: calc(var(--spacing) * 2); 223 } 224 .bottom-0 { 225 bottom: calc(var(--spacing) * 0); 226 } 227 .bottom-1 { 228 bottom: calc(var(--spacing) * 1); 229 } 230 .bottom-2 { 231 bottom: calc(var(--spacing) * 2); 232 } 233 .bottom-\[0\.75rem\] { 234 bottom: 0.75rem; 235 } 236 .left-0 { 237 left: calc(var(--spacing) * 0); 238 } 239 .left-1 { 240 left: calc(var(--spacing) * 1); 241 } 242 .z-10 { 243 z-index: 10; 244 } 245 .z-20 { 246 z-index: 20; 247 } 248 .z-30 { 249 z-index: 30; 250 } 251 .container { 252 width: 100%; 253 @media (width >= 40rem) { 254 max-width: 40rem; 255 } 256 @media (width >= 48rem) { 257 max-width: 48rem; 258 } 259 @media (width >= 64rem) { 260 max-width: 64rem; 261 } 262 @media (width >= 80rem) { 263 max-width: 80rem; 264 } 265 @media (width >= 96rem) { 266 max-width: 96rem; 267 } 268 } 269 .mx-auto { 270 margin-inline: auto; 271 } 272 .my-2 { 273 margin-block: calc(var(--spacing) * 2); 274 } 275 .my-4 { 276 margin-block: calc(var(--spacing) * 4); 277 } 278 .my-30 { 279 margin-block: calc(var(--spacing) * 30); 280 } 281 .mt-2 { 282 margin-top: calc(var(--spacing) * 2); 283 } 284 .mr-1 { 285 margin-right: calc(var(--spacing) * 1); 286 } 287 .mr-2 { 288 margin-right: calc(var(--spacing) * 2); 289 } 290 .mb-2 { 291 margin-bottom: calc(var(--spacing) * 2); 292 } 293 .mb-4 { 294 margin-bottom: calc(var(--spacing) * 4); 295 } 296 .ml-1 { 297 margin-left: calc(var(--spacing) * 1); 298 } 299 .flex { 300 display: flex; 301 } 302 .grid { 303 display: grid; 304 } 305 .hidden { 306 display: none; 307 } 308 .aspect-\[3\/2\] { 309 aspect-ratio: 3/2; 310 } 311 .aspect-square { 312 aspect-ratio: 1 / 1; 313 } 314 .size-4 { 315 width: calc(var(--spacing) * 4); 316 height: calc(var(--spacing) * 4); 317 } 318 .size-16 { 319 width: calc(var(--spacing) * 16); 320 height: calc(var(--spacing) * 16); 321 } 322 .h-0 { 323 height: calc(var(--spacing) * 0); 324 } 325 .h-1\/2 { 326 height: calc(1/2 * 100%); 327 } 328 .h-5 { 329 height: calc(var(--spacing) * 5); 330 } 331 .h-16 { 332 height: calc(var(--spacing) * 16); 333 } 334 .h-\[400px\] { 335 height: 400px; 336 } 337 .h-\[calc\(100vh-100px\)\] { 338 height: calc(100vh - 100px); 339 } 340 .h-full { 341 height: 100%; 342 } 343 .w-1\/3 { 344 width: calc(1/3 * 100%); 345 } 346 .w-2\/3 { 347 width: calc(2/3 * 100%); 348 } 349 .w-5 { 350 width: calc(var(--spacing) * 5); 351 } 352 .w-5xl { 353 width: var(--container-5xl); 354 } 355 .w-16 { 356 width: calc(var(--spacing) * 16); 357 } 358 .w-\[400px\] { 359 width: 400px; 360 } 361 .w-fit { 362 width: fit-content; 363 } 364 .w-full { 365 width: 100%; 366 } 367 .max-w-5xl { 368 max-width: var(--container-5xl); 369 } 370 .max-w-md { 371 max-width: var(--container-md); 372 } 373 .max-w-xl { 374 max-width: var(--container-xl); 375 } 376 .flex-1 { 377 flex: 1; 378 } 379 .cursor-pointer { 380 cursor: pointer; 381 } 382 .resize { 383 resize: both; 384 } 385 .grid-cols-1 { 386 grid-template-columns: repeat(1, minmax(0, 1fr)); 387 } 388 .grid-cols-2 { 389 grid-template-columns: repeat(2, minmax(0, 1fr)); 390 } 391 .flex-col { 392 flex-direction: column; 393 } 394 .items-center { 395 align-items: center; 396 } 397 .justify-center { 398 justify-content: center; 399 } 400 .gap-2 { 401 gap: calc(var(--spacing) * 2); 402 } 403 .gap-4 { 404 gap: calc(var(--spacing) * 4); 405 } 406 .space-y-1 { 407 :where(& > :not(:last-child)) { 408 --tw-space-y-reverse: 0; 409 margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse)); 410 margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse))); 411 } 412 } 413 .space-y-2 { 414 :where(& > :not(:last-child)) { 415 --tw-space-y-reverse: 0; 416 margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse)); 417 margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse))); 418 } 419 } 420 .space-y-4 { 421 :where(& > :not(:last-child)) { 422 --tw-space-y-reverse: 0; 423 margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse)); 424 margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse))); 425 } 426 } 427 .space-x-2 { 428 :where(& > :not(:last-child)) { 429 --tw-space-x-reverse: 0; 430 margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse)); 431 margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse))); 432 } 433 } 434 .self-start { 435 align-self: flex-start; 436 } 437 .overflow-hidden { 438 overflow: hidden; 439 } 440 .rounded-full { 441 border-radius: calc(infinity * 1px); 442 } 443 .border { 444 border-style: var(--tw-border-style); 445 border-width: 1px; 446 } 447 .border-zinc-200 { 448 border-color: var(--color-zinc-200); 449 } 450 .border-zinc-900 { 451 border-color: var(--color-zinc-900); 452 } 453 .bg-black { 454 background-color: var(--color-black); 455 } 456 .bg-black\/80 { 457 background-color: color-mix(in srgb, #000 80%, transparent); 458 @supports (color: color-mix(in lab, red, red)) { 459 background-color: color-mix(in oklab, var(--color-black) 80%, transparent); 460 } 461 } 462 .bg-zinc-100 { 463 background-color: var(--color-zinc-100); 464 } 465 .bg-zinc-200 { 466 background-color: var(--color-zinc-200); 467 } 468 .bg-zinc-800 { 469 background-color: var(--color-zinc-800); 470 } 471 .bg-zinc-950 { 472 background-color: var(--color-zinc-950); 473 } 474 .object-contain { 475 object-fit: contain; 476 } 477 .object-cover { 478 object-fit: cover; 479 } 480 .p-2 { 481 padding: calc(var(--spacing) * 2); 482 } 483 .p-4 { 484 padding: calc(var(--spacing) * 4); 485 } 486 .px-4 { 487 padding-inline: calc(var(--spacing) * 4); 488 } 489 .px-\[3px\] { 490 padding-inline: 3px; 491 } 492 .py-2 { 493 padding-block: calc(var(--spacing) * 2); 494 } 495 .py-4 { 496 padding-block: calc(var(--spacing) * 4); 497 } 498 .py-\[1px\] { 499 padding-block: 1px; 500 } 501 .pt-4 { 502 padding-top: calc(var(--spacing) * 4); 503 } 504 .text-center { 505 text-align: center; 506 } 507 .text-left { 508 text-align: left; 509 } 510 .font-\[\'Jersey_20\'\] { 511 font-family: 'Jersey 20'; 512 } 513 .text-2xl { 514 font-size: var(--text-2xl); 515 line-height: var(--tw-leading, var(--text-2xl--line-height)); 516 } 517 .text-4xl { 518 font-size: var(--text-4xl); 519 line-height: var(--tw-leading, var(--text-4xl--line-height)); 520 } 521 .text-sm { 522 font-size: var(--text-sm); 523 line-height: var(--tw-leading, var(--text-sm--line-height)); 524 } 525 .text-xl { 526 font-size: var(--text-xl); 527 line-height: var(--tw-leading, var(--text-xl--line-height)); 528 } 529 .text-xs { 530 font-size: var(--text-xs); 531 line-height: var(--tw-leading, var(--text-xs--line-height)); 532 } 533 .text-\[1rem\] { 534 font-size: 1rem; 535 } 536 .text-\[10px\] { 537 font-size: 10px; 538 } 539 .font-bold { 540 --tw-font-weight: var(--font-weight-bold); 541 font-weight: var(--font-weight-bold); 542 } 543 .font-semibold { 544 --tw-font-weight: var(--font-weight-semibold); 545 font-weight: var(--font-weight-semibold); 546 } 547 .text-sky-500 { 548 color: var(--color-sky-500); 549 } 550 .text-white { 551 color: var(--color-white); 552 } 553 .text-zinc-600 { 554 color: var(--color-zinc-600); 555 } 556 .text-zinc-900 { 557 color: var(--color-zinc-900); 558 } 559 .lowercase { 560 text-transform: lowercase; 561 } 562 .ring-sky-500 { 563 --tw-ring-color: var(--color-sky-500); 564 } 565 .group-data-\[added\=true\]\:block { 566 &:is(:where(.group)[data-added="true"] *) { 567 display: block; 568 } 569 } 570 .hover\:underline { 571 &:hover { 572 @media (hover: hover) { 573 text-decoration-line: underline; 574 } 575 } 576 } 577 .disabled\:opacity-50 { 578 &:disabled { 579 opacity: 50%; 580 } 581 } 582 .data-\[added\=true\]\:ring-2 { 583 &[data-added="true"] { 584 --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); 585 box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); 586 } 587 } 588 .data-\[state\=pending\]\:opacity-50 { 589 &[data-state="pending"] { 590 opacity: 50%; 591 } 592 } 593 .sm\:top-1 { 594 @media (width >= 40rem) { 595 top: calc(var(--spacing) * 1); 596 } 597 } 598 .sm\:right-1 { 599 @media (width >= 40rem) { 600 right: calc(var(--spacing) * 1); 601 } 602 } 603 .sm\:bottom-1 { 604 @media (width >= 40rem) { 605 bottom: calc(var(--spacing) * 1); 606 } 607 } 608 .sm\:left-1 { 609 @media (width >= 40rem) { 610 left: calc(var(--spacing) * 1); 611 } 612 } 613 .sm\:h-screen { 614 @media (width >= 40rem) { 615 height: 100vh; 616 } 617 } 618 .sm\:min-h-screen { 619 @media (width >= 40rem) { 620 min-height: 100vh; 621 } 622 } 623 .sm\:w-fit { 624 @media (width >= 40rem) { 625 width: fit-content; 626 } 627 } 628 .sm\:grid-cols-3 { 629 @media (width >= 40rem) { 630 grid-template-columns: repeat(3, minmax(0, 1fr)); 631 } 632 } 633 .sm\:grid-cols-5 { 634 @media (width >= 40rem) { 635 grid-template-columns: repeat(5, minmax(0, 1fr)); 636 } 637 } 638 .sm\:flex-row { 639 @media (width >= 40rem) { 640 flex-direction: row; 641 } 642 } 643 .sm\:items-center { 644 @media (width >= 40rem) { 645 align-items: center; 646 } 647 } 648 .sm\:justify-between { 649 @media (width >= 40rem) { 650 justify-content: space-between; 651 } 652 } 653 .sm\:px-0 { 654 @media (width >= 40rem) { 655 padding-inline: calc(var(--spacing) * 0); 656 } 657 } 658 .dark\:border-zinc-800 { 659 @media (prefers-color-scheme: dark) { 660 border-color: var(--color-zinc-800); 661 } 662 } 663 .dark\:bg-zinc-800 { 664 @media (prefers-color-scheme: dark) { 665 background-color: var(--color-zinc-800); 666 } 667 } 668 .dark\:bg-zinc-900 { 669 @media (prefers-color-scheme: dark) { 670 background-color: var(--color-zinc-900); 671 } 672 } 673 .dark\:bg-zinc-950 { 674 @media (prefers-color-scheme: dark) { 675 background-color: var(--color-zinc-950); 676 } 677 } 678 .dark\:text-white { 679 @media (prefers-color-scheme: dark) { 680 color: var(--color-white); 681 } 682 } 683 .dark\:text-zinc-500 { 684 @media (prefers-color-scheme: dark) { 685 color: var(--color-zinc-500); 686 } 687 } 688} 689.htmx-request.htmx-indicator { 690 display: inline; 691} 692.htmx-indicator { 693 display: none; 694} 695.htmx-request #submit-button { 696 opacity: 0.5; 697 pointer-events: none; 698} 699@property --tw-space-y-reverse { 700 syntax: "*"; 701 inherits: false; 702 initial-value: 0; 703} 704@property --tw-space-x-reverse { 705 syntax: "*"; 706 inherits: false; 707 initial-value: 0; 708} 709@property --tw-border-style { 710 syntax: "*"; 711 inherits: false; 712 initial-value: solid; 713} 714@property --tw-font-weight { 715 syntax: "*"; 716 inherits: false; 717} 718@property --tw-shadow { 719 syntax: "*"; 720 inherits: false; 721 initial-value: 0 0 #0000; 722} 723@property --tw-shadow-color { 724 syntax: "*"; 725 inherits: false; 726} 727@property --tw-shadow-alpha { 728 syntax: "<percentage>"; 729 inherits: false; 730 initial-value: 100%; 731} 732@property --tw-inset-shadow { 733 syntax: "*"; 734 inherits: false; 735 initial-value: 0 0 #0000; 736} 737@property --tw-inset-shadow-color { 738 syntax: "*"; 739 inherits: false; 740} 741@property --tw-inset-shadow-alpha { 742 syntax: "<percentage>"; 743 inherits: false; 744 initial-value: 100%; 745} 746@property --tw-ring-color { 747 syntax: "*"; 748 inherits: false; 749} 750@property --tw-ring-shadow { 751 syntax: "*"; 752 inherits: false; 753 initial-value: 0 0 #0000; 754} 755@property --tw-inset-ring-color { 756 syntax: "*"; 757 inherits: false; 758} 759@property --tw-inset-ring-shadow { 760 syntax: "*"; 761 inherits: false; 762 initial-value: 0 0 #0000; 763} 764@property --tw-ring-inset { 765 syntax: "*"; 766 inherits: false; 767} 768@property --tw-ring-offset-width { 769 syntax: "<length>"; 770 inherits: false; 771 initial-value: 0px; 772} 773@property --tw-ring-offset-color { 774 syntax: "*"; 775 inherits: false; 776 initial-value: #fff; 777} 778@property --tw-ring-offset-shadow { 779 syntax: "*"; 780 inherits: false; 781 initial-value: 0 0 #0000; 782} 783@layer properties { 784 @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { 785 *, ::before, ::after, ::backdrop { 786 --tw-space-y-reverse: 0; 787 --tw-space-x-reverse: 0; 788 --tw-border-style: solid; 789 --tw-font-weight: initial; 790 --tw-shadow: 0 0 #0000; 791 --tw-shadow-color: initial; 792 --tw-shadow-alpha: 100%; 793 --tw-inset-shadow: 0 0 #0000; 794 --tw-inset-shadow-color: initial; 795 --tw-inset-shadow-alpha: 100%; 796 --tw-ring-color: initial; 797 --tw-ring-shadow: 0 0 #0000; 798 --tw-inset-ring-color: initial; 799 --tw-inset-ring-shadow: 0 0 #0000; 800 --tw-ring-inset: initial; 801 --tw-ring-offset-width: 0px; 802 --tw-ring-offset-color: #fff; 803 --tw-ring-offset-shadow: 0 0 #0000; 804 } 805 } 806}