index.css 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. [data-page="home"] {
  2. --color-text: hsl(224, 10%, 10%);
  3. --color-text-secondary: hsl(224, 7%, 46%);
  4. --color-text-dimmed: hsl(224, 6%, 63%);
  5. --color-text-inverted: hsl(0, 0%, 100%);
  6. --color-border: hsl(224, 6%, 77%);
  7. }
  8. [data-page="home"] {
  9. @media (prefers-color-scheme: dark) {
  10. --color-text: hsl(0, 0%, 100%);
  11. --color-text-secondary: hsl(224, 6%, 66%);
  12. --color-text-dimmed: hsl(224, 7%, 46%);
  13. --color-text-inverted: hsl(224, 10%, 10%);
  14. --color-border: hsl(224, 6%, 36%);
  15. }
  16. }
  17. [data-page="home"] {
  18. --padding: 3rem;
  19. --vertical-padding: 1.5rem;
  20. --heading-font-size: 1.375rem;
  21. @media (max-width: 30rem) {
  22. --padding: 1rem;
  23. --vertical-padding: 0.75rem;
  24. --heading-font-size: 1rem;
  25. }
  26. display: flex;
  27. gap: var(--vertical-padding);
  28. flex-direction: column;
  29. font-family: var(--font-mono);
  30. color: var(--color-text);
  31. padding: calc(var(--padding) + 1rem);
  32. a {
  33. color: var(--color-text);
  34. text-decoration: underline;
  35. text-underline-offset: var(--space-0-75);
  36. text-decoration-thickness: 1px;
  37. }
  38. [data-component="content"] {
  39. max-width: 67.5rem;
  40. margin: 0 auto;
  41. border: 1px solid var(--color-border);
  42. }
  43. [data-component="top"] {
  44. padding: calc(var(--padding) * 1.5) var(--padding) var(--padding);
  45. position: relative;
  46. display: flex;
  47. flex-direction: column;
  48. align-items: center;
  49. gap: calc(var(--vertical-padding) / 2);
  50. img {
  51. height: auto;
  52. width: clamp(200px, 85vw, 552px);
  53. }
  54. [data-slot="logo dark"] {
  55. display: none;
  56. }
  57. @media (prefers-color-scheme: dark) {
  58. [data-slot="logo light"] {
  59. display: none;
  60. }
  61. [data-slot="logo dark"] {
  62. display: block;
  63. }
  64. }
  65. [data-slot="title"] {
  66. line-height: 1.25;
  67. font-weight: 500;
  68. text-align: center;
  69. font-size: var(--heading-font-size);
  70. color: var(--color-text-secondary);
  71. text-transform: uppercase;
  72. }
  73. [data-slot="login"] {
  74. position: absolute;
  75. top: 0;
  76. right: 0;
  77. border-width: 0 0 1px 1px;
  78. border-style: solid;
  79. border-color: var(--color-border);
  80. background-color: var(--color-bg);
  81. @media (max-width: 30rem) {
  82. display: none;
  83. }
  84. a {
  85. display: block;
  86. padding: 0.5rem 1rem calc(0.5rem + 4px);
  87. }
  88. }
  89. }
  90. [data-component="cta"] {
  91. border-top: 1px solid var(--color-border);
  92. display: flex;
  93. & > div + div {
  94. border-left: 1px solid var(--color-border);
  95. }
  96. [data-slot="left"] {
  97. flex: 0 0 auto;
  98. text-align: center;
  99. line-height: 1.4;
  100. padding: var(--vertical-padding) 2rem;
  101. text-transform: uppercase;
  102. font-size: 1.125rem;
  103. @media (max-width: 30rem) {
  104. font-size: 1rem;
  105. padding-bottom: calc(var(--vertical-padding) + 4px);
  106. }
  107. @media (max-width: 30rem) {
  108. padding-left: 0.5rem;
  109. padding-right: 0.5rem;
  110. }
  111. }
  112. [data-slot="center"] {
  113. display: none;
  114. @media (max-width: 30rem) {
  115. display: block;
  116. flex: 1;
  117. text-align: center;
  118. padding: var(--vertical-padding) 0.5rem;
  119. border-top: 1px solid var(--color-border);
  120. border-left: none;
  121. }
  122. }
  123. [data-slot="right"] {
  124. flex: 1;
  125. padding: var(--vertical-padding) 1rem;
  126. }
  127. @media (max-width: 50rem) {
  128. flex-direction: column;
  129. [data-slot="right"] {
  130. border-left: none;
  131. border-top: 1px solid var(--color-border);
  132. }
  133. }
  134. [data-slot="command"] {
  135. all: unset;
  136. display: flex;
  137. align-items: center;
  138. justify-content: center;
  139. cursor: pointer;
  140. color: var(--color-text-secondary);
  141. font-size: 1.125rem;
  142. font-family: var(--font-mono);
  143. gap: var(--space-2);
  144. width: 100%;
  145. & > span {
  146. @media (max-width: 24rem) {
  147. font-size: 0.875rem;
  148. }
  149. @media (max-width: 56rem) {
  150. [data-slot="protocol"] {
  151. display: none;
  152. }
  153. }
  154. @media (max-width: 38rem) {
  155. text-align: center;
  156. span:first-child {
  157. display: block;
  158. }
  159. }
  160. }
  161. }
  162. [data-slot="highlight"] {
  163. color: var(--color-text);
  164. font-weight: 500;
  165. }
  166. }
  167. [data-component="features"] {
  168. border-top: 1px solid var(--color-border);
  169. padding: var(--padding);
  170. [data-slot="list"] {
  171. padding-left: var(--space-4);
  172. margin: 0;
  173. list-style: disc;
  174. li {
  175. margin-bottom: var(--space-4);
  176. line-height: 1.6;
  177. strong {
  178. text-transform: uppercase;
  179. font-weight: 600;
  180. }
  181. label {
  182. line-height: 1;
  183. text-transform: uppercase;
  184. font-size: 0.75rem;
  185. letter-spacing: 0.03125rem;
  186. background: var(--color-border);
  187. padding: 0.125rem 0.375rem;
  188. color: var(--color-text-inverted);
  189. }
  190. }
  191. li:last-child {
  192. margin-bottom: 0;
  193. }
  194. }
  195. }
  196. [data-component="install"] {
  197. border-top: 1px solid var(--color-border);
  198. display: grid;
  199. grid-template-columns: 1fr 1fr;
  200. grid-template-rows: 1fr 1fr;
  201. @media (max-width: 40rem) {
  202. grid-template-columns: 1fr;
  203. grid-template-rows: auto;
  204. }
  205. }
  206. [data-component="method"] {
  207. display: flex;
  208. padding: calc(var(--vertical-padding) / 2) calc(var(--padding) / 2) calc(var(--vertical-padding) / 2 + 0.125rem);
  209. flex-direction: column;
  210. text-align: left;
  211. gap: var(--space-2-5);
  212. @media (max-width: 30rem) {
  213. gap: 0.3125rem;
  214. }
  215. @media (max-width: 40rem) {
  216. text-align: left;
  217. }
  218. &:nth-child(2) {
  219. border-left: 1px solid var(--color-border);
  220. @media (max-width: 40rem) {
  221. border-left: none;
  222. border-top: 1px solid var(--color-border);
  223. }
  224. }
  225. &:nth-child(3) {
  226. border-top: 1px solid var(--color-border);
  227. }
  228. &:nth-child(4) {
  229. border-top: 1px solid var(--color-border);
  230. border-left: 1px solid var(--color-border);
  231. @media (max-width: 40rem) {
  232. border-left: none;
  233. }
  234. }
  235. [data-component="title"] {
  236. letter-spacing: -0.03125rem;
  237. text-transform: uppercase;
  238. font-weight: normal;
  239. font-size: 1rem;
  240. flex-shrink: 0;
  241. color: var(--color-text-dimmed);
  242. @media (max-width: 30rem) {
  243. font-size: 0.75rem;
  244. }
  245. }
  246. [data-slot="button"] {
  247. all: unset;
  248. cursor: pointer;
  249. display: flex;
  250. align-items: center;
  251. color: var(--color-text-secondary);
  252. gap: var(--space-2-5);
  253. font-size: 1rem;
  254. @media (max-width: 24rem) {
  255. font-size: 0.875rem;
  256. }
  257. strong {
  258. color: var(--color-text);
  259. font-weight: 500;
  260. }
  261. @media (max-width: 40rem) {
  262. justify-content: flex-start;
  263. }
  264. @media (max-width: 30rem) {
  265. justify-content: center;
  266. }
  267. }
  268. }
  269. [data-component="screenshots"] {
  270. border-top: 1px solid var(--color-border);
  271. figure {
  272. flex: 1;
  273. display: flex;
  274. flex-direction: column;
  275. gap: calc(var(--padding) / 4);
  276. padding: calc(var(--padding) / 2);
  277. border-width: 0;
  278. border-style: solid;
  279. border-color: var(--color-border);
  280. min-height: 0;
  281. overflow: hidden;
  282. & > div,
  283. figcaption {
  284. display: flex;
  285. align-items: center;
  286. }
  287. & > div {
  288. flex: 1;
  289. min-height: 0;
  290. display: flex;
  291. align-items: center;
  292. justify-content: center;
  293. }
  294. a {
  295. display: flex;
  296. flex: 1;
  297. min-height: 0;
  298. align-items: center;
  299. justify-content: center;
  300. width: 100%;
  301. height: 100%;
  302. }
  303. figcaption {
  304. letter-spacing: -0.03125rem;
  305. text-transform: uppercase;
  306. color: var(--color-text-dimmed);
  307. flex-shrink: 0;
  308. @media (max-width: 30rem) {
  309. font-size: 0.75rem;
  310. }
  311. }
  312. }
  313. & > [data-slot="left"] figure {
  314. height: var(--images-height);
  315. box-sizing: border-box;
  316. }
  317. & > [data-slot="right"] figure {
  318. height: calc(var(--images-height) / 2);
  319. box-sizing: border-box;
  320. }
  321. & > [data-slot="left"] img {
  322. width: 100%;
  323. height: 100%;
  324. min-width: 0;
  325. object-fit: contain;
  326. }
  327. & > [data-slot="right"] img {
  328. width: 100%;
  329. height: calc(100% - 2rem);
  330. object-fit: contain;
  331. display: block;
  332. }
  333. @media (max-width: 30rem) {
  334. & {
  335. --images-height: auto;
  336. grid-template-columns: 1fr;
  337. grid-template-rows: auto auto;
  338. }
  339. & > [data-slot="left"] {
  340. grid-row: 1;
  341. grid-column: 1;
  342. }
  343. & > [data-slot="right"] {
  344. grid-row: 2;
  345. grid-column: 1;
  346. border-left: none;
  347. border-top: 1px solid var(--color-border);
  348. & > [data-slot="row1"],
  349. & > [data-slot="row2"] {
  350. height: auto;
  351. }
  352. }
  353. & > [data-slot="left"] figure,
  354. & > [data-slot="right"] figure {
  355. height: auto;
  356. }
  357. & > [data-slot="left"] img,
  358. & > [data-slot="right"] img {
  359. width: 100%;
  360. height: auto;
  361. max-height: none;
  362. }
  363. }
  364. }
  365. [data-component="copy-status"] {
  366. @media (max-width: 38rem) {
  367. display: none;
  368. }
  369. [data-slot="copy"] {
  370. display: block;
  371. width: var(--space-4);
  372. height: var(--space-4);
  373. color: var(--color-text-dimmed);
  374. [data-copied] & {
  375. display: none;
  376. }
  377. }
  378. [data-slot="check"] {
  379. display: none;
  380. width: var(--space-4);
  381. height: var(--space-4);
  382. color: var(--color-text);
  383. [data-copied] & {
  384. display: block;
  385. }
  386. }
  387. }
  388. [data-component="footer"] {
  389. border-top: 1px solid var(--color-border);
  390. display: flex;
  391. flex-direction: row;
  392. [data-slot="cell"] {
  393. flex: 1;
  394. text-align: center;
  395. text-transform: uppercase;
  396. padding: var(--vertical-padding) 0.5rem;
  397. }
  398. [data-slot="cell"] + [data-slot="cell"] {
  399. border-left: 1px solid var(--color-border);
  400. }
  401. /* Mobile: third column on its own row */
  402. @media (max-width: 30rem) {
  403. flex-wrap: wrap;
  404. [data-slot="cell"]:nth-child(1),
  405. [data-slot="cell"]:nth-child(2) {
  406. flex: 1;
  407. }
  408. [data-slot="cell"]:nth-child(3) {
  409. flex: 1 0 100%;
  410. border-left: none;
  411. border-top: 1px solid var(--color-border);
  412. }
  413. }
  414. }
  415. [data-component="legal"] {
  416. color: var(--color-text-dimmed);
  417. text-align: center;
  418. a {
  419. color: var(--color-text-dimmed);
  420. }
  421. }
  422. }