index.css 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. @import "tailwindcss";
  2. @theme inline {
  3. --font-mono: 'Geist Mono', 'Courier New', Courier, monospace;
  4. }
  5. * {
  6. box-sizing: border-box;
  7. scroll-behavior: smooth;
  8. }
  9. html {
  10. background: #09090b;
  11. }
  12. html,
  13. body,
  14. #root {
  15. min-height: 100%;
  16. background: #09090b;
  17. color: #e5e5e5;
  18. font-family: var(--font-mono);
  19. line-height: 1.55;
  20. overflow-x: hidden;
  21. }
  22. body {
  23. margin: 0;
  24. }
  25. @layer base {
  26. button,
  27. input,
  28. textarea,
  29. select {
  30. font: inherit;
  31. }
  32. }
  33. a {
  34. color: inherit;
  35. text-decoration: none;
  36. }
  37. ::selection {
  38. background: #dc2626;
  39. color: #fff;
  40. }
  41. /* Scrollbar */
  42. ::-webkit-scrollbar {
  43. width: 5px;
  44. }
  45. ::-webkit-scrollbar-track {
  46. background: transparent;
  47. }
  48. ::-webkit-scrollbar-thumb {
  49. background: #2a2a2a;
  50. border-radius: 4px;
  51. }
  52. ::-webkit-scrollbar-thumb:hover {
  53. background: #444;
  54. }
  55. /* Custom checkbox */
  56. input[type="checkbox"] {
  57. appearance: none;
  58. -webkit-appearance: none;
  59. width: 15px;
  60. height: 15px;
  61. border: 1px solid #333;
  62. background: #111;
  63. cursor: pointer;
  64. position: relative;
  65. flex-shrink: 0;
  66. transition: all 150ms;
  67. }
  68. input[type="checkbox"]:hover {
  69. border-color: #555;
  70. }
  71. input[type="checkbox"]:checked {
  72. border-color: #dc2626;
  73. background: #dc2626;
  74. }
  75. input[type="checkbox"]:checked::after {
  76. content: '';
  77. position: absolute;
  78. left: 4px;
  79. top: 1px;
  80. width: 4px;
  81. height: 8px;
  82. border: solid white;
  83. border-width: 0 1.5px 1.5px 0;
  84. transform: rotate(45deg);
  85. }
  86. input[type="checkbox"]:focus-visible {
  87. outline: 1px solid #dc2626;
  88. outline-offset: 2px;
  89. }
  90. /* Select options for dark bg */
  91. select option {
  92. background: #111;
  93. color: #e5e5e5;
  94. }
  95. /* Focus ring */
  96. input:focus-visible,
  97. textarea:focus-visible,
  98. select:focus-visible {
  99. outline: none;
  100. }
  101. /* Film grain */
  102. @keyframes grain {
  103. 0%, 100% { transform: translate(0, 0); }
  104. 10% { transform: translate(-2%, -2%); }
  105. 20% { transform: translate(2%, 2%); }
  106. 30% { transform: translate(-1%, 3%); }
  107. 40% { transform: translate(3%, -1%); }
  108. 50% { transform: translate(-3%, 1%); }
  109. 60% { transform: translate(1%, -3%); }
  110. 70% { transform: translate(-2%, 2%); }
  111. 80% { transform: translate(2%, -2%); }
  112. 90% { transform: translate(-1%, 1%); }
  113. }
  114. body::before {
  115. content: '';
  116. position: fixed;
  117. inset: -50%;
  118. width: 200%;
  119. height: 200%;
  120. background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  121. opacity: 0.025;
  122. pointer-events: none;
  123. z-index: 0;
  124. animation: grain 8s steps(10) infinite;
  125. }