This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new c1e88f5  jewel CSS based layout classes. mostly working, but still 
need to see final shape of some things in the works: * New GridLayout and 
GridCellLayout and its components (Grid and GridCell) * Responsive CSS Layout 
for Grid * VerticalLayout and HorizontalLayout refactor to *only CSS* * HGroup 
and VGroup for Jewel updated to CSS layouts * Updated Jewel Example to use this 
changes (still need some refactor on blog examples)
c1e88f5 is described below

commit c1e88f54b55a72ac9bd868633309cd8c96fd8c0e
Author: Carlos Rovira <carlosrov...@apache.org>
AuthorDate: Tue Jun 19 01:23:19 2018 +0200

    jewel CSS based layout classes. mostly working, but still need to see final 
shape of some things in the works:
    * New GridLayout and GridCellLayout and its components (Grid and GridCell)
    * Responsive CSS Layout for Grid
    * VerticalLayout and HorizontalLayout refactor to *only CSS*
    * HGroup and VGroup for Jewel updated to CSS layouts
    * Updated Jewel Example to use this changes (still need some refactor on 
blog examples)
---
 .../src/main/resources/jewel-example-styles.css    |    4 +-
 .../royale/JewelExample/src/main/royale/App.mxml   |    2 +-
 .../src/main/royale/DropDownListPlayGround.mxml    |    2 +-
 .../JewelExample/src/main/royale/MainContent.mxml  |   38 +-
 .../src/main/royale/TextInputPlayGround.mxml       |    4 +-
 .../projects/Jewel/src/main/resources/defaults.css | 2093 +++++++++++++++++++-
 .../Jewel/src/main/resources/jewel-manifest.xml    |    3 +-
 .../main/royale/org/apache/royale/jewel/Card.as    |   63 +-
 .../main/royale/org/apache/royale/jewel/Cell.as    |   51 -
 .../main/royale/org/apache/royale/jewel/Grid.as    |   37 +-
 .../royale/org/apache/royale/jewel/GridCell.as     |  268 +++
 .../main/royale/org/apache/royale/jewel/Group.as   |   24 +
 .../main/royale/org/apache/royale/jewel/HGroup.as  |   59 +
 .../main/royale/org/apache/royale/jewel/VGroup.as  |   59 +
 .../royale/jewel/beads/layouts/BasicLayout.as      |   21 +-
 .../royale/jewel/beads/layouts/GridCellLayout.as   |  426 ++++
 .../royale/jewel/beads/layouts/GridLayout.as       |   84 +-
 .../royale/jewel/beads/layouts/HorizontalLayout.as |  165 +-
 .../jewel/beads/layouts/SimpleHorizontalLayout.as  |   26 +-
 .../jewel/beads/layouts/SimpleVerticalLayout.as    |   23 +-
 .../royale/jewel/beads/layouts/VerticalLayout.as   |  212 +-
 .../projects/Jewel/src/main/sass/_global.sass      |    2 +-
 .../Jewel/src/main/sass/components/_layout.sass    |   90 +-
 .../JewelTheme/src/main/resources/defaults.css     |    6 +-
 .../themes/JewelTheme/src/main/sass/_global.sass   |    4 +-
 .../src/main/sass/components-primary/_card.sass    |    2 +-
 26 files changed, 3416 insertions(+), 352 deletions(-)

diff --git 
a/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css 
b/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
index f9a01eb..2c23b0e 100644
--- a/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
+++ b/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
@@ -21,4 +21,6 @@
 
 @namespace "http://www.w3.org/1999/xhtml";;
 
-       
\ No newline at end of file
+.royale {
+    padding: 20px;
+}
\ No newline at end of file
diff --git a/examples/royale/JewelExample/src/main/royale/App.mxml 
b/examples/royale/JewelExample/src/main/royale/App.mxml
index c318cb1..7b6b8aa 100644
--- a/examples/royale/JewelExample/src/main/royale/App.mxml
+++ b/examples/royale/JewelExample/src/main/royale/App.mxml
@@ -32,7 +32,7 @@
        <j:initialView>
                <j:View>
                        <j:beads>
-                               <j:VerticalLayout gap="10"/>
+                               <j:VerticalLayout gap="3"/>
                        </j:beads>
                        <html:H1 text="Apache Royale Jewel UI Set Theme 
Showcase"/>
                        <local:MainContent/>
diff --git 
a/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml 
b/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
index 08f5b75..8377576 100644
--- a/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
@@ -40,7 +40,7 @@ limitations under the License.
        </fx:Script>
 
        <j:beads>
-               <j:HorizontalLayout gap="10"/>
+               <j:HorizontalLayout gap="3"/>
                <js:ViewDataBinding />
        </j:beads>
        
diff --git a/examples/royale/JewelExample/src/main/royale/MainContent.mxml 
b/examples/royale/JewelExample/src/main/royale/MainContent.mxml
index 2d71575..5e2e9f8 100644
--- a/examples/royale/JewelExample/src/main/royale/MainContent.mxml
+++ b/examples/royale/JewelExample/src/main/royale/MainContent.mxml
@@ -17,46 +17,30 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 
 -->
-<j:Group xmlns:fx="http://ns.adobe.com/mxml/2009";
+<j:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009";
          xmlns:j="library://ns.apache.org/royale/jewel"
-         xmlns:local="*">
+         xmlns:local="*" gap="3">
     
-    <j:beads>
-        <j:HorizontalLayout gap="10"/>
-    </j:beads>
-
-    <j:Group>
-        <j:beads>
-            <j:VerticalLayout gap="10"/>
-        </j:beads>
+    <j:VGroup gap="3">
         <local:LabelPlayGround/>
         <local:ButtonPlayGround/>
-    </j:Group>
+    </j:VGroup>
 
-     <j:Group>
-        <j:beads>
-            <j:VerticalLayout gap="10"/>
-        </j:beads>
+     <j:VGroup gap="3">
         <local:TextInputPlayGround/>
         <local:CheckBoxPlayGround/>
         <local:RadioButtonPlayGround/>
-    </j:Group>
+    </j:VGroup>
 
-    <j:Group>
-        <j:beads>
-            <j:VerticalLayout gap="10"/>
-        </j:beads>
+    <j:VGroup gap="3">
         <local:SliderPlayGround/>
         <local:ListPlayGround/>
-    </j:Group>
+    </j:VGroup>
     
-    <j:Group>
-        <j:beads>
-            <j:VerticalLayout gap="10"/>
-        </j:beads>
+    <j:VGroup gap="3">
         <local:AlertPlayGround/>
         <local:HeadingsAndText/>
         <local:DropDownListPlayGround/>
-    </j:Group>
+    </j:VGroup>
     
-</j:Group>
+</j:HGroup>
diff --git 
a/examples/royale/JewelExample/src/main/royale/TextInputPlayGround.mxml 
b/examples/royale/JewelExample/src/main/royale/TextInputPlayGround.mxml
index 2d64568..3284130 100644
--- a/examples/royale/JewelExample/src/main/royale/TextInputPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/TextInputPlayGround.mxml
@@ -26,7 +26,7 @@ limitations under the License.
 
        <j:Group>
                <j:beads>
-                       <j:HorizontalLayout gap="10"/>
+                       <j:HorizontalLayout gap="3"/>
                </j:beads>
                <j:Button text="Check it!" emphasis="primary"/>
                <j:TextInput text="A TextInput"/>
@@ -34,7 +34,7 @@ limitations under the License.
 
        <j:Group>
                <j:beads>
-                       <j:HorizontalLayout gap="10"/>
+                       <j:HorizontalLayout gap="3"/>
                </j:beads>
                <j:TextInput>
                        <j:beads>
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 7ad6402..0bca95d 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -34,6 +34,7 @@ button, input, textarea {
 
 j|View {
   IBeadView: ClassReference("org.apache.royale.core.beads.GroupView");
+  IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout");
 }
 
 j|Group {
@@ -240,15 +241,13 @@ j|Label {
 }
 
 /* Absolute */
-.layout.absolute {
-  position: relative;
-}
 .layout.absolute > * {
   position: absolute;
 }
 
 .layout {
   display: flex;
+  position: relative;
 }
 
 /* Horizontal */
@@ -256,143 +255,2043 @@ j|Label {
   flex-flow: row nowrap;
   align-items: flex-start;
 }
-
-/* Vertical */
-.layout.vertical {
-  flex-flow: column nowrap;
-  align-items: flex-start;
+.layout.horizontal.gap-1x3px > *:first-child {
+  margin: 0px;
 }
-
-.layout.horizontal.space {
-  justify-content: space-between;
+.layout.horizontal.gap-1x3px > * {
+  margin: 0px 0px 0px 3px;
 }
-
-/* Grid */
-.layout.grid {
-  flex-wrap: wrap;
+.layout.horizontal.gap-2x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid > * {
-  flex: 1;
+.layout.horizontal.gap-2x3px > * {
+  margin: 0px 0px 0px 6px;
 }
-.layout.grid.gap-1dp {
-  margin: -1em 0 1em -1em;
+.layout.horizontal.gap-3x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-1dp > * {
-  padding: 1em 0 0 1em;
+.layout.horizontal.gap-3x3px > * {
+  margin: 0px 0px 0px 9px;
 }
-.layout.grid.gap-2dp {
-  margin: -2em 0 2em -2em;
+.layout.horizontal.gap-4x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-2dp > * {
-  padding: 2em 0 0 2em;
+.layout.horizontal.gap-4x3px > * {
+  margin: 0px 0px 0px 12px;
 }
-.layout.grid.gap-3dp {
-  margin: -3em 0 3em -3em;
+.layout.horizontal.gap-5x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-3dp > * {
-  padding: 3em 0 0 3em;
+.layout.horizontal.gap-5x3px > * {
+  margin: 0px 0px 0px 15px;
 }
-.layout.grid.gap-4dp {
-  margin: -4em 0 4em -4em;
+.layout.horizontal.gap-6x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-4dp > * {
-  padding: 4em 0 0 4em;
+.layout.horizontal.gap-6x3px > * {
+  margin: 0px 0px 0px 18px;
 }
-.layout.grid.gap-5dp {
-  margin: -5em 0 5em -5em;
+.layout.horizontal.gap-7x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-5dp > * {
-  padding: 5em 0 0 5em;
+.layout.horizontal.gap-7x3px > * {
+  margin: 0px 0px 0px 21px;
 }
-.layout.grid.gap-6dp {
-  margin: -6em 0 6em -6em;
+.layout.horizontal.gap-8x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-6dp > * {
-  padding: 6em 0 0 6em;
+.layout.horizontal.gap-8x3px > * {
+  margin: 0px 0px 0px 24px;
 }
-.layout.grid.gap-7dp {
-  margin: -7em 0 7em -7em;
+.layout.horizontal.gap-9x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-7dp > * {
-  padding: 7em 0 0 7em;
+.layout.horizontal.gap-9x3px > * {
+  margin: 0px 0px 0px 27px;
 }
-.layout.grid.gap-8dp {
-  margin: -8em 0 8em -8em;
+.layout.horizontal.gap-10x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-8dp > * {
-  padding: 8em 0 0 8em;
+.layout.horizontal.gap-10x3px > * {
+  margin: 0px 0px 0px 30px;
 }
-.layout.grid.gap-9dp {
-  margin: -9em 0 9em -9em;
+
+/* Vertical */
+.layout.vertical {
+  flex-flow: column nowrap;
+  align-items: flex-start;
+}
+.layout.vertical.gap-1x3px > *:first-child {
+  margin: 0px;
+}
+.layout.vertical.gap-1x3px > * {
+  margin: 3px 0px 0px;
+}
+.layout.vertical.gap-2x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-9dp > * {
-  padding: 9em 0 0 9em;
+.layout.vertical.gap-2x3px > * {
+  margin: 6px 0px 0px;
 }
-.layout.grid.gap-10dp {
-  margin: -10em 0 10em -10em;
+.layout.vertical.gap-3x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-10dp > * {
-  padding: 10em 0 0 10em;
+.layout.vertical.gap-3x3px > * {
+  margin: 9px 0px 0px;
 }
-.layout.grid.gap-11dp {
-  margin: -11em 0 11em -11em;
+.layout.vertical.gap-4x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-11dp > * {
-  padding: 11em 0 0 11em;
+.layout.vertical.gap-4x3px > * {
+  margin: 12px 0px 0px;
 }
-.layout.grid.gap-12dp {
-  margin: -12em 0 12em -12em;
+.layout.vertical.gap-5x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-12dp > * {
-  padding: 12em 0 0 12em;
+.layout.vertical.gap-5x3px > * {
+  margin: 15px 0px 0px;
 }
-.layout.grid.gap-13dp {
-  margin: -13em 0 13em -13em;
+.layout.vertical.gap-6x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-13dp > * {
-  padding: 13em 0 0 13em;
+.layout.vertical.gap-6x3px > * {
+  margin: 18px 0px 0px;
 }
-.layout.grid.gap-14dp {
-  margin: -14em 0 14em -14em;
+.layout.vertical.gap-7x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-14dp > * {
-  padding: 14em 0 0 14em;
+.layout.vertical.gap-7x3px > * {
+  margin: 21px 0px 0px;
 }
-.layout.grid.gap-15dp {
-  margin: -15em 0 15em -15em;
+.layout.vertical.gap-8x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-15dp > * {
-  padding: 15em 0 0 15em;
+.layout.vertical.gap-8x3px > * {
+  margin: 24px 0px 0px;
 }
-.layout.grid.gap-16dp {
-  margin: -16em 0 16em -16em;
+.layout.vertical.gap-9x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-16dp > * {
-  padding: 16em 0 0 16em;
+.layout.vertical.gap-9x3px > * {
+  margin: 27px 0px 0px;
 }
-.layout.grid.gap-17dp {
-  margin: -17em 0 17em -17em;
+.layout.vertical.gap-10x3px > *:first-child {
+  margin: 0px;
 }
-.layout.grid.gap-17dp > * {
-  padding: 17em 0 0 17em;
+.layout.vertical.gap-10x3px > * {
+  margin: 30px 0px 0px;
+}
+
+/* Vertical */
+.layout.tile {
+  flex-flow: row wrap;
+  align-items: flex-start;
+}
+
+.layout.horizontal.space {
+  justify-content: space-between;
 }
-.layout.grid.gap-18dp {
-  margin: -18em 0 18em -18em;
+
+/* Grid */
+.layout.grid {
+  flex-flow: row wrap;
+  align-items: stretch;
+  width: 100%;
 }
-.layout.grid.gap-18dp > * {
-  padding: 18em 0 0 18em;
+.layout.grid > * {
+  max-width: 100%;
+  width: 100%;
 }
-.layout.grid.gap-19dp {
-  margin: -19em 0 19em -19em;
+.layout.grid.gap > .cell {
+  margin: 5px;
 }
-.layout.grid.gap-19dp > * {
-  padding: 19em 0 0 19em;
+@media (min-width: 0px) {
+  .layout.grid.gap .phone-col-1-1 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-2 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-2 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-3 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-3 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-3 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-4 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-4 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-4 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-4 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-5 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-5 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-5 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-5 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-5 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-6 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-6 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-6 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-6 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-6 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-6 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-7 {
+    width: calc(14.2857142857% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-7 {
+    width: calc(28.5714285714% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-7 {
+    width: calc(42.8571428571% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-7 {
+    width: calc(57.1428571429% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-7 {
+    width: calc(71.4285714286% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-7 {
+    width: calc(85.7142857143% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-7 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-8 {
+    width: calc(12.5% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-8 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-8 {
+    width: calc(37.5% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-8 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-8 {
+    width: calc(62.5% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-8 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-8 {
+    width: calc(87.5% - 10px);
+  }
+  .layout.grid.gap .phone-col-8-8 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-9 {
+    width: calc(11.1111111111% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-9 {
+    width: calc(22.2222222222% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-9 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-9 {
+    width: calc(44.4444444444% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-9 {
+    width: calc(55.5555555556% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-9 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-9 {
+    width: calc(77.7777777778% - 10px);
+  }
+  .layout.grid.gap .phone-col-8-9 {
+    width: calc(88.8888888889% - 10px);
+  }
+  .layout.grid.gap .phone-col-9-9 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-10 {
+    width: calc(10% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-10 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-10 {
+    width: calc(30% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-10 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-10 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-10 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-10 {
+    width: calc(70% - 10px);
+  }
+  .layout.grid.gap .phone-col-8-10 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .phone-col-9-10 {
+    width: calc(90% - 10px);
+  }
+  .layout.grid.gap .phone-col-10-10 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-11 {
+    width: calc(9.0909090909% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-11 {
+    width: calc(18.1818181818% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-11 {
+    width: calc(27.2727272727% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-11 {
+    width: calc(36.3636363636% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-11 {
+    width: calc(45.4545454545% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-11 {
+    width: calc(54.5454545455% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-11 {
+    width: calc(63.6363636364% - 10px);
+  }
+  .layout.grid.gap .phone-col-8-11 {
+    width: calc(72.7272727273% - 10px);
+  }
+  .layout.grid.gap .phone-col-9-11 {
+    width: calc(81.8181818182% - 10px);
+  }
+  .layout.grid.gap .phone-col-10-11 {
+    width: calc(90.9090909091% - 10px);
+  }
+  .layout.grid.gap .phone-col-11-11 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .phone-col-1-12 {
+    width: calc(8.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-2-12 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-3-12 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .phone-col-4-12 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-5-12 {
+    width: calc(41.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-6-12 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .phone-col-7-12 {
+    width: calc(58.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-8-12 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-9-12 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .phone-col-10-12 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .phone-col-11-12 {
+    width: calc(91.6666666667% - 10px);
+  }
+  .layout.grid.gap .phone-col-12-12 {
+    width: calc(100% - 10px);
+  }
 }
-.layout.grid.gap-20dp {
-  margin: -20em 0 20em -20em;
+@media (min-width: 768px) {
+  .layout.grid.gap .tablet-col-1-1 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-2 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-2 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-3 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-3 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-3 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-4 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-4 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-4 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-4 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-5 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-5 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-5 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-5 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-5 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-6 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-6 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-6 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-6 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-6 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-6 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-7 {
+    width: calc(14.2857142857% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-7 {
+    width: calc(28.5714285714% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-7 {
+    width: calc(42.8571428571% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-7 {
+    width: calc(57.1428571429% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-7 {
+    width: calc(71.4285714286% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-7 {
+    width: calc(85.7142857143% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-7 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-8 {
+    width: calc(12.5% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-8 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-8 {
+    width: calc(37.5% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-8 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-8 {
+    width: calc(62.5% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-8 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-8 {
+    width: calc(87.5% - 10px);
+  }
+  .layout.grid.gap .tablet-col-8-8 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-9 {
+    width: calc(11.1111111111% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-9 {
+    width: calc(22.2222222222% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-9 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-9 {
+    width: calc(44.4444444444% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-9 {
+    width: calc(55.5555555556% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-9 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-9 {
+    width: calc(77.7777777778% - 10px);
+  }
+  .layout.grid.gap .tablet-col-8-9 {
+    width: calc(88.8888888889% - 10px);
+  }
+  .layout.grid.gap .tablet-col-9-9 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-10 {
+    width: calc(10% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-10 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-10 {
+    width: calc(30% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-10 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-10 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-10 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-10 {
+    width: calc(70% - 10px);
+  }
+  .layout.grid.gap .tablet-col-8-10 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .tablet-col-9-10 {
+    width: calc(90% - 10px);
+  }
+  .layout.grid.gap .tablet-col-10-10 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-11 {
+    width: calc(9.0909090909% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-11 {
+    width: calc(18.1818181818% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-11 {
+    width: calc(27.2727272727% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-11 {
+    width: calc(36.3636363636% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-11 {
+    width: calc(45.4545454545% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-11 {
+    width: calc(54.5454545455% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-11 {
+    width: calc(63.6363636364% - 10px);
+  }
+  .layout.grid.gap .tablet-col-8-11 {
+    width: calc(72.7272727273% - 10px);
+  }
+  .layout.grid.gap .tablet-col-9-11 {
+    width: calc(81.8181818182% - 10px);
+  }
+  .layout.grid.gap .tablet-col-10-11 {
+    width: calc(90.9090909091% - 10px);
+  }
+  .layout.grid.gap .tablet-col-11-11 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .tablet-col-1-12 {
+    width: calc(8.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-2-12 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-3-12 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .tablet-col-4-12 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-5-12 {
+    width: calc(41.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-6-12 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .tablet-col-7-12 {
+    width: calc(58.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-8-12 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-9-12 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .tablet-col-10-12 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .tablet-col-11-12 {
+    width: calc(91.6666666667% - 10px);
+  }
+  .layout.grid.gap .tablet-col-12-12 {
+    width: calc(100% - 10px);
+  }
 }
-.layout.grid.gap-20dp > * {
-  padding: 20em 0 0 20em;
+@media (min-width: 992px) {
+  .layout.grid.gap .desktop-col-1-1 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-2 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-2 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-3 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-3 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-3 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-4 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-4 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-4 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-4 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-5 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-5 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-5 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-5 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-5 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-6 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-6 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-6 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-6 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-6 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-6 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-7 {
+    width: calc(14.2857142857% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-7 {
+    width: calc(28.5714285714% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-7 {
+    width: calc(42.8571428571% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-7 {
+    width: calc(57.1428571429% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-7 {
+    width: calc(71.4285714286% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-7 {
+    width: calc(85.7142857143% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-7 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-8 {
+    width: calc(12.5% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-8 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-8 {
+    width: calc(37.5% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-8 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-8 {
+    width: calc(62.5% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-8 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-8 {
+    width: calc(87.5% - 10px);
+  }
+  .layout.grid.gap .desktop-col-8-8 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-9 {
+    width: calc(11.1111111111% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-9 {
+    width: calc(22.2222222222% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-9 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-9 {
+    width: calc(44.4444444444% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-9 {
+    width: calc(55.5555555556% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-9 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-9 {
+    width: calc(77.7777777778% - 10px);
+  }
+  .layout.grid.gap .desktop-col-8-9 {
+    width: calc(88.8888888889% - 10px);
+  }
+  .layout.grid.gap .desktop-col-9-9 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-10 {
+    width: calc(10% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-10 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-10 {
+    width: calc(30% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-10 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-10 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-10 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-10 {
+    width: calc(70% - 10px);
+  }
+  .layout.grid.gap .desktop-col-8-10 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .desktop-col-9-10 {
+    width: calc(90% - 10px);
+  }
+  .layout.grid.gap .desktop-col-10-10 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-11 {
+    width: calc(9.0909090909% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-11 {
+    width: calc(18.1818181818% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-11 {
+    width: calc(27.2727272727% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-11 {
+    width: calc(36.3636363636% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-11 {
+    width: calc(45.4545454545% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-11 {
+    width: calc(54.5454545455% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-11 {
+    width: calc(63.6363636364% - 10px);
+  }
+  .layout.grid.gap .desktop-col-8-11 {
+    width: calc(72.7272727273% - 10px);
+  }
+  .layout.grid.gap .desktop-col-9-11 {
+    width: calc(81.8181818182% - 10px);
+  }
+  .layout.grid.gap .desktop-col-10-11 {
+    width: calc(90.9090909091% - 10px);
+  }
+  .layout.grid.gap .desktop-col-11-11 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .desktop-col-1-12 {
+    width: calc(8.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-2-12 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-3-12 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .desktop-col-4-12 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-5-12 {
+    width: calc(41.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-6-12 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .desktop-col-7-12 {
+    width: calc(58.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-8-12 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-9-12 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .desktop-col-10-12 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .desktop-col-11-12 {
+    width: calc(91.6666666667% - 10px);
+  }
+  .layout.grid.gap .desktop-col-12-12 {
+    width: calc(100% - 10px);
+  }
+}
+@media (min-width: 1200px) {
+  .layout.grid.gap .lg-col-1-1 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-2 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-2 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-3 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-3 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-3 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-4 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-4 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-4 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-4 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-5 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-5 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-5 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-5 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-5 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-6 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-6 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-6 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-6 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-6 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-6 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-7 {
+    width: calc(14.2857142857% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-7 {
+    width: calc(28.5714285714% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-7 {
+    width: calc(42.8571428571% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-7 {
+    width: calc(57.1428571429% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-7 {
+    width: calc(71.4285714286% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-7 {
+    width: calc(85.7142857143% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-7 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-8 {
+    width: calc(12.5% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-8 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-8 {
+    width: calc(37.5% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-8 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-8 {
+    width: calc(62.5% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-8 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-8 {
+    width: calc(87.5% - 10px);
+  }
+  .layout.grid.gap .lg-col-8-8 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-9 {
+    width: calc(11.1111111111% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-9 {
+    width: calc(22.2222222222% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-9 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-9 {
+    width: calc(44.4444444444% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-9 {
+    width: calc(55.5555555556% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-9 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-9 {
+    width: calc(77.7777777778% - 10px);
+  }
+  .layout.grid.gap .lg-col-8-9 {
+    width: calc(88.8888888889% - 10px);
+  }
+  .layout.grid.gap .lg-col-9-9 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-10 {
+    width: calc(10% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-10 {
+    width: calc(20% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-10 {
+    width: calc(30% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-10 {
+    width: calc(40% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-10 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-10 {
+    width: calc(60% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-10 {
+    width: calc(70% - 10px);
+  }
+  .layout.grid.gap .lg-col-8-10 {
+    width: calc(80% - 10px);
+  }
+  .layout.grid.gap .lg-col-9-10 {
+    width: calc(90% - 10px);
+  }
+  .layout.grid.gap .lg-col-10-10 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-11 {
+    width: calc(9.0909090909% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-11 {
+    width: calc(18.1818181818% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-11 {
+    width: calc(27.2727272727% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-11 {
+    width: calc(36.3636363636% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-11 {
+    width: calc(45.4545454545% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-11 {
+    width: calc(54.5454545455% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-11 {
+    width: calc(63.6363636364% - 10px);
+  }
+  .layout.grid.gap .lg-col-8-11 {
+    width: calc(72.7272727273% - 10px);
+  }
+  .layout.grid.gap .lg-col-9-11 {
+    width: calc(81.8181818182% - 10px);
+  }
+  .layout.grid.gap .lg-col-10-11 {
+    width: calc(90.9090909091% - 10px);
+  }
+  .layout.grid.gap .lg-col-11-11 {
+    width: calc(100% - 10px);
+  }
+  .layout.grid.gap .lg-col-1-12 {
+    width: calc(8.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-2-12 {
+    width: calc(16.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-3-12 {
+    width: calc(25% - 10px);
+  }
+  .layout.grid.gap .lg-col-4-12 {
+    width: calc(33.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-5-12 {
+    width: calc(41.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-6-12 {
+    width: calc(50% - 10px);
+  }
+  .layout.grid.gap .lg-col-7-12 {
+    width: calc(58.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-8-12 {
+    width: calc(66.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-9-12 {
+    width: calc(75% - 10px);
+  }
+  .layout.grid.gap .lg-col-10-12 {
+    width: calc(83.3333333333% - 10px);
+  }
+  .layout.grid.gap .lg-col-11-12 {
+    width: calc(91.6666666667% - 10px);
+  }
+  .layout.grid.gap .lg-col-12-12 {
+    width: calc(100% - 10px);
+  }
+}
+@media (min-width: 0px) {
+  .layout.grid .phone-col-1-1 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-2 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-2-2 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-3 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .phone-col-2-3 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .phone-col-3-3 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-4 {
+    width: 25%;
+  }
+  .layout.grid .phone-col-2-4 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-3-4 {
+    width: 75%;
+  }
+  .layout.grid .phone-col-4-4 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-5 {
+    width: 20%;
+  }
+  .layout.grid .phone-col-2-5 {
+    width: 40%;
+  }
+  .layout.grid .phone-col-3-5 {
+    width: 60%;
+  }
+  .layout.grid .phone-col-4-5 {
+    width: 80%;
+  }
+  .layout.grid .phone-col-5-5 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-6 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .phone-col-2-6 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .phone-col-3-6 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-4-6 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .phone-col-5-6 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .phone-col-6-6 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-7 {
+    width: 14.2857142857%;
+  }
+  .layout.grid .phone-col-2-7 {
+    width: 28.5714285714%;
+  }
+  .layout.grid .phone-col-3-7 {
+    width: 42.8571428571%;
+  }
+  .layout.grid .phone-col-4-7 {
+    width: 57.1428571429%;
+  }
+  .layout.grid .phone-col-5-7 {
+    width: 71.4285714286%;
+  }
+  .layout.grid .phone-col-6-7 {
+    width: 85.7142857143%;
+  }
+  .layout.grid .phone-col-7-7 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-8 {
+    width: 12.5%;
+  }
+  .layout.grid .phone-col-2-8 {
+    width: 25%;
+  }
+  .layout.grid .phone-col-3-8 {
+    width: 37.5%;
+  }
+  .layout.grid .phone-col-4-8 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-5-8 {
+    width: 62.5%;
+  }
+  .layout.grid .phone-col-6-8 {
+    width: 75%;
+  }
+  .layout.grid .phone-col-7-8 {
+    width: 87.5%;
+  }
+  .layout.grid .phone-col-8-8 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-9 {
+    width: 11.1111111111%;
+  }
+  .layout.grid .phone-col-2-9 {
+    width: 22.2222222222%;
+  }
+  .layout.grid .phone-col-3-9 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .phone-col-4-9 {
+    width: 44.4444444444%;
+  }
+  .layout.grid .phone-col-5-9 {
+    width: 55.5555555556%;
+  }
+  .layout.grid .phone-col-6-9 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .phone-col-7-9 {
+    width: 77.7777777778%;
+  }
+  .layout.grid .phone-col-8-9 {
+    width: 88.8888888889%;
+  }
+  .layout.grid .phone-col-9-9 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-10 {
+    width: 10%;
+  }
+  .layout.grid .phone-col-2-10 {
+    width: 20%;
+  }
+  .layout.grid .phone-col-3-10 {
+    width: 30%;
+  }
+  .layout.grid .phone-col-4-10 {
+    width: 40%;
+  }
+  .layout.grid .phone-col-5-10 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-6-10 {
+    width: 60%;
+  }
+  .layout.grid .phone-col-7-10 {
+    width: 70%;
+  }
+  .layout.grid .phone-col-8-10 {
+    width: 80%;
+  }
+  .layout.grid .phone-col-9-10 {
+    width: 90%;
+  }
+  .layout.grid .phone-col-10-10 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-11 {
+    width: 9.0909090909%;
+  }
+  .layout.grid .phone-col-2-11 {
+    width: 18.1818181818%;
+  }
+  .layout.grid .phone-col-3-11 {
+    width: 27.2727272727%;
+  }
+  .layout.grid .phone-col-4-11 {
+    width: 36.3636363636%;
+  }
+  .layout.grid .phone-col-5-11 {
+    width: 45.4545454545%;
+  }
+  .layout.grid .phone-col-6-11 {
+    width: 54.5454545455%;
+  }
+  .layout.grid .phone-col-7-11 {
+    width: 63.6363636364%;
+  }
+  .layout.grid .phone-col-8-11 {
+    width: 72.7272727273%;
+  }
+  .layout.grid .phone-col-9-11 {
+    width: 81.8181818182%;
+  }
+  .layout.grid .phone-col-10-11 {
+    width: 90.9090909091%;
+  }
+  .layout.grid .phone-col-11-11 {
+    width: 100%;
+  }
+  .layout.grid .phone-col-1-12 {
+    width: 8.3333333333%;
+  }
+  .layout.grid .phone-col-2-12 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .phone-col-3-12 {
+    width: 25%;
+  }
+  .layout.grid .phone-col-4-12 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .phone-col-5-12 {
+    width: 41.6666666667%;
+  }
+  .layout.grid .phone-col-6-12 {
+    width: 50%;
+  }
+  .layout.grid .phone-col-7-12 {
+    width: 58.3333333333%;
+  }
+  .layout.grid .phone-col-8-12 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .phone-col-9-12 {
+    width: 75%;
+  }
+  .layout.grid .phone-col-10-12 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .phone-col-11-12 {
+    width: 91.6666666667%;
+  }
+  .layout.grid .phone-col-12-12 {
+    width: 100%;
+  }
+}
+@media (min-width: 768px) {
+  .layout.grid .tablet-col-1-1 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-2 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-2-2 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-3 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .tablet-col-2-3 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .tablet-col-3-3 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-4 {
+    width: 25%;
+  }
+  .layout.grid .tablet-col-2-4 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-3-4 {
+    width: 75%;
+  }
+  .layout.grid .tablet-col-4-4 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-5 {
+    width: 20%;
+  }
+  .layout.grid .tablet-col-2-5 {
+    width: 40%;
+  }
+  .layout.grid .tablet-col-3-5 {
+    width: 60%;
+  }
+  .layout.grid .tablet-col-4-5 {
+    width: 80%;
+  }
+  .layout.grid .tablet-col-5-5 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-6 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .tablet-col-2-6 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .tablet-col-3-6 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-4-6 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .tablet-col-5-6 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .tablet-col-6-6 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-7 {
+    width: 14.2857142857%;
+  }
+  .layout.grid .tablet-col-2-7 {
+    width: 28.5714285714%;
+  }
+  .layout.grid .tablet-col-3-7 {
+    width: 42.8571428571%;
+  }
+  .layout.grid .tablet-col-4-7 {
+    width: 57.1428571429%;
+  }
+  .layout.grid .tablet-col-5-7 {
+    width: 71.4285714286%;
+  }
+  .layout.grid .tablet-col-6-7 {
+    width: 85.7142857143%;
+  }
+  .layout.grid .tablet-col-7-7 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-8 {
+    width: 12.5%;
+  }
+  .layout.grid .tablet-col-2-8 {
+    width: 25%;
+  }
+  .layout.grid .tablet-col-3-8 {
+    width: 37.5%;
+  }
+  .layout.grid .tablet-col-4-8 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-5-8 {
+    width: 62.5%;
+  }
+  .layout.grid .tablet-col-6-8 {
+    width: 75%;
+  }
+  .layout.grid .tablet-col-7-8 {
+    width: 87.5%;
+  }
+  .layout.grid .tablet-col-8-8 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-9 {
+    width: 11.1111111111%;
+  }
+  .layout.grid .tablet-col-2-9 {
+    width: 22.2222222222%;
+  }
+  .layout.grid .tablet-col-3-9 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .tablet-col-4-9 {
+    width: 44.4444444444%;
+  }
+  .layout.grid .tablet-col-5-9 {
+    width: 55.5555555556%;
+  }
+  .layout.grid .tablet-col-6-9 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .tablet-col-7-9 {
+    width: 77.7777777778%;
+  }
+  .layout.grid .tablet-col-8-9 {
+    width: 88.8888888889%;
+  }
+  .layout.grid .tablet-col-9-9 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-10 {
+    width: 10%;
+  }
+  .layout.grid .tablet-col-2-10 {
+    width: 20%;
+  }
+  .layout.grid .tablet-col-3-10 {
+    width: 30%;
+  }
+  .layout.grid .tablet-col-4-10 {
+    width: 40%;
+  }
+  .layout.grid .tablet-col-5-10 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-6-10 {
+    width: 60%;
+  }
+  .layout.grid .tablet-col-7-10 {
+    width: 70%;
+  }
+  .layout.grid .tablet-col-8-10 {
+    width: 80%;
+  }
+  .layout.grid .tablet-col-9-10 {
+    width: 90%;
+  }
+  .layout.grid .tablet-col-10-10 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-11 {
+    width: 9.0909090909%;
+  }
+  .layout.grid .tablet-col-2-11 {
+    width: 18.1818181818%;
+  }
+  .layout.grid .tablet-col-3-11 {
+    width: 27.2727272727%;
+  }
+  .layout.grid .tablet-col-4-11 {
+    width: 36.3636363636%;
+  }
+  .layout.grid .tablet-col-5-11 {
+    width: 45.4545454545%;
+  }
+  .layout.grid .tablet-col-6-11 {
+    width: 54.5454545455%;
+  }
+  .layout.grid .tablet-col-7-11 {
+    width: 63.6363636364%;
+  }
+  .layout.grid .tablet-col-8-11 {
+    width: 72.7272727273%;
+  }
+  .layout.grid .tablet-col-9-11 {
+    width: 81.8181818182%;
+  }
+  .layout.grid .tablet-col-10-11 {
+    width: 90.9090909091%;
+  }
+  .layout.grid .tablet-col-11-11 {
+    width: 100%;
+  }
+  .layout.grid .tablet-col-1-12 {
+    width: 8.3333333333%;
+  }
+  .layout.grid .tablet-col-2-12 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .tablet-col-3-12 {
+    width: 25%;
+  }
+  .layout.grid .tablet-col-4-12 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .tablet-col-5-12 {
+    width: 41.6666666667%;
+  }
+  .layout.grid .tablet-col-6-12 {
+    width: 50%;
+  }
+  .layout.grid .tablet-col-7-12 {
+    width: 58.3333333333%;
+  }
+  .layout.grid .tablet-col-8-12 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .tablet-col-9-12 {
+    width: 75%;
+  }
+  .layout.grid .tablet-col-10-12 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .tablet-col-11-12 {
+    width: 91.6666666667%;
+  }
+  .layout.grid .tablet-col-12-12 {
+    width: 100%;
+  }
+}
+@media (min-width: 992px) {
+  .layout.grid .desktop-col-1-1 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-2 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-2-2 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-3 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .desktop-col-2-3 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .desktop-col-3-3 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-4 {
+    width: 25%;
+  }
+  .layout.grid .desktop-col-2-4 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-3-4 {
+    width: 75%;
+  }
+  .layout.grid .desktop-col-4-4 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-5 {
+    width: 20%;
+  }
+  .layout.grid .desktop-col-2-5 {
+    width: 40%;
+  }
+  .layout.grid .desktop-col-3-5 {
+    width: 60%;
+  }
+  .layout.grid .desktop-col-4-5 {
+    width: 80%;
+  }
+  .layout.grid .desktop-col-5-5 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-6 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .desktop-col-2-6 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .desktop-col-3-6 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-4-6 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .desktop-col-5-6 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .desktop-col-6-6 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-7 {
+    width: 14.2857142857%;
+  }
+  .layout.grid .desktop-col-2-7 {
+    width: 28.5714285714%;
+  }
+  .layout.grid .desktop-col-3-7 {
+    width: 42.8571428571%;
+  }
+  .layout.grid .desktop-col-4-7 {
+    width: 57.1428571429%;
+  }
+  .layout.grid .desktop-col-5-7 {
+    width: 71.4285714286%;
+  }
+  .layout.grid .desktop-col-6-7 {
+    width: 85.7142857143%;
+  }
+  .layout.grid .desktop-col-7-7 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-8 {
+    width: 12.5%;
+  }
+  .layout.grid .desktop-col-2-8 {
+    width: 25%;
+  }
+  .layout.grid .desktop-col-3-8 {
+    width: 37.5%;
+  }
+  .layout.grid .desktop-col-4-8 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-5-8 {
+    width: 62.5%;
+  }
+  .layout.grid .desktop-col-6-8 {
+    width: 75%;
+  }
+  .layout.grid .desktop-col-7-8 {
+    width: 87.5%;
+  }
+  .layout.grid .desktop-col-8-8 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-9 {
+    width: 11.1111111111%;
+  }
+  .layout.grid .desktop-col-2-9 {
+    width: 22.2222222222%;
+  }
+  .layout.grid .desktop-col-3-9 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .desktop-col-4-9 {
+    width: 44.4444444444%;
+  }
+  .layout.grid .desktop-col-5-9 {
+    width: 55.5555555556%;
+  }
+  .layout.grid .desktop-col-6-9 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .desktop-col-7-9 {
+    width: 77.7777777778%;
+  }
+  .layout.grid .desktop-col-8-9 {
+    width: 88.8888888889%;
+  }
+  .layout.grid .desktop-col-9-9 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-10 {
+    width: 10%;
+  }
+  .layout.grid .desktop-col-2-10 {
+    width: 20%;
+  }
+  .layout.grid .desktop-col-3-10 {
+    width: 30%;
+  }
+  .layout.grid .desktop-col-4-10 {
+    width: 40%;
+  }
+  .layout.grid .desktop-col-5-10 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-6-10 {
+    width: 60%;
+  }
+  .layout.grid .desktop-col-7-10 {
+    width: 70%;
+  }
+  .layout.grid .desktop-col-8-10 {
+    width: 80%;
+  }
+  .layout.grid .desktop-col-9-10 {
+    width: 90%;
+  }
+  .layout.grid .desktop-col-10-10 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-11 {
+    width: 9.0909090909%;
+  }
+  .layout.grid .desktop-col-2-11 {
+    width: 18.1818181818%;
+  }
+  .layout.grid .desktop-col-3-11 {
+    width: 27.2727272727%;
+  }
+  .layout.grid .desktop-col-4-11 {
+    width: 36.3636363636%;
+  }
+  .layout.grid .desktop-col-5-11 {
+    width: 45.4545454545%;
+  }
+  .layout.grid .desktop-col-6-11 {
+    width: 54.5454545455%;
+  }
+  .layout.grid .desktop-col-7-11 {
+    width: 63.6363636364%;
+  }
+  .layout.grid .desktop-col-8-11 {
+    width: 72.7272727273%;
+  }
+  .layout.grid .desktop-col-9-11 {
+    width: 81.8181818182%;
+  }
+  .layout.grid .desktop-col-10-11 {
+    width: 90.9090909091%;
+  }
+  .layout.grid .desktop-col-11-11 {
+    width: 100%;
+  }
+  .layout.grid .desktop-col-1-12 {
+    width: 8.3333333333%;
+  }
+  .layout.grid .desktop-col-2-12 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .desktop-col-3-12 {
+    width: 25%;
+  }
+  .layout.grid .desktop-col-4-12 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .desktop-col-5-12 {
+    width: 41.6666666667%;
+  }
+  .layout.grid .desktop-col-6-12 {
+    width: 50%;
+  }
+  .layout.grid .desktop-col-7-12 {
+    width: 58.3333333333%;
+  }
+  .layout.grid .desktop-col-8-12 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .desktop-col-9-12 {
+    width: 75%;
+  }
+  .layout.grid .desktop-col-10-12 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .desktop-col-11-12 {
+    width: 91.6666666667%;
+  }
+  .layout.grid .desktop-col-12-12 {
+    width: 100%;
+  }
+}
+@media (min-width: 1200px) {
+  .layout.grid .lg-col-1-1 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-2 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-2-2 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-3 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .lg-col-2-3 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .lg-col-3-3 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-4 {
+    width: 25%;
+  }
+  .layout.grid .lg-col-2-4 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-3-4 {
+    width: 75%;
+  }
+  .layout.grid .lg-col-4-4 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-5 {
+    width: 20%;
+  }
+  .layout.grid .lg-col-2-5 {
+    width: 40%;
+  }
+  .layout.grid .lg-col-3-5 {
+    width: 60%;
+  }
+  .layout.grid .lg-col-4-5 {
+    width: 80%;
+  }
+  .layout.grid .lg-col-5-5 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-6 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .lg-col-2-6 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .lg-col-3-6 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-4-6 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .lg-col-5-6 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .lg-col-6-6 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-7 {
+    width: 14.2857142857%;
+  }
+  .layout.grid .lg-col-2-7 {
+    width: 28.5714285714%;
+  }
+  .layout.grid .lg-col-3-7 {
+    width: 42.8571428571%;
+  }
+  .layout.grid .lg-col-4-7 {
+    width: 57.1428571429%;
+  }
+  .layout.grid .lg-col-5-7 {
+    width: 71.4285714286%;
+  }
+  .layout.grid .lg-col-6-7 {
+    width: 85.7142857143%;
+  }
+  .layout.grid .lg-col-7-7 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-8 {
+    width: 12.5%;
+  }
+  .layout.grid .lg-col-2-8 {
+    width: 25%;
+  }
+  .layout.grid .lg-col-3-8 {
+    width: 37.5%;
+  }
+  .layout.grid .lg-col-4-8 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-5-8 {
+    width: 62.5%;
+  }
+  .layout.grid .lg-col-6-8 {
+    width: 75%;
+  }
+  .layout.grid .lg-col-7-8 {
+    width: 87.5%;
+  }
+  .layout.grid .lg-col-8-8 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-9 {
+    width: 11.1111111111%;
+  }
+  .layout.grid .lg-col-2-9 {
+    width: 22.2222222222%;
+  }
+  .layout.grid .lg-col-3-9 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .lg-col-4-9 {
+    width: 44.4444444444%;
+  }
+  .layout.grid .lg-col-5-9 {
+    width: 55.5555555556%;
+  }
+  .layout.grid .lg-col-6-9 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .lg-col-7-9 {
+    width: 77.7777777778%;
+  }
+  .layout.grid .lg-col-8-9 {
+    width: 88.8888888889%;
+  }
+  .layout.grid .lg-col-9-9 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-10 {
+    width: 10%;
+  }
+  .layout.grid .lg-col-2-10 {
+    width: 20%;
+  }
+  .layout.grid .lg-col-3-10 {
+    width: 30%;
+  }
+  .layout.grid .lg-col-4-10 {
+    width: 40%;
+  }
+  .layout.grid .lg-col-5-10 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-6-10 {
+    width: 60%;
+  }
+  .layout.grid .lg-col-7-10 {
+    width: 70%;
+  }
+  .layout.grid .lg-col-8-10 {
+    width: 80%;
+  }
+  .layout.grid .lg-col-9-10 {
+    width: 90%;
+  }
+  .layout.grid .lg-col-10-10 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-11 {
+    width: 9.0909090909%;
+  }
+  .layout.grid .lg-col-2-11 {
+    width: 18.1818181818%;
+  }
+  .layout.grid .lg-col-3-11 {
+    width: 27.2727272727%;
+  }
+  .layout.grid .lg-col-4-11 {
+    width: 36.3636363636%;
+  }
+  .layout.grid .lg-col-5-11 {
+    width: 45.4545454545%;
+  }
+  .layout.grid .lg-col-6-11 {
+    width: 54.5454545455%;
+  }
+  .layout.grid .lg-col-7-11 {
+    width: 63.6363636364%;
+  }
+  .layout.grid .lg-col-8-11 {
+    width: 72.7272727273%;
+  }
+  .layout.grid .lg-col-9-11 {
+    width: 81.8181818182%;
+  }
+  .layout.grid .lg-col-10-11 {
+    width: 90.9090909091%;
+  }
+  .layout.grid .lg-col-11-11 {
+    width: 100%;
+  }
+  .layout.grid .lg-col-1-12 {
+    width: 8.3333333333%;
+  }
+  .layout.grid .lg-col-2-12 {
+    width: 16.6666666667%;
+  }
+  .layout.grid .lg-col-3-12 {
+    width: 25%;
+  }
+  .layout.grid .lg-col-4-12 {
+    width: 33.3333333333%;
+  }
+  .layout.grid .lg-col-5-12 {
+    width: 41.6666666667%;
+  }
+  .layout.grid .lg-col-6-12 {
+    width: 50%;
+  }
+  .layout.grid .lg-col-7-12 {
+    width: 58.3333333333%;
+  }
+  .layout.grid .lg-col-8-12 {
+    width: 66.6666666667%;
+  }
+  .layout.grid .lg-col-9-12 {
+    width: 75%;
+  }
+  .layout.grid .lg-col-10-12 {
+    width: 83.3333333333%;
+  }
+  .layout.grid .lg-col-11-12 {
+    width: 91.6666666667%;
+  }
+  .layout.grid .lg-col-12-12 {
+    width: 100%;
+  }
 }
 
 .jewel.list {
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index cc3d635..0eed546 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -28,7 +28,7 @@
     <component id="VGroup" class="org.apache.royale.jewel.VGroup"/>
     <component id="Container" class="org.apache.royale.jewel.Container"/>
     <component id="Grid" class="org.apache.royale.jewel.Grid"/>
-    <component id="Cell" class="org.apache.royale.jewel.Cell"/>
+    <component id="GridCell" class="org.apache.royale.jewel.GridCell"/>
 
     <component id="Button" class="org.apache.royale.jewel.Button"/>
     <component id="Label" class="org.apache.royale.jewel.Label"/>
@@ -60,6 +60,7 @@
     <component id="VerticalLayout" 
class="org.apache.royale.jewel.beads.layouts.VerticalLayout"/>
     <component id="TileLayout" 
class="org.apache.royale.jewel.beads.layouts.TileLayout"/>
     <component id="GridLayout" 
class="org.apache.royale.jewel.beads.layouts.GridLayout"/>
+    <component id="GridCellLayout" 
class="org.apache.royale.jewel.beads.layouts.GridCellLayout"/>
     
     <component id="HorizontalLayoutSpaceBetween" 
class="org.apache.royale.jewel.beads.layouts.HorizontalLayoutSpaceBetween"/>
     
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Card.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Card.as
index be4b16f..d671eb7 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Card.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Card.as
@@ -46,7 +46,26 @@ package org.apache.royale.jewel
             typeNames = "jewel card";
                }
 
-               protected var _shadow:Number = 0;
+        // public function get gap():Boolean
+        // {
+        //     return layout.gap;
+        // }
+
+        // public function set gap(value:Boolean):void
+        // {
+               //      typeNames = StringUtil.removeWord(typeNames, " gap");
+               //      typeNames += " gap";
+
+               //      COMPILE::JS
+        //     {
+               //              if (parent)
+        //             setClassName(computeFinalClassNames()); 
+               //      }
+
+               //      layout.gap = value;
+        // }
+
+               //protected var _shadow:Number = 0;
         /**
                 *  A boolean flag to activate "shadow-Xdp" effect selector.
                 *  Assigns variable shadow depths (0, 2, 3, 4, 6, 8, or 16) to 
card
@@ -56,29 +75,29 @@ package org.apache.royale.jewel
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
                 */
-        public function get shadow():Number
-        {
-            return _shadow;
-        }
+        // public function get shadow():Number
+        // {
+        //     return _shadow;
+        // }
 
-        public function set shadow(value:Number):void
-        {
-                       if (_shadow != value)
-            {
-                COMPILE::JS
-                {
-                    if (value == 2 || value == 3 || value == 4 || value == 6 
|| value == 8 || value == 16)
-                    {
-                        var classVal:String = "shadow-" + _shadow + "dp";
-                        classSelectorList.remove(classVal);
+        // public function set shadow(value:Number):void
+        // {
+               //      if (_shadow != value)
+        //     {
+        //         COMPILE::JS
+        //         {
+        //             if (value == 2 || value == 3 || value == 4 || value == 
6 || value == 8 || value == 16)
+        //             {
+        //                 var classVal:String = "shadow-" + _shadow + "dp";
+        //                 classSelectorList.remove(classVal);
 
-                        classVal = "shadow-" + value + "dp";
-                                               classSelectorList.add(classVal);
+        //                 classVal = "shadow-" + value + "dp";
+               //                              classSelectorList.add(classVal);
 
-                        _shadow = value;
-                    }
-                }
-            }
-        }
+        //                 _shadow = value;
+        //             }
+        //         }
+        //     }
+        // }
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Cell.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Cell.as
deleted file mode 100644
index f7010aa..0000000
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Cell.as
+++ /dev/null
@@ -1,51 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Licensed to the Apache Software Foundation (ASF) under one or more
-//  contributor license agreements.  See the NOTICE file distributed with
-//  this work for additional information regarding copyright ownership.
-//  The ASF licenses this file to You under the Apache License, Version 2.0
-//  (the "License"); you may not use this file except in compliance with
-//  the License.  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.jewel
-{
-       import org.apache.royale.jewel.Group;
-       import org.apache.royale.core.IBeadLayout;
-       import org.apache.royale.jewel.beads.layouts.GridLayout;
-
-       /**
-        *  The Cell class is the inmediate container in a Grid Layout
-        *  to host grid cell content.
-        *  
-        *  @langversion 3.0
-        *  @playerversion Flash 10.2
-        *  @playerversion AIR 2.6
-        *  @productversion Royale 0.9.3
-        */
-       public class Cell extends Group
-       {
-               /**
-                *  constructor.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9.3
-                */
-               public function Cell()
-               {
-                       super();
-
-            typeNames = "jewel cell";
-               }
-       }
-}
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Grid.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Grid.as
index 308fd4b..bb9199d 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Grid.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Grid.as
@@ -18,9 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel
 {
-       import org.apache.royale.jewel.Group;
-       import org.apache.royale.core.IBeadLayout;
        import org.apache.royale.jewel.beads.layouts.GridLayout;
+       import org.apache.royale.utils.StringUtil;
 
        /**
         *  The Grid class is a container that uses Grid Layout.
@@ -46,7 +45,7 @@ package org.apache.royale.jewel
                {
                        super();
 
-            typeNames = "jewel";
+                       typeNames = "jewel " + GridLayout.LAYOUT_TYPE_NAMES;
 
                        layout = new GridLayout();
                        addBead(layout);
@@ -64,14 +63,42 @@ package org.apache.royale.jewel
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
                 */
-        public function get gap():Number
+        public function get gap():Boolean
         {
             return layout.gap;
         }
 
-        public function set gap(value:Number):void
+        public function set gap(value:Boolean):void
         {
+                       typeNames = StringUtil.removeWord(typeNames, " gap");
+                       typeNames += " gap";
+
+                       COMPILE::JS
+            {
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
                        layout.gap = value;
         }
+        // public function get gap():Number
+        // {
+        //     return layout.gap;
+        // }
+
+        // public function set gap(value:Number):void
+        // {
+               //      typeNames = StringUtil.removeWord(typeNames, " gap-" + 
layout.gap + "dp");
+               //      if(value != 0)
+               //              typeNames += " gap-" + value + "dp";
+
+               //      COMPILE::JS
+        //     {
+               //              if (parent)
+        //             setClassName(computeFinalClassNames()); 
+               //      }
+
+               //      layout.gap = value;
+        // }
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/GridCell.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/GridCell.as
new file mode 100644
index 0000000..f0766e5
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/GridCell.as
@@ -0,0 +1,268 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel
+{
+       import org.apache.royale.jewel.beads.layouts.GridCellLayout;
+       import org.apache.royale.utils.StringUtil;
+
+       /**
+        *  The GridCell class is the inmediate container in a Grid Layout
+        *  to host grid cell content.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.3
+        */
+       public class GridCell extends Group
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+               public function GridCell()
+               {
+                       super();
+
+            typeNames = "jewel " + GridCellLayout.LAYOUT_TYPE_NAMES;
+
+                       layout = new GridCellLayout();
+                       addBead(layout);
+               }
+
+               protected var layout:GridCellLayout;
+
+               /**
+                *  The X Number for "desktop-col-X-Y" effect selector.
+                *  Sets the desktop numerator for the X/Y fraction that 
indicates the cell's size in
+                *      desktop screen. Needs to be set in conjunction with 
desktop denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get desktopNumerator():Number
+        {
+            return layout.desktopNumerator;
+        }
+
+               public function set desktopNumerator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.DESKTOP, 
value, layout.desktopDenominator);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.desktopNumerator = value;
+               }
+
+               /**
+                *  The Y Number for "desktop-col-X-Y" effect selector.
+                *  Sets the desktop denominator for the X/Y fraction that 
indicates the cell's size in
+                *  desktop screen. Needs to be set in conjunction with desktop 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get desktopDenominator():Number
+        {
+            return layout.desktopDenominator;
+        }
+
+               public function set desktopDenominator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.DESKTOP, 
layout.desktopNumerator, value);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.desktopDenominator = value;
+               }
+
+               /**
+                *  The X Number for "tablet-col-X-Y" effect selector.
+                *  Sets the tablet numerator for the X/Y fraction that 
indicates the cell's size in
+                *      tablet screen. Needs to be set in conjunction with 
tablet denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get tabletNumerator():Number
+        {
+            return layout.tabletNumerator;
+        }
+
+               public function set tabletNumerator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.TABLET, 
value, layout.tabletDenominator);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.tabletNumerator = value;
+               }
+
+               /**
+                *  The Y Number for "tablet-col-X-Y" effect selector.
+                *  Sets the tablet denominator for the X/Y fraction that 
indicates the cell's size in
+                *  tablet screen. Needs to be set in conjunction with tablet 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get tabletDenominator():Number
+        {
+            return layout.tabletDenominator;
+        }
+
+               public function set tabletDenominator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.TABLET, 
layout.tabletNumerator, value);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.tabletDenominator = value;
+               }
+
+               /**
+                *  The X Number for "phone-col-X-Y" effect selector.
+                *  Sets the phone numerator for the X/Y fraction that 
indicates the cell's size in
+                *      phone screen. Needs to be set in conjunction with phone 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get phoneNumerator():Number
+        {
+            return layout.phoneNumerator;
+        }
+
+               public function set phoneNumerator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.PHONE, 
value, layout.phoneDenominator);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.phoneNumerator = value;
+               }
+
+               /**
+                *  The Y Number for "phone-col-X-Y" effect selector.
+                *  Sets the phone denominator for the X/Y fraction that 
indicates the cell's size in
+                *  phone screen. Needs to be set in conjunction with phone 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get phoneDenominator():Number
+        {
+            return layout.phoneDenominator;
+        }
+
+               public function set phoneDenominator(value:Number):void
+        {
+                       COMPILE::JS
+            {
+                               setFractionForScreen(GridCellLayout.PHONE, 
layout.phoneNumerator, value);
+                       
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.phoneDenominator = value;
+               }
+
+               COMPILE::JS
+               private function setFractionForScreen(screen:String, 
num:Number, den:Number):void
+               {
+                       if(num && den)
+                       {
+                               if (num <= 0 || num > 
GridCellLayout.MAX_COLUMNS)
+                                       throw new Error(screen + " numerator 
must be between 1 and " + GridCellLayout.MAX_COLUMNS);
+                               if (den <= 0 || den > 
GridCellLayout.MAX_COLUMNS)
+                                       throw new Error(screen + " denominator 
must be between 1 and " + GridCellLayout.MAX_COLUMNS);
+                               
+                               typeNames = StringUtil.removeWord(typeNames, " 
" + screen + "-col-" + layout.desktopNumerator + "-" + 
layout.desktopDenominator);
+                               typeNames += " " + screen + "-col-" + num + "-" 
+ den;
+                       }
+        }
+
+               /**
+                *  Assigns variable gap to grid from 1 to 20
+                *  Activate "gap-Xdp" effect selector to set a numeric gap 
+                *  between grid cells
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        // public function get gap():Number
+        // {
+        //     return layout.gap;
+        // }
+
+        // public function set gap(value:Number):void
+        // {
+               //      typeNames = StringUtil.removeWord(typeNames, " gap-" + 
layout.gap + "dp");
+               //      if(value != 0)
+               //              typeNames += " gap-" + value + "dp";
+
+               //      COMPILE::JS
+        //     {
+               //              if (parent)
+        //             setClassName(computeFinalClassNames()); 
+               //      }
+
+               //      layout.gap = value;
+        // }
+       }
+}
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Group.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Group.as
index c488cda..f273ada 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Group.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Group.as
@@ -58,5 +58,29 @@ package org.apache.royale.jewel
         {
             classSelectorList.addNames(value);
         }
+
+        public function addClass(name:String):void
+        {
+            COMPILE::JS
+            {
+            classSelectorList.add(name);
+            }
+        }
+
+        public function removeClass(name:String):void
+        {
+            COMPILE::JS
+            {
+            classSelectorList.remove(name);
+            }
+        }
+
+        public function toggleClass(name:String, value:Boolean):void
+        {
+            COMPILE::JS
+            {
+            classSelectorList.toggle(name, value);
+            }
+        }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/HGroup.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/HGroup.as
index 557bf80..f14cd2e 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/HGroup.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/HGroup.as
@@ -18,6 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel
 {
+    import org.apache.royale.jewel.beads.layouts.HorizontalLayout;
+    import org.apache.royale.utils.StringUtil;
+
     /**
      *  This Group subclass uses HorizontalLayout as its default layout.
      *
@@ -41,6 +44,62 @@ package org.apache.royale.jewel
                public function HGroup()
                {
                        super();
+
+                       typeNames = "jewel " + 
HorizontalLayout.LAYOUT_TYPE_NAMES;
+
+                       layout = new HorizontalLayout();
+                       addBead(layout);
                }
+
+        protected var layout:HorizontalLayout;
+
+        // public function get gap():Boolean
+        // {
+        //     return layout.gap;
+        // }
+
+        // public function set gap(value:Boolean):void
+        // {
+               //      typeNames = StringUtil.removeWord(typeNames, " gap");
+               //      typeNames += " gap";
+
+               //      COMPILE::JS
+        //     {
+               //              if (parent)
+        //             setClassName(computeFinalClassNames()); 
+               //      }
+
+               //      layout.gap = value;
+        // }
+        
+        /**
+                *  Assigns variable gap in steps of GAP_STEP. You have 
available GAPS*GAP_STEP gap styles
+                *  Activate "gap-{X}x{GAP_STEP}px" effect selector to set a 
numeric gap between elements.
+                *  i.e: gap-2x3px will result in a gap of 6px
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get gap():Number
+        {
+            return layout.gap;
+        }
+
+        public function set gap(value:Number):void
+        {
+                       typeNames = StringUtil.removeWord(typeNames, " gap-" + 
layout.gap + "x" + HorizontalLayout.GAP_STEP + "px");
+                       if(value != 0)
+                               typeNames += " gap-" + value + "x" + 
HorizontalLayout.GAP_STEP + "px";
+
+                       COMPILE::JS
+            {
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.gap = value;
+        }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VGroup.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VGroup.as
index 0a5e119..7ee63b7 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VGroup.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VGroup.as
@@ -18,6 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel
 {
+    import org.apache.royale.jewel.beads.layouts.VerticalLayout;
+    import org.apache.royale.utils.StringUtil;
+
     /**
      *  This Group subclass uses VerticalLayout as its default layout.
      *
@@ -41,6 +44,62 @@ package org.apache.royale.jewel
                public function VGroup()
                {
                        super();
+
+                       typeNames = "jewel " + VerticalLayout.LAYOUT_TYPE_NAMES;
+
+                       layout = new VerticalLayout();
+                       addBead(layout);
                }
+
+        protected var layout:VerticalLayout;
+
+        // public function get gap():Boolean
+        // {
+        //     return layout.gap;
+        // }
+
+        // public function set gap(value:Boolean):void
+        // {
+               //      typeNames = StringUtil.removeWord(typeNames, " gap");
+               //      typeNames += " gap";
+
+               //      COMPILE::JS
+        //     {
+               //              if (parent)
+        //             setClassName(computeFinalClassNames()); 
+               //      }
+
+               //      layout.gap = value;
+        // }
+
+        /**
+                *  Assigns variable gap in steps of GAP_STEP. You have 
available GAPS*GAP_STEP gap styles
+                *  Activate "gap-{X}x{GAP_STEP}px" effect selector to set a 
numeric gap between elements.
+                *  i.e: gap-2x3px will result in a gap of 6px
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get gap():Number
+        {
+            return layout.gap;
+        }
+
+        public function set gap(value:Number):void
+        {
+                       typeNames = StringUtil.removeWord(typeNames, " gap-" + 
layout.gap + "x" + VerticalLayout.GAP_STEP + "px");
+                       if(value != 0)
+                               typeNames += " gap-" + value + "x" + 
VerticalLayout.GAP_STEP + "px";
+
+                       COMPILE::JS
+            {
+                               if (parent)
+                       setClassName(computeFinalClassNames()); 
+                       }
+
+                       layout.gap = value;
+        }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/BasicLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/BasicLayout.as
index b029e65..5971ffb 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/BasicLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/BasicLayout.as
@@ -56,6 +56,17 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout 
absolute";
+
+               COMPILE::JS
+               private var hostComponent:UIBase;
+
+               COMPILE::JS
+               protected var hostClassList:DOMTokenList;
+
+               /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *  
                 *  @langversion 3.0
@@ -69,8 +80,14 @@ package org.apache.royale.jewel.beads.layouts
 
                        COMPILE::JS
                        {
-                               var contentView:UIBase = layoutView as UIBase;
-                               contentView.className = contentView.className ? 
contentView.className + " layout absolute" : "layout absolute";
+                               hostComponent = host as UIBase;
+                               hostClassList = 
hostComponent.positioner.classList;
+                               if (hostClassList.contains("layout"))
+                                       hostClassList.remove("layout");
+                               hostClassList.add("layout");
+                               if(hostClassList.contains("absolute"))
+                                       hostClassList.remove("absolute");
+                               hostClassList.add("absolute");
                        }
                }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridCellLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridCellLayout.as
new file mode 100644
index 0000000..578f329
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridCellLayout.as
@@ -0,0 +1,426 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.beads.layouts
+{
+       import org.apache.royale.core.LayoutBase;
+       import org.apache.royale.core.IBeadLayout;
+       import org.apache.royale.core.ILayoutChild;
+       import org.apache.royale.core.ILayoutView;
+       import org.apache.royale.core.IUIBase;
+       import org.apache.royale.core.IStrand;
+
+       COMPILE::JS {
+       import org.apache.royale.core.UIBase;
+    }
+
+    /**
+     *  The GridCellLayout class is the layout used for childrens in a Grid
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.3
+     */
+       public class GridCellLayout extends LayoutBase implements IBeadLayout
+       {
+               public static const MAX_COLUMNS:Number = 12;
+               public static const PHONE:String = "phone";
+               public static const TABLET:String = "tablet";
+               public static const DESKTOP:String = "desktop";
+
+        /**
+         *  Constructor.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.3
+         */
+               public function GridCellLayout()
+               {
+                       super();
+               }
+
+               /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "cell";
+
+               COMPILE::JS
+               private var hostComponent:UIBase;
+
+               COMPILE::JS
+               protected var hostClassList:DOMTokenList;
+
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+
+                       COMPILE::JS
+                       {
+                               hostComponent = host as UIBase;
+                               hostClassList = 
hostComponent.positioner.classList;
+                               
+                               setFractionForScreen(DESKTOP, 
_desktopNumerator, _desktopDenominator);
+                               setFractionForScreen(TABLET, _tabletNumerator, 
_tabletDenominator);
+                               setFractionForScreen(PHONE, _phoneNumerator, 
_phoneDenominator);
+                       }
+               }
+
+               private var _desktopNumerator:Number;
+               /**
+                *  The X Number for "desktop-col-X-Y" effect selector.
+                *  Sets the desktop numerator for the X/Y fraction that 
indicates the cell's size in
+                *      desktop screen. Needs to be set in conjunction with 
desktop denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get desktopNumerator():Number
+        {
+            return _desktopNumerator;
+        }
+
+        public function set desktopNumerator(value:Number):void
+        {
+                       if (_desktopNumerator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(DESKTOP, 
value, _desktopDenominator);
+                                       _desktopNumerator = value;
+                               }
+                       }
+               }
+
+               private var _desktopDenominator:Number;
+               /**
+                *  The Y Number for "desktop-col-X-Y" effect selector.
+                *  Sets the desktop denominator for the X/Y fraction that 
indicates the cell's size in
+                *  desktop screen. Needs to be set in conjunction with desktop 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get desktopDenominator():Number
+        {
+            return _desktopDenominator;
+        }
+
+        public function set desktopDenominator(value:Number):void
+        {
+                       if (_desktopDenominator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(DESKTOP, 
_desktopNumerator, value);
+                                       _desktopDenominator = value;
+                               }
+                       }
+               }
+
+               private var _tabletNumerator:Number;
+               /**
+                *  The X Number for "tablet-col-X-Y" effect selector.
+                *  Sets the tablet numerator for the X/Y fraction that 
indicates the cell's size in
+                *      tablet screen. Needs to be set in conjunction with 
tablet denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get tabletNumerator():Number
+        {
+            return _tabletNumerator;
+        }
+
+        public function set tabletNumerator(value:Number):void
+        {
+                       if (_tabletNumerator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(TABLET, 
value, _tabletDenominator);
+                                       _tabletNumerator = value;
+                               }
+                       }
+               }
+
+               private var _tabletDenominator:Number;
+               /**
+                *  The Y Number for "tablet-col-X-Y" effect selector.
+                *  Sets the tablet denominator for the X/Y fraction that 
indicates the cell's size in
+                *  tablet screen. Needs to be set in conjunction with tablet 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get tabletDenominator():Number
+        {
+            return _tabletDenominator;
+        }
+
+        public function set tabletDenominator(value:Number):void
+        {
+                       if (_tabletDenominator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(TABLET, 
_tabletNumerator, value);
+                                       _tabletDenominator = value;
+                               }
+                       }
+               }
+
+               private var _phoneNumerator:Number;
+               /**
+                *  The X Number for "phone-col-X-Y" effect selector.
+                *  Sets the phone numerator for the X/Y fraction that 
indicates the cell's size in
+                *      phone screen. Needs to be set in conjunction with phone 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get phoneNumerator():Number
+        {
+            return _phoneNumerator;
+        }
+
+        public function set phoneNumerator(value:Number):void
+        {
+                       if (_phoneNumerator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(PHONE, 
value, _phoneDenominator);
+                                       _phoneNumerator = value;
+                               }
+                       }
+               }
+
+               private var _phoneDenominator:Number;
+               /**
+                *  The Y Number for "phone-col-X-Y" effect selector.
+                *  Sets the phone denominator for the X/Y fraction that 
indicates the cell's size in
+                *  phone screen. Needs to be set in conjunction with phone 
denominator
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+        public function get phoneDenominator():Number
+        {
+            return _phoneDenominator;
+        }
+
+        public function set phoneDenominator(value:Number):void
+        {
+                       if (_phoneDenominator != value)
+            {
+                COMPILE::JS
+                {
+                                       if(hostComponent)
+                                               setFractionForScreen(PHONE, 
_phoneNumerator, value);
+                                       _phoneDenominator = value;
+                               }
+                       }
+               }
+
+               COMPILE::JS
+               private function setFractionForScreen(screen:String, 
num:Number, den:Number):void
+               {
+                       if(num && den)
+                       {
+                               if (num <= 0 || num > MAX_COLUMNS)
+                                       throw new Error(screen + " numerator 
must be between 1 and " + MAX_COLUMNS);
+                               if (den <= 0 || den > MAX_COLUMNS)
+                                       throw new Error(screen + " denominator 
must be between 1 and " + MAX_COLUMNS);
+                               
+                               if (hostClassList.contains(screen + "-col-" + 
_desktopNumerator + "-" + _desktopDenominator))
+                                       hostClassList.remove(screen + "-col-" + 
_desktopNumerator + "-" + _desktopDenominator);
+                               hostClassList.add(screen + "-col-" + num + "-" 
+ den);
+                       }
+        }
+
+        /**
+         * @copy org.apache.royale.core.IBeadLayout#layout
+                * @royaleignorecoercion org.apache.royale.core.UIBase
+         */
+               override public function layout():Boolean
+               {
+            COMPILE::SWF
+            {
+                               var contentView:ILayoutView = layoutView;
+
+                               var hostWidthSizedToContent:Boolean = 
host.isWidthSizedToContent();
+                               var hostHeightSizedToContent:Boolean = 
host.isHeightSizedToContent();
+
+                               var w:Number = hostWidthSizedToContent ? 0 : 
contentView.width;
+                               var h:Number = hostHeightSizedToContent ? 0 : 
contentView.height;
+
+                               var n:int = contentView.numElements;
+
+                for (var i:int = 0; i < n; i++)
+                {
+                    var child:IUIBase = contentView.getElementAt(i) as IUIBase;
+                                       if (child == null || !child.visible) 
continue;
+
+                                       var positions:Object = 
childPositions(child);
+                                       var margins:Object = 
childMargins(child, contentView.width, contentView.height);
+                    var ww:Number = w;
+                    var hh:Number = h;
+
+                    var ilc:ILayoutChild = child as ILayoutChild;
+
+                                       // set the top edge of the child
+                    if (!isNaN(positions.left))
+                    {
+                        if (ilc)
+                            ilc.setX(positions.left+margins.left);
+                        else
+                            child.x = positions.left+margins.left;
+                        ww -= positions.left + margins.left;
+                    }
+
+                                       // set the left edge of the child
+                    if (!isNaN(positions.top))
+                    {
+                        if (ilc)
+                            ilc.setY(positions.top+margins.top);
+                        else
+                            child.y = positions.top+margins.top;
+                        hh -= positions.top + margins.top;
+                    }
+
+                                       // set the right edge of the child
+                                       if (!isNaN(positions.right))
+                                       {
+                                               if (!hostWidthSizedToContent)
+                                               {
+                                                       if 
(!isNaN(positions.left))
+                                                       {
+                                                               if (ilc)
+                                                                       
ilc.setWidth(ww - positions.right - margins.right, false);
+                                                               else
+                                                                       
child.width = ww - positions.right - margins.right;
+                                                       }
+                                                       else
+                                                       {
+                                                               if (ilc)
+                                                               {
+                                                                       
ilc.setX( w - positions.right - margins.left - child.width - margins.right);
+                                                               }
+                                                               else
+                                                               {
+                                                                       child.x 
= w - positions.right - margins.left - child.width - margins.right;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       else if (ilc != null && 
!isNaN(ilc.percentWidth) && !hostWidthSizedToContent)
+                                       {
+                                               ilc.setWidth((ww - 
margins.right - margins.left) * ilc.percentWidth/100, false);
+                                       }
+
+                                       // set the bottm edge of the child
+                                       if (!isNaN(positions.bottom))
+                                       {
+                                               if (!hostHeightSizedToContent)
+                                               {
+                                                       if 
(!isNaN(positions.top))
+                                                       {
+                                                               if (ilc)
+                                                                       
ilc.setHeight(hh - positions.bottom - margins.bottom, false);
+                                                               else
+                                                                       
child.height = hh - positions.bottom - margins.bottom;
+                                                       }
+                                                       else
+                                                       {
+                                                               if (ilc)
+                                                                       
ilc.setY( h - positions.bottom - child.height - margins.bottom);
+                                                               else
+                                                                       child.y 
= h - positions.bottom - child.height - margins.bottom;
+                                                       }
+                                               }
+                                       }
+                                       else if (ilc != null && 
!isNaN(ilc.percentHeight) && !hostHeightSizedToContent)
+                                       {
+                                               ilc.setHeight((hh - margins.top 
- margins.bottom) * ilc.percentHeight/100, false);
+                                       }
+                                       
+                                       if (margins.auto)
+                                       {
+                                               if (ilc)
+                                                       ilc.setX( (w - 
child.width) / 2);
+                                               else
+                                                       child.x = (w - 
child.width) / 2;
+                                       }
+                }
+
+                return true;
+
+            }
+
+            COMPILE::JS
+            {
+                               /** 
+                                *  This Layout uses the following CSS rules
+                                *  no code needed in JS for layout
+                                * 
+                                *  .layout {
+                                *              display: flex;
+                                *      }
+                                *
+                                *      .layout.absolute {
+                                *              position: relative;
+                                *      }
+                                *  
+                                *      .layout.absolute > * {
+                        *      position: absolute  
+                                *  }
+                                */
+
+                return true;
+            }
+               }
+       }
+}
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridLayout.as
index 848f15f..6f323f8 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/GridLayout.as
@@ -20,11 +20,7 @@ package org.apache.royale.jewel.beads.layouts
 {
        import org.apache.royale.core.LayoutBase;
        import org.apache.royale.core.IBeadLayout;
-       import org.apache.royale.core.ILayoutChild;
-       import org.apache.royale.core.ILayoutView;
-       import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.IStrand;
-       import org.apache.royale.utils.StringUtil;
        import org.apache.royale.core.IParentIUIBase;
 
        COMPILE::JS {
@@ -56,9 +52,17 @@ package org.apache.royale.jewel.beads.layouts
                        super();
                }
 
+               /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout grid";
+
                COMPILE::JS
                private var hostComponent:UIBase;
 
+               COMPILE::JS
+               protected var hostClassList:DOMTokenList;
+
                /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *  
@@ -75,14 +79,20 @@ package org.apache.royale.jewel.beads.layouts
 
                        COMPILE::JS
                        {
-                               hostComponent = layoutView as UIBase;
-                               hostComponent.className = 
hostComponent.className ? hostComponent.className + " layout grid" : "layout 
grid";
+                               hostComponent = host as UIBase;
+                               hostClassList = 
hostComponent.positioner.classList;
+                               if (hostClassList.contains("layout"))
+                                       hostClassList.remove("layout");
+                               hostClassList.add("layout");
+                               if(hostClassList.contains("grid"))
+                                       hostClassList.remove("grid");
+                               hostClassList.add("grid");
 
                                setGap(_gap);
                        }
                }
 
-               protected var _gap:Number = 0;
+               private var _gap:Boolean;
                /**
                 *  Assigns variable gap to grid from 1 to 20
                 *  Activate "gap-Xdp" effect selector to set a numeric gap 
@@ -93,7 +103,7 @@ package org.apache.royale.jewel.beads.layouts
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
                 */
-               public function get gap():Number
+               public function get gap():Boolean
         {
             return _gap;
         }
@@ -101,7 +111,7 @@ package org.apache.royale.jewel.beads.layouts
                /**
                 *  @private
                 */
-               public function set gap(value:Number):void
+               public function set gap(value:Boolean):void
                {
                        if (_gap != value)
             {
@@ -116,17 +126,55 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                COMPILE::JS
-               private function setGap(value:Number):void
+               private function setGap(value:Boolean):void
                {
-                       if (value >= 0 && value <= 20)
-                       {
-                               hostComponent.className = 
StringUtil.removeWord(hostComponent.className, " gap-" + _gap + "dp");
-                               hostComponent.className += " gap-" + value + 
"dp";
-                               // 
hostComponent.positioner.classList.remove("gap-" + _gap + "dp");
-                               // 
hostComponent.positioner.classList.add("gap-" + value + "dp");
-                       } else
-                               throw new Error("Grid gap needs to be between 0 
and 20");
+                       hostClassList.toggle("gap", value);
                }
+               // protected var _gap:Number = 0;
+               // /**
+               //  *  Assigns variable gap to grid from 1 to 20
+               //  *  Activate "gap-Xdp" effect selector to set a numeric gap 
+               //  *  between grid cells
+               //  *
+               //  *  @langversion 3.0
+               //  *  @playerversion Flash 10.2
+               //  *  @playerversion AIR 2.6
+               //  *  @productversion Royale 0.9.3
+               //  */
+               // public function get gap():Number
+        // {
+        //     return _gap;
+        // }
+
+               // /**
+               //  *  @private
+               //  */
+               // public function set gap(value:Number):void
+               // {
+               //      if (_gap != value)
+        //     {
+               //              COMPILE::JS
+               //              {
+               //                      if(hostComponent)
+               //                              setGap(value);
+                                       
+               //                      _gap = value;
+               //              }
+        //     }
+               // }
+
+               // COMPILE::JS
+               // private function setGap(value:Number):void
+               // {
+               //      if (value >= 0 && value <= 20)
+               //      {
+               //              if (hostClassList.contains("gap-" + _gap + 
"dp"))
+               //                      hostClassList.remove("gap-" + _gap + 
"dp");
+               //              if(value != 0)
+               //                      hostClassList.add("gap-" + value + 
"dp");
+               //      } else
+               //              throw new Error("Grid gap needs to be between 0 
and 20");
+               // }
 
         /**
          * @copy org.apache.royale.core.IBeadLayout#layout
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/HorizontalLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/HorizontalLayout.as
index f6418d2..824b7be 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/HorizontalLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/HorizontalLayout.as
@@ -28,8 +28,11 @@ package org.apache.royale.jewel.beads.layouts
        import org.apache.royale.core.IUIBase;
     import org.apache.royale.core.layout.EdgeData;
        import org.apache.royale.core.ValuesManager;
-       import org.apache.royale.core.layout.ILayoutStyleProperties;
        import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.utils.css.addDynamicSelector;
+       import org.apache.royale.utils.StringUtil;
+       import org.apache.royale.core.layout.ILayoutStyleProperties;
 
        COMPILE::JS {
         import org.apache.royale.core.WrappedHTMLElement;
@@ -46,7 +49,7 @@ package org.apache.royale.jewel.beads.layouts
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.9.3
      */
-       public class HorizontalLayout extends LayoutBase implements 
IBeadLayout, ILayoutStyleProperties
+       public class HorizontalLayout extends SimpleHorizontalLayout implements 
ILayoutStyleProperties
        {
         /**
          *  Constructor.
@@ -62,6 +65,32 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout 
horizontal";
+
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                *  @royaleignorecoercion org.apache.royale.core.IParentIUIBase
+                *  @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
+                */
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+
+                       COMPILE::JS
+                       {
+                               applyStyleToLayout(hostComponent, "gap");
+                               setGap(_gap);
+                       }
+               }
+
+               /**
                 *  @private
                 */
                private var _paddingTop:Number = 0;
@@ -165,34 +194,49 @@ package org.apache.royale.jewel.beads.layouts
                        _paddingLeft = value;
                }
 
-               /**
-                *  @private
-                */
                private var gapInitialized:Boolean;
-               public static const GAP_STYLE:String = "gap"
-               private var _gap:Number = 0;
-
+               // private var _gap:Boolean;
                /**
-                *  The gap between items.
+                *  Assigns variable gap to grid from 1 to 20
+                *  Activate "gap-Xdp" effect selector to set a numeric gap 
+                *  between grid cells
                 *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
                 */
-               public function get gap():Number
-               {
-                       return _gap;
-               }
-
-               /**
-                *  @private
-                */
-               public function set gap(value:Number):void
-               {
-                       _gap = value;
-                       gapInitialized = true;
-               }
+               // public function get gap():Boolean
+        // {
+        //     return _gap;
+        // }
+
+               // /**
+               //  *  @private
+               //  */
+               // public function set gap(value:Boolean):void
+               // {
+               //      if (_gap != value)
+        //     {
+               //              COMPILE::JS
+               //              {
+               //                      if(hostComponent)
+               //                              setGap(value);
+                                       
+               //                      _gap = value;
+               //                      gapInitialized = true;
+               //              }
+        //     }
+               // }
+
+               // COMPILE::JS
+               // private function setGap(value:Boolean):void
+               // {
+               //      if (value)
+               //              hostClassList.add("gap");
+               //      else
+               //              hostClassList.remove("gap");
+               // }
 
                /**
                 *  Get the component layout style and apply to if exists
@@ -202,11 +246,11 @@ package org.apache.royale.jewel.beads.layouts
                 * 
                 *  @see 
org.apache.royale.core.layout.ILayoutStyleProperties#applyStyleToLayout(component:IUIBase,
 cssProperty:String):void
                 * 
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9.3
-                */
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
                public function applyStyleToLayout(component:IUIBase, 
cssProperty:String):void
                {       
                        var cssValue:* = 
ValuesManager.valuesImpl.getValue(component, cssProperty);
@@ -214,11 +258,9 @@ package org.apache.royale.jewel.beads.layouts
                        {
                                switch(cssProperty)
                                {
-                                       case GAP_STYLE:
+                                       case "gap":
                                                if(!gapInitialized)
-                                               {
                                                        gap = Number(cssValue);
-                                               }
                                                break;
                                        default:
                                                break;
@@ -226,6 +268,58 @@ package org.apache.royale.jewel.beads.layouts
                        }
                }
 
+               // number of gap styles available in CSS @see $gaps variable in 
_layout.sass
+               public static const GAPS:Number = 10;
+               // gap step size in each gap style rule in CSS @see $gap-step 
variable in _layout.sass
+               public static const GAP_STEP:Number = 3;
+
+               protected var _gap:Number = 0;
+               /**
+                *  Assigns variable gap in steps of GAP_STEP. You have 
available GAPS*GAP_STEP gap styles
+                *  Activate "gap-{X}x{GAP_STEP}px" effect selector to set a 
numeric gap between elements.
+                *  i.e: gap-2x3px will result in a gap of 6px
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+               public function get gap():Number
+        {
+            return _gap;
+        }
+
+               /**
+                *  @private
+                */
+               public function set gap(value:Number):void
+               {
+                       if (_gap != value)
+            {
+                               COMPILE::JS
+                               {
+                                       if(hostComponent)
+                                               setGap(value);
+                                       
+                                       _gap = value;
+                                       gapInitialized = true;
+                               }
+            }
+               }
+
+               COMPILE::JS
+               private function setGap(value:Number):void
+               {
+                       if (value >= 0 && value <= GAPS*GAP_STEP)
+                       {
+                               if (hostClassList.contains("gap-" + _gap + "x" 
+ GAP_STEP + "px"))
+                                       hostClassList.remove("gap-" + _gap + 
"x" + GAP_STEP + "px");
+                               if(value != 0)
+                                       hostClassList.add("gap-" + value + "x" 
+ GAP_STEP + "px");
+                       } else
+                               throw new Error("Gap needs to be between 0 and 
" + GAPS*GAP_STEP);
+               }
+               
         /**
          * @copy org.apache.royale.core.IBeadLayout#layout
          * @royaleignorecoercion org.apache.royale.core.ILayoutHost
@@ -312,14 +406,9 @@ package org.apache.royale.jewel.beads.layouts
             }
             COMPILE::JS
             {
-                var contentView:IParentIUIBase = layoutView as IParentIUIBase;
-                               var c:UIBase = (contentView as UIBase);
-                               c.element.classList.add("layout");
-                               c.element.classList.add("horizontal");
-
-                               applyStyleToLayout(c, "gap");
+                               //applyStyleToLayout(c, "gap");
 
-                               var children:Array = 
contentView.internalChildren();
+                               /*var children:Array = 
contentView.internalChildren();
                                var i:int;
                                var n:int = children.length;
                                for (i = 0; i < n; i++)
@@ -344,7 +433,7 @@ package org.apache.royale.jewel.beads.layouts
                                        {
                                                child.style.marginLeft = _gap + 
'px';
                                        }                                       
-                               }
+                               }*/
 
                 return true;
             }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleHorizontalLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleHorizontalLayout.as
index 77fac92..e0130ce 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleHorizontalLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleHorizontalLayout.as
@@ -28,7 +28,8 @@ package org.apache.royale.jewel.beads.layouts
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.core.IStrand;
 
-       COMPILE::JS {
+       COMPILE::JS 
+       {
                import org.apache.royale.core.UIBase;
        }
 
@@ -59,12 +60,25 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout 
horizontal";
+
+               COMPILE::JS
+               protected var hostComponent:UIBase;
+
+               COMPILE::JS
+               protected var hostClassList:DOMTokenList;
+
+               /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *  
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
+                *  @royaleignorecoercion org.apache.royale.core.IParentIUIBase
+                *  @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
                 */
                override public function set strand(value:IStrand):void
                {
@@ -72,8 +86,14 @@ package org.apache.royale.jewel.beads.layouts
 
                        COMPILE::JS
                        {
-                               var contentView:UIBase = layoutView as UIBase;
-                               contentView.className = contentView.className ? 
contentView.className + " layout horizontal" : "layout horizontal";
+                               hostComponent = host as UIBase;
+                               hostClassList = 
hostComponent.positioner.classList;
+                               if (hostClassList.contains("layout"))
+                                       hostClassList.remove("layout");
+                               hostClassList.add("layout");
+                               if(hostClassList.contains("horizontal"))
+                                       hostClassList.remove("horizontal");
+                               hostClassList.add("horizontal");
                        }
                }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleVerticalLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleVerticalLayout.as
index 171b46d..9786f20 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleVerticalLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/SimpleVerticalLayout.as
@@ -60,12 +60,25 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout 
vertical";
+
+               COMPILE::JS
+               protected var hostComponent:UIBase;
+
+               COMPILE::JS
+               protected var hostClassList:DOMTokenList;
+
+               /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *  
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
+                *  @royaleignorecoercion org.apache.royale.core.IParentIUIBase
+                *  @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
                 */
                override public function set strand(value:IStrand):void
                {
@@ -73,8 +86,14 @@ package org.apache.royale.jewel.beads.layouts
 
                        COMPILE::JS
                        {
-                               var contentView:UIBase = layoutView as UIBase;
-                               contentView.className = contentView.className ? 
contentView.className + " layout vertical" : "layout vertical";
+                               hostComponent = host as UIBase;
+                               hostClassList = 
hostComponent.positioner.classList;
+                               if (hostClassList.contains("layout"))
+                                       hostClassList.remove("layout");
+                               hostClassList.add("layout");
+                               if(hostClassList.contains("vertical"))
+                                       hostClassList.remove("vertical");
+                               hostClassList.add("vertical");
                        }
                }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VerticalLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VerticalLayout.as
index 24d3e82..5d15d74 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VerticalLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VerticalLayout.as
@@ -28,8 +28,11 @@ package org.apache.royale.jewel.beads.layouts
        import org.apache.royale.core.IUIBase;
     import org.apache.royale.core.layout.EdgeData;
        import org.apache.royale.core.ValuesManager;
-       import org.apache.royale.core.layout.ILayoutStyleProperties;
        import org.apache.royale.events.Event;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.utils.StringUtil;
+       import org.apache.royale.core.layout.ILayoutStyleProperties;
+
 
        COMPILE::JS
        {
@@ -47,7 +50,7 @@ package org.apache.royale.jewel.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.9.3
         */
-       public class VerticalLayout extends LayoutBase implements IBeadLayout, 
ILayoutStyleProperties
+       public class VerticalLayout extends SimpleVerticalLayout implements 
ILayoutStyleProperties
        {
                /**
                 *  Constructor.
@@ -63,6 +66,32 @@ package org.apache.royale.jewel.beads.layouts
                }
 
                /**
+                * @royalesuppresspublicvarwarning
+                */
+               public static const LAYOUT_TYPE_NAMES:String = "layout 
vertical";
+
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                *  @royaleignorecoercion org.apache.royale.core.IParentIUIBase
+                *  @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
+                */
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+
+                       COMPILE::JS
+                       {
+                               applyStyleToLayout(hostComponent, "gap");
+                               setGap(_gap);
+                       }
+               }
+
+               /**
                 *  @private
                 */
                private var _paddingTop:Number = 0;
@@ -166,35 +195,49 @@ package org.apache.royale.jewel.beads.layouts
                        _paddingLeft = value;
                }
 
-               /**
-                *  @private
-                */
                private var gapInitialized:Boolean;
-               public static const GAP_STYLE:String = "gap"
-               private var _gap:Number = 0;
-
-               // [Bindable(event="gapChanged")]
+               // private var _gap:Boolean;
                /**
-                *  The gap between items.
+                *  Assigns variable gap to grid from 1 to 20
+                *  Activate "gap-Xdp" effect selector to set a numeric gap 
+                *  between grid cells
                 *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
                 */
-               public function get gap():Number
-               {
-                       return _gap;
-               }
+               // public function get gap():Boolean
+        // {
+        //     return _gap;
+        // }
 
                /**
                 *  @private
                 */
-               public function set gap(value:Number):void
-               {
-                       _gap = value;
-                       gapInitialized = true;
-               }
+               // public function set gap(value:Boolean):void
+               // {
+               //      if (_gap != value)
+        //     {
+               //              COMPILE::JS
+               //              {
+               //                      if(hostComponent)
+               //                              setGap(value);
+                                       
+               //                      _gap = value;
+               //                      gapInitialized = true;
+               //              }
+        //     }
+               // }
+
+               // COMPILE::JS
+               // private function setGap(value:Boolean):void
+               // {
+               //      if (value)
+               //              hostClassList.add("gap");
+               //      else
+               //              hostClassList.remove("gap");
+               // }
 
                /**
                 *  Get the component layout style and apply to if exists
@@ -204,11 +247,11 @@ package org.apache.royale.jewel.beads.layouts
                 * 
                 *  @see 
org.apache.royale.core.layout.ILayoutStyleProperties#applyStyleToLayout(component:IUIBase,
 cssProperty:String):void
                 * 
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9.3
-                */
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
                public function applyStyleToLayout(component:IUIBase, 
cssProperty:String):void
                {       
                        var cssValue:* = 
ValuesManager.valuesImpl.getValue(component, cssProperty);
@@ -216,11 +259,9 @@ package org.apache.royale.jewel.beads.layouts
                        {
                                switch(cssProperty)
                                {
-                                       case GAP_STYLE:
+                                       case "gap":
                                                if(!gapInitialized)
-                                               {
                                                        gap = Number(cssValue);
-                                               }
                                                break;
                                        default:
                                                break;
@@ -228,6 +269,59 @@ package org.apache.royale.jewel.beads.layouts
                        }
                }
 
+
+               // number of gap styles available in CSS @see $gaps variable in 
_layout.sass
+               public static const GAPS:Number = 10;
+               // gap step size in each gap style rule in CSS @see $gap-step 
variable in _layout.sass
+               public static const GAP_STEP:Number = 3;
+
+               protected var _gap:Number = 0;
+               /**
+                *  Assigns variable gap in steps of GAP_STEP. You have 
available GAPS*GAP_STEP gap styles
+                *  Activate "gap-{X}x{GAP_STEP}px" effect selector to set a 
numeric gap between elements.
+                *  i.e: gap-2x3px will result in a gap of 6px
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.3
+                */
+               public function get gap():Number
+        {
+            return _gap;
+        }
+
+               /**
+                *  @private
+                */
+               public function set gap(value:Number):void
+               {
+                       if (_gap != value)
+            {
+                               COMPILE::JS
+                               {
+                                       if(hostComponent)
+                                               setGap(value);
+                                       
+                                       _gap = value;
+                                       gapInitialized = true;
+                               }
+            }
+               }
+
+               COMPILE::JS
+               private function setGap(value:Number):void
+               {
+                       if (value >= 0 && value <= GAPS*GAP_STEP)
+                       {
+                               if (hostClassList.contains("gap-" + _gap + "x" 
+ GAP_STEP + "px"))
+                                       hostClassList.remove("gap-" + _gap + 
"x" + GAP_STEP + "px");
+                               if(value != 0)
+                                       hostClassList.add("gap-" + value + "x" 
+ GAP_STEP + "px");
+                       } else
+                               throw new Error("Gap needs to be between 0 and 
" + GAPS*GAP_STEP);
+               }
+
                /**
                 *  Layout children vertically
                 *
@@ -317,41 +411,41 @@ package org.apache.royale.jewel.beads.layouts
                        }
                        COMPILE::JS
                        {
-                               var contentView:IParentIUIBase = layoutView as 
IParentIUIBase;
-                               var c:UIBase = (contentView as UIBase);
-                               c.element.classList.add("layout");
-                               c.element.classList.add("vertical");
+                               // var contentView:IParentIUIBase = layoutView 
as IParentIUIBase;
+                               // var c:UIBase = (contentView as UIBase);
+                               // c.element.classList.add("layout");
+                               // c.element.classList.add("vertical");
 
-                               applyStyleToLayout(c, "gap");
+                               //applyStyleToLayout(c, "gap");
                                
-                               var children:Array = 
contentView.internalChildren();
-                               var i:int;
-                               var n:int = children.length;
-                               for (i = 0; i < n; i++)
-                               {
-                                       var child:WrappedHTMLElement = 
children[i];
-
-                                       if(i == 0)
-                                       {
-                                               child.style.marginTop = 
_paddingTop + 'px';
-                                       }
-                                       else
-                                       {
-                                               child.style.marginTop = _gap + 
'px';
-                                       }
-                                       child.style.marginRight = _paddingRight 
+ 'px';
-                                       if(i === (n - 1))
-                                       {
-                                               child.style.marginBottom = 
_paddingBottom + 'px';
-                                       }
-                                       else
-                                       {
-                                               child.style.marginBottom = 
'0px';
-                                       }
-                                       child.style.marginLeft = _paddingLeft + 
'px';
+                               // var children:Array = 
contentView.internalChildren();
+                               // var i:int;
+                               // var n:int = children.length;
+                               // for (i = 0; i < n; i++)
+                               // {
+                               //      var child:WrappedHTMLElement = 
children[i];
+
+                               //      if(i == 0)
+                               //      {
+                               //              child.style.marginTop = 
_paddingTop + 'px';
+                               //      }
+                               //      else
+                               //      {
+                               //              child.style.marginTop = _gap + 
'px';
+                               //      }
+                               //      child.style.marginRight = _paddingRight 
+ 'px';
+                               //      if(i === (n - 1))
+                               //      {
+                               //              child.style.marginBottom = 
_paddingBottom + 'px';
+                               //      }
+                               //      else
+                               //      {
+                               //              child.style.marginBottom = 
'0px';
+                               //      }
+                               //      child.style.marginLeft = _paddingLeft + 
'px';
                                        
-                                       
child.royale_wrapper.dispatchEvent('sizeChanged');
-                               }
+                               //      
child.royale_wrapper.dispatchEvent('sizeChanged');
+                               // }
 
                                return true;
                        }
diff --git a/frameworks/projects/Jewel/src/main/sass/_global.sass 
b/frameworks/projects/Jewel/src/main/sass/_global.sass
index aa1458f..d98214e 100644
--- a/frameworks/projects/Jewel/src/main/sass/_global.sass
+++ b/frameworks/projects/Jewel/src/main/sass/_global.sass
@@ -37,7 +37,7 @@ button, input, textarea
 
 j|View
        IBeadView: ClassReference("org.apache.royale.core.beads.GroupView")
-       //IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout")
+       IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.BasicLayout")
 
 j|Group
        IBeadView: ClassReference("org.apache.royale.core.beads.GroupView")
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_layout.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_layout.sass
index beede65..c97870d 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_layout.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_layout.sass
@@ -17,44 +17,104 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 
+// Jewel Layouts
+
+// Layouts variables
+$gaps: 10
+$gap-step: 3
+$gap: 0px
+
 /* Absolute */
 .layout.absolute
-       position: relative
        > *
                position: absolute
-               //width: 100%
 
 .layout
        display: flex
+       position: relative
 
 /* Horizontal */
 .layout.horizontal
        flex-flow: row nowrap
        align-items: flex-start
        
-//.layout.horizontal.gap
-//     justify-content: space-between
+       @for $i from 1 through $gaps
+               &.gap-#{$i}x#{$gap-step}px
+                       > *:first-child
+                               margin: 0px
+                       > *
+                               margin: 0px 0px 0px ($gap + $i * $gap-step)
 
 /* Vertical */ 
 .layout.vertical
        flex-flow: column nowrap
        align-items: flex-start
        
-//.layout.vertical.gap
-//     justify-content: space-between
+       @for $i from 1 through $gaps
+               &.gap-#{$i}x#{$gap-step}px
+                       > *:first-child
+                               margin: 0px
+                       > *
+                               margin: ($gap + $i * $gap-step) 0px 0px
+
+/* Vertical */ 
+.layout.tile
+       flex-flow: row wrap
+       align-items: flex-start
+       
+       // this not compile******
+       // &.gap
+       //      > *:first-child
+       //              margin: 0px
+       //      > *:nth-child(-n+3)
+       //              margin: 0px 0px 0px $gap-size
+       //      > *:nth-child(3n)
+       //              margin: $gap-size 0px 0px
+       //      > *
+       //              margin: $gap-size 0px 0px $gap-size
 
 .layout.horizontal.space
        justify-content: space-between
 
 /* Grid */
-$gut: 0em
+$phone: 0px
+$tablet: 768px
+$desktop: 992px
+$widescreen: 1200px
+$grid-columns: 12 !default
+$gap-size: 10px !default
+
+
+$devices: (phone: $phone, tablet: $tablet) !default
+$computers: (desktop: $desktop, lg: $widescreen) !default
+$sizes: map-merge($devices, $computers)
+$size-names: map-keys($sizes)
+
 .layout.grid
-       flex-wrap: wrap
+       flex-flow: row wrap
+       align-items: stretch
+       width: 100%
+       
        > *
-               flex: 1
-               // max-width: 100%
-       @for $i from 1 through 20
-               &.gap-#{$i}dp
-                       margin: $gut - $i 0 $gut + $i $gut - $i
-                       > *
-                               padding: $gut + $i 0 0 $gut + $i
+               max-width: 100%
+               width: 100%
+       
+       &.gap
+               
+               > .cell
+                       margin: $gap-size / 2
+       
+               @each $size in $size-names
+                       @media (min-width: map-get($sizes, $size))
+                               @for $i from 1 through $grid-columns
+                                       @for $j from 1 through $i
+                                               .#{$size}-col-#{$j}-#{$i}
+                                                       width: 
calc(#{percentage($j / $i)} - #{$gap-size})
+                                                       
+       @each $size in $size-names
+               @media (min-width: map-get($sizes, $size))
+                       @for $i from 1 through $grid-columns
+                               @for $j from 1 through $i
+                                       .#{$size}-col-#{$j}-#{$i}
+                                               width: percentage($j / $i)
+               
diff --git a/frameworks/themes/JewelTheme/src/main/resources/defaults.css 
b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
index 22f5a20..29bab45 100644
--- a/frameworks/themes/JewelTheme/src/main/resources/defaults.css
+++ b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
@@ -20,8 +20,8 @@ j|Application {
   background: white;
   font-family: "Lato", sans-serif;
   color: #808080;
-  padding: 10px;
-  margin: 10px;
+  padding: 0px;
+  margin: 0px;
 }
 
 h1 {
@@ -193,7 +193,7 @@ div {
 }
 
 j|Card {
-  gap: 10;
+  gap: 3;
 }
 
 .jewel.checkbox input + span::before {
diff --git a/frameworks/themes/JewelTheme/src/main/sass/_global.sass 
b/frameworks/themes/JewelTheme/src/main/sass/_global.sass
index d57d574..02b0eee 100644
--- a/frameworks/themes/JewelTheme/src/main/sass/_global.sass
+++ b/frameworks/themes/JewelTheme/src/main/sass/_global.sass
@@ -25,8 +25,8 @@ j|Application
        font:
                family: $font-stack
        color: $default-font-color
-       padding: 10px
-       margin: 10px
+       padding: 0px
+       margin: 0px
 
 h1
        font-size: 2em
diff --git 
a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_card.sass 
b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_card.sass
index 0fe5f97..fd1cd6c 100644
--- a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_card.sass
+++ b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_card.sass
@@ -38,4 +38,4 @@
     padding: 20px
 
 j|Card
-    gap: 10
+    gap: 3

Reply via email to