metanorma-nist 1.2.5 → 1.2.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +62 -0
  3. data/.github/workflows/release.yml +36 -0
  4. data/README.adoc +23 -7
  5. data/lib/asciidoctor/nist/basicdoc.rng +50 -3
  6. data/lib/asciidoctor/nist/boilerplate.rb +3 -1
  7. data/lib/asciidoctor/nist/cleanup.rb +2 -1
  8. data/lib/asciidoctor/nist/converter.rb +3 -0
  9. data/lib/asciidoctor/nist/front.rb +36 -45
  10. data/lib/asciidoctor/nist/front_id.rb +18 -7
  11. data/lib/asciidoctor/nist/isodoc.rng +36 -43
  12. data/lib/asciidoctor/nist/nist.rng +1 -0
  13. data/lib/asciidoctor/nist/validate.rb +17 -6
  14. data/lib/isodoc/nist/base_convert.rb +2 -3
  15. data/lib/isodoc/nist/fonts_manifest.yaml +4 -0
  16. data/lib/isodoc/nist/html/header_cswp.html +2 -3
  17. data/lib/isodoc/nist/html/htmlstyle.css +225 -221
  18. data/lib/isodoc/nist/html/htmlstyle.scss +5 -6
  19. data/lib/isodoc/nist/html/nist.css +49 -50
  20. data/lib/isodoc/nist/html/nist.scss +49 -50
  21. data/lib/isodoc/nist/html/nist_cswp.css +48 -49
  22. data/lib/isodoc/nist/html/nist_cswp.scss +48 -49
  23. data/lib/isodoc/nist/html/wordstyle.css +42 -42
  24. data/lib/isodoc/nist/html/wordstyle.scss +42 -42
  25. data/lib/isodoc/nist/html/wordstyle_cswp.css +52 -52
  26. data/lib/isodoc/nist/html/wordstyle_cswp.scss +52 -52
  27. data/lib/isodoc/nist/html_convert.rb +12 -1
  28. data/lib/isodoc/nist/metadata.rb +28 -40
  29. data/lib/isodoc/nist/metadata_id.rb +3 -7
  30. data/lib/isodoc/nist/nist.cswp.xsl +329 -156
  31. data/lib/isodoc/nist/nist.sp.xsl +326 -192
  32. data/lib/isodoc/nist/presentation_xml_convert.rb +30 -10
  33. data/lib/isodoc/nist/refs.rb +6 -20
  34. data/lib/isodoc/nist/render.rb +42 -40
  35. data/lib/isodoc/nist/render_dates.rb +8 -9
  36. data/lib/isodoc/nist/word_convert.rb +9 -3
  37. data/lib/metanorma/nist/processor.rb +14 -8
  38. data/lib/metanorma/nist/version.rb +1 -1
  39. data/metanorma-nist.gemspec +2 -2
  40. metadata +9 -9
  41. data/.github/workflows/macos.yml +0 -38
  42. data/.github/workflows/ubuntu.yml +0 -56
  43. data/.github/workflows/windows.yml +0 -40
@@ -24,6 +24,9 @@ module Asciidoctor
24
24
  {
25
25
  id: dn0,
26
26
  series: node.attr("series"),
27
+ subseries: node.attr("series-title") || node.attr("series-abbrev"),
28
+ subseries_abbr: node.attr("series-abbrev"),
29
+ subseries_mr: node.attr("series-mrprefix") || node.attr("series-abbrev"),
27
30
  edition: node.attr("edition"),
28
31
  version: node.attr("version"),
29
32
  revision: node.attr("revision"),
@@ -52,8 +55,7 @@ module Asciidoctor
52
55
  else
53
56
  args = id_args(node, dn0) || return
54
57
  xml.docidentifier add_id_parts(args, false), **attr_code(type: "NIST")
55
- xml.docidentifier add_id_parts(args, true),
56
- **attr_code(type: "nist-long")
58
+ xml.docidentifier add_id_parts(args, true), **attr_code(type: "nist-long")
57
59
  xml.docidentifier add_id_parts_mr(args), **attr_code(type: "nist-mr")
58
60
  end
59
61
  end
@@ -67,10 +69,20 @@ module Asciidoctor
67
69
  IsoDoc::NIST::Metadata.new(nil, nil, @i18n).status_abbr(stage, iter)
68
70
  end
69
71
 
72
+ def id_series_name(args, type)
73
+ if args[:series] == "nist-csts"
74
+ return ret = case type
75
+ when :long then args[:subseries]
76
+ when :short then args[:subseries_abbr]
77
+ when :mr then args[:subseries_mr]
78
+ end
79
+ end
80
+ type == :long ?
81
+ SERIES.dig(args[:series].to_sym) : SERIES_ABBR.dig(args[:series].to_sym)
82
+ end
83
+
70
84
  def add_id_parts(args, long)
71
- args[:series] and series_name = long ?
72
- SERIES.dig(args[:series].to_sym) :
73
- SERIES_ABBR.dig(args[:series].to_sym)
85
+ args[:series] and series_name = id_series_name(args, (long ? :long : :short))
74
86
  dn = (series_name || "NIST #{args[:series]}") + " " + args[:id]
75
87
  dn += " Volume #{args[:vol]}" if args[:vol]
76
88
  dn += "," if args[:vol] && args[:revision]
@@ -107,8 +119,7 @@ module Asciidoctor
107
119
 
108
120
  def add_id_parts_mr(args)
109
121
  ret = ["NIST"]
110
- args[:series] and
111
- ret << SERIES_ABBR&.dig(args[:series].to_sym)&.sub(/^NIST /, "")
122
+ args[:series] and ret << id_series_name(args, :mr)&.sub(/^NIST /, "")
112
123
  stage = status_abbr(args[:stage], nil) || ""
113
124
  stage += "[-#{args[:iter]}]" if args[:iter]
114
125
  ret << stage unless stage.empty?
@@ -24,6 +24,14 @@
24
24
  <start>
25
25
  <ref name="standard-document"/>
26
26
  </start>
27
+ <define name="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
27
35
  <define name="hyperlink">
28
36
  <element name="link">
29
37
  <attribute name="target">
@@ -47,6 +55,13 @@
47
55
  <param name="pattern">\i\c*|\c+#\c+</param>
48
56
  </data>
49
57
  </attribute>
58
+ <optional>
59
+ <attribute name="to">
60
+ <data type="string">
61
+ <param name="pattern">\i\c*|\c+#\c+</param>
62
+ </data>
63
+ </attribute>
64
+ </optional>
50
65
  <optional>
51
66
  <attribute name="type">
52
67
  <ref name="ReferenceFormat"/>
@@ -141,6 +156,11 @@
141
156
  <data type="boolean"/>
142
157
  </attribute>
143
158
  </optional>
159
+ <optional>
160
+ <attribute name="key">
161
+ <data type="boolean"/>
162
+ </attribute>
163
+ </optional>
144
164
  <oneOrMore>
145
165
  <ref name="dt"/>
146
166
  <ref name="dd"/>
@@ -233,6 +253,9 @@
233
253
  <data type="boolean"/>
234
254
  </attribute>
235
255
  </optional>
256
+ <optional>
257
+ <ref name="colgroup"/>
258
+ </optional>
236
259
  <optional>
237
260
  <ref name="tname"/>
238
261
  </optional>
@@ -751,6 +774,18 @@
751
774
  </define>
752
775
  </include>
753
776
  <!-- end overrides -->
777
+ <define name="colgroup">
778
+ <element name="colgroup">
779
+ <oneOrMore>
780
+ <ref name="col"/>
781
+ </oneOrMore>
782
+ </element>
783
+ </define>
784
+ <define name="col">
785
+ <element name="col">
786
+ <attribute name="width"/>
787
+ </element>
788
+ </define>
754
789
  <define name="TextElement" combine="choice">
755
790
  <ref name="concept"/>
756
791
  </define>
@@ -1164,49 +1199,7 @@
1164
1199
  </define>
1165
1200
  <define name="annex">
1166
1201
  <element name="annex">
1167
- <optional>
1168
- <attribute name="id">
1169
- <data type="ID"/>
1170
- </attribute>
1171
- </optional>
1172
- <optional>
1173
- <attribute name="language"/>
1174
- </optional>
1175
- <optional>
1176
- <attribute name="script"/>
1177
- </optional>
1178
- <optional>
1179
- <attribute name="inline-header">
1180
- <data type="boolean"/>
1181
- </attribute>
1182
- </optional>
1183
- <attribute name="obligation">
1184
- <choice>
1185
- <value>normative</value>
1186
- <value>informative</value>
1187
- </choice>
1188
- </attribute>
1189
- <optional>
1190
- <ref name="section-title"/>
1191
- </optional>
1192
- <group>
1193
- <group>
1194
- <zeroOrMore>
1195
- <ref name="BasicBlock"/>
1196
- </zeroOrMore>
1197
- <zeroOrMore>
1198
- <ref name="note"/>
1199
- </zeroOrMore>
1200
- </group>
1201
- <zeroOrMore>
1202
- <choice>
1203
- <ref name="annex-subsection"/>
1204
- <ref name="terms"/>
1205
- <ref name="definitions"/>
1206
- <ref name="references"/>
1207
- </choice>
1208
- </zeroOrMore>
1209
- </group>
1202
+ <ref name="Annex-Section"/>
1210
1203
  </element>
1211
1204
  </define>
1212
1205
  <define name="terms">
@@ -43,6 +43,7 @@
43
43
  <choice>
44
44
  <ref name="clause"/>
45
45
  <ref name="errata_clause"/>
46
+ <ref name="acknowledgements"/>
46
47
  </choice>
47
48
  </zeroOrMore>
48
49
  <optional>
@@ -48,18 +48,29 @@ module Asciidoctor
48
48
  end
49
49
 
50
50
  def series_validate(xmldoc)
51
- series = xmldoc&.at("//bibdata/series/title")&.text or return
51
+ series = xmldoc&.at("//bibdata/series[@type = 'main']/title")&.text or return
52
+ recognised_series_validate(series)
53
+ subseries_validate(series, xmldoc)
54
+ end
55
+
56
+ def recognised_series_validate(series)
52
57
  found = false
53
58
  SERIES.each { |_, v| found = true if v == series }
54
- found or
55
- @log.add("Document Attributes", nil,
56
- "#{series} is not a recognised series")
59
+ found or @log.add("Document Attributes", nil, "#{series} is not a recognised series")
60
+ end
61
+
62
+ def subseries_validate(series, xmldoc)
63
+ subseries = xmldoc&.at("//bibdata/series[@type = 'secondary']")
64
+ csts = series == "NIST Cybersecurity Technical Specification"
65
+ subseries && !csts and
66
+ @log.add("Document Attributes", nil, "Subseries are not permitted on the series #{series}")
67
+ !subseries && csts and
68
+ @log.add("Document Attributes", nil, "Subseries are required on the series #{series}")
57
69
  end
58
70
 
59
71
  def validate(doc)
60
72
  content_validate(doc)
61
- schema_validate(formattedstr_strip(doc.dup),
62
- File.join(File.dirname(__FILE__), "nist.rng"))
73
+ schema_validate(formattedstr_strip(doc.dup), File.join(File.dirname(__FILE__), "nist.rng"))
63
74
  end
64
75
 
65
76
  def introduction_validate(doc)
@@ -113,7 +113,7 @@ module IsoDoc
113
113
  end
114
114
  end
115
115
 
116
- def middle_clause
116
+ def middle_clause(_docxml)
117
117
  "//clause[parent::sections] | //terms[parent::sections]"
118
118
  end
119
119
 
@@ -175,8 +175,7 @@ module IsoDoc
175
175
 
176
176
  def modification_parse(node, out)
177
177
  out << @i18n.modified
178
- node.at(ns("./p[text()[normalize-space() != '']]")) and
179
- out << " &mdash; "
178
+ node.at(ns("./p[text()[normalize-space() != '']]")) and out << " &mdash; "
180
179
  node.at(ns("./p")).children.each { |n| parse(n, out) }
181
180
  end
182
181
 
@@ -0,0 +1,4 @@
1
+ ---
2
+ Times New Roman:
3
+ Arial:
4
+ Courier New:
@@ -65,8 +65,7 @@ href="../{{ filename }}.html">
65
65
 
66
66
  <p class=MsoHeaderCxSpFirst style='tab-stops:center 234.0pt right 468.0pt'><span
67
67
  lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;font-variant:
68
- small-caps;color:#244061;mso-themecolor:accent1;mso-themeshade:128'>NIST
69
- Cybersecurity White Paper<span style='mso-tab-count:2'>                                                                           </span></span><!--[if supportFields]><span
68
+ small-caps;color:#244061;mso-themecolor:accent1;mso-themeshade:128'>{{ series }}<span style='mso-tab-count:2'>                                                                           </span></span><!--[if supportFields]><span
70
69
  lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;font-variant:
71
70
  small-caps;color:#244061;mso-themecolor:accent1;mso-themeshade:128'><span
72
71
  style='mso-element:field-begin'></span> DOCPROPERTY<span
@@ -199,7 +198,7 @@ _Hlk10701209'></span></a><w:Sdt SdtDocPart="t" DocPartType="Watermarks"
199
198
  style='mso-bookmark:_Hlk10701209'><span lang=EN-US style='font-size:10.0pt;
200
199
  font-family:"Arial",sans-serif;font-variant:small-caps;color:white;mso-themecolor:
201
200
  background1;background:#244061;mso-shading-themecolor:accent1;mso-shading-themeshade:
202
- 128'>NIST Cybersecurity White Paper {% if draft_prefix %}(DRAFT){% endif %}</span></span></span><span
201
+ 128'>{{ series }} {% if draft_prefix %}(DRAFT){% endif %}</span></span></span><span
203
202
  style='mso-bookmark:_Hlk10701208'><span style='mso-bookmark:_Hlk10701209'><span
204
203
  class=MsoCommentReference><span lang=EN-US style='font-size:10.0pt;font-family:
205
204
  "Arial",sans-serif;font-variant:small-caps;color:white;mso-color-alt:windowtext'><span
@@ -104,6 +104,10 @@ b, strong {
104
104
  div.document-stage-band, div.document-type-band {
105
105
  background-color: #333333; }
106
106
 
107
+ a.FootnoteRef + a.FootnoteRef:before {
108
+ content: ", ";
109
+ vertical-align: super; }
110
+
107
111
  #nist-sp-band {
108
112
  background-color: #d8eca8; }
109
113
 
@@ -176,223 +180,6 @@ div.document-stage-band, div.document-type-band {
176
180
  #withdrawn {
177
181
  border-bottom: solid 3px #7e0d13; }
178
182
 
179
- dl {
180
- grid-template-columns: 25% 75%; }
181
- dl.glossary dt {
182
- font-weight: bold; }
183
-
184
- body {
185
- margin-left: auto;
186
- margin-right: auto;
187
- max-width: 100%;
188
- font-size: 14px;
189
- font-weight: 400;
190
- line-height: 1.6em;
191
- color: #141115;
192
- background-color: #fff; }
193
- body main {
194
- margin: 0 3em 0 6em; }
195
-
196
- .rule {
197
- width: 100%;
198
- height: 1px;
199
- background-color: #2677ea;
200
- margin: 2em 0; }
201
-
202
- .rule-2 {
203
- width: 100%;
204
- height: 1px;
205
- background-color: #2677ea; }
206
-
207
- .rule-thick {
208
- width: 100%;
209
- height: 3px;
210
- background-color: #2677ea;
211
- margin: 3em 0 0 0; }
212
-
213
- #toc {
214
- font-family: 'Source Sans Pro', sans-serif; }
215
- #toc ul {
216
- margin: 0;
217
- padding: 0;
218
- list-style: none; }
219
- #toc ul li a {
220
- padding: 5px 10px; }
221
- #toc ul a {
222
- color: #141115;
223
- text-decoration: none;
224
- display: block; }
225
- #toc ul a:hover {
226
- box-shadow: none;
227
- color: white; }
228
- #toc .h2 {
229
- padding-left: 30px; }
230
- #toc .h3 {
231
- padding-left: 50px; }
232
- #toc .toc-active, #toc li:hover {
233
- background: #006494;
234
- box-shadow: inset -5px 0px 10px -5px #006494 !important; }
235
- #toc .toc-active a, #toc li:hover a {
236
- color: white; }
237
- @media print {
238
- #toc .toc-active, #toc li:hover {
239
- background: white;
240
- box-shadow: none !important; }
241
- #toc .toc-active a {
242
- color: #141115; }
243
- #toc li:hover a {
244
- color: black; } }
245
- #toc li a {
246
- font-size: 14px; }
247
- #toc li:before {
248
- content: " ";
249
- display: none; }
250
-
251
- @media screen and (min-width: 768px) {
252
- nav {
253
- position: fixed;
254
- top: 0;
255
- bottom: 0;
256
- left: 0;
257
- width: 323px;
258
- font-size: 0.9em;
259
- overflow: auto;
260
- padding: 0 0 0 45px;
261
- background-color: white; } }
262
-
263
- @media print {
264
- nav {
265
- position: relative;
266
- width: auto;
267
- font-size: 0.9em;
268
- overflow: auto;
269
- padding: 0;
270
- margin-right: 0;
271
- background-color: white; } }
272
-
273
- nav #toc {
274
- font-family: {{bodyfont}};
275
- font-weight: 400; }
276
- @media screen and (max-width: 768px) {
277
- nav #toc {
278
- padding: 0 1.5em;
279
- overflow: visible; } }
280
- @media screen and (min-width: 768px) {
281
- #toggle {
282
- position: fixed;
283
- height: 100%;
284
- width: 30px;
285
- background-color: #006494;
286
- color: white !important;
287
- cursor: pointer;
288
- z-index: 100; }
289
- #toggle span {
290
- text-align: center;
291
- width: 100%;
292
- position: absolute;
293
- top: 50%;
294
- transform: translate(0, -50%); } }
295
-
296
- @media screen and (max-width: 768px) {
297
- #toggle {
298
- display: none; } }
299
-
300
- @media print {
301
- #toggle {
302
- display: none; } }
303
-
304
- @media screen and (min-width: 768px) {
305
- .container {
306
- padding-left: 360px; } }
307
-
308
- @media print {
309
- .container {
310
- padding-left: 0; } }
311
-
312
- @media screen and (min-width: 768px) {
313
- .rule.toc {
314
- display: none; } }
315
-
316
- span.nistvariable {
317
- font-family: {{bodyfont}};
318
- font-style: italic; }
319
-
320
- /* Document bands */
321
- .document-stage-band {
322
- left: 0;
323
- top: 0;
324
- height: 100%;
325
- position: fixed;
326
- display: block;
327
- z-index: 101;
328
- box-shadow: -5px 0px 10px #1d1d1d; }
329
- .document-stage-band > :first-child {
330
- position: relative;
331
- width: 25px;
332
- font-family: 'Source Sans Pro', sans-serif;
333
- font-weight: 300;
334
- height: 160px;
335
- color: #7ba812;
336
- text-transform: uppercase;
337
- font-size: 0.9em;
338
- font-weight: 400;
339
- letter-spacing: 0.05em;
340
- margin: 0;
341
- margin-left: 6px;
342
- writing-mode: tb-rl;
343
- -webkit-transform: rotate(180deg);
344
- -moz-transform: rotate(180deg);
345
- -o-transform: rotate(180deg);
346
- white-space: nowrap;
347
- display: block;
348
- bottom: 0; }
349
- @media print {
350
- .document-stage-band {
351
- display: none; } }
352
- .document-type-band {
353
- left: 0;
354
- top: 180px;
355
- height: 100%;
356
- position: fixed;
357
- display: block;
358
- z-index: 102; }
359
- .document-type-band > :first-child {
360
- position: relative;
361
- width: 25px;
362
- font-family: 'Source Sans Pro', sans-serif;
363
- font-weight: 400;
364
- color: #7ba812;
365
- text-transform: uppercase;
366
- font-size: 0.9em;
367
- font-weight: 400;
368
- letter-spacing: 0.05em;
369
- margin: 0;
370
- margin-left: 6px;
371
- writing-mode: tb-rl;
372
- -webkit-transform: rotate(180deg);
373
- -moz-transform: rotate(180deg);
374
- -o-transform: rotate(180deg);
375
- white-space: nowrap;
376
- display: block;
377
- bottom: 0; }
378
- @media print {
379
- .document-type-band {
380
- display: none; } }
381
- .document-type-band .document-type {
382
- top: 20px; }
383
-
384
- #governance-band p.document-type {
385
- height: 230px !important; }
386
-
387
- #standard-band p {
388
- height: 270px !important; }
389
-
390
- #proposal-band p {
391
- height: 150px !important; }
392
-
393
- #standard, #final {
394
- color: #9ABD48; }
395
-
396
183
  .coverpage-maturity, .coverpage-stage {
397
184
  font-family: 'Source Sans Pro', sans-serif;
398
185
  font-weight: 400;
@@ -637,6 +424,223 @@ table.coverpage-table {
637
424
  .coverpage {
638
425
  height: 23cm; } }
639
426
 
427
+ dl {
428
+ grid-template-columns: 25% 75%; }
429
+ dl.glossary dt {
430
+ font-weight: bold; }
431
+
432
+ body {
433
+ margin-left: auto;
434
+ margin-right: auto;
435
+ max-width: 100%;
436
+ font-size: {{normalfontsize}};
437
+ font-weight: 400;
438
+ line-height: 1.6em;
439
+ color: #141115;
440
+ background-color: #fff; }
441
+ body main {
442
+ margin: 0 3em 0 6em; }
443
+
444
+ .rule {
445
+ width: 100%;
446
+ height: 1px;
447
+ background-color: #2677ea;
448
+ margin: 2em 0; }
449
+
450
+ .rule-2 {
451
+ width: 100%;
452
+ height: 1px;
453
+ background-color: #2677ea; }
454
+
455
+ .rule-thick {
456
+ width: 100%;
457
+ height: 3px;
458
+ background-color: #2677ea;
459
+ margin: 3em 0 0 0; }
460
+
461
+ #toc {
462
+ font-family: 'Source Sans Pro', sans-serif; }
463
+ #toc ul {
464
+ margin: 0;
465
+ padding: 0;
466
+ list-style: none; }
467
+ #toc ul li a {
468
+ padding: 5px 10px; }
469
+ #toc ul a {
470
+ color: #141115;
471
+ text-decoration: none;
472
+ display: block; }
473
+ #toc ul a:hover {
474
+ box-shadow: none;
475
+ color: white; }
476
+ #toc .h2 {
477
+ padding-left: 30px; }
478
+ #toc .h3 {
479
+ padding-left: 50px; }
480
+ #toc .toc-active, #toc li:hover {
481
+ background: #006494;
482
+ box-shadow: inset -5px 0px 10px -5px #006494 !important; }
483
+ #toc .toc-active a, #toc li:hover a {
484
+ color: white; }
485
+ @media print {
486
+ #toc .toc-active, #toc li:hover {
487
+ background: white;
488
+ box-shadow: none !important; }
489
+ #toc .toc-active a {
490
+ color: #141115; }
491
+ #toc li:hover a {
492
+ color: black; } }
493
+ #toc li a {
494
+ font-size: {{normalfontsize}}; }
495
+ #toc li:before {
496
+ content: " ";
497
+ display: none; }
498
+
499
+ @media screen and (min-width: 768px) {
500
+ nav {
501
+ position: fixed;
502
+ top: 0;
503
+ bottom: 0;
504
+ left: 0;
505
+ width: 323px;
506
+ font-size: 0.9em;
507
+ overflow: auto;
508
+ padding: 0 0 0 45px;
509
+ background-color: white; } }
510
+
511
+ @media print {
512
+ nav {
513
+ position: relative;
514
+ width: auto;
515
+ font-size: 0.9em;
516
+ overflow: auto;
517
+ padding: 0;
518
+ margin-right: 0;
519
+ background-color: white; } }
520
+
521
+ nav #toc {
522
+ font-family: {{bodyfont}};
523
+ font-weight: 400; }
524
+ @media screen and (max-width: 768px) {
525
+ nav #toc {
526
+ padding: 0 1.5em;
527
+ overflow: visible; } }
528
+ @media screen and (min-width: 768px) {
529
+ #toggle {
530
+ position: fixed;
531
+ height: 100%;
532
+ width: 30px;
533
+ background-color: #006494;
534
+ color: white !important;
535
+ cursor: pointer;
536
+ z-index: 100; }
537
+ #toggle span {
538
+ text-align: center;
539
+ width: 100%;
540
+ position: absolute;
541
+ top: 50%;
542
+ transform: translate(0, -50%); } }
543
+
544
+ @media screen and (max-width: 768px) {
545
+ #toggle {
546
+ display: none; } }
547
+
548
+ @media print {
549
+ #toggle {
550
+ display: none; } }
551
+
552
+ @media screen and (min-width: 768px) {
553
+ .container {
554
+ padding-left: 360px; } }
555
+
556
+ @media print {
557
+ .container {
558
+ padding-left: 0; } }
559
+
560
+ @media screen and (min-width: 768px) {
561
+ .rule.toc {
562
+ display: none; } }
563
+
564
+ span.nistvariable {
565
+ font-family: {{bodyfont}};
566
+ font-style: italic; }
567
+
568
+ /* Document bands */
569
+ .document-stage-band {
570
+ left: 0;
571
+ top: 0;
572
+ height: 100%;
573
+ position: fixed;
574
+ display: block;
575
+ z-index: 101;
576
+ box-shadow: -5px 0px 10px #1d1d1d; }
577
+ .document-stage-band > :first-child {
578
+ position: relative;
579
+ width: 25px;
580
+ font-family: 'Source Sans Pro', sans-serif;
581
+ font-weight: 300;
582
+ height: 160px;
583
+ color: #7ba812;
584
+ text-transform: uppercase;
585
+ font-size: 0.9em;
586
+ font-weight: 400;
587
+ letter-spacing: 0.05em;
588
+ margin: 0;
589
+ margin-left: 6px;
590
+ writing-mode: tb-rl;
591
+ -webkit-transform: rotate(180deg);
592
+ -moz-transform: rotate(180deg);
593
+ -o-transform: rotate(180deg);
594
+ white-space: nowrap;
595
+ display: block;
596
+ bottom: 0; }
597
+ @media print {
598
+ .document-stage-band {
599
+ display: none; } }
600
+ .document-type-band {
601
+ left: 0;
602
+ top: 180px;
603
+ height: 100%;
604
+ position: fixed;
605
+ display: block;
606
+ z-index: 102; }
607
+ .document-type-band > :first-child {
608
+ position: relative;
609
+ width: 25px;
610
+ font-family: 'Source Sans Pro', sans-serif;
611
+ font-weight: 400;
612
+ color: #7ba812;
613
+ text-transform: uppercase;
614
+ font-size: 0.9em;
615
+ font-weight: 400;
616
+ letter-spacing: 0.05em;
617
+ margin: 0;
618
+ margin-left: 6px;
619
+ writing-mode: tb-rl;
620
+ -webkit-transform: rotate(180deg);
621
+ -moz-transform: rotate(180deg);
622
+ -o-transform: rotate(180deg);
623
+ white-space: nowrap;
624
+ display: block;
625
+ bottom: 0; }
626
+ @media print {
627
+ .document-type-band {
628
+ display: none; } }
629
+ .document-type-band .document-type {
630
+ top: 20px; }
631
+
632
+ #governance-band p.document-type {
633
+ height: 230px !important; }
634
+
635
+ #standard-band p {
636
+ height: 270px !important; }
637
+
638
+ #proposal-band p {
639
+ height: 150px !important; }
640
+
641
+ #standard, #final {
642
+ color: #9ABD48; }
643
+
640
644
  .recommend {
641
645
  background-color: #ccffcc;
642
646
  padding: 1.2em;
@@ -735,7 +739,7 @@ p.Biblio, p.NormRef {
735
739
  overflow: auto;
736
740
  font-family: {{monospacefont}};
737
741
  font-variant-ligatures: none;
738
- font-size: 0.8em;
742
+ font-size: {{monospacefontsize}};
739
743
  background-color: #f6f6f6; }
740
744
  .figure .FigureTitle, .figure .figure-title {
741
745
  font-weight: 700;
@@ -757,7 +761,7 @@ pre {
757
761
  font-family: {{monospacefont}};
758
762
  font-variant-ligatures: none;
759
763
  background-color: #f6f6f6;
760
- font-size: 0.8em;
764
+ font-size: {{monospacefontsize}};
761
765
  line-height: 1.6em;
762
766
  padding: 1.5em;
763
767
  margin: 2em 0 1em 0;
@@ -766,7 +770,7 @@ pre {
766
770
 
767
771
  .pseudocode {
768
772
  background-color: #f6f6f6;
769
- font-size: 0.8em;
773
+ font-size: {{monospacefontsize}};
770
774
  line-height: 1.6em;
771
775
  padding: 1.5em;
772
776
  margin: 2em 0 1em 0;
@@ -875,7 +879,7 @@ a.footnote-number {
875
879
  font-size: 0.8em; }
876
880
 
877
881
  .footnote {
878
- font-size: 0.9em; }
882
+ font-size: {{footnotefontsize}}; }
879
883
 
880
884
  /* Keywords */
881
885
  span.keyword {