metanorma-ogc 1.1.0 → 1.2.1

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/macos.yml +0 -1
  3. data/.github/workflows/ubuntu.yml +10 -7
  4. data/.github/workflows/windows.yml +0 -1
  5. data/Rakefile +2 -0
  6. data/lib/asciidoctor/ogc/boilerplate.xml +3 -3
  7. data/lib/asciidoctor/ogc/converter.rb +11 -7
  8. data/lib/asciidoctor/ogc/front.rb +7 -19
  9. data/lib/asciidoctor/ogc/isodoc.rng +12 -6
  10. data/lib/asciidoctor/ogc/validate.rb +13 -25
  11. data/lib/isodoc/ogc/base_convert.rb +2 -26
  12. data/lib/isodoc/ogc/biblio.rb +33 -4
  13. data/lib/isodoc/ogc/html/_coverpage.css +195 -0
  14. data/lib/isodoc/ogc/html/header_wp.html +210 -0
  15. data/lib/isodoc/ogc/html/htmlstyle.css +1084 -0
  16. data/lib/isodoc/ogc/html/logo.png +0 -0
  17. data/lib/isodoc/ogc/html/ogc.css +838 -0
  18. data/lib/isodoc/ogc/html/ogc.scss +4 -2
  19. data/lib/isodoc/ogc/html/ogc_wp.css +758 -0
  20. data/lib/isodoc/ogc/html/ogc_wp.scss +724 -0
  21. data/lib/isodoc/ogc/html/word_ogc_intro_wp.html +14 -0
  22. data/lib/isodoc/ogc/html/word_ogc_titlepage_wp.html +175 -0
  23. data/lib/isodoc/ogc/html/wordstyle.css +1253 -0
  24. data/lib/isodoc/ogc/html/wordstyle.scss +8 -9
  25. data/lib/isodoc/ogc/html/wordstyle_wp.css +1181 -0
  26. data/lib/isodoc/ogc/html/wordstyle_wp.scss +1093 -0
  27. data/lib/isodoc/ogc/html_convert.rb +2 -0
  28. data/lib/isodoc/ogc/i18n-en.yaml +1 -0
  29. data/lib/isodoc/ogc/i18n.rb +10 -0
  30. data/lib/isodoc/ogc/init.rb +41 -0
  31. data/lib/isodoc/ogc/metadata.rb +31 -28
  32. data/lib/isodoc/ogc/ogc.abstract-specification-topic.xsl +1690 -1543
  33. data/lib/isodoc/ogc/ogc.best-practice.xsl +1690 -1543
  34. data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +1690 -1543
  35. data/lib/isodoc/ogc/ogc.community-practice.xsl +1690 -1543
  36. data/lib/isodoc/ogc/ogc.community-standard.xsl +1690 -1543
  37. data/lib/isodoc/ogc/ogc.discussion-paper.xsl +1690 -1543
  38. data/lib/isodoc/ogc/ogc.engineering-report.xsl +1690 -1543
  39. data/lib/isodoc/ogc/ogc.other.xsl +1690 -1543
  40. data/lib/isodoc/ogc/ogc.policy.xsl +1690 -1543
  41. data/lib/isodoc/ogc/ogc.reference-model.xsl +1690 -1543
  42. data/lib/isodoc/ogc/ogc.release-notes.xsl +1690 -1543
  43. data/lib/isodoc/ogc/ogc.standard.xsl +1690 -1543
  44. data/lib/isodoc/ogc/ogc.test-suite.xsl +1690 -1543
  45. data/lib/isodoc/ogc/ogc.user-guide.xsl +1690 -1543
  46. data/lib/isodoc/ogc/ogc.white-paper.xsl +1776 -1864
  47. data/lib/isodoc/ogc/presentation_xml_convert.rb +128 -1
  48. data/lib/isodoc/ogc/reqt.rb +4 -26
  49. data/lib/isodoc/ogc/sections.rb +18 -64
  50. data/lib/isodoc/ogc/word_convert.rb +26 -7
  51. data/lib/isodoc/ogc/xref.rb +28 -23
  52. data/lib/metanorma/ogc/processor.rb +0 -4
  53. data/lib/metanorma/ogc/version.rb +1 -1
  54. data/metanorma-ogc.gemspec +3 -4
  55. metadata +34 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9414ccffb628182f075ac6cb325a701e3e467ec9f63e39b6dc34ffcaf292267
4
- data.tar.gz: 813fed6e91b026a7fd2086fd881df0c8ce71398e96eb25e86d8666d90f8bde60
3
+ metadata.gz: 294cc548cfcdb632298e8cc49a7fe9b83e1961016f6d65e0fca475ff061fcb1b
4
+ data.tar.gz: dd506401c8631fc0a703c928572c6e8959dd6ba8471667924a02f1f3996571e7
5
5
  SHA512:
6
- metadata.gz: 92d1bc132ea6ba8fe709b3be9987032b5d07f49578ca0f47d18559f06376dd8d4f5473e10c64e25b9f888bdec005bfa165f6829bdde41260cc95392f566a4a68
7
- data.tar.gz: 76b456a146b61ba58161226ca05ac9da0f2159ac9bfb2f97bef9012f709880b11a936fd10f07f0d50b8be48c476a8d23d23193de4cc4196f92669972cc9b1c39
6
+ metadata.gz: 608c44343f8690d6fba5be75d538f9fe4844cc441111de17e2674ecc8573095058ca8d471a2b9d77b17b5edd79294481f9c2e7b0d88ef845b0b50a79251c7730
7
+ data.tar.gz: c72fd20a20757bec35cd19f64561b01a87e9a28a30a157396f8768d671be2ac1dfd159054f5fbe78d58e04abe47910d432591c7d9e0af2a79aae7abb0a04d6d1
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  run: |
35
34
  sudo gem install bundler --force
@@ -31,7 +31,6 @@ jobs:
31
31
  uses: actions/setup-ruby@v1
32
32
  with:
33
33
  ruby-version: ${{ matrix.ruby }}
34
- architecture: 'x64'
35
34
  - name: Update gems
36
35
  run: |
37
36
  gem install bundler
@@ -39,15 +38,19 @@ jobs:
39
38
  - name: Run specs
40
39
  run: |
41
40
  bundle exec rake
42
- - name: Trigger dependent repositories
43
- if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
41
+ - name: Trigger repositories
42
+ if: matrix.ruby == '2.6'
44
43
  env:
45
- GH_USERNAME: ${{ secrets.PAT_USERNAME }}
46
- GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
44
+ GH_USERNAME: metanorma-ci
45
+ GH_ACCESS_TOKEN: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
47
46
  run: |
48
47
  curl -LO --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/trigger-gh-actions.sh
49
48
  [[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
50
- for repo in $DEPENDENT_REPOS
49
+ CLIENT_PAYLOAD=$(cat <<EOF
50
+ "{ "ref": "${GITHUB_REF}", "repo": "${GITHUB_REPOSITORY}" }"
51
+ EOF
52
+ )
53
+ for repo in $REPOS
51
54
  do
52
- sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "{ \"ref\": \"${GITHUB_REF}\" }"
55
+ sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "$CLIENT_PAYLOAD"
53
56
  done
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  shell: pwsh
35
34
  run: |
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require 'isodoc/gem_tasks'
3
4
 
5
+ IsoDoc::GemTasks.install
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
8
  task :default => :spec
@@ -3,16 +3,16 @@
3
3
  <clause>
4
4
  <title>Copyright notice</title>
5
5
 
6
- <p>Copyright
6
+ <p align="center">Copyright
7
7
  © {{ docyear }} Open Geospatial Consortium<br/>
8
8
  To obtain additional rights of use, visit
9
9
  <link target="http://www.opengeospatial.org/legal/">http://www.opengeospatial.org/legal/</link></p>
10
10
  </clause>
11
11
  <clause>
12
12
  <title>Note</title>
13
- <p>Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.</p>
13
+ <p align="left">Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.</p>
14
14
 
15
- <p>Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.</p>
15
+ <p align="left">Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.</p>
16
16
  </clause>
17
17
  </copyright-statement>
18
18
  <license-statement>
@@ -55,9 +55,12 @@ module Asciidoctor
55
55
  def outputs(node, ret)
56
56
  File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
57
57
  presentation_xml_converter(node).convert(@filename + ".xml")
58
- html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
59
- doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
60
- pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
58
+ html_converter(node).convert(@filename + ".presentation.xml",
59
+ nil, false, "#{@filename}.html")
60
+ doc_converter(node).convert(@filename + ".presentation.xml",
61
+ nil, false, "#{@filename}.doc")
62
+ pdf_converter(node)&.convert(@filename + ".presentation.xml",
63
+ nil, false, "#{@filename}.pdf")
61
64
  end
62
65
 
63
66
  def validate(doc)
@@ -84,15 +87,16 @@ module Asciidoctor
84
87
  end
85
88
 
86
89
  def clause_parse(attrs, xml, node)
87
- clausetype = node&.attr("heading")&.downcase || node.title.downcase
88
- if clausetype == "submitters" then submitters_parse(attrs, xml, node)
89
- else
90
- super
90
+ case clausetype = node&.attr("heading")&.downcase || node.title.downcase
91
+ when "submitters" then return submitters_parse(attrs, xml, node)
92
+ when "conformance" then attrs = attrs.merge(type: "conformance")
91
93
  end
94
+ super
92
95
  end
93
96
 
94
97
  def submitters_parse(attrs, xml, node)
95
98
  xml.submitters **attr_code(attrs) do |xml_section|
99
+ xml_section.title @i18n.submitters
96
100
  xml_section << node.content
97
101
  end
98
102
  end
@@ -12,8 +12,8 @@ module Asciidoctor
12
12
 
13
13
  def corporate_author(node, xml)
14
14
  return unless node.attr("submitting-organizations")
15
- HTMLEntities.new.decode(node.attr("submitting-organizations")).
16
- split(/;[ ]*/).each do |org|
15
+ csv_split(HTMLEntities.new.decode(node.attr("submitting-organizations")),
16
+ ";")&.each do |org|
17
17
  xml.contributor do |c|
18
18
  c.role **{ type: "author" }
19
19
  c.organization do |a|
@@ -63,13 +63,8 @@ module Asciidoctor
63
63
  end
64
64
  end
65
65
 
66
- def metadata_publisher(node, xml)
67
- xml.contributor do |c|
68
- c.role **{ type: "publisher" }
69
- c.organization do |a|
70
- a.name Metanorma::Ogc::ORGANIZATION_NAME_SHORT
71
- end
72
- end
66
+ def default_publisher
67
+ "Open Geospatial Consortium"
73
68
  end
74
69
 
75
70
  def metadata_committee(node, xml)
@@ -123,16 +118,9 @@ module Asciidoctor
123
118
  end
124
119
 
125
120
  def metadata_copyright(node, xml)
126
- from = node.attr("copyright-year") || node.attr("copyrightyear") ||
127
- Date.today.year
128
- xml.copyright do |c|
129
- c.from from
130
- c.owner do |owner|
131
- owner.organization do |o|
132
- o.name Metanorma::Ogc::ORGANIZATION_NAME_SHORT
133
- end
134
- end
135
- end
121
+ node.attr("copyrightyear") and
122
+ node.set_attr("copyright-year", node.attr("copyrightyear"))
123
+ super
136
124
  end
137
125
 
138
126
  def metadata_date(node, xml)
@@ -922,6 +922,9 @@
922
922
  <optional>
923
923
  <attribute name="script"/>
924
924
  </optional>
925
+ <optional>
926
+ <attribute name="type"/>
927
+ </optional>
925
928
  <optional>
926
929
  <attribute name="obligation">
927
930
  <choice>
@@ -961,9 +964,6 @@
961
964
  </define>
962
965
  <define name="content-subsection">
963
966
  <element name="clause">
964
- <optional>
965
- <attribute name="type"/>
966
- </optional>
967
967
  <ref name="Content-Section"/>
968
968
  </element>
969
969
  </define>
@@ -992,6 +992,9 @@
992
992
  </choice>
993
993
  </attribute>
994
994
  </optional>
995
+ <optional>
996
+ <attribute name="type"/>
997
+ </optional>
995
998
  <optional>
996
999
  <ref name="section-title"/>
997
1000
  </optional>
@@ -1011,9 +1014,6 @@
1011
1014
  </define>
1012
1015
  <define name="clause">
1013
1016
  <element name="clause">
1014
- <optional>
1015
- <attribute name="type"/>
1016
- </optional>
1017
1017
  <ref name="Clause-Section"/>
1018
1018
  </element>
1019
1019
  </define>
@@ -1042,6 +1042,9 @@
1042
1042
  </choice>
1043
1043
  </attribute>
1044
1044
  </optional>
1045
+ <optional>
1046
+ <attribute name="type"/>
1047
+ </optional>
1045
1048
  <optional>
1046
1049
  <ref name="section-title"/>
1047
1050
  </optional>
@@ -1180,6 +1183,9 @@
1180
1183
  <optional>
1181
1184
  <attribute name="script"/>
1182
1185
  </optional>
1186
+ <optional>
1187
+ <attribute name="type"/>
1188
+ </optional>
1183
1189
  <optional>
1184
1190
  <attribute name="obligation">
1185
1191
  <choice>
@@ -49,35 +49,25 @@ module Asciidoctor
49
49
  [
50
50
  {
51
51
  msg: "Prefatory material must be followed by (clause) Scope",
52
- val: [{ tag: "clause", title: "Scope" }],
52
+ val: ["./self::clause[@type = 'scope']" ]
53
53
  },
54
54
  {
55
55
  msg: "Scope must be followed by Conformance",
56
- val: [{ tag: "clause", title: "Conformance" }],
56
+ val: ["./self::clause[@type = 'conformance']" ]
57
57
  },
58
58
  {
59
59
  msg: "Normative References must be followed by "\
60
60
  "Terms and Definitions",
61
- val: [
62
- { tag: "terms", title: "Terms and definitions" },
63
- { tag: "clause", title: "Terms and definitions" },
64
- {
65
- tag: "terms",
66
- title: "Terms, definitions, symbols and abbreviated terms",
67
- },
68
- {
69
- tag: "clause",
70
- title: "Terms, definitions, symbols and abbreviated terms",
71
- },
72
- ],
61
+ val: ["./self::terms | .//terms"]
73
62
  },
74
63
  ].freeze
75
64
 
76
65
  def seqcheck(names, msg, accepted)
77
66
  n = names.shift
78
- unless accepted.include? n
67
+ return [] if n.nil?
68
+ test = accepted.map { |a| n.at(a) }
69
+ if test.all? { |a| a.nil? }
79
70
  @log.add("Style", nil, msg)
80
- names = []
81
71
  end
82
72
  names
83
73
  end
@@ -85,23 +75,21 @@ module Asciidoctor
85
75
  def sections_sequence_validate(root)
86
76
  return unless STANDARDTYPE.include?(
87
77
  root&.at("//bibdata/ext/doctype")&.text)
88
- f = root.at("//sections").elements
89
- names = f.map { |s| { tag: s.name, title: s&.at("./title")&.text } }
90
- names = seqcheck(names, SEQ[0][:msg], SEQ[0][:val]) || return
91
- names = seqcheck(names, SEQ[1][:msg], SEQ[1][:val]) || return
92
- names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val]) || return
78
+ names = root.xpath("//sections/* | //bibliography/*")
79
+ names = seqcheck(names, SEQ[0][:msg], SEQ[0][:val])
80
+ names = seqcheck(names, SEQ[1][:msg], SEQ[1][:val])
81
+ names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val])
93
82
  n = names.shift
94
- if !n.nil? && n[:tag] == "definitions"
83
+ if n&.at("./self::definitions")
95
84
  n = names.shift
96
85
  end
97
- unless n
86
+ if n.nil? || n.name != "clause"
98
87
  @log.add("Style", nil, "Document must contain at least one clause")
99
88
  return
100
89
  end
101
90
  root.at("//references | //clause[descendant::references]"\
102
91
  "[not(parent::clause)]") or
103
- seqcheck([{tag: "clause"}],
104
- "Normative References are mandatory", [{tag: "references"}])
92
+ @log.add("Style", nil, "Normative References are mandatory")
105
93
  end
106
94
 
107
95
  def preface_sequence_validate(root)
@@ -1,5 +1,4 @@
1
1
  require "isodoc"
2
- require_relative "metadata"
3
2
  require_relative "reqt"
4
3
  require_relative "biblio"
5
4
  require_relative "sections"
@@ -8,18 +7,6 @@ require "fileutils"
8
7
  module IsoDoc
9
8
  module Ogc
10
9
  module BaseConvert
11
- def metadata_init(lang, script, labels)
12
- @meta = Metadata.new(lang, script, labels)
13
- end
14
-
15
- def xref_init(lang, script, klass, labels, options)
16
- @xrefs = Xref.new(lang, script, klass, labels, options)
17
- end
18
-
19
- def fileloc(loc)
20
- File.join(File.dirname(__FILE__), loc)
21
- end
22
-
23
10
  def cleanup(docxml)
24
11
  requirement_table_cleanup(docxml)
25
12
  super
@@ -55,14 +42,6 @@ module IsoDoc
55
42
  docxml
56
43
  end
57
44
 
58
- def load_yaml(lang, script)
59
- y = if @i18nyaml then YAML.load_file(@i18nyaml)
60
- else
61
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
62
- end
63
- super.merge(y)
64
- end
65
-
66
45
  def example_parse(node, out)
67
46
  name = node.at(ns("./name"))
68
47
  example_name_parse(node, out, name) #if name
@@ -73,17 +52,14 @@ module IsoDoc
73
52
  end
74
53
 
75
54
  def example_name_parse(node, div, name)
76
- lbl = @xrefs.anchor(node['id'], :label, false)
77
55
  div.p **{ class: "SourceTitle", style: "text-align:center;" } do |p|
78
- lbl.nil? or p << l10n("#{@example_lbl} #{lbl}")
79
- name and !lbl.nil? and p << "&nbsp;&mdash; "
80
56
  name&.children&.each { |n| parse(n, p) }
81
57
  end
82
58
  end
83
59
 
84
60
  def middle_clause
85
- "//clause[parent::sections][not(xmlns:title = 'Scope' or "\
86
- "xmlns:title = 'Conformance')][not(descendant::terms)]"
61
+ "//clause[parent::sections][not(@type = 'scope' or "\
62
+ "@type = 'conformance')][not(descendant::terms)]"
87
63
  end
88
64
 
89
65
  def middle(isoxml, out)
@@ -60,13 +60,34 @@ module IsoDoc
60
60
  return [multiplenames_and(names), (abbrs.map { |x| x.text }).join("/")]
61
61
  end
62
62
 
63
+ def extract_author(b)
64
+ c = b.xpath(ns("./contributor[role/@type = 'author']"))
65
+ c = b.xpath(ns("./contributor[role/@type = 'editor']")) if c.empty?
66
+ return nil if c.empty?
67
+ c.map do |c1|
68
+ c1&.at(ns("./organization/name"))&.text || extract_person_name(c1)
69
+ end.reject { |e| e.nil? || e.empty? }.join(", ")
70
+ end
71
+
72
+ def extract_person_name(b)
73
+ p = b.at(ns("./person/name")) or return
74
+ c = p.at(ns("./completename")) and return c.text
75
+ s = p&.at(ns("./surname"))&.text or return
76
+ i = p.xpath(ns("./initial")) and
77
+ front = i.map { |e| e.text.gsub(/[^[:upper:]]/, "") }.join("")
78
+ i.empty? and f = p.xpath(ns("./forename")) and
79
+ front = f.map { |e| e.text[0].upcase }.join("")
80
+ front ? "#{s} #{front}" : s
81
+ end
82
+
83
+
63
84
  def date_render(date)
64
85
  return nil if date.nil?
65
86
  on = date&.at(ns("./on"))&.text
66
87
  from = date&.at(ns("./from"))&.text
67
88
  to = date&.at(ns("./to"))&.text
68
- return on if on
69
- return "#{from}&ndash;#{to}" if from
89
+ return on if on && !on.empty?
90
+ return "#{from}&ndash;#{to}" if from && !from.empty?
70
91
  nil
71
92
  end
72
93
 
@@ -82,17 +103,24 @@ module IsoDoc
82
103
  b.at(ns("./place"))
83
104
  end
84
105
 
106
+ def extract_uri(b)
107
+ b.at(ns("./uri"))
108
+ end
109
+
85
110
  # {author}: {document identifier}, {title}. {publisher}, {city} ({year})
86
111
  def standard_citation(out, b)
87
112
  if ftitle = b.at(ns("./formattedref"))
88
113
  ftitle&.children&.each { |n| parse(n, out) }
89
114
  else
90
115
  pub, pub_abbrev = extract_publisher(b)
116
+ author = extract_author(b)
91
117
  c = extract_city(b)
92
118
  y = extract_year(b)
93
- out << "#{pub_abbrev}: " if pub_abbrev
119
+ u = extract_uri(b)
120
+ out << "#{author || pub_abbrev}: " if author || pub_abbrev
94
121
  id = render_identifier(inline_bibitem_ref_code(b))
95
122
  out << id[1] if id[1]
123
+ out << " (Draft)" if ogc_draft_ref?(b)
96
124
  out << ", "
97
125
  out.i do |i|
98
126
  iso_title(b)&.children&.each { |n| parse(n, i) }
@@ -102,7 +130,8 @@ module IsoDoc
102
130
  out << ", " if pub && c
103
131
  c&.children&.each { |n| parse(n, out) }
104
132
  out << " " if (pub || c) && y
105
- out << "(#{y})." if y
133
+ out << "(#{y}). " if y
134
+ u and out << "<a href='#{u.text}'>#{u.text}</a>"
106
135
  end
107
136
  end
108
137
 
@@ -0,0 +1,195 @@
1
+ .coverpage-maturity, .coverpage-stage {
2
+ font-family: {{headerfont}};
3
+ font-weight: 400;
4
+ font-size: 1.3em;
5
+ margin: 0 0 2em 0;
6
+ text-transform: uppercase; }
7
+
8
+ .icon-svg {
9
+ width: 100%;
10
+ color: #5ecf86; }
11
+
12
+ .wrapper-top {
13
+ background: #00335b;
14
+ background: linear-gradient(130deg, #00335b 45%, #f1f8ff 100%);
15
+ color: #ffffff;
16
+ padding: 5em 0;
17
+ width: 100%; }
18
+
19
+ .wrapper-top-bottom {
20
+ width: 0;
21
+ height: 0;
22
+ border-top: 100px solid #00335b;
23
+ border-right: 100px solid transparent;
24
+ position: absolute; }
25
+
26
+ .coverpage-metadata {
27
+ margin-top: 35px;
28
+ padding-top: 15px;
29
+ margin-right: 25px;
30
+ border-top: solid 1px white; }
31
+
32
+ .coverpage-metadata,
33
+ .coverpage-alt-formats {
34
+ font-size: 12px;
35
+ font-family: {{headerfont}};
36
+ margin-left: 1em;
37
+ text-align: left; }
38
+ .coverpage-metadata span,
39
+ .coverpage-alt-formats span {
40
+ display: block;
41
+ text-align: left; }
42
+ .coverpage-metadata span a,
43
+ .coverpage-alt-formats span a {
44
+ color: white; }
45
+ .coverpage-metadata span a:hover,
46
+ .coverpage-alt-formats span a:hover {
47
+ text-decoration: underline;
48
+ background: none;
49
+ box-shadow: none !important;
50
+ font-weight: 400; }
51
+ .coverpage-metadata .value,
52
+ .coverpage-alt-formats .value {
53
+ font-size: 15px;
54
+ margin-bottom: 15px; }
55
+ .coverpage-metadata .label,
56
+ .coverpage-alt-formats .label {
57
+ font-size: 12px;
58
+ padding: 0; }
59
+
60
+ .coverpage-alt-formats span {
61
+ display: inline;
62
+ text-align: left; }
63
+ .coverpage-alt-formats span a {
64
+ padding-right: 5px; }
65
+
66
+ .coverpage-title {
67
+ padding-bottom: 0.5em;
68
+ font-family: {{headerfont}};
69
+ font-weight: 100;
70
+ padding-left: 1em;
71
+ padding-right: 1em; }
72
+ .coverpage-title span {
73
+ font-family: {{headerfont}};
74
+ font-size: 1.8em;
75
+ line-height: 1; }
76
+
77
+ .docstage-box table {
78
+ width: auto; }
79
+
80
+ .docstage-box th {
81
+ background-color: #93c0d6; }
82
+
83
+ .docstage-box td {
84
+ vertical-align: top;
85
+ background-color: #daeef3;
86
+ padding: 0.5em;
87
+ border: 0; }
88
+
89
+ .docstage-box th:first-child {
90
+ border-radius: 1em 0 0 0; }
91
+
92
+ .docstage-box th:last-child {
93
+ border-radius: 0 1em 0 0; }
94
+
95
+ .docstage-box tr:first-child {
96
+ border-radius: 0 0 0 1em; }
97
+
98
+ .docstage-box tr:last-child {
99
+ border-radius: 0 1em 0 0; }
100
+
101
+ .docstage-box tr:last-child > td:first-child {
102
+ border-radius: 0 0 0 1em; }
103
+
104
+ .docstage-box tr:last-child > td:last-child {
105
+ border-radius: 0 0 1em 0; }
106
+
107
+ .WordSection11 {
108
+ padding: 0 2em 0 3em; }
109
+
110
+ .info-section {
111
+ padding: 0 2em 0 5em; }
112
+
113
+ .prefatory-section {
114
+ padding: 0 3em 0 6em; }
115
+
116
+ .zzSTDTitle1, .MsoCommentText {
117
+ display: none; }
118
+
119
+ .coverpage {
120
+ text-align: center;
121
+ padding-left: 1.5em; }
122
+
123
+ .coverpage-logo span, .coverpage-tc-name span {
124
+ font-family: {{bodyfont}};
125
+ text-transform: none;
126
+ font-weight: 300;
127
+ margin-left: 1em; }
128
+
129
+ .coverpage-tc-name {
130
+ font-size: 1.2em;
131
+ line-height: 1.2em;
132
+ margin: 0.25em 0; }
133
+
134
+ .copyright {
135
+ padding: 1em;
136
+ font-size: 0.9em;
137
+ text-align: left; }
138
+
139
+ /* Document Identity */
140
+ .coverpage-doc-identity {
141
+ font-size: 2em;
142
+ line-height: 2em; }
143
+
144
+ .coverpage-title .title-second {
145
+ display: none; }
146
+
147
+ .coverpage-stage-block {
148
+ font-family: {{headerfont}};
149
+ font-weight: 600;
150
+ font-size: 1.25em;
151
+ margin: 2em 0em 2em 0em;
152
+ text-transform: uppercase; }
153
+
154
+ .authors {
155
+ margin-top: 2em; }
156
+ .authors span {
157
+ display: block;
158
+ line-height: 2; }
159
+ .authors span.roletag {
160
+ display: inline-block;
161
+ font-size: 12px;
162
+ color: #00335b;
163
+ background-color: white;
164
+ padding: 2px 5px;
165
+ margin-left: 7px;
166
+ border-radius: 5px; }
167
+
168
+ /* Draft Warning */
169
+ .coverpage-warning {
170
+ border: #f36f36 solid 2px;
171
+ color: #f36f36 !important;
172
+ margin: 1em 2em;
173
+ color: #2e81c2;
174
+ padding: 2em 1em 1em 1em;
175
+ border-radius: 25px; }
176
+ .coverpage-warning h1 {
177
+ font-family: {{headerfont}};
178
+ font-weight: 300;
179
+ text-transform: uppercase;
180
+ font-size: 1.2em; }
181
+
182
+ @media print {
183
+ .document-info, .copyright {
184
+ page-break-before: always; }
185
+ .coverpage {
186
+ height: 23cm; }
187
+ .info-section {
188
+ display: none; }
189
+ .wrapper-top {
190
+ top: 0;
191
+ padding-top: 4cm;
192
+ padding-bottom: 4cm; }
193
+ .wrapper-top-bottom {
194
+ margin-top: -5px;
195
+ display: none; } }