AlkoLight.css

CSS wanda 2 Vues Taille : 26.71 KB Date : Jan 15, 26 @ 3:47 PM
  1. 1@import url('https://fonts.googleapis.com/css2?family=Fira+Code:[email protected]&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&display=swap');
  2. 2
  3. 3/* Override Bootstrap dark theme to use light variables */
  4. 4html[data-bs-theme="dark"] {
  5. 5 --bs-blue: #0d6efd;
  6. 6 --bs-indigo: #6610f2;
  7. 7 --bs-purple: #6f42c1;
  8. 8 --bs-pink: #d63384;
  9. 9 --bs-red: #dc3545;
  10. 10 --bs-orange: #fd7e14;
  11. 11 --bs-yellow: #ffc107;
  12. 12 --bs-green: #198754;
  13. 13 --bs-teal: #20c997;
  14. 14 --bs-cyan: #0dcaf0;
  15. 15 --bs-black: #000;
  16. 16 --bs-white: #fff;
  17. 17 --bs-gray: #6c757d;
  18. 18 --bs-gray-dark: #343a40;
  19. 19 --bs-gray-100: #f8f9fa;
  20. 20 --bs-gray-200: #e9ecef;
  21. 21 --bs-gray-300: #dee2e6;
  22. 22 --bs-gray-400: #ced4da;
  23. 23 --bs-gray-500: #adb5bd;
  24. 24 --bs-gray-600: #6c757d;
  25. 25 --bs-gray-700: #495057;
  26. 26 --bs-gray-800: #343a40;
  27. 27 --bs-gray-900: #212529;
  28. 28 --bs-primary: #0d6efd;
  29. 29 --bs-secondary: #6c757d;
  30. 30 --bs-success: #198754;
  31. 31 --bs-info: #0dcaf0;
  32. 32 --bs-warning: #ffc107;
  33. 33 --bs-danger: #dc3545;
  34. 34 --bs-light: #f8f9fa;
  35. 35 --bs-dark: #212529;
  36. 36 --bs-primary-rgb: 13, 110, 253;
  37. 37 --bs-secondary-rgb: 108, 117, 125;
  38. 38 --bs-success-rgb: 25, 135, 84;
  39. 39 --bs-info-rgb: 13, 202, 240;
  40. 40 --bs-warning-rgb: 255, 193, 7;
  41. 41 --bs-danger-rgb: 220, 53, 69;
  42. 42 --bs-light-rgb: 248, 249, 250;
  43. 43 --bs-dark-rgb: 33, 37, 41;
  44. 44 --bs-primary-text-emphasis: #052c65;
  45. 45 --bs-secondary-text-emphasis: #2b2f32;
  46. 46 --bs-success-text-emphasis: #0a3622;
  47. 47 --bs-info-text-emphasis: #055160;
  48. 48 --bs-warning-text-emphasis: #664d03;
  49. 49 --bs-danger-text-emphasis: #58151c;
  50. 50 --bs-light-text-emphasis: #495057;
  51. 51 --bs-dark-text-emphasis: #495057;
  52. 52 --bs-primary-bg-subtle: #cfe2ff;
  53. 53 --bs-secondary-bg-subtle: #e2e3e5;
  54. 54 --bs-success-bg-subtle: #d1e7dd;
  55. 55 --bs-info-bg-subtle: #cff4fc;
  56. 56 --bs-warning-bg-subtle: #fff3cd;
  57. 57 --bs-danger-bg-subtle: #f8d7da;
  58. 58 --bs-light-bg-subtle: #fcfcfd;
  59. 59 --bs-dark-bg-subtle: #ced4da;
  60. 60 --bs-primary-border-subtle: #9ec5fe;
  61. 61 --bs-secondary-border-subtle: #c4c8cb;
  62. 62 --bs-success-border-subtle: #a3cfbb;
  63. 63 --bs-info-border-subtle: #9eeaf9;
  64. 64 --bs-warning-border-subtle: #ffe69c;
  65. 65 --bs-danger-border-subtle: #f1aeb5;
  66. 66 --bs-light-border-subtle: #e9ecef;
  67. 67 --bs-dark-border-subtle: #adb5bd;
  68. 68 --bs-white-rgb: 255, 255, 255;
  69. 69 --bs-black-rgb: 0, 0, 0;
  70. 70 --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  71. 71 --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  72. 72 --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
  73. 73 --bs-body-font-family: var(--bs-font-sans-serif);
  74. 74 --bs-body-font-size: 1rem;
  75. 75 --bs-body-font-weight: 400;
  76. 76 --bs-body-line-height: 1.5;
  77. 77 --bs-body-color: #212529;
  78. 78 --bs-body-color-rgb: 33, 37, 41;
  79. 79 --bs-body-bg: #fff;
  80. 80 --bs-body-bg-rgb: 255, 255, 255;
  81. 81 --bs-emphasis-color: #000;
  82. 82 --bs-emphasis-color-rgb: 0, 0, 0;
  83. 83 --bs-secondary-color: rgba(33, 37, 41, 0.75);
  84. 84 --bs-secondary-color-rgb: 33, 37, 41;
  85. 85 --bs-secondary-bg: #e9ecef;
  86. 86 --bs-secondary-bg-rgb: 233, 236, 239;
  87. 87 --bs-tertiary-color: rgba(33, 37, 41, 0.5);
  88. 88 --bs-tertiary-color-rgb: 33, 37, 41;
  89. 89 --bs-tertiary-bg: #f8f9fa;
  90. 90 --bs-tertiary-bg-rgb: 248, 249, 250;
  91. 91 --bs-heading-color: inherit;
  92. 92 --bs-link-color: #0d6efd;
  93. 93 --bs-link-color-rgb: 13, 110, 253;
  94. 94 --bs-link-decoration: underline;
  95. 95 --bs-link-hover-color: #0a58ca;
  96. 96 --bs-link-hover-color-rgb: 10, 88, 202;
  97. 97 --bs-code-color: #d63384;
  98. 98 --bs-highlight-color: #212529;
  99. 99 --bs-highlight-bg: #fff3cd;
  100. 100 --bs-border-width: 1px;
  101. 101 --bs-border-style: solid;
  102. 102 --bs-border-color: #dee2e6;
  103. 103 --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
  104. 104 --bs-border-radius: 0.375rem;
  105. 105 --bs-border-radius-sm: 0.25rem;
  106. 106 --bs-border-radius-lg: 0.5rem;
  107. 107 --bs-border-radius-xl: 1rem;
  108. 108 --bs-border-radius-xxl: 2rem;
  109. 109 --bs-border-radius-2xl: var(--bs-border-radius-xxl);
  110. 110 --bs-border-radius-pill: 50rem;
  111. 111 --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  112. 112 --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
  113. 113 --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
  114. 114 --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
  115. 115 --bs-focus-ring-width: 0.25rem;
  116. 116 --bs-focus-ring-opacity: 0.25;
  117. 117 --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
  118. 118 --bs-form-valid-color: #198754;
  119. 119 --bs-form-valid-border-color: #198754;
  120. 120 --bs-form-invalid-color: #dc3545;
  121. 121 --bs-form-invalid-border-color: #dc3545;
  122. 122 color: var(--bs-body-color);
  123. 123 background-color: var(--bs-body-bg);
  124. 124}
  125. 125
  126. 126/* Additional overrides for specific classes */
  127. 127.text-light { color: #212529 !important; }
  128. 128.bg-dark { background-color: #ffffff !important; }
  129. 129.navbar.bg-dark { background-color: #ffffff !important; }
  130. 130.list-group-item-dark { background-color: #f8f9fa !important; color: #212529 !important; }
  131. 131.form-control, .form-select { background-color: #f8f9fa !important; color: #212529 !important; border-color: #ced4da !important; }
  132. 132.btn-group .btn-select { background-color: #f8f9fa !important; color: #6c757d !important; border-color: #ced4da !important; }
  133. 133
  134. 134/* === Base =============================================================== */
  135. 135body {
  136. 136 font-family: "Fira Sans", sans-serif;
  137. 137 font-weight: 300;
  138. 138 font-optical-sizing: auto;
  139. 139 font-style: normal;
  140. 140 font-variation-settings: "wdth" 100;
  141. 141 background-color: #ffffff !important;
  142. 142 color: #212529;
  143. 143 margin: 0 !important;
  144. 144 padding: 0 !important;
  145. 145 overflow-x: hidden;
  146. 146}
  147. 147
  148. 148.card { background-color: #ffffff; border: none; color: #212529; margin-bottom: 1.5rem; }
  149. 149.container-xl { max-width: 1140px; margin: 0 auto; padding: 0 15px; }
  150. 150
  151. 151/* === Navbar & forms ===================================================== */
  152. 152.navbar { background-color: #ffffff; border-bottom: 1px solid rgba(0,0,0,.1); }
  153. 153.navbar-brand { font-weight: 600; font-size: 1.5rem; display: flex; align-items: center; gap: 8px; }
  154. 154.nav-link { color: #212529; transition: color .2s; }
  155. 155.nav-link:hover { color: #0d6efd !important; }
  156. 156
  157. 157.search-form { max-width: 300px; width: 100%; display: flex; align-items: center; }
  158. 158.search-form .form-control { background-color: #f8f9fa; border-color: #ced4da; color: #212529; }
  159. 159.search-form .form-control:focus { background-color: #f8f9fa; border-color: #0d6efd; box-shadow: 0 0 0 .25rem rgba(13,110,253,.25); }
  160. 160.search-form .btn { border-color: #ced4da; }
  161. 161
  162. 162.dropdown-menu { background-color: #ffffff; border: 1px solid rgba(0,0,0,.1); }
  163. 163.dropdown-item { color: #212529; }
  164. 164.dropdown-item:hover { background: #0d6efd; color: #fff; }
  165. 165
  166. 166.modal-content { background: #ffffff; }
  167. 167.modal-header { border-bottom: 1px solid rgba(0,0,0,.1); }
  168. 168.modal-footer { border-top: 1px solid rgba(0,0,0,.1); }
  169. 169
  170. 170.btn-oauth { display: flex; align-items: center; justify-content: center; gap: 8px; }
  171. 171.navbar-center { flex-grow: 1; display: flex; justify-content: center; }
  172. 172.navbar-toggler { margin-left: 15px; }
  173. 173
  174. 174@media (max-width: 991px) {
  175. 175 .navbar-center { justify-content: center; }
  176. 176 .search-form { max-width: 100%; margin: 10px auto; }
  177. 177 .navbar-nav-guest { margin-top: 10px; }
  178. 178 .navbar-collapse { justify-content: flex-end; }
  179. 179 .navbar-toggler { margin-left: 10px; }
  180. 180}
  181. 181
  182. 182/* === reCAPTCHA (light) =================================================== */
  183. 183.g-recaptcha { background: #ffffff !important; border: 0 !important; padding: 0 !important; margin-bottom: 1.5rem !important; width: 304px !important; overflow: hidden !important; }
  184. 184.g-recaptcha > div, .g-recaptcha iframe { background: #ffffff !important; border: 0 !important; box-shadow: none !important; margin: 0 !important; padding: 0 !important; }
  185. 185.g-recaptcha * { background: #ffffff !important; color: #212529 !important; border: 0 !important; }
  186. 186.g-recaptcha > div > div { background: #ffffff !important; border: 0 !important; box-shadow: none !important; }
  187. 187.g-recaptcha iframe { transform: scale(1) !important; -webkit-transform: scale(1) !important; transform-origin: 0 0 !important; -webkit-transform-origin: 0 0 !important; }
  188. 188
  189. 189/* === Buttons & inputs =================================================== */
  190. 190.paste-button { width: 150px; margin-top: 1.5rem !important; }
  191. 191
  192. 192/* select disguised as a button inside .btn-group */
  193. 193.btn-group .btn-select {
  194. 194 width: auto;
  195. 195 padding: .25rem .75rem;
  196. 196 border: 1px solid var(--bs-secondary);
  197. 197 color: var(--bs-secondary);
  198. 198 border-radius: 0;
  199. 199 appearance: none;
  200. 200}
  201. 201.btn-group > .btn-select:first-child { border-top-left-radius: var(--bs-border-radius-sm); border-bottom-left-radius: var(--bs-border-radius-sm); }
  202. 202.btn-group > .btn-select:last-child { border-top-right-radius: var(--bs-border-radius-sm); border-bottom-right-radius: var(--bs-border-radius-sm); }
  203. 203
  204. 204.btn-outline-secondary:active,
  205. 205.btn-outline-secondary.active,
  206. 206.btn-check:checked + .btn-outline-secondary,
  207. 207.show > .btn-outline-secondary.dropdown-toggle {
  208. 208 background-color: rgba(var(--bs-secondary-rgb), .2);
  209. 209 color: var(--bs-secondary);
  210. 210 border-color: var(--bs-secondary);
  211. 211}
  212. 212.btn-outline-secondary:focus-visible { box-shadow: 0 0 0 .2rem rgba(var(--bs-secondary-rgb), .25); }
  213. 213.btn-group .btn-select + .btn { margin-left: -1px; }
  214. 214
  215. 215.form-group, .card-body { background: #ffffff !important; padding: 15px; margin: 0 !important; }
  216. 216.list-group-item-dark { background: #f8f9fa; }
  217. 217.page-link { background: #f8f9fa; border-color: #dee2e6; color: #212529; }
  218. 218
  219. 219/* === Misc small UI bits ================================================= */
  220. 220.line-number-tooltip { position: absolute; background: #f8f9fa; color: #212529; padding: 2px 6px; border-radius: 3px; font-size: 12px; z-index: 1000; display: none; }
  221. 221.recent-paste-button { margin-left: auto; min-width: 30px; }
  222. 222.list-group-item { display: flex; align-items: center; padding-right: 10px; }
  223. 223.navbar-nav-guest { margin-left: auto !important; }
  224. 224.navbar-nav.me-auto { margin-right: 1rem !important; }
  225. 225
  226. 226.card-header {
  227. 227 overflow-x: auto; max-width: 100%; display: flex; justify-content: space-between;
  228. 228 align-items: center; flex-wrap: wrap; gap: 1rem;
  229. 229}
  230. 230.card-header h1 { margin: 0; font-size: 1rem; }
  231. 231.card-header .meta { font-size: .9rem; margin: 0; }
  232. 232.card-header .btn-group { flex-shrink: 0; }
  233. 233
  234. 234/* === Code blocks / GeSHi =============================================== */
  235. 235.code-content, .paste, .geshi { background: #f6f8fa; color: #24292e; }
  236. 236
  237. 237.code-content .de1, .paste .de2, .paste .li1, .paste .li2 { color: #24292e !important; }
  238. 238.code-content .kw1, .paste .sy1 { color: #005cc5 !important; }
  239. 239.code-content .kw2 { color: #22863a !important; }
  240. 240.code-content .st0 { color: #032f62 !important; }
  241. 241.code-content .co1, .paste .coMULTI { color: #6a737d !important; font-style: italic; }
  242. 242.code-content .nu0 { color: #6f42c1 !important; }
  243. 243.code-content .me1, .code-content .me2 { color: #005cc5 !important; }
  244. 244.code-content .br0 { color: #24292e !important; }
  245. 245.code-content .sy0 { color: #d73a49 !important; }
  246. 246.code-content .re0 { color: #6f42c1 !important; }
  247. 247.code-content .st_h { color: #22863a !important; }
  248. 248
  249. 249.geshi .kw1 { color: #005cc5 !important; }
  250. 250.geshi .kw2 { color: #22863a !important; }
  251. 251.geshi .st0 { color: #032f62 !important; }
  252. 252.geshi .co1 { color: #6a737d !important; font-style: italic; }
  253. 253.geshi .nu0 { color: #6f42c1 !important; }
  254. 254.geshi .sy0 { color: #d73a49 !important; }
  255. 255.geshi .br0 { color: #24292e !important; }
  256. 256.geshi .re0 { color: #6f42c1 !important; }
  257. 257.geshi .me1, .geshi .me2 { color: #005cc5 !important; }
  258. 258
  259. 259.geshi ol.geshi-ln { color: #6a737d; }
  260. 260.geshi.geshi-fancy ol.geshi-ln > li { border-left-color: #e1e4e8; }
  261. 261
  262. 262.code-content {
  263. 263 overflow-x: auto; max-width: 100%; border-radius: 6px; margin-bottom: 1rem;
  264. 264 font-family: "Fira Code", monospace; font-weight: 200; font-optical-sizing: auto;
  265. 265 font-style: normal; font-size: .8rem;
  266. 266}
  267. 267.code-content li { border-left: 1px solid rgba(0,0,0,.12) !important; }
  268. 268
  269. 269.code-content.no-line-numbers ol,
  270. 270.code-content.no-line-numbers pre,
  271. 271.code-content.no-line-numbers ol li,
  272. 272.code-content.no-line-numbers pre span {
  273. 273 list-style: none !important; margin-left: 0 !important; padding-left: 0 !important; border-left: none !important;
  274. 274}
  275. 275
  276. 276/* GeSHi tweak when numbers hidden */
  277. 277.code-content.no-line-numbers ol li { padding-left: 10px !important; }
  278. 278
  279. 279.code-content.no-line-numbers ol li::before,
  280. 280.code-content.no-line-numbers pre::before,
  281. 281.code-content.no-line-numbers pre span::before { content: none !important; }
  282. 282
  283. 283.code-content-fullscreen {
  284. 284 position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 1050;
  285. 285 margin: 0; padding: 1rem; background: #ffffff;
  286. 286}
  287. 287
  288. 288.syntax-select { width: 200px; }
  289. 289.input-group-text { background: #f8f9fa; border-color: #ced4da; color: #212529; }
  290. 290.guest-welcome { padding: 2rem; }
  291. 291.guest-welcome i { font-size: 5rem; margin-bottom: 1rem; }
  292. 292
  293. 293.no-line-numbers ol, .no-line-numbers ol li.marker { list-style: none !important; }
  294. 294
  295. 295.close-btn {
  296. 296 position: absolute; top: 5px; right: 10px; background: none; border: none;
  297. 297 font-size: 1.5em; cursor: pointer; color: #212529;
  298. 298}
  299. 299.notification { position: relative; overflow: auto; padding: 10px; margin-bottom: 10px; border: 1px solid #ccc; display: none; }
  300. 300.notification.error { border-color: #dc3545; color: #dc3545; }
  301. 301.notification.fade-out { opacity: 0; transition: opacity .5s; }
  302. 302
  303. 303/* GDPR banner */
  304. 304#cookieBanner { font-size: .9em; z-index: 1080; display: none; background: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; backdrop-filter: blur(3px); }
  305. 305
  306. 306/* === Editor (textarea + gutter) ======================================== */
  307. 307
  308. 308/* when a file is dragged over the editor */
  309. 309.editor-wrap { position: relative; }
  310. 310
  311. 311/* Subtle outline when dragging over the zone */
  312. 312#edit-code.drag-hover,
  313. 313.editor-wrap.drag-hover {
  314. 314 outline: 2px dashed var(--drop-accent, var(--bs-primary, #0d6efd));
  315. 315 outline-offset: 4px;
  316. 316}
  317. 317
  318. 318/* Overlay */
  319. 319.editor-wrap .drop-overlay {
  320. 320 position: absolute;
  321. 321 inset: 0;
  322. 322 display: none;
  323. 323 align-items: center;
  324. 324 justify-content: center;
  325. 325 z-index: 10;
  326. 326 pointer-events: none;
  327. 327
  328. 328 /* light-friendly glass */
  329. 329 background: rgba(0,0,0, .06);
  330. 330 color: var(--drop-text, #212529);
  331. 331 border: 2px dashed rgba(0,0,0, .55);
  332. 332 border-radius: .6rem;
  333. 333 text-shadow: 0 1px 2px rgba(255,255,255,.6);
  334. 334 font-weight: 600;
  335. 335
  336. 336 /* gentle glow using Bootstrap primary */
  337. 337 box-shadow:
  338. 338 0 0 0 2px rgba(var(--bs-primary-rgb, 13,110,253), .15),
  339. 339 0 0 36px rgba(var(--bs-primary-rgb, 13,110,253), .18) inset;
  340. 340}
  341. 341
  342. 342.editor-wrap.dragging .drop-overlay { display: flex; }
  343. 343
  344. 344/* slightly nicer motion */
  345. 345@media (prefers-reduced-motion: no-preference) {
  346. 346 .editor-wrap .drop-overlay { transition: opacity .15s ease-in-out; opacity: .98; }
  347. 347 .editor-wrap.dragging .drop-overlay { opacity: 1; }
  348. 348}
  349. 349
  350. 350.editor-wrap { position: relative; display: grid; grid-template-columns: max-content 1fr; align-items: stretch; gap: 0; overflow: hidden; box-shadow: none !important; }
  351. 351.editor-gutter {
  352. 352 display: flex; overflow: hidden; text-align: right; user-select: none; white-space: pre;
  353. 353 color: #6a737d; background: #f6f8fa; border: 1px solid #d0d7de; border-right: none;
  354. 354 border-radius: .5rem 0 0 .5rem; box-sizing: border-box; line-height: 1.5; font-size: 14px;
  355. 355 padding: 8px 6px; min-width: 2rem; font-variant-numeric: tabular-nums; font-feature-settings: "tnum";
  356. 356}
  357. 357.editor-gutter-inner { white-space: pre; padding: 0 6px 0 4px; padding-top: 0; align-self: flex-start; will-change: transform; }
  358. 358.editor-ta {
  359. 359 font-family: "Fira Code", monospace; line-height: 1.5; font-size: 14px; color: #24292f;
  360. 360 background: #ffffff; border: 1px solid #d0d7de; border-left: none; border-radius: 0 .5rem .5rem 0;
  361. 361 outline: none !important; box-shadow: none !important; resize: vertical; padding: 8px 10px; width: 100%; caret-color: #24292f;
  362. 362}
  363. 363.editor-ta::-webkit-scrollbar { width: 12px; }
  364. 364.editor-ta::-webkit-scrollbar-track { background: #ffffff; }
  365. 365.editor-ta::-webkit-scrollbar-thumb { background: #d0d7de; border-radius: 6px; border: 3px solid #ffffff; }
  366. 366.editor-ta:focus, .search-form .form-control:focus { box-shadow: none !important; border-color: #d0d7de !important; outline: 0 !important; }
  367. 367
  368. 368/* outline btns */
  369. 369.btn-outline-secondary { --btn-border: rgba(var(--bs-secondary-rgb), .8); border-color: var(--btn-border); }
  370. 370.btn-outline-secondary:hover, .btn-outline-secondary:focus { border-color: var(--btn-border); background-color: rgba(var(--bs-secondary-rgb), .08); }
  371. 371.btn-outline-secondary:active, .btn-outline-secondary.active, .btn-check:checked + .btn-outline-secondary, .show > .btn-outline-secondary.dropdown-toggle { border-color: var(--btn-border); background-color: rgba(var(--bs-secondary-rgb), .16); }
  372. 372.btn-outline-secondary:focus-visible { outline: 0; box-shadow: 0 0 0 .2rem rgba(var(--bs-secondary-rgb), .25); }
  373. 373.btn-group .btn { position: relative; z-index: 1; }
  374. 374.btn-group .btn:focus, .btn-group .btn:active, .btn-group .btn.active { z-index: 2; }
  375. 375.btn-group .btn-select { border-color: var(--btn-border); }
  376. 376.btn-group .btn-select:focus { box-shadow: none; }
  377. 377
  378. 378/* Force GeSHi line numbers to render and be visible */
  379. 379.code-content ol { list-style-type: decimal !important; list-style-position: outside !important; padding-left: 3.5em !important; margin-left: 0 !important; }
  380. 380.code-content ol li { list-style-type: none !important; padding-left: .5em; }
  381. 381.code-content ol li::marker { content: counter(list-item)"\a0\a0"; }
  382. 382.code-content:not(.no-line-numbers) ol, .code-content:not(.no-line-numbers) ol li { list-style: decimal !important; }
  383. 383
  384. 384.no-line-numbers ol, .no-line-numbers ol li, .no-line-numbers ol li::before {
  385. 385 list-style: none !important; counter-increment: none !important; content: '' !important; padding-left: 0 !important; margin-left: 0 !important;
  386. 386}
  387. 387.no-line-numbers ol { padding-left: 0 !important; }
  388. 388
  389. 389/* highlight.php numbers layout */
  390. 390.code-content pre.hljs { margin: 0; }
  391. 391.code-content .hljs-ln, .code-content .hljs-ln li { list-style: none !important; margin-left: 0 !important; padding-left: 0 !important; }
  392. 392.code-content .hljs-ln {
  393. 393 display: table; width: 100%; border-collapse: separate; border-spacing: 0;
  394. 394}
  395. 395.code-content .hljs-ln-line { display: table-row; }
  396. 396.code-content .hljs-ln-n, .code-content .hljs-ln-c { display: table-cell; vertical-align: top; background: inherit; }
  397. 397.code-content .hljs-ln-n {
  398. 398 user-select: none; text-align: right; padding: 0 .50rem 0 0; white-space: pre; opacity: .6;
  399. 399 font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; width: 1px;
  400. 400}
  401. 401.code-content .hljs-ln-c { border-left: 1px solid rgba(0,0,0,.12); padding-left: .75rem; white-space: pre; width: 100%; }
  402. 402.code-content.no-line-numbers .hljs-ln-n { display: none; }
  403. 403.code-content.no-line-numbers .hljs-ln-c { border-left: 0; padding-left: 0; }
  404. 404
  405. 405/* line highlight */
  406. 406:root {
  407. 407 --line-hl-bg: rgb(107 164 255 / 12%);
  408. 408 --line-hl-bar: rgb(74 180 255 / 50%);
  409. 409 --line-hl: rgb(74 180 255 / 100%);
  410. 410}
  411. 411@media (prefers-color-scheme: light) {
  412. 412 :root { --line-hl-bg: rgb(107 164 255 / 12%); --line-hl-bar: rgb(74 180 255 / 50%); --line-hl: rgb(74 180 255 / 100%); }
  413. 413}
  414. 414.hljs-hl { background: var(--line-hl-bg); position: relative; box-shadow: inset 3px 0 0 var(--line-hl-bar); }
  415. 415.hljs-hl::marker span.hljs-ln-n { color: var(--line-hl); }
  416. 416
  417. 417/* Markdown/Parsedown */
  418. 418.md-body { padding: 20px; border-radius: var(--bs-border-radius-sm); background: #f6f8fa !important; }
  419. 419
  420. 420html { scroll-behavior: smooth; }
  421. 421
  422. 422/* ---------- Comments ---------- */
  423. 423
  424. 424/* one place to tweak the indent */
  425. 425#comments { --indent-step: 1.25rem; overflow-x: hidden; }
  426. 426
  427. 427/* IMPORTANT: cancel Bootstrap’s flex list-group inside comments */
  428. 428#comments .list-group { display: block; }
  429. 429#comments .list-group-item {
  430. 430 display: block !important; /* overrides .list-group-item{display:flex} */
  431. 431 overflow: visible;
  432. 432}
  433. 433
  434. 434/* text wrapping guards */
  435. 435#comments .comment-main { min-width: 0; }
  436. 436#comments .comment-body,
  437. 437#comments .comment-body a { overflow-wrap: anywhere; word-break: break-word; }
  438. 438
  439. 439/* only the top level keeps dividers */
  440. 440#comments .list-group.list-group-flush > .list-group-item { border-width: 0 0 1px 0; }
  441. 441
  442. 442/* each nested UL indents itself; because it's display:block,
  443. 443 the indent reduces its available width instead of overflowing */
  444. 444#comments .comment-main > ul.list-group {
  445. 445 margin: .5rem 0 0 var(--indent-step);
  446. 446 padding-left: .75rem;
  447. 447 border-left: 1px solid rgba(0,0,0,.15);
  448. 448 box-sizing: border-box;
  449. 449 width: auto; /* don’t force 100% in flex land */
  450. 450 max-width: 100%;
  451. 451}
  452. 452
  453. 453/* nested rows don't add their own borders/padding */
  454. 454#comments .comment-main > ul.list-group > .list-group-item {
  455. 455 border: 0 !important;
  456. 456 padding-left: 0;
  457. 457 padding-right: 0;
  458. 458}
  459. 459
  460. 460.comment-avatar { width: 36px; height: 36px; background: rgba(57,155,255,.15); }
  461. 461#comments .list-group-item:target {
  462. 462 outline: 1px solid rgba(13,110,253,.35);
  463. 463 background: rgba(13,110,253,.05);
  464. 464 scroll-margin-top: 90px;
  465. 465}
  466. 466.comment-permalink { opacity: .5; } .comment-permalink:hover { opacity: 1; }
  467. 467
  468. 468
  469. 469/* ---------- Diff viewer ---------- */
  470. 470.diff-outer { padding-top: 12px; }
  471. 471
  472. 472/* Toolbar */
  473. 473.diff-toolbar {
  474. 474 display: flex; align-items: center; flex-wrap: wrap; gap: .5rem;
  475. 475 padding: .5rem .75rem;
  476. 476 border: 1px solid var(--bs-border-color, #d0d7de);
  477. 477 border-radius: .5rem;
  478. 478 background: var(--bs-body-bg, transparent);
  479. 479}
  480. 480.diff-toolbar .grow { flex: 1; }
  481. 481.diff-toolbar .lbl { opacity: .8; font-size: .9rem; margin-right: .25rem; }
  482. 482.langbar { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; width: 100%; }
  483. 483.lang-select { min-width: 160px; }
  484. 484
  485. 485/* Area + scrollport */
  486. 486.diff-area {
  487. 487 --lno: 56px; /* per-side line number width */
  488. 488 --splitter-hit: 14px; /* pointer target width */
  489. 489 --splitter-line: 2px; /* visual line width */
  490. 490 position: relative;
  491. 491 margin-top: .75rem;
  492. 492}
  493. 493.diff-area .diff-scroll {
  494. 494 height: clamp(60svh, calc(100svh - 240px), 88svh);
  495. 495 overflow: auto;
  496. 496 border: 1px solid var(--bs-border-color, #d0d7de);
  497. 497 border-radius: .5rem;
  498. 498 position: relative;
  499. 499}
  500. 500
  501. 501/* Sticky overlay host for the splitter (no layout impact) */
  502. 502.diff-area .split-overlay {
  503. 503 position: sticky;
  504. 504 top: 0;
  505. 505 height: 0;
  506. 506 pointer-events: none;
  507. 507 z-index: 10;
  508. 508}
  509. 509
  510. 510/* Splitter — wide hit area, thin visual line */
  511. 511.diff-area .splitter {
  512. 512 position: absolute;
  513. 513 top: 0;
  514. 514 height: 100svh;
  515. 515 left: var(--form-split-left, 50%);
  516. 516 width: var(--splitter-hit);
  517. 517 transform: translateX(calc(-.5 * var(--splitter-hit)));
  518. 518 cursor: col-resize;
  519. 519 pointer-events: auto;
  520. 520 z-index: 11;
  521. 521}
  522. 522.diff-area .splitter::before {
  523. 523 content: "";
  524. 524 position: absolute; inset: 0;
  525. 525 margin: 0 calc((var(--splitter-hit) - var(--splitter-line)) / 2);
  526. 526 border-radius: 1px;
  527. 527 background: var(--bs-border-color, #d0d7de);
  528. 528}
  529. 529.diff-area .splitter::after {
  530. 530 content: "";
  531. 531 position: absolute; inset: 0;
  532. 532 background: #6c757d1a; opacity: 0;
  533. 533 transition: opacity .12s ease-in-out;
  534. 534 pointer-events: none;
  535. 535}
  536. 536.diff-area .splitter:hover::before { background: var(--bs-border-color, #6c757db3); }
  537. 537.diff-area .splitter:hover::after,
  538. 538.diff-area .splitter.dragging::after { opacity: .35; }
  539. 539
  540. 540/* Table */
  541. 541.diff-table {
  542. 542 width: 100%;
  543. 543 border-collapse: separate;
  544. 544 border-spacing: 0;
  545. 545 table-layout: fixed;
  546. 546 font: 13px/1.35 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  547. 547}
  548. 548.diff-table td { vertical-align: top; }
  549. 549
  550. 550/* Line numbers */
  551. 551.diff-table td.no {
  552. 552 width: var(--lno); min-width: var(--lno);
  553. 553 color: var(--bs-secondary-color, #6a737d);
  554. 554 user-select: none; text-align: right;
  555. 555 padding: 2px 6px;
  556. 556 border-right: 1px solid var(--bs-border-color, #d0d7de);
  557. 557}
  558. 558
  559. 559/* Code cells */
  560. 560.diff-table td.code { padding: 0; }
  561. 561.code-inner {
  562. 562 display: block; width: 100%; padding: 2px 3px;
  563. 563 overflow-x: auto; overflow-y: visible; /* avoid nested vertical scrollbars */
  564. 564}
  565. 565/* neutralize highlight block padding */
  566. 566.code-inner .hljs { display: inline; padding: 0 !important; background: transparent; line-height: inherit; }
  567. 567
  568. 568/* Show trailing spaces faintly */
  569. 569.show-invisibles .code-inner {
  570. 570 background-image: linear-gradient(to right, transparent 0, transparent calc(100% - 1ch), rgba(0,0,0,.06) calc(100% - 1ch));
  571. 571 background-size: 100% 1.35em;
  572. 572 background-repeat: repeat-y;
  573. 573}
  574. 574
  575. 575/* Zebra */
  576. 576.diff-table tr:nth-child(even) td { background: rgba(0,0,0,.02); }
  577. 577@media (prefers-color-scheme: light) {
  578. 578 .diff-table tr:nth-child(even) td { background: rgba(0,0,0,.02); }
  579. 579}
  580. 580
  581. 581/* highlight changes */
  582. 582.diff-inside-add,
  583. 583.diff-inside-del {
  584. 584 background: none;
  585. 585 padding: 0;
  586. 586 border-radius: 0;
  587. 587 box-decoration-break: clone;/* each wrapped line paints correctly */
  588. 588}
  589. 589
  590. 590.diff-inside-add {
  591. 591 /* marker-style swash under the text */
  592. 592 box-shadow: inset 0 -0.35em 0 rgba(25,135,84,.35);
  593. 593 outline: 1px solid transparent; outline-offset: 1px;
  594. 594}
  595. 595
  596. 596.diff-inside-del {
  597. 597 box-shadow: inset 0 -0.35em 0 rgba(220,53,69,.28);
  598. 598 /*text-decoration: line-through;*/
  599. 599 text-decoration-thickness: 1.8px;
  600. 600 text-decoration-color: rgba(220,53,69,.85);
  601. 601 text-decoration-skip-ink: auto;
  602. 602}
  603. 603
  604. 604@media (prefers-color-scheme: light) {
  605. 605 .diff-inside-add { box-shadow: inset 0 -0.35em 0 rgba(25,135,84,.35); }
  606. 606 .diff-inside-del { box-shadow: inset 0 -0.35em 0 rgba(220,53,69,.28); }
  607. 607}
  608. 608
  609. 609/* Change surfaces */
  610. 610.diff-table td.ctx { background: transparent; }
  611. 611.diff-table td.add { background: rgba(25,135,84,.16); }
  612. 612.diff-table td.del { background: rgba(220,53,69,.18); }
  613. 613.diff-table td.empty { background: rgba(108,117,125,.10); }
  614. 614
  615. 615.marker { font-weight: 600; margin-right: .25rem; opacity: .9; }
  616. 616
  617. 617/* Wrapping + line-number toggles */
  618. 618.wrap-on .code-inner { white-space: pre-wrap; word-break: break-word; }
  619. 619
  620. 620/* Keep cells, collapse visuals when line numbers are off */
  621. 621.lineoff td.no {
  622. 622 width: 0 !important; min-width: 0 !important;
  623. 623 padding: 0 !important; border: 0 !important;
  624. 624 color: transparent !important; overflow: hidden !important;
  625. 625}
  626. 626.lineoff col.col-lno-l,
  627. 627.lineoff col.col-lno-r { width: 0 !important; min-width: 0 !important; }
  628. 628
  629. 629/* Unified specifics */
  630. 630.diff-table.unified td.no { width: 2.75rem; min-width: 2.75rem; }
  631. 631.diff-table.unified.lineoff td.no { width: 0 !important; min-width: 0 !important; padding: 0 !important; border: 0 !important; }
  632. 632.diff-table.unified td.code { width: auto; }
  633. 633
  634. 634/* A11y/UX */
  635. 635@media (pointer: coarse) {
  636. 636 .diff-area { --splitter-hit: 18px; } /* easier to grab on touch */
  637. 637}
  638. 638@media (prefers-reduced-motion: reduce) {
  639. 639 .diff-area .splitter::after { transition: none; }
  640. 640}
  641. 641
  642. 642/* Responsive */
  643. 643@media (max-width: 1000px) { .langbar { grid-template-columns: 1fr; } }
  644. 644
  645. 645/* ---- Internal CAPTCHA ---- */
  646. 646.captcha-img {
  647. 647 height: 64px;
  648. 648 width: 220px;
  649. 649 object-fit: cover;
  650. 650 border-radius: .5rem;
  651. 651 border: 1px solid var(--bs-border-color, rgba(0,0,0,.125));
  652. 652 background: var(--bs-body-bg,#fff);
  653. 653 user-select: none;
  654. 654}
  655. 655[data-captcha] .form-control { min-height: 56px; }
  656. 656.imagever { width: auto; max-width: 100%; height: 56px; object-fit: cover; }
Commentaires 0
Connectez-vous pour publier un commentaire.
  • Aucun commentaire pour l’instant. Soyez le premier.
Connectez-vous pour publier un commentaire. Connexion ou inscription