page.module.css 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. .main {
  2. display: flex;
  3. flex-direction: column;
  4. justify-content: space-between;
  5. align-items: center;
  6. padding: 6rem;
  7. min-height: 100vh;
  8. }
  9. :root {
  10. --color-primary-200: #409EFF !important;
  11. }
  12. .description {
  13. display: inherit;
  14. justify-content: inherit;
  15. align-items: inherit;
  16. font-size: 0.85rem;
  17. max-width: var(--max-width);
  18. width: 100%;
  19. z-index: 2;
  20. font-family: var(--font-mono);
  21. }
  22. .description a {
  23. display: flex;
  24. align-items: center;
  25. justify-content: center;
  26. gap: 0.5rem;
  27. }
  28. .description p {
  29. position: relative;
  30. margin: 0;
  31. padding: 1rem;
  32. background-color: rgba(var(--callout-rgb), 0.5);
  33. border: 1px solid rgba(var(--callout-border-rgb), 0.3);
  34. border-radius: var(--border-radius);
  35. }
  36. .code {
  37. font-weight: 700;
  38. font-family: var(--font-mono);
  39. }
  40. .grid {
  41. display: grid;
  42. grid-template-columns: repeat(3, minmax(33%, auto));
  43. width: var(--max-width);
  44. max-width: 100%;
  45. }
  46. .card {
  47. padding: 1rem 1.2rem;
  48. border-radius: var(--border-radius);
  49. background: rgba(var(--card-rgb), 0);
  50. border: 1px solid rgba(var(--card-border-rgb), 0);
  51. transition: background 200ms, border 200ms;
  52. }
  53. .card span {
  54. display: inline-block;
  55. transition: transform 200ms;
  56. }
  57. .card h2 {
  58. font-weight: 600;
  59. margin-bottom: 0.7rem;
  60. }
  61. .card p {
  62. margin: 0;
  63. opacity: 0.6;
  64. font-size: 0.9rem;
  65. line-height: 1.5;
  66. max-width: 34ch;
  67. }
  68. .center {
  69. display: flex;
  70. justify-content: center;
  71. align-items: center;
  72. position: relative;
  73. padding: 4rem 0;
  74. }
  75. .center::before {
  76. background: var(--secondary-glow);
  77. border-radius: 50%;
  78. width: 480px;
  79. height: 360px;
  80. margin-left: -400px;
  81. }
  82. .center::after {
  83. background: var(--primary-glow);
  84. width: 240px;
  85. height: 180px;
  86. z-index: -1;
  87. }
  88. .center::before,
  89. .center::after {
  90. content: '';
  91. left: 50%;
  92. position: absolute;
  93. filter: blur(45px);
  94. transform: translateZ(0);
  95. }
  96. .logo,
  97. .thirteen {
  98. position: relative;
  99. }
  100. .thirteen {
  101. display: flex;
  102. justify-content: center;
  103. align-items: center;
  104. width: 75px;
  105. height: 75px;
  106. padding: 25px 10px;
  107. margin-left: 16px;
  108. transform: translateZ(0);
  109. border-radius: var(--border-radius);
  110. overflow: hidden;
  111. box-shadow: 0px 2px 8px -1px #0000001a;
  112. }
  113. .thirteen::before,
  114. .thirteen::after {
  115. content: '';
  116. position: absolute;
  117. z-index: -1;
  118. }
  119. /* Conic Gradient Animation */
  120. .thirteen::before {
  121. animation: 6s rotate linear infinite;
  122. width: 200%;
  123. height: 200%;
  124. background: var(--tile-border);
  125. }
  126. /* Inner Square */
  127. .thirteen::after {
  128. inset: 0;
  129. padding: 1px;
  130. border-radius: var(--border-radius);
  131. background: linear-gradient(to bottom right,
  132. rgba(var(--tile-start-rgb), 1),
  133. rgba(var(--tile-end-rgb), 1));
  134. background-clip: content-box;
  135. }
  136. /* Enable hover only on non-touch devices */
  137. @media (hover: hover) and (pointer: fine) {
  138. .card:hover {
  139. background: rgba(var(--card-rgb), 0.1);
  140. border: 1px solid rgba(var(--card-border-rgb), 0.15);
  141. }
  142. .card:hover span {
  143. transform: translateX(4px);
  144. }
  145. }
  146. @media (prefers-reduced-motion) {
  147. .thirteen::before {
  148. animation: none;
  149. }
  150. .card:hover span {
  151. transform: none;
  152. }
  153. }
  154. /* Mobile and Tablet */
  155. @media (max-width: 1023px) {
  156. .content {
  157. padding: 4rem;
  158. }
  159. .grid {
  160. grid-template-columns: 1fr;
  161. margin-bottom: 120px;
  162. max-width: 320px;
  163. text-align: center;
  164. }
  165. .card {
  166. padding: 1rem 2.5rem;
  167. }
  168. .card h2 {
  169. margin-bottom: 0.5rem;
  170. }
  171. .center {
  172. padding: 8rem 0 6rem;
  173. }
  174. .center::before {
  175. transform: none;
  176. height: 300px;
  177. }
  178. .description {
  179. font-size: 0.8rem;
  180. }
  181. .description a {
  182. padding: 1rem;
  183. }
  184. .description p,
  185. .description div {
  186. display: flex;
  187. justify-content: center;
  188. position: fixed;
  189. width: 100%;
  190. }
  191. .description p {
  192. align-items: center;
  193. inset: 0 0 auto;
  194. padding: 2rem 1rem 1.4rem;
  195. border-radius: 0;
  196. border: none;
  197. border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
  198. background: linear-gradient(to bottom,
  199. rgba(var(--background-start-rgb), 1),
  200. rgba(var(--callout-rgb), 0.5));
  201. background-clip: padding-box;
  202. backdrop-filter: blur(24px);
  203. }
  204. .description div {
  205. align-items: flex-end;
  206. pointer-events: none;
  207. inset: auto 0 0;
  208. padding: 2rem;
  209. height: 200px;
  210. background: linear-gradient(to bottom,
  211. transparent 0%,
  212. rgb(var(--background-end-rgb)) 40%);
  213. z-index: 1;
  214. }
  215. }
  216. @media (prefers-color-scheme: dark) {
  217. .vercelLogo {
  218. filter: invert(1);
  219. }
  220. .logo,
  221. .thirteen img {
  222. filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70);
  223. }
  224. }
  225. @keyframes rotate {
  226. from {
  227. transform: rotate(360deg);
  228. }
  229. to {
  230. transform: rotate(0deg);
  231. }
  232. }