index.css 11 KB

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