metanorma-standoc 1.9.3 → 1.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +3 -13
  3. data/.hound.yml +3 -1
  4. data/.rubocop.yml +4 -6
  5. data/lib/asciidoctor/standoc/base.rb +3 -1
  6. data/lib/asciidoctor/standoc/blocks.rb +1 -1
  7. data/lib/asciidoctor/standoc/cleanup.rb +1 -2
  8. data/lib/asciidoctor/standoc/cleanup_block.rb +0 -1
  9. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +2 -2
  10. data/lib/asciidoctor/standoc/cleanup_footnotes.rb +0 -1
  11. data/lib/asciidoctor/standoc/cleanup_inline.rb +117 -77
  12. data/lib/asciidoctor/standoc/cleanup_maths.rb +0 -1
  13. data/lib/asciidoctor/standoc/cleanup_ref.rb +7 -0
  14. data/lib/asciidoctor/standoc/cleanup_section.rb +13 -81
  15. data/lib/asciidoctor/standoc/cleanup_section_names.rb +75 -0
  16. data/lib/asciidoctor/standoc/cleanup_terms.rb +19 -18
  17. data/lib/asciidoctor/standoc/converter.rb +1 -0
  18. data/lib/asciidoctor/standoc/front.rb +0 -1
  19. data/lib/asciidoctor/standoc/front_contributor.rb +66 -42
  20. data/lib/asciidoctor/standoc/inline.rb +45 -34
  21. data/lib/asciidoctor/standoc/isodoc.rng +65 -7
  22. data/lib/asciidoctor/standoc/macros.rb +7 -5
  23. data/lib/asciidoctor/standoc/macros_plantuml.rb +21 -23
  24. data/lib/asciidoctor/standoc/macros_terms.rb +60 -23
  25. data/lib/asciidoctor/standoc/section.rb +19 -12
  26. data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +69 -30
  27. data/lib/asciidoctor/standoc/terms.rb +1 -1
  28. data/lib/asciidoctor/standoc/utils.rb +0 -1
  29. data/lib/asciidoctor/standoc/validate.rb +22 -8
  30. data/lib/isodoc/html/html_titlepage.html +81 -0
  31. data/lib/isodoc/html/htmlstyle.css +983 -0
  32. data/lib/isodoc/html/htmlstyle.scss +714 -0
  33. data/lib/isodoc/html/scripts.html +71 -0
  34. data/lib/metanorma/standoc/processor.rb +16 -7
  35. data/lib/metanorma/standoc/version.rb +1 -1
  36. data/metanorma-standoc.gemspec +2 -2
  37. data/spec/asciidoctor/base_spec.rb +693 -553
  38. data/spec/asciidoctor/blocks_spec.rb +6 -6
  39. data/spec/asciidoctor/cleanup_spec.rb +899 -688
  40. data/spec/asciidoctor/inline_spec.rb +62 -14
  41. data/spec/asciidoctor/isobib_cache_spec.rb +4 -6
  42. data/spec/asciidoctor/lists_spec.rb +147 -135
  43. data/spec/asciidoctor/macros_json2text_spec.rb +1 -1
  44. data/spec/asciidoctor/macros_spec.rb +714 -168
  45. data/spec/asciidoctor/refs_spec.rb +1527 -1532
  46. data/spec/asciidoctor/validate_spec.rb +352 -304
  47. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +51 -51
  48. data/spec/vcr_cassettes/isobib_get_123.yml +14 -14
  49. data/spec/vcr_cassettes/isobib_get_123_1.yml +27 -27
  50. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +36 -36
  51. data/spec/vcr_cassettes/isobib_get_123_2001.yml +12 -12
  52. data/spec/vcr_cassettes/isobib_get_124.yml +13 -13
  53. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
  54. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +46 -46
  55. metadata +10 -5
@@ -12,7 +12,7 @@ module Asciidoctor
12
12
  def sectiontype1(node)
13
13
  node&.attr("heading")&.downcase ||
14
14
  node.title.gsub(%r{<index>.*?</index>}m, "").gsub(/<[^>]+>/, "")
15
- .strip.downcase
15
+ .strip.downcase
16
16
  end
17
17
 
18
18
  def sectiontype(node, level = true)
@@ -21,6 +21,7 @@ module Asciidoctor
21
21
  return ret1 if "symbols and abbreviated terms" == ret1
22
22
  return nil unless !level || node.level == 1
23
23
  return nil if @seen_headers.include? ret
24
+
24
25
  @seen_headers << ret
25
26
  ret1
26
27
  end
@@ -48,11 +49,14 @@ module Asciidoctor
48
49
  script: node.attributes["script"],
49
50
  number: node.attributes["number"],
50
51
  type: node.attributes["type"],
51
- annex: ( ((node.attr("style") == "appendix" || node.role == "appendix") &&
52
- node.level == 1) ? true : nil),
53
- preface: (
54
- (node.role == "preface" || node.attr("style") == "preface") ? true : nil) }
52
+ annex: (if (node.attr("style") == "appendix" || node.role == "appendix") &&
53
+ node.level == 1
54
+ true
55
+ end),
56
+ preface: (
57
+ node.role == "preface" || node.attr("style") == "preface" ? true : nil) }
55
58
  return ret unless node.attributes["change"]
59
+
56
60
  ret.merge(change: node.attributes["change"],
57
61
  path: node.attributes["path"],
58
62
  path_end: node.attributes["path_end"],
@@ -75,7 +79,7 @@ module Asciidoctor
75
79
  symbols_parse(symbols_attrs(node, a), xml, node)
76
80
  when "acknowledgements"
77
81
  acknowledgements_parse(a, xml, node)
78
- when "bibliography"
82
+ when "bibliography"
79
83
  bibliography_parse(a, xml, node)
80
84
  else
81
85
  if @term_def then term_def_subclause_parse(a, xml, node)
@@ -88,9 +92,9 @@ module Asciidoctor
88
92
  bibliography_parse(a, xml, node)
89
93
  elsif node.attr("style") == "bibliography"
90
94
  bibliography_parse(a, xml, node)
91
- elsif node.attr("style") == "abstract"
95
+ elsif node.attr("style") == "abstract"
92
96
  abstract_parse(a, xml, node)
93
- elsif node.attr("style") == "index"
97
+ elsif node.attr("style") == "index"
94
98
  indexsect_parse(a, xml, node)
95
99
  elsif node.attr("style") == "appendix" && node.level == 1
96
100
  annex_parse(a, xml, node)
@@ -102,10 +106,13 @@ module Asciidoctor
102
106
  end
103
107
 
104
108
  def set_obligation(attrs, node)
105
- attrs[:obligation] = node.attributes.has_key?("obligation") ?
106
- node.attr("obligation") :
107
- node.parent.attributes.has_key?("obligation") ?
108
- node.parent.attr("obligation") : "normative"
109
+ attrs[:obligation] = if node.attributes.has_key?("obligation")
110
+ node.attr("obligation")
111
+ elsif node.parent.attributes.has_key?("obligation")
112
+ node.parent.attr("obligation")
113
+ else
114
+ "normative"
115
+ end
109
116
  end
110
117
 
111
118
  def preamble(node)
@@ -3,18 +3,17 @@
3
3
  module Asciidoctor
4
4
  module Standoc
5
5
  # Intelligent term lookup xml modifier
6
- # Lookup all `term` and `calause` tags and replace `termxref` tags with
7
- # `xref`:target tag
8
6
  class TermLookupCleanup
9
7
  AUTOMATIC_GENERATED_ID_REGEXP = /\A_/.freeze
10
8
  EXISTING_TERM_REGEXP = /\Aterm-/.freeze
9
+ EXISTING_SYMBOL_REGEXP = /\Asymbol-/.freeze
11
10
 
12
11
  attr_reader :xmldoc, :termlookup, :log
13
12
 
14
13
  def initialize(xmldoc, log)
15
14
  @xmldoc = xmldoc
16
15
  @log = log
17
- @termlookup = {}
16
+ @termlookup = { term: {}, symbol: {} }
18
17
  @idhash = {}
19
18
  end
20
19
 
@@ -22,13 +21,20 @@ module Asciidoctor
22
21
  @idhash = populate_idhash
23
22
  @termlookup = replace_automatic_generated_ids_terms
24
23
  set_termxref_tags_target
24
+ concept_cleanup
25
25
  end
26
26
 
27
27
  private
28
28
 
29
+ def concept_cleanup
30
+ xmldoc.xpath("//concept").each do |n|
31
+ n.delete("type")
32
+ end
33
+ end
34
+
29
35
  def populate_idhash
30
36
  xmldoc.xpath("//*[@id]").each_with_object({}) do |n, mem|
31
- next unless /^term-/.match?(n["id"])
37
+ next unless /^(term|symbol)-/.match?(n["id"])
32
38
 
33
39
  mem[n["id"]] = true
34
40
  end
@@ -37,62 +43,95 @@ module Asciidoctor
37
43
  def set_termxref_tags_target
38
44
  xmldoc.xpath("//termxref").each do |node|
39
45
  target = normalize_ref_id(node.text)
40
- if termlookup[target].nil?
46
+ if termlookup[:term][target].nil? && termlookup[:symbol][target].nil?
41
47
  remove_missing_ref(node, target)
42
48
  next
43
49
  end
44
- modify_ref_node(node, target)
50
+ x = node.at("../xrefrender")
51
+ modify_ref_node(x, target)
52
+ node.name = "refterm"
45
53
  end
46
54
  end
47
55
 
48
56
  def remove_missing_ref(node, target)
57
+ if node.at("../concept[@type = 'symbol']")
58
+ remove_missing_ref_symbol(node, target)
59
+ else
60
+ remove_missing_ref_term(node, target)
61
+ end
62
+ end
63
+
64
+ def remove_missing_ref_term(node, target)
49
65
  log.add("AsciiDoc Input", node,
50
66
  %(Error: Term reference in `term[#{target}]` missing: \
51
67
  "#{target}" is not defined in document))
52
- term_name_node = node.previous.previous
53
- term_name_node.remove
54
- term_name_node.name = "strong"
55
- term_name_node.children.first.content =
56
- %(term "#{term_name_node.text}" not resolved)
57
- node.add_previous_sibling(term_name_node)
58
- node.remove
68
+ node.name = "strong"
69
+ node.at("../xrefrender").remove
70
+ display = node&.at("../renderterm")&.remove&.children
71
+ display = [] if display.nil? || display&.to_xml == node.text
72
+ d = display.empty? ? "" : ", display <tt>#{display.to_xml}</tt>"
73
+ node.children = "term <tt>#{node.text}</tt>#{d} "\
74
+ "not resolved via ID <tt>#{target}</tt>"
75
+ end
76
+
77
+ def remove_missing_ref_symbol(node, target)
78
+ log.add("AsciiDoc Input", node,
79
+ %(Error: Symbol reference in `symbol[#{target}]` missing: \
80
+ "#{target}" is not defined in document))
81
+ node.name = "strong"
82
+ node.at("../xrefrender").remove
83
+ display = node&.at("../renderterm")&.remove&.children
84
+ display = [] if display.nil? || display&.to_xml == node.text
85
+ d = display.empty? ? "" : ", display <tt>#{display.to_xml}</tt>"
86
+ node.children = "symbol <tt>#{node.text}</tt>#{d} "\
87
+ "not resolved via ID <tt>#{target}</tt>"
59
88
  end
60
89
 
61
90
  def modify_ref_node(node, target)
62
91
  node.name = "xref"
63
- node["target"] = termlookup[target]
64
- node.children.remove
65
- node.remove_attribute("defaultref")
92
+ s = termlookup[:symbol][target]
93
+ t = termlookup[:term][target]
94
+ type = node.parent["type"]
95
+ if type == "term" || !type && t
96
+ node["target"] = t
97
+ elsif type == "symbol" || !type && s
98
+ node["target"] = s
99
+ end
66
100
  end
67
101
 
68
102
  def replace_automatic_generated_ids_terms
69
- xmldoc.xpath("//term").each.with_object({}) do |term_node, res|
70
- normalize_id_and_memorize(term_node, res, "./preferred")
103
+ r = xmldoc.xpath("//term").each.with_object({}) do |n, res|
104
+ normalize_id_and_memorize(n, res, "./preferred", "term")
105
+ end
106
+ s = xmldoc.xpath("//definitions//dt").each.with_object({}) do |n, res|
107
+ normalize_id_and_memorize(n, res, ".", "symbol")
71
108
  end
109
+ { term: r, symbol: s }
72
110
  end
73
111
 
74
- def normalize_id_and_memorize(term_node, res_table, text_selector)
75
- term_text = normalize_ref_id(term_node.at(text_selector).text)
76
- unless AUTOMATIC_GENERATED_ID_REGEXP.match(term_node["id"]).nil?
77
- id = unique_text_id(term_text)
78
- term_node["id"] = id
112
+ def normalize_id_and_memorize(node, res_table, text_selector, prefix)
113
+ term_text = normalize_ref_id(node.at(text_selector).text)
114
+ unless AUTOMATIC_GENERATED_ID_REGEXP.match(node["id"]).nil? &&
115
+ !node["id"].nil?
116
+ id = unique_text_id(term_text, prefix)
117
+ node["id"] = id
79
118
  @idhash[id] = true
80
119
  end
81
- res_table[term_text] = term_node["id"]
120
+ res_table[term_text] = node["id"]
82
121
  end
83
122
 
84
123
  def normalize_ref_id(text)
85
- text.downcase.gsub(/[[:space:]]/, "-")
124
+ Metanorma::Utils::to_ncname(text.downcase.gsub(/[[:space:]]/, "-"))
86
125
  end
87
126
 
88
- def unique_text_id(text)
89
- unless @idhash["term-#{text}"]
90
- return "term-#{text}"
127
+ def unique_text_id(text, prefix)
128
+ unless @idhash["#{prefix}-#{text}"]
129
+ return "#{prefix}-#{text}"
91
130
  end
92
131
 
93
132
  (1..Float::INFINITY).lazy.each do |index|
94
- unless @idhash["term-#{text}-#{index}"]
95
- break("term-#{text}-#{index}")
133
+ unless @idhash["#{prefix}-#{text}-#{index}"]
134
+ break("#{prefix}-#{text}-#{index}")
96
135
  end
97
136
  end
98
137
  end
@@ -105,7 +105,7 @@ module Asciidoctor
105
105
  end
106
106
 
107
107
  TERM_REFERENCE_RE_STR = <<~REGEXP.freeze
108
- ^(?<xref><(xref|concept)[^>]+>([^<]*</(xref|concept)>)?)
108
+ ^(?<xref><(xref|concept)[^>]+>(.*?</(xref|concept)>)?)
109
109
  (,\s(?<text>.*))?
110
110
  $
111
111
  REGEXP
@@ -3,7 +3,6 @@ require "nokogiri"
3
3
  require "htmlentities"
4
4
  require "json"
5
5
  require "pathname"
6
- require "open-uri"
7
6
  require "uuidtools"
8
7
 
9
8
  module Asciidoctor
@@ -19,10 +19,10 @@ module Asciidoctor
19
19
  end
20
20
 
21
21
  def iev_validate(xmldoc)
22
+ @iev = init_iev or return
22
23
  xmldoc.xpath("//term").each do |t|
23
24
  /^IEC 60050-/.match(t&.at("./termsource/origin/@citeas")&.text) &&
24
25
  loc = t.xpath(SOURCELOCALITY)&.text or next
25
- @iev = init_iev or return
26
26
  iev = @iev.fetch(loc, xmldoc&.at("//language")&.text || "en") or next
27
27
  pref = t.xpath("./preferred").inject([]) do |m, x|
28
28
  m << x&.text&.downcase
@@ -38,6 +38,7 @@ module Asciidoctor
38
38
  norm_ref_validate(doc)
39
39
  repeat_id_validate(doc.root)
40
40
  iev_validate(doc.root)
41
+ concept_validate(doc)
41
42
  end
42
43
 
43
44
  def norm_ref_validate(doc)
@@ -54,6 +55,21 @@ module Asciidoctor
54
55
  clean_abort("Numeric reference in normative references", doc.to_xml)
55
56
  end
56
57
 
58
+ def concept_validate(doc)
59
+ found = false
60
+ doc.xpath("//concept/xref").each do |x|
61
+ next if doc.at("//term[@id = '#{x['target']}']")
62
+ next if doc.at("//definitions//dt[@id = '#{x['target']}']")
63
+
64
+ ref = x&.at("../refterm")&.text
65
+ @log.add("Anchors", x, "Concept #{ref} is pointing to "\
66
+ "#{x['target']}, which is not a term or symbol")
67
+ found = true
68
+ end
69
+ found and clean_abort("Concept not cross-referencing term or symbol",
70
+ doc.to_xml)
71
+ end
72
+
57
73
  def repeat_id_validate1(ids, elem)
58
74
  if ids[elem["id"]]
59
75
  @log.add("Anchors", elem, "Anchor #{elem['id']} has already been "\
@@ -78,13 +94,11 @@ module Asciidoctor
78
94
 
79
95
  def schema_validate(doc, schema)
80
96
  Tempfile.open(["tmp", ".xml"], encoding: "UTF-8") do |f|
81
- begin
82
- schema_validate1(f, doc, schema)
83
- rescue Jing::Error => e
84
- clean_abort("Jing failed with error: #{e}", doc.to_xml)
85
- ensure
86
- f.close!
87
- end
97
+ schema_validate1(f, doc, schema)
98
+ rescue Jing::Error => e
99
+ clean_abort("Jing failed with error: #{e}", doc.to_xml)
100
+ ensure
101
+ f.close!
88
102
  end
89
103
  end
90
104
 
@@ -0,0 +1,81 @@
1
+ <div class="document-stage-band" id="{{ stage | downcase | replace: ' ', '-' }}-band">
2
+ <p class="document-stage">{{ stage_display }}</p>
3
+ </div>
4
+
5
+ <div class="document-type-band" id="{{ doctype | downcase | replace: ' ', '-' }}-band">
6
+ <p class="document-type">{{org_abbrev}} {{ doctype_display }}</p>
7
+ </div>
8
+
9
+
10
+
11
+ <div id='toggle'> <span>&#x2022;</span> </div>
12
+
13
+ <header>
14
+
15
+ <!--<div class="WordSection1">-->
16
+ <div class="coverpage">
17
+ <div class="wrapper-top">
18
+
19
+ <div class="coverpage-doc-identity">
20
+ <div class="doc-number">
21
+ <span class="docnumber">{{ docnumber }}</span>
22
+ <span class="docnumber-separator">:</span>
23
+ <span class="docyear">{{ docyear }} {{ draftinfo }}</span>
24
+ </div>
25
+
26
+ <div class="coverpage-title">
27
+ {% if appendixtitle or parttitle or subparttitle %}
28
+ <span class="title-third">{{ doctitle }}</span>
29
+ <span class="title-third">{{ docsubtitle }}</span><br/>
30
+ {% if partid %}<span class="title-first">{{ partid}}: {{ parttitle }}</span><br/>{% endif %}
31
+ {% if partid_alt %}<span class="title-second">{{ partid_alt}}: {{ partsubtitle }}</span>{% endif %}
32
+ {% if subparttitle %}<span class="title-first">{{ subparttitle }}</span><br/>{% endif %}
33
+ {% if subpartsubtitle %}<span class="title-second">{{ subpartsubtitle }}</span><br/>{% endif %}
34
+ {% if provenancetitle %}<span class="title-first">{{ provenancetitle }}</span><br/>{% endif %}
35
+ {% if provenancesubtitle %}<span class="title-second">{{ provenancesubtitle }}</span><br/>{% endif %}
36
+ {% if appendixid %}<span class="title-first">{{ appendixid}}: {{ appendixtitle }}</span><br/>{% endif %}
37
+ {% if appendixid_alt %}<span class="title-second">{{ appendixid_alt}}: {{ appendixsubtitle }}</span>{% endif %}
38
+ {% if annexid %}<span class="title-first">{{ annexid}}: {{ annextitle }}</span><br/>{% endif %}
39
+ {% if annexid_alt %}<span class="title-second">{{ annexid_alt}}: {{ annexsubtitle }}</span>{% endif %}
40
+ {% else %}
41
+ <span class="title-first">{{ doctitle }}</span><br/>
42
+ <span class="title-second">{{ docsubtitle }}</span>
43
+ {% endif %}
44
+ </div>
45
+ </div>
46
+
47
+ {% if authors %}
48
+ <div class="coverpage-tc-name">
49
+ {% for item in authors %}
50
+ <span>{{item}} {% if authors_affiliations[forloop.index0] %}({{ authors_affiliations[forloop.index0] }}){% endif %}{% if forloop.last == false %}, {% endif %}{% endfor %}.
51
+ </div>
52
+ {% endif %}
53
+
54
+
55
+ </div>
56
+
57
+ <div class="wrapper-top-bottom"></div>
58
+
59
+ <div class="WordSection11">
60
+ <div class="coverpage-stage-block" >
61
+ <span class="coverpage-stage" id="{{ doctype | replace: ' ', '-' | downcase }}">{{org_abbrev}} {{ doctype_display }}</span>
62
+ </div>
63
+
64
+ <div class="coverpage-stage-block" >
65
+ <p><span class="coverpage-maturity" id="{{ stage | replace: ' ', '-' | downcase }}">{{ stage_display }}</span></p>
66
+ </div>
67
+
68
+ <div class="info-section">
69
+ <div class="copyright">
70
+ <div id="boilerplate-copyright-destination"/>
71
+ <div id="boilerplate-license-destination"/>
72
+ <div id="boilerplate-legal-destination"/>
73
+ <div id="boilerplate-feedback-destination"/>
74
+ </div>
75
+
76
+ <div class="rule"></div>
77
+ </div>
78
+ </div>
79
+
80
+
81
+ </header>
@@ -0,0 +1,983 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ 0 CSS RESET
4
+ */
5
+ /* http://meyerweb.com/eric/tools/css/reset/
6
+ v2.0 | 20110126
7
+ License: none (public domain)
8
+ */
9
+ html, body, div, span, applet, object, iframe,
10
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
11
+ a, abbr, acronym, address, big, cite, code,
12
+ del, dfn, em, img, ins, kbd, q, s, samp,
13
+ small, strike, strong, sub, sup, tt, var,
14
+ b, u, i, center,
15
+ ol, ul, li,
16
+ fieldset, form, label, legend,
17
+ table, caption, tbody, tfoot, thead, tr, th, td,
18
+ article, aside, canvas, details, embed,
19
+ figure, figcaption, footer, header, hgroup,
20
+ menu, output, ruby, section, summary,
21
+ time, mark, audio, video {
22
+ margin: 0;
23
+ padding: 0; }
24
+
25
+ html, body, div, span, applet, object, iframe,
26
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
27
+ a, abbr, acronym, address, big, cite, code,
28
+ del, dfn, em, img, ins, kbd, q, s, samp,
29
+ small, strike, strong, sub, sup, tt, var,
30
+ b, u, i, center,
31
+ dl, dt, dd, ol, ul, li,
32
+ fieldset, form, label, legend,
33
+ table, caption, tbody, tfoot, thead, tr, th, td,
34
+ article, aside, canvas, details, embed,
35
+ figure, figcaption, footer, header, hgroup,
36
+ menu, nav, output, ruby, section, summary,
37
+ time, mark, audio, video {
38
+ border: 0;
39
+ font-size: 100%; }
40
+
41
+ html, body, div, span, applet, object, iframe,
42
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
43
+ a, abbr, acronym, address, big, cite, code,
44
+ del, dfn, em, img, ins, kbd, q, s, samp,
45
+ small, strike, strong, tt, var,
46
+ b, u, i, center,
47
+ dl, dd, ol, ul, li,
48
+ fieldset, form, label, legend,
49
+ table, caption, tbody, tfoot, thead, tr, th, td,
50
+ article, aside, canvas, details, embed,
51
+ figure, figcaption, footer, header, hgroup,
52
+ menu, nav, output, ruby, section, summary,
53
+ time, mark, audio, video {
54
+ vertical-align: baseline; }
55
+
56
+ html, body, div, span, applet, object, iframe,
57
+ p, blockquote,
58
+ a, abbr, acronym, address, big, cite,
59
+ del, dfn, em, img, ins, q, s,
60
+ small, strike, strong, sub, sup, var,
61
+ b, u, i, center,
62
+ dl, dt, dd, ol, ul, li,
63
+ fieldset, form, label, legend,
64
+ table, caption, tbody, tfoot, thead, tr, th, td,
65
+ article, aside, canvas, details, embed,
66
+ figure, figcaption, footer, header, hgroup,
67
+ menu, nav, output, ruby, section, summary,
68
+ time, mark, audio, video {
69
+ font-family: {{bodyfont}}; }
70
+
71
+ code, pre, tt, kbd, samp {
72
+ font-family: {{monospacefont}};
73
+ font-variant-ligatures: none; }
74
+
75
+ code *, pre *, tt *, kbd *, samp * {
76
+ font-family: {{monospacefont}} !important;
77
+ font-variant-ligatures: none; }
78
+
79
+ article, aside, details, figcaption, figure,
80
+ footer, header, hgroup, menu, nav, section {
81
+ display: block; }
82
+
83
+ table {
84
+ border-collapse: collapse;
85
+ border-spacing: 0; }
86
+
87
+ h1, h2, h3, h4, h5, h6 {
88
+ font-family: {{headerfont}}; }
89
+
90
+ blockquote, q {
91
+ quotes: none; }
92
+ blockquote:before, blockquote:after, q:before, q:after {
93
+ content: '';
94
+ content: none; }
95
+
96
+ .h2Annex {
97
+ font-family: {{headerfont}}; }
98
+
99
+ dl {
100
+ display: grid;
101
+ grid-template-columns: max-content auto; }
102
+ dl dt p, dl dd p {
103
+ margin-top: 0; }
104
+ dl dt {
105
+ grid-column-start: 1; }
106
+ dl dd {
107
+ grid-column-start: 2; }
108
+
109
+ b, strong {
110
+ font-weight: bold; }
111
+
112
+ div.document-stage-band, div.document-type-band {
113
+ background-color: #333333; }
114
+
115
+ a.FootnoteRef + a.FootnoteRef:before {
116
+ content: ", ";
117
+ vertical-align: super; }
118
+
119
+ .addition {
120
+ color: blue; }
121
+
122
+ .deletion {
123
+ color: red;
124
+ text-decoration: line-through; }
125
+
126
+ #brochure-band {
127
+ background-color: #0AC442; }
128
+
129
+ #brochure {
130
+ border-bottom: solid 3px #0AC442; }
131
+
132
+ #mise-en-pratique-band {
133
+ background-color: #540D6E; }
134
+
135
+ #mise-en-pratique {
136
+ border-bottom: solid 3px #540D6E; }
137
+
138
+ #rapport-band {
139
+ background-color: #D183C9; }
140
+
141
+ #rapport {
142
+ border-bottom: solid 3px #D183C9; }
143
+
144
+ #monographie-band {
145
+ background-color: #65AFFF; }
146
+
147
+ #monographie {
148
+ border-bottom: solid 3px #65AFFF; }
149
+
150
+ #guide-band {
151
+ background-color: #3A405A; }
152
+
153
+ #guide {
154
+ border-bottom: solid 3px #3A405A; }
155
+
156
+ #meeting-report-band {
157
+ background-color: #F26430; }
158
+
159
+ #meeting-report {
160
+ border-bottom: solid 3px #F26430; }
161
+
162
+ #technical-report-band {
163
+ background-color: #C84630; }
164
+
165
+ #technical-report {
166
+ border-bottom: solid 3px #C84630; }
167
+
168
+ #working-part-note-band {
169
+ background-color: #BFAE48; }
170
+
171
+ #working-part-note {
172
+ border-bottom: solid 3px #BFAE48; }
173
+
174
+ #strategy-band {
175
+ background-color: #BD9391; }
176
+
177
+ #strategy {
178
+ border-bottom: solid 3px #BD9391; }
179
+
180
+ #cipm-mra-band {
181
+ background-color: #004E64; }
182
+
183
+ #cipm-mra {
184
+ border-bottom: solid 3px #004E64; }
185
+
186
+ #resolution-band {
187
+ background-color: #53C170; }
188
+
189
+ #resolution {
190
+ border-bottom: solid 3px #53C170; }
191
+
192
+ #draft-proposal-band {
193
+ background-color: #39A0ED; }
194
+
195
+ #draft-proposal {
196
+ border-bottom: solid 3px #39A0ED; }
197
+
198
+ #draft-development-band {
199
+ background-color: #2D7393; }
200
+
201
+ #draft-development {
202
+ border-bottom: solid 3px #2D7393; }
203
+
204
+ #in-force-band {
205
+ background-color: #53C170; }
206
+
207
+ #in-force {
208
+ border-bottom: solid 3px #53C170; }
209
+
210
+ #retired-band {
211
+ background-color: #2E382E; }
212
+
213
+ #retired {
214
+ border-bottom: solid 3px #2E382E; }
215
+
216
+ /*
217
+ 1. HTML & Body
218
+ */
219
+ body {
220
+ margin-left: auto;
221
+ margin-right: auto;
222
+ max-width: 100%;
223
+ font-size: {{normalfontsize}};
224
+ font-weight: 300;
225
+ line-height: 1.4em;
226
+ color: #1d1d1d;
227
+ background-color: #ffffff;
228
+ font-weight: 400; }
229
+ body main {
230
+ margin: 0 3em 0 6em; }
231
+ body pre * {
232
+ font-family: {{bodyfont}} !important; }
233
+
234
+ /*
235
+ 2. Responsive navigation layout
236
+ */
237
+ #toc {
238
+ font-family: {{bodyfont}};
239
+ font-weight: 400; }
240
+ #toc ul {
241
+ margin: 0;
242
+ padding: 0;
243
+ list-style: none; }
244
+ #toc ul li a {
245
+ padding: 5px 10px; }
246
+ #toc ul a {
247
+ color: #485094;
248
+ text-decoration: none;
249
+ display: block; }
250
+ #toc ul a:hover {
251
+ box-shadow: none;
252
+ color: #485094; }
253
+ #toc .h2 {
254
+ padding-left: 30px; }
255
+ #toc .h3 {
256
+ padding-left: 50px; }
257
+ #toc .toc-active, #toc li:hover {
258
+ background: #C70039;
259
+ box-shadow: inset -5px 0px 10px -5px #C70039 !important; }
260
+ #toc .toc-active a, #toc li:hover a {
261
+ color: #485094; }
262
+ @media print {
263
+ #toc .toc-active, #toc li:hover {
264
+ background: white;
265
+ box-shadow: none !important; }
266
+ #toc .toc-active a {
267
+ color: #485094; }
268
+ #toc li:hover a {
269
+ color: black; } }
270
+ @media screen and (max-width: 768px) {
271
+ #toc {
272
+ padding: 0 1.5em;
273
+ overflow: visible; } }
274
+ #toc .toc-active a {
275
+ color: white; }
276
+ #toc .toc-active,
277
+ #toc li:hover {
278
+ box-shadow: none !important; }
279
+ #toc .toc-active a,
280
+ #toc li:hover a {
281
+ color: white;
282
+ background: none;
283
+ box-shadow: none; }
284
+ #toc li a {
285
+ text-transform: uppercase; }
286
+ #toc ul a:hover {
287
+ box-shadow: none;
288
+ color: white; }
289
+
290
+ @media screen and (min-width: 768px) {
291
+ nav {
292
+ position: fixed;
293
+ top: 0;
294
+ bottom: 0;
295
+ left: 0;
296
+ width: 323px;
297
+ font-size: 0.9em;
298
+ overflow: auto;
299
+ padding: 0 0 0 45px;
300
+ background-color: #f7f7f7; } }
301
+
302
+ @media print {
303
+ nav {
304
+ position: relative;
305
+ width: auto;
306
+ font-size: 0.9em;
307
+ overflow: auto;
308
+ padding: 0;
309
+ margin-right: 0;
310
+ background-color: white; } }
311
+
312
+ @media screen and (min-width: 768px) {
313
+ #toggle {
314
+ position: fixed;
315
+ height: 100%;
316
+ width: 30px;
317
+ background-color: #C70039;
318
+ color: white !important;
319
+ cursor: pointer;
320
+ z-index: 100; }
321
+ #toggle span {
322
+ text-align: center;
323
+ width: 100%;
324
+ position: absolute;
325
+ top: 50%;
326
+ transform: translate(0, -50%); } }
327
+
328
+ @media screen and (max-width: 768px) {
329
+ #toggle {
330
+ display: none; } }
331
+
332
+ @media print {
333
+ #toggle {
334
+ display: none; } }
335
+
336
+ @media screen and (min-width: 768px) {
337
+ .container {
338
+ padding-left: 360px; }
339
+ .rule.toc {
340
+ display: none; }
341
+ h1.toc-contents {
342
+ margin-top: 1em; }
343
+ ul#toc-list {
344
+ padding: 0;
345
+ margin: 0; } }
346
+
347
+ div.figure {
348
+ line-height: 1.6em;
349
+ padding: 1.5em;
350
+ margin: 2em 0 1em 0;
351
+ overflow: auto; }
352
+ div.figure .FigureTitle, div.figure .figure-title {
353
+ font-weight: 700;
354
+ font-size: 1em;
355
+ text-align: center; }
356
+ div.figure > img {
357
+ margin-left: auto;
358
+ margin-right: auto;
359
+ display: block;
360
+ max-width: 100%;
361
+ height: auto; }
362
+
363
+ /*
364
+ Document types + stages
365
+ */
366
+ .document-type-band {
367
+ left: 0;
368
+ top: 180px;
369
+ height: 100%;
370
+ position: fixed;
371
+ display: block;
372
+ z-index: 102; }
373
+ .document-type-band > :first-child {
374
+ position: relative;
375
+ width: 25px;
376
+ font-weight: 400;
377
+ color: white;
378
+ text-transform: uppercase;
379
+ font-size: 0.9em;
380
+ font-weight: 400;
381
+ letter-spacing: 0.05em;
382
+ margin: 0;
383
+ margin-left: 6px;
384
+ writing-mode: tb-rl;
385
+ -webkit-transform: rotate(180deg);
386
+ -moz-transform: rotate(180deg);
387
+ -o-transform: rotate(180deg);
388
+ white-space: nowrap;
389
+ display: block;
390
+ bottom: 0; }
391
+ @media print {
392
+ .document-type-band {
393
+ display: none; } }
394
+ .document-type-band .document-type {
395
+ top: 20px; }
396
+
397
+ .document-stage-band {
398
+ left: 0;
399
+ top: 0;
400
+ height: 100%;
401
+ position: fixed;
402
+ display: block;
403
+ z-index: 101;
404
+ box-shadow: -5px 0px 10px #1d1d1d; }
405
+ .document-stage-band > :first-child {
406
+ position: relative;
407
+ width: 25px;
408
+ font-weight: 400;
409
+ height: 150;
410
+ color: white;
411
+ text-transform: uppercase;
412
+ font-size: 0.9em;
413
+ font-weight: 400;
414
+ letter-spacing: 0.05em;
415
+ margin: 0;
416
+ margin-left: 6px;
417
+ writing-mode: tb-rl;
418
+ -webkit-transform: rotate(180deg);
419
+ -moz-transform: rotate(180deg);
420
+ -o-transform: rotate(180deg);
421
+ white-space: nowrap;
422
+ display: block;
423
+ bottom: 0; }
424
+ @media print {
425
+ .document-stage-band {
426
+ display: none; } }
427
+ .document-stage-band > :first-child {
428
+ font-weight: 300; }
429
+
430
+ p.document-stage {
431
+ position: relative;
432
+ width: 25px;
433
+ font-weight: 400;
434
+ height: 150;
435
+ color: white;
436
+ text-transform: uppercase;
437
+ font-size: 0.9em;
438
+ font-weight: 400;
439
+ letter-spacing: 0.05em;
440
+ margin: 0;
441
+ margin-left: 6px;
442
+ writing-mode: tb-rl;
443
+ -webkit-transform: rotate(180deg);
444
+ -moz-transform: rotate(180deg);
445
+ -o-transform: rotate(180deg);
446
+ white-space: nowrap;
447
+ display: block;
448
+ bottom: 0; }
449
+
450
+ #governance-band p.document-type {
451
+ height: 230px !important; }
452
+
453
+ p.document-stage {
454
+ font-weight: 300;
455
+ height: 160px; }
456
+
457
+ .coverpage-maturity {
458
+ font-family: {{bodyfont}};
459
+ font-weight: 400;
460
+ font-size: 1em;
461
+ margin: 0 0 2em 0;
462
+ text-transform: uppercase; }
463
+
464
+ /*
465
+ 3. TYPOGRAPHY
466
+ */
467
+ /*
468
+ 3.1 Titles
469
+ */
470
+ h1, h2, h3, h4, h5, h6 {
471
+ font-family: {{headerfont}};
472
+ color: #C70039;
473
+ font-weight: 300;
474
+ margin-top: 1.6em;
475
+ margin-bottom: 0.3em; }
476
+
477
+ h1 {
478
+ font-size: 1.6em;
479
+ text-transform: uppercase;
480
+ margin-top: 2em; }
481
+
482
+ h1#content {
483
+ margin-top: 2em; }
484
+
485
+ h2 {
486
+ margin-top: 1.3em;
487
+ font-size: 1.3em;
488
+ font-weight: 400; }
489
+
490
+ h3 {
491
+ margin-top: 1.1em;
492
+ font-size: 1.1em;
493
+ font-weight: 100; }
494
+
495
+ .TermNum, .Terms, .AltTerms {
496
+ color: #C70039;
497
+ font-weight: 100; }
498
+
499
+ h2.TermNum {
500
+ margin-bottom: 0; }
501
+
502
+ p.Terms {
503
+ font-size: 1.1em;
504
+ line-height: 1.5em;
505
+ margin: 0; }
506
+
507
+ p.AltTerms {
508
+ /*
509
+ font-style: italic;
510
+ */
511
+ font-size: 1.1em;
512
+ margin: 0; }
513
+
514
+ /*
515
+ 3.2 Links
516
+ */
517
+ a, a:visited {
518
+ text-decoration: none;
519
+ color: #485094; }
520
+
521
+ a:hover {
522
+ color: white;
523
+ background: #C70039;
524
+ box-shadow: 3px 0 0 #C70039, -3px 0 0 #C70039; }
525
+
526
+ ::selection,
527
+ ::-moz-selection {
528
+ background: #C70039;
529
+ color: white; }
530
+
531
+ /*
532
+ 3.3 Lists
533
+ */
534
+ ul, ol {
535
+ margin-left: 1.2em; }
536
+
537
+ ul li {
538
+ list-style: none; }
539
+
540
+ ul li:before {
541
+ content: "—";
542
+ display: inline-block;
543
+ width: 1em;
544
+ margin-left: -1.2em; }
545
+
546
+ ul li p {
547
+ display: inline; }
548
+
549
+ ul li:first-child {
550
+ margin-top: 1em; }
551
+
552
+ #toc-list ul {
553
+ margin-bottom: 0.25em; }
554
+
555
+ #toc-list li {
556
+ list-style-type: none; }
557
+
558
+ #toc li:before {
559
+ content: " ";
560
+ display: none; }
561
+
562
+ /* https://github.com/metanorma/metanorma-bipm/issues/47 */
563
+ ol[class="alphabet"] {
564
+ counter-reset: alphabet; }
565
+
566
+ ol[class="roman"] {
567
+ counter-reset: roman; }
568
+
569
+ ol[class="alphabet"] ol[class="alphabet"] {
570
+ counter-reset: none; }
571
+
572
+ ol[class="alphabet"] > li {
573
+ list-style: none;
574
+ position: relative; }
575
+
576
+ ol[class="alphabet"] ol[class="alphabet"] > li {
577
+ list-style: inherit; }
578
+
579
+ ol[class="alphabet"] > li:before {
580
+ counter-increment: alphabet;
581
+ content: counter(alphabet, lower-alpha) ") ";
582
+ position: absolute;
583
+ left: -1.4em; }
584
+
585
+ ol[class="alphabet"] ol[class="alphabet"] > li:before {
586
+ counter-increment: none;
587
+ content: initial; }
588
+
589
+ ol[class="roman"] ol[class="roman"] {
590
+ counter-reset: none; }
591
+
592
+ ol[class="roman"] > li {
593
+ list-style: none;
594
+ position: relative; }
595
+
596
+ ol[class="roman"] ol[class="roman"] > li {
597
+ list-style: inherit; }
598
+
599
+ ol[class="roman"] > li:before {
600
+ counter-increment: roman;
601
+ content: "(" counter(roman, lower-roman) ") ";
602
+ position: absolute;
603
+ left: -2.0em; }
604
+
605
+ ol[class="roman"] ol[class="roman"] > li:before {
606
+ counter-increment: none;
607
+ content: initial; }
608
+
609
+ /*
610
+ 3.4 Rules
611
+ */
612
+ .rule {
613
+ width: 100%;
614
+ height: 1px;
615
+ background-color: #0e1a85;
616
+ margin: 2em 0; }
617
+
618
+ /*
619
+ 3.5 Bibliograhy
620
+ */
621
+ p.Biblio, p.NormRef {
622
+ margin-top: 1em;
623
+ margin-left: 2em; }
624
+
625
+ /*
626
+ 3.6 Source Code + figures
627
+ */
628
+ .figure,
629
+ pre,
630
+ .pseudocode {
631
+ background-color: #f7f7f7;
632
+ font-size: {{monospacefontsize}};
633
+ line-height: 1.6em;
634
+ padding: 1.5em;
635
+ margin: 2em 0 1em 0;
636
+ overflow: auto; }
637
+ .figure .SourceTitle,
638
+ pre .SourceTitle,
639
+ .pseudocode .SourceTitle {
640
+ font-weight: 700;
641
+ font-size: 1em;
642
+ text-align: center; }
643
+
644
+ pre {
645
+ font-family: {{monospacefont}};
646
+ font-variant-ligatures: none; }
647
+
648
+ .AdmonitionTitle {
649
+ font-weight: 700;
650
+ font-size: 1em;
651
+ text-align: center; }
652
+
653
+ .RecommendationTitle {
654
+ font-weight: 700;
655
+ font-size: 1em;
656
+ text-align: center; }
657
+
658
+ .FigureTitle,
659
+ .SourceTitle {
660
+ font-weight: 700;
661
+ font-size: 1em;
662
+ text-align: center; }
663
+
664
+ /*
665
+ 3.7 Notes
666
+ */
667
+ .Note {
668
+ background-color: #fff495;
669
+ color: #47430c;
670
+ padding: 1.2em;
671
+ margin: 1em 0 1em 0; }
672
+ .Note p {
673
+ margin: 0; }
674
+
675
+ /*
676
+ 3.8 Examples
677
+ */
678
+ .example {
679
+ background-color: #e1eef1;
680
+ padding: 1.2em;
681
+ margin: 2em 0 1em 0;
682
+ text-align: left;
683
+ color: #424242;
684
+ padding-left: 2.7em; }
685
+ .example p {
686
+ margin: 0; }
687
+ .example .example-title {
688
+ font-weight: 700;
689
+ text-transform: uppercase;
690
+ margin-left: -1.5em; }
691
+ .example .example-title {
692
+ margin-top: 0; }
693
+ .example pre,
694
+ .example .pseudocode {
695
+ background: none; }
696
+
697
+ /*
698
+ 3.9 Tables
699
+ */
700
+ table {
701
+ width: 100%;
702
+ font-weight: 300;
703
+ margin: 1em 0 2em 0;
704
+ margin-left: auto;
705
+ margin-right: auto;
706
+ padding-right: 2em; }
707
+ table, table th, table td {
708
+ border: 1px solid black;
709
+ font-size: 0.95em; }
710
+ table th, table td {
711
+ padding: 1em; }
712
+ table td.header {
713
+ font-weigth: 400; }
714
+
715
+ p.TableTitle {
716
+ text-align: center;
717
+ margin-top: 2.5em;
718
+ font-weight: 400; }
719
+
720
+ /*
721
+ 3.10 Footnotes
722
+ */
723
+ a.footnote-number {
724
+ vertical-align: super;
725
+ font-size: 0.8em; }
726
+
727
+ .footnote {
728
+ font-size: {{footnotefontsize}}; }
729
+
730
+ /*
731
+ 3.11 Blockquotes
732
+ */
733
+ .Quote {
734
+ background-color: #f2f2f2;
735
+ font-style: italic;
736
+ width: 80%;
737
+ padding: 1.5em;
738
+ margin-top: 2em;
739
+ margin-left: auto;
740
+ margin-right: auto; }
741
+
742
+ /*
743
+ 3.12 Formulas
744
+ */
745
+ .formula {
746
+ background-color: #f7f7f7;
747
+ padding: 1.5em;
748
+ margin-top: 2em;
749
+ text-align: center; }
750
+
751
+ /*
752
+ 3.13 Contact Info
753
+ */
754
+ .contact-info {
755
+ padding: 2em;
756
+ margin-top: 5em;
757
+ width: 250px;
758
+ text-align: left;
759
+ border: #C70039 solid 2px;
760
+ color: #C70039 !important;
761
+ border-radius: 25px; }
762
+
763
+ .contact-info a,
764
+ .contact-info a:hover {
765
+ color: #C70039; }
766
+
767
+ .contact-info p, .contact-info a {
768
+ font-family: {{monospacefont}};
769
+ font-weight: 400; }
770
+
771
+ .contact-info .name {
772
+ font-weight: 700;
773
+ font-size: 1.2em;
774
+ margin-bottom: 0; }
775
+
776
+ .contact-info .address {
777
+ font-size: 1em;
778
+ line-height: 1.3em;
779
+ margin-top: 0; }
780
+
781
+ /*
782
+ Keywords
783
+ */
784
+ span.keyword {
785
+ font-weight: 600; }
786
+
787
+ /*
788
+ Paragraphs
789
+ */
790
+ p {
791
+ margin-top: 1em;
792
+ margin-bottom: 1em; }
793
+
794
+ h2 p {
795
+ display: inline; }
796
+
797
+ /*
798
+ 4.0 Page header
799
+ */
800
+ /*
801
+ 4.1 Top Logo
802
+ */
803
+ .icon-svg {
804
+ width: 100%;
805
+ color: #5ecf86; }
806
+
807
+ .wrapper-top {
808
+ background: #C70039;
809
+ color: #ffffff;
810
+ padding: 2em 0;
811
+ width: 100%; }
812
+
813
+ .wrapper-top-bottom {
814
+ width: 0;
815
+ height: 0;
816
+ border-top: 100px solid #C70039;
817
+ position: absolute; }
818
+
819
+ .doc-number {
820
+ font-size: 0.5em;
821
+ font-family: {{bodyfont}}; }
822
+
823
+ .coverpage-title {
824
+ padding-bottom: 0.5em;
825
+ font-family: {{headerfont}};
826
+ font-size: 1.2em;
827
+ line-height: 1.5em;
828
+ font-weight: 100;
829
+ padding-left: 1em;
830
+ padding-right: 1em;
831
+ text-transform: uppercase; }
832
+
833
+ .WordSection11 {
834
+ padding: 0 2em 0 3em; }
835
+
836
+ .info-section {
837
+ padding: 0 2em 0 5em; }
838
+
839
+ .prefatory-section {
840
+ padding: 0 3em 0 6em; }
841
+
842
+ .zzSTDTitle1, .MsoCommentText {
843
+ display: none; }
844
+
845
+ .coverpage {
846
+ text-align: center;
847
+ padding-left: 1.5em; }
848
+
849
+ .coverpage-logo span, .coverpage-tc-name span {
850
+ font-family: {{bodyfont}};
851
+ text-transform: none;
852
+ font-weight: 300; }
853
+
854
+ .coverpage-tc-name {
855
+ font-size: 1.2em;
856
+ line-height: 1.2em;
857
+ margin: 0.25em 0; }
858
+
859
+ /*
860
+ 4.2 Document Identity
861
+ */
862
+ .coverpage-doc-identity {
863
+ font-size: 2em;
864
+ line-height: 2em; }
865
+
866
+ .coverpage-title .title-second {
867
+ font-size: 0.8em; }
868
+
869
+ .coverpage-title .title-third {
870
+ font-size: 0.6em; }
871
+
872
+ .coverpage-stage-block {
873
+ font-family: {{bodyfont}};
874
+ font-weight: 600;
875
+ font-size: 1.25em;
876
+ margin: 2em 0em 2em 0em;
877
+ text-transform: uppercase; }
878
+
879
+ /*
880
+ 4.3 Draft Warning
881
+ */
882
+ .coverpage-warning {
883
+ border: #f36f36 solid 2px;
884
+ color: #f36f36 !important;
885
+ margin: 1em 2em;
886
+ color: #485094;
887
+ padding: 2em 1em 1em 1em;
888
+ border-radius: 25px; }
889
+
890
+ .coverpage-warning .title {
891
+ font-family: {{headerfont}};
892
+ font-weight: 300;
893
+ text-transform: uppercase;
894
+ font-size: 1.2em; }
895
+
896
+ /*
897
+ 4.4 Copyright
898
+ */
899
+ .copyright {
900
+ padding: 1em;
901
+ font-size: 0.9em;
902
+ text-align: left; }
903
+
904
+ /* .copyright .name, .copyright .address {color: #485094;} */
905
+ /*
906
+ 5.0 Other styles
907
+ */
908
+ /*
909
+ To top button
910
+ */
911
+ #myBtn {
912
+ font-family: {{monospacefont}};
913
+ font-variant-ligatures: none;
914
+ display: none;
915
+ position: fixed;
916
+ bottom: 20px;
917
+ right: 30px;
918
+ z-index: 99;
919
+ font-size: 12px;
920
+ border: none;
921
+ outline: none;
922
+ background-color: #1f8ca0;
923
+ opacity: 0.15;
924
+ color: white;
925
+ cursor: pointer;
926
+ padding: 10px 15px 10px 15px;
927
+ border-radius: 4px;
928
+ text-transform: uppercase; }
929
+ #myBtn:hover {
930
+ opacity: 1; }
931
+ @media print {
932
+ #myBtn {
933
+ display: none; } }
934
+ #myBtn a.anchorjs-link:hover {
935
+ background: none;
936
+ color: #485094;
937
+ box-shadow: none; }
938
+
939
+ @page {
940
+ margin: 2cm 1cm; }
941
+
942
+ @media print {
943
+ .document-info, nav, .copyright {
944
+ page-break-before: always; }
945
+ h1, h2, h3, h4 {
946
+ page-break-after: avoid;
947
+ margin-top: 1.2em; }
948
+ .note, .figure, pre, .pseudocode, table {
949
+ page-break-inside: avoid; }
950
+ .info-section {
951
+ display: none; }
952
+ .coverpage {
953
+ height: 23cm; }
954
+ .wrapper-top {
955
+ top: 0;
956
+ padding-top: 4cm;
957
+ padding-bottom: 4cm; }
958
+ .wrapper-top-bottom {
959
+ margin-top: -5px; }
960
+ #toggle, .document-stage-band,
961
+ .document-type-band, button#myBtn {
962
+ display: none; }
963
+ .container {
964
+ padding-left: 0; }
965
+ h1.content {
966
+ margin-top: 2em;
967
+ line-height: 2.5em; }
968
+ h1 {
969
+ font-size: 1.5em;
970
+ line-height: 1.5; }
971
+ h2 {
972
+ font-size: 1.2em; }
973
+ h3 {
974
+ font-size: 1em; }
975
+ .Note {
976
+ background-color: #fff495;
977
+ color: #47430c;
978
+ padding: 5px;
979
+ margin: 2em 0 1em 0; }
980
+ .Note p {
981
+ padding: 0 5px 0 5px; }
982
+ .wrapper-top-bottom {
983
+ display: none; } }