1
0

style.css 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. /* rekopub.monoexp.com: the monoexp.com stylesheet, plus code, tables, downloads and the converter form */
  2. :root {
  3. --bg: #fafaf9;
  4. --surface: #ffffff;
  5. --text: #1c1c1a;
  6. --muted: #5f5f5a;
  7. --border: #e4e4e0;
  8. --accent: #1c1c1a;
  9. --tag-bg: #f0f0ed;
  10. --focus: #2f6fdb;
  11. --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  12. --mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  13. --radius: 10px;
  14. --max: 760px;
  15. }
  16. @media (prefers-color-scheme: dark) {
  17. :root {
  18. --bg: #121211;
  19. --surface: #1a1a19;
  20. --text: #ececea;
  21. --muted: #a3a39e;
  22. --border: #2c2c2a;
  23. --accent: #ececea;
  24. --tag-bg: #252524;
  25. --focus: #7aa7f5;
  26. }
  27. }
  28. *,
  29. *::before,
  30. *::after { box-sizing: border-box; }
  31. html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
  32. body {
  33. margin: 0;
  34. background: var(--bg);
  35. color: var(--text);
  36. font: 17px/1.6 var(--sans);
  37. -webkit-font-smoothing: antialiased;
  38. }
  39. a { color: inherit; text-underline-offset: 3px; }
  40. a:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 4px; }
  41. .wrap {
  42. max-width: var(--max);
  43. margin: 0 auto;
  44. padding: 0 20px;
  45. }
  46. .sr-only {
  47. position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  48. overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  49. }
  50. /* Header */
  51. .site-header { border-bottom: 1px solid var(--border); }
  52. .header-inner {
  53. display: flex;
  54. align-items: center;
  55. justify-content: space-between;
  56. height: 64px;
  57. }
  58. .wordmark {
  59. font: 600 18px/1 var(--mono);
  60. letter-spacing: -0.02em;
  61. text-decoration: none;
  62. }
  63. .wordmark span { color: var(--muted); }
  64. nav { display: flex; gap: 20px; }
  65. nav a {
  66. font-size: 15px;
  67. color: var(--muted);
  68. text-decoration: none;
  69. }
  70. nav a:hover { color: var(--text); }
  71. /* About */
  72. .about { padding: 56px 0 40px; }
  73. .about h1 {
  74. margin: 0 0 12px;
  75. font-size: clamp(30px, 6vw, 42px);
  76. line-height: 1.15;
  77. letter-spacing: -0.03em;
  78. }
  79. .about p { margin: 0 0 14px; color: var(--muted); max-width: 62ch; }
  80. .about .lede { font-size: 20px; color: var(--text); }
  81. /* Sections */
  82. main section:not(.about) { padding-bottom: 48px; scroll-margin-top: 16px; }
  83. main h2,
  84. main .label {
  85. margin: 0 0 16px;
  86. font: 600 13px/1 var(--mono);
  87. text-transform: uppercase;
  88. letter-spacing: 0.08em;
  89. color: var(--muted);
  90. }
  91. main h3,
  92. main h4 { margin: 28px 0 8px; font-size: 19px; letter-spacing: -0.01em; }
  93. /* A section that groups others, such as Download / Use ReKoPub */
  94. main .group { padding-top: 40px; border-top: 1px solid var(--border); }
  95. main .group > section:last-child { padding-bottom: 0; }
  96. main h2.section-title {
  97. margin: 0 0 28px;
  98. font: 650 clamp(24px, 4.5vw, 30px)/1.2 var(--sans);
  99. text-transform: none;
  100. letter-spacing: -0.02em;
  101. color: var(--text);
  102. }
  103. main section p, main section li { max-width: 68ch; }
  104. main section ul:not(.cards) { padding-left: 22px; }
  105. main section li { margin-bottom: 6px; }
  106. main section li pre { margin: 8px 0 0; }
  107. .small { font-size: 14.5px; color: var(--muted); }
  108. /* Code */
  109. code { font: 0.88em/1.5 var(--mono); }
  110. :not(pre) > code {
  111. background: var(--tag-bg);
  112. padding: 2px 5px;
  113. border-radius: 5px;
  114. white-space: nowrap;
  115. }
  116. pre {
  117. margin: 0 0 16px;
  118. padding: 14px 16px;
  119. background: var(--surface);
  120. border: 1px solid var(--border);
  121. border-radius: var(--radius);
  122. overflow-x: auto;
  123. }
  124. pre code { font-size: 14px; }
  125. /* Feature cards */
  126. .cards {
  127. list-style: none;
  128. margin: 0;
  129. padding: 0;
  130. display: grid;
  131. grid-template-columns: 1fr;
  132. gap: 16px;
  133. }
  134. @media (min-width: 640px) {
  135. .cards { grid-template-columns: 1fr 1fr; }
  136. }
  137. .card {
  138. background: var(--surface);
  139. border: 1px solid var(--border);
  140. border-radius: var(--radius);
  141. padding: 20px;
  142. }
  143. .card h3 { margin: 0 0 8px; font-size: 17px; }
  144. .card p { margin: 0; color: var(--muted); font-size: 15.5px; }
  145. /* Tables */
  146. .table-scroll { overflow-x: auto; margin: 0 0 16px; }
  147. table { width: 100%; border-collapse: collapse; font-size: 15.5px; }
  148. th, td { text-align: left; vertical-align: top; padding: 9px 12px 9px 0; border-bottom: 1px solid var(--border); }
  149. th { font-weight: 600; font-size: 14px; color: var(--muted); }
  150. td:first-child { white-space: nowrap; }
  151. .libraries td:first-child { white-space: normal; min-width: 9em; }
  152. .libraries td:last-child { white-space: nowrap; padding-right: 0; }
  153. /* Download box */
  154. .release {
  155. background: var(--surface);
  156. border: 1px solid var(--border);
  157. border-radius: var(--radius);
  158. padding: 20px 20px 6px;
  159. margin-bottom: 20px;
  160. }
  161. .release-version {
  162. display: flex;
  163. flex-wrap: wrap;
  164. align-items: baseline;
  165. gap: 4px 12px;
  166. margin: 0 0 8px;
  167. }
  168. .release-version strong { font: 600 22px/1.2 var(--mono); letter-spacing: -0.02em; }
  169. .release-version span { color: var(--muted); font-size: 15px; }
  170. .downloads td:last-child a { font: 14.5px/1.5 var(--mono); overflow-wrap: anywhere; }
  171. .downloads td:first-child { white-space: normal; }
  172. @media (max-width: 520px) {
  173. .downloads thead { display: none; }
  174. .downloads tr { display: block; padding: 9px 0; border-bottom: 1px solid var(--border); }
  175. .downloads td { display: block; padding: 0; border: 0; }
  176. .downloads td:first-child { font-size: 14px; color: var(--muted); }
  177. }
  178. /* Converter form */
  179. .convert {
  180. background: var(--surface);
  181. border: 1px solid var(--border);
  182. border-radius: var(--radius);
  183. padding: 20px;
  184. }
  185. .convert fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
  186. .convert label[for] { display: block; font-weight: 600; margin-bottom: 8px; }
  187. .convert-row { display: flex; gap: 10px; }
  188. .convert input[type="url"] {
  189. flex: 1;
  190. min-width: 0;
  191. padding: 10px 12px;
  192. font: 16px/1.4 var(--sans);
  193. color: var(--text);
  194. background: var(--bg);
  195. border: 1px solid var(--border);
  196. border-radius: 8px;
  197. }
  198. .convert button {
  199. padding: 10px 18px;
  200. font: 600 16px/1.4 var(--sans);
  201. color: var(--bg);
  202. background: var(--accent);
  203. border: 1px solid var(--accent);
  204. border-radius: 8px;
  205. cursor: pointer;
  206. }
  207. .convert input:focus-visible,
  208. .convert button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
  209. .convert fieldset:disabled { opacity: 0.55; }
  210. .convert fieldset:disabled button { cursor: not-allowed; }
  211. .convert .formats { display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 14px; }
  212. .formats legend { float: left; margin-right: 6px; font-weight: 600; }
  213. .formats label { display: inline-flex; align-items: baseline; gap: 6px; cursor: pointer; }
  214. .formats label span { color: var(--muted); font-size: 14.5px; }
  215. .convert-result:empty { display: none; }
  216. .convert-result {
  217. margin-top: 16px;
  218. padding-top: 14px;
  219. border-top: 1px solid var(--border);
  220. }
  221. .convert-result p { margin: 0 0 8px; }
  222. .convert > .small { margin: 16px 0 0; }
  223. main section ul.convert-files { list-style: none; padding: 0; margin: 0 0 8px; }
  224. .convert-files li { margin-bottom: 6px; }
  225. .convert-files a { font: 15px/1.5 var(--mono); overflow-wrap: anywhere; }
  226. .convert-error { font-weight: 600; }
  227. @media (max-width: 520px) {
  228. .convert-row { flex-direction: column; }
  229. }
  230. /* Footer */
  231. .site-footer { border-top: 1px solid var(--border); }
  232. .site-footer p { margin: 0; padding: 24px 0 32px; font-size: 14px; color: var(--muted); }