jekyll-theme-cs50 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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 {