isodoc 2.12.9 → 3.0.1

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.
@@ -12,7 +12,7 @@ module IsoDoc
12
12
  ret = ""
13
13
  @sourcehighlighter and ret += rouge_css_location
14
14
  a = docxml.at(ns("//metanorma-extension/" \
15
- "clause[title = 'user-css']/sourcecode")) and
15
+ "clause[title = 'user-css']/sourcecode/body")) and
16
16
  ret += "\n#{to_xml(a.children)}"
17
17
  ret
18
18
  end
@@ -34,7 +34,7 @@ module IsoDoc
34
34
 
35
35
  def callouts(elem)
36
36
  elem.xpath(ns(".//callout")).each do |c|
37
- @callouts[c["target"]] = c.children.to_xml
37
+ @callouts[c["target"]] = to_xml(c.children)
38
38
  end
39
39
  end
40
40
 
@@ -42,36 +42,67 @@ module IsoDoc
42
42
  sourcehighlighter_css(docxml)
43
43
  @highlighter = sourcehighlighter
44
44
  @callouts = {}
45
- docxml.xpath(ns("//sourcecode")).each do |f|
45
+ (docxml.xpath(ns("//sourcecode")) -
46
+ docxml.xpath(ns("//metanorma-extension//sourcecode")))
47
+ .each do |f|
46
48
  sourcecode1(f)
47
49
  end
48
50
  end
49
51
 
50
52
  def sourcecode1(elem)
51
- source_highlight(elem)
53
+ ret1 = semx_fmt_dup(elem)
54
+ b = ret1.at(ns(".//body")) and b.replace(b.children)
55
+ #sourcecode_annot_id(elem)
52
56
  source_label(elem)
57
+ source_highlight(ret1, elem["linenums"] == "true", elem["lang"])
53
58
  callouts(elem)
54
- annotations(elem)
59
+ annotations(elem, ret1)
60
+ fmt_sourcecode(elem, ret1)
55
61
  end
56
62
 
57
- def annotations(elem)
63
+ def fmt_sourcecode(elem, ret1)
64
+ ret = Nokogiri::XML::Node.new("fmt-#{elem.name}", elem.document)
65
+ elem.attributes.each_key { |x| x != "id" and ret[x] = elem[x] }
66
+ ret1.xpath(ns("./name")).each(&:remove)
67
+ ret << ret1.children
68
+ elem << ret
69
+ end
70
+
71
+ # KILL
72
+ def sourcecode_annot_id(elem)
73
+ elem.xpath(ns("./annotation")).each do |a|
74
+ if a["original-id"]
75
+ a["id"] = a["original-id"]
76
+ a.delete("original-id")
77
+ end
78
+ a.xpath(".//*[@original-id]").each do |n|
79
+ n["id"] = n["original-id"]
80
+ n.delete("original-id")
81
+ end
82
+ end
83
+ end
84
+
85
+ def annotations(elem, fmt_elem)
58
86
  elem.at(ns("./annotation")) or return
59
87
  ret = ""
60
88
  elem.xpath(ns("./annotation")).each do |a|
61
- a.remove
89
+ id = a['original-id']
90
+ dd = semx_fmt_dup(a)
91
+ dd["source"] = a["id"]
62
92
  ret += <<~OUT
63
- <dt id='#{a['id']}'><span class='c'>#{@callouts[a['id']]}</span></dt>
64
- <dd>#{a.children.to_xml}</dd>
93
+ <dt id='#{id}'><span class='c'>#{@callouts[id]}</span></dt>
94
+ <dd>#{to_xml dd}</dd>
65
95
  OUT
66
96
  end
67
- elem << "<dl><name>#{@i18n.key}</name>#{ret}</dl>"
97
+ fmt_elem.xpath(ns("./annotation")).each(&:remove)
98
+ fmt_elem << "<dl><name>#{@i18n.key}</name>#{ret}</dl>"
68
99
  end
69
100
 
70
- def source_highlight(elem)
101
+ def source_highlight(elem, linenums, lang)
71
102
  @highlighter or return
72
103
  markup = source_remove_markup(elem)
73
- p = source_lex(elem)
74
- elem.children = if elem["linenums"] == "true"
104
+ p = source_lex(elem, lang)
105
+ elem.children = if linenums
75
106
  r = sourcecode_table_to_elem(elem, p)
76
107
  source_restore_markup_table(r, markup)
77
108
  else
@@ -140,8 +171,8 @@ module IsoDoc
140
171
  r
141
172
  end
142
173
 
143
- def source_lex(elem)
144
- lexer = Rouge::Lexer.find(elem["lang"] || "plaintext") ||
174
+ def source_lex(elem, lang)
175
+ lexer = Rouge::Lexer.find(lang || "plaintext") ||
145
176
  Rouge::Lexer.find("plaintext")
146
177
  l = Rouge::Lexers::Escape.new(start: "{^^{", end: "}^^}", lang: lexer)
147
178
  source = to_xml(elem.children).gsub(/</, "{^^{<").gsub(/>/, ">}^^}")
@@ -1,5 +1,18 @@
1
1
  module IsoDoc
2
2
  class PresentationXMLConvert < ::IsoDoc::Convert
3
+ def fmt_ref(docxml)
4
+ docxml.xpath(ns("//xref | //eref | //origin | //link")).each do |x|
5
+ sem_xml_descendant?(x) and next
6
+ tag = x.name
7
+ y = Nokogiri::XML::Node.new("fmt-#{tag}", x.document)
8
+ x.attributes.each_key { |a| y[a] = x[a] }
9
+ n = semx_fmt_dup(x) # semx/fmt-xref for ease of processing
10
+ n.children.each { |c| y << c }
11
+ n << y
12
+ x.next = n
13
+ end
14
+ end
15
+
3
16
  def prefix_container(container, linkend, node, target)
4
17
  prefix_container?(container, node) or return linkend
5
18
  container_container = @xrefs.anchor(container, :container, false)
@@ -126,7 +139,7 @@ module IsoDoc
126
139
 
127
140
  def loc2xref(entry)
128
141
  if entry[:target]
129
- "<xref nested='true' target='#{entry[:target]}'>#{entry[:label]}</xref>"
142
+ "<fmt-xref nested='true' target='#{entry[:target]}'>#{entry[:label]}</fmt-xref>"
130
143
  else
131
144
  entry[:label]
132
145
  end
@@ -28,9 +28,27 @@ module IsoDoc
28
28
  @xrefs.klass.info docxml, nil
29
29
  conversions(docxml)
30
30
  docxml.root["type"] = "presentation"
31
+ repeat_id_validate(docxml.root)
31
32
  docxml.to_xml.gsub("&lt;", "&#x3c;").gsub("&gt;", "&#x3e;")
32
33
  end
33
34
 
35
+ def repeat_id_validate1(elem)
36
+ if @doc_ids[elem["id"]]
37
+ @log.add("Anchors", elem,
38
+ "Anchor #{elem['id']} has already been " \
39
+ "used at line #{@doc_ids[elem['id']]}", severity: 0)
40
+ end
41
+ @doc_ids[elem["id"]] = elem.line
42
+ end
43
+
44
+ def repeat_id_validate(doc)
45
+ @log or return
46
+ @doc_ids = {}
47
+ doc.xpath("//*[@id]").each do |x|
48
+ repeat_id_validate1(x)
49
+ end
50
+ end
51
+
34
52
  def bibitem_lookup(docxml)
35
53
  @bibitem_lookup ||= docxml.xpath(ns("//references/bibitem"))
36
54
  .each_with_object({}) do |b, m|
@@ -71,7 +89,6 @@ module IsoDoc
71
89
  end
72
90
 
73
91
  def block(docxml)
74
- amend docxml
75
92
  table docxml
76
93
  figure docxml
77
94
  sourcecode docxml
@@ -88,15 +105,18 @@ module IsoDoc
88
105
  requirement docxml
89
106
  recommendation docxml
90
107
  requirement_render docxml
108
+ amend docxml
91
109
  end
92
110
 
93
111
  def inline(docxml)
94
112
  bibitem_lookup(docxml) # feeds citeas
95
- citeas docxml # feeds xref, eref, origin, quotesource
113
+ fmt_ref docxml # feeds citeas, xref, eref, origin, concept
114
+ citeas docxml # feeds xref, eref, origin, concept
96
115
  xref docxml
97
116
  eref docxml # feeds eref2link
98
117
  origin docxml # feeds eref2link
99
- quotesource docxml # feeds eref2link
118
+ #quotesource docxml # feeds eref2link
119
+ concept docxml
100
120
  eref2link docxml
101
121
  mathml docxml
102
122
  ruby docxml
@@ -114,7 +134,7 @@ module IsoDoc
114
134
  termdefinition docxml
115
135
  designation docxml
116
136
  termsource docxml
117
- concept docxml
137
+ #concept docxml
118
138
  related docxml
119
139
  termcleanup docxml
120
140
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "sassc"
3
+ require "sassc-embedded"
4
4
 
5
5
  class SasscImporter < SassC::Importer
6
6
  def imports(path, _parent_path)
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "2.12.9".freeze
2
+ VERSION = "3.0.1".freeze
3
3
  end
@@ -134,7 +134,7 @@ module IsoDoc
134
134
  def formula_parse1(node, out)
135
135
  out.div **attr_code(class: "formula") do |div|
136
136
  div.p do |_p|
137
- parse(node.at(ns("./stem")), div)
137
+ parse(node.at(ns("./fmt-stem")), div)
138
138
  insert_tab(div, 1)
139
139
  if lbl = node&.at(ns("./fmt-name"))&.text
140
140
  div << lbl
@@ -124,6 +124,7 @@ module IsoDoc
124
124
 
125
125
  def preface_name_anchors(clause, level, title)
126
126
  xref = semx(clause, title, clause.name)
127
+ clause["id"] ||= "_#{UUIDTools::UUID.random_create}"
127
128
  @anchors[clause["id"]] =
128
129
  { label: nil, level:,
129
130
  xref:, title: nil,
@@ -187,6 +188,7 @@ module IsoDoc
187
188
  xref = labelled_autonum(@labels["clause"], num)
188
189
  label = num
189
190
  c = clause_title(clause) and title = semx(clause, c, "title")
191
+ clause["id"] ||= "_#{UUIDTools::UUID.random_create}"
190
192
  @anchors[clause["id"]] =
191
193
  { label:, xref:, title:, level:, type: "clause",
192
194
  elem: @labels["clause"] }
@@ -207,10 +209,10 @@ module IsoDoc
207
209
  label = num
208
210
  level == 1 && clause.name == "annex" and
209
211
  label = annex_name_lbl(clause, label)
210
- xref = labelled_autonum(@labels["annex"], num)
211
212
  c = clause_title(clause) and title = semx(clause, c, "title")
213
+ clause["id"] ||= "_#{UUIDTools::UUID.random_create}"
212
214
  @anchors[clause["id"]] =
213
- { label:, xref:, title:,
215
+ { label:, xref: labelled_autonum(@labels["annex"], num), title:,
214
216
  elem: @labels["annex"], type: "clause",
215
217
  subtype: "annex", value: num.to_s, level: }
216
218
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isodoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.12.9
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-03 00:00:00.000000000 Z
11
+ date: 2025-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.4.0
75
+ version: 0.5.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.4.0
82
+ version: 0.5.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: relaton-render
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -291,19 +291,19 @@ dependencies:
291
291
  - !ruby/object:Gem::Version
292
292
  version: 1.5.2
293
293
  - !ruby/object:Gem::Dependency
294
- name: sassc
294
+ name: sassc-embedded
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
297
  - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: 2.4.0
299
+ version: '1'
300
300
  type: :development
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: 2.4.0
306
+ version: '1'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: simplecov
309
309
  requirement: !ruby/object:Gem::Requirement
@@ -375,8 +375,8 @@ files:
375
375
  - lib/isodoc-yaml/i18n-ru.yaml
376
376
  - lib/isodoc-yaml/i18n-zh-Hans.yaml
377
377
  - lib/isodoc.rb
378
- - lib/isodoc/base_style/all.css
379
378
  - lib/isodoc/base_style/all.scss
379
+ - lib/isodoc/base_style/bands.css
380
380
  - lib/isodoc/base_style/bands.scss
381
381
  - lib/isodoc/base_style/blocks.css
382
382
  - lib/isodoc/base_style/blocks.scss
@@ -1,368 +0,0 @@
1
- @charset "UTF-8";
2
- html, body, div, span, applet, object, iframe,
3
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
4
- a, abbr, acronym, address, big, cite, code,
5
- del, dfn, em, img, ins, kbd, q, s, samp,
6
- small, strike, strong, sub, sup, tt, var,
7
- b, u, i, center,
8
- ol, ul, li,
9
- fieldset, form, label, legend,
10
- table, caption, tbody, tfoot, thead, tr, th, td,
11
- article, aside, canvas, details, embed,
12
- figure, figcaption, footer, header, hgroup,
13
- menu, output, ruby, section, summary,
14
- time, mark, audio, video {
15
- margin: 0;
16
- padding: 0; }
17
-
18
- html, body, div, span, applet, object, iframe,
19
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
20
- a, abbr, acronym, address, big, cite, code,
21
- del, dfn, em, img, ins, kbd, q, s, samp,
22
- small, strike, strong, sub, sup, tt, var,
23
- b, u, i, center,
24
- dl, dt, dd, ol, ul, li,
25
- fieldset, form, label, legend,
26
- table, caption, tbody, tfoot, thead, tr, th, td,
27
- article, aside, canvas, details, embed,
28
- figure, figcaption, footer, header, hgroup,
29
- menu, nav, output, ruby, section, summary,
30
- time, mark, audio, video {
31
- border: 0;
32
- font-size: 100%; }
33
-
34
- html, body, div, span, applet, object, iframe,
35
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
36
- a, abbr, acronym, address, big, cite, code,
37
- del, dfn, em, img, ins, kbd, q, s, samp,
38
- small, strike, strong, tt, var,
39
- b, u, i, center,
40
- dl, dd, ol, ul, li,
41
- fieldset, form, label, legend,
42
- table, caption, tbody, tfoot, thead, tr, th, td,
43
- article, aside, canvas, details, embed,
44
- figure, figcaption, footer, header, hgroup,
45
- menu, nav, output, ruby, section, summary,
46
- time, mark, audio, video {
47
- vertical-align: baseline; }
48
-
49
- html, body, div, span, applet, object, iframe,
50
- p, blockquote,
51
- a, abbr, acronym, address, big, cite,
52
- del, dfn, em, img, ins, q, s,
53
- small, strike, strong, sub, sup, var,
54
- b, u, i, center,
55
- dl, dt, dd, ol, ul, li,
56
- fieldset, form, label, legend,
57
- table, caption, tbody, tfoot, thead, tr, th, td,
58
- article, aside, canvas, details, embed,
59
- figure, figcaption, footer, header, hgroup,
60
- menu, nav, output, ruby, section, summary,
61
- time, mark, audio, video {
62
- font-family: {{bodyfont}}; }
63
-
64
- code, pre, tt, kbd, samp {
65
- font-family: {{monospacefont}};
66
- font-variant-ligatures: none; }
67
-
68
- code *, pre *, tt *, kbd *, samp * {
69
- font-family: {{monospacefont}} !important;
70
- font-variant-ligatures: none; }
71
-
72
- p code, dt code, li code, label code, legend code, caption code, th code, td code,
73
- p tt, dt tt, li tt, label tt, legend tt, caption tt, th tt, td tt,
74
- p kbd, dt kbd, li kbd, label kbd, legend kbd, caption kbd, th kbd, td kbd,
75
- p samp, dt samp, li samp, label samp, legend samp, caption samp, th samp, td samp {
76
- font-size: {{monospacefontsize}}; }
77
-
78
- sub, sup {
79
- font-size: 0.75em; }
80
-
81
- article, aside, details, figcaption, figure,
82
- footer, header, hgroup, menu, nav, section {
83
- display: block; }
84
-
85
- table {
86
- border-collapse: collapse;
87
- border-spacing: 0; }
88
-
89
- h1, h2, h3, h4, h5, h6 {
90
- font-family: {{headerfont}}; }
91
-
92
- .h1, .h2, .h3, .h4, .h5, .h6 {
93
- font-family: {{headerfont}}; }
94
-
95
- blockquote, q {
96
- quotes: none; }
97
- blockquote::before, blockquote::after, q::before, q::after {
98
- content: '';
99
- content: none; }
100
-
101
- .h2Annex {
102
- font-family: {{headerfont}}; }
103
-
104
- dl {
105
- display: grid;
106
- grid-template-columns: max-content auto; }
107
- dl dt p, dl dd p {
108
- margin-top: 0; }
109
- dl dt {
110
- grid-column-start: 1; }
111
- dl dd {
112
- grid-column-start: 2; }
113
-
114
- b, strong {
115
- font-weight: bold; }
116
-
117
- div.document-stage-band, div.document-type-band {
118
- background-color: #333333; }
119
-
120
- a.FootnoteRef + a.FootnoteRef::before {
121
- content: ", ";
122
- vertical-align: super; }
123
-
124
- a.TableFootnoteRef + a.TableFootnoteRef::before {
125
- content: ", ";
126
- vertical-align: super; }
127
-
128
- a.TableFootnoteRef, span.TableFootnoteRef,
129
- a.FootnoteRef, span.FootnoteRef {
130
- vertical-align: super; }
131
-
132
- .addition {
133
- color: blue; }
134
-
135
- .deletion {
136
- color: red;
137
- text-decoration: line-through; }
138
-
139
- ruby {
140
- ruby-position: over;
141
- -webkit-ruby-position: before; }
142
-
143
- ruby ruby {
144
- ruby-position: under;
145
- -webkit-ruby-position: after; }
146
-
147
- /* code highlighting with line numbers */
148
- table.rouge-line-table td.rouge-gutter {
149
- -moz-user-select: none;
150
- -ms-user-select: none;
151
- -webkit-user-select: none;
152
- user-select: none;
153
- padding-right: 1em; }
154
-
155
- table.rouge-line-table td.rouge-code {
156
- -moz-user-select: all;
157
- -ms-user-select: all;
158
- -webkit-user-select: all;
159
- user-select: all; }
160
-
161
- table.rouge-line-table,
162
- table.rouge-line-table th,
163
- table.rouge-line-table td {
164
- width: auto;
165
- border: none;
166
- margin: 0;
167
- padding: 0;
168
- font-size: 100%; }
169
-
170
- table.rouge-line-table pre {
171
- margin: 0;
172
- padding: 0;
173
- overflow-x: visible;
174
- font-size: 100%; }
175
-
176
- /* header § links */
177
- a.header {
178
- color: inherit;
179
- text-decoration: none; }
180
-
181
- a.header:hover {
182
- color: #a53221 !important;
183
- background: inherit;
184
- box-shadow: none; }
185
-
186
- a.header:visited {
187
- color: inherit;
188
- text-decoration: none; }
189
-
190
- a.anchor {
191
- position: absolute;
192
- z-index: 1001;
193
- width: 1.5ex;
194
- margin-left: -1.5ex;
195
- display: block;
196
- text-decoration: none !important;
197
- visibility: hidden;
198
- text-align: center;
199
- font-weight: 400; }
200
-
201
- a.anchor::before {
202
- content: "\00A7";
203
- font-size: .85em;
204
- display: block;
205
- padding-top: .1em; }
206
-
207
- a.anchor:hover {
208
- color: #a53221;
209
- background: inherit;
210
- box-shadow: none; }
211
-
212
- h1 > a.anchor:hover,
213
- h2 > a.anchor:hover,
214
- h3 > a.anchor:hover,
215
- h4 > a.anchor:hover,
216
- h5 > a.anchor:hover,
217
- h6 > a.anchor:hover,
218
- .inline-header > a.anchor:hover,
219
- h1:hover > a.anchor,
220
- h2:hover > a.anchor,
221
- h3:hover > a.anchor,
222
- h4:hover > a.anchor,
223
- h5:hover > a.anchor,
224
- h6:hover > a.anchor,
225
- .inline-header:hover > a.anchor {
226
- visibility: visible; }
227
-
228
- /* collapsible snippets: collapsible before hidable */
229
- .hidable {
230
- max-height: 0;
231
- overflow: hidden;
232
- transition: max-height 0.2s ease-out; }
233
-
234
- .collapsible {
235
- background-color: #777;
236
- color: white;
237
- cursor: pointer;
238
- padding: 3px 0;
239
- margin: 0;
240
- width: 100%;
241
- border: none;
242
- text-align: left;
243
- outline: none;
244
- font-size: 15px; }
245
-
246
- .active, .collapsible:hover {
247
- background-color: #555; }
248
-
249
- .collapsible:after {
250
- content: '\25bc';
251
- color: white;
252
- font-weight: bold;
253
- float: right;
254
- margin-left: 12px;
255
- margin-right: 12px; }
256
-
257
- .active:after {
258
- content: "\25b2"; }
259
-
260
- /* collapsible: */
261
- .collapsible + .hidable {
262
- margin-top: 0; }
263
-
264
- .collapsible:not(.active) + .hidable {
265
- overflow: hidden;
266
- padding: 0; }
267
-
268
- #standard-band {
269
- background-color: #0AC442; }
270
-
271
- #standard {
272
- border-bottom: solid 3px #0AC442; }
273
-
274
- #directive-band {
275
- background-color: #540D6E; }
276
-
277
- #directive {
278
- border-bottom: solid 3px #540D6E; }
279
-
280
- #guide-band {
281
- background-color: #D183C9; }
282
-
283
- #guide {
284
- border-bottom: solid 3px #D183C9; }
285
-
286
- #specification-band {
287
- background-color: #65AFFF; }
288
-
289
- #specification {
290
- border-bottom: solid 3px #65AFFF; }
291
-
292
- #report-band {
293
- background-color: #3A405A; }
294
-
295
- #report {
296
- border-bottom: solid 3px #3A405A; }
297
-
298
- #amendment-band {
299
- background-color: #F26430; }
300
-
301
- #amendment {
302
- border-bottom: solid 3px #F26430; }
303
-
304
- #corrigendum-band {
305
- background-color: #C84630; }
306
-
307
- #corrigendum {
308
- border-bottom: solid 3px #C84630; }
309
-
310
- #administrative-band {
311
- background-color: #BFAE48; }
312
-
313
- #administrative {
314
- border-bottom: solid 3px #BFAE48; }
315
-
316
- #advisory-band {
317
- background-color: #BD9391; }
318
-
319
- #advisory {
320
- border-bottom: solid 3px #BD9391; }
321
-
322
- #proposal-band {
323
- background-color: #39A0ED; }
324
-
325
- #proposal {
326
- border-bottom: solid 3px #39A0ED; }
327
-
328
- #working-draft-band {
329
- background-color: #2D7393; }
330
-
331
- #working-draft {
332
- border-bottom: solid 3px #2D7393; }
333
-
334
- #committee-draft-band {
335
- background-color: #2A6B7C; }
336
-
337
- #committee-draft {
338
- border-bottom: solid 3px #2A6B7C; }
339
-
340
- #draft-standard-band {
341
- background-color: #1C7F7A; }
342
-
343
- #draft-standard {
344
- border-bottom: solid 3px #1C7F7A; }
345
-
346
- #final-draft-band {
347
- background-color: #53C170; }
348
-
349
- #final-draft {
350
- border-bottom: solid 3px #53C170; }
351
-
352
- #published-band {
353
- background-color: #069E2D; }
354
-
355
- #published {
356
- border-bottom: solid 3px #069E2D; }
357
-
358
- #withdrawn-band {
359
- background-color: #004E64; }
360
-
361
- #withdrawn {
362
- border-bottom: solid 3px #004E64; }
363
-
364
- #cancelled-band {
365
- background-color: #2E382E; }
366
-
367
- #cancelled {
368
- border-bottom: solid 3px #2E382E; }