jekyll-theme-cs50 0.1.6 → 0.1.7

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/header.md +1 -0
  3. data/_layouts/page.html +51 -19
  4. data/_sass/jekyll-theme-cs50.scss +97 -60
  5. data/_sass/node_modules/bootstrap/LICENSE +22 -22
  6. data/_sass/node_modules/bootstrap/scss/_badge.scss +2 -1
  7. data/_sass/node_modules/bootstrap/scss/_buttons.scss +2 -5
  8. data/_sass/node_modules/bootstrap/scss/_card.scss +13 -34
  9. data/_sass/node_modules/bootstrap/scss/_carousel.scss +1 -2
  10. data/_sass/node_modules/bootstrap/scss/_close.scss +1 -4
  11. data/_sass/node_modules/bootstrap/scss/_code.scss +5 -5
  12. data/_sass/node_modules/bootstrap/scss/_custom-forms.scss +11 -11
  13. data/_sass/node_modules/bootstrap/scss/_dropdown.scss +20 -20
  14. data/_sass/node_modules/bootstrap/scss/_forms.scss +12 -16
  15. data/_sass/node_modules/bootstrap/scss/_functions.scss +3 -3
  16. data/_sass/node_modules/bootstrap/scss/_images.scss +1 -1
  17. data/_sass/node_modules/bootstrap/scss/_input-group.scss +3 -3
  18. data/_sass/node_modules/bootstrap/scss/_jumbotron.scss +1 -0
  19. data/_sass/node_modules/bootstrap/scss/_list-group.scss +33 -5
  20. data/_sass/node_modules/bootstrap/scss/_mixins.scss +6 -0
  21. data/_sass/node_modules/bootstrap/scss/_modal.scss +47 -4
  22. data/_sass/node_modules/bootstrap/scss/_navbar.scss +3 -8
  23. data/_sass/node_modules/bootstrap/scss/_pagination.scss +0 -5
  24. data/_sass/node_modules/bootstrap/scss/_popover.scss +46 -58
  25. data/_sass/node_modules/bootstrap/scss/_print.scss +1 -1
  26. data/_sass/node_modules/bootstrap/scss/_progress.scss +15 -6
  27. data/_sass/node_modules/bootstrap/scss/_reboot.scss +28 -7
  28. data/_sass/node_modules/bootstrap/scss/_spinners.scss +2 -0
  29. data/_sass/node_modules/bootstrap/scss/_tables.scss +3 -5
  30. data/_sass/node_modules/bootstrap/scss/_toasts.scss +3 -2
  31. data/_sass/node_modules/bootstrap/scss/_tooltip.scss +1 -1
  32. data/_sass/node_modules/bootstrap/scss/_transitions.scss +0 -2
  33. data/_sass/node_modules/bootstrap/scss/_type.scss +15 -15
  34. data/_sass/node_modules/bootstrap/scss/_utilities.scss +1 -0
  35. data/_sass/node_modules/bootstrap/scss/_variables.scss +129 -97
  36. data/_sass/node_modules/bootstrap/scss/bootstrap-grid.scss +3 -3
  37. data/_sass/node_modules/bootstrap/scss/bootstrap-reboot.scss +3 -3
  38. data/_sass/node_modules/bootstrap/scss/bootstrap.scss +3 -3
  39. data/_sass/node_modules/bootstrap/scss/mixins/_badge.scss +6 -0
  40. data/_sass/node_modules/bootstrap/scss/mixins/_border-radius.scss +29 -1
  41. data/_sass/node_modules/bootstrap/scss/mixins/_box-shadow.scss +16 -1
  42. data/_sass/node_modules/bootstrap/scss/mixins/_buttons.scss +3 -7
  43. data/_sass/node_modules/bootstrap/scss/mixins/_caret.scss +4 -4
  44. data/_sass/node_modules/bootstrap/scss/mixins/_deprecate.scss +10 -0
  45. data/_sass/node_modules/bootstrap/scss/mixins/_float.scss +3 -0
  46. data/_sass/node_modules/bootstrap/scss/mixins/_forms.scss +8 -14
  47. data/_sass/node_modules/bootstrap/scss/mixins/_image.scss +2 -2
  48. data/_sass/node_modules/bootstrap/scss/mixins/_pagination.scss +1 -1
  49. data/_sass/node_modules/bootstrap/scss/mixins/_reset-text.scss +1 -1
  50. data/_sass/node_modules/bootstrap/scss/mixins/_size.scss +1 -0
  51. data/_sass/node_modules/bootstrap/scss/mixins/_text-emphasis.scss +5 -3
  52. data/_sass/node_modules/bootstrap/scss/mixins/_text-hide.scss +1 -3
  53. data/_sass/node_modules/bootstrap/scss/mixins/_transition.scss +1 -1
  54. data/_sass/node_modules/bootstrap/scss/mixins/_visibility.scss +1 -0
  55. data/_sass/node_modules/bootstrap/scss/utilities/_borders.scss +13 -1
  56. data/_sass/node_modules/bootstrap/scss/utilities/_display.scss +6 -18
  57. data/_sass/node_modules/bootstrap/scss/utilities/_float.scss +5 -3
  58. data/_sass/node_modules/bootstrap/scss/utilities/_stretched-link.scss +19 -0
  59. data/_sass/node_modules/bootstrap/scss/utilities/_text.scss +6 -1
  60. data/_sass/node_modules/bootstrap/scss/utilities/_visibility.scss +4 -2
  61. data/_sass/node_modules/bootstrap/scss/vendor/_rfs.scss +204 -0
  62. data/_sass/package.json +2 -2
  63. metadata +21 -47
  64. data/_includes/aside.html +0 -24
  65. data/_includes/main.html +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c9d80cd19a3fbc5c20099e4231b250d9aa74472ef90877613ebf71ee4272dd3
4
- data.tar.gz: 5050634e1df113f6f367be177e6eeff30cbd1c51e848be80c45ad90b3bbef81f
3
+ metadata.gz: 0a8c9a686a6e28101db3936a867dc4aa25112f01ff6e7f85cccefd9d954090c1
4
+ data.tar.gz: bb2eb4e5c7451b00f1678a27dc81759728bdd111499afcc897070cb09009da74
5
5
  SHA512:
6
- metadata.gz: f3c80561c628609fed9a49ce2f458d2e78911bdb05837777f8387a167599faeef31f4852b8fdfa83f505881250fad90a19856dd1faaecebd98a22d8b32af607a
7
- data.tar.gz: 99107a22c3a107bf52d64d086f1c85627abd4b50461118f0c7f2421a9fcb19a2c2ed714c1dce5e4ff50eec6b87d43c78d234f117c957470a40fee33ca3d6c4ca
6
+ metadata.gz: 4799a0ef990502326bcfd03199b499cb8bea2efe8004097284cda90703a86adc180341592af3920fe5eb1b6b4939f79e2d297ebcf7d264e995f6d093ea109a55
7
+ data.tar.gz: 87bc23a460616f5c299c8bf36cfbebd49aee8935b1293b06ba53c78706095094718279c4729572e8cb19e550ad72344433da4af3df34f45c6a02fdbf28452dbb
data/_includes/header.md CHANGED
@@ -0,0 +1 @@
1
+ # [{{ site.title }}]({{ "/" | relative_url }})
data/_layouts/page.html CHANGED
@@ -29,30 +29,20 @@
29
29
 
30
30
  <link href="{{ '/favicon.ico' | relative_url }}?{{ site.time | date: '%s' }}" rel="icon">
31
31
 
32
- <!-- https://useiconic.com/open -->
33
- <link crossorigin="anonymous" href="https://cdnjs.cloudflare.com/ajax/libs/open-iconic/1.1.1/font/css/open-iconic-bootstrap.min.css" integrity="sha256-BJ/G+e+y7bQdrYkS2RBTyNfBHpA9IuGaPmf9htub5MQ=" rel="stylesheet">
32
+ <!-- https://fontawesome.com/how-to-use/on-the-web/referencing-icons/basic-use -->
33
+ <link crossorigin="anonymous" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" rel="stylesheet">
34
34
 
35
35
  <link href="{{ '/assets/css/style.css' | relative_url }}?{{ site.time | date: '%s' }}" rel="stylesheet">
36
36
 
37
- <!-- http://getbootstrap.com/docs/4.2/getting-started/introduction/ -->
38
- <script crossorigin="anonymous" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
39
- <script crossorigin="anonymous" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
40
- <script crossorigin="anonymous" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
37
+ <!-- http://getbootstrap.com/docs/4.3/getting-started/introduction/ -->
38
+ <script crossorigin="anonymous" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
39
+ <script crossorigin="anonymous" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
40
+ <script crossorigin="anonymous" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
41
41
 
42
42
  <script>
43
43
 
44
44
  $(document).on('DOMContentLoaded', function() {
45
45
 
46
- // Add toggler
47
- let nav = $('aside nav.collapse');
48
- let button = $('<button aria-expanded="false" class="btn collapsed" data-toggle="collapse" type="button"><span class="oi oi-menu"></span></button>');
49
- nav.before(button);
50
- button.click(function() {
51
- nav.collapse('toggle');
52
- $(this).toggleClass('collapsed');
53
- $(this).attr('aria-expanded', ($(this).attr('aria-expanded') === 'false') ? 'true' : 'false');
54
- });
55
-
56
46
  // Get headings
57
47
  let $headings = $([
58
48
  'main.markdown-body h2',
@@ -64,13 +54,18 @@
64
54
  // Add anchors to headings
65
55
  $headings.each(function(index, element) {
66
56
  if ($(element).attr('id') && $(element).has('a').length === 0) {
67
- $(element).wrapInner($('<a href="#' + $(element).attr('id') + '"></a>'));
57
+ $(element).wrapInner($('<a data-id href="#' + $(element).attr('id') + '"></a>'));
68
58
  }
69
59
  });
70
60
 
71
61
  // For each iframe
72
62
  $('iframe').each(function(index, element) {
73
63
 
64
+ // Ensure responsive in Safari on iOS (for, e.g., Google Calendars), per https://stackoverflow.com/a/23083463/5156190
65
+ if (!$(this).attr('scrolling')) {
66
+ $(this).attr('scrolling', 'no');
67
+ }
68
+
74
69
  // If an embedded YouTube video
75
70
  let matches = $(this).attr('src').match(/^https:\/\/www.youtube.com\/embed\/([A-Za-z0-9_-]+)/);
76
71
  if (matches) {
@@ -127,9 +122,46 @@
127
122
 
128
123
  <body>
129
124
 
130
- {%- include aside.html -%}
125
+ <div class="container-fluid">
126
+
127
+ <div class="row">
128
+
129
+ <aside class="col-md">
130
+
131
+ <header>
132
+
133
+ {%- capture header -%}{%- include header.md -%}{%- endcapture -%}
134
+ {{- header | markdownify | replace: " id=", " data-id=" | strip -}}
135
+
136
+ </header>
137
+
138
+ <button aria-controls="nav" aria-expanded="false" class="btn btn-sm collapsed d-md-none" data-target="aside > nav" data-toggle="collapse">Menu</button>
139
+
140
+ <nav class="collapse d-md-block">
141
+
142
+ {%- capture nav -%}{%- include nav.md -%}{%- endcapture -%}
143
+ {{- nav | markdownify | replace: " id=", " data-id=" | strip -}}
144
+
145
+ </nav>
146
+
147
+ <footer>
148
+
149
+ {%- capture footer -%}{%- include footer.md -%}{%- endcapture -%}
150
+ {{- footer | markdownify | replace: " id=", " data-id=" | strip -}}
151
+
152
+ </footer>
153
+
154
+ </aside>
155
+
156
+ <main class="col-md markdown-body">
157
+
158
+ {{ content }}
159
+
160
+ </main>
161
+
162
+ </div>
131
163
 
132
- {%- include main.html -%}
164
+ </div>
133
165
 
134
166
  </body>
135
167
 
@@ -17,14 +17,20 @@ $link-hover-color: $link-color !default;
17
17
 
18
18
  // Root em
19
19
  html {
20
- font-size: 20px;
20
+ font-size: 18px;
21
21
  }
22
22
 
23
23
  // Defaults for iframes
24
24
  iframe {
25
25
  border: 0;
26
26
  height: 480px;
27
- width: 100%;
27
+ }
28
+
29
+ // Ensure responsive in Safari on iOS (for, e.g., Google Calendars), per
30
+ // https://stackoverflow.com/a/23083463/5156190
31
+ iframe {
32
+ min-width: 100%;
33
+ width: 1px;
28
34
  }
29
35
 
30
36
  // Confine images to parent
@@ -32,19 +38,40 @@ img {
32
38
  max-width: 100%;
33
39
  }
34
40
 
35
- // Crimson aside, transparent text
41
+ // Confine borders to images
42
+ .img-thumbnail {
43
+ width: fit-content;
44
+ }
45
+
46
+ // Crimson background, transparent text
36
47
  aside {
37
48
  background-color: $link-color;
38
- bottom: 0;
39
49
  color: rgba(255, 255, 255, 0.5);
40
50
  font-size: 1.125rem;
41
- left: 0;
51
+ }
52
+
53
+ // Override column's padding
54
+ aside.col-md {
42
55
  padding: 2rem 2rem;
43
- overflow: auto;
44
- position: fixed;
45
- text-align: left;
46
- top: 0;
47
- width: 20rem;
56
+ }
57
+
58
+ // Fixed width, scroll on larger devices
59
+ @include media-breakpoint-up(md) {
60
+ aside.col-md {
61
+ flex: 0 1 20rem;
62
+ @supports (position: sticky) {
63
+ height: 100vh;
64
+ overflow-y: auto;
65
+ position: sticky;
66
+ top: 0;
67
+ z-index: $zindex-sticky;
68
+ }
69
+ }
70
+ }
71
+
72
+ // Align badges
73
+ aside .badge {
74
+ vertical-align: middle;
48
75
  }
49
76
 
50
77
  // Bold headings
@@ -60,11 +87,27 @@ aside h6 {
60
87
  // Opaque text
61
88
  aside a,
62
89
  aside a:hover,
63
- aside .btn,
64
- aside .btn:hover {
90
+ aside button[data-toggle=collapse],
91
+ aside button[data-toggle=collapse]:hover {
65
92
  background-color: inherit;
93
+ border-color: rgba(255, 255, 255, .5);
66
94
  color: rgba(255, 255, 255, 1);
67
- opacity: 1;
95
+ }
96
+
97
+ // Opaque border
98
+ aside button[data-toggle=collapse]:hover {
99
+ border-color: rgba(255, 255, 255, 1);
100
+ }
101
+
102
+ // Invert colors when not collapsed
103
+ aside button[data-toggle=collapse]:not(.collapsed) {
104
+ background-color: rgba(255, 255, 255, 1);
105
+ color: $link-color;
106
+ }
107
+
108
+ // Compact small paragraphs
109
+ aside p.small {
110
+ line-height: 1.25;
68
111
  }
69
112
 
70
113
  // Separate nav button (or header) and footer, applying margins to children to avoid flicker when uncollapsing
@@ -84,20 +127,28 @@ aside button[data-toggle=collapse] {
84
127
  margin-top: 1rem;
85
128
  }
86
129
 
87
- // Remove padding above and below icon
88
- aside button[data-toggle=collapse] {
89
- padding-bottom: 0;
90
- padding-top: 0;
130
+ // Truncate list items
131
+ nav ol li, nav ul li {
132
+ @include text-truncate;
91
133
  }
92
134
 
93
- // No bullets for nav
94
- nav dl,
95
- nav ol,
135
+ // Left-align unordered lists, without bullets
96
136
  nav ul {
97
137
  list-style: none;
98
138
  padding-left: 0;
99
139
  }
100
140
 
141
+ // Preserve bullets for nested unordered lists
142
+ nav ul ul {
143
+ list-style: inside;
144
+ }
145
+
146
+ // Left-align ordered lists
147
+ nav ol {
148
+ list-style-position: inside;
149
+ padding-left: 0;
150
+ }
151
+
101
152
  // Separate footer from nav unless empty
102
153
  footer {
103
154
  margin-top: 1rem;
@@ -106,16 +157,17 @@ footer:empty {
106
157
  margin-top: 0;
107
158
  }
108
159
 
109
- // Padding around main
110
- main {
111
- margin-left: 20rem;
160
+ // Override column's padding, width
161
+ main.col-md {
162
+ max-width: 80rem;
163
+ overflow: auto; /* https://stackoverflow.com/a/26523355 */
112
164
  padding: 4rem 2rem;
113
165
  }
114
166
 
115
167
  // Override Primer's family and size for fonts
116
168
  .markdown-body {
117
- font-family: unset; /* Use our family */
118
- font-size: unset; /* Use our size */
169
+ font-family: inherit; /* Use our family */
170
+ font-size: inherit; /* Use our size */
119
171
  }
120
172
 
121
173
  // Add padding above headings to match Primer's padding below headings,
@@ -130,12 +182,24 @@ main {
130
182
  padding-top: 16px;
131
183
  }
132
184
 
185
+ // Mute emphasized text in headings
186
+ .markdown-body h1 > em,
187
+ .markdown-body h2 > em,
188
+ .markdown-body h3 > em,
189
+ .markdown-body h4 > em,
190
+ .markdown-body h5 > em,
191
+ .markdown-body h6 > em {
192
+ @extend .font-weight-normal;
193
+ @extend .text-muted;
194
+ font-style: normal;
195
+ }
196
+
133
197
  // Subtle anchors in headings
134
- .markdown-body h2 a,
135
- .markdown-body h3 a,
136
- .markdown-body h4 a,
137
- .markdown-body h5 a,
138
- .markdown-body h6 a {
198
+ .markdown-body h2 a[data-id],
199
+ .markdown-body h3 a[data-id],
200
+ .markdown-body h4 a[data-id],
201
+ .markdown-body h5 a[data-id],
202
+ .markdown-body h6 a[data-id] {
139
203
  color: inherit;
140
204
  text-decoration: none;
141
205
  }
@@ -180,21 +244,6 @@ main {
180
244
  margin-top: 0;
181
245
  }
182
246
 
183
- // On large devices
184
- // https://getbootstrap.com/docs/4.2/layout/overview/#responsive-breakpoints
185
- @media (min-width: 768px) {
186
-
187
- // Hide button above nav
188
- aside button[data-toggle=collapse] {
189
- display: none;
190
- }
191
-
192
- // Show nav
193
- nav.collapse:not(.show) {
194
- display: block;
195
- }
196
- }
197
-
198
247
  // On small devices and printers
199
248
  // https://getbootstrap.com/docs/4.2/layout/overview/#responsive-breakpoints
200
249
  @media (max-width: 767.98px), print {
@@ -204,21 +253,9 @@ main {
204
253
  font-size: 16px;
205
254
  }
206
255
 
207
- // Static aside
208
- aside {
209
- bottom: auto;
210
- left: auto;
211
- overflow: visible;
212
- position: static;
213
- right: auto;
214
- text-align: center;
215
- top: auto;
216
- width: auto;
217
- }
218
-
219
- // Don't offset main
220
- main {
221
- margin-left: auto;
256
+ // Don't shrink fonts as much
257
+ small, .small {
258
+ font-size: 90%;
222
259
  }
223
260
  }
224
261
 
@@ -1,22 +1,22 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2011-2018 Twitter, Inc.
4
- Copyright (c) 2011-2018 The Bootstrap Authors
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in
14
- all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- THE SOFTWARE.
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2011-2019 Twitter, Inc.
4
+ Copyright (c) 2011-2019 The Bootstrap Authors
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
@@ -6,13 +6,14 @@
6
6
  .badge {
7
7
  display: inline-block;
8
8
  padding: $badge-padding-y $badge-padding-x;
9
- font-size: $badge-font-size;
9
+ @include font-size($badge-font-size);
10
10
  font-weight: $badge-font-weight;
11
11
  line-height: 1;
12
12
  text-align: center;
13
13
  white-space: nowrap;
14
14
  vertical-align: baseline;
15
15
  @include border-radius($badge-border-radius);
16
+ @include transition($badge-transition);
16
17
 
17
18
  @at-root a#{&} {
18
19
  @include hover-focus {
@@ -6,6 +6,7 @@
6
6
 
7
7
  .btn {
8
8
  display: inline-block;
9
+ font-family: $btn-font-family;
9
10
  font-weight: $btn-font-weight;
10
11
  color: $body-color;
11
12
  text-align: center;
@@ -34,11 +35,6 @@
34
35
  @include box-shadow(none);
35
36
  }
36
37
 
37
- // Opinionated: add "hand" cursor to non-disabled .btn elements
38
- &:not(:disabled):not(.disabled) {
39
- cursor: pointer;
40
- }
41
-
42
38
  &:not(:disabled):not(.disabled):active,
43
39
  &:not(:disabled):not(.disabled).active {
44
40
  @include box-shadow($btn-active-box-shadow);
@@ -81,6 +77,7 @@ fieldset:disabled a.btn {
81
77
  .btn-link {
82
78
  font-weight: $font-weight-normal;
83
79
  color: $link-color;
80
+ text-decoration: $link-decoration;
84
81
 
85
82
  @include hover {
86
83
  color: $link-hover-color;
@@ -6,7 +6,7 @@
6
6
  position: relative;
7
7
  display: flex;
8
8
  flex-direction: column;
9
- min-width: 0;
9
+ min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
10
10
  word-wrap: break-word;
11
11
  background-color: $card-bg;
12
12
  background-clip: border-box;
@@ -36,6 +36,7 @@
36
36
  // as much space as possible, ensuring footers are aligned to the bottom.
37
37
  flex: 1 1 auto;
38
38
  padding: $card-spacer-x;
39
+ color: $card-color;
39
40
  }
40
41
 
41
42
  .card-title {
@@ -195,55 +196,35 @@
195
196
 
196
197
  // Handle rounded corners
197
198
  @if $enable-rounded {
198
- &:first-child {
199
+ &:not(:last-child) {
199
200
  @include border-right-radius(0);
200
201
 
201
202
  .card-img-top,
202
203
  .card-header {
204
+ // stylelint-disable-next-line property-blacklist
203
205
  border-top-right-radius: 0;
204
206
  }
205
207
  .card-img-bottom,
206
208
  .card-footer {
209
+ // stylelint-disable-next-line property-blacklist
207
210
  border-bottom-right-radius: 0;
208
211
  }
209
212
  }
210
213
 
211
- &:last-child {
214
+ &:not(:first-child) {
212
215
  @include border-left-radius(0);
213
216
 
214
217
  .card-img-top,
215
218
  .card-header {
219
+ // stylelint-disable-next-line property-blacklist
216
220
  border-top-left-radius: 0;
217
221
  }
218
222
  .card-img-bottom,
219
223
  .card-footer {
224
+ // stylelint-disable-next-line property-blacklist
220
225
  border-bottom-left-radius: 0;
221
226
  }
222
227
  }
223
-
224
- &:only-child {
225
- @include border-radius($card-border-radius);
226
-
227
- .card-img-top,
228
- .card-header {
229
- @include border-top-radius($card-border-radius);
230
- }
231
- .card-img-bottom,
232
- .card-footer {
233
- @include border-bottom-radius($card-border-radius);
234
- }
235
- }
236
-
237
- &:not(:first-child):not(:last-child):not(:only-child) {
238
- @include border-radius(0);
239
-
240
- .card-img-top,
241
- .card-img-bottom,
242
- .card-header,
243
- .card-footer {
244
- @include border-radius(0);
245
- }
246
- }
247
228
  }
248
229
  }
249
230
  }
@@ -278,29 +259,27 @@
278
259
  //
279
260
 
280
261
  .accordion {
281
- .card {
262
+ > .card {
282
263
  overflow: hidden;
283
264
 
284
265
  &:not(:first-of-type) {
285
266
  .card-header:first-child {
286
- border-radius: 0;
267
+ @include border-radius(0);
287
268
  }
288
269
 
289
270
  &:not(:last-of-type) {
290
271
  border-bottom: 0;
291
- border-radius: 0;
272
+ @include border-radius(0);
292
273
  }
293
274
  }
294
275
 
295
276
  &:first-of-type {
296
277
  border-bottom: 0;
297
- border-bottom-right-radius: 0;
298
- border-bottom-left-radius: 0;
278
+ @include border-bottom-radius(0);
299
279
  }
300
280
 
301
281
  &:last-of-type {
302
- border-top-left-radius: 0;
303
- border-top-right-radius: 0;
282
+ @include border-top-radius(0);
304
283
  }
305
284
 
306
285
  .card-header {