theme.css 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. /* Font links ------------------------------------------------------------- */
  2. @font-face {
  3. font-family:"Open Sans";
  4. font-weight: 400;
  5. font-style: normal;
  6. src: local("Open Sans Regular"),
  7. url("/fonts/open-sans/open-sans-regular.woff2") format("woff2"),
  8. url("/fonts/open-sans/open-sans-regular.woff") format("woff");
  9. }
  10. @font-face {
  11. font-family:"Open Sans";
  12. font-weight: 400;
  13. font-style: italic;
  14. src: local("Open Sans Italic"),
  15. url("/fonts/open-sans/open-sans-italic.woff2") format("woff2"),
  16. url("/fonts/open-sans/open-sans-italic.woff") format("woff");
  17. }
  18. @font-face {
  19. font-family:"Open Sans";
  20. font-weight: 500;
  21. font-style: normal;
  22. src: local("Open Sans SemiBold"),
  23. url("/fonts/open-sans/open-sans-semibold.woff2") format("woff2"),
  24. url("/fonts/open-sans/open-sans-semibold.woff") format("woff");
  25. }
  26. @font-face {
  27. font-family:"Open Sans";
  28. font-weight: 500;
  29. font-style: italic;
  30. src: local("Open Sans SemiBold Italic"),
  31. url("/fonts/open-sans/open-sans-semibold-italic.woff2") format("woff2"),
  32. url("/fonts/open-sans/open-sans-semibold-italic.woff") format("woff");
  33. }
  34. @font-face {
  35. font-family:"Open Sans";
  36. font-weight: 600;
  37. font-style: normal;
  38. src: local("Open Sans Bold"),
  39. url("/fonts/open-sans/open-sans-bold.woff2") format("woff2"),
  40. url("/fonts/open-sans/open-sans-bold.woff") format("woff");
  41. }
  42. @font-face {
  43. font-family:"Open Sans";
  44. font-weight: 600;
  45. font-style: italic;
  46. src: local("Open Sans Bold Italic"),
  47. url("/fonts/open-sans/open-sans-bold-italic.woff2") format("woff2"),
  48. url("/fonts/open-sans/open-sans-bold-italic.woff") format("woff");
  49. }
  50. @font-face {
  51. font-family:"Hack";
  52. font-weight: 400;
  53. font-style: normal;
  54. src: local("Hack Regular"),
  55. url("/fonts/hack/hack-regular.woff2") format("woff2"),
  56. url("/fonts/hack/hack-regular.woff") format("woff");
  57. }
  58. /* General ---------------------------------------------------------------- */
  59. /* Default light theme */
  60. :root, :root.light {
  61. /* Font declarations */
  62. --sans-font: Open Sans, Noto Sans, Helvetica, sans-serif;
  63. --mono-font: Hack, Noto Mono, Courier, monospace;
  64. /* Effect transitions */
  65. --link-trans: color 0.5s, background 0.5s, ease-in-out;
  66. --img-trans: opacity 0.5s ease-in-out;
  67. /* Palette */
  68. --orange: #ff851b;
  69. --dark-orange: #c27d42;
  70. --light-gray: #c8c8c8; /* (HS)L: 200/255 */
  71. --gray: #808080; /* (HS)L: 128/255 */
  72. --gray-240: #f0f0f0; /* (HS)L: 240/255 */
  73. --gray-100: #646464; /* (HS)L: 100/255 */
  74. --gray-50: #323232; /* (HS)L: 50/255 */
  75. /* Sections */
  76. --bg-color: #fff;
  77. --text-color: var(--gray-100);
  78. --heading-color: var(--gray-100);
  79. --link-color: var(--orange);
  80. --link-hover-color: var(--gray-50);
  81. --link-visited-color: var(--dark-orange);
  82. --nav-link-color: var(--gray);
  83. --nav-link-hover-color: var(--orange);
  84. --main-title-link-color: var(--link-color);
  85. --main-title-link-hover-color: var(--link-hover-color);
  86. --toc-title-color: var(--gray);
  87. --toc-bg-color: var(--gray-240);
  88. --toc-link-color: var(--link-color);
  89. --toc-link-hover-color: var(--link-hover-color);
  90. /* Syntax highlighting */
  91. --code-border-color: var(--light-gray);
  92. --code-bg-color: var(--gray-240);
  93. --code-text-color: var(--gray);
  94. --code-error-color: #c60901;
  95. --code-datatype-color: var(--gray-50);
  96. --code-string-color: var(--orange);
  97. }
  98. * {
  99. margin: 0;
  100. padding: 0;
  101. box-sizing: border-box;
  102. }
  103. html {
  104. background: var(--bg-color);
  105. color: var(--text-color);
  106. font-family: var(--sans-font);
  107. font-size: 62.5%;
  108. }
  109. h1, h2, h3, h4, h5, h6 {
  110. color: var(--heading-color);
  111. word-wrap: break-word;
  112. }
  113. h1 {
  114. margin: 4rem 0 2rem;
  115. font-size: 2.8rem;
  116. }
  117. h2 {
  118. margin: 3rem 0 1.5rem;
  119. font-size: 2.4rem;
  120. }
  121. h3 {
  122. margin: 3rem 0 1.5rem;
  123. font-size: 2.2rem;
  124. }
  125. a {
  126. font-weight: 500;
  127. color: var(--link-color);
  128. text-decoration: none;
  129. }
  130. a:hover {
  131. color: var(--link-hover-color);
  132. transition: var(--link-trans);
  133. }
  134. a:visited { color: var(--link-visited-color); }
  135. code {
  136. font-family: var(--mono-font);
  137. }
  138. img {
  139. display: block;
  140. max-width: 100%;
  141. height: auto;
  142. }
  143. /* Sections --------------------------------------------------------------- */
  144. .header {
  145. margin: 5rem auto;
  146. }
  147. .header-title {
  148. text-align: center;
  149. margin: 0 auto 1.6rem;
  150. font-size: 3.8rem;
  151. }
  152. .header-title__link, .header-title__link:hover {
  153. background: none;
  154. color: var(--heading-color);
  155. text-decoration: none;
  156. }
  157. .nav {
  158. margin: 0 auto;
  159. }
  160. .nav__link {
  161. font-size: 2rem;
  162. font-weight: 400;
  163. color: var(--nav-link-color);
  164. text-decoration: none;
  165. }
  166. .nav__link:hover {
  167. color: var(--nav-link-hover-color);
  168. }
  169. .main {
  170. font-size: 1.6rem;
  171. word-wrap: break-word;
  172. }
  173. .main-title { font-size: 2.6rem; }
  174. .main-title a { color: var(--main-title-link-color); }
  175. .main-title a:hover { color: var(--main-title-link-hover-color); }
  176. .main p { margin: 1.5rem 0; }
  177. .main ol { margin: 0 0 0 2rem; }
  178. .main ol li { margin: 1rem 0; }
  179. .main ul {
  180. list-style: disc outside;
  181. margin: 0 0 0 2rem;
  182. }
  183. .main ul li { margin: 1rem 0; }
  184. .main ul li p { margin: 0; }
  185. .main ul li ul li { margin: 0 0 0 2.6rem; }
  186. .toc {
  187. margin: 2rem 0 4rem;
  188. background: var(--toc-bg-color);
  189. border-radius: 0.5rem;
  190. }
  191. .toc-title {
  192. margin: 0 0 1rem;
  193. font-size: 2rem;
  194. font-weight: 600;
  195. color: var(--toc-title-color);
  196. }
  197. .toc a {
  198. font-weight: 400;
  199. color: var(--toc-link-color);
  200. }
  201. .toc a:hover { color: var(--toc-link-hover-color); }
  202. .toc ul { list-style: none; }
  203. .toc ul li:before { content: unset; }
  204. .toc ul li ul li { margin: 0 0 0 1.2rem; }
  205. .toc ul li ul li ul li { margin: 0 0 0 2.6rem; }
  206. .footer {
  207. margin: 4rem auto;
  208. font-size: 1.2rem;
  209. }
  210. .footer p {
  211. margin: 1rem 0;
  212. text-align: center;
  213. }
  214. .footer a[rel="license"]:hover {
  215. background: none;
  216. }
  217. .footer a[rel="license"] img {
  218. margin: 1rem auto;
  219. border: 0;
  220. opacity: 0.8;
  221. }
  222. .footer a[rel="license"] img:hover {
  223. opacity: 1.0;
  224. transition: var(--img-trans);
  225. }
  226. /* Syntax highlighting ---------------------------------------------------- */
  227. div.sourceCode {
  228. padding: 0 1rem;
  229. border-top: 1.2rem solid var(--code-border-color);
  230. border-radius: 0.5rem;
  231. background: var(--code-bg-color);
  232. }
  233. pre.sourceCode {
  234. padding: 2rem 0;
  235. background: var(--code-bg-color);
  236. overflow: auto;
  237. }
  238. .sourceLine, .sourceLine:hover {
  239. background: var(--code-bg-color);
  240. color: var(--code-text-color);
  241. }
  242. .sourceCode .er { color: var(--code-error-color); }
  243. .sourceCode .dt { color: var(--code-datatype-color); }
  244. .sourceCode .st { color: var(--code-string-color); }
  245. /* Indentation adjustment hack */
  246. code.sourceCode span[id^="cb"] { margin: 0 0 0 -4rem; }
  247. code.sourceCode:first-child { margin: 0 0 0 4rem; }
  248. code.sourceCode .dt { margin: 0 0 0 -2rem; }
  249. /* Media queries ---------------------------------------------------------- */
  250. @media (max-width: 689px) {
  251. .header, .main, .footer { padding: 0 2rem; }
  252. /* Scale header logo */
  253. .header-title__link img {
  254. max-width: 90%;
  255. position: relative;
  256. object-fit: cover;
  257. object-position: center;
  258. }
  259. /* Stack nav items */
  260. .nav { width: 18rem; }
  261. .nav__link { display: block; }
  262. /* TOC spans full width */
  263. .toc {
  264. margin: 0 -2rem;
  265. padding: 4rem 2rem;
  266. }
  267. }
  268. @media (min-width: 690px) {
  269. .header, .main, .footer { padding: 0 5rem; }
  270. /* Horizontal nav */
  271. .nav { text-align: center; }
  272. .nav__link {
  273. margin: 0 1rem;
  274. display: inline;
  275. }
  276. /* TOC is 45% of min-width */
  277. .toc {
  278. margin: 0;
  279. padding: 4rem;
  280. width: 31rem;
  281. }
  282. }
  283. @media (min-width: 960px) {
  284. /* Center sections, set fixed width */
  285. .header, .main, .footer {
  286. width: 95rem;
  287. margin-left: auto;
  288. margin-right: auto;
  289. }
  290. }
  291. /* Misc ------------------------------------------------------------- */
  292. #theme-selector:hover {
  293. cursor: pointer;
  294. }
  295. /* Dark theme ------------------------------------------------------------- */
  296. @media (prefers-color-scheme: dark) {
  297. :root {
  298. /* Palette */
  299. --orange: #ff851b;
  300. --dark-orange: #c27d42;
  301. --light-gray: #c8c8c8; /* (HS)L: 200/255 */
  302. --gray: #808080; /* (HS)L: 128/255 */
  303. --gray-50: #323232; /* (HS)L: 50/255 */
  304. --gray-35: #232323; /* (HS)L: 35/255 */
  305. /* Sections */
  306. --bg-color: var(--gray-50);
  307. --text-color: var(--light-gray);
  308. --heading-color: var(--light-gray);
  309. --link-color: var(--orange);
  310. --link-hover-color: var(--light-gray);
  311. --link-visited-color: var(--dark-orange);
  312. --nav-link-color: var(--light-gray);
  313. --nav-link-hover-color: var(--orange);
  314. --main-title-link-color: var(--link-color);
  315. --main-title-link-hover-color: var(--link-hover-color);
  316. --toc-title-color: var(--gray);
  317. --toc-bg-color: var(--gray-35);
  318. --toc-link-color: var(--link-color);
  319. --toc-link-hover-color: var(--link-hover-color);
  320. /* Syntax highlighting */
  321. --code-border-color: #ed9c55; /* light orange */
  322. --code-bg-color: var(--gray-35);
  323. --code-text-color: #555; /* (HS)L: 85/255 */
  324. --code-error-color: #c60901; /* red */
  325. --code-datatype-color: var(--gray);
  326. --code-string-color: #ed9c55;
  327. }
  328. }
  329. /* Repeat inside a .dark class to continue to support theme selection links in
  330. * the nav. The .dark and .light classes allow users to override the media
  331. * query-detected setting via the selection links if desired. */
  332. :root.dark {
  333. /* Palette */
  334. --orange: #ff851b;
  335. --dark-orange: #c27d42;
  336. --light-gray: #c8c8c8; /* (HS)L: 200/255 */
  337. --gray: #808080; /* (HS)L: 128/255 */
  338. --gray-50: #323232; /* (HS)L: 50/255 */
  339. --gray-35: #232323; /* (HS)L: 35/255 */
  340. /* Sections */
  341. --bg-color: var(--gray-50);
  342. --text-color: var(--light-gray);
  343. --heading-color: var(--light-gray);
  344. --link-color: var(--orange);
  345. --link-hover-color: var(--light-gray);
  346. --link-visited-color: var(--dark-orange);
  347. --nav-link-color: var(--light-gray);
  348. --nav-link-hover-color: var(--orange);
  349. --main-title-link-color: var(--link-color);
  350. --main-title-link-hover-color: var(--link-hover-color);
  351. --toc-title-color: var(--gray);
  352. --toc-bg-color: var(--gray-35);
  353. --toc-link-color: var(--link-color);
  354. --toc-link-hover-color: var(--link-hover-color);
  355. /* Syntax highlighting */
  356. --code-border-color: #ed9c55; /* light orange */
  357. --code-bg-color: var(--gray-35);
  358. --code-text-color: #555; /* (HS)L: 85/255 */
  359. --code-error-color: #c60901; /* red */
  360. --code-datatype-color: var(--gray);
  361. --code-string-color: #ed9c55;
  362. }