Left file: appwork-v1_4_0/angular-starter/src/styles.scss  
Right file: appwork-v1_5_0/angular-starter/src/styles.scss  
    -+ 1 @import "./vendor/styles/_custom-variables/features";
      2  
1 @mixin keyframes($name) { = 3 @mixin keyframes($name) {
2   @-webkit-keyframes #{$name} {   4   @-webkit-keyframes #{$name} {
3     @content;   5     @content;
4   }   6   }
5   @-moz-keyframes #{$name} {   7   @-moz-keyframes #{$name} {
6     @content;   8     @content;
7   }   9   }
8   @keyframes #{$name} {   10   @keyframes #{$name} {
9     @content;   11     @content;
10   }   12   }
11 }   13 }
12     14  
13 // Remove outline on desktops   15 // Remove outline on desktops
14 @media(min-width: 720px) {   16 @media(min-width: 720px) {
15   ngb-carousel,   17   ngb-carousel,
16   .dropdown-item,   18   .dropdown-item,
17   ngb-datepicker,   19   ngb-datepicker,
18   ngb-rating {   20   ngb-rating {
19     outline: 0 !important;   21     outline: 0 !important;
20   }   22   }
21 }   23 }
22     24  
23 // Fix horizontal scrollbar issue when .dropdown-menu-right element is shown   25 // Fix horizontal scrollbar issue when .dropdown-menu-right element is shown
24 .layout-wrapper {   26 .layout-wrapper {
25   overflow: hidden;   27   overflow: hidden;
26 }   28 }
27     29  
28 // *******************************************************************************   30 // *******************************************************************************
29 // * Page transition   31 // * Page transition
30     32  
31 .router-transitions {   33 .router-transitions {
32   opacity: 1;   34   opacity: 1;
33   transition: opacity .2s;   35   transition: opacity .2s;
34     36  
35   body.app-loading & {   37   body.app-loading & {
36     opacity: .75;   38     opacity: .75;
37   }   39   }
38 }   40 }
39     41  
40 // *******************************************************************************   42 // *******************************************************************************
41 // * Animations   43 // * Animations
42     44  
43 @include keyframes(ngFloatingElementAnimation) {   45 @include keyframes(ngFloatingElementAnimation) {
44   0% { opacity: 0; }   46   0% { opacity: 0; }
45   100% { opacity: 1; }   47   100% { opacity: 1; }
46 }   48 }
47     49  
48 .default-style, <>    
49 .material-style {   50 html {
50   .tooltip, = 51   .tooltip,
51   .popover {   52   .popover {
52     animation: ngFloatingElementAnimation .25s;   53     animation: ngFloatingElementAnimation .25s;
53   }   54   }
54   .dropdown-menu {   55   .dropdown-menu {
55     animation: ngFloatingElementAnimation .1s;   56     animation: ngFloatingElementAnimation .1s;
56   }   57   }
57 }   58 }
58     59  
59 // *******************************************************************************   60 // *******************************************************************************
60 // * Modal animations   61 // * Modal animations
61     62  
62 @include keyframes(ngModalBackdropAnimation) {   63 @include keyframes(ngModalBackdropAnimation) {
63   0% { opacity: 0; }   64   0% { opacity: 0; }
64   100% { opacity: .5; }   65   100% { opacity: .5; }
65 } +-    
66 @include keyframes(ngMaterialModalBackdropAnimation) {      
67   0% { opacity: 0; }      
68   100% { opacity: .2; }      
69 } = 66 }
70 @include keyframes(ngDefaultModalAnimation) {   67 @include keyframes(ngDefaultModalAnimation) {
71   0% {   68   0% {
72     opacity: 0;   69     opacity: 0;
73     transform: translateY(150px) scale(.8);   70     transform: translateY(150px) scale(.8);
74   }   71   }
75   100% {   72   100% {
76     opacity: 1;   73     opacity: 1;
77     transform: translateY(0) scale(1);   74     transform: translateY(0) scale(1);
78   }   75   }
79 }   76 }
80 @include keyframes(ngTopModalAnimation) {   77 @include keyframes(ngTopModalAnimation) {
81   0% {   78   0% {
82     opacity: 0;   79     opacity: 0;
83     transform: translateY(-100%);   80     transform: translateY(-100%);
84   }   81   }
85   100% {   82   100% {
86     opacity: 1;   83     opacity: 1;
87     transform: translateY(0);   84     transform: translateY(0);
88   }   85   }
89 }   86 }
90 @include keyframes(ngSlideModalAnimation) {   87 @include keyframes(ngSlideModalAnimation) {
91   0% {   88   0% {
92     opacity: 0;   89     opacity: 0;
93     transform: translateX(100%);   90     transform: translateX(100%);
94   }   91   }
95   100% {   92   100% {
96     opacity: 1;   93     opacity: 1;
97     transform: translateX(0);   94     transform: translateX(0);
98   }   95   }
99 }   96 }
    <> 97 @if $enable-rtl-support {
100 @include keyframes(ngRtlSlideModalAnimation) {   98   @include keyframes(ngRtlSlideModalAnimation) {
101   0% {   99     0% {
102     opacity: 0;   100       opacity: 0;
103     transform: translateX(-100%);   101       transform: translateX(-100%);
104   }   102     }
105   100% {   103     100% {
106     opacity: 1;   104       opacity: 1;
107     transform: translateX(0);   105       transform: translateX(0);
      106     }
108   } = 107   }
109 }   108 }
110 @include keyframes(ngFillInModalAnimation) {   109 @include keyframes(ngFillInModalAnimation) {
111   0% {   110   0% {
112     opacity: 0;   111     opacity: 0;
113     transform: scale(.5, .5);   112     transform: scale(.5, .5);
114   }   113   }
115   100% {   114   100% {
116     opacity: 1;   115     opacity: 1;
117     transform: scale(1, 1);   116     transform: scale(1, 1);
118   }   117   }
119 }   118 }
120     119  
121 ngb-modal-backdrop.modal-backdrop {   120 ngb-modal-backdrop.modal-backdrop {
122   opacity: .5;   121   opacity: .5;
123   animation: ngModalBackdropAnimation .15s ease-out;   122   animation: ngModalBackdropAnimation .15s ease-out;
124 }   123 }
125     124  
126 ngb-modal-window {   125 ngb-modal-window {
127   &.modal .modal-dialog {   126   &.modal .modal-dialog {
128     animation: ngDefaultModalAnimation .15s ease-out;   127     animation: ngDefaultModalAnimation .15s ease-out;
129   }   128   }
130     129  
131   &.modal-top .modal-dialog {   130   &.modal-top .modal-dialog {
132     animation: ngTopModalAnimation .15s ease-out;   131     animation: ngTopModalAnimation .15s ease-out;
133   }   132   }
134     133  
135   &.modal-slide .modal-dialog {   134   &.modal-slide .modal-dialog {
136     animation: ngSlideModalAnimation .15s ease-out;   135     animation: ngSlideModalAnimation .15s ease-out;
137   }   136   }
138     137  
139   &.modal-fill-in .modal-dialog {   138   &.modal-fill-in .modal-dialog {
140     animation: ngFillInModalAnimation .15s ease-out;   139     animation: ngFillInModalAnimation .15s ease-out;
141   }   140   }
142     141  
    <> 142   @include feature-rtl {
143   [dir=rtl] &.modal-slide .modal-dialog {   143    &.modal-slide .modal-dialog {
144     animation: ngRtlSlideModalAnimation .15s ease-out;   144       animation: ngRtlSlideModalAnimation .15s ease-out;
      145     }
145   } = 146   }
146 }   147 }
147     148  
    <> 149 @if $enable-material-style {
      150   @include keyframes(ngMaterialModalBackdropAnimation) {
      151     0% { opacity: 0; }
      152     100% { opacity: .2; }
      153   }
      154  
148 .material-style ngb-modal-backdrop.modal-backdrop {   155   .material-style ngb-modal-backdrop.modal-backdrop {
149   opacity: .2;   156     opacity: .2;
150   animation: ngMaterialModalBackdropAnimation .15s ease-out;   157     animation: ngMaterialModalBackdropAnimation .15s ease-out;
      158   }
151 } = 159 }
152     160  
    <> 161 @include feature-rtl(false) {
153 // Prevent horizontal scrollbar   162   // Prevent horizontal scrollbar
154 [dir=rtl] .dz-hidden-input {   163   .dz-hidden-input {
155   right: 0 !important;   164     right: 0 !important;
156   left: auto !important;   165     left: auto !important;
      166   }
157 } = 167 }
158     168  
159 // *******************************************************************************   169 // *******************************************************************************
160 // * Accordion   170 // * Accordion
161     171  
162 ngb-accordion .card-header .btn.btn-link {   172 ngb-accordion .card-header .btn.btn-link {
163   width: 100%;   173   width: 100%;
164   padding: 0;   174   padding: 0;
165   text-align: inherit;   175   text-align: inherit;
166   white-space: normal;   176   white-space: normal;
167   border: 0;   177   border: 0;
168   font-size: .894rem;   178   font-size: .894rem;
169 }   179 }
170     180  
171 .ngb-accordion-with-icon .card-header .btn.btn-link {   181 .ngb-accordion-with-icon .card-header .btn.btn-link {
172   display: flex;   182   display: flex;
173   justify-content: space-between;   183   justify-content: space-between;
174 }   184 }
175     185  
176 // *******************************************************************************   186 // *******************************************************************************
177 // * Typeahead   187 // * Typeahead
178     188  
179 ngb-typeahead-window .dropdown-item {   189 ngb-typeahead-window .dropdown-item {
180   cursor: pointer;   190   cursor: pointer;
181 }   191 }