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