]> BookStack Code Mirror - bookstack/blob - resources/assets/sass/_grid.scss
Fixed tri-layout overflow in some scenarios
[bookstack] / resources / assets / sass / _grid.scss
1
2 /** Flexbox styling rules **/
3 body.flexbox {
4   display: flex;
5   flex-direction: column;
6   align-items: stretch;
7   height: 100%;
8   min-height: 100%;
9   max-height: 100%;
10   overflow: hidden;
11   #content {
12     flex: 1;
13     display: flex;
14     min-height: 0;
15   }
16 }
17
18 .flex-fill {
19   display: flex;
20   align-items: stretch;
21   min-height: 0;
22   max-width: 100%;
23   position: relative;
24   &.rows {
25     flex-direction: row;
26   }
27   &.columns {
28     flex-direction: column;
29   }
30 }
31
32 .flex {
33   min-height: 0;
34   flex: 1;
35 }
36
37 .flex.scroll {
38   //overflow-y: auto;
39   display: flex;
40   &.sidebar {
41     margin-right: -14px;
42   }
43 }
44 .flex.scroll .scroll-body {
45   overflow-y: scroll;
46   flex: 1;
47 }
48
49 .flex-child > div {
50   flex: 1;
51 }
52
53 .dual-column-content {
54   columns: 2;
55 }
56
57 @include smaller-than($m) {
58   .dual-column-content {
59     columns: 1;
60   }
61 }
62
63 .content-wrap.card {
64   padding: $-l $-xxl;
65   margin-left: auto;
66   margin-right: auto;
67   margin-bottom: $-xl;
68   overflow: auto;
69   min-height: 60vh;
70   &.auto-height {
71     min-height: 0;
72   }
73   &.fill-width {
74     width: 100%;
75   }
76 }
77 @include smaller-than($m) {
78   .content-wrap.card {
79     padding: $-m $-l;
80   }
81 }
82
83 .tri-layout-container {
84   display: grid;
85   margin-left: $-xl;
86   margin-right: $-xl;
87   grid-template-columns: 1fr 4fr 1fr;
88   grid-template-areas: "a b c";
89   grid-column-gap: $-xxl;
90   .tri-layout-right {
91     grid-area: c;
92     min-width: 0;
93   }
94   .tri-layout-left {
95     grid-area: a;
96     min-width: 0;
97   }
98   .tri-layout-middle {
99     grid-area: b;
100     padding-top: $-m;
101   }
102 }
103 @include smaller-than($xxl) {
104   .tri-layout-container {
105     grid-template-areas:  "c b b"
106                           "a b b";
107     grid-template-columns: 1fr 3fr;
108     grid-template-rows: max-content min-content;
109     padding-right: $-l;
110     .content-wrap.card {
111       padding: $-l $-xl;
112     }
113   }
114 }
115 @include larger-than($xxl) {
116   .tri-layout-left-contents, .tri-layout-right-contents {
117     padding: $-m;
118     position: sticky;
119     top: $-m;
120     max-height: 100vh;
121     min-height: 50vh;
122     overflow-y: scroll;
123     overflow-x: hidden;
124     scrollbar-width: none;
125     -ms-overflow-style: none;
126     &::-webkit-scrollbar {
127       display: none;
128     }
129   }
130   .tri-layout-middle-contents {
131     max-width: 940px;
132     margin: 0 auto;
133   }
134 }
135
136 @include smaller-than($l) {
137   .tri-layout-container {
138     grid-template-areas:  none;
139     grid-template-columns: 10% 90%;
140     grid-column-gap: 0;
141     .tri-layout-left-contents, .tri-layout-right-contents {
142       padding-left: $-m;
143       padding-right: $-m;
144     }
145     .tri-layout-right-contents > div, .tri-layout-left-contents > div {
146       opacity: 0.6;
147       z-index: 0;
148     }
149     .tri-layout-left > *, .tri-layout-right > * {
150       pointer-events: none;
151     }
152     .tri-layout-right, .tri-layout-left, .tri-layout-middle {
153       grid-area: none;
154       grid-column: 1/3;
155       grid-row: 1;
156     }
157     .tri-layout-middle {
158       grid-row: 1/3;
159       grid-column: 2/3;
160       z-index: 1;
161       transition: transform ease-in-out 240ms;
162     }
163     .tri-layout-left {
164       grid-row: 2;
165     }
166     &.mobile-open {
167       overflow: hidden;
168       .tri-layout-middle {
169         transform: translateX(90%);
170       }
171       .tri-layout-right  > *, .tri-layout-left > * {
172         pointer-events: auto;
173       }
174     }
175   }
176 }
177
178 .tri-layout-left-contents > div, .tri-layout-right-contents > div {
179   opacity: 0.6;
180   transition: opacity ease-in-out 120ms;
181   &:hover {
182     opacity: 1;
183   }
184 }
185
186 /** Rules for all columns */
187 div[class^="col-"] img {
188   max-width: 100%;
189 }
190
191 .container {
192   max-width: $xxl;
193   margin-left: auto;
194   margin-right: auto;
195   padding-left: $-m;
196   padding-right: $-m;
197   &.fluid {
198     max-width: 100%;
199   }
200   &.medium {
201     max-width: 992px;
202   }
203   &.small {
204     max-width: 840px;
205   }
206   &.very-small {
207     max-width: 480px;
208   }
209   &.nopad {
210     padding-left: 0;
211     padding-right: 0;
212   }
213 }
214
215 .row {
216   margin-left: -$-m;
217   margin-right: -$-m;
218 }
219
220 .grid {
221   display: grid;
222   grid-column-gap: $-l;
223   grid-row-gap: $-l;
224   &.half {
225     grid-template-columns: 1fr 1fr;
226   }
227   &.third {
228     grid-template-columns: 1fr 1fr 1fr;
229   }
230   &.left-focus {
231     grid-template-columns: 2fr 1fr;
232   }
233   &.right-focus {
234     grid-template-columns: 1fr 2fr;
235   }
236   &.gap-xl {
237     grid-column-gap: $-xl;
238     grid-row-gap: $-xl;
239   }
240   &.gap-xxl {
241     grid-column-gap: $-xxl;
242     grid-row-gap: $-xxl;
243   }
244 }
245
246 .grid-card {
247   display: flex;
248   flex-direction: column;
249   border: 1px solid #ddd;
250   margin-bottom: $-l;
251   border-radius: 4px;
252   overflow: hidden;
253   min-width: 100px;
254   color: $text-dark;
255   transition: border-color ease-in-out 120ms, box-shadow ease-in-out 120ms;
256   &:hover {
257     color: $text-dark;
258     text-decoration: none;
259     box-shadow: $bs-card;
260   }
261   h2 {
262     width: 100%;
263     font-size: 1.5em;
264     margin: 0 0 10px;
265   }
266   p {
267     font-size: .7rem;
268     margin: 0;
269     line-height: 1.6em;
270   }
271   .grid-card-content {
272     flex: 1;
273     border-top: 0;
274     border-bottom-width: 2px;
275   }
276   .grid-card-content, .grid-card-footer {
277     padding: $-l;
278   }
279   .grid-card-content + .grid-card-footer {
280     padding-top: 0;
281   }
282 }
283
284 .bookshelf-grid-item .grid-card-content h2 a  {
285   color: $color-bookshelf;
286   fill: $color-bookshelf;
287 }
288
289 .book-grid-item .grid-card-footer {
290   p.small {
291     font-size: .8em;
292     margin: 0;
293   }
294 }
295
296 @include smaller-than($m) {
297   .grid.third {
298     grid-template-columns: 1fr 1fr;
299   }
300   .grid.half, .grid.left-focus, .grid.right-focus {
301     grid-template-columns: 1fr;
302   }
303   .grid.half.collapse-xs {
304     grid-template-columns: 1fr 1fr;
305   }
306   .grid.gap-xl {
307     grid-column-gap: $-m;
308     grid-row-gap: $-m;
309   }
310   .grid.right-focus.reverse-collapse > *:nth-child(2) {
311     order: 0;
312   }
313   .grid.right-focus.reverse-collapse > *:nth-child(1) {
314     order: 1;
315   }
316 }
317
318 @include smaller-than($s) {
319   .grid.third {
320     grid-template-columns: 1fr;
321   }
322 }
323
324 @include smaller-than($xs) {
325   .grid.half.collapse-xs {
326     grid-template-columns: 1fr;
327   }
328 }
329
330 .float {
331   float: left;
332   &.right {
333     float: right;
334   }
335 }
336
337 .block {
338   display: block;
339   position: relative;
340 }
341
342 .inline {
343   display: inline;
344 }
345
346 .block.inline {
347   display: inline-block;
348 }
349
350
351 // TODO - Remove old BS grid system
352 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
353   position: relative;
354   min-height: 1px;
355   padding-left: $-m;
356   padding-right: $-m;
357 }
358 .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
359   float: left;
360 }
361 .col-xs-12 {
362   width: 100%;
363 }
364 .col-xs-11 {
365   width: 91.66666667%;
366 }
367 .col-xs-10 {
368   width: 83.33333333%;
369 }
370 .col-xs-9 {
371   width: 75%;
372 }
373 .col-xs-8 {
374   width: 66.66666667%;
375 }
376 .col-xs-7 {
377   width: 58.33333333%;
378 }
379 .col-xs-6 {
380   width: 50%;
381 }
382 .col-xs-5 {
383   width: 41.66666667%;
384 }
385 .col-xs-4 {
386   width: 33.33333333%;
387 }
388 .col-xs-3 {
389   width: 25%;
390 }
391 .col-xs-2 {
392   width: 16.66666667%;
393 }
394 .col-xs-1 {
395   width: 8.33333333%;
396 }
397 .col-xs-pull-12 {
398   right: 100%;
399 }
400 .col-xs-pull-11 {
401   right: 91.66666667%;
402 }
403 .col-xs-pull-10 {
404   right: 83.33333333%;
405 }
406 .col-xs-pull-9 {
407   right: 75%;
408 }
409 .col-xs-pull-8 {
410   right: 66.66666667%;
411 }
412 .col-xs-pull-7 {
413   right: 58.33333333%;
414 }
415 .col-xs-pull-6 {
416   right: 50%;
417 }
418 .col-xs-pull-5 {
419   right: 41.66666667%;
420 }
421 .col-xs-pull-4 {
422   right: 33.33333333%;
423 }
424 .col-xs-pull-3 {
425   right: 25%;
426 }
427 .col-xs-pull-2 {
428   right: 16.66666667%;
429 }
430 .col-xs-pull-1 {
431   right: 8.33333333%;
432 }
433 .col-xs-pull-0 {
434   right: auto;
435 }
436 .col-xs-push-12 {
437   left: 100%;
438 }
439 .col-xs-push-11 {
440   left: 91.66666667%;
441 }
442 .col-xs-push-10 {
443   left: 83.33333333%;
444 }
445 .col-xs-push-9 {
446   left: 75%;
447 }
448 .col-xs-push-8 {
449   left: 66.66666667%;
450 }
451 .col-xs-push-7 {
452   left: 58.33333333%;
453 }
454 .col-xs-push-6 {
455   left: 50%;
456 }
457 .col-xs-push-5 {
458   left: 41.66666667%;
459 }
460 .col-xs-push-4 {
461   left: 33.33333333%;
462 }
463 .col-xs-push-3 {
464   left: 25%;
465 }
466 .col-xs-push-2 {
467   left: 16.66666667%;
468 }
469 .col-xs-push-1 {
470   left: 8.33333333%;
471 }
472 .col-xs-push-0 {
473   left: auto;
474 }
475 .col-xs-offset-12 {
476   margin-left: 100%;
477 }
478 .col-xs-offset-11 {
479   margin-left: 91.66666667%;
480 }
481 .col-xs-offset-10 {
482   margin-left: 83.33333333%;
483 }
484 .col-xs-offset-9 {
485   margin-left: 75%;
486 }
487 .col-xs-offset-8 {
488   margin-left: 66.66666667%;
489 }
490 .col-xs-offset-7 {
491   margin-left: 58.33333333%;
492 }
493 .col-xs-offset-6 {
494   margin-left: 50%;
495 }
496 .col-xs-offset-5 {
497   margin-left: 41.66666667%;
498 }
499 .col-xs-offset-4 {
500   margin-left: 33.33333333%;
501 }
502 .col-xs-offset-3 {
503   margin-left: 25%;
504 }
505 .col-xs-offset-2 {
506   margin-left: 16.66666667%;
507 }
508 .col-xs-offset-1 {
509   margin-left: 8.33333333%;
510 }
511 .col-xs-offset-0 {
512   margin-left: 0%;
513 }
514 @media (min-width: $screen-sm) {
515   .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
516     float: left;
517   }
518   .col-sm-12 {
519     width: 100%;
520   }
521   .col-sm-11 {
522     width: 91.66666667%;
523   }
524   .col-sm-10 {
525     width: 83.33333333%;
526   }
527   .col-sm-9 {
528     width: 75%;
529   }
530   .col-sm-8 {
531     width: 66.66666667%;
532   }
533   .col-sm-7 {
534     width: 58.33333333%;
535   }
536   .col-sm-6 {
537     width: 50%;
538   }
539   .col-sm-5 {
540     width: 41.66666667%;
541   }
542   .col-sm-4 {
543     width: 33.33333333%;
544   }
545   .col-sm-3 {
546     width: 25%;
547   }
548   .col-sm-2 {
549     width: 16.66666667%;
550   }
551   .col-sm-1 {
552     width: 8.33333333%;
553   }
554   .col-sm-pull-12 {
555     right: 100%;
556   }
557   .col-sm-pull-11 {
558     right: 91.66666667%;
559   }
560   .col-sm-pull-10 {
561     right: 83.33333333%;
562   }
563   .col-sm-pull-9 {
564     right: 75%;
565   }
566   .col-sm-pull-8 {
567     right: 66.66666667%;
568   }
569   .col-sm-pull-7 {
570     right: 58.33333333%;
571   }
572   .col-sm-pull-6 {
573     right: 50%;
574   }
575   .col-sm-pull-5 {
576     right: 41.66666667%;
577   }
578   .col-sm-pull-4 {
579     right: 33.33333333%;
580   }
581   .col-sm-pull-3 {
582     right: 25%;
583   }
584   .col-sm-pull-2 {
585     right: 16.66666667%;
586   }
587   .col-sm-pull-1 {
588     right: 8.33333333%;
589   }
590   .col-sm-pull-0 {
591     right: auto;
592   }
593   .col-sm-push-12 {
594     left: 100%;
595   }
596   .col-sm-push-11 {
597     left: 91.66666667%;
598   }
599   .col-sm-push-10 {
600     left: 83.33333333%;
601   }
602   .col-sm-push-9 {
603     left: 75%;
604   }
605   .col-sm-push-8 {
606     left: 66.66666667%;
607   }
608   .col-sm-push-7 {
609     left: 58.33333333%;
610   }
611   .col-sm-push-6 {
612     left: 50%;
613   }
614   .col-sm-push-5 {
615     left: 41.66666667%;
616   }
617   .col-sm-push-4 {
618     left: 33.33333333%;
619   }
620   .col-sm-push-3 {
621     left: 25%;
622   }
623   .col-sm-push-2 {
624     left: 16.66666667%;
625   }
626   .col-sm-push-1 {
627     left: 8.33333333%;
628   }
629   .col-sm-push-0 {
630     left: auto;
631   }
632   .col-sm-offset-12 {
633     margin-left: 100%;
634   }
635   .col-sm-offset-11 {
636     margin-left: 91.66666667%;
637   }
638   .col-sm-offset-10 {
639     margin-left: 83.33333333%;
640   }
641   .col-sm-offset-9 {
642     margin-left: 75%;
643   }
644   .col-sm-offset-8 {
645     margin-left: 66.66666667%;
646   }
647   .col-sm-offset-7 {
648     margin-left: 58.33333333%;
649   }
650   .col-sm-offset-6 {
651     margin-left: 50%;
652   }
653   .col-sm-offset-5 {
654     margin-left: 41.66666667%;
655   }
656   .col-sm-offset-4 {
657     margin-left: 33.33333333%;
658   }
659   .col-sm-offset-3 {
660     margin-left: 25%;
661   }
662   .col-sm-offset-2 {
663     margin-left: 16.66666667%;
664   }
665   .col-sm-offset-1 {
666     margin-left: 8.33333333%;
667   }
668   .col-sm-offset-0 {
669     margin-left: 0%;
670   }
671 }
672 @media (min-width: $screen-md) {
673   .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
674     float: left;
675   }
676   .col-md-12 {
677     width: 100%;
678   }
679   .col-md-11 {
680     width: 91.66666667%;
681   }
682   .col-md-10 {
683     width: 83.33333333%;
684   }
685   .col-md-9 {
686     width: 75%;
687   }
688   .col-md-8 {
689     width: 66.66666667%;
690   }
691   .col-md-7 {
692     width: 58.33333333%;
693   }
694   .col-md-6 {
695     width: 50%;
696   }
697   .col-md-5 {
698     width: 41.66666667%;
699   }
700   .col-md-4 {
701     width: 33.33333333%;
702   }
703   .col-md-3 {
704     width: 25%;
705   }
706   .col-md-2 {
707     width: 16.66666667%;
708   }
709   .col-md-1 {
710     width: 8.33333333%;
711   }
712   .col-md-pull-12 {
713     right: 100%;
714   }
715   .col-md-pull-11 {
716     right: 91.66666667%;
717   }
718   .col-md-pull-10 {
719     right: 83.33333333%;
720   }
721   .col-md-pull-9 {
722     right: 75%;
723   }
724   .col-md-pull-8 {
725     right: 66.66666667%;
726   }
727   .col-md-pull-7 {
728     right: 58.33333333%;
729   }
730   .col-md-pull-6 {
731     right: 50%;
732   }
733   .col-md-pull-5 {
734     right: 41.66666667%;
735   }
736   .col-md-pull-4 {
737     right: 33.33333333%;
738   }
739   .col-md-pull-3 {
740     right: 25%;
741   }
742   .col-md-pull-2 {
743     right: 16.66666667%;
744   }
745   .col-md-pull-1 {
746     right: 8.33333333%;
747   }
748   .col-md-pull-0 {
749     right: auto;
750   }
751   .col-md-push-12 {
752     left: 100%;
753   }
754   .col-md-push-11 {
755     left: 91.66666667%;
756   }
757   .col-md-push-10 {
758     left: 83.33333333%;
759   }
760   .col-md-push-9 {
761     left: 75%;
762   }
763   .col-md-push-8 {
764     left: 66.66666667%;
765   }
766   .col-md-push-7 {
767     left: 58.33333333%;
768   }
769   .col-md-push-6 {
770     left: 50%;
771   }
772   .col-md-push-5 {
773     left: 41.66666667%;
774   }
775   .col-md-push-4 {
776     left: 33.33333333%;
777   }
778   .col-md-push-3 {
779     left: 25%;
780   }
781   .col-md-push-2 {
782     left: 16.66666667%;
783   }
784   .col-md-push-1 {
785     left: 8.33333333%;
786   }
787   .col-md-push-0 {
788     left: auto;
789   }
790   .col-md-offset-12 {
791     margin-left: 100%;
792   }
793   .col-md-offset-11 {
794     margin-left: 91.66666667%;
795   }
796   .col-md-offset-10 {
797     margin-left: 83.33333333%;
798   }
799   .col-md-offset-9 {
800     margin-left: 75%;
801   }
802   .col-md-offset-8 {
803     margin-left: 66.66666667%;
804   }
805   .col-md-offset-7 {
806     margin-left: 58.33333333%;
807   }
808   .col-md-offset-6 {
809     margin-left: 50%;
810   }
811   .col-md-offset-5 {
812     margin-left: 41.66666667%;
813   }
814   .col-md-offset-4 {
815     margin-left: 33.33333333%;
816   }
817   .col-md-offset-3 {
818     margin-left: 25%;
819   }
820   .col-md-offset-2 {
821     margin-left: 16.66666667%;
822   }
823   .col-md-offset-1 {
824     margin-left: 8.33333333%;
825   }
826   .col-md-offset-0 {
827     margin-left: 0%;
828   }
829 }
830 @media (min-width: $screen-lg) {
831   .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
832     float: left;
833   }
834   .col-lg-12 {
835     width: 100%;
836   }
837   .col-lg-11 {
838     width: 91.66666667%;
839   }
840   .col-lg-10 {
841     width: 83.33333333%;
842   }
843   .col-lg-9 {
844     width: 75%;
845   }
846   .col-lg-8 {
847     width: 66.66666667%;
848   }
849   .col-lg-7 {
850     width: 58.33333333%;
851   }
852   .col-lg-6 {
853     width: 50%;
854   }
855   .col-lg-5 {
856     width: 41.66666667%;
857   }
858   .col-lg-4 {
859     width: 33.33333333%;
860   }
861   .col-lg-3 {
862     width: 25%;
863   }
864   .col-lg-2 {
865     width: 16.66666667%;
866   }
867   .col-lg-1 {
868     width: 8.33333333%;
869   }
870   .col-lg-pull-12 {
871     right: 100%;
872   }
873   .col-lg-pull-11 {
874     right: 91.66666667%;
875   }
876   .col-lg-pull-10 {
877     right: 83.33333333%;
878   }
879   .col-lg-pull-9 {
880     right: 75%;
881   }
882   .col-lg-pull-8 {
883     right: 66.66666667%;
884   }
885   .col-lg-pull-7 {
886     right: 58.33333333%;
887   }
888   .col-lg-pull-6 {
889     right: 50%;
890   }
891   .col-lg-pull-5 {
892     right: 41.66666667%;
893   }
894   .col-lg-pull-4 {
895     right: 33.33333333%;
896   }
897   .col-lg-pull-3 {
898     right: 25%;
899   }
900   .col-lg-pull-2 {
901     right: 16.66666667%;
902   }
903   .col-lg-pull-1 {
904     right: 8.33333333%;
905   }
906   .col-lg-pull-0 {
907     right: auto;
908   }
909   .col-lg-push-12 {
910     left: 100%;
911   }
912   .col-lg-push-11 {
913     left: 91.66666667%;
914   }
915   .col-lg-push-10 {
916     left: 83.33333333%;
917   }
918   .col-lg-push-9 {
919     left: 75%;
920   }
921   .col-lg-push-8 {
922     left: 66.66666667%;
923   }
924   .col-lg-push-7 {
925     left: 58.33333333%;
926   }
927   .col-lg-push-6 {
928     left: 50%;
929   }
930   .col-lg-push-5 {
931     left: 41.66666667%;
932   }
933   .col-lg-push-4 {
934     left: 33.33333333%;
935   }
936   .col-lg-push-3 {
937     left: 25%;
938   }
939   .col-lg-push-2 {
940     left: 16.66666667%;
941   }
942   .col-lg-push-1 {
943     left: 8.33333333%;
944   }
945   .col-lg-push-0 {
946     left: auto;
947   }
948   .col-lg-offset-12 {
949     margin-left: 100%;
950   }
951   .col-lg-offset-11 {
952     margin-left: 91.66666667%;
953   }
954   .col-lg-offset-10 {
955     margin-left: 83.33333333%;
956   }
957   .col-lg-offset-9 {
958     margin-left: 75%;
959   }
960   .col-lg-offset-8 {
961     margin-left: 66.66666667%;
962   }
963   .col-lg-offset-7 {
964     margin-left: 58.33333333%;
965   }
966   .col-lg-offset-6 {
967     margin-left: 50%;
968   }
969   .col-lg-offset-5 {
970     margin-left: 41.66666667%;
971   }
972   .col-lg-offset-4 {
973     margin-left: 33.33333333%;
974   }
975   .col-lg-offset-3 {
976     margin-left: 25%;
977   }
978   .col-lg-offset-2 {
979     margin-left: 16.66666667%;
980   }
981   .col-lg-offset-1 {
982     margin-left: 8.33333333%;
983   }
984   .col-lg-offset-0 {
985     margin-left: 0%;
986   }
987 }
988 .clearfix:before,
989 .clearfix:after,
990 .row:before,
991 .row:after {
992   content: " ";
993   display: table;
994 }
995 .clearfix:after,
996 .row:after {
997   clear: both;
998 }
999 .center-block {
1000   display: block;
1001   margin-left: auto;
1002   margin-right: auto;
1003 }
1004
1005
1006
1007
1008
1009
1010 .grid {
1011   display: grid;
1012   grid-column-gap: $-m;
1013   grid-row-gap: 0;
1014   &.contained {
1015     max-width: $xxl;
1016     padding-left: $-m;
1017     padding-right: $-m;
1018     margin-left: auto;
1019     margin-right: auto;
1020   }
1021   &.v-center {
1022     align-items: center;
1023   }
1024 }
1025
1026 @each $sizeLetter, $size in $spacing {
1027   .grid.contained.space-#{$sizeLetter} {
1028     padding-left: $size;
1029     padding-right: $size;
1030     grid-column-gap: $size;
1031   }
1032 }
1033
1034 @mixin grid-layout($name, $times) {
1035   .grid.#{$name} {
1036     grid-template-columns: repeat(#{$times}, 1fr);
1037   }
1038 }
1039
1040 @include grid-layout('thirds', 3)
1041 @include grid-layout('halves', 2)
1042
1043 @each $sizeLetter, $size in $screen-sizes {
1044   @include smaller-than($size) {
1045     .grid.break-#{$sizeLetter} {
1046       grid-template-columns: 1fr;
1047     }
1048   }
1049 }
1050
1051
1052 /**
1053  * Visibility
1054  */
1055
1056 @each $sizeLetter, $size in $screen-sizes {
1057   @include smaller-than($size) {
1058     .hide-under-#{$sizeLetter} {
1059       display: none !important;
1060     }
1061   }
1062   @include larger-than($size) {
1063     .hide-over-#{$sizeLetter} {
1064       display: none !important;
1065     }
1066   }
1067 }