metanorma-document 0.2.12 → 0.2.13
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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +21 -0
- data/.github/workflows/release.yml +25 -0
- data/.github/workflows/roundtrip-samples.yml +132 -0
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/.rubocop.yml +22 -0
- data/.rubocop_todo.yml +66 -164
- data/CHANGELOG.md +1 -0
- data/Gemfile +32 -0
- data/README.adoc +0 -144
- data/Rakefile +2 -14
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/data/javascripts/components/mn-lightbox.js +2 -18
- data/data/javascripts/components/mn-shortcuts.js +0 -2
- data/data/javascripts/core/mn-navigation.js +0 -8
- data/data/javascripts/core/mn-theme.js +9 -9
- data/data/logos/pdfa-logo.svg +94 -31
- data/data/stylesheets/base/_layout.css +0 -3
- data/data/stylesheets/base/_reset.css +3 -3
- data/data/stylesheets/base/_typography.css +5 -0
- data/data/stylesheets/components/bibliography.css +3 -3
- data/data/stylesheets/components/cover.css +1 -3
- data/data/stylesheets/components/figure.css +1 -13
- data/data/stylesheets/components/footnote.css +5 -65
- data/data/stylesheets/components/formula.css +0 -44
- data/data/stylesheets/components/header.css +2 -17
- data/data/stylesheets/components/inline.css +1 -1
- data/data/stylesheets/components/table.css +2 -15
- data/data/stylesheets/components/term.css +1 -0
- data/lib/metanorma/bipm_document/metadata/bipm_bibliographic_item.rb +14 -0
- data/lib/metanorma/bipm_document/metadata.rb +1 -1
- data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +65 -0
- data/lib/metanorma/document/components/ancillary_blocks.rb +0 -4
- data/lib/metanorma/document/components/bib_data/bib_data.rb +0 -7
- data/lib/metanorma/document/components/blocks/requirement_model.rb +131 -0
- data/lib/metanorma/document/components/blocks.rb +7 -8
- data/lib/metanorma/document/components/id_elements/image.rb +0 -2
- data/lib/metanorma/document/components/inline/asciimath_element.rb +0 -2
- data/lib/metanorma/document/components/inline/attribution_element.rb +0 -2
- data/lib/metanorma/document/components/inline/bcp14_element.rb +0 -2
- data/lib/metanorma/document/components/inline/biblio_tag_element.rb +0 -2
- data/lib/metanorma/document/components/inline/br_element.rb +0 -2
- data/lib/metanorma/document/components/inline/comma_element.rb +0 -2
- data/lib/metanorma/document/components/inline/concept_element.rb +0 -2
- data/lib/metanorma/document/components/inline/display_text_element.rb +0 -2
- data/lib/metanorma/document/components/inline/em_raw_element.rb +0 -2
- data/lib/metanorma/document/components/inline/enum_comma_element.rb +0 -2
- data/lib/metanorma/document/components/inline/eref_element.rb +0 -2
- data/lib/metanorma/document/components/inline/fmt_admitted_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_annotation_body_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_annotation_end_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_annotation_start_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_concept_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_definition_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_fn_body_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_fn_label_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_footnote_container_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_identifier_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_name_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_sourcecode_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_stem_element.rb +0 -10
- data/lib/metanorma/document/components/inline/fmt_termsource_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_title_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_xref_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fmt_xref_label_element.rb +0 -4
- data/lib/metanorma/document/components/inline/fn_element.rb +0 -2
- data/lib/metanorma/document/components/inline/link_element.rb +0 -2
- data/lib/metanorma/document/components/inline/localized_string_element.rb +0 -2
- data/lib/metanorma/document/components/inline/localized_strings_element.rb +0 -2
- data/lib/metanorma/document/components/inline/math_element.rb +0 -2
- data/lib/metanorma/document/components/inline/name_with_id_element.rb +0 -4
- data/lib/metanorma/document/components/inline/semx_child_element.rb +0 -2
- data/lib/metanorma/document/components/inline/semx_element.rb +1 -13
- data/lib/metanorma/document/components/inline/small_cap_element.rb +0 -2
- data/lib/metanorma/document/components/inline/span_element.rb +15 -10
- data/lib/metanorma/document/components/inline/stem_inline_element.rb +1 -7
- data/lib/metanorma/document/components/inline/strong_raw_element.rb +0 -2
- data/lib/metanorma/document/components/inline/sub_element.rb +0 -2
- data/lib/metanorma/document/components/inline/sup_element.rb +0 -2
- data/lib/metanorma/document/components/inline/tab_element.rb +0 -2
- data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +0 -4
- data/lib/metanorma/document/components/inline/tt_element.rb +0 -2
- data/lib/metanorma/document/components/inline/variant_title_element.rb +0 -2
- data/lib/metanorma/document/components/inline/xref_element.rb +0 -10
- data/lib/metanorma/document/components/inline.rb +0 -12
- data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +29 -0
- data/lib/metanorma/document/components/multi_paragraph.rb +0 -2
- data/lib/metanorma/document/components/reference_elements/source_element.rb +31 -0
- data/lib/metanorma/document/components/reference_elements.rb +2 -2
- data/lib/metanorma/document/components/tables/table_block.rb +22 -0
- data/lib/metanorma/document/components/tables/table_section.rb +25 -0
- data/lib/metanorma/document/components/tables.rb +3 -5
- data/lib/metanorma/document/relaton/address.rb +27 -0
- data/lib/metanorma/document/relaton/bib_item_locality.rb +12 -3
- data/lib/metanorma/document/relaton/copyright_association.rb +10 -0
- data/lib/metanorma/document/relaton/edition.rb +7 -4
- data/lib/metanorma/document/relaton/organization.rb +14 -0
- data/lib/metanorma/document/relaton/phone.rb +9 -3
- data/lib/metanorma/document/relaton/place_type.rb +13 -0
- data/lib/metanorma/document/relaton/price_type.rb +9 -3
- data/lib/metanorma/document/relaton.rb +1 -6
- data/lib/metanorma/document/version.rb +1 -1
- data/lib/metanorma/document.rb +0 -2
- data/lib/metanorma/html/asset_pipeline.rb +0 -1
- data/lib/metanorma/html/base_renderer.rb +1008 -261
- data/lib/metanorma/html/bipm_renderer.rb +144 -15
- data/lib/metanorma/html/cc_renderer.rb +45 -1
- data/lib/metanorma/html/component/base.rb +7 -2
- data/lib/metanorma/html/component/index_section.rb +43 -41
- data/lib/metanorma/html/drops/admonition_drop.rb +4 -1
- data/lib/metanorma/html/drops/block_element_drop.rb +2 -7
- data/lib/metanorma/html/drops/example_drop.rb +4 -1
- data/lib/metanorma/html/drops/figure_drop.rb +22 -31
- data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
- data/lib/metanorma/html/drops/formula_drop.rb +16 -45
- data/lib/metanorma/html/drops/note_drop.rb +7 -9
- data/lib/metanorma/html/drops/sourcecode_drop.rb +5 -12
- data/lib/metanorma/html/drops.rb +0 -2
- data/lib/metanorma/html/generator.rb +2 -2
- data/lib/metanorma/html/icc_renderer.rb +39 -0
- data/lib/metanorma/html/iec_renderer.rb +44 -1
- data/lib/metanorma/html/ieee_renderer.rb +45 -1
- data/lib/metanorma/html/ietf_renderer.rb +48 -1
- data/lib/metanorma/html/iho_renderer.rb +46 -1
- data/lib/metanorma/html/iso_renderer.rb +343 -290
- data/lib/metanorma/html/itu_renderer.rb +45 -1
- data/lib/metanorma/html/ogc_renderer.rb +76 -15
- data/lib/metanorma/html/oiml_renderer.rb +38 -18
- data/lib/metanorma/html/pdfa_renderer.rb +39 -0
- data/lib/metanorma/html/ribose_renderer.rb +45 -1
- data/lib/metanorma/html/standard_renderer.rb +229 -341
- data/lib/metanorma/html/templates/_footnotes.html.liquid +6 -6
- data/lib/metanorma/html/templates/_formula.html.liquid +1 -1
- data/lib/metanorma/html/templates/_header.html.liquid +1 -1
- data/lib/metanorma/html/templates/_iso_cover.html.liquid +1 -1
- data/lib/metanorma/html/templates/document.html.liquid +0 -4
- data/lib/metanorma/html/theme.rb +107 -180
- data/lib/metanorma/html.rb +3 -14
- data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +25 -0
- data/lib/metanorma/ietf_document/metadata.rb +0 -2
- data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +48 -0
- data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +72 -0
- data/lib/metanorma/iso_document/metadata/iso_document_status.rb +30 -0
- data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +1 -4
- data/lib/metanorma/iso_document/metadata/structured_identifier.rb +17 -0
- data/lib/metanorma/iso_document/metadata/title_collection.rb +0 -1
- data/lib/metanorma/iso_document/metadata.rb +4 -9
- data/lib/metanorma/iso_document/terms/iso_term.rb +13 -0
- data/lib/metanorma/iso_document/terms.rb +0 -1
- data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +37 -0
- data/lib/metanorma/itu_document/metadata.rb +4 -3
- data/lib/metanorma/standard_document/block_attributes.rb +9 -5
- data/lib/metanorma/standard_document/blocks/block_source.rb +23 -0
- data/lib/metanorma/standard_document/blocks.rb +1 -1
- data/lib/metanorma/standard_document/terms/term_expression.rb +31 -0
- data/lib/metanorma/standard_document/terms.rb +0 -1
- data/metanorma-document.gemspec +35 -0
- metadata +13 -262
- data/CLAUDE.md +0 -26
- data/TODO.finalize/01-split-multi-class-files.md +0 -8
- data/TODO.finalize/02-remove-data-dist-iso-document-frontend.md +0 -6
- data/TODO.finalize/03-align-frontend-iife-and-gha-build.md +0 -11
- data/TODO.finalize/04-theme-per-flavor-config-driven.md +0 -9
- data/TODO.finalize/05-migrate-all-html-to-liquid.md +0 -16
- data/TODO.finalize/06-integrate-pubid-library.md +0 -16
- data/TODO.finalize/07-replace-relaton-models-with-relaton-bib.md +0 -39
- data/TODO.finalize/08-refactor-renderer-architecture.md +0 -25
- data/TODO.finalize/09-eliminate-code-smells.md +0 -14
- data/TODO.finalize/10-comprehensive-spec-coverage.md +0 -24
- data/TODO.finalize/11-config-driven-flavor-metadata.md +0 -20
- data/TODO.finalize/12-add-frozen-string-literal.md +0 -6
- data/TODO.finalize/13-extract-composition-from-god-class.md +0 -96
- data/TODO.finalize/14-config-driven-section-ordering.md +0 -31
- data/TODO.finalize/15-theme-directories-per-flavor.md +0 -46
- data/TODO.finalize/16-theme-lutaml-model-schema.md +0 -44
- data/data/javascripts/components/mn-footnotes.js +0 -68
- data/data/logos/oiml-logo-full-dark.svg +0 -1
- data/data/logos/oiml-logo-full-light.svg +0 -1
- data/data/logos/oiml-logo-icon-dark.svg +0 -1
- data/data/logos/oiml-logo-icon-light.svg +0 -1
- data/data/logos/oiml-logo.svg +0 -1
- data/data/themes/bipm.yaml +0 -60
- data/data/themes/cc.yaml +0 -43
- data/data/themes/icc.yaml +0 -39
- data/data/themes/iec.yaml +0 -44
- data/data/themes/ieee.yaml +0 -43
- data/data/themes/ietf.yaml +0 -45
- data/data/themes/iho.yaml +0 -46
- data/data/themes/iso.yaml +0 -40
- data/data/themes/itu.yaml +0 -45
- data/data/themes/ogc.yaml +0 -51
- data/data/themes/oiml.yaml +0 -56
- data/data/themes/pdfa.yaml +0 -44
- data/data/themes/ribose.yaml +0 -43
- data/exe/metanorma-document +0 -11
- data/frontend/e2e/sample-html.test.ts +0 -256
- data/frontend/index.html +0 -12
- data/frontend/package-lock.json +0 -4725
- data/frontend/package.json +0 -32
- data/frontend/postcss.config.js +0 -6
- data/frontend/src/App.vue +0 -79
- data/frontend/src/app.ts +0 -21
- data/frontend/src/components/AppSidebar.vue +0 -77
- data/frontend/src/components/DocumentReader.vue +0 -180
- data/frontend/src/components/MirrorRenderer.vue +0 -23
- data/frontend/src/components/ReadingProgressBar.vue +0 -29
- data/frontend/src/components/TextRenderer.vue +0 -131
- data/frontend/src/components/TocItem.vue +0 -57
- data/frontend/src/components/TopBar.vue +0 -49
- data/frontend/src/components/__tests__/MirrorRenderer.test.ts +0 -178
- data/frontend/src/components/blocks/AdmonitionBlock.vue +0 -74
- data/frontend/src/components/blocks/ClauseBlock.vue +0 -53
- data/frontend/src/components/blocks/ExampleBlock.vue +0 -21
- data/frontend/src/components/blocks/FallbackBlock.vue +0 -18
- data/frontend/src/components/blocks/FigureBlock.vue +0 -26
- data/frontend/src/components/blocks/FootnotesBlock.vue +0 -25
- data/frontend/src/components/blocks/ListBlocks.vue +0 -62
- data/frontend/src/components/blocks/NoteBlock.vue +0 -21
- data/frontend/src/components/blocks/ParagraphBlock.vue +0 -25
- data/frontend/src/components/blocks/QuoteBlock.vue +0 -25
- data/frontend/src/components/blocks/ReviewBlock.vue +0 -39
- data/frontend/src/components/blocks/SourcecodeBlock.vue +0 -52
- data/frontend/src/components/blocks/TableBlock.vue +0 -48
- data/frontend/src/components/blocks/index.ts +0 -36
- data/frontend/src/stores/__tests__/documentStore.fixture.test.ts +0 -272
- data/frontend/src/stores/__tests__/documentStore.test.ts +0 -143
- data/frontend/src/stores/__tests__/ebookStore.test.ts +0 -145
- data/frontend/src/stores/__tests__/uiStore.test.ts +0 -42
- data/frontend/src/stores/documentStore.ts +0 -153
- data/frontend/src/stores/ebookStore.ts +0 -179
- data/frontend/src/stores/uiStore.ts +0 -32
- data/frontend/src/styles.css +0 -156
- data/frontend/src/types/__tests__/rendering-contract.test.ts +0 -172
- data/frontend/src/types/rendering-contract.ts +0 -209
- data/frontend/src/utils/__tests__/typeMetadata.test.ts +0 -102
- data/frontend/src/utils/typeMetadata.ts +0 -121
- data/frontend/tailwind.config.js +0 -18
- data/frontend/test/fixtures/iso-document.json +0 -271
- data/frontend/tmp/debug_e2e.cjs +0 -46
- data/frontend/tsconfig.json +0 -25
- data/frontend/tsconfig.node.json +0 -11
- data/frontend/vite.config.ts +0 -37
- data/frontend/vitest.e2e.config.ts +0 -9
- data/lib/metanorma/bipm_document/metadata/depiction_element.rb +0 -18
- data/lib/metanorma/document/cli.rb +0 -116
- data/lib/metanorma/document/components/ancillary_blocks/callout_annotation.rb +0 -27
- data/lib/metanorma/document/components/ancillary_blocks/sourcecode_body.rb +0 -18
- data/lib/metanorma/document/components/blocks/classification_value.rb +0 -21
- data/lib/metanorma/document/components/blocks/permission_model.rb +0 -28
- data/lib/metanorma/document/components/blocks/recommendation_model.rb +0 -28
- data/lib/metanorma/document/components/blocks/requirement_base.rb +0 -30
- data/lib/metanorma/document/components/blocks/requirement_classification.rb +0 -20
- data/lib/metanorma/document/components/blocks/requirement_description.rb +0 -43
- data/lib/metanorma/document/components/blocks/requirement_inherit.rb +0 -24
- data/lib/metanorma/document/components/inline/location_element.rb +0 -24
- data/lib/metanorma/document/components/inline/rendered_display.rb +0 -23
- data/lib/metanorma/document/components/inline/rendered_math_element.rb +0 -21
- data/lib/metanorma/document/components/inline/semantic_content.rb +0 -51
- data/lib/metanorma/document/components/inline/semantic_math_element.rb +0 -20
- data/lib/metanorma/document/components/inline/vocabulary.rb +0 -184
- data/lib/metanorma/document/components/multi_paragraph/quote_author_element.rb +0 -20
- data/lib/metanorma/document/components/reference_elements/source_modification.rb +0 -21
- data/lib/metanorma/document/components/reference_elements/source_origin.rb +0 -28
- data/lib/metanorma/document/components/tables/col_element.rb +0 -18
- data/lib/metanorma/document/components/tables/col_group_element.rb +0 -18
- data/lib/metanorma/document/components/tables/table_body_section.rb +0 -16
- data/lib/metanorma/document/components/tables/table_foot_section.rb +0 -16
- data/lib/metanorma/document/components/tables/table_head_section.rb +0 -16
- data/lib/metanorma/document/relaton/copyright_owner.rb +0 -16
- data/lib/metanorma/document/relaton/formatted_address.rb +0 -29
- data/lib/metanorma/document/relaton/logo_element.rb +0 -18
- data/lib/metanorma/document/relaton/region_element.rb +0 -18
- data/lib/metanorma/html/drops/biblio_entry_drop.rb +0 -50
- data/lib/metanorma/html/renderers/block_renderer.rb +0 -372
- data/lib/metanorma/html/renderers/inline_renderer.rb +0 -655
- data/lib/metanorma/html/renderers/pubid_renderer.rb +0 -69
- data/lib/metanorma/html/renderers/section_renderer.rb +0 -193
- data/lib/metanorma/html/renderers.rb +0 -8
- data/lib/metanorma/html/templates/_audio.html.liquid +0 -1
- data/lib/metanorma/html/templates/_biblio_entry.html.liquid +0 -1
- data/lib/metanorma/html/templates/_bipm_cover.html.liquid +0 -27
- data/lib/metanorma/html/templates/_boilerplate.html.liquid +0 -1
- data/lib/metanorma/html/templates/_bookmark.html.liquid +0 -1
- data/lib/metanorma/html/templates/_br.html.liquid +0 -1
- data/lib/metanorma/html/templates/_definition_list.html.liquid +0 -6
- data/lib/metanorma/html/templates/_element.html.liquid +0 -1
- data/lib/metanorma/html/templates/_fn_marker.html.liquid +0 -1
- data/lib/metanorma/html/templates/_heading.html.liquid +0 -1
- data/lib/metanorma/html/templates/_image.html.liquid +0 -1
- data/lib/metanorma/html/templates/_inline_span.html.liquid +0 -1
- data/lib/metanorma/html/templates/_link.html.liquid +0 -1
- data/lib/metanorma/html/templates/_list.html.liquid +0 -3
- data/lib/metanorma/html/templates/_list_item.html.liquid +0 -1
- data/lib/metanorma/html/templates/_main_content.html.liquid +0 -1
- data/lib/metanorma/html/templates/_math_container.html.liquid +0 -1
- data/lib/metanorma/html/templates/_paragraph.html.liquid +0 -1
- data/lib/metanorma/html/templates/_prefatory_section.html.liquid +0 -1
- data/lib/metanorma/html/templates/_pubid_identifier.html.liquid +0 -1
- data/lib/metanorma/html/templates/_quote.html.liquid +0 -4
- data/lib/metanorma/html/templates/_ref_date.html.liquid +0 -1
- data/lib/metanorma/html/templates/_ref_title.html.liquid +0 -1
- data/lib/metanorma/html/templates/_section.html.liquid +0 -5
- data/lib/metanorma/html/templates/_standard_cover.html.liquid +0 -31
- data/lib/metanorma/html/templates/_standard_doc_title.html.liquid +0 -3
- data/lib/metanorma/html/templates/_stem_span.html.liquid +0 -1
- data/lib/metanorma/html/templates/_table.html.liquid +0 -9
- data/lib/metanorma/html/templates/_term_domain.html.liquid +0 -1
- data/lib/metanorma/html/templates/_term_example.html.liquid +0 -1
- data/lib/metanorma/html/templates/_term_note.html.liquid +0 -1
- data/lib/metanorma/html/templates/_term_number.html.liquid +0 -1
- data/lib/metanorma/html/templates/_term_source.html.liquid +0 -1
- data/lib/metanorma/html/templates/_term_text_note.html.liquid +0 -1
- data/lib/metanorma/html/templates/_video.html.liquid +0 -1
- data/lib/metanorma/html/templates/_wrapped_preface.html.liquid +0 -1
- data/lib/metanorma/ietf_document/metadata/pi_settings.rb +0 -32
- data/lib/metanorma/iso_document/metadata/doctype_element.rb +0 -20
- data/lib/metanorma/iso_document/metadata/language_element.rb +0 -18
- data/lib/metanorma/iso_document/metadata/project_number.rb +0 -22
- data/lib/metanorma/iso_document/metadata/script_element.rb +0 -18
- data/lib/metanorma/iso_document/metadata/stage_element.rb +0 -26
- data/lib/metanorma/iso_document/metadata/stagename_element.rb +0 -18
- data/lib/metanorma/iso_document/terms/term_domain_element.rb +0 -18
- data/lib/metanorma/itu_document/metadata/meeting_date.rb +0 -18
- data/lib/metanorma/itu_document/metadata/meeting_element.rb +0 -18
- data/lib/metanorma/itu_document/metadata/study_period.rb +0 -18
- data/lib/metanorma/mirror/default_registry.rb +0 -170
- data/lib/metanorma/mirror/handler_registry.rb +0 -60
- data/lib/metanorma/mirror/handler_result.rb +0 -37
- data/lib/metanorma/mirror/handlers/admonition.rb +0 -18
- data/lib/metanorma/mirror/handlers/example.rb +0 -21
- data/lib/metanorma/mirror/handlers/figure.rb +0 -53
- data/lib/metanorma/mirror/handlers/formula.rb +0 -35
- data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +0 -159
- data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +0 -116
- data/lib/metanorma/mirror/handlers/inline.rb +0 -225
- data/lib/metanorma/mirror/handlers/list.rb +0 -110
- data/lib/metanorma/mirror/handlers/note.rb +0 -26
- data/lib/metanorma/mirror/handlers/paragraph.rb +0 -19
- data/lib/metanorma/mirror/handlers/quote.rb +0 -16
- data/lib/metanorma/mirror/handlers/review.rb +0 -19
- data/lib/metanorma/mirror/handlers/section.rb +0 -149
- data/lib/metanorma/mirror/handlers/sourcecode.rb +0 -27
- data/lib/metanorma/mirror/handlers/structural.rb +0 -68
- data/lib/metanorma/mirror/handlers/table.rb +0 -81
- data/lib/metanorma/mirror/handlers/term.rb +0 -100
- data/lib/metanorma/mirror/handlers.rb +0 -60
- data/lib/metanorma/mirror/id_strategy/positional.rb +0 -166
- data/lib/metanorma/mirror/id_strategy/preserve.rb +0 -12
- data/lib/metanorma/mirror/id_strategy.rb +0 -34
- data/lib/metanorma/mirror/math_util.rb +0 -53
- data/lib/metanorma/mirror/metadata.rb +0 -37
- data/lib/metanorma/mirror/metanorma_to_mirror.rb +0 -101
- data/lib/metanorma/mirror/model/container.rb +0 -47
- data/lib/metanorma/mirror/model/factory.rb +0 -52
- data/lib/metanorma/mirror/model/guide.rb +0 -25
- data/lib/metanorma/mirror/model/leaf.rb +0 -17
- data/lib/metanorma/mirror/model/mark.rb +0 -53
- data/lib/metanorma/mirror/model/node.rb +0 -47
- data/lib/metanorma/mirror/model/soft_break.rb +0 -33
- data/lib/metanorma/mirror/model/text.rb +0 -34
- data/lib/metanorma/mirror/model.rb +0 -16
- data/lib/metanorma/mirror/output/builder.rb +0 -39
- data/lib/metanorma/mirror/output/formats/base_format.rb +0 -90
- data/lib/metanorma/mirror/output/formats/inline_format.rb +0 -81
- data/lib/metanorma/mirror/output/formats.rb +0 -53
- data/lib/metanorma/mirror/output/html_renderer.rb +0 -95
- data/lib/metanorma/mirror/output/html_renderers/block_renderers.rb +0 -178
- data/lib/metanorma/mirror/output/html_renderers/inline_renderer.rb +0 -61
- data/lib/metanorma/mirror/output/html_renderers/list_renderers.rb +0 -96
- data/lib/metanorma/mirror/output/html_renderers/mark_renderers.rb +0 -64
- data/lib/metanorma/mirror/output/html_renderers/section_renderers.rb +0 -129
- data/lib/metanorma/mirror/output/html_renderers/structural_renderers.rb +0 -80
- data/lib/metanorma/mirror/output/html_renderers/table_renderers.rb +0 -87
- data/lib/metanorma/mirror/output/html_renderers.rb +0 -76
- data/lib/metanorma/mirror/output/pipeline.rb +0 -92
- data/lib/metanorma/mirror/output/pipeline_context.rb +0 -22
- data/lib/metanorma/mirror/output.rb +0 -14
- data/lib/metanorma/mirror/rewriter.rb +0 -121
- data/lib/metanorma/mirror/safe_attr.rb +0 -16
- data/lib/metanorma/mirror/serialization/json_serializer.rb +0 -25
- data/lib/metanorma/mirror/serialization/yaml_serializer.rb +0 -20
- data/lib/metanorma/mirror/serialization.rb +0 -10
- data/lib/metanorma/mirror/transformer.rb +0 -22
- data/lib/metanorma/mirror.rb +0 -32
- data/lib/metanorma/standard_document/annotation.rb +0 -37
- data/lib/metanorma/standard_document/blocks/source_origin_element.rb +0 -23
- data/lib/metanorma/standard_document/terms/term_name_element.rb +0 -29
- data/script/render_both.rb +0 -18
data/README.adoc
CHANGED
|
@@ -210,150 +210,6 @@ This library targets the modern Metanorma XML format which uses `<metanorma>` as
|
|
|
210
210
|
|
|
211
211
|
Legacy XML formats that use flavor-specific root elements (e.g. `<iso-standard>`, `<m3d-standard>`, `<csa-standard>`, `<un-standard>`) are *not supported*.
|
|
212
212
|
|
|
213
|
-
== Mirror Format
|
|
214
|
-
|
|
215
|
-
The `Metanorma::Mirror` module is a ProseMirror-style document model that captures the structural and inline content of a Metanorma document. It serves as an intermediate representation suitable for serialization, round-tripping, alternate rendering pipelines, and editor integrations.
|
|
216
|
-
|
|
217
|
-
The mirror format is fully model-driven: every node, mark, and document is an instance of a `Model` class. There are no hashes at the API boundary.
|
|
218
|
-
|
|
219
|
-
=== Model Layer
|
|
220
|
-
|
|
221
|
-
[horizontal]
|
|
222
|
-
`Model::Container` :: A node with children (`#content`)
|
|
223
|
-
`Model::Leaf` :: A node without children (e.g. `image`, `sourcecode`)
|
|
224
|
-
`Model::Text` :: Inline text carrying a string and a list of `Mark`s
|
|
225
|
-
`Model::SoftBreak` :: A soft line break inside a paragraph
|
|
226
|
-
`Model::Mark` :: An inline decoration (`emphasis`, `strong`, `link`, `xref`, `eref`, `footnote`, `stem`, ...)
|
|
227
|
-
`Model::Guide` :: Output wrapper with `content`, `meta`, and `title`
|
|
228
|
-
`Model::Factory.from_h(hash)` :: Rebuilds a model graph from a serialized hash
|
|
229
|
-
|
|
230
|
-
Each model class encapsulates its attributes via bounded accessors. `Mark` exposes `[]`, `[]=`, `set_attr`, and `fetch` for safe attribute mutation. `#to_h` is the canonical serialization method.
|
|
231
|
-
|
|
232
|
-
=== Forward Conversion (Metanorma → Mirror)
|
|
233
|
-
|
|
234
|
-
[source,ruby]
|
|
235
|
-
require "metanorma/document"
|
|
236
|
-
require "metanorma/mirror"
|
|
237
|
-
|
|
238
|
-
xml = File.read("spec/fixtures/iso/is/document-en.presentation.xml")
|
|
239
|
-
doc = Metanorma::IsoDocument::Root.from_xml(xml)
|
|
240
|
-
|
|
241
|
-
transformer = Metanorma::Mirror::Transformer.new
|
|
242
|
-
document = transformer.from_metanorma(doc)
|
|
243
|
-
document.class # => Metanorma::Mirror::Model::Container
|
|
244
|
-
|
|
245
|
-
=== Reverse Conversion (Mirror → Mirror, with Rewriting)
|
|
246
|
-
|
|
247
|
-
The `Rewriter` walks a Model graph and produces a new Model graph, applying skip rules and optional per-type customization. (The historical name `MirrorToMetanorma` is no longer accurate: the output is a Model graph, not Metanorma XML. The class was renamed to `Rewriter` to reflect this.)
|
|
248
|
-
|
|
249
|
-
[source,ruby]
|
|
250
|
-
rewriter = Metanorma::Mirror::Rewriter.new
|
|
251
|
-
rebuilt = rewriter.call(document)
|
|
252
|
-
|
|
253
|
-
Each `Rewriter` instance seeds its skip set and builder map from class-level defaults at `new` time, so two instances never share state. Instance-level mutation does not leak back to the class, and class-level mutation does not retroactively affect existing instances.
|
|
254
|
-
|
|
255
|
-
[source,ruby]
|
|
256
|
-
# Instance API — only affects this instance
|
|
257
|
-
rewriter.skip("my_type")
|
|
258
|
-
rewriter.register("my_type") do |node, _rewriter|
|
|
259
|
-
Metanorma::Mirror::Model::Leaf.new(type: "customized")
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
# Class API — seeds defaults copied into future instances
|
|
263
|
-
Metanorma::Mirror::Rewriter.skip("always_skip")
|
|
264
|
-
Metanorma::Mirror::Rewriter.register("always_customize") { |n, _r| ... }
|
|
265
|
-
|
|
266
|
-
Model dispatch is polymorphic: each `Model::*` class implements `accept_rewriter(rewriter)`, which calls the matching `rewriter#rewrite_container` / `#rewrite_leaf` / `#rewrite_text` / `#rewrite_soft_break`. There is no `case/when` on node classes in the dispatch path.
|
|
267
|
-
|
|
268
|
-
=== Default Handler Registry
|
|
269
|
-
|
|
270
|
-
`Metanorma::Mirror::DefaultRegistry.build` returns a fresh `HandlerRegistry` pre-populated with the standard Metanorma → Mirror mappings (paragraphs, blocks, lists, sections, terms, structural containers). It is the single source of truth for the default handler set — adding a new model-to-handler mapping is a single `register` call here, with no edits to `HandlerRegistry` itself.
|
|
271
|
-
|
|
272
|
-
[source,ruby]
|
|
273
|
-
Metanorma::Mirror.build_default_registry
|
|
274
|
-
# => #<Metanorma::Mirror::HandlerRegistry> (fresh instance each call)
|
|
275
|
-
|
|
276
|
-
=== Metadata Service
|
|
277
|
-
|
|
278
|
-
`Metanorma::Mirror::Metadata` is a standalone service that extracts document metadata (title, etc.) from a parsed bibdata object. It is consumed by both the forward pipeline (`Output::Pipeline::AttachMetadata`) and the forward transformer (`MetanormaToMirror#extract_root_title`), keeping title-extraction logic in one place rather than duplicated across the Handlers layer.
|
|
279
|
-
|
|
280
|
-
[source,ruby]
|
|
281
|
-
Metanorma::Mirror::Metadata.title_from_bibdata(doc.bibdata)
|
|
282
|
-
# => "First title string"
|
|
283
|
-
|
|
284
|
-
=== Serialization
|
|
285
|
-
|
|
286
|
-
Mirror documents round-trip cleanly through JSON and YAML:
|
|
287
|
-
|
|
288
|
-
[source,ruby]
|
|
289
|
-
json = Metanorma::Mirror::Serialization::JsonSerializer.serialize(document)
|
|
290
|
-
restored = Metanorma::Mirror::Serialization::JsonSerializer.deserialize(json)
|
|
291
|
-
|
|
292
|
-
=== ID Strategies
|
|
293
|
-
|
|
294
|
-
ID assignment is pluggable via `Metanorma::Mirror::IdStrategy`:
|
|
295
|
-
|
|
296
|
-
[horizontal]
|
|
297
|
-
`IdStrategy::Preserve` :: Default. Keeps element IDs as-is.
|
|
298
|
-
`IdStrategy::Positional` :: Rewrites UUID-style IDs to positional IDs (`sec-X.Y.Z`, `anx-X`, `fig-N`, `table-N`) and translates cross-reference targets.
|
|
299
|
-
|
|
300
|
-
The `Positional` strategy exposes `register_category(model_class, category)` so new flavors can declare their model classes without editing dispatch code.
|
|
301
|
-
|
|
302
|
-
=== HTML Rendering from Mirror
|
|
303
|
-
|
|
304
|
-
`Metanorma::Mirror::Output::HtmlRenderer` produces SSR-ready HTML directly from a mirror Model graph. Renderer behavior is split into pluggable modules registered by node type (`clause`, `paragraph`, `bullet_list`, `table`, ...) and by mark type (`emphasis`, `link`, `xref`, ...). All dispatch is registry-driven (no `case/when` on types), so new node and mark types can be added without modifying core rendering code.
|
|
305
|
-
|
|
306
|
-
All HTML construction goes through `Nokogiri::HTML4::Builder` (or `Nokogiri::HTML5::Builder` for full documents). String concatenation of HTML is not permitted anywhere in the renderer layer. The `HtmlRenderers` module exposes shared helpers (`build`, `build_fragment`, `embed`, `wrap`, `escape_text`) so each renderer stays declarative.
|
|
307
|
-
|
|
308
|
-
Node handlers are stored as `UnboundMethod`s bound to the renderer instance at dispatch time. Register a new node handler by passing an instance method reference:
|
|
309
|
-
|
|
310
|
-
[source,ruby]
|
|
311
|
-
module MyRenderers
|
|
312
|
-
def self.register(registry)
|
|
313
|
-
registry.register_node_handler("callout",
|
|
314
|
-
instance_method(:render_callout))
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
def render_callout(node, depth: 0)
|
|
318
|
-
HtmlRenderers.build { |doc| doc.span(class: "callout") { doc.text node.attrs["text"] } }
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
MyRenderers.register(Metanorma::Mirror::Output::HtmlRenderer)
|
|
322
|
-
|
|
323
|
-
Mark handlers are stored as `Proc`s that receive the already-rendered inner HTML and the `Mark` instance:
|
|
324
|
-
|
|
325
|
-
[source,ruby]
|
|
326
|
-
Metanorma::Mirror::Output::HtmlRenderer.register_mark_handler("kbd",
|
|
327
|
-
->(inner_html, _mark) { HtmlRenderers.wrap(:kbd, inner_html) })
|
|
328
|
-
|
|
329
|
-
=== Output Pipeline
|
|
330
|
-
|
|
331
|
-
`Metanorma::Mirror::Output::Pipeline` runs the full conversion: parse XML → forward transform → attach metadata. `Metanorma::Mirror::Output::Builder` orchestrates the pipeline and writes through a pluggable `Formats` registry (default: `InlineFormat`).
|
|
332
|
-
|
|
333
|
-
[source,ruby]
|
|
334
|
-
builder = Metanorma::Mirror::Output::Builder.new(
|
|
335
|
-
xml_path: "document.presentation.xml",
|
|
336
|
-
output_path: "output.html",
|
|
337
|
-
format: :inline,
|
|
338
|
-
flavor: "iso",
|
|
339
|
-
id_strategy: Metanorma::Mirror::IdStrategy::Positional.new,
|
|
340
|
-
)
|
|
341
|
-
builder.build
|
|
342
|
-
|
|
343
|
-
New formats register themselves without editing lookup code:
|
|
344
|
-
|
|
345
|
-
[source,ruby]
|
|
346
|
-
Metanorma::Mirror::Output::Formats.register(:pdf, MyPdfFormat)
|
|
347
|
-
|
|
348
|
-
=== CLI
|
|
349
|
-
|
|
350
|
-
[source,bash]
|
|
351
|
-
# Convert presentation XML to mirror JSON
|
|
352
|
-
metanorma-document to-mirror document.presentation.xml \
|
|
353
|
-
-o document.mirror.json \
|
|
354
|
-
--id-strategy positional \
|
|
355
|
-
--title "My Document"
|
|
356
|
-
|
|
357
213
|
== Documentation
|
|
358
214
|
|
|
359
215
|
Detailed architecture documentation is in the `docs/` directory:
|
data/Rakefile
CHANGED
|
@@ -9,18 +9,6 @@ require "rubocop/rake_task"
|
|
|
9
9
|
|
|
10
10
|
RuboCop::RakeTask.new
|
|
11
11
|
|
|
12
|
-
# Load custom tasks
|
|
13
|
-
Dir.glob("lib/tasks/*.rake").each { |task| load task }
|
|
14
|
-
|
|
15
|
-
# Build the frontend SPA (frontend/dist/)
|
|
16
|
-
desc "Build frontend SPA assets"
|
|
17
|
-
task :build_frontend do
|
|
18
|
-
frontend_dir = File.join(__dir__, "frontend")
|
|
19
|
-
puts "Building frontend..."
|
|
20
|
-
system("cd #{frontend_dir} && npm install && npm run build") || raise("Frontend build failed")
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Hook into bundler's release task to ensure frontend is built
|
|
24
|
-
Rake::Task["release"].enhance(["build_frontend"]) if Rake::Task.task_defined?("release")
|
|
25
|
-
|
|
26
12
|
task default: %i[spec rubocop]
|
|
13
|
+
|
|
14
|
+
Dir[File.join(__dir__, "tasks", "*.rake")].each { |f| import f }
|
data/bin/console
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "bundler/setup"
|
|
5
|
+
require_relative "../lib/metanorma/document"
|
|
6
|
+
|
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
9
|
+
|
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
11
|
+
# require "pry"
|
|
12
|
+
# Pry.start
|
|
13
|
+
|
|
14
|
+
require "irb"
|
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Lightbox: click images to view full-size overlay
|
|
1
|
+
// Lightbox: click images to view full-size overlay
|
|
2
2
|
(function() {
|
|
3
3
|
document.addEventListener('click', function(e) {
|
|
4
4
|
var img = e.target.closest('figure img, .doc-content img:not(.brand-logo img):not(.footer-mn-logo img)');
|
|
@@ -7,27 +7,11 @@
|
|
|
7
7
|
var overlay = document.createElement('div');
|
|
8
8
|
overlay.className = 'lightbox-overlay';
|
|
9
9
|
|
|
10
|
-
var inner = document.createElement('div');
|
|
11
|
-
inner.className = 'lightbox-inner';
|
|
12
|
-
|
|
13
10
|
var clone = document.createElement('img');
|
|
14
11
|
clone.src = img.src;
|
|
15
12
|
clone.alt = img.alt || '';
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var figure = img.closest('figure');
|
|
20
|
-
if (figure) {
|
|
21
|
-
var caption = figure.querySelector('figcaption');
|
|
22
|
-
if (caption) {
|
|
23
|
-
var captionClone = document.createElement('div');
|
|
24
|
-
captionClone.className = 'lightbox-caption';
|
|
25
|
-
captionClone.innerHTML = caption.innerHTML;
|
|
26
|
-
inner.appendChild(captionClone);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
overlay.appendChild(inner);
|
|
14
|
+
overlay.appendChild(clone);
|
|
31
15
|
document.body.appendChild(overlay);
|
|
32
16
|
overlay.addEventListener('click', function() { overlay.remove(); });
|
|
33
17
|
});
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
{ key: '/', desc: 'Search' },
|
|
8
8
|
{ key: 'j / ]', desc: 'Next section' },
|
|
9
9
|
{ key: 'k / [', desc: 'Previous section' },
|
|
10
|
-
{ key: 'Home', desc: 'Scroll to top' },
|
|
11
|
-
{ key: 'End', desc: 'Scroll to bottom' },
|
|
12
10
|
{ key: 't', desc: 'Toggle table of contents (mobile)' },
|
|
13
11
|
{ key: 'g', desc: 'Glossary' },
|
|
14
12
|
{ key: 'r', desc: 'Reading mode' },
|
|
@@ -74,14 +74,6 @@
|
|
|
74
74
|
e.preventDefault();
|
|
75
75
|
toggleReadingMode();
|
|
76
76
|
}
|
|
77
|
-
if (e.key === 'Home') {
|
|
78
|
-
e.preventDefault();
|
|
79
|
-
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
80
|
-
}
|
|
81
|
-
if (e.key === 'End') {
|
|
82
|
-
e.preventDefault();
|
|
83
|
-
window.scrollTo({ top: document.documentElement.scrollHeight, behavior: 'smooth' });
|
|
84
|
-
}
|
|
85
77
|
if (e.key === 'd') {
|
|
86
78
|
var btn = document.getElementById('theme-toggle');
|
|
87
79
|
if (btn) btn.click();
|
|
@@ -75,21 +75,21 @@
|
|
|
75
75
|
});
|
|
76
76
|
applyFontSize(getCurrentFontIdx());
|
|
77
77
|
|
|
78
|
-
// Serif toggle
|
|
78
|
+
// Serif toggle
|
|
79
79
|
var serifBtn = document.getElementById('serif-toggle');
|
|
80
|
-
var SERIF_KEY = 'metanorma-
|
|
80
|
+
var SERIF_KEY = 'metanorma-serif';
|
|
81
81
|
|
|
82
|
-
function
|
|
83
|
-
document.documentElement.classList.toggle('reader-
|
|
84
|
-
if (serifBtn) serifBtn.classList.toggle('active',
|
|
82
|
+
function applySerifMode(useSerif) {
|
|
83
|
+
document.documentElement.classList.toggle('reader-serif', useSerif);
|
|
84
|
+
if (serifBtn) serifBtn.classList.toggle('active', useSerif);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
if (serifBtn) serifBtn.addEventListener('click', function() {
|
|
88
|
-
var
|
|
89
|
-
|
|
90
|
-
R.setSetting(SERIF_KEY, (!
|
|
88
|
+
var isSerif = document.documentElement.classList.contains('reader-serif');
|
|
89
|
+
applySerifMode(!isSerif);
|
|
90
|
+
R.setSetting(SERIF_KEY, (!isSerif).toString());
|
|
91
91
|
});
|
|
92
|
-
|
|
92
|
+
applySerifMode(R.getSetting(SERIF_KEY) === 'true');
|
|
93
93
|
|
|
94
94
|
// Reading mode button
|
|
95
95
|
var readingBtn = document.getElementById('reading-mode-btn');
|
data/data/logos/pdfa-logo.svg
CHANGED
|
@@ -1,32 +1,95 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
2
|
+
<svg width="400pt" height="182.8pt" version="1.1" viewBox="0 0 400 182.8" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<defs>
|
|
4
|
+
<clipPath id="clip-0">
|
|
5
|
+
<path d="m270 52.055h36v47.945h-36z"/>
|
|
6
|
+
</clipPath>
|
|
7
|
+
<clipPath id="clip-1">
|
|
8
|
+
<path d="m311 52.055h37v47.945h-37z"/>
|
|
9
|
+
</clipPath>
|
|
10
|
+
<clipPath id="clip-2">
|
|
11
|
+
<path d="m354 52.055h30.109v47.945h-30.109z"/>
|
|
12
|
+
</clipPath>
|
|
13
|
+
<clipPath id="clip-3">
|
|
14
|
+
<path d="m211.16 112h15.836v19.09h-15.836z"/>
|
|
15
|
+
</clipPath>
|
|
16
|
+
<clipPath id="clip-4">
|
|
17
|
+
<path d="m229 112h14v19.09h-14z"/>
|
|
18
|
+
</clipPath>
|
|
19
|
+
<clipPath id="clip-5">
|
|
20
|
+
<path d="m244 112h15v19.09h-15z"/>
|
|
21
|
+
</clipPath>
|
|
22
|
+
<clipPath id="clip-6">
|
|
23
|
+
<path d="m260 112h18v19.09h-18z"/>
|
|
24
|
+
</clipPath>
|
|
25
|
+
<clipPath id="clip-7">
|
|
26
|
+
<path d="m280 112h16v19.09h-16z"/>
|
|
27
|
+
</clipPath>
|
|
28
|
+
<clipPath id="clip-8">
|
|
29
|
+
<path d="m306 112h16v19.09h-16z"/>
|
|
30
|
+
</clipPath>
|
|
31
|
+
<clipPath id="clip-9">
|
|
32
|
+
<path d="m323 107h13v24.09h-13z"/>
|
|
33
|
+
</clipPath>
|
|
34
|
+
<clipPath id="clip-10">
|
|
35
|
+
<path d="m346 112h19v19.09h-19z"/>
|
|
36
|
+
</clipPath>
|
|
37
|
+
<clipPath id="clip-11">
|
|
38
|
+
<path d="m242 52.055h17v15.945h-17z"/>
|
|
39
|
+
</clipPath>
|
|
40
|
+
<clipPath id="clip-12">
|
|
41
|
+
<path d="m211.16 83h15.836v17h-15.836z"/>
|
|
42
|
+
</clipPath>
|
|
43
|
+
<clipPath>
|
|
44
|
+
<path d="m0.066406 1h358.93v358.83h-358.93z"/>
|
|
45
|
+
</clipPath>
|
|
46
|
+
<clipPath id="clip-15">
|
|
47
|
+
<rect width="360" height="360"/>
|
|
48
|
+
</clipPath>
|
|
49
|
+
<g clip-path="url(#clip-15)"></g>
|
|
50
|
+
</defs>
|
|
51
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-0)">
|
|
52
|
+
<path d="m281.56 74.684h5.1875c5.7656 0 8.6484-2.4961 8.6484-7.4961 0-2.4492-0.76563-4.1797-2.3047-5.1875s-3.7461-1.5156-6.6289-1.5156h-4.9023zm-10.594 24.359v-46.988h16.145c2.5938 0 5.0195 0.25391 7.2773 0.75781 2.2578 0.50391 4.2266 1.3438 5.9102 2.5195 1.6797 1.1797 3.0117 2.7383 4 4.6875 0.98438 1.9453 1.4766 4.3359 1.4766 7.168 0 2.7383-0.49218 5.1172-1.4766 7.1367-0.98828 2.0156-2.3203 3.6719-4 4.9727-1.6836 1.2969-3.6289 2.2578-5.8359 2.8828-2.2148 0.625-4.5664 0.93359-7.0664 0.93359h-5.8359v15.93z"/>
|
|
53
|
+
</g>
|
|
54
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-1)">
|
|
55
|
+
<path d="m321.63 90.465h2.0195c2.0156 0 3.8438-0.26172 5.4766-0.79297 1.6328-0.52734 3.0273-1.3789 4.1797-2.5586 1.1523-1.1758 2.0547-2.7266 2.7031-4.6484 0.64844-1.918 0.97266-4.2969 0.97266-7.1328 0-2.7852-0.32422-5.1289-0.97266-7.0273-0.64844-1.8984-1.5508-3.4102-2.7031-4.5391-1.1524-1.1289-2.5469-1.9336-4.1797-2.4141-1.6328-0.48047-3.4609-0.71875-5.4766-0.71875h-2.0195zm-10.594 8.5742v-46.984h13.262c3.6055 0 6.8477 0.45703 9.7305 1.3711 2.8789 0.91016 5.3555 2.3164 7.4219 4.2148 2.0625 1.8984 3.6484 4.3125 4.7539 7.2422 1.1055 2.9297 1.6602 6.4141 1.6602 10.449 0 4.0352-0.55469 7.543-1.6602 10.52-1.1055 2.9805-2.6641 5.4414-4.6836 7.3867-2.0195 1.9492-4.4297 3.4023-7.2422 4.3594-2.8125 0.96484-5.9453 1.4414-9.4023 1.4414z"/>
|
|
56
|
+
</g>
|
|
57
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-2)">
|
|
58
|
+
<path d="m354.49 99.039v-46.984h29.617v8.9375h-19.023v10.879h16.285v8.9375h-16.285v18.23z"/>
|
|
59
|
+
</g>
|
|
60
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-3)">
|
|
61
|
+
<path d="m218.09 127.8c0.73047 0 1.3945-0.16797 1.9922-0.51172 0.59765-0.33985 1.2383-0.82813 1.9219-1.4648v-4.0195c-1.2226 0.14453-2.2461 0.33985-3.0742 0.58203-0.82812 0.2461-1.5 0.51953-2.0117 0.82422-0.51171 0.30469-0.875 0.65235-1.0976 1.043-0.21875 0.39063-0.32813 0.80469-0.32813 1.2422 0 0.80469 0.2461 1.3906 0.73047 1.7539 0.48828 0.36719 1.1094 0.55079 1.8672 0.55079m-1.3516 3.293c-1.5859 0-2.8672-0.48437-3.8398-1.4453-0.97656-0.96484-1.4648-2.2383-1.4648-3.8242 0-0.94922 0.19922-1.7969 0.60547-2.5391 0.40234-0.74609 1.0352-1.3867 1.8984-1.9219 0.86718-0.53516 1.9648-0.98829 3.293-1.3516 1.3281-0.36718 2.918-0.64453 4.7734-0.84375-0.0273-0.46093-0.0937-0.90625-0.20312-1.332-0.10938-0.42578-0.29297-0.80469-0.54688-1.1328-0.25781-0.33203-0.59375-0.58594-1.0078-0.76953-0.41406-0.1836-0.92578-0.27344-1.5352-0.27344-0.8789 0-1.7383 0.16797-2.5781 0.51172-0.83985 0.33984-1.6641 0.75391-2.4688 1.2422l-1.5352-2.8164c1-0.63281 2.1211-1.1836 3.3633-1.6445 1.2461-0.46484 2.5859-0.69531 4.0234-0.69531 2.2422 0 3.918 0.66797 5.0273 1.9922 1.1094 1.332 1.6641 3.25 1.6641 5.7617v10.641h-3.4727l-0.29297-1.9727h-0.14844c-0.80078 0.67969-1.6602 1.2539-2.5781 1.7188-0.91406 0.46094-1.9062 0.69531-2.9766 0.69531"/>
|
|
62
|
+
</g>
|
|
63
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-4)">
|
|
64
|
+
<path d="m235.9 131.09c-1.2422 0-2.4688-0.23828-3.6758-0.71484s-2.2461-1.0664-3.125-1.7734l1.9727-2.707c0.80469 0.63672 1.6055 1.1289 2.3984 1.4805 0.78906 0.35547 1.6484 0.53125 2.5781 0.53125 0.97266 0 1.6914-0.19922 2.1562-0.60156 0.46094-0.40235 0.69531-0.92188 0.69531-1.5547 0-0.36719-0.10937-0.69141-0.32812-0.96875-0.22266-0.28125-0.51563-0.53125-0.87891-0.75-0.36719-0.22266-0.78125-0.42187-1.2422-0.60547-0.46484-0.18359-0.92968-0.37109-1.3906-0.5664-0.58594-0.21875-1.1836-0.47657-1.793-0.76563-0.60937-0.29297-1.1523-0.64844-1.625-1.0625-0.47656-0.41406-0.86719-0.89453-1.1719-1.4453-0.30469-0.54688-0.45704-1.1992-0.45704-1.957 0-1.582 0.58594-2.875 1.7539-3.875 1.1719-1 2.7695-1.5 4.793-1.5 1.2422 0 2.3633 0.21875 3.3633 0.66015 1 0.4375 1.8633 0.9375 2.5977 1.5l-1.9414 2.5586c-0.63281-0.46485-1.2734-0.83594-1.918-1.1172-0.64453-0.27734-1.3203-0.41797-2.0312-0.41797-0.90234 0-1.5664 0.1875-1.9922 0.56641-0.42578 0.3789-0.64062 0.84765-0.64062 1.4062 0 0.36718 0.10547 0.67578 0.3125 0.93359s0.48047 0.48047 0.82422 0.67578c0.33984 0.19531 0.73437 0.37891 1.1875 0.54688 0.44922 0.17187 0.91797 0.34375 1.4062 0.51562 0.60937 0.21875 1.2188 0.46875 1.8281 0.75 0.60938 0.27735 1.1641 0.625 1.6641 1.0391 0.5 0.41797 0.90234 0.92188 1.207 1.5195 0.30468 0.59765 0.45703 1.3125 0.45703 2.1406 0 0.77734-0.15235 1.5039-0.45703 2.1758-0.30469 0.66797-0.75 1.2539-1.332 1.7539-0.58594 0.5-1.3164 0.89453-2.1953 1.1875-0.8789 0.29297-1.8789 0.4414-3 0.4414"/>
|
|
65
|
+
</g>
|
|
66
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-5)">
|
|
67
|
+
<path d="m251.66 131.09c-1.2422 0-2.4688-0.23828-3.6758-0.71484s-2.2461-1.0664-3.125-1.7734l1.9727-2.707c0.80468 0.63672 1.6055 1.1289 2.3984 1.4805 0.78907 0.35547 1.6484 0.53125 2.5781 0.53125 0.97266 0 1.6914-0.19922 2.1562-0.60156 0.46094-0.40235 0.69531-0.92188 0.69531-1.5547 0-0.36719-0.10937-0.69141-0.32812-0.96875-0.22266-0.28125-0.51563-0.53125-0.87891-0.75-0.36719-0.22266-0.78125-0.42187-1.2422-0.60547-0.46484-0.18359-0.92968-0.37109-1.3906-0.5664-0.58594-0.21875-1.1836-0.47657-1.793-0.76563-0.60938-0.29297-1.1523-0.64844-1.625-1.0625-0.47656-0.41406-0.86719-0.89453-1.1719-1.4453-0.30468-0.54688-0.45703-1.1992-0.45703-1.957 0-1.582 0.58594-2.875 1.7539-3.875 1.1719-1 2.7695-1.5 4.793-1.5 1.2422 0 2.3633 0.21875 3.3633 0.66015 1 0.4375 1.8633 0.9375 2.5977 1.5l-1.9414 2.5586c-0.63281-0.46485-1.2734-0.83594-1.918-1.1172-0.64453-0.27734-1.3242-0.41797-2.0312-0.41797-0.90234 0-1.5664 0.1875-1.9922 0.56641-0.42578 0.3789-0.64062 0.84765-0.64062 1.4062 0 0.36718 0.10547 0.67578 0.3125 0.93359s0.48047 0.48047 0.82422 0.67578c0.33984 0.19531 0.73437 0.37891 1.1875 0.54688 0.44922 0.17187 0.91797 0.34375 1.4062 0.51562 0.60937 0.21875 1.2188 0.46875 1.8281 0.75 0.60938 0.27735 1.1641 0.625 1.6641 1.0391 0.5 0.41797 0.90235 0.92188 1.207 1.5195 0.30468 0.59765 0.45703 1.3125 0.45703 2.1406 0 0.77734-0.15235 1.5039-0.45703 2.1758-0.30469 0.66797-0.75 1.2539-1.332 1.7539-0.58593 0.5-1.3164 0.89453-2.1953 1.1875-0.8789 0.29297-1.8789 0.4414-3 0.4414"/>
|
|
68
|
+
</g>
|
|
69
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-6)">
|
|
70
|
+
<path d="m269.36 127.65c1.3164 0 2.3555-0.54296 3.1094-1.6289 0.75781-1.0859 1.1328-2.5312 1.1328-4.332 0-1.832-0.375-3.2852-1.1328-4.3711-0.75391-1.0859-1.793-1.6289-3.1094-1.6289s-2.3438 0.54297-3.0898 1.6289c-0.74219 1.0859-1.1133 2.5391-1.1133 4.3711 0 1.8008 0.37109 3.2461 1.1133 4.332 0.74609 1.0859 1.7734 1.6289 3.0898 1.6289m0 3.4375c-1.1211 0-2.1914-0.20703-3.2148-0.62109-1.0274-0.41797-1.9336-1.0273-2.7266-1.8281-0.79296-0.80859-1.418-1.793-1.8828-2.9648-0.46484-1.168-0.69531-2.5-0.69531-3.9844 0-1.4883 0.23047-2.8164 0.69531-3.9883 0.46485-1.168 1.0898-2.1562 1.8828-2.9609 0.79297-0.80469 1.6992-1.4219 2.7266-1.8477 1.0234-0.42578 2.0938-0.64062 3.2148-0.64062s2.2031 0.21484 3.2383 0.64062c1.0352 0.42578 1.9453 1.043 2.7227 1.8477 0.78125 0.80469 1.4102 1.793 1.8867 2.9609 0.47265 1.1719 0.71093 2.5 0.71093 3.9883 0 1.4844-0.23828 2.8164-0.71093 3.9844-0.47657 1.1719-1.1055 2.1562-1.8867 2.9648-0.77735 0.80079-1.6875 1.4102-2.7227 1.8281-1.0352 0.41406-2.1172 0.62109-3.2383 0.62109"/>
|
|
71
|
+
</g>
|
|
72
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-7)">
|
|
73
|
+
<path d="m289.19 131.09c-1.2188 0-2.3594-0.21093-3.4219-0.625-1.0586-0.41406-1.9805-1.0234-2.7578-1.8281-0.78125-0.80078-1.3906-1.7891-1.832-2.9609-0.4375-1.1719-0.65625-2.5-0.65625-3.9844 0-1.4883 0.24219-2.8164 0.73047-3.9883 0.48828-1.168 1.1445-2.1562 1.9766-2.9609 0.82813-0.80469 1.7852-1.4219 2.8711-1.8477 1.082-0.42578 2.2226-0.64062 3.418-0.64062 1.1719 0 2.1758 0.19531 3.0156 0.58593 0.83984 0.39063 1.5898 0.86719 2.25 1.4258l-2.0469 2.7422c-0.48828-0.41406-0.96875-0.73828-1.4453-0.96875s-0.99219-0.34765-1.5547-0.34765c-1.4609 0-2.6445 0.54297-3.5469 1.6289-0.90234 1.0859-1.3516 2.5391-1.3516 4.3711 0 1.8047 0.4414 3.2461 1.332 4.332 0.89062 1.0859 2.043 1.6289 3.457 1.6289 0.70703 0 1.3711-0.15234 1.9922-0.46093 0.62109-0.30078 1.1875-0.66016 1.6992-1.0742l1.7188 2.7773c-0.85157 0.73047-1.7852 1.2812-2.7969 1.6445-1.0117 0.36719-2.0273 0.55078-3.0508 0.55078"/>
|
|
74
|
+
</g>
|
|
75
|
+
<path d="m201.26 140.24h9.7213v41.532h-9.7213zm4.9058-7.2729c-1.7527 0-3.1892-0.50594-4.3186-1.5178-1.1293-1.0209-1.6895-2.34-1.6895-3.9752s0.56014-2.9724 1.6895-4.0204c1.1293-1.039 2.5658-1.563 4.3186-1.563 1.7437 0 3.1802 0.52402 4.3095 1.563 1.1293 1.048 1.6895 2.3852 1.6895 4.0204s-0.56014 2.9543-1.6895 3.9752c-1.1293 1.0119-2.5658 1.5178-4.3095 1.5178" stroke-width="2.3129"/>
|
|
76
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-8)">
|
|
77
|
+
<path d="m313.1 127.8c0.73438 0 1.3945-0.16797 1.9922-0.51172 0.59766-0.33985 1.2383-0.82813 1.9219-1.4648v-4.0195c-1.2188 0.14453-2.2461 0.33985-3.0703 0.58203-0.83203 0.2461-1.5 0.51953-2.0156 0.82422-0.50782 0.30469-0.875 0.65235-1.0938 1.043-0.21875 0.39063-0.33203 0.80469-0.33203 1.2422 0 0.80469 0.24609 1.3906 0.73437 1.7539 0.48438 0.36719 1.1094 0.55079 1.8633 0.55079m-1.3516 3.293c-1.5859 0-2.8672-0.48437-3.8398-1.4453-0.97657-0.96484-1.4648-2.2383-1.4648-3.8242 0-0.94922 0.20313-1.7969 0.60547-2.5391 0.40234-0.74609 1.0352-1.3867 1.9023-1.9219 0.86329-0.53516 1.9609-0.98829 3.2891-1.3516 1.3281-0.36718 2.9219-0.64453 4.7734-0.84375-0.0234-0.46093-0.0898-0.90625-0.20312-1.332-0.10938-0.42578-0.28906-0.80469-0.54688-1.1328-0.2539-0.33203-0.58984-0.58594-1.0039-0.76953-0.41797-0.1836-0.92969-0.27344-1.5391-0.27344-0.875 0-1.7344 0.16797-2.5781 0.51172-0.83984 0.33984-1.6641 0.75391-2.4688 1.2422l-1.5352-2.8164c1-0.63281 2.1211-1.1836 3.3633-1.6445 1.2461-0.46484 2.5859-0.69531 4.0234-0.69531 2.2422 0 3.9219 0.66797 5.0312 1.9922 1.1094 1.332 1.6602 3.25 1.6602 5.7617v10.641h-3.4727l-0.29297-1.9727h-0.14453c-0.80468 0.67969-1.6641 1.2539-2.5781 1.7188-0.91406 0.46094-1.9062 0.69531-2.9805 0.69531"/>
|
|
78
|
+
</g>
|
|
79
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-9)">
|
|
80
|
+
<path d="m332.01 131.09c-1.0469 0-1.9297-0.16015-2.6484-0.47656s-1.3047-0.76172-1.7578-1.3359c-0.44922-0.57031-0.78125-1.2539-0.98828-2.0469s-0.30859-1.6758-0.30859-2.6523v-8.5586h-2.5586v-3.1445l2.7774-0.18359 0.51172-4.8984h3.5117v4.8984h4.5703v3.3281h-4.5703v8.5586c0 2.0976 0.83985 3.1445 2.5234 3.1445 0.31641 0 0.64063-0.0352 0.96875-0.10938 0.32813-0.0703 0.62891-0.16797 0.89453-0.29297l0.73047 3.1094c-0.48437 0.17187-1.0391 0.32422-1.6602 0.45703-0.625 0.13281-1.2891 0.20312-1.9961 0.20312"/>
|
|
81
|
+
</g>
|
|
82
|
+
<path d="m295.4 140.24h9.7303v41.532h-9.7303zm4.9148-7.2729c-1.7527 0-3.1892-0.50594-4.3186-1.5178-1.1293-1.0209-1.6895-2.34-1.6895-3.9752s0.56015-2.9724 1.6895-4.0204c1.1293-1.039 2.5658-1.563 4.3186-1.563 1.7437 0 3.1802 0.52402 4.3095 1.563 1.1293 1.048 1.6895 2.3852 1.6895 4.0204s-0.56014 2.9543-1.6895 3.9752c-1.1293 1.0119-2.5658 1.5178-4.3095 1.5178" stroke-width="2.3129"/>
|
|
83
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-10)">
|
|
84
|
+
<path d="m355.45 127.65c1.3164 0 2.3516-0.54296 3.1094-1.6289 0.75391-1.0859 1.1328-2.5312 1.1328-4.332 0-1.832-0.37891-3.2852-1.1328-4.3711-0.75781-1.0859-1.793-1.6289-3.1094-1.6289-1.3164 0-2.3477 0.54297-3.0898 1.6289-0.74218 1.0859-1.1133 2.5391-1.1133 4.3711 0 1.8008 0.3711 3.2461 1.1133 4.332 0.74219 1.0859 1.7734 1.6289 3.0898 1.6289m0 3.4375c-1.1211 0-2.1953-0.20703-3.2148-0.62109-1.0273-0.41797-1.9336-1.0273-2.7266-1.8281-0.79297-0.80859-1.4219-1.793-1.8828-2.9648-0.46484-1.168-0.69531-2.5-0.69531-3.9844 0-1.4883 0.23047-2.8164 0.69531-3.9883 0.46094-1.168 1.0898-2.1562 1.8828-2.9609s1.6992-1.4219 2.7266-1.8477c1.0195-0.42578 2.0938-0.64062 3.2148-0.64062 1.1211 0 2.2031 0.21484 3.2383 0.64062s1.9453 1.043 2.7227 1.8477c0.78125 0.80469 1.4102 1.793 1.8828 2.9609 0.47656 1.1719 0.71484 2.5 0.71484 3.9883 0 1.4844-0.23828 2.8164-0.71484 3.9844-0.47266 1.1719-1.1016 2.1562-1.8828 2.9648-0.77735 0.80079-1.6875 1.4102-2.7227 1.8281-1.0352 0.41406-2.1172 0.62109-3.2383 0.62109"/>
|
|
85
|
+
</g>
|
|
86
|
+
<path d="m361.21 181.78v-41.523h8.0318l0.67759 5.5834h0.34332c1.8611-1.8069 3.8759-3.3609 6.0442-4.6619 2.1683-1.292 4.698-1.9424 7.571-1.9424 4.4541 0 7.6975 1.4275 9.7213 4.2734 2.0328 2.8459 3.0537 6.9205 3.0537 12.224v26.047h-9.7303v-24.782c0-3.4332-0.50594-5.8635-1.5268-7.2729-1.0119-1.4094-2.6743-2.1141-4.9871-2.1141-1.8069 0-3.397 0.4427-4.7793 1.31-1.3823 0.87636-2.9453 2.1593-4.689 3.8488v29.01z" stroke-width="2.3129"/>
|
|
87
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-11)">
|
|
88
|
+
<path d="m258.19 67.793h-15.676v-15.672h15.676z" fill="#cf9c1d"/>
|
|
89
|
+
</g>
|
|
90
|
+
<path d="m72.503 72.657h-36.247v-36.256h36.247z" fill="#959b54" stroke-width="2.3129"/>
|
|
91
|
+
<g transform="matrix(2.3129 0 0 2.3129 -488.39 -120.4)" clip-path="url(#clip-12)">
|
|
92
|
+
<path d="m226.84 99.141h-15.676v-15.672h15.676z" fill="#d03544"/>
|
|
93
|
+
</g>
|
|
94
|
+
<path d="m108.76 108.9h-36.256v-36.247h36.256z" fill="#4992b2" stroke-width="2.3129"/>
|
|
95
|
+
</svg>
|
|
@@ -22,9 +22,9 @@ body {
|
|
|
22
22
|
/* Font size scaling — applied to doc-content only, not header/sidebar */
|
|
23
23
|
.doc-content { font-size: calc(1em * var(--reader-font-scale)); }
|
|
24
24
|
|
|
25
|
-
/* Serif
|
|
26
|
-
.reader-
|
|
27
|
-
--font-body:
|
|
25
|
+
/* Serif mode override — swaps font-body to a serif stack */
|
|
26
|
+
.reader-serif {
|
|
27
|
+
--font-body: "Source Serif 4", "Noto Serif", Georgia, "Times New Roman", serif;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/* Skip navigation link */
|
|
@@ -33,6 +33,11 @@ p {
|
|
|
33
33
|
hanging-punctuation: first last;
|
|
34
34
|
orphans: 3; widows: 3;
|
|
35
35
|
}
|
|
36
|
+
.doc-content p + p { text-indent: 1.5em; margin-top: -0.3em; }
|
|
37
|
+
h1 + p, h2 + p, h3 + p, blockquote + p, figure + p, table + p,
|
|
38
|
+
.note-block p + p, .example p + p,
|
|
39
|
+
div[id^="term-"] p + p,
|
|
40
|
+
.norm-ref-entry, .biblio-entry { text-indent: 0; }
|
|
36
41
|
|
|
37
42
|
a {
|
|
38
43
|
color: var(--mn-primary);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
border-bottom: 1px solid var(--color-border);
|
|
13
13
|
}
|
|
14
14
|
.norm-ref-entry:last-child { border-bottom-color: transparent; }
|
|
15
|
-
.
|
|
16
|
-
.ref-
|
|
15
|
+
.ref-doc-number { font-weight: 500; color: var(--mn-primary); font-family: var(--font-sans); }
|
|
16
|
+
.ref-year { font-weight: 500; }
|
|
17
17
|
.biblio-link { color: inherit; text-decoration: none; }
|
|
18
|
-
.biblio-link:hover
|
|
18
|
+
.biblio-link:hover { color: var(--mn-primary); text-decoration: underline; }
|
|
@@ -59,11 +59,9 @@
|
|
|
59
59
|
display: inline-flex;
|
|
60
60
|
align-items: center;
|
|
61
61
|
justify-content: center;
|
|
62
|
-
background: rgba(255,255,255,0.92);
|
|
63
|
-
border-radius: var(--radius-sm);
|
|
64
|
-
padding: 0.2em 0.4em;
|
|
65
62
|
}
|
|
66
63
|
.cover-logo svg { height: 40px; width: auto; max-width: 120px; }
|
|
64
|
+
.cover-logo svg path { fill: #fff; }
|
|
67
65
|
.cover-body {
|
|
68
66
|
display: flex;
|
|
69
67
|
flex-direction: column;
|
|
@@ -19,24 +19,12 @@ figcaption .caption-label { vertical-align: middle; }
|
|
|
19
19
|
cursor: zoom-out;
|
|
20
20
|
animation: lightboxIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
|
|
21
21
|
}
|
|
22
|
-
.lightbox-inner {
|
|
23
|
-
display: flex; flex-direction: column;
|
|
24
|
-
align-items: center; max-width: 90vw; max-height: 90vh;
|
|
25
|
-
}
|
|
26
22
|
.lightbox-overlay img {
|
|
27
|
-
max-width: 90vw; max-height:
|
|
23
|
+
max-width: 90vw; max-height: 82vh;
|
|
28
24
|
object-fit: contain; border-radius: var(--radius-md);
|
|
29
25
|
box-shadow: 0 12px 56px rgba(0,0,0,0.6);
|
|
30
26
|
animation: lightboxImgIn 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
31
27
|
}
|
|
32
|
-
.lightbox-caption {
|
|
33
|
-
margin-top: 1em;
|
|
34
|
-
font-style: italic; font-size: 0.9em;
|
|
35
|
-
color: rgba(255, 255, 255, 0.75);
|
|
36
|
-
font-family: var(--font-sans);
|
|
37
|
-
text-align: center;
|
|
38
|
-
max-width: 600px;
|
|
39
|
-
}
|
|
40
28
|
|
|
41
29
|
.doc-content figure img { cursor: zoom-in; transition: transform var(--transition-fast), box-shadow var(--transition-fast); }
|
|
42
30
|
.doc-content figure img:hover { transform: scale(1.01); box-shadow: var(--shadow-md); }
|
|
@@ -6,17 +6,6 @@ a.fn-link {
|
|
|
6
6
|
a.fn-link:hover {
|
|
7
7
|
color: var(--mn-primary);
|
|
8
8
|
}
|
|
9
|
-
.fn-marker {
|
|
10
|
-
position: relative;
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
}
|
|
13
|
-
.fn-marker .fn-link {
|
|
14
|
-
vertical-align: inherit;
|
|
15
|
-
font-size: inherit;
|
|
16
|
-
}
|
|
17
|
-
.fn-marker .fn-popup {
|
|
18
|
-
display: none;
|
|
19
|
-
}
|
|
20
9
|
.footnotes-section {
|
|
21
10
|
margin-top: 3em;
|
|
22
11
|
padding-top: 1.5em;
|
|
@@ -30,72 +19,23 @@ a.fn-link:hover {
|
|
|
30
19
|
letter-spacing: 0.05em;
|
|
31
20
|
text-transform: uppercase;
|
|
32
21
|
}
|
|
33
|
-
.footnotes {
|
|
22
|
+
ol.footnotes {
|
|
23
|
+
list-style: decimal;
|
|
24
|
+
padding-left: 2em;
|
|
34
25
|
font-size: 0.88em;
|
|
35
26
|
color: var(--color-text-light);
|
|
36
27
|
}
|
|
37
|
-
.footnotes
|
|
28
|
+
ol.footnotes li {
|
|
38
29
|
margin: 0.4em 0;
|
|
39
|
-
|
|
40
|
-
.footnote-label {
|
|
41
|
-
font-weight: 600;
|
|
42
|
-
color: var(--mn-primary);
|
|
43
|
-
font-family: var(--font-sans);
|
|
44
|
-
margin-right: 0.3em;
|
|
30
|
+
padding-left: 0.3em;
|
|
45
31
|
}
|
|
46
32
|
a.footnote-backref {
|
|
47
33
|
text-decoration: none;
|
|
48
34
|
color: var(--mn-primary);
|
|
49
35
|
font-weight: 600;
|
|
50
|
-
margin-right: 0.3em;
|
|
51
|
-
}
|
|
52
|
-
.footnote-arrival {
|
|
53
|
-
background: var(--mn-primary-light);
|
|
54
|
-
border-radius: var(--radius-sm);
|
|
55
|
-
transition: background 0.3s;
|
|
56
36
|
}
|
|
57
37
|
.formula-where {
|
|
58
38
|
font-style: italic;
|
|
59
39
|
font-size: 0.95em;
|
|
60
40
|
margin: 0.5em 0 0;
|
|
61
41
|
}
|
|
62
|
-
|
|
63
|
-
/* === Slide-up annotation pane === */
|
|
64
|
-
.fn-annotation-pane {
|
|
65
|
-
position: fixed;
|
|
66
|
-
bottom: 0;
|
|
67
|
-
left: 0;
|
|
68
|
-
right: 0;
|
|
69
|
-
z-index: 200;
|
|
70
|
-
background: var(--color-bg);
|
|
71
|
-
border-top: 2px solid var(--mn-primary);
|
|
72
|
-
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
|
|
73
|
-
max-height: 40vh;
|
|
74
|
-
transform: translateY(100%);
|
|
75
|
-
transition: transform 0.25s ease;
|
|
76
|
-
pointer-events: none;
|
|
77
|
-
font-family: var(--font-sans);
|
|
78
|
-
font-size: 0.9em;
|
|
79
|
-
line-height: 1.6;
|
|
80
|
-
color: var(--color-text);
|
|
81
|
-
}
|
|
82
|
-
.fn-annotation-pane.visible {
|
|
83
|
-
transform: translateY(0);
|
|
84
|
-
pointer-events: auto;
|
|
85
|
-
}
|
|
86
|
-
.fn-annotation-header {
|
|
87
|
-
padding: 0.5em 1em;
|
|
88
|
-
border-bottom: 1px solid var(--color-border);
|
|
89
|
-
display: flex;
|
|
90
|
-
align-items: center;
|
|
91
|
-
}
|
|
92
|
-
.fn-annotation-label {
|
|
93
|
-
font-weight: 600;
|
|
94
|
-
color: var(--mn-primary);
|
|
95
|
-
font-size: 0.85em;
|
|
96
|
-
}
|
|
97
|
-
.fn-annotation-body {
|
|
98
|
-
padding: 0.6em 1em 1em;
|
|
99
|
-
overflow-y: auto;
|
|
100
|
-
max-height: calc(40vh - 2.5em);
|
|
101
|
-
}
|