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