bootstrap-generators 2.2.1 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/README.md +1 -1
  2. data/lib/bootstrap/generators/version.rb +1 -1
  3. data/vendor/assets/javascripts/bootstrap-affix.js +12 -1
  4. data/vendor/assets/javascripts/bootstrap-alert.js +12 -1
  5. data/vendor/assets/javascripts/bootstrap-button.js +12 -1
  6. data/vendor/assets/javascripts/bootstrap-carousel.js +11 -2
  7. data/vendor/assets/javascripts/bootstrap-collapse.js +15 -4
  8. data/vendor/assets/javascripts/bootstrap-dropdown.js +16 -3
  9. data/vendor/assets/javascripts/bootstrap-modal.js +12 -1
  10. data/vendor/assets/javascripts/bootstrap-popover.js +14 -3
  11. data/vendor/assets/javascripts/bootstrap-scrollspy.js +13 -2
  12. data/vendor/assets/javascripts/bootstrap-tab.js +12 -1
  13. data/vendor/assets/javascripts/bootstrap-tooltip.js +12 -1
  14. data/vendor/assets/javascripts/bootstrap-transition.js +1 -1
  15. data/vendor/assets/javascripts/bootstrap-typeahead.js +23 -10
  16. data/vendor/assets/stylesheets/bootstrap-responsive.css +37 -3
  17. data/vendor/assets/stylesheets/bootstrap.css +643 -378
  18. data/vendor/twitter/bootstrap/less/alerts.less +14 -0
  19. data/vendor/twitter/bootstrap/less/bootstrap.less +1 -1
  20. data/vendor/twitter/bootstrap/less/breadcrumbs.less +6 -6
  21. data/vendor/twitter/bootstrap/less/button-groups.less +27 -42
  22. data/vendor/twitter/bootstrap/less/buttons.less +5 -7
  23. data/vendor/twitter/bootstrap/less/carousel.less +15 -15
  24. data/vendor/twitter/bootstrap/less/code.less +3 -0
  25. data/vendor/twitter/bootstrap/less/dropdowns.less +5 -9
  26. data/vendor/twitter/bootstrap/less/forms.less +12 -8
  27. data/vendor/twitter/bootstrap/less/labels-badges.less +8 -0
  28. data/vendor/twitter/bootstrap/less/mixins.less +1 -1
  29. data/vendor/twitter/bootstrap/less/modals.less +4 -3
  30. data/vendor/twitter/bootstrap/less/navbar.less +21 -6
  31. data/vendor/twitter/bootstrap/less/navs.less +6 -0
  32. data/vendor/twitter/bootstrap/less/popovers.less +50 -38
  33. data/vendor/twitter/bootstrap/less/reset.less +82 -4
  34. data/vendor/twitter/bootstrap/less/responsive.less +10 -1
  35. data/vendor/twitter/bootstrap/less/tables.less +35 -34
  36. data/vendor/twitter/bootstrap/less/type.less +29 -21
  37. data/vendor/twitter/bootstrap/less/variables.less +4 -4
  38. data/vendor/twitter/bootstrap/sass/_alerts.scss +14 -0
  39. data/vendor/twitter/bootstrap/sass/_breadcrumbs.scss +5 -5
  40. data/vendor/twitter/bootstrap/sass/_button-groups.scss +27 -42
  41. data/vendor/twitter/bootstrap/sass/_buttons.scss +5 -7
  42. data/vendor/twitter/bootstrap/sass/_carousel.scss +15 -15
  43. data/vendor/twitter/bootstrap/sass/_code.scss +3 -0
  44. data/vendor/twitter/bootstrap/sass/_dropdowns.scss +5 -9
  45. data/vendor/twitter/bootstrap/sass/_forms.scss +12 -8
  46. data/vendor/twitter/bootstrap/sass/_labels-badges.scss +25 -15
  47. data/vendor/twitter/bootstrap/sass/_mixins.scss +3 -3
  48. data/vendor/twitter/bootstrap/sass/_modals.scss +1 -1
  49. data/vendor/twitter/bootstrap/sass/_navbar.scss +22 -4
  50. data/vendor/twitter/bootstrap/sass/_navs.scss +6 -0
  51. data/vendor/twitter/bootstrap/sass/_popovers.scss +50 -38
  52. data/vendor/twitter/bootstrap/sass/_reset.scss +82 -4
  53. data/vendor/twitter/bootstrap/sass/_tables.scss +36 -35
  54. data/vendor/twitter/bootstrap/sass/_type.scss +29 -21
  55. data/vendor/twitter/bootstrap/sass/_variables.scss +9 -9
  56. data/vendor/twitter/bootstrap/sass/bootstrap.scss +1 -1
  57. data/vendor/twitter/bootstrap/sass/responsive.scss +10 -1
  58. metadata +10 -12
  59. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +0 -9
  60. data/vendor/assets/stylesheets/bootstrap.min.css +0 -9
@@ -138,7 +138,6 @@ input[type="checkbox"] {
138
138
  *margin-top: 0; /* IE7 */
139
139
  margin-top: 1px \9; /* IE8-9 */
140
140
  line-height: normal;
141
- cursor: pointer;
142
141
  }
143
142
 
144
143
  // Reset width of input images, buttons, radios, checkboxes
@@ -367,9 +366,9 @@ input[type="checkbox"][readonly] {
367
366
 
368
367
  // HTML5 invalid states
369
368
  // Shares styles with the .control-group.error above
370
- input:focus:required:invalid,
371
- textarea:focus:required:invalid,
372
- select:focus:required:invalid {
369
+ input:focus:invalid,
370
+ textarea:focus:invalid,
371
+ select:focus:invalid {
373
372
  color: #b94a48;
374
373
  border-color: #ee5f5b;
375
374
  &:focus {
@@ -462,7 +461,8 @@ select:focus:required:invalid {
462
461
  border: 1px solid #ccc;
463
462
  }
464
463
  .add-on,
465
- .btn {
464
+ .btn,
465
+ .btn-group > .dropdown-toggle {
466
466
  vertical-align: top;
467
467
  @include border-radius(0);
468
468
  }
@@ -489,7 +489,7 @@ select:focus:required:invalid {
489
489
  select,
490
490
  .uneditable-input {
491
491
  @include border-radius($inputBorderRadius 0 0 $inputBorderRadius);
492
- + .btn-group .btn {
492
+ + .btn-group .btn:last-child {
493
493
  @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
494
494
  }
495
495
  }
@@ -499,7 +499,8 @@ select:focus:required:invalid {
499
499
  margin-left: -1px;
500
500
  }
501
501
  .add-on:last-child,
502
- .btn:last-child {
502
+ .btn:last-child,
503
+ .btn-group:last-child > .dropdown-toggle {
503
504
  @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
504
505
  }
505
506
  }
@@ -670,7 +671,10 @@ legend + .control-group {
670
671
  // And apply it only to .help-block instances that follow a form control
671
672
  input,
672
673
  select,
673
- textarea {
674
+ textarea,
675
+ .uneditable-input,
676
+ .input-prepend,
677
+ .input-append {
674
678
  + .help-block {
675
679
  margin-top: $baseLineHeight / 2;
676
680
  }
@@ -27,6 +27,14 @@
27
27
  @include border-radius(9px);
28
28
  }
29
29
 
30
+ // Empty labels/badges collapse
31
+ .label,
32
+ .badge {
33
+ &:empty {
34
+ display: none;
35
+ }
36
+ }
37
+
30
38
  // Hover state, but only for links
31
39
  a {
32
40
  &.label:hover,
@@ -39,21 +47,23 @@ a {
39
47
 
40
48
  // Colors
41
49
  // Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
42
- // Important (red)
43
- .label-important, .badge-important { background-color: $errorText; }
44
- .label-important[href], .badge-important[href] { background-color: darken($errorText, 10%); }
45
- // Warnings (orange)
46
- .label-warning, .badge-warning { background-color: $orange; }
47
- .label-warning[href], .badge-warning[href] { background-color: darken($orange, 10%); }
48
- // Success (green)
49
- .label-success, .badge-success { background-color: $successText; }
50
- .label-success[href], .badge-success[href] { background-color: darken($successText, 10%); }
51
- // Info (turquoise)
52
- .label-info, .badge-info { background-color: $infoText; }
53
- .label-info[href], .badge-info[href] { background-color: darken($infoText, 10%); }
54
- // Inverse (black)
55
- .label-inverse, .badge-inverse { background-color: $grayDark; }
56
- .label-inverse[href], .badge-inverse[href] { background-color: darken($grayDark, 10%); }
50
+ @each $item in label, badge {
51
+ // Important (red)
52
+ .#{$item}-important { background-color: $errorText; }
53
+ .#{$item}-important[href] { background-color: darken($errorText, 10%); }
54
+ // Warnings (orange)
55
+ .#{$item}-warning { background-color: $orange; }
56
+ .#{$item}-warning[href] { background-color: darken($orange, 10%); }
57
+ // Success (green)
58
+ .#{$item}-success { background-color: $successText; }
59
+ .#{$item}-success[href] { background-color: darken($successText, 10%); }
60
+ // Info (turquoise)
61
+ .#{$item}-info { background-color: $infoText; }
62
+ .#{$item}-info[href] { background-color: darken($infoText, 10%); }
63
+ // Inverse (black)
64
+ .#{$item}-inverse { background-color: $grayDark; }
65
+ .#{$item}-inverse[href] { background-color: darken($grayDark, 10%); }
66
+ }
57
67
 
58
68
  // Quick fix for labels/badges in buttons
59
69
  .btn {
@@ -111,6 +111,7 @@
111
111
  border: 0;
112
112
  }
113
113
 
114
+
114
115
  // FONTS
115
116
  // --------------------------------------------------
116
117
 
@@ -158,7 +159,7 @@
158
159
  // Mixin for form field states
159
160
  @mixin formFieldState($textColor: #555, $borderColor: #ccc, $backgroundColor: #f5f5f5) {
160
161
  // Set the text color
161
- > label,
162
+ .control-label,
162
163
  .help-block,
163
164
  .help-inline {
164
165
  color: $textColor;
@@ -256,7 +257,6 @@
256
257
  -o-transition: $transition;
257
258
  transition: $transition;
258
259
  }
259
-
260
260
  @mixin transition-delay($transition-delay) {
261
261
  -webkit-transition-delay: $transition-delay;
262
262
  -moz-transition-delay: $transition-delay;
@@ -413,7 +413,7 @@
413
413
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=1); // IE9 and down
414
414
  }
415
415
  @mixin gradient-vertical($startColor: #555, $endColor: #333) {
416
- background-color: mix($startColor, $endColor, 62.5%);
416
+ background-color: mix($startColor, $endColor, 60%);
417
417
  background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
418
418
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
419
419
  background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
@@ -26,7 +26,6 @@
26
26
  top: 50%;
27
27
  left: 50%;
28
28
  z-index: $zindexModal;
29
- overflow: auto;
30
29
  width: 560px;
31
30
  margin: -250px 0 0 -280px;
32
31
  background-color: $white;
@@ -59,6 +58,7 @@
59
58
 
60
59
  // Body (where all modal content resides)
61
60
  .modal-body {
61
+ position: relative;
62
62
  overflow-y: auto;
63
63
  max-height: 400px;
64
64
  padding: 15px;
@@ -10,7 +10,6 @@
10
10
  .navbar {
11
11
  overflow: visible;
12
12
  margin-bottom: $baseLineHeight;
13
- color: $navbarText;
14
13
 
15
14
  // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
16
15
  *position: relative;
@@ -67,6 +66,7 @@
67
66
  .navbar-text {
68
67
  margin-bottom: 0;
69
68
  line-height: $navbarHeight;
69
+ color: $navbarText;
70
70
  }
71
71
 
72
72
  // Janky solution for now to account for links outside the .nav
@@ -123,7 +123,7 @@
123
123
  }
124
124
  .input-append,
125
125
  .input-prepend {
126
- margin-top: 6px;
126
+ margin-top: 5px;
127
127
  white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
128
128
  input {
129
129
  margin-top: 0; // remove the margin on top since it's on the parent
@@ -245,6 +245,7 @@
245
245
  }
246
246
  .navbar .nav .dropdown-toggle .caret {
247
247
  margin-top: 8px;
248
+
248
249
  }
249
250
 
250
251
  // Hover
@@ -273,7 +274,7 @@
273
274
  padding: 7px 10px;
274
275
  margin-left: 5px;
275
276
  margin-right: 5px;
276
- @include buttonBackground(darken($navbarBackgroundHighlight, 5%), darken($navbarBackground, 5.25%));
277
+ @include buttonBackground(darken($navbarBackgroundHighlight, 5%), darken($navbarBackground, 5%));
277
278
  @include box-shadow(inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075));
278
279
  }
279
280
  .navbar .btn-navbar .icon-bar {
@@ -334,6 +335,12 @@
334
335
  }
335
336
  }
336
337
 
338
+ // Caret should match text color on hover
339
+ .navbar .nav li.dropdown > a:hover .caret {
340
+ border-top-color: $navbarLinkColorActive;
341
+ border-bottom-color: $navbarLinkColorActive;
342
+ }
343
+
337
344
  // Remove background color from open dropdown
338
345
  .navbar .nav li.dropdown.open > .dropdown-toggle,
339
346
  .navbar .nav li.dropdown.active > .dropdown-toggle,
@@ -379,7 +386,6 @@
379
386
  // -------------------------
380
387
 
381
388
  .navbar-inverse {
382
- color: $navbarInverseText;
383
389
 
384
390
  .navbar-inner {
385
391
  @include gradient-vertical($navbarInverseBackgroundHighlight, $navbarInverseBackground);
@@ -395,6 +401,14 @@
395
401
  }
396
402
  }
397
403
 
404
+ .brand {
405
+ color: $navbarInverseBrandColor;
406
+ }
407
+
408
+ .navbar-text {
409
+ color: $navbarInverseText;
410
+ }
411
+
398
412
  .nav > li > a:focus,
399
413
  .nav > li > a:hover {
400
414
  background-color: $navbarInverseLinkBackgroundHover;
@@ -429,6 +443,10 @@
429
443
  background-color: $navbarInverseLinkBackgroundActive;
430
444
  color: $navbarInverseLinkColorActive;
431
445
  }
446
+ .nav li.dropdown > a:hover .caret {
447
+ border-top-color: $navbarInverseLinkColorActive;
448
+ color: $navbarInverseLinkColorActive;
449
+ }
432
450
  .nav li.dropdown > .dropdown-toggle .caret {
433
451
  border-top-color: $navbarInverseLinkColor;
434
452
  border-bottom-color: $navbarInverseLinkColor;
@@ -21,6 +21,12 @@
21
21
  background-color: $grayLighter;
22
22
  }
23
23
 
24
+ // Prevent IE8 from misplacing imgs
25
+ // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
26
+ .nav > li > a > img {
27
+ max-width: none;
28
+ }
29
+
24
30
  // Redeclare pull classes because of specifity
25
31
  .nav > .pull-right {
26
32
  float: right;
@@ -11,6 +11,7 @@
11
11
  display: none;
12
12
  width: 236px;
13
13
  padding: 1px;
14
+ text-align: left; // Reset given new insertion method
14
15
  background-color: $popoverBackground;
15
16
  -webkit-background-clip: padding-box;
16
17
  -moz-background-clip: padding;
@@ -20,12 +21,14 @@
20
21
  @include border-radius(6px);
21
22
  @include box-shadow(0 5px 10px rgba(0,0,0,.2));
22
23
 
24
+ // Overrides for proper insertion
25
+ white-space: normal;
26
+
23
27
  // Offset the popover to account for the popover arrow
24
28
  &.top { margin-top: -10px; }
25
29
  &.right { margin-left: 10px; }
26
30
  &.bottom { margin-top: 10px; }
27
31
  &.left { margin-left: -10px; }
28
-
29
32
  }
30
33
 
31
34
  .popover-title {
@@ -41,77 +44,86 @@
41
44
 
42
45
  .popover-content {
43
46
  padding: 9px 14px;
44
- p, ul, ol {
45
- margin-bottom: 0;
46
- }
47
47
  }
48
48
 
49
49
  // Arrows
50
+ //
51
+ // .arrow is outer, .arrow:after is inner
52
+
50
53
  .popover .arrow,
51
54
  .popover .arrow:after {
52
55
  position: absolute;
53
- display: inline-block;
56
+ display: block;
54
57
  width: 0;
55
58
  height: 0;
56
59
  border-color: transparent;
57
60
  border-style: solid;
58
61
  }
62
+ .popover .arrow {
63
+ border-width: $popoverArrowOuterWidth;
64
+ }
59
65
  .popover .arrow:after {
66
+ border-width: $popoverArrowWidth;
60
67
  content: "";
61
- z-index: -1;
62
68
  }
63
69
 
64
70
  .popover {
65
71
  &.top .arrow {
66
- bottom: -$popoverArrowWidth;
67
72
  left: 50%;
68
- margin-left: -$popoverArrowWidth;
69
- border-width: $popoverArrowWidth $popoverArrowWidth 0;
70
- border-top-color: $popoverArrowColor;
73
+ margin-left: -$popoverArrowOuterWidth;
74
+ border-bottom-width: 0;
75
+ border-top-color: #999; // IE8 fallback
76
+ border-top-color: $popoverArrowOuterColor;
77
+ bottom: -$popoverArrowOuterWidth;
71
78
  &:after {
72
- border-width: $popoverArrowOuterWidth $popoverArrowOuterWidth 0;
73
- border-top-color: $popoverArrowOuterColor;
74
- bottom: -1px;
75
- left: -$popoverArrowOuterWidth;
79
+ bottom: 1px;
80
+ margin-left: -$popoverArrowWidth;
81
+ border-bottom-width: 0;
82
+ border-top-color: $popoverArrowColor;
76
83
  }
77
84
  }
78
85
  &.right .arrow {
79
86
  top: 50%;
80
- left: -$popoverArrowWidth;
81
- margin-top: -$popoverArrowWidth;
82
- border-width: $popoverArrowWidth $popoverArrowWidth $popoverArrowWidth 0;
83
- border-right-color: $popoverArrowColor;
87
+ left: -$popoverArrowOuterWidth;
88
+ margin-top: -$popoverArrowOuterWidth;
89
+ border-left-width: 0;
90
+ border-right-color: #999; // IE8 fallback
91
+ border-right-color: $popoverArrowOuterColor;
84
92
  &:after {
85
- border-width: $popoverArrowOuterWidth $popoverArrowOuterWidth $popoverArrowOuterWidth 0;
86
- border-right-color: $popoverArrowOuterColor;
87
- bottom: -$popoverArrowOuterWidth;
88
- left: -1px;
93
+ left: 1px;
94
+ bottom: -$popoverArrowWidth;
95
+ border-left-width: 0;
96
+ border-right-color: $popoverArrowColor;
89
97
  }
90
98
  }
91
99
  &.bottom .arrow {
92
- top: -$popoverArrowWidth;
93
100
  left: 50%;
94
- margin-left: -$popoverArrowWidth;
95
- border-width: 0 $popoverArrowWidth $popoverArrowWidth;
96
- border-bottom-color: $popoverArrowColor;
101
+ margin-left: -$popoverArrowOuterWidth;
102
+ border-top-width: 0;
103
+ border-bottom-color: #999; // IE8 fallback
104
+ border-bottom-color: $popoverArrowOuterColor;
105
+ top: -$popoverArrowOuterWidth;
97
106
  &:after {
98
- border-width: 0 $popoverArrowOuterWidth $popoverArrowOuterWidth;
99
- border-bottom-color: $popoverArrowOuterColor;
100
- top: -1px;
101
- left: -$popoverArrowOuterWidth;
107
+ top: 1px;
108
+ margin-left: -$popoverArrowWidth;
109
+ border-top-width: 0;
110
+ border-bottom-color: $popoverArrowColor;
102
111
  }
103
112
  }
113
+
104
114
  &.left .arrow {
105
115
  top: 50%;
106
- right: -$popoverArrowWidth;
107
- margin-top: -$popoverArrowWidth;
108
- border-width: $popoverArrowWidth 0 $popoverArrowWidth $popoverArrowWidth;
109
- border-left-color: $popoverArrowColor;
116
+ right: -$popoverArrowOuterWidth;
117
+ margin-top: -$popoverArrowOuterWidth;
118
+ border-right-width: 0;
119
+ border-left-color: #999; // IE8 fallback
120
+ border-left-color: $popoverArrowOuterColor;
110
121
  &:after {
111
- border-width: $popoverArrowOuterWidth 0 $popoverArrowOuterWidth $popoverArrowOuterWidth;
112
- border-left-color: $popoverArrowOuterColor;
113
- bottom: -$popoverArrowOuterWidth;
114
- right: -1px;
122
+ right: 1px;
123
+ border-right-width: 0;
124
+ border-left-color: $popoverArrowColor;
125
+ bottom: -$popoverArrowWidth;
115
126
  }
116
127
  }
128
+
117
129
  }
@@ -1,5 +1,5 @@
1
1
  //
2
- // Reset
2
+ // Reset CSS
3
3
  // Adapted from http://github.com/necolas/normalize.css
4
4
  // --------------------------------------------------
5
5
 
@@ -122,10 +122,18 @@ input[type="submit"] {
122
122
  -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
123
123
  cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
124
124
  }
125
+ label,
126
+ select,
127
+ button,
128
+ input[type="button"],
129
+ input[type="reset"],
130
+ input[type="submit"],
131
+ input[type="radio"],
132
+ input[type="checkbox"] {
133
+ cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
134
+ }
125
135
  input[type="search"] { // Appearance in Safari/Chrome
126
- -webkit-box-sizing: content-box;
127
- -moz-box-sizing: content-box;
128
- box-sizing: content-box;
136
+ @include box-sizing(content-box);
129
137
  -webkit-appearance: textfield;
130
138
  }
131
139
  input[type="search"]::-webkit-search-decoration,
@@ -136,3 +144,73 @@ textarea {
136
144
  overflow: auto; // Remove vertical scrollbar in IE6-9
137
145
  vertical-align: top; // Readability and alignment cross-browser
138
146
  }
147
+
148
+
149
+ // Printing
150
+ // -------------------------
151
+ // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
152
+
153
+ @media print {
154
+
155
+ * {
156
+ text-shadow: none !important;
157
+ color: #000 !important; // Black prints faster: h5bp.com/s
158
+ background: transparent !important;
159
+ box-shadow: none !important;
160
+ }
161
+
162
+ a,
163
+ a:visited {
164
+ text-decoration: underline;
165
+ }
166
+
167
+ a[href]:after {
168
+ content: " (" attr(href) ")";
169
+ }
170
+
171
+ abbr[title]:after {
172
+ content: " (" attr(title) ")";
173
+ }
174
+
175
+ // Don't show links for images, or javascript/internal links
176
+ .ir a:after,
177
+ a[href^="javascript:"]:after,
178
+ a[href^="#"]:after {
179
+ content: "";
180
+ }
181
+
182
+ pre,
183
+ blockquote {
184
+ border: 1px solid #999;
185
+ page-break-inside: avoid;
186
+ }
187
+
188
+ thead {
189
+ display: table-header-group; // h5bp.com/t
190
+ }
191
+
192
+ tr,
193
+ img {
194
+ page-break-inside: avoid;
195
+ }
196
+
197
+ img {
198
+ max-width: 100% !important;
199
+ }
200
+
201
+ @page {
202
+ margin: 0.5cm;
203
+ }
204
+
205
+ p,
206
+ h2,
207
+ h3 {
208
+ orphans: 3;
209
+ widows: 3;
210
+ }
211
+
212
+ h2,
213
+ h3 {
214
+ page-break-after: avoid;
215
+ }
216
+ }