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