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