coursecode 0.1.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 (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/THIRD_PARTY_NOTICES.md +22 -0
  4. package/bin/cli.js +331 -0
  5. package/framework/assets/logo-coursecode-black.svg +14 -0
  6. package/framework/assets/logo-coursecode-white.svg +14 -0
  7. package/framework/assets/logo-coursecode.svg +14 -0
  8. package/framework/css/01-base.css +160 -0
  9. package/framework/css/02-layout.css +499 -0
  10. package/framework/css/accessibility.css +834 -0
  11. package/framework/css/components/accordions.css +710 -0
  12. package/framework/css/components/assessments.css +520 -0
  13. package/framework/css/components/audio-player.css +570 -0
  14. package/framework/css/components/badges.css +80 -0
  15. package/framework/css/components/breadcrumbs.css +87 -0
  16. package/framework/css/components/buttons.css +707 -0
  17. package/framework/css/components/callouts.css +1280 -0
  18. package/framework/css/components/cards.css +475 -0
  19. package/framework/css/components/carousel.css +193 -0
  20. package/framework/css/components/checkbox-group.css +123 -0
  21. package/framework/css/components/checklist.css +203 -0
  22. package/framework/css/components/collapse.css +96 -0
  23. package/framework/css/components/comparison.css +33 -0
  24. package/framework/css/components/content-image.css +36 -0
  25. package/framework/css/components/document-gallery.css +425 -0
  26. package/framework/css/components/dropdown.css +115 -0
  27. package/framework/css/components/embed-frame.css +142 -0
  28. package/framework/css/components/engagement.css +412 -0
  29. package/framework/css/components/features.css +35 -0
  30. package/framework/css/components/flip-cards.css +253 -0
  31. package/framework/css/components/footer.css +353 -0
  32. package/framework/css/components/forms.css +294 -0
  33. package/framework/css/components/hero.css +216 -0
  34. package/framework/css/components/images.css +528 -0
  35. package/framework/css/components/interactive-timeline.css +274 -0
  36. package/framework/css/components/intro-cards.css +30 -0
  37. package/framework/css/components/lightbox.css +666 -0
  38. package/framework/css/components/loading.css +65 -0
  39. package/framework/css/components/modals.css +235 -0
  40. package/framework/css/components/notifications.css +107 -0
  41. package/framework/css/components/quote.css +150 -0
  42. package/framework/css/components/sidebar.css +684 -0
  43. package/framework/css/components/slide-header.css +52 -0
  44. package/framework/css/components/spinner.css +62 -0
  45. package/framework/css/components/stats.css +44 -0
  46. package/framework/css/components/steps.css +232 -0
  47. package/framework/css/components/tables.css +90 -0
  48. package/framework/css/components/tabs.css +347 -0
  49. package/framework/css/components/timeline.css +154 -0
  50. package/framework/css/components/toggle.css +95 -0
  51. package/framework/css/components/tooltip.css +226 -0
  52. package/framework/css/components/video-player.css +438 -0
  53. package/framework/css/design-tokens.css +707 -0
  54. package/framework/css/framework.css +86 -0
  55. package/framework/css/interactions/accessibility.css +75 -0
  56. package/framework/css/interactions/base.css +92 -0
  57. package/framework/css/interactions/drag-drop.css +295 -0
  58. package/framework/css/interactions/fill-in-the-blank.css +236 -0
  59. package/framework/css/interactions/hotspots.css +69 -0
  60. package/framework/css/interactions/index.css +45 -0
  61. package/framework/css/interactions/interactive-image.css +359 -0
  62. package/framework/css/interactions/likert.css +126 -0
  63. package/framework/css/interactions/matching.css +354 -0
  64. package/framework/css/interactions/numeric-input.css +78 -0
  65. package/framework/css/interactions/sequencing.css +378 -0
  66. package/framework/css/interactions/true-false.css +177 -0
  67. package/framework/css/layouts/article.css +258 -0
  68. package/framework/css/layouts/base.css +30 -0
  69. package/framework/css/layouts/canvas.css +38 -0
  70. package/framework/css/layouts/focused.css +236 -0
  71. package/framework/css/layouts/index.css +29 -0
  72. package/framework/css/layouts/presentation.css +191 -0
  73. package/framework/css/layouts/traditional.css +52 -0
  74. package/framework/css/responsive.css +439 -0
  75. package/framework/css/utilities/accessibility-utils.css +59 -0
  76. package/framework/css/utilities/animations.css +419 -0
  77. package/framework/css/utilities/borders.css +72 -0
  78. package/framework/css/utilities/colors.css +76 -0
  79. package/framework/css/utilities/container.css +46 -0
  80. package/framework/css/utilities/decorative.css +442 -0
  81. package/framework/css/utilities/display.css +257 -0
  82. package/framework/css/utilities/flexbox.css +80 -0
  83. package/framework/css/utilities/grid.css +69 -0
  84. package/framework/css/utilities/icons.css +534 -0
  85. package/framework/css/utilities/lists.css +190 -0
  86. package/framework/css/utilities/spacing.css +167 -0
  87. package/framework/css/utilities/tables.css +81 -0
  88. package/framework/css/utilities/typography.css +159 -0
  89. package/framework/css/utilities/visibility.css +117 -0
  90. package/framework/docs/COURSE_AUTHORING_GUIDE.md +1773 -0
  91. package/framework/docs/COURSE_OUTLINE_GUIDE.md +725 -0
  92. package/framework/docs/COURSE_OUTLINE_TEMPLATE.md +161 -0
  93. package/framework/docs/DATA_MODEL.md +409 -0
  94. package/framework/docs/FRAMEWORK_GUIDE.md +1088 -0
  95. package/framework/docs/USER_GUIDE.md +583 -0
  96. package/framework/docs/examples/cloudflare-channel-relay.js +169 -0
  97. package/framework/docs/examples/cloudflare-data-worker.js +102 -0
  98. package/framework/docs/examples/cloudflare-error-worker.js +228 -0
  99. package/framework/index.html +175 -0
  100. package/framework/js/app/AppActions.js +410 -0
  101. package/framework/js/app/AppState.js +225 -0
  102. package/framework/js/app/AppUI.js +616 -0
  103. package/framework/js/assessment/AssessmentActions.js +615 -0
  104. package/framework/js/assessment/AssessmentFactory.js +471 -0
  105. package/framework/js/assessment/AssessmentState.js +322 -0
  106. package/framework/js/assessment/AssessmentUI.js +451 -0
  107. package/framework/js/automation/api-engagement.js +196 -0
  108. package/framework/js/automation/api-interactions.js +167 -0
  109. package/framework/js/automation/api.js +242 -0
  110. package/framework/js/automation/index.js +41 -0
  111. package/framework/js/components/interactions/drag-drop.js +884 -0
  112. package/framework/js/components/interactions/fill-in.js +535 -0
  113. package/framework/js/components/interactions/hotspot.js +702 -0
  114. package/framework/js/components/interactions/interaction-base.js +511 -0
  115. package/framework/js/components/interactions/likert.js +301 -0
  116. package/framework/js/components/interactions/matching.js +699 -0
  117. package/framework/js/components/interactions/multiple-choice.js +377 -0
  118. package/framework/js/components/interactions/numeric.js +271 -0
  119. package/framework/js/components/interactions/sequencing.js +423 -0
  120. package/framework/js/components/interactions/true-false.js +241 -0
  121. package/framework/js/components/ui-components/accordion.js +442 -0
  122. package/framework/js/components/ui-components/alert.js +88 -0
  123. package/framework/js/components/ui-components/audio-player.js +1193 -0
  124. package/framework/js/components/ui-components/callout.js +121 -0
  125. package/framework/js/components/ui-components/carousel.js +145 -0
  126. package/framework/js/components/ui-components/checkbox-group.js +87 -0
  127. package/framework/js/components/ui-components/checklist.js +40 -0
  128. package/framework/js/components/ui-components/collapse.js +114 -0
  129. package/framework/js/components/ui-components/comparison.js +30 -0
  130. package/framework/js/components/ui-components/conditional-display.js +150 -0
  131. package/framework/js/components/ui-components/content-image.js +41 -0
  132. package/framework/js/components/ui-components/dropdown.js +262 -0
  133. package/framework/js/components/ui-components/embed-frame.js +274 -0
  134. package/framework/js/components/ui-components/features.js +33 -0
  135. package/framework/js/components/ui-components/flip-card.js +230 -0
  136. package/framework/js/components/ui-components/form-validator.js +76 -0
  137. package/framework/js/components/ui-components/hero.js +49 -0
  138. package/framework/js/components/ui-components/index.js +12 -0
  139. package/framework/js/components/ui-components/interactive-image.js +235 -0
  140. package/framework/js/components/ui-components/interactive-timeline.js +285 -0
  141. package/framework/js/components/ui-components/intro-cards.js +35 -0
  142. package/framework/js/components/ui-components/lightbox.js +652 -0
  143. package/framework/js/components/ui-components/modal.js +386 -0
  144. package/framework/js/components/ui-components/notifications.js +145 -0
  145. package/framework/js/components/ui-components/progress.js +88 -0
  146. package/framework/js/components/ui-components/quote.js +41 -0
  147. package/framework/js/components/ui-components/stats.js +33 -0
  148. package/framework/js/components/ui-components/steps.js +41 -0
  149. package/framework/js/components/ui-components/tabs.js +255 -0
  150. package/framework/js/components/ui-components/timeline.js +42 -0
  151. package/framework/js/components/ui-components/toggle-group.js +73 -0
  152. package/framework/js/components/ui-components/tooltip.js +458 -0
  153. package/framework/js/components/ui-components/value-display.js +133 -0
  154. package/framework/js/components/ui-components/video-player.js +686 -0
  155. package/framework/js/core/component-catalog.js +121 -0
  156. package/framework/js/core/event-bus.js +178 -0
  157. package/framework/js/core/interaction-catalog.js +149 -0
  158. package/framework/js/dev/runtime-linter.js +1725 -0
  159. package/framework/js/drivers/cmi5-driver.js +768 -0
  160. package/framework/js/drivers/driver-factory.js +77 -0
  161. package/framework/js/drivers/driver-interface.js +110 -0
  162. package/framework/js/drivers/http-driver-base.js +241 -0
  163. package/framework/js/drivers/lti-driver.js +508 -0
  164. package/framework/js/drivers/proxy-driver.js +444 -0
  165. package/framework/js/drivers/scorm-12-driver.js +560 -0
  166. package/framework/js/drivers/scorm-2004-driver.js +775 -0
  167. package/framework/js/drivers/scorm-driver-base.js +112 -0
  168. package/framework/js/engagement/engagement-manager.js +404 -0
  169. package/framework/js/engagement/engagement-progress.js +191 -0
  170. package/framework/js/engagement/engagement-trackers.js +215 -0
  171. package/framework/js/engagement/requirement-strategies.js +268 -0
  172. package/framework/js/main.js +727 -0
  173. package/framework/js/managers/accessibility-manager.js +499 -0
  174. package/framework/js/managers/assessment-manager.js +230 -0
  175. package/framework/js/managers/audio-manager.js +944 -0
  176. package/framework/js/managers/comment-manager.js +88 -0
  177. package/framework/js/managers/flag-manager.js +86 -0
  178. package/framework/js/managers/interaction-manager.js +254 -0
  179. package/framework/js/managers/interaction-registry.js +96 -0
  180. package/framework/js/managers/objective-manager.js +423 -0
  181. package/framework/js/managers/score-manager.js +441 -0
  182. package/framework/js/managers/video-manager.js +536 -0
  183. package/framework/js/navigation/Breadcrumbs.js +234 -0
  184. package/framework/js/navigation/NavigationActions.js +1132 -0
  185. package/framework/js/navigation/NavigationState.js +276 -0
  186. package/framework/js/navigation/NavigationUI.js +574 -0
  187. package/framework/js/navigation/document-gallery.js +357 -0
  188. package/framework/js/navigation/navigation-helpers.js +175 -0
  189. package/framework/js/navigation/navigation-validators.js +174 -0
  190. package/framework/js/state/index.js +8 -0
  191. package/framework/js/state/lms-connection.js +482 -0
  192. package/framework/js/state/lms-error-utils.js +58 -0
  193. package/framework/js/state/state-commits.js +200 -0
  194. package/framework/js/state/state-domains.js +86 -0
  195. package/framework/js/state/state-manager.js +502 -0
  196. package/framework/js/state/state-validation.js +311 -0
  197. package/framework/js/state/transaction-log.js +41 -0
  198. package/framework/js/state/xapi-statement-service.js +325 -0
  199. package/framework/js/utilities/access-control.js +99 -0
  200. package/framework/js/utilities/breakpoint-manager.js +315 -0
  201. package/framework/js/utilities/canvas-slide.js +35 -0
  202. package/framework/js/utilities/conditional-display.js +388 -0
  203. package/framework/js/utilities/course-channel.js +214 -0
  204. package/framework/js/utilities/course-helpers.js +420 -0
  205. package/framework/js/utilities/data-reporter.js +273 -0
  206. package/framework/js/utilities/error-reporter.js +313 -0
  207. package/framework/js/utilities/hotspot-helper.js +341 -0
  208. package/framework/js/utilities/icons.js +348 -0
  209. package/framework/js/utilities/logger.js +92 -0
  210. package/framework/js/utilities/markdown-renderer.js +45 -0
  211. package/framework/js/utilities/scroll-tracker.js +68 -0
  212. package/framework/js/utilities/ui-initializer.js +146 -0
  213. package/framework/js/utilities/utilities.js +293 -0
  214. package/framework/js/utilities/view-manager.js +227 -0
  215. package/framework/js/validation/html-validators.js +422 -0
  216. package/framework/js/validation/scorm-validators.js +438 -0
  217. package/framework/js/vendor/pipwerks.js +931 -0
  218. package/framework/scripts/generate-narration.js +629 -0
  219. package/framework/scripts/tts-providers/azure-provider.js +178 -0
  220. package/framework/scripts/tts-providers/base-provider.js +81 -0
  221. package/framework/scripts/tts-providers/deepgram-provider.js +135 -0
  222. package/framework/scripts/tts-providers/elevenlabs-provider.js +148 -0
  223. package/framework/scripts/tts-providers/google-provider.js +272 -0
  224. package/framework/scripts/tts-providers/index.js +158 -0
  225. package/framework/scripts/tts-providers/openai-provider.js +143 -0
  226. package/framework/version.json +63 -0
  227. package/lib/authoring-api.js +919 -0
  228. package/lib/build-linter.js +450 -0
  229. package/lib/build-packaging.js +186 -0
  230. package/lib/build.js +88 -0
  231. package/lib/cloud.js +691 -0
  232. package/lib/convert.js +341 -0
  233. package/lib/course-parser.js +936 -0
  234. package/lib/course-writer.js +258 -0
  235. package/lib/create.js +248 -0
  236. package/lib/css-index.js +237 -0
  237. package/lib/dev.js +51 -0
  238. package/lib/export-content.js +1246 -0
  239. package/lib/headless-browser.js +413 -0
  240. package/lib/import.js +377 -0
  241. package/lib/index.js +80 -0
  242. package/lib/info.js +79 -0
  243. package/lib/interaction-formatters.js +568 -0
  244. package/lib/manifest/cmi5-manifest.js +63 -0
  245. package/lib/manifest/lti-tool-config.js +53 -0
  246. package/lib/manifest/manifest-factory.js +99 -0
  247. package/lib/manifest/scorm-12-manifest.js +61 -0
  248. package/lib/manifest/scorm-2004-manifest.js +94 -0
  249. package/lib/manifest/scorm-proxy-manifest.js +104 -0
  250. package/lib/manifest-parser.js +96 -0
  251. package/lib/mcp-prompts.js +753 -0
  252. package/lib/mcp-server.js +316 -0
  253. package/lib/narration.js +53 -0
  254. package/lib/pdf-structure.js +142 -0
  255. package/lib/preview-export.js +231 -0
  256. package/lib/preview-routes-api.js +662 -0
  257. package/lib/preview-routes-editing.js +159 -0
  258. package/lib/preview-routes-lms.js +230 -0
  259. package/lib/preview-server.js +564 -0
  260. package/lib/project-utils.js +269 -0
  261. package/lib/proxy-templates/proxy.html +68 -0
  262. package/lib/proxy-templates/scorm-bridge.js +112 -0
  263. package/lib/scaffold.js +193 -0
  264. package/lib/schema-extractor.js +361 -0
  265. package/lib/slide-source-editor.js +586 -0
  266. package/lib/stub-player/app-viewer.js +195 -0
  267. package/lib/stub-player/app.js +370 -0
  268. package/lib/stub-player/catalog-panel.js +312 -0
  269. package/lib/stub-player/config-panel.js +1303 -0
  270. package/lib/stub-player/content-generator.js +586 -0
  271. package/lib/stub-player/content-viewer.js +173 -0
  272. package/lib/stub-player/debug-panel.js +420 -0
  273. package/lib/stub-player/edit-mode.js +922 -0
  274. package/lib/stub-player/edit-utils.js +400 -0
  275. package/lib/stub-player/header-bar.js +354 -0
  276. package/lib/stub-player/interaction-editor.js +210 -0
  277. package/lib/stub-player/interactions-panel.js +565 -0
  278. package/lib/stub-player/lms-api.js +1094 -0
  279. package/lib/stub-player/login-screen.js +74 -0
  280. package/lib/stub-player/outline-mode.js +689 -0
  281. package/lib/stub-player/styles/_assessments-panel.css +245 -0
  282. package/lib/stub-player/styles/_base.css +89 -0
  283. package/lib/stub-player/styles/_catalog-icons.css +96 -0
  284. package/lib/stub-player/styles/_catalog-panel.css +291 -0
  285. package/lib/stub-player/styles/_config-panel.css +636 -0
  286. package/lib/stub-player/styles/_content-viewer.css +834 -0
  287. package/lib/stub-player/styles/_debug-panel.css +576 -0
  288. package/lib/stub-player/styles/_edit-mode.css +128 -0
  289. package/lib/stub-player/styles/_header-bar.css +343 -0
  290. package/lib/stub-player/styles/_interaction-editor.css +140 -0
  291. package/lib/stub-player/styles/_interactions-panel.css +1038 -0
  292. package/lib/stub-player/styles/_login-screen.css +102 -0
  293. package/lib/stub-player/styles/_outline-mode.css +752 -0
  294. package/lib/stub-player/styles.css +15 -0
  295. package/lib/stub-player.js +160 -0
  296. package/lib/test-data-reporting.js +176 -0
  297. package/lib/test-error-reporting.js +146 -0
  298. package/lib/token.js +86 -0
  299. package/lib/upgrade.js +257 -0
  300. package/lib/validation-rules.js +517 -0
  301. package/lib/vite-plugin-content-discovery.js +296 -0
  302. package/package.json +108 -0
  303. package/schemas/XMLSchema.dtd +402 -0
  304. package/schemas/adlcp_v1p3.xsd +111 -0
  305. package/schemas/adlnav_v1p3.xsd +61 -0
  306. package/schemas/adlseq_v1p3.xsd +93 -0
  307. package/schemas/common/anyElement.xsd +27 -0
  308. package/schemas/common/dataTypes.xsd +138 -0
  309. package/schemas/common/elementNames.xsd +767 -0
  310. package/schemas/common/elementTypes.xsd +786 -0
  311. package/schemas/common/rootElement.xsd +31 -0
  312. package/schemas/common/vocabTypes.xsd +345 -0
  313. package/schemas/common/vocabValues.xsd +257 -0
  314. package/schemas/datatypes.dtd +203 -0
  315. package/schemas/ims_xml.xsd +35 -0
  316. package/schemas/imscp_v1p1.xsd +368 -0
  317. package/schemas/imsss_v1p0.xsd +67 -0
  318. package/schemas/imsss_v1p0auxresource.xsd +19 -0
  319. package/schemas/imsss_v1p0control.xsd +20 -0
  320. package/schemas/imsss_v1p0delivery.xsd +17 -0
  321. package/schemas/imsss_v1p0limit.xsd +47 -0
  322. package/schemas/imsss_v1p0objective.xsd +67 -0
  323. package/schemas/imsss_v1p0random.xsd +16 -0
  324. package/schemas/imsss_v1p0rollup.xsd +46 -0
  325. package/schemas/imsss_v1p0seqrule.xsd +108 -0
  326. package/schemas/imsss_v1p0util.xsd +94 -0
  327. package/schemas/license.txt +17 -0
  328. package/schemas/lom.xsd +102 -0
  329. package/schemas/lomCustom.xsd +62 -0
  330. package/schemas/lomLoose.xsd +62 -0
  331. package/schemas/lomStrict.xsd +62 -0
  332. package/schemas/xml.xsd +81 -0
  333. package/template/.env.example +92 -0
  334. package/template/course/assets/audio/example-intro.mp3 +0 -0
  335. package/template/course/assets/audio/example-ui-demo--compact-player.mp3 +0 -0
  336. package/template/course/assets/audio/example-ui-demo--demo-modal.mp3 +0 -0
  337. package/template/course/assets/audio/example-ui-demo--full-player.mp3 +0 -0
  338. package/template/course/assets/docs/example_md_1.md +39 -0
  339. package/template/course/assets/docs/example_md_2.md +41 -0
  340. package/template/course/assets/docs/example_pdf_1_thumbnail.png +0 -0
  341. package/template/course/assets/docs/example_pdf_2.pdf +0 -0
  342. package/template/course/assets/images/course-architecture.svg +36 -0
  343. package/template/course/assets/images/logo.svg +14 -0
  344. package/template/course/assets/widgets/counter-demo.html +190 -0
  345. package/template/course/assets/widgets/gravity-painter.html +384 -0
  346. package/template/course/course-config.js +539 -0
  347. package/template/course/icons.js +19 -0
  348. package/template/course/interactions/PLUGIN_GUIDE.md +97 -0
  349. package/template/course/slides/example-course-structure.js +138 -0
  350. package/template/course/slides/example-final-exam.js +144 -0
  351. package/template/course/slides/example-finishing.js +127 -0
  352. package/template/course/slides/example-interactions-showcase.js +615 -0
  353. package/template/course/slides/example-preview-tour.js +129 -0
  354. package/template/course/slides/example-remedial.js +143 -0
  355. package/template/course/slides/example-summary.js +103 -0
  356. package/template/course/slides/example-ui-showcase.js +1805 -0
  357. package/template/course/slides/example-welcome.js +123 -0
  358. package/template/course/slides/example-workflow.js +140 -0
  359. package/template/course/theme.css +165 -0
  360. package/template/eslint.config.js +47 -0
  361. package/template/package.json +28 -0
  362. package/template/vite.config.js +339 -0
@@ -0,0 +1,190 @@
1
+ /* ============================================================================
2
+ LISTS - Generic List Style Utilities (NOT Assessment-Specific)
3
+ ============================================================================
4
+
5
+ PURPOSE: Simple utilities for controlling bullet/number styles
6
+
7
+ CLASSES:
8
+ .list-none - Remove list bullets/numbers
9
+ .list-disc - Disc bullets
10
+ .list-decimal - Decimal numbering
11
+ .list-styled - Enhanced styled bullets with colors and spacing
12
+ .list-numbered - Enhanced numbered lists with colors and spacing
13
+
14
+ NOTE: Assessment-specific list containers (.assessment-list, .assessment-list-item, etc.)
15
+ are defined in components/assessments.css - NOT in this generic utilities file
16
+
17
+ DEPENDENCIES:
18
+ - Requires: design-tokens.css (for CSS variables)
19
+
20
+ ============================================================================ */
21
+
22
+ /* ============================================================================
23
+ LIST STYLE UTILITIES - Control list bullet/numbering styles
24
+ ============================================================================ */
25
+
26
+ /* List Style Control */
27
+ .list-none {
28
+ list-style: none;
29
+ }
30
+
31
+ .list-disc {
32
+ list-style: disc;
33
+ }
34
+
35
+ .list-decimal {
36
+ list-style: decimal;
37
+ }
38
+
39
+ /* ============================================================================
40
+ STYLED LISTS - Enhanced spacing and visual hierarchy
41
+ ============================================================================ */
42
+
43
+ .list-styled,
44
+ .list-numbered {
45
+ margin: 0;
46
+ padding-left: var(--space-6);
47
+ }
48
+
49
+ .list-styled li,
50
+ .list-numbered li {
51
+ padding-left: var(--space-2);
52
+ line-height: 1.6;
53
+ }
54
+
55
+ .list-styled {
56
+ list-style: disc;
57
+ }
58
+
59
+ .list-styled li::marker {
60
+ color: var(--color-primary);
61
+ font-size: 1.2em;
62
+ }
63
+
64
+ .list-numbered {
65
+ list-style: decimal;
66
+ counter-reset: list-counter;
67
+ }
68
+
69
+ .list-numbered li::marker {
70
+ color: var(--color-primary);
71
+ font-weight: var(--font-weight-semibold);
72
+ }
73
+
74
+ /* Nested list styling */
75
+ .list-styled ul,
76
+ .list-numbered ul,
77
+ .list-styled ol,
78
+ .list-numbered ol {
79
+ padding-left: var(--space-5);
80
+ }
81
+
82
+ .list-styled ul li::marker {
83
+ content: '◦';
84
+ font-size: 1.4em;
85
+ }
86
+
87
+ /* ============================================================================
88
+ LIST MODIFIERS - Stackable variants
89
+ ============================================================================ */
90
+
91
+ /* Dark/Neutral markers - black bullets/numbers instead of primary color */
92
+ .list-dark li::marker,
93
+ .list-styled.list-dark li::marker,
94
+ .list-numbered.list-dark li::marker {
95
+ color: var(--color-text);
96
+ }
97
+
98
+ .list-dark ul li::marker,
99
+ .list-styled.list-dark ul li::marker,
100
+ .list-numbered.list-dark ul li::marker {
101
+ color: var(--color-text);
102
+ }
103
+
104
+ /* Compact - reduced spacing for dense content */
105
+ .list-compact,
106
+ .list-styled.list-compact,
107
+ .list-numbered.list-compact {
108
+ padding-left: var(--space-4);
109
+ }
110
+
111
+ .list-compact li,
112
+ .list-styled.list-compact li,
113
+ .list-numbered.list-compact li {
114
+ padding-left: var(--space-1);
115
+ line-height: 1.4;
116
+ }
117
+
118
+ .list-styled.list-compact li::marker {
119
+ font-size: 0.9em;
120
+ }
121
+
122
+ .list-numbered.list-compact li::marker {
123
+ font-size: 0.95em;
124
+ }
125
+
126
+ /* Compact nested lists */
127
+ .list-compact ul,
128
+ .list-compact ol,
129
+ .list-styled.list-compact ul,
130
+ .list-styled.list-compact ol,
131
+ .list-numbered.list-compact ul,
132
+ .list-numbered.list-compact ol {
133
+ padding-left: var(--space-4);
134
+ }
135
+
136
+ /* Light markers - white bullets/numbers for dark backgrounds */
137
+ .list-light li::marker,
138
+ .list-styled.list-light li::marker,
139
+ .list-numbered.list-light li::marker {
140
+ color: #fff;
141
+ }
142
+
143
+ .list-light ul li::marker,
144
+ .list-styled.list-light ul li::marker,
145
+ .list-numbered.list-light ul li::marker {
146
+ color: rgba(255, 255, 255, 0.8);
147
+ }
148
+
149
+ /* ============================================================================
150
+ CONTEXTUAL AUTO-STYLING - Smart marker colors based on container
151
+ ============================================================================
152
+ Lists inside light-background containers (callouts, cards with light bg)
153
+ automatically get dark markers for better contrast.
154
+ ============================================================================ */
155
+
156
+ /* Callouts with light backgrounds - use dark markers */
157
+ .callout-warning .list-styled li::marker,
158
+ .callout-warning .list-numbered li::marker,
159
+ .callout-info .list-styled li::marker,
160
+ .callout-info .list-numbered li::marker,
161
+ .callout-success .list-styled li::marker,
162
+ .callout-success .list-numbered li::marker,
163
+ .callout-danger .list-styled li::marker,
164
+ .callout-danger .list-numbered li::marker {
165
+ color: var(--color-gray-700);
166
+ }
167
+
168
+ /* Nested lists in callouts */
169
+ .callout-warning .list-styled ul li::marker,
170
+ .callout-warning .list-numbered ul li::marker,
171
+ .callout-info .list-styled ul li::marker,
172
+ .callout-info .list-numbered ul li::marker,
173
+ .callout-success .list-styled ul li::marker,
174
+ .callout-success .list-numbered ul li::marker,
175
+ .callout-danger .list-styled ul li::marker,
176
+ .callout-danger .list-numbered ul li::marker {
177
+ color: var(--color-gray-600);
178
+ }
179
+
180
+ /* Alerts with light backgrounds */
181
+ .alert-warning .list-styled li::marker,
182
+ .alert-warning .list-numbered li::marker,
183
+ .alert-info .list-styled li::marker,
184
+ .alert-info .list-numbered li::marker,
185
+ .alert-success .list-styled li::marker,
186
+ .alert-success .list-numbered li::marker,
187
+ .alert-danger .list-styled li::marker,
188
+ .alert-danger .list-numbered li::marker {
189
+ color: var(--color-gray-700);
190
+ }
@@ -0,0 +1,167 @@
1
+ /* ============================================================================
2
+ SPACING UTILITIES - Margin and padding classes
3
+ ============================================================================
4
+
5
+ PURPOSE: Utility classes for controlling element spacing
6
+
7
+ INCLUDES:
8
+ - Margin utilities (m, mt, mb, ml, mr, mx, my)
9
+ - Padding utilities (p, pt, pb, pl, pr, px, py)
10
+ - Spacing scale from 0-6 (0, 4px, 8px, 12px, 16px, 24px, 32px)
11
+
12
+ DEPENDENCIES:
13
+ - Requires: design-tokens.css (for --space-* variables)
14
+
15
+ USAGE:
16
+ <div class="m-4">Margin 16px all sides</div>
17
+ <div class="mt-2 mb-4">Margin top 8px, bottom 16px</div>
18
+ <div class="p-3 px-4">Padding 12px all, 16px horizontal</div>
19
+
20
+ ============================================================================ */
21
+
22
+ /* Spacing Utilities - Margin */
23
+ .m-0 { margin: 0; }
24
+ .m-1 { margin: var(--space-1); }
25
+ .m-2 { margin: var(--space-2); }
26
+ .m-3 { margin: var(--space-3); }
27
+ .m-4 { margin: var(--space-4); }
28
+ .m-5 { margin: var(--space-5); }
29
+ .m-6 { margin: var(--space-6); }
30
+
31
+ .mx-0 { margin-left: 0; margin-right: 0; }
32
+ .mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }
33
+ .mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }
34
+ .mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }
35
+ .mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
36
+ .mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }
37
+ .mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }
38
+ .mx-auto { margin-left: auto; margin-right: auto; }
39
+
40
+ .my-0 { margin-top: 0; margin-bottom: 0; }
41
+ .my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }
42
+ .my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }
43
+ .my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
44
+ .my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
45
+ .my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }
46
+ .my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }
47
+ .my-auto { margin-top: auto; margin-bottom: auto; }
48
+
49
+ /* Auto margins for flexbox layouts */
50
+ .mt-auto { margin-top: auto; }
51
+ .mb-auto { margin-bottom: auto; }
52
+ .ml-auto { margin-left: auto; }
53
+ .mr-auto { margin-right: auto; }
54
+
55
+ .mt-0 { margin-top: 0; }
56
+ .mt-1 { margin-top: var(--space-1); }
57
+ .mt-2 { margin-top: var(--space-2); }
58
+ .mt-3 { margin-top: var(--space-3); }
59
+ .mt-4 { margin-top: var(--space-4); }
60
+ .mt-5 { margin-top: var(--space-5); }
61
+ .mt-6 { margin-top: var(--space-6); }
62
+
63
+ .mb-0 { margin-bottom: 0; }
64
+ .mb-1 { margin-bottom: var(--space-1); }
65
+ .mb-2 { margin-bottom: var(--space-2); }
66
+ .mb-3 { margin-bottom: var(--space-3); }
67
+ .mb-4 { margin-bottom: var(--space-4); }
68
+ .mb-5 { margin-bottom: var(--space-5); }
69
+ .mb-6 { margin-bottom: var(--space-6); }
70
+
71
+ .ml-0 { margin-left: 0; }
72
+ .ml-1 { margin-left: var(--space-1); }
73
+ .ml-2 { margin-left: var(--space-2); }
74
+ .ml-3 { margin-left: var(--space-3); }
75
+ .ml-4 { margin-left: var(--space-4); }
76
+ .ml-5 { margin-left: var(--space-5); }
77
+ .ml-6 { margin-left: var(--space-6); }
78
+
79
+ .mr-0 { margin-right: 0; }
80
+ .mr-1 { margin-right: var(--space-1); }
81
+ .mr-2 { margin-right: var(--space-2); }
82
+ .mr-3 { margin-right: var(--space-3); }
83
+ .mr-4 { margin-right: var(--space-4); }
84
+ .mr-5 { margin-right: var(--space-5); }
85
+ .mr-6 { margin-right: var(--space-6); }
86
+
87
+ /* Spacing Utilities - Padding */
88
+ .p-0 { padding: 0; }
89
+ .p-1 { padding: var(--space-1); }
90
+ .p-2 { padding: var(--space-2); }
91
+ .p-3 { padding: var(--space-3); }
92
+ .p-4 { padding: var(--space-4); }
93
+ .p-5 { padding: var(--space-5); }
94
+ .p-6 { padding: var(--space-6); }
95
+
96
+ .px-0 { padding-left: 0; padding-right: 0; }
97
+ .px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }
98
+ .px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
99
+ .px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
100
+ .px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
101
+ .px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
102
+ .px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
103
+
104
+ .py-0 { padding-top: 0; padding-bottom: 0; }
105
+ .py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }
106
+ .py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
107
+ .py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
108
+ .py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
109
+ .py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
110
+ .py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
111
+
112
+ .pt-0 { padding-top: 0; }
113
+ .pt-1 { padding-top: var(--space-1); }
114
+ .pt-2 { padding-top: var(--space-2); }
115
+ .pt-3 { padding-top: var(--space-3); }
116
+ .pt-4 { padding-top: var(--space-4); }
117
+ .pt-5 { padding-top: var(--space-5); }
118
+ .pt-6 { padding-top: var(--space-6); }
119
+
120
+ .pb-0 { padding-bottom: 0; }
121
+ .pb-1 { padding-bottom: var(--space-1); }
122
+ .pb-2 { padding-bottom: var(--space-2); }
123
+ .pb-3 { padding-bottom: var(--space-3); }
124
+ .pb-4 { padding-bottom: var(--space-4); }
125
+ .pb-5 { padding-bottom: var(--space-5); }
126
+ .pb-6 { padding-bottom: var(--space-6); }
127
+
128
+ .pl-0 { padding-left: 0; }
129
+ .pl-1 { padding-left: var(--space-1); }
130
+ .pl-2 { padding-left: var(--space-2); }
131
+ .pl-3 { padding-left: var(--space-3); }
132
+ .pl-4 { padding-left: var(--space-4); }
133
+ .pl-5 { padding-left: var(--space-5); }
134
+ .pl-6 { padding-left: var(--space-6); }
135
+
136
+ .pr-0 { padding-right: 0; }
137
+ .pr-1 { padding-right: var(--space-1); }
138
+ .pr-2 { padding-right: var(--space-2); }
139
+ .pr-3 { padding-right: var(--space-3); }
140
+ .pr-4 { padding-right: var(--space-4); }
141
+ .pr-5 { padding-right: var(--space-5); }
142
+ .pr-6 { padding-right: var(--space-6); }
143
+
144
+ /* Spacing Utilities - Gap (for flex/grid containers) */
145
+ .gap-0 { gap: 0; }
146
+ .gap-1 { gap: var(--space-1); }
147
+ .gap-2 { gap: var(--space-2); }
148
+ .gap-3 { gap: var(--space-3); }
149
+ .gap-4 { gap: var(--space-4); }
150
+ .gap-5 { gap: var(--space-5); }
151
+ .gap-6 { gap: var(--space-6); }
152
+
153
+ .row-gap-0 { row-gap: 0; }
154
+ .row-gap-1 { row-gap: var(--space-1); }
155
+ .row-gap-2 { row-gap: var(--space-2); }
156
+ .row-gap-3 { row-gap: var(--space-3); }
157
+ .row-gap-4 { row-gap: var(--space-4); }
158
+ .row-gap-5 { row-gap: var(--space-5); }
159
+ .row-gap-6 { row-gap: var(--space-6); }
160
+
161
+ .col-gap-0 { column-gap: 0; }
162
+ .col-gap-1 { column-gap: var(--space-1); }
163
+ .col-gap-2 { column-gap: var(--space-2); }
164
+ .col-gap-3 { column-gap: var(--space-3); }
165
+ .col-gap-4 { column-gap: var(--space-4); }
166
+ .col-gap-5 { column-gap: var(--space-5); }
167
+ .col-gap-6 { column-gap: var(--space-6); }
@@ -0,0 +1,81 @@
1
+ /* ============================================================================
2
+ TABLES - Simple table styling for data presentation
3
+ ============================================================================
4
+
5
+ PURPOSE: Clean, accessible table styling for displaying tabular data
6
+
7
+ INCLUDES:
8
+ - Header styling with background
9
+ - Body row styling with borders
10
+ - Hover states for interactivity
11
+ - Responsive padding and alignment
12
+
13
+ DEPENDENCIES:
14
+ - Requires: design-tokens.css (for CSS variables)
15
+
16
+ USED BY: Data displays, results tables, comparison tables
17
+
18
+ USAGE:
19
+ <table class="table">
20
+ <thead>
21
+ <tr>
22
+ <th>Header 1</th>
23
+ <th>Header 2</th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <tr>
28
+ <td>Data 1</td>
29
+ <td>Data 2</td>
30
+ </tr>
31
+ </tbody>
32
+ </table>
33
+
34
+ ============================================================================ */
35
+
36
+ .table {
37
+ width: 100%;
38
+ border-collapse: collapse;
39
+ font-size: var(--font-size-base);
40
+ }
41
+
42
+ .table thead {
43
+ background-color: var(--bg-muted);
44
+ border-bottom: 2px solid var(--color-gray-300);
45
+ }
46
+
47
+ .table thead th {
48
+ padding: var(--space-3);
49
+ text-align: left;
50
+ font-weight: var(--font-weight-semibold);
51
+ color: var(--color-gray-900);
52
+ border-right: 1px solid var(--color-gray-200);
53
+ }
54
+
55
+ .table thead th:last-child {
56
+ border-right: none;
57
+ }
58
+
59
+ .table tbody td {
60
+ padding: var(--space-3);
61
+ border-bottom: 1px solid var(--color-gray-200);
62
+ border-right: 1px solid var(--color-gray-200);
63
+ color: var(--color-gray-800);
64
+ }
65
+
66
+ .table tbody td:last-child {
67
+ border-right: none;
68
+ }
69
+
70
+ .table tbody tr:hover {
71
+ background-color: rgba(0, 0, 0, 0.02);
72
+ }
73
+
74
+ .table tbody tr:last-child td {
75
+ border-bottom: none;
76
+ }
77
+
78
+ /* Striped table variant */
79
+ .table-striped tbody tr:nth-child(even) {
80
+ background-color: var(--bg-muted);
81
+ }
@@ -0,0 +1,159 @@
1
+ /* ============================================================================
2
+ TYPOGRAPHY UTILITIES - Font weights, text transform, decoration, line clamp
3
+ ============================================================================
4
+
5
+ PURPOSE: Utility classes for text styling and formatting
6
+
7
+ INCLUDES:
8
+ - Font weights (light, normal, medium, semibold, bold)
9
+ - Text transform (uppercase, lowercase, capitalize)
10
+ - Text decoration (underline, no-underline)
11
+ - Line clamp (truncate text with ellipsis)
12
+
13
+ DEPENDENCIES:
14
+ - Requires: design-tokens.css (for font-weight variables)
15
+
16
+ USAGE: Apply classes directly to elements for quick styling
17
+
18
+ ============================================================================ */
19
+
20
+ /* Font Family */
21
+ .font-mono { font-family: var(--font-family-mono, ui-monospace, monospace); }
22
+
23
+ /* Font Weights */
24
+ .font-light { font-weight: 300; }
25
+ .font-normal { font-weight: 400; }
26
+ .font-medium { font-weight: 500; }
27
+ .font-semibold { font-weight: 600; }
28
+ .font-bold { font-weight: 700; }
29
+
30
+ /* Font Size */
31
+ .text-xs { font-size: var(--font-size-xs); }
32
+ .text-sm { font-size: var(--font-size-sm); }
33
+ .text-base { font-size: var(--font-size-base); }
34
+ .text-lg { font-size: var(--font-size-lg); }
35
+ .text-xl { font-size: var(--font-size-xl); }
36
+
37
+ /* Text Align */
38
+ .text-left { text-align: left; }
39
+ .text-center { text-align: center; }
40
+ .text-right { text-align: right; }
41
+ .text-justify { text-align: justify; }
42
+
43
+ /* Text Transform */
44
+ .uppercase { text-transform: uppercase; }
45
+ .lowercase { text-transform: lowercase; }
46
+ .capitalize { text-transform: capitalize; }
47
+
48
+ /* Text Decoration */
49
+ .no-underline { text-decoration: none; }
50
+ .underline { text-decoration: underline; }
51
+
52
+ /* Text Truncation */
53
+ .truncate {
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ white-space: nowrap;
57
+ }
58
+
59
+ .line-clamp-2 {
60
+ display: -webkit-box;
61
+ -webkit-line-clamp: 2;
62
+ -webkit-box-orient: vertical;
63
+ overflow: hidden;
64
+ }
65
+
66
+ .line-clamp-3 {
67
+ display: -webkit-box;
68
+ -webkit-line-clamp: 3;
69
+ -webkit-box-orient: vertical;
70
+ overflow: hidden;
71
+ }
72
+
73
+ /* ============================================================================
74
+ HEADING STYLE VARIANTS
75
+ ============================================================================
76
+
77
+ Use data-heading-style attribute on a container to apply heading styles
78
+ to all headings within, or apply classes directly to individual headings.
79
+
80
+ USAGE:
81
+ <div data-heading-style="subtle">
82
+ <h2>This heading is subtle</h2>
83
+ </div>
84
+
85
+ Or directly:
86
+ <h2 class="heading-accent">Accented Heading</h2>
87
+ ============================================================================ */
88
+
89
+ /* Bold - Default colored headings (for reference/explicit use) */
90
+ [data-heading-style="bold"] h1,
91
+ [data-heading-style="bold"] h2,
92
+ [data-heading-style="bold"] h3,
93
+ .heading-bold {
94
+ color: var(--color-primary);
95
+ font-weight: var(--font-weight-bold);
96
+ }
97
+
98
+ /* Subtle - Gray, lighter weight headings */
99
+ [data-heading-style="subtle"] h1,
100
+ [data-heading-style="subtle"] h2,
101
+ [data-heading-style="subtle"] h3,
102
+ .heading-subtle {
103
+ color: var(--color-gray-600);
104
+ font-weight: var(--font-weight-medium);
105
+ }
106
+
107
+ /* Accent - Headings with accent color underline */
108
+ [data-heading-style="accent"] h1,
109
+ [data-heading-style="accent"] h2,
110
+ [data-heading-style="accent"] h3,
111
+ .heading-accent {
112
+ color: var(--text-primary);
113
+ font-weight: var(--font-weight-bold);
114
+ padding-bottom: var(--space-2);
115
+ border-bottom: 3px solid var(--color-accent);
116
+ display: inline-block;
117
+ }
118
+
119
+ /* Caps - Uppercase with letter-spacing */
120
+ [data-heading-style="caps"] h1,
121
+ [data-heading-style="caps"] h2,
122
+ [data-heading-style="caps"] h3,
123
+ .heading-caps {
124
+ text-transform: uppercase;
125
+ letter-spacing: 0.05em;
126
+ font-weight: var(--font-weight-semibold);
127
+ color: var(--color-gray-700);
128
+ }
129
+
130
+ /* ============================================================================
131
+ TEXT DECORATION UTILITIES
132
+ ============================================================================
133
+
134
+ Special text effects for emphasis and visual interest.
135
+ ============================================================================ */
136
+
137
+ /* Gradient text effect using primary colors */
138
+ .text-gradient {
139
+ background: var(--gradient-primary);
140
+ -webkit-background-clip: text;
141
+ -webkit-text-fill-color: transparent;
142
+ background-clip: text;
143
+ }
144
+
145
+ /* Subtle text shadow for readability on busy backgrounds */
146
+ .text-shadow {
147
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
148
+ }
149
+
150
+ /* Stronger text shadow for light text on images */
151
+ .text-shadow-lg {
152
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
153
+ }
154
+
155
+ /* Outlined/stroke text effect (works best on large display text) */
156
+ .text-outlined {
157
+ color: transparent;
158
+ -webkit-text-stroke: 2px var(--color-primary);
159
+ }
@@ -0,0 +1,117 @@
1
+ /* ============================================================================
2
+ VISIBILITY UTILITIES - Show/Hide and conditional display helpers
3
+ ============================================================================
4
+
5
+ PURPOSE: Utility classes for visibility state management
6
+
7
+ INCLUDES:
8
+ - Conditional display with visibility transitions
9
+ - Show/hide animations
10
+ - Pointer events management
11
+
12
+ DEPENDENCIES:
13
+ - Requires: design-tokens.css (for CSS variables)
14
+
15
+ USED BY:
16
+ - Modal visibility toggling
17
+ - Conditional content display
18
+ - Animation-based transitions
19
+
20
+ AI DEBUGGING TIPS:
21
+ - Elements appearing when hidden? Check opacity and pointer-events
22
+ - Animation not smooth? Verify transition timing in design-tokens
23
+ - Touch areas wrong? Check pointer-events: none/auto
24
+ - Mobile jerky? Check @media (prefers-reduced-motion: reduce)
25
+
26
+ ============================================================================ */
27
+
28
+ /* Conditional Display - Hidden State */
29
+ .conditional-hidden {
30
+ opacity: 0;
31
+ transform: translateY(-10px);
32
+ transition: opacity 0.3s ease-out, transform 0.3s ease-out;
33
+ pointer-events: none;
34
+ }
35
+
36
+ /* Conditional Display - Visible State */
37
+ .conditional-visible {
38
+ opacity: 1;
39
+ transform: translateY(0);
40
+ transition: opacity 0.3s ease-in, transform 0.3s ease-in;
41
+ pointer-events: auto;
42
+ }
43
+
44
+ /* Reduce motion for users who prefer it */
45
+ @media (prefers-reduced-motion: reduce) {
46
+
47
+ .conditional-hidden,
48
+ .conditional-visible {
49
+ transition: none;
50
+ transform: none;
51
+ }
52
+ }
53
+
54
+ /* ============================================================================
55
+ LAYOUT-BASED VISIBILITY - Show/hide elements per layout type
56
+ ============================================================================
57
+ Usage: Add class to any element to control visibility per layout.
58
+
59
+ Hide in specific layout:
60
+ <div class="hide-on-focused">Hidden only in focused layout</div>
61
+
62
+ Show only in specific layout:
63
+ <div class="show-only-article">Visible only in article layout</div>
64
+ ============================================================================ */
65
+
66
+ /* Hide in specific layouts */
67
+ [data-layout="traditional"] .hide-on-traditional {
68
+ display: none !important;
69
+ }
70
+
71
+ [data-layout="article"] .hide-on-article {
72
+ display: none !important;
73
+ }
74
+
75
+ [data-layout="focused"] .hide-on-focused {
76
+ display: none !important;
77
+ }
78
+
79
+ [data-layout="presentation"] .hide-on-presentation {
80
+ display: none !important;
81
+ }
82
+
83
+ /* Show only in traditional layout */
84
+ .show-only-traditional {
85
+ display: none !important;
86
+ }
87
+
88
+ [data-layout="traditional"] .show-only-traditional {
89
+ display: block !important;
90
+ }
91
+
92
+ /* Show only in article layout */
93
+ .show-only-article {
94
+ display: none !important;
95
+ }
96
+
97
+ [data-layout="article"] .show-only-article {
98
+ display: block !important;
99
+ }
100
+
101
+ /* Show only in focused layout */
102
+ .show-only-focused {
103
+ display: none !important;
104
+ }
105
+
106
+ [data-layout="focused"] .show-only-focused {
107
+ display: block !important;
108
+ }
109
+
110
+ /* Show only in presentation layout */
111
+ .show-only-presentation {
112
+ display: none !important;
113
+ }
114
+
115
+ [data-layout="presentation"] .show-only-presentation {
116
+ display: block !important;
117
+ }