unaltraweb 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/Makefile +412 -0
  4. data/README.md +226 -0
  5. data/_config.yml +842 -0
  6. data/_data/i18n/ca.yml +278 -0
  7. data/_data/i18n/en.yml +278 -0
  8. data/_data/i18n/es.yml +278 -0
  9. data/_includes/audio.liquid +30 -0
  10. data/_includes/bib_search.liquid +5 -0
  11. data/_includes/blog-list.liquid +66 -0
  12. data/_includes/book-citation.liquid +33 -0
  13. data/_includes/citation.liquid +26 -0
  14. data/_includes/custom_head.liquid +3 -0
  15. data/_includes/custom_scripts.liquid +5 -0
  16. data/_includes/cv/list.liquid +5 -0
  17. data/_includes/cv/list_groups.liquid +51 -0
  18. data/_includes/cv/map.liquid +29 -0
  19. data/_includes/cv/nested_list.liquid +16 -0
  20. data/_includes/cv/time_table.liquid +118 -0
  21. data/_includes/cv-download-card.liquid +26 -0
  22. data/_includes/developer-mode-switcher.liquid +24 -0
  23. data/_includes/disqus.liquid +13 -0
  24. data/_includes/distill_scripts.liquid +298 -0
  25. data/_includes/documentation-download-detail.liquid +76 -0
  26. data/_includes/documentation-downloads.liquid +71 -0
  27. data/_includes/documentation-profile-attributes.liquid +4 -0
  28. data/_includes/documentation-section-toc.liquid +9 -0
  29. data/_includes/documentation-sidebar.liquid +112 -0
  30. data/_includes/figure.liquid +87 -0
  31. data/_includes/footer.liquid +66 -0
  32. data/_includes/giscus.liquid +25 -0
  33. data/_includes/head.liquid +220 -0
  34. data/_includes/header.liquid +544 -0
  35. data/_includes/latest_posts.liquid +61 -0
  36. data/_includes/localized-date.liquid +5 -0
  37. data/_includes/manual-bibliography.liquid +2 -0
  38. data/_includes/manual-featured-readings.liquid +12 -0
  39. data/_includes/manual-other-readings.liquid +12 -0
  40. data/_includes/manual-page-toc.liquid +11 -0
  41. data/_includes/manual-sidebar.liquid +58 -0
  42. data/_includes/manual-teachers.liquid +74 -0
  43. data/_includes/metadata.liquid +278 -0
  44. data/_includes/news.liquid +48 -0
  45. data/_includes/newsletter.liquid +68 -0
  46. data/_includes/page-hero.liquid +96 -0
  47. data/_includes/page-link.liquid +8 -0
  48. data/_includes/pagination.liquid +22 -0
  49. data/_includes/post-reading-time.liquid +29 -0
  50. data/_includes/previous-next.liquid +37 -0
  51. data/_includes/profile-card.liquid +49 -0
  52. data/_includes/profile-feature-matrix.liquid +75 -0
  53. data/_includes/profile-highlights.liquid +122 -0
  54. data/_includes/project-grid.liquid +26 -0
  55. data/_includes/project-resource-link.liquid +45 -0
  56. data/_includes/project-resources.liquid +21 -0
  57. data/_includes/projects.liquid +38 -0
  58. data/_includes/projects_horizontal.liquid +37 -0
  59. data/_includes/publications-metrics-summary.liquid +69 -0
  60. data/_includes/publications-summary.liquid +127 -0
  61. data/_includes/reading-biblio-controls.liquid +65 -0
  62. data/_includes/reading-cover-card.liquid +93 -0
  63. data/_includes/reading-rating.liquid +11 -0
  64. data/_includes/recommended-readings.liquid +30 -0
  65. data/_includes/related_posts.liquid +39 -0
  66. data/_includes/repository/repo.liquid +48 -0
  67. data/_includes/repository/repo_trophies.liquid +44 -0
  68. data/_includes/repository/repo_user.liquid +35 -0
  69. data/_includes/resume/awards.liquid +19 -0
  70. data/_includes/resume/basics.liquid +28 -0
  71. data/_includes/resume/certificates.liquid +35 -0
  72. data/_includes/resume/education.liquid +54 -0
  73. data/_includes/resume/interests.liquid +34 -0
  74. data/_includes/resume/languages.liquid +31 -0
  75. data/_includes/resume/projects.liquid +32 -0
  76. data/_includes/resume/publications.liquid +28 -0
  77. data/_includes/resume/references.liquid +31 -0
  78. data/_includes/resume/skills.liquid +33 -0
  79. data/_includes/resume/volunteer.liquid +52 -0
  80. data/_includes/resume/work.liquid +52 -0
  81. data/_includes/scripts.liquid +364 -0
  82. data/_includes/search-data.js.liquid +341 -0
  83. data/_includes/selected_papers.liquid +3 -0
  84. data/_includes/t.liquid +31 -0
  85. data/_includes/team-grid.liquid +172 -0
  86. data/_includes/video.liquid +97 -0
  87. data/_layouts/about.liquid +93 -0
  88. data/_layouts/archive.liquid +45 -0
  89. data/_layouts/bib.liquid +677 -0
  90. data/_layouts/book-review.liquid +225 -0
  91. data/_layouts/book-shelf.liquid +66 -0
  92. data/_layouts/cv.liquid +127 -0
  93. data/_layouts/default.liquid +70 -0
  94. data/_layouts/distill.liquid +132 -0
  95. data/_layouts/documentation-download-detail.liquid +5 -0
  96. data/_layouts/documentation-home.liquid +100 -0
  97. data/_layouts/documentation-page.liquid +45 -0
  98. data/_layouts/manual-bib.liquid +73 -0
  99. data/_layouts/manual-chapter.liquid +99 -0
  100. data/_layouts/manual-featured-bib.liquid +100 -0
  101. data/_layouts/manual-home.liquid +120 -0
  102. data/_layouts/none.liquid +1 -0
  103. data/_layouts/outputs.liquid +29 -0
  104. data/_layouts/page.liquid +52 -0
  105. data/_layouts/post.liquid +95 -0
  106. data/_layouts/profile.liquid +36 -0
  107. data/_layouts/profiles.liquid +36 -0
  108. data/_layouts/project.liquid +7 -0
  109. data/_layouts/repositories.liquid +58 -0
  110. data/_layouts/theses.liquid +126 -0
  111. data/_plugins/bibliography_profiles.rb +164 -0
  112. data/_plugins/callouts.rb +104 -0
  113. data/_plugins/code_blocks.rb +277 -0
  114. data/_plugins/computation_figure_images.rb +266 -0
  115. data/_plugins/computation_sources.rb +42 -0
  116. data/_plugins/content_search_index.rb +210 -0
  117. data/_plugins/details.rb +23 -0
  118. data/_plugins/external-posts.rb +124 -0
  119. data/_plugins/figure_captions.rb +800 -0
  120. data/_plugins/file-exists.rb +22 -0
  121. data/_plugins/google-scholar-citations.rb +86 -0
  122. data/_plugins/hide-custom-bibtex.rb +18 -0
  123. data/_plugins/inspirehep-citations.rb +57 -0
  124. data/_plugins/localized_visual_sources.rb +145 -0
  125. data/_plugins/manual_release_metadata.rb +47 -0
  126. data/_plugins/mermaid_mmd_images.rb +233 -0
  127. data/_plugins/profile-pages.rb +28 -0
  128. data/_plugins/remove-accents.rb +32 -0
  129. data/_plugins/reproducible_build_time.rb +55 -0
  130. data/_plugins/search-data.rb +83 -0
  131. data/_plugins/theme-cache-bust.rb +56 -0
  132. data/_plugins/vega_visual_images.rb +290 -0
  133. data/_plugins/web_capture_images.rb +154 -0
  134. data/_sass/_base.scss +2133 -0
  135. data/_sass/_blog.scss +67 -0
  136. data/_sass/_callouts.scss +100 -0
  137. data/_sass/_custom.scss +437 -0
  138. data/_sass/_cv.scss +274 -0
  139. data/_sass/_developer.scss +97 -0
  140. data/_sass/_distill.scss +185 -0
  141. data/_sass/_documentation.scss +2220 -0
  142. data/_sass/_layout.scss +218 -0
  143. data/_sass/_manual.scss +2691 -0
  144. data/_sass/_profile.scss +323 -0
  145. data/_sass/_projects.scss +163 -0
  146. data/_sass/_reading.scss +465 -0
  147. data/_sass/_site-custom.scss +3 -0
  148. data/_sass/_tabs.scss +48 -0
  149. data/_sass/_team.scss +230 -0
  150. data/_sass/_themes.scss +254 -0
  151. data/_sass/_typograms.scss +132 -0
  152. data/_sass/_variables.scss +52 -0
  153. data/_sass/font-awesome/_animated.scss +152 -0
  154. data/_sass/font-awesome/_bordered-pulled.scss +20 -0
  155. data/_sass/font-awesome/_core.scss +49 -0
  156. data/_sass/font-awesome/_fixed-width.scss +7 -0
  157. data/_sass/font-awesome/_functions.scss +57 -0
  158. data/_sass/font-awesome/_icons.scss +13 -0
  159. data/_sass/font-awesome/_list.scss +18 -0
  160. data/_sass/font-awesome/_mixins.scss +65 -0
  161. data/_sass/font-awesome/_rotated-flipped.scss +31 -0
  162. data/_sass/font-awesome/_screen-reader.scss +14 -0
  163. data/_sass/font-awesome/_shims.scss +1578 -0
  164. data/_sass/font-awesome/_sizing.scss +16 -0
  165. data/_sass/font-awesome/_stacked.scss +32 -0
  166. data/_sass/font-awesome/_variables.scss +5044 -0
  167. data/_sass/font-awesome/brands.scss +30 -0
  168. data/_sass/font-awesome/fontawesome.scss +21 -0
  169. data/_sass/font-awesome/regular.scss +27 -0
  170. data/_sass/font-awesome/solid.scss +27 -0
  171. data/_sass/font-awesome/v4-shims.scss +11 -0
  172. data/_sass/tabler-icons/tabler-icons-filled.scss +1646 -0
  173. data/_sass/tabler-icons/tabler-icons-outline.scss +9859 -0
  174. data/_sass/tabler-icons/tabler-icons.scss +11463 -0
  175. data/_scripts/cronitor-analytics-setup.js +9 -0
  176. data/_scripts/giscus-setup.js +48 -0
  177. data/_scripts/google-analytics-setup.js +9 -0
  178. data/_scripts/open-panel-analytics-setup.js +14 -0
  179. data/_scripts/photoswipe-setup.js +11 -0
  180. data/assets/audio/epicaly-short-113909.mp3 +0 -0
  181. data/assets/bibliography/2018-12-22-distill.bib +7 -0
  182. data/assets/css/academicons.min.css +1 -0
  183. data/assets/css/bootstrap-toc.min.css +4 -0
  184. data/assets/css/bootstrap.min.css +7 -0
  185. data/assets/css/bootstrap.min.css.map +1 -0
  186. data/assets/css/jekyll-pygments-themes-github.css +209 -0
  187. data/assets/css/jekyll-pygments-themes-native.css +232 -0
  188. data/assets/css/jupyter-grade3.css +3758 -0
  189. data/assets/css/jupyter-monokai.css +3758 -0
  190. data/assets/css/jupyter.css +383 -0
  191. data/assets/css/main.scss +36 -0
  192. data/assets/css/mdb.min.css +48 -0
  193. data/assets/css/mdb.min.css.map +1 -0
  194. data/assets/css/scholar-icons.css +386 -0
  195. data/assets/fonts/academicons.ttf +0 -0
  196. data/assets/fonts/academicons.woff +0 -0
  197. data/assets/fonts/scholar-icons.ttf +0 -0
  198. data/assets/fonts/scholar-icons.woff +0 -0
  199. data/assets/fonts/tabler-icons-filled.ttf +0 -0
  200. data/assets/fonts/tabler-icons-filled.woff +0 -0
  201. data/assets/fonts/tabler-icons-filled.woff2 +0 -0
  202. data/assets/fonts/tabler-icons-outline.ttf +0 -0
  203. data/assets/fonts/tabler-icons-outline.woff +0 -0
  204. data/assets/fonts/tabler-icons-outline.woff2 +0 -0
  205. data/assets/fonts/tabler-icons.ttf +0 -0
  206. data/assets/fonts/tabler-icons.woff +0 -0
  207. data/assets/fonts/tabler-icons.woff2 +0 -0
  208. data/assets/html/relativity.html +15 -0
  209. data/assets/img/1.jpg +0 -0
  210. data/assets/img/10.jpg +0 -0
  211. data/assets/img/11.jpg +0 -0
  212. data/assets/img/12.jpg +0 -0
  213. data/assets/img/2.jpg +0 -0
  214. data/assets/img/3.jpg +0 -0
  215. data/assets/img/4.jpg +0 -0
  216. data/assets/img/5.jpg +0 -0
  217. data/assets/img/6.jpg +0 -0
  218. data/assets/img/7.jpg +0 -0
  219. data/assets/img/8.jpg +0 -0
  220. data/assets/img/9.jpg +0 -0
  221. data/assets/img/book_covers/the_godfather.jpg +0 -0
  222. data/assets/img/brand/dosquartsdedocs-logo-cafe.svg +31 -0
  223. data/assets/img/brand/dosquartsdedocs-logo-footer-cafe.svg +31 -0
  224. data/assets/img/brand/dosquartsdedocs-logo-white.svg +31 -0
  225. data/assets/img/brand/dosquartsdedocs-logo.svg +31 -0
  226. data/assets/img/prof_pic.jpg +0 -0
  227. data/assets/img/prof_pic_color.png +0 -0
  228. data/assets/img/profile-placeholder.svg +8 -0
  229. data/assets/img/publication_preview/brownian-motion.gif +0 -0
  230. data/assets/img/publication_preview/goodchild1992-gis-cover.jpg +0 -0
  231. data/assets/img/publication_preview/gutierrez2020-jtrg-preview.jpg +0 -0
  232. data/assets/img/publication_preview/harvey1989-postmodernity-cover.jpg +0 -0
  233. data/assets/img/publication_preview/tobler1970-economic-geography-cover.jpg +0 -0
  234. data/assets/img/publication_preview/tuan1977-space-place-cover.jpg +0 -0
  235. data/assets/img/publication_preview/wave-mechanics.gif +0 -0
  236. data/assets/img/publication_preview/zaragozi2025-rooftop-pv-preview.jpg +0 -0
  237. data/assets/img/rhino.png +0 -0
  238. data/assets/img/team/aaron-gutierrez.png +0 -0
  239. data/assets/img/team/alba-font.png +0 -0
  240. data/assets/img/team/alba-viana.png +0 -0
  241. data/assets/img/team/alejandro-gonzalez.png +0 -0
  242. data/assets/img/team/ana-pastor.png +0 -0
  243. data/assets/img/team/antoni-domenech.png +0 -0
  244. data/assets/img/team/benito-zaragozi.png +0 -0
  245. data/assets/img/team/cinta-sanz.png +0 -0
  246. data/assets/img/team/daniel-miravet.png +0 -0
  247. data/assets/img/team/eugenia-altamirano.png +0 -0
  248. data/assets/img/team/fiammetta-brandajs.png +0 -0
  249. data/assets/img/team/francesc-gonzalez.png +0 -0
  250. data/assets/img/team/isabel-paulino.png +0 -0
  251. data/assets/img/team/joan-borras.png +0 -0
  252. data/assets/img/team/julie-wilson.png +0 -0
  253. data/assets/img/team/liliana-sole.png +0 -0
  254. data/assets/img/team/maria-casado.png +0 -0
  255. data/assets/img/team/maria-medina.png +0 -0
  256. data/assets/img/team/marta-nello.png +0 -0
  257. data/assets/img/team/mogrify +1 -0
  258. data/assets/img/team/oscar-saladie.png +0 -0
  259. data/assets/img/team/paolo-russo.png +0 -0
  260. data/assets/img/team/raquel-santos.png +0 -0
  261. data/assets/img/team/salvador-anton.png +0 -0
  262. data/assets/img/team/sunsi-huertas.png +0 -0
  263. data/assets/img/team/user-placeholder.png +0 -0
  264. data/assets/img/team/wilbert-den-hoed.png +0 -0
  265. data/assets/img/team/xavier-delclos.png +0 -0
  266. data/assets/img/template_error.png +0 -0
  267. data/assets/js/bibsearch.js +70 -0
  268. data/assets/js/bootstrap-toc.min.js +5 -0
  269. data/assets/js/bootstrap.bundle.min.js +7 -0
  270. data/assets/js/bootstrap.bundle.min.js.map +1 -0
  271. data/assets/js/callouts.js +115 -0
  272. data/assets/js/chartjs-setup.js +14 -0
  273. data/assets/js/common.js +117 -0
  274. data/assets/js/content-search-match.js +159 -0
  275. data/assets/js/content-search.js +441 -0
  276. data/assets/js/copy_code.js +60 -0
  277. data/assets/js/custom.js +6 -0
  278. data/assets/js/developer-mode.js +103 -0
  279. data/assets/js/diff2html-setup.js +20 -0
  280. data/assets/js/distillpub/overrides.js +27 -0
  281. data/assets/js/distillpub/template.v2.js +9616 -0
  282. data/assets/js/distillpub/template.v2.js.map +1 -0
  283. data/assets/js/distillpub/transforms.v2.js +14557 -0
  284. data/assets/js/distillpub/transforms.v2.js.map +1 -0
  285. data/assets/js/documentation.js +435 -0
  286. data/assets/js/echarts-setup.js +29 -0
  287. data/assets/js/highlight-search-term.js +110 -0
  288. data/assets/js/jupyter_new_tab.js +18 -0
  289. data/assets/js/leaflet-setup.js +22 -0
  290. data/assets/js/manual.js +308 -0
  291. data/assets/js/masonry.js +12 -0
  292. data/assets/js/mathjax-setup.js +46 -0
  293. data/assets/js/mermaid-setup.js +37 -0
  294. data/assets/js/newsletter.js +105 -0
  295. data/assets/js/no_defer.js +24 -0
  296. data/assets/js/plotly-setup.js +52 -0
  297. data/assets/js/profile-nav.js +92 -0
  298. data/assets/js/progress-bar.js +73 -0
  299. data/assets/js/pseudocode-setup.js +18 -0
  300. data/assets/js/search/base-styles.min.js +286 -0
  301. data/assets/js/search/command-score.min.js +7 -0
  302. data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +18 -0
  303. data/assets/js/search/lit/decorators.min.js +7 -0
  304. data/assets/js/search/lit/directives/class-map.min.js +7 -0
  305. data/assets/js/search/lit/directives/join.min.js +7 -0
  306. data/assets/js/search/lit/directives/live.min.js +7 -0
  307. data/assets/js/search/lit/directives/ref.min.js +7 -0
  308. data/assets/js/search/lit/directives/repeat.min.js +7 -0
  309. data/assets/js/search/lit/directives/unsafe-html.min.js +7 -0
  310. data/assets/js/search/lit/index.min.js +7 -0
  311. data/assets/js/search/lit-element/lit-element.min.js +12 -0
  312. data/assets/js/search/lit-html/directives/class-map.min.js +22 -0
  313. data/assets/js/search/lit-html/directives/join.min.js +12 -0
  314. data/assets/js/search/lit-html/directives/live.min.js +28 -0
  315. data/assets/js/search/lit-html/directives/ref.min.js +32 -0
  316. data/assets/js/search/lit-html/directives/repeat.min.js +27 -0
  317. data/assets/js/search/lit-html/directives/unsafe-html.min.js +22 -0
  318. data/assets/js/search/lit-html/is-server.min.js +12 -0
  319. data/assets/js/search/lit-html/lit-html.min.js +12 -0
  320. data/assets/js/search/ninja-action.min.js +101 -0
  321. data/assets/js/search/ninja-footer.min.js +62 -0
  322. data/assets/js/search/ninja-header.min.js +78 -0
  323. data/assets/js/search/ninja-keys.min.js +39 -0
  324. data/assets/js/search/reactive-element/decorators/custom-element.min.js +12 -0
  325. data/assets/js/search/reactive-element/decorators/event-options.min.js +12 -0
  326. data/assets/js/search/reactive-element/decorators/property.min.js +22 -0
  327. data/assets/js/search/reactive-element/decorators/query-all.min.js +17 -0
  328. data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +17 -0
  329. data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +17 -0
  330. data/assets/js/search/reactive-element/decorators/query-async.min.js +17 -0
  331. data/assets/js/search/reactive-element/decorators/query.min.js +17 -0
  332. data/assets/js/search/reactive-element/decorators/state.min.js +27 -0
  333. data/assets/js/search/reactive-element/reactive-element.min.js +17 -0
  334. data/assets/js/search-setup.js +17 -0
  335. data/assets/js/shortcut-key.js +11 -0
  336. data/assets/js/tabs.min.js +5 -0
  337. data/assets/js/theme.js +314 -0
  338. data/assets/js/tooltips-setup.js +3 -0
  339. data/assets/js/typograms.js +1341 -0
  340. data/assets/js/vanilla-back-to-top.min.js +1 -0
  341. data/assets/js/vega-setup.js +24 -0
  342. data/assets/js/venobox-setup.js +5 -0
  343. data/assets/js/wechat.js +14 -0
  344. data/assets/js/zoom.js +15 -0
  345. data/assets/json/resume.json +98 -0
  346. data/assets/json/table_data.json +128 -0
  347. data/assets/jupyter/blog.ipynb +48 -0
  348. data/assets/pdf/example_pdf.pdf +0 -0
  349. data/assets/plotly/demo.html +72 -0
  350. data/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 +0 -0
  351. data/assets/webfonts/fa-brands-400.ttf +0 -0
  352. data/assets/webfonts/fa-brands-400.woff2 +0 -0
  353. data/assets/webfonts/fa-regular-400.ttf +0 -0
  354. data/assets/webfonts/fa-regular-400.woff2 +0 -0
  355. data/assets/webfonts/fa-solid-900.ttf +0 -0
  356. data/assets/webfonts/fa-solid-900.woff2 +0 -0
  357. data/assets/webfonts/fa-v4compatibility.ttf +0 -0
  358. data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
  359. data/docs/Gemfile +5 -0
  360. data/docs/_config.yml +83 -0
  361. data/docs/_documentation/en/01-quick-start.md +115 -0
  362. data/docs/_documentation/en/02-tools.md +146 -0
  363. data/docs/_documentation/en/03-usage.md +107 -0
  364. data/docs/_documentation/en/04-jekyll-basics.md +51 -0
  365. data/docs/_documentation/en/05-pages-collections.md +68 -0
  366. data/docs/_documentation/en/06-github-web-editing.md +92 -0
  367. data/docs/_documentation/en/10-profiles.md +125 -0
  368. data/docs/_documentation/en/11-unaltreselfie.md +39 -0
  369. data/docs/_documentation/en/12-unaltreprojecte.md +38 -0
  370. data/docs/_documentation/en/13-unaltremanual.md +237 -0
  371. data/docs/_documentation/en/14-unaltredocs.md +92 -0
  372. data/docs/_documentation/en/15-profile-checklist.md +39 -0
  373. data/docs/_documentation/en/20-syntax.md +353 -0
  374. data/docs/_documentation/en/21-themes.md +103 -0
  375. data/docs/_documentation/en/22-feature-reference.md +56 -0
  376. data/docs/_documentation/en/23-front-matter.md +51 -0
  377. data/docs/_documentation/en/24-data-files.md +28 -0
  378. data/docs/_documentation/en/30-customization.md +448 -0
  379. data/docs/_documentation/en/31-template.md +55 -0
  380. data/docs/_documentation/en/32-development.md +108 -0
  381. data/docs/_documentation/en/33-reusable-workflows.md +136 -0
  382. data/docs/_documentation/en/40-distribution.md +164 -0
  383. data/docs/_documentation/en/41-bibliometrics.md +137 -0
  384. data/docs/_documentation/en/42-docker-image.md +185 -0
  385. data/docs/_documentation/en/50-faq.md +33 -0
  386. data/docs/_pages/ca/index.md +35 -0
  387. data/docs/_pages/en/index.md +35 -0
  388. data/docs/_pages/es/index.md +35 -0
  389. data/docs/agents/action-prompts/00-start-site-session.txt +10 -0
  390. data/docs/agents/action-prompts/05-create-new-web.txt +5 -0
  391. data/docs/agents/action-prompts/10-content-update.txt +9 -0
  392. data/docs/agents/action-prompts/15-edit-default-content.txt +8 -0
  393. data/docs/agents/action-prompts/20-manual-teaching-materials.txt +18 -0
  394. data/docs/agents/action-prompts/22-manual-style-audit.txt +14 -0
  395. data/docs/agents/action-prompts/23-manual-structure-audit.txt +17 -0
  396. data/docs/agents/action-prompts/25-translation-prepublish.txt +8 -0
  397. data/docs/agents/action-prompts/30-project-site-update.txt +7 -0
  398. data/docs/agents/action-prompts/40-documentation-update.txt +7 -0
  399. data/docs/agents/action-prompts/50-bibliography-entry.txt +7 -0
  400. data/docs/agents/action-prompts/60-bibliometrics-refresh.txt +7 -0
  401. data/docs/agents/action-prompts/70-build-and-review.txt +12 -0
  402. data/docs/agents/manual-authoring-components.md +255 -0
  403. data/docs/agents/mcp-contract.md +162 -0
  404. data/docs/agents/quarto-computation-adoption.md +102 -0
  405. data/docs/assets/img/unaltraweb-docs-hero.svg +36 -0
  406. data/lib/unaltraweb/version.rb +8 -0
  407. data/lib/unaltraweb.rb +31 -0
  408. data/requirements.txt +5 -0
  409. data/scripts/biblio/fetch_scimago_csv.sh +126 -0
  410. data/scripts/biblio/metrics_common.py +154 -0
  411. data/scripts/biblio/metrics_merge_meta.py +73 -0
  412. data/scripts/biblio/metrics_update.py +826 -0
  413. data/scripts/computations/python/Dockerfile +37 -0
  414. data/scripts/computations/r/Dockerfile +31 -0
  415. data/scripts/computations/render.py +1267 -0
  416. data/scripts/cv/render_pdf_preview.sh +36 -0
  417. data/scripts/deploy/publish_branch.sh +80 -0
  418. data/scripts/generate_logo_variants.py +47 -0
  419. data/scripts/manual/Dockerfile +31 -0
  420. data/scripts/manual/build_pdf.py +1780 -0
  421. data/scripts/manual/filters/bibliography.lua +164 -0
  422. data/scripts/manual/filters/code-blocks.lua +102 -0
  423. data/scripts/manual/filters/figure-captions.lua +35 -0
  424. data/scripts/manual/publish_release.sh +281 -0
  425. data/scripts/manual/templates/manual.tex +494 -0
  426. data/scripts/manual/verify_release_assets.py +650 -0
  427. data/scripts/test_gem_build.py +128 -0
  428. data/scripts/test_reproducible_jekyll_build.py +191 -0
  429. data/scripts/test_wheel_install.py +282 -0
  430. data/scripts/unaltraweb-docker-mount.sh +36 -0
  431. data/scripts/unaltraweb-mcp-bootstrap.sh +105 -0
  432. data/scripts/unaltraweb-mcp-cleanup.sh +73 -0
  433. data/scripts/unaltraweb-mcp-project-id.sh +34 -0
  434. data/scripts/validate_distribution.py +563 -0
  435. data/scripts/validate_workflows.py +1285 -0
  436. data/scripts/web_captures/Dockerfile +31 -0
  437. data/scripts/web_captures/capture.mjs +157 -0
  438. data/scripts/web_captures/package-lock.json +56 -0
  439. data/scripts/web_captures/package.json +9 -0
  440. data/scripts/web_captures/render.py +867 -0
  441. data/src/unaltraweb_mcp/component-contract.json +153 -0
  442. data/src/unaltraweb_mcp/component-contract.schema.json +87 -0
  443. data/src/unaltraweb_mcp/docker_mount.py +19 -0
  444. metadata +861 -0
data/_sass/_base.scss ADDED
@@ -0,0 +1,2133 @@
1
+ /*******************************************************************************
2
+ * Styles for the base elements of the theme.
3
+ ******************************************************************************/
4
+
5
+ // Typography
6
+
7
+ p,
8
+ h1,
9
+ h2,
10
+ h3,
11
+ h4,
12
+ h5,
13
+ h6,
14
+ em,
15
+ div,
16
+ li,
17
+ span,
18
+ strong {
19
+ color: var(--global-text-color);
20
+ }
21
+
22
+ hr {
23
+ border-top: 1px solid var(--global-divider-color);
24
+ }
25
+
26
+ table {
27
+ td,
28
+ th {
29
+ font-size: 1rem;
30
+ padding: 1px 1rem 1px 0;
31
+ }
32
+
33
+ th {
34
+ font-weight: bold;
35
+ }
36
+ }
37
+
38
+ a,
39
+ table.table a {
40
+ color: var(--global-internal-link-color);
41
+
42
+ &:hover {
43
+ color: var(--global-internal-link-color);
44
+ text-decoration: underline;
45
+ }
46
+
47
+ &:hover:after :not(.nav-item.dropdown) {
48
+ width: 100%;
49
+ }
50
+ }
51
+
52
+ .table-dark {
53
+ background-color: transparent;
54
+ &.table-bordered {
55
+ border: 1px solid var(--global-divider-color) !important;
56
+ }
57
+ }
58
+
59
+ blockquote {
60
+ background: var(--global-bg-color);
61
+ border-left: 5px solid var(--global-theme-color);
62
+ margin: 1.5em 0;
63
+ padding: 1em;
64
+ font-size: 1.2rem;
65
+
66
+ p {
67
+ margin-bottom: 0;
68
+ }
69
+
70
+ /* Tips, warnings, and dangers blockquotes */
71
+ &.block-tip {
72
+ border-color: var(--global-tip-block);
73
+ background-color: var(--global-tip-block-bg);
74
+
75
+ em,
76
+ li,
77
+ p,
78
+ strong {
79
+ color: var(--global-tip-block-text);
80
+ }
81
+
82
+ a,
83
+ h1,
84
+ h2,
85
+ h3,
86
+ h4,
87
+ h5,
88
+ h6 {
89
+ color: var(--global-tip-block-title);
90
+ }
91
+ }
92
+
93
+ &.block-warning {
94
+ border-color: var(--global-warning-block);
95
+ background-color: var(--global-warning-block-bg);
96
+
97
+ em,
98
+ li,
99
+ p,
100
+ strong {
101
+ color: var(--global-warning-block-text);
102
+ }
103
+
104
+ a,
105
+ h1,
106
+ h2,
107
+ h3,
108
+ h4,
109
+ h5,
110
+ h6 {
111
+ color: var(--global-warning-block-title);
112
+ }
113
+ }
114
+
115
+ &.block-danger {
116
+ border-color: var(--global-danger-block);
117
+ background-color: var(--global-danger-block-bg);
118
+
119
+ em,
120
+ li,
121
+ p,
122
+ strong {
123
+ color: var(--global-danger-block-text);
124
+ }
125
+
126
+ a,
127
+ h1,
128
+ h2,
129
+ h3,
130
+ h4,
131
+ h5,
132
+ h6 {
133
+ color: var(--global-danger-block-title);
134
+ }
135
+ }
136
+ }
137
+
138
+ // Checklist
139
+
140
+ ul.task-list {
141
+ list-style-type: none; /* Remove bullets from all levels */
142
+ }
143
+
144
+ ul.task-list > li ul {
145
+ /* Nested lists within .task-list */
146
+ padding-inline-start: 1.5rem;
147
+ }
148
+
149
+ ul.task-list input[type="checkbox"] {
150
+ margin: 0.275rem 0.5rem 0.5rem -1rem;
151
+ vertical-align: middle;
152
+ }
153
+
154
+ // Math
155
+
156
+ .equation {
157
+ margin-bottom: 1rem;
158
+ text-align: center;
159
+ }
160
+
161
+ // Caption
162
+
163
+ .caption {
164
+ font-size: 0.875rem;
165
+ margin-top: 0.75rem;
166
+ margin-bottom: 1.5rem;
167
+ text-align: center;
168
+ }
169
+
170
+ // Card
171
+
172
+ .card {
173
+ background-color: var(--global-card-bg-color);
174
+
175
+ .card-img {
176
+ width: 100%;
177
+ padding-top: 1.25rem;
178
+ }
179
+
180
+ .card-title {
181
+ color: var(--global-text-color);
182
+ }
183
+
184
+ .card-body {
185
+ padding: 1.25rem 1.25rem 1.25rem 1.25rem;
186
+ }
187
+ }
188
+
189
+ // Citation
190
+
191
+ .citation,
192
+ .citation-number {
193
+ color: var(--global-citation-color);
194
+
195
+ &:hover {
196
+ color: var(--global-citation-color);
197
+ }
198
+ }
199
+
200
+ a[rel~="external"] {
201
+ color: var(--global-external-link-color);
202
+
203
+ &:hover {
204
+ color: var(--global-external-link-color);
205
+ }
206
+ }
207
+
208
+ // Profile
209
+
210
+ .profile {
211
+ width: 100%;
212
+
213
+ .more-info {
214
+ margin-bottom: 5px;
215
+ margin-top: 5px;
216
+ font-family: monospace;
217
+
218
+ p {
219
+ display: inline-block;
220
+ margin: 0;
221
+ }
222
+ }
223
+ }
224
+
225
+ .profile.float-right {
226
+ margin-left: 1rem;
227
+ }
228
+
229
+ .profile.float-left {
230
+ margin-right: 1rem;
231
+ }
232
+
233
+ @media (min-width: 576px) {
234
+ .profile {
235
+ width: 30%;
236
+
237
+ .address {
238
+ p {
239
+ display: block;
240
+ }
241
+ }
242
+ }
243
+ }
244
+
245
+ .post-description {
246
+ margin-bottom: 2rem;
247
+ font-size: 0.875rem;
248
+
249
+ a {
250
+ color: inherit;
251
+
252
+ &:hover {
253
+ color: var(--global-theme-color);
254
+ text-decoration: none;
255
+ }
256
+ }
257
+ }
258
+
259
+ // Navbar customization
260
+
261
+ .navbar {
262
+ box-shadow: none;
263
+ border-bottom: 1px solid var(--global-divider-color);
264
+ background-color: var(--global-bg-color);
265
+ opacity: 0.95;
266
+ }
267
+
268
+ .navbar .dropdown-menu,
269
+ .btn-group.dropdown .dropdown-menu {
270
+ background-color: var(--global-bg-color);
271
+ border: 1px solid var(--global-divider-color);
272
+
273
+ a:not(.active) {
274
+ color: var(--global-text-color);
275
+ }
276
+
277
+ a:hover {
278
+ color: var(--global-hover-color);
279
+ }
280
+
281
+ .dropdown-divider {
282
+ border-top: 1px solid var(--global-divider-color) !important;
283
+ }
284
+ }
285
+
286
+ .dropdown-item {
287
+ color: var(--global-text-color);
288
+
289
+ &:hover {
290
+ color: var(--global-hover-color);
291
+ background-color: var(--global-bg-color);
292
+ }
293
+ }
294
+
295
+ .dropdown-item.active,
296
+ .dropdown-item:active {
297
+ background-color: var(--global-hover-color);
298
+ color: var(--global-hover-text-color) !important;
299
+
300
+ &:hover {
301
+ color: var(--global-hover-text-color);
302
+ }
303
+ }
304
+
305
+ .language-option {
306
+ display: flex;
307
+ gap: 0.45rem;
308
+ align-items: center;
309
+ }
310
+
311
+ .language-option-label {
312
+ flex: 1 1 auto;
313
+ }
314
+
315
+ .language-default-badge {
316
+ border: 1px solid currentColor;
317
+ padding: 0.08rem 0.32rem;
318
+ font-size: 0.68rem;
319
+ font-weight: 700;
320
+ line-height: 1.2;
321
+ opacity: 0.78;
322
+ }
323
+
324
+ .navbar.navbar-light {
325
+ a {
326
+ &:hover {
327
+ text-decoration: none;
328
+ }
329
+ }
330
+
331
+ .navbar-brand {
332
+ color: var(--global-text-color);
333
+ }
334
+
335
+ .navbar-nav .nav-item .nav-link {
336
+ color: var(--global-text-color);
337
+
338
+ &:hover {
339
+ color: var(--global-hover-color);
340
+ }
341
+ }
342
+
343
+ .navbar-nav .nav-item.active > .nav-link {
344
+ background-color: inherit;
345
+ font-weight: bolder;
346
+ color: var(--global-theme-color);
347
+
348
+ &:hover {
349
+ color: var(--global-hover-color);
350
+ }
351
+ }
352
+
353
+ .navbar-brand.social {
354
+ padding-bottom: 0;
355
+ padding-top: 0;
356
+ font-size: 1.7rem;
357
+
358
+ a {
359
+ img {
360
+ width: 1.7rem;
361
+ height: 1.7rem;
362
+ margin-bottom: 0.5rem;
363
+ // margin: 0.5rem;
364
+ }
365
+
366
+ svg {
367
+ width: 1.7rem;
368
+ height: 1.7rem;
369
+ margin-bottom: 0.5rem;
370
+
371
+ image {
372
+ width: 1.7rem;
373
+ height: 1.7rem;
374
+ }
375
+ }
376
+
377
+ i::before {
378
+ color: var(--global-text-color);
379
+ transition-property: all 0.2s ease-in-out;
380
+ }
381
+
382
+ &:hover {
383
+ i::before {
384
+ color: var(--global-theme-color);
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ .navbar-toggler {
392
+ .icon-bar {
393
+ display: block;
394
+ width: 22px;
395
+ height: 2px;
396
+ background-color: var(--global-text-color);
397
+ border-radius: 1px;
398
+ margin-bottom: 4px;
399
+ transition: all 0.2s;
400
+ }
401
+
402
+ .top-bar {
403
+ transform: rotate(45deg);
404
+ transform-origin: 10% 10%;
405
+ }
406
+
407
+ .middle-bar {
408
+ opacity: 0;
409
+ }
410
+
411
+ .bottom-bar {
412
+ transform: rotate(-45deg);
413
+ transform-origin: 10% 90%;
414
+ }
415
+ }
416
+
417
+ .navbar-toggler.collapsed {
418
+ .top-bar {
419
+ transform: rotate(0);
420
+ }
421
+
422
+ .middle-bar {
423
+ opacity: 1;
424
+ }
425
+
426
+ .bottom-bar {
427
+ transform: rotate(0);
428
+ }
429
+ }
430
+
431
+ .content-navbar-search {
432
+ position: relative;
433
+ display: flex;
434
+ align-items: center;
435
+ }
436
+
437
+ .content-search-input {
438
+ width: 100%;
439
+ min-height: 2rem;
440
+ border: 1px solid var(--global-divider-color);
441
+ border-radius: 0.35rem;
442
+ background: var(--global-bg-color);
443
+ color: var(--global-text-color);
444
+ padding: 0.32rem 0.55rem;
445
+ font-size: 0.88rem;
446
+ }
447
+
448
+ .content-search-input:focus {
449
+ border-color: var(--global-theme-color);
450
+ }
451
+
452
+ .content-search-input:focus-visible {
453
+ outline: 2px solid var(--global-theme-color);
454
+ outline-offset: 2px;
455
+ }
456
+
457
+ .content-navbar-search-icon {
458
+ display: none;
459
+ }
460
+
461
+ .content-navbar-search .content-search-results {
462
+ position: absolute;
463
+ top: calc(100% + 0.42rem);
464
+ right: 0;
465
+ left: 0;
466
+ z-index: 1075;
467
+ text-align: left;
468
+ }
469
+
470
+ .content-search-results {
471
+ max-height: min(38vh, 320px);
472
+ overflow: auto;
473
+ border: 1px solid color-mix(in srgb, var(--global-divider-color) 78%, transparent);
474
+ border-radius: 0.35rem;
475
+ background: var(--global-bg-color);
476
+ box-shadow: 0 14px 40px rgba(0, 0, 0, 0.14);
477
+ padding: 0.75rem;
478
+ }
479
+
480
+ .content-search-results h2 {
481
+ margin: 0 0 0.45rem;
482
+ color: var(--global-text-color-light);
483
+ font-size: 0.72rem;
484
+ font-weight: 800;
485
+ letter-spacing: 0.06em;
486
+ text-transform: uppercase;
487
+ }
488
+
489
+ .content-search-results ol {
490
+ margin: 0;
491
+ padding: 0;
492
+ list-style: none;
493
+ }
494
+
495
+ .content-search-results li + li {
496
+ border-top: 1px solid var(--global-divider-color);
497
+ margin-top: 0.55rem;
498
+ padding-top: 0.55rem;
499
+ }
500
+
501
+ .content-search-results a {
502
+ display: block;
503
+ color: var(--global-text-color);
504
+ font-weight: 750;
505
+ line-height: 1.3;
506
+ text-decoration: none;
507
+ }
508
+
509
+ .content-search-results a:hover {
510
+ color: var(--global-theme-color);
511
+ text-decoration: none;
512
+ }
513
+
514
+ .content-search-results p,
515
+ .content-search-results .content-search-meta {
516
+ color: var(--global-text-color-light);
517
+ font-size: 0.82rem;
518
+ line-height: 1.4;
519
+ }
520
+
521
+ .content-search-results p {
522
+ margin: 0.22rem 0 0;
523
+ }
524
+
525
+ .content-search-results .content-search-meta {
526
+ display: block;
527
+ margin-top: 0.12rem;
528
+ font-weight: 700;
529
+ }
530
+
531
+ .content-search-results mark {
532
+ background: color-mix(in srgb, var(--global-theme-color) 24%, transparent);
533
+ color: var(--global-text-color);
534
+ padding: 0 0.12rem;
535
+ }
536
+
537
+ .profile-navbar-content-search {
538
+ width: min(16rem, 24vw);
539
+ margin-right: 0.25rem;
540
+ }
541
+
542
+ .profile-navbar-utilities {
543
+ display: flex;
544
+ flex: 0 0 auto;
545
+ flex-direction: row !important;
546
+ flex-wrap: nowrap !important;
547
+ align-items: center;
548
+ gap: 0.12rem;
549
+ margin-left: 0.35rem;
550
+ }
551
+
552
+ .profile-navbar-utilities .nav-item,
553
+ .profile-navbar-utilities .toggle-container {
554
+ display: inline-flex;
555
+ flex: 0 0 auto;
556
+ align-items: center;
557
+ }
558
+
559
+ .profile-navbar-utilities .nav-link {
560
+ display: inline-flex;
561
+ min-height: 2rem;
562
+ align-items: center;
563
+ }
564
+
565
+ .profile-navbar-utilities #search-toggle .nav-link {
566
+ min-width: 2rem;
567
+ justify-content: center;
568
+ }
569
+
570
+ @media (max-width: 767px) {
571
+ .profile-navbar-content-search {
572
+ width: 2.2rem;
573
+ min-height: 2rem;
574
+ }
575
+
576
+ .profile-navbar-content-search .content-navbar-search-icon {
577
+ position: absolute;
578
+ top: 50%;
579
+ left: 0.62rem;
580
+ z-index: 1;
581
+ display: inline-flex;
582
+ color: var(--global-text-color);
583
+ pointer-events: none;
584
+ transform: translateY(-50%);
585
+ }
586
+
587
+ .profile-navbar-content-search .content-search-input {
588
+ width: 2.2rem;
589
+ border-color: transparent;
590
+ background: transparent;
591
+ color: transparent;
592
+ caret-color: transparent;
593
+ padding-left: 2rem;
594
+ }
595
+
596
+ .profile-navbar-content-search .content-search-input::placeholder {
597
+ color: transparent;
598
+ }
599
+
600
+ .profile-navbar-content-search .content-search-input:focus {
601
+ position: fixed;
602
+ top: 0.55rem;
603
+ right: 0.75rem;
604
+ z-index: 1090;
605
+ width: calc(100vw - 1.5rem);
606
+ border-color: var(--global-divider-color);
607
+ background: var(--global-card-bg-color);
608
+ color: var(--global-text-color);
609
+ caret-color: var(--global-text-color);
610
+ }
611
+
612
+ .profile-navbar-content-search .content-search-input:focus::placeholder {
613
+ color: var(--global-text-color-light);
614
+ }
615
+
616
+ .profile-navbar-content-search .content-search-results {
617
+ position: fixed;
618
+ top: 3.35rem;
619
+ right: 0.75rem;
620
+ left: 0.75rem;
621
+ width: auto;
622
+ }
623
+ }
624
+
625
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .container,
626
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .container {
627
+ flex-wrap: nowrap;
628
+ gap: 0.15rem;
629
+ }
630
+
631
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-brand.title,
632
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-brand.title {
633
+ flex: 1 1 auto;
634
+ min-width: 0;
635
+ margin-right: 0.3rem;
636
+ }
637
+
638
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .profile-navbar-utilities,
639
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .profile-navbar-utilities {
640
+ order: 2;
641
+ margin-left: auto;
642
+ }
643
+
644
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-toggler,
645
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-toggler {
646
+ order: 3;
647
+ display: block;
648
+ flex: 0 0 auto;
649
+ margin-left: 0.2rem !important;
650
+ }
651
+
652
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse,
653
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse {
654
+ position: fixed;
655
+ top: 3.45rem;
656
+ right: 0;
657
+ bottom: 0;
658
+ left: auto;
659
+ z-index: 1065;
660
+ display: none !important;
661
+ width: min(86vw, 23rem);
662
+ max-width: calc(100vw - 2.5rem);
663
+ height: auto !important;
664
+ max-height: none;
665
+ overflow: auto;
666
+ border: 1px solid var(--global-divider-color);
667
+ border-right: 0;
668
+ background: color-mix(in srgb, var(--global-bg-color) 97%, transparent);
669
+ box-shadow: -18px 0 52px rgba(0, 0, 0, 0.28);
670
+ padding: 0.85rem 0.9rem 1rem;
671
+ text-align: left !important;
672
+ }
673
+
674
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse.show,
675
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse.show {
676
+ display: block !important;
677
+ }
678
+
679
+ body.profile-navbar-drawer-open.site-profile-unaltreprojecte #navbar::before,
680
+ body.profile-navbar-drawer-open.site-profile-unaltreselfie #navbar::before {
681
+ position: fixed;
682
+ inset: 3.45rem 0 0;
683
+ z-index: 1064;
684
+ background: rgba(0, 0, 0, 0.36);
685
+ content: "";
686
+ }
687
+
688
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .navbar-nav,
689
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .navbar-nav {
690
+ flex-direction: column !important;
691
+ flex-wrap: nowrap !important;
692
+ align-items: stretch;
693
+ margin-left: 0 !important;
694
+ }
695
+
696
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .nav-item,
697
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .nav-item {
698
+ width: 100%;
699
+ }
700
+
701
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .nav-link,
702
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .nav-link {
703
+ display: flex;
704
+ min-height: 2.45rem;
705
+ align-items: center;
706
+ justify-content: space-between;
707
+ border-bottom: 1px solid color-mix(in srgb, var(--global-divider-color) 72%, transparent);
708
+ color: var(--global-text-color);
709
+ padding: 0.55rem 0.25rem;
710
+ }
711
+
712
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .nav-item.active > .nav-link,
713
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .nav-item.active > .nav-link {
714
+ background: color-mix(in srgb, var(--global-theme-color) 12%, transparent);
715
+ color: var(--global-theme-color);
716
+ font-weight: 700;
717
+ }
718
+
719
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .dropdown-menu,
720
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .dropdown-menu {
721
+ position: static !important;
722
+ top: auto !important;
723
+ right: auto !important;
724
+ bottom: auto !important;
725
+ left: auto !important;
726
+ transform: none !important;
727
+ float: none;
728
+ width: auto;
729
+ min-width: 0;
730
+ margin: 0 0 0.45rem 0.7rem;
731
+ border: 0;
732
+ background: color-mix(in srgb, var(--global-theme-color) 7%, var(--global-bg-color));
733
+ box-shadow: none;
734
+ padding: 0.25rem 0.35rem;
735
+ text-align: left;
736
+ }
737
+
738
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .dropdown-menu.show,
739
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .dropdown-menu.show {
740
+ display: block;
741
+ }
742
+
743
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item,
744
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item {
745
+ display: block;
746
+ color: var(--global-text-color);
747
+ padding: 0.42rem 0.55rem;
748
+ white-space: normal;
749
+ }
750
+
751
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item.active,
752
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item.active {
753
+ background: color-mix(in srgb, var(--global-theme-color) 82%, var(--global-bg-color)) !important;
754
+ color: var(--global-hover-text-color) !important;
755
+ font-weight: 700;
756
+ }
757
+
758
+ .site-profile-unaltreprojecte .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item:hover,
759
+ .site-profile-unaltreselfie .navbar.profile-navbar-drawer .navbar-collapse .dropdown-item:hover {
760
+ background: color-mix(in srgb, var(--global-theme-color) 18%, var(--global-bg-color)) !important;
761
+ color: var(--global-theme-color) !important;
762
+ }
763
+
764
+ #light-toggle,
765
+ #search-toggle {
766
+ padding: 0;
767
+ border: 0;
768
+ background-color: inherit;
769
+ color: var(--global-text-color);
770
+
771
+ &:hover {
772
+ color: var(--global-hover-color);
773
+ }
774
+ }
775
+
776
+ #light-toggle {
777
+ display: inline-flex;
778
+ min-width: 2rem;
779
+ min-height: 2rem;
780
+ align-items: center;
781
+ justify-content: center;
782
+ line-height: 1;
783
+ }
784
+
785
+ #light-toggle-system,
786
+ #light-toggle-dark,
787
+ #light-toggle-light,
788
+ #light-toggle-cafe {
789
+ width: 1rem;
790
+ height: 1rem;
791
+ margin: 0 !important;
792
+ padding: 0 !important;
793
+ line-height: 1 !important;
794
+ }
795
+
796
+ #light-toggle i::before {
797
+ display: block;
798
+ line-height: 1;
799
+ }
800
+
801
+ // Social (bottom)
802
+
803
+ .social {
804
+ text-align: center;
805
+
806
+ .contact-icons {
807
+ font-size: 4rem;
808
+
809
+ a {
810
+ img {
811
+ width: 3.2rem;
812
+ height: 3.2rem;
813
+ margin-bottom: 1rem;
814
+ }
815
+
816
+ svg {
817
+ width: 3.5rem;
818
+ height: 4rem;
819
+ margin-bottom: 0.5rem;
820
+
821
+ image {
822
+ width: 3.5rem;
823
+ height: 3.5rem;
824
+ }
825
+ }
826
+
827
+ i::before {
828
+ color: var(--global-text-color);
829
+ transition-property: all 0.2s ease-in-out;
830
+ }
831
+
832
+ &:hover {
833
+ text-decoration: none;
834
+
835
+ i::before {
836
+ color: var(--global-theme-color);
837
+ }
838
+ }
839
+ }
840
+ }
841
+
842
+ .contact-note {
843
+ font-size: 0.8rem;
844
+ }
845
+ }
846
+
847
+ .wechat-modal {
848
+ display: none;
849
+ position: fixed;
850
+ z-index: 1;
851
+ padding-top: 100px;
852
+ left: 0;
853
+ top: 0;
854
+ width: 100%;
855
+ height: 100%;
856
+ overflow: auto;
857
+ background-color: rgb(0, 0, 0);
858
+ background-color: rgba(0, 0, 0, 0.8);
859
+ }
860
+
861
+ .wechat-modal > img {
862
+ display: block;
863
+ position: relative;
864
+ top: 50%;
865
+ left: 50%;
866
+ width: 33%;
867
+ max-width: 400px;
868
+ transform: translate(-50%, -50%);
869
+ }
870
+
871
+ @media only screen and (max-width: 400px) {
872
+ .wechat-modal > img {
873
+ width: 100%;
874
+ }
875
+ }
876
+
877
+ // Footer
878
+ .footer-content {
879
+ display: flex;
880
+ gap: 0.45rem;
881
+ align-items: center;
882
+ justify-content: center;
883
+ }
884
+
885
+ .footer-product-credit {
886
+ display: inline-flex;
887
+ gap: 0.28rem;
888
+ align-items: center;
889
+ white-space: nowrap;
890
+ }
891
+
892
+ .footer-logo-stack {
893
+ position: relative;
894
+ display: inline-block;
895
+ width: 1.25rem;
896
+ height: 1rem;
897
+ flex: 0 0 1.25rem;
898
+ }
899
+
900
+ .footer-logo {
901
+ position: absolute;
902
+ inset: 0;
903
+ width: 100%;
904
+ height: 100%;
905
+ object-fit: contain;
906
+ }
907
+
908
+ .footer-logo-dark,
909
+ .footer-logo-cafe {
910
+ display: none;
911
+ }
912
+
913
+ html[data-theme="dark"] .footer-logo-light,
914
+ html[data-theme="cafe"] .footer-logo-light {
915
+ display: none;
916
+ }
917
+
918
+ html[data-theme="dark"] .footer-logo-dark,
919
+ html[data-theme="cafe"] .footer-logo-cafe {
920
+ display: block;
921
+ }
922
+
923
+ footer.fixed-bottom {
924
+ background-color: var(--global-footer-bg-color);
925
+ font-size: 0.75rem;
926
+
927
+ .container {
928
+ color: var(--global-footer-text-color);
929
+ padding-top: 9px;
930
+ padding-bottom: 8px;
931
+ text-align: center;
932
+ }
933
+
934
+ .footer-content,
935
+ .footer-content > span {
936
+ color: var(--global-footer-text-color);
937
+ }
938
+
939
+ .footer-content a {
940
+ color: var(--global-footer-link-color);
941
+
942
+ &:hover {
943
+ color: var(--global-theme-color);
944
+ text-decoration: none;
945
+ }
946
+ }
947
+ }
948
+
949
+ footer.sticky-bottom {
950
+ border-top: 1px solid var(--global-divider-color);
951
+ padding-top: 40px;
952
+ padding-bottom: 40px;
953
+ font-size: 0.9rem;
954
+
955
+ .container {
956
+ text-align: center;
957
+ }
958
+ }
959
+
960
+ // CV
961
+
962
+ .cv {
963
+ margin-bottom: 40px;
964
+
965
+ .card {
966
+ background-color: var(--global-card-bg-color);
967
+ border: 1px solid var(--global-divider-color);
968
+
969
+ .list-group-item {
970
+ background-color: inherit;
971
+ border-color: var(--global-divider-color);
972
+
973
+ .badge {
974
+ color: var(--global-card-bg-color) !important;
975
+ background-color: var(--global-theme-color) !important;
976
+ }
977
+ }
978
+ }
979
+ }
980
+
981
+ .table-cv-map {
982
+ background-color: transparent;
983
+ border: none;
984
+ color: var(--global-text-color);
985
+ }
986
+
987
+ .date-column {
988
+ width: 75px;
989
+ transform: translateX(-15px) translateY(-5px);
990
+ }
991
+
992
+ // Repositories
993
+
994
+ @media (min-width: 768px) {
995
+ .repo {
996
+ max-width: 50%;
997
+ }
998
+ }
999
+
1000
+ // Blog
1001
+
1002
+ .header-bar {
1003
+ border-bottom: 1px solid var(--global-divider-color);
1004
+ text-align: center;
1005
+ padding-top: 2rem;
1006
+ padding-bottom: 3rem;
1007
+
1008
+ h1 {
1009
+ color: var(--global-theme-color);
1010
+ font-size: 5rem;
1011
+ }
1012
+ }
1013
+
1014
+ .tag-category-list {
1015
+ border-bottom: 1px solid var(--global-divider-color);
1016
+ text-align: center;
1017
+ padding-top: 1rem;
1018
+
1019
+ ul {
1020
+ justify-content: center;
1021
+ display: flow-root;
1022
+
1023
+ p,
1024
+ li {
1025
+ list-style: none;
1026
+ display: inline-block;
1027
+ padding: 1rem 0.5rem;
1028
+ color: var(--global-text-color-light);
1029
+ }
1030
+ }
1031
+ }
1032
+
1033
+ .post-title {
1034
+ mjx-container[jax="CHTML"][display="true"] {
1035
+ display: unset;
1036
+ }
1037
+ }
1038
+
1039
+ .post-list {
1040
+ margin: 0;
1041
+ margin-bottom: 40px;
1042
+ padding: 0;
1043
+
1044
+ li {
1045
+ border-bottom: 1px solid var(--global-divider-color);
1046
+ list-style: none;
1047
+ padding-top: 2rem;
1048
+ padding-bottom: 2rem;
1049
+
1050
+ .post-meta {
1051
+ color: var(--global-text-color-light);
1052
+ font-size: 0.875rem;
1053
+ margin-bottom: 0;
1054
+ }
1055
+
1056
+ .post-tags {
1057
+ color: var(--global-text-color-light);
1058
+ font-size: 0.875rem;
1059
+ padding-top: 0.25rem;
1060
+ padding-bottom: 0;
1061
+ }
1062
+
1063
+ a {
1064
+ color: var(--global-text-color);
1065
+ text-decoration: none;
1066
+
1067
+ &:hover {
1068
+ color: var(--global-theme-color);
1069
+ }
1070
+ }
1071
+
1072
+ mjx-container[jax="CHTML"][display="true"] {
1073
+ display: unset;
1074
+ }
1075
+ }
1076
+ }
1077
+
1078
+ .pagination {
1079
+ .page-item {
1080
+ .page-link {
1081
+ color: var(--global-text-color);
1082
+ padding: 0.75rem 1.15rem;
1083
+
1084
+ &:hover {
1085
+ color: $black-color;
1086
+ }
1087
+ }
1088
+
1089
+ &.active .page-link {
1090
+ color: $white-color;
1091
+ background-color: var(--global-theme-color);
1092
+
1093
+ &:hover {
1094
+ background-color: var(--global-theme-color);
1095
+ }
1096
+ }
1097
+ }
1098
+ }
1099
+
1100
+ // diff2html - Fix for diff2html line number overflow
1101
+
1102
+ .d2h-diff-table {
1103
+ position: relative;
1104
+ }
1105
+
1106
+ // Distill
1107
+
1108
+ .distill {
1109
+ a:hover {
1110
+ border-bottom-color: var(--global-theme-color);
1111
+ text-decoration: none;
1112
+ }
1113
+ }
1114
+
1115
+ // Projects
1116
+
1117
+ .projects {
1118
+ a {
1119
+ text-decoration: none;
1120
+
1121
+ &:hover {
1122
+ .card-title {
1123
+ color: var(--global-theme-color);
1124
+ }
1125
+ }
1126
+ }
1127
+
1128
+ .card {
1129
+ img {
1130
+ width: 100%;
1131
+ }
1132
+ }
1133
+
1134
+ .col {
1135
+ padding-bottom: 1rem;
1136
+ }
1137
+
1138
+ .grid-sizer,
1139
+ .grid-item {
1140
+ width: 250px;
1141
+ margin-bottom: 10px;
1142
+ }
1143
+
1144
+ h2.category {
1145
+ color: var(--global-divider-color);
1146
+ border-bottom: 1px solid var(--global-divider-color);
1147
+ padding-top: 0.5rem;
1148
+ margin-top: 2rem;
1149
+ margin-bottom: 1rem;
1150
+ text-align: right;
1151
+ }
1152
+ }
1153
+
1154
+ // Publications
1155
+
1156
+ .publications {
1157
+ margin-top: 2rem;
1158
+
1159
+ h1 {
1160
+ color: var(--global-theme-color);
1161
+ font-size: 2rem;
1162
+ text-align: center;
1163
+ margin-top: 1em;
1164
+ margin-bottom: 1em;
1165
+ }
1166
+
1167
+ h2 {
1168
+ margin-bottom: 1rem;
1169
+
1170
+ span {
1171
+ font-size: 1.5rem;
1172
+ }
1173
+ }
1174
+
1175
+ h2.bibliography {
1176
+ color: var(--global-divider-color);
1177
+ border-top: 1px solid var(--global-divider-color);
1178
+ padding-top: 1rem;
1179
+ margin-top: 2rem;
1180
+ text-align: right;
1181
+ }
1182
+
1183
+ ol.bibliography {
1184
+ list-style: none;
1185
+ padding: 0;
1186
+ margin-top: 0;
1187
+
1188
+ li {
1189
+ margin-bottom: 1rem;
1190
+
1191
+ .preview {
1192
+ }
1193
+
1194
+ .abbr {
1195
+ margin-bottom: 0.5rem;
1196
+
1197
+ abbr {
1198
+ display: inline-block;
1199
+ background-color: var(--global-theme-color);
1200
+ margin-bottom: 0.5rem;
1201
+ color: var(--global-card-bg-color) !important;
1202
+
1203
+ a {
1204
+ color: white;
1205
+
1206
+ &:hover {
1207
+ text-decoration: none;
1208
+ }
1209
+ }
1210
+ }
1211
+
1212
+ .award {
1213
+ color: var(--global-theme-color) !important;
1214
+ border: 1px solid var(--global-theme-color);
1215
+ }
1216
+ }
1217
+
1218
+ .title {
1219
+ font-weight: bolder;
1220
+ }
1221
+
1222
+ .author {
1223
+ a {
1224
+ border-bottom: 1px dashed var(--global-theme-color);
1225
+
1226
+ &:hover {
1227
+ border-bottom-style: solid;
1228
+ text-decoration: none;
1229
+ }
1230
+ }
1231
+
1232
+ > em {
1233
+ border-bottom: 1px solid;
1234
+ font-style: normal;
1235
+ }
1236
+
1237
+ > span.more-authors {
1238
+ color: var(--global-text-color-light);
1239
+ border-bottom: 1px dashed var(--global-text-color-light);
1240
+ cursor: pointer;
1241
+
1242
+ &:hover {
1243
+ color: var(--global-text-color);
1244
+ border-bottom: 1px dashed var(--global-text-color);
1245
+ }
1246
+ }
1247
+ }
1248
+
1249
+ .links {
1250
+ a.btn {
1251
+ color: var(--global-text-color);
1252
+ border: 1px solid var(--global-text-color);
1253
+ padding-left: 1rem;
1254
+ padding-right: 1rem;
1255
+ padding-top: 0.25rem;
1256
+ padding-bottom: 0.25rem;
1257
+ margin-left: 0;
1258
+
1259
+ &:hover {
1260
+ color: var(--global-theme-color);
1261
+ border-color: var(--global-theme-color);
1262
+ }
1263
+
1264
+ &.biblio-active {
1265
+ color: var(--global-hover-text-color);
1266
+ border-color: var(--global-theme-color);
1267
+ background: var(--global-theme-color);
1268
+ }
1269
+ }
1270
+ a.award.btn {
1271
+ border-color: var(--global-highlight-color);
1272
+ }
1273
+ }
1274
+
1275
+ .badges {
1276
+ padding-bottom: 0.5rem;
1277
+ span {
1278
+ display: inline-block;
1279
+ color: $black-color;
1280
+ height: 100%;
1281
+ padding-right: 0.5rem;
1282
+ vertical-align: middle;
1283
+
1284
+ &:hover {
1285
+ text-decoration: underline;
1286
+ }
1287
+ }
1288
+ }
1289
+
1290
+ .hidden {
1291
+ font-size: 0.875rem;
1292
+ max-height: 0px;
1293
+ overflow: hidden;
1294
+ text-align: justify;
1295
+ transition-property: 0.15s ease;
1296
+ -moz-transition: 0.15s ease;
1297
+ -ms-transition: 0.15s ease;
1298
+ -o-transition: 0.15s ease;
1299
+ transition: all 0.15s ease;
1300
+
1301
+ p {
1302
+ line-height: 1.4em;
1303
+ margin: 10px;
1304
+ }
1305
+
1306
+ pre {
1307
+ font-size: 1em;
1308
+ line-height: 1.4em;
1309
+ padding: 10px;
1310
+ }
1311
+ }
1312
+
1313
+ .hidden.open {
1314
+ max-height: 100em;
1315
+ transition-property: 0.15s ease;
1316
+ -moz-transition: 0.15s ease;
1317
+ -ms-transition: 0.15s ease;
1318
+ -o-transition: 0.15s ease;
1319
+ transition: all 0.15s ease;
1320
+ }
1321
+
1322
+ div.abstract.hidden,
1323
+ div.cite.hidden {
1324
+ border: dashed 1px var(--global-bg-color);
1325
+ }
1326
+
1327
+ div.abstract.hidden.open,
1328
+ div.cite.hidden.open {
1329
+ border-color: var(--global-text-color);
1330
+ }
1331
+ }
1332
+ div.award.hidden {
1333
+ border: dashed 1px var(--global-bg-color);
1334
+ }
1335
+ div.award.hidden.open {
1336
+ border-color: var(--global-highlight-color);
1337
+ }
1338
+ }
1339
+ }
1340
+
1341
+ @media (max-width: 575px) {
1342
+ .publications ol.bibliography li > .row {
1343
+ display: grid;
1344
+ grid-template-columns: minmax(0, 1fr);
1345
+ gap: 0.65rem;
1346
+ margin-right: 0;
1347
+ margin-left: 0;
1348
+ }
1349
+
1350
+ .publications ol.bibliography li > .row > .abbr {
1351
+ width: min(50vw, 11rem);
1352
+ max-width: 50%;
1353
+ margin-bottom: 0;
1354
+ justify-self: center;
1355
+ padding-right: 0;
1356
+ padding-left: 0;
1357
+ }
1358
+
1359
+ .publications ol.bibliography li > .row > .abbr figure {
1360
+ margin: 0 0 0.35rem;
1361
+ }
1362
+
1363
+ .publications ol.bibliography li > .row > .abbr picture,
1364
+ .publications ol.bibliography li > .row > .abbr .preview {
1365
+ display: block;
1366
+ width: 100%;
1367
+ max-width: 100%;
1368
+ height: auto;
1369
+ }
1370
+
1371
+ .publications ol.bibliography li > .row > [id] {
1372
+ width: 100%;
1373
+ max-width: 100%;
1374
+ padding-right: 0;
1375
+ padding-left: 0;
1376
+ }
1377
+ }
1378
+
1379
+ // Rouge Color Customization
1380
+ figure.highlight {
1381
+ margin: 0 0 1rem;
1382
+
1383
+ // Responsive code block container
1384
+ overflow-x: auto;
1385
+ -webkit-overflow-scrolling: touch;
1386
+
1387
+ pre {
1388
+ // Ensure code blocks can scroll horizontally
1389
+ white-space: pre;
1390
+ word-wrap: normal;
1391
+ overflow-x: auto;
1392
+ -webkit-overflow-scrolling: touch;
1393
+ }
1394
+ }
1395
+
1396
+ pre {
1397
+ color: var(--global-code-text-color);
1398
+ background-color: var(--global-code-bg-color);
1399
+ border: 1px solid var(--global-code-border-color);
1400
+ border-radius: 6px;
1401
+ padding: 6px 12px;
1402
+
1403
+ // Responsive behavior for code blocks
1404
+ overflow-x: auto;
1405
+ -webkit-overflow-scrolling: touch;
1406
+ white-space: pre;
1407
+ word-wrap: normal;
1408
+
1409
+ pre,
1410
+ code {
1411
+ background-color: transparent;
1412
+ border: 0;
1413
+ border-radius: 0;
1414
+ margin-bottom: 0;
1415
+ padding: 0;
1416
+ white-space: inherit;
1417
+ }
1418
+ }
1419
+
1420
+ code {
1421
+ color: var(--global-code-text-color);
1422
+ background-color: var(--global-code-bg-color);
1423
+ border: 1px solid var(--global-code-border-color);
1424
+ border-radius: 3px;
1425
+ padding: 3px 3px;
1426
+
1427
+ // Inline code should wrap
1428
+ white-space: normal;
1429
+ word-wrap: break-word;
1430
+ }
1431
+
1432
+ .uw-code-block {
1433
+ margin: 1.6rem 0;
1434
+ overflow: hidden;
1435
+ border: 1px solid color-mix(in srgb, var(--global-theme-color) 42%, var(--global-code-border-color));
1436
+ border-radius: 4px;
1437
+ background: var(--global-code-bg-color);
1438
+
1439
+ .uw-code-header {
1440
+ display: flex;
1441
+ min-height: 2.15rem;
1442
+ align-items: center;
1443
+ gap: 0.55rem;
1444
+ border-bottom: 1px solid color-mix(in srgb, var(--global-theme-color) 18%, var(--global-code-border-color));
1445
+ padding: 0.25rem 0.5rem 0.25rem 0.7rem;
1446
+ background: color-mix(in srgb, var(--global-theme-color) 7%, var(--global-code-bg-color));
1447
+
1448
+ .copy {
1449
+ display: inline-grid;
1450
+ width: 1.65rem;
1451
+ height: 1.65rem;
1452
+ margin-left: auto;
1453
+ place-items: center;
1454
+ border: 1px solid color-mix(in srgb, var(--global-theme-color) 24%, var(--global-code-border-color));
1455
+ border-radius: 5px;
1456
+ background: transparent;
1457
+ color: var(--global-theme-color);
1458
+ cursor: pointer;
1459
+
1460
+ &:focus-visible,
1461
+ &:hover {
1462
+ border-color: var(--global-theme-color);
1463
+ background: color-mix(in srgb, var(--global-theme-color) 12%, transparent);
1464
+ outline: none;
1465
+ }
1466
+ }
1467
+ }
1468
+
1469
+ .uw-code-language {
1470
+ color: color-mix(in srgb, var(--global-theme-color) 72%, var(--global-text-color));
1471
+ font-family: inherit;
1472
+ font-size: 0.72rem;
1473
+ font-weight: 750;
1474
+ letter-spacing: 0.065em;
1475
+ line-height: 1;
1476
+ text-transform: uppercase;
1477
+ }
1478
+
1479
+ .highlight {
1480
+ margin: 0;
1481
+ overflow-x: auto;
1482
+ background: transparent;
1483
+ }
1484
+
1485
+ table.rouge-table {
1486
+ display: table;
1487
+ width: max-content;
1488
+ min-width: 100%;
1489
+ margin: 0;
1490
+ overflow: visible;
1491
+ border: 0;
1492
+ border-collapse: collapse;
1493
+ background: transparent;
1494
+ }
1495
+
1496
+ .rouge-table td {
1497
+ padding: 0;
1498
+ border: 0;
1499
+ vertical-align: top;
1500
+ }
1501
+
1502
+ .rouge-gutter {
1503
+ position: sticky;
1504
+ left: 0;
1505
+ z-index: 1;
1506
+ border-right: 1px solid color-mix(in srgb, var(--global-theme-color) 18%, var(--global-code-border-color)) !important;
1507
+ background: color-mix(in srgb, var(--global-theme-color) 7%, var(--global-code-bg-color));
1508
+ user-select: none;
1509
+ }
1510
+
1511
+ pre,
1512
+ code {
1513
+ margin: 0;
1514
+ border: 0;
1515
+ border-radius: 0;
1516
+ background: transparent;
1517
+ white-space: pre;
1518
+ }
1519
+
1520
+ pre {
1521
+ min-height: 100%;
1522
+ padding: 0.8rem;
1523
+ background-image: repeating-linear-gradient(
1524
+ to bottom,
1525
+ transparent 0,
1526
+ transparent 1.55em,
1527
+ var(--global-code-row-alt-color) 1.55em,
1528
+ var(--global-code-row-alt-color) 3.1em
1529
+ );
1530
+ background-origin: content-box;
1531
+ line-height: 1.55;
1532
+ tab-size: 4;
1533
+ }
1534
+
1535
+ pre.lineno {
1536
+ padding-right: 0.65rem;
1537
+ padding-left: 0.65rem;
1538
+ color: var(--global-text-color-light);
1539
+ text-align: right;
1540
+ }
1541
+
1542
+ .rouge-code pre {
1543
+ min-width: 100%;
1544
+ }
1545
+
1546
+ .highlight .c,
1547
+ .highlight .c1,
1548
+ .highlight .cm,
1549
+ .highlight .cp,
1550
+ .highlight .cs {
1551
+ color: var(--global-code-comment-color);
1552
+ }
1553
+
1554
+ &.uw-code-verbatim code {
1555
+ color: var(--global-text-color);
1556
+ }
1557
+
1558
+ &.uw-code-verbatim {
1559
+ .highlight {
1560
+ overflow-x: visible;
1561
+ }
1562
+
1563
+ pre,
1564
+ code {
1565
+ overflow-wrap: anywhere;
1566
+ white-space: pre-wrap;
1567
+ }
1568
+ }
1569
+ }
1570
+
1571
+ // Transitioning Themes
1572
+ html.transition,
1573
+ html.transition *,
1574
+ html.transition *:before,
1575
+ html.transition *:after {
1576
+ transition: all 750ms !important;
1577
+ transition-delay: 0 !important;
1578
+ }
1579
+
1580
+ // Extra Markdown style (post Customization)
1581
+ .post {
1582
+ .post-meta {
1583
+ color: var(--global-text-color-light);
1584
+ font-size: 0.875rem;
1585
+ margin-bottom: 0;
1586
+ }
1587
+
1588
+ .post-reading-time {
1589
+ display: inline-flex;
1590
+ align-items: baseline;
1591
+ gap: 0.25rem;
1592
+ white-space: nowrap;
1593
+ }
1594
+
1595
+ .post-tags {
1596
+ color: var(--global-text-color-light);
1597
+ font-size: 0.875rem;
1598
+ padding-top: 0.25rem;
1599
+ padding-bottom: 1rem;
1600
+
1601
+ a {
1602
+ color: var(--global-text-color-light);
1603
+ text-decoration: none;
1604
+
1605
+ &:hover {
1606
+ color: var(--global-theme-color);
1607
+ }
1608
+ }
1609
+ }
1610
+ }
1611
+
1612
+ progress {
1613
+ /* Positioning */
1614
+ position: fixed;
1615
+ left: 0;
1616
+ top: 56px;
1617
+ z-index: 10;
1618
+
1619
+ /* Dimensions */
1620
+ width: 100%;
1621
+ height: 1px;
1622
+
1623
+ /* Reset the appearance */
1624
+ -webkit-appearance: none;
1625
+ -moz-appearance: none;
1626
+ appearance: none;
1627
+
1628
+ /* Get rid of the default border in Firefox/Opera. */
1629
+ border: none;
1630
+
1631
+ /* Progress bar container for Firefox/IE10 */
1632
+ background-color: transparent;
1633
+
1634
+ /* Progress bar value for IE10 */
1635
+ color: var(--global-theme-color);
1636
+ }
1637
+
1638
+ progress::-webkit-progress-bar {
1639
+ background-color: transparent;
1640
+ }
1641
+
1642
+ progress::-webkit-progress-value {
1643
+ background-color: var(--global-theme-color);
1644
+ }
1645
+
1646
+ progress::-moz-progress-bar {
1647
+ background-color: var(--global-theme-color);
1648
+ }
1649
+
1650
+ .progress-container {
1651
+ width: 100%;
1652
+ background-color: transparent;
1653
+ position: fixed;
1654
+ top: 56px;
1655
+ left: 0;
1656
+ height: 5px;
1657
+ display: block;
1658
+ }
1659
+
1660
+ .progress-bar {
1661
+ background-color: var(--global-theme-color);
1662
+ width: 0%;
1663
+ display: block;
1664
+ height: inherit;
1665
+ }
1666
+
1667
+ /* Copy button */
1668
+ .code-display-wrapper {
1669
+ position: relative;
1670
+
1671
+ .copy {
1672
+ background: var(--global-card-bg-color);
1673
+ border-color: var(--global-bg-color);
1674
+ border-radius: 0.3rem;
1675
+ border-style: none;
1676
+ color: var(--global-text-color);
1677
+ font-size: medium;
1678
+ opacity: 0;
1679
+ position: absolute;
1680
+ right: 0.2rem;
1681
+ top: 0.2rem;
1682
+ }
1683
+
1684
+ &:active .copy,
1685
+ &:focus .copy,
1686
+ &:hover .copy {
1687
+ color: var(--global-hover-color);
1688
+ opacity: 1;
1689
+ }
1690
+ }
1691
+
1692
+ .btn-group.dropdown {
1693
+ .btn {
1694
+ box-shadow: none;
1695
+ -webkit-box-shadow: none;
1696
+ }
1697
+
1698
+ .btn-secondary.dropdown-toggle {
1699
+ border: 1px solid var(--global-divider-color);
1700
+
1701
+ .page-size {
1702
+ color: inherit;
1703
+ }
1704
+
1705
+ &:not(.active) {
1706
+ background-color: var(--global-bg-color) !important;
1707
+ color: var(--global-text-color);
1708
+ }
1709
+
1710
+ &:hover {
1711
+ background-color: var(--global-hover-color) !important;
1712
+ color: var(--global-hover-text-color) !important;
1713
+ }
1714
+ }
1715
+ }
1716
+
1717
+ /* Table of Contents */
1718
+ nav[data-toggle="toc"] {
1719
+ top: 5rem;
1720
+
1721
+ .nav .nav > li > a {
1722
+ font-size: 0.75rem;
1723
+ }
1724
+
1725
+ .nav > li > a {
1726
+ color: var(--global-text-color);
1727
+ font-size: 0.75rem;
1728
+
1729
+ &:hover {
1730
+ color: var(--global-hover-color);
1731
+ border-left-color: var(--global-hover-color);
1732
+ }
1733
+ }
1734
+
1735
+ .nav-link.active {
1736
+ color: var(--global-theme-color);
1737
+ border-left-color: var(--global-theme-color);
1738
+ font-size: 0.75rem;
1739
+
1740
+ &:hover {
1741
+ color: var(--global-hover-color);
1742
+ border-left-color: var(--global-hover-color);
1743
+ }
1744
+ }
1745
+ }
1746
+
1747
+ /* small screens */
1748
+ @media (max-width: 576px) {
1749
+ /* override stickyness so that the navigation does not follow scrolling */
1750
+ nav[data-toggle="toc"] {
1751
+ visibility: hidden;
1752
+ height: 0;
1753
+ top: 0;
1754
+ }
1755
+
1756
+ /* Responsive code blocks for mobile */
1757
+ pre {
1758
+ font-size: 0.875rem;
1759
+ padding: 8px 10px;
1760
+ margin: 0.5rem 0;
1761
+ }
1762
+
1763
+ figure.highlight {
1764
+ margin: 0.5rem 0;
1765
+
1766
+ pre {
1767
+ font-size: 0.875rem;
1768
+ padding: 8px 10px;
1769
+ }
1770
+ }
1771
+
1772
+ code {
1773
+ font-size: 0.875rem;
1774
+ padding: 2px 4px;
1775
+ }
1776
+ }
1777
+
1778
+ /* Extra small screens */
1779
+ @media (max-width: 400px) {
1780
+ pre {
1781
+ font-size: 0.8rem;
1782
+ padding: 6px 8px;
1783
+ }
1784
+
1785
+ figure.highlight {
1786
+ pre {
1787
+ font-size: 0.8rem;
1788
+ padding: 6px 8px;
1789
+ }
1790
+ }
1791
+
1792
+ code {
1793
+ font-size: 0.8rem;
1794
+ padding: 1px 3px;
1795
+ }
1796
+ }
1797
+
1798
+ /* Medium screens - optimize for tablets */
1799
+ @media (min-width: 577px) and (max-width: 768px) {
1800
+ pre {
1801
+ font-size: 0.9rem;
1802
+ padding: 8px 12px;
1803
+ }
1804
+
1805
+ figure.highlight {
1806
+ pre {
1807
+ font-size: 0.9rem;
1808
+ padding: 8px 12px;
1809
+ }
1810
+ }
1811
+ }
1812
+
1813
+ .featured-posts {
1814
+ a {
1815
+ color: var(--global-text-color-light);
1816
+ text-decoration: none;
1817
+
1818
+ .card-text {
1819
+ overflow: hidden;
1820
+ text-overflow: ellipsis;
1821
+ white-space: nowrap;
1822
+ }
1823
+
1824
+ &:hover {
1825
+ color: var(--global-theme-color);
1826
+
1827
+ .card-title {
1828
+ color: var(--global-theme-color);
1829
+ }
1830
+ }
1831
+ }
1832
+
1833
+ .post-meta {
1834
+ color: var(--global-text-color-light);
1835
+ font-size: 0.875rem;
1836
+ margin-bottom: 0;
1837
+ padding-top: 0.5rem;
1838
+ }
1839
+ }
1840
+
1841
+ .unloaded {
1842
+ display: none !important;
1843
+ }
1844
+
1845
+ .medium-zoom-overlay,
1846
+ .medium-zoom-image--opened {
1847
+ z-index: 2000;
1848
+ }
1849
+
1850
+ #toc-sidebar {
1851
+ z-index: 1;
1852
+ }
1853
+
1854
+ .echarts {
1855
+ height: 400px;
1856
+ width: 100%;
1857
+ }
1858
+
1859
+ .map {
1860
+ height: 400px;
1861
+ width: 100%;
1862
+ }
1863
+
1864
+ swiper-container {
1865
+ --swiper-navigation-color: var(--global-theme-color);
1866
+ --swiper-pagination-color: var(--global-theme-color);
1867
+ --swiper-pagination-bullet-inactive-color: var(--global-text-color);
1868
+ }
1869
+
1870
+ .ps-root {
1871
+ .ps-algorithm {
1872
+ margin: 0.8em 0;
1873
+ border-top: 3px solid var(--global-text-color);
1874
+ border-bottom: 2px solid var(--global-text-color);
1875
+ }
1876
+
1877
+ .ps-algorithm.with-caption > .ps-line:first-child {
1878
+ border-bottom: 2px solid var(--global-text-color);
1879
+ }
1880
+ }
1881
+
1882
+ // Ninja Keys
1883
+ // for more options, check https://github.com/ssleptsov/ninja-keys?tab=readme-ov-file#css-variables
1884
+ ninja-keys {
1885
+ --ninja-accent-color: var(--global-theme-color);
1886
+ --ninja-icon-size: 0px;
1887
+ --ninja-modal-background: var(--global-bg-color);
1888
+ --ninja-z-index: 1031;
1889
+ }
1890
+
1891
+ ninja-keys::part(ninja-input) {
1892
+ color: var(--ninja-selected-text-color);
1893
+ }
1894
+
1895
+ ninja-keys::part(ninja-input-wrapper) {
1896
+ background: var(--global-bg-color);
1897
+ }
1898
+
1899
+ // newsletter
1900
+ .newsletter-form-container {
1901
+ margin-bottom: 20px;
1902
+ }
1903
+
1904
+ .newsletter-form {
1905
+ display: flex;
1906
+ flex-direction: row;
1907
+ align-items: center;
1908
+ width: 100%;
1909
+ }
1910
+
1911
+ .newsletter-form-input,
1912
+ .bibsearch-form-input {
1913
+ color: var(--global-newsletter-text-color);
1914
+ background: var(--global-newsletter-bg-color);
1915
+ border: 1px solid var(--global-newsletter-text-color);
1916
+ outline: none;
1917
+ margin: 0px 10px 0px 0px;
1918
+ width: 100%;
1919
+ max-width: 350px;
1920
+ min-width: 100px;
1921
+ box-sizing: border-box;
1922
+ box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px;
1923
+ border-radius: 6px;
1924
+ padding: 8px 12px;
1925
+ }
1926
+
1927
+ .newsletter-form-input:focus {
1928
+ border-color: var(--global-theme-color) !important;
1929
+ }
1930
+
1931
+ .newsletter-form-button {
1932
+ background: var(--global-theme-color);
1933
+ color: var(--global-bg-color);
1934
+ display: flex;
1935
+ width: min-content;
1936
+ max-width: 200px;
1937
+ white-space: nowrap;
1938
+ height: 38px;
1939
+ align-items: center;
1940
+ flex-direction: row;
1941
+ padding: 9px 17px;
1942
+ box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px;
1943
+ border-radius: 6px;
1944
+ text-align: center;
1945
+ font-style: normal;
1946
+ font-weight: 500;
1947
+ line-height: 20px;
1948
+ border: none;
1949
+ cursor: pointer;
1950
+ }
1951
+
1952
+ .newsletter-loading-button {
1953
+ background: var(--global-theme-color);
1954
+ color: var(--global-bg-color);
1955
+ display: none;
1956
+ width: min-content;
1957
+ max-width: 300px;
1958
+ white-space: nowrap;
1959
+ height: 38px;
1960
+ align-items: center;
1961
+ flex-direction: row;
1962
+ padding: 9px 17px;
1963
+ box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px;
1964
+ border-radius: 6px;
1965
+ text-align: center;
1966
+ font-style: normal;
1967
+ font-weight: 500;
1968
+ line-height: 20px;
1969
+ border: none;
1970
+ cursor: pointer;
1971
+ margin-right: 20px;
1972
+ }
1973
+
1974
+ .newsletter-success {
1975
+ color: var(--global-text-color);
1976
+ display: none;
1977
+ align-items: center;
1978
+ width: 100%;
1979
+ }
1980
+
1981
+ .newsletter-error {
1982
+ color: var(--global-theme-color);
1983
+ display: none;
1984
+ align-items: center;
1985
+ width: 100%;
1986
+ }
1987
+
1988
+ .newsletter-back-button {
1989
+ color: var(--global-theme-color);
1990
+ margin: 10px auto;
1991
+ text-align: center;
1992
+ display: none;
1993
+ background: transparent;
1994
+ border: none;
1995
+ cursor: pointer;
1996
+ }
1997
+
1998
+ @media (max-width: 575px) {
1999
+ .newsletter-form-input,
2000
+ .newsletter-form-button,
2001
+ .newsletter-loading-button,
2002
+ .newsletter-success,
2003
+ .newsletter-error {
2004
+ font-size: 16px !important;
2005
+ }
2006
+ .newsletter-form-container {
2007
+ margin-right: 20px;
2008
+ margin-left: 20px;
2009
+ }
2010
+ }
2011
+
2012
+ // popover is used for annotation in bib.liquid
2013
+ .popover {
2014
+ background-color: var(--global-bg-color);
2015
+ border-color: var(--global-divider-color);
2016
+
2017
+ .popover-header {
2018
+ color: var(--global-text-color); // Header text color
2019
+ border-bottom: 1px solid var(--global-divider-color);
2020
+ }
2021
+
2022
+ .popover-body {
2023
+ color: var(--global-text-color); // Body text color
2024
+ }
2025
+ }
2026
+
2027
+ .bs-popover-top {
2028
+ // arrow fill color
2029
+ .arrow::after {
2030
+ border-top-color: var(--global-bg-color);
2031
+ }
2032
+
2033
+ // arrow border color
2034
+ .arrow:before {
2035
+ border-top-color: var(--global-divider-color);
2036
+ }
2037
+ }
2038
+
2039
+ .bs-popover-bottom {
2040
+ // arrow fill color
2041
+ .arrow::after {
2042
+ border-bottom-color: var(--global-bg-color);
2043
+ }
2044
+
2045
+ // arrow border color
2046
+ .arrow:before {
2047
+ border-bottom-color: var(--global-divider-color);
2048
+ }
2049
+ }
2050
+
2051
+ // highlight-search-term
2052
+ ::highlight(search) {
2053
+ background-color: var(--global-theme-color);
2054
+ color: var(--global-text-color);
2055
+ }
2056
+
2057
+ figure.cover {
2058
+ display: inline-block;
2059
+ text-align: center;
2060
+ margin: 0.5rem; /* adjust as needed */
2061
+
2062
+ img {
2063
+ vertical-align: bottom;
2064
+ }
2065
+
2066
+ figcaption.abandoned {
2067
+ font-family: monospace;
2068
+ color: #23212d;
2069
+ text-transform: uppercase;
2070
+ background-color: #ee5f5b;
2071
+ }
2072
+
2073
+ figcaption.finished,
2074
+ figcaption.watched {
2075
+ font-family: monospace;
2076
+ color: #23212d;
2077
+ text-transform: uppercase;
2078
+ background-color: #62c462;
2079
+ }
2080
+
2081
+ figcaption.interested {
2082
+ font-family: monospace;
2083
+ color: #23212d;
2084
+ text-transform: uppercase;
2085
+ background-color: #7691db;
2086
+ }
2087
+
2088
+ figcaption.paused {
2089
+ font-family: monospace;
2090
+ color: #23212d;
2091
+ text-transform: uppercase;
2092
+ background-color: #bdac7e;
2093
+ }
2094
+
2095
+ figcaption.queued {
2096
+ font-family: monospace;
2097
+ color: #23212d;
2098
+ text-transform: uppercase;
2099
+ background-color: #9e76b5;
2100
+ }
2101
+
2102
+ figcaption.reading,
2103
+ figcaption.watching {
2104
+ font-family: monospace;
2105
+ color: #23212d;
2106
+ text-transform: uppercase;
2107
+ background-color: #f89406;
2108
+ }
2109
+
2110
+ figcaption.reread,
2111
+ figcaption.rewatch {
2112
+ font-family: monospace;
2113
+ color: #23212d;
2114
+ text-transform: uppercase;
2115
+ background-color: #a6517d;
2116
+ }
2117
+
2118
+ figcaption.uncategorized {
2119
+ font-family: monospace;
2120
+ color: #23212d;
2121
+ text-transform: uppercase;
2122
+ background-color: #b0abb3;
2123
+ }
2124
+
2125
+ /* mouse over link */
2126
+ a.cover-link:hover {
2127
+ color: #23212d !important;
2128
+ }
2129
+ }
2130
+
2131
+ mjx-container[jax="CHTML"][display="true"] {
2132
+ overflow-x: auto;
2133
+ }