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