[gnome-shell-sass] theme: base of the refactor - split _common.scss into widgets - improve _drawing functions - minify



commit a25e4404a50fa76cc76e4b9cc19f13868be52e5b
Author: Sam Hewitt <sam snwh org>
Date:   Wed Dec 18 16:25:03 2019 -0500

    theme: base of the refactor - split _common.scss into widgets - improve _drawing functions - minify SVG 
assets
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/904

 _colors.scss                     |   26 +-
 _common.scss                     | 2396 ++++----------------------------------
 _drawing.scss                    |  250 ++--
 _high-contrast-colors.scss       |    7 +-
 widgets/_app-grid.scss           |  209 ++++
 widgets/_app-switcher.scss       |   55 +
 widgets/_buttons.scss            |    5 +
 widgets/_calendar.scss           |  268 +++++
 widgets/_check-box.scss          |   18 +
 widgets/_corner-ripple.scss      |   24 +
 widgets/_dash.scss               |   84 ++
 widgets/_dialogs.scss            |  280 +++++
 widgets/_end-session-dialog.scss |   80 ++
 widgets/_entries.scss            |   23 +
 widgets/_hotplug.scss            |   46 +
 widgets/_ibus-popup.scss         |   30 +
 widgets/_keyboard.scss           |  125 ++
 widgets/_login-dialog.scss       |  154 +++
 widgets/_looking-glass.scss      |   97 ++
 widgets/_message-list.scss       |  145 +++
 widgets/_misc.scss               |   55 +
 widgets/_network-dialog.scss     |   57 +
 widgets/_notifications.scss      |  100 ++
 widgets/_osd.scss                |   37 +
 widgets/_overview.scss           |   10 +
 widgets/_panel.scss              |  106 ++
 widgets/_popovers.scss           |  123 ++
 widgets/_screen-shield.scss      |   83 ++
 widgets/_scrollbars.scss         |   29 +
 widgets/_search-entry.scss       |   33 +
 widgets/_search-results.scss     |  160 +++
 widgets/_slider.scss             |   27 +
 widgets/_switches.scss           |   16 +
 widgets/_tiled-previews.scss     |   19 +
 widgets/_window-picker.scss      |   66 ++
 widgets/_workspace-switcher.scss |   70 ++
 36 files changed, 2976 insertions(+), 2337 deletions(-)
---
diff --git a/_colors.scss b/_colors.scss
index d14a440..1e0da86 100644
--- a/_colors.scss
+++ b/_colors.scss
@@ -1,16 +1,15 @@
 // When color definition differs for dark and light variant,
 // it gets @if ed depending on $variant
 
-
-$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
+$base_color: if($variant == 'light', #fff, lighten(desaturate(#241f31, 20%), 2%));
 $bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
 $fg_color: if($variant == 'light', #2e3436, #eeeeec);
 
-$selected_fg_color: #ffffff;
+$selected_fg_color: #fff;
 $selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
 $selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 
30%));
-$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
-$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
+$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
+$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
 $link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
 $link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 
10%));
 $top_hilight: $borders_edge;
@@ -20,21 +19,20 @@ $error_color: #ff8080;
 $success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
 $destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
 
-$osd_fg_color: #eeeeec;
-$osd_text_color: white;
-$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
+$osd_fg_color: $fg_color;
+$osd_text_color: if($variant == 'light', #000, #fff);
+$osd_bg_color: if($variant == 'light', rgba(255,255,255,0.9), transparentize(darken(desaturate(#3d3846, 
100%), 12%),0.04));
 $osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
 $osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
-$osd_borders_color: transparentize(black, 0.3);
-$osd_outer_borders_color: transparentize(white, 0.84);
+$osd_borders_color: if($variant == 'light', rgba(255,255,255,0.1), rgba(0,0,0,0.7));
+$osd_outer_borders_color: if($variant == 'light', rgba(0,0,0,0.1), lighten($osd_bg_color, 7%));
 
-$tooltip_borders_color: $osd_outer_borders_color;
-$shadow_color: transparentize(black, 0.9);
+$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
 
 //insensitive state derived colors
 $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
 $insensitive_bg_color: mix($bg_color, $base_color, 60%);
-$insensitive_borders_color: $borders_color;
+$insensitive_borders_color: mix($borders_color, $base_color, 60%);
 
 //colors for the backdrop state, derived from the main colors.
 $backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
@@ -42,4 +40,4 @@ $backdrop_bg_color: $bg_color;
 $backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
 $backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), 
lighten($backdrop_bg_color,15%));
 $backdrop_borders_color: mix($borders_color, $bg_color, 90%);
-$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
\ No newline at end of file
diff --git a/_common.scss b/_common.scss
index d414830..bb80f9a 100644
--- a/_common.scss
+++ b/_common.scss
@@ -23,2209 +23,219 @@ $cakeisalie: "This stylesheet is generated, DO NOT EDIT";
  * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-/* GLOBALS */
+/* Global Values */
 
+// padding, margin and spacing
+$base_padding: 6px;
+$base_margin: 4px;
+$base_spacing: 6px;
 
-$modal_radius: 9px;
-$button_radius: 5px;
-$panel-corner-radius: $button_radius + 1;
+// border radii
+$base_border_radius: 5px;
 
-$_trough_color: transparentize($fg_color, 0.9);
-$_bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
-$_hover_bg_color: lighten($bg_color,if($variant=='light', 5%, 3%));
-$_active_bg_color: if($variant == 'light', darken($bg_color, 14%), darken($bg_color, 9%));
+$modal_radius:$base_border_radius * 2;
 
-$font-size: 11;
+// non-standard colors
+$bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
+// $bubble_borders_color: if($variant == 'light', rgba(255,255,255,0.1), rgba(0,0,0,0.3));
 
-stage {
-  @include fontsize($font-size);
-  color: $fg_color;
-}
-
-/* WIDGETS */
-
-/* Buttons */
-.button, %button {
-  border-radius: $button_radius;
-  border-width: 1px;
-  min-height: 22px;
-  padding: 4px 32px;
-  @include button(normal);
-  &:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
-  &:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
-  &:insensitive { @include button(insensitive); }
-  &:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
-}
-
-.modal-dialog-linked-button, %bubble_button {
-  border-right-width: 1px;
-  @include button(normal, $c:$bg_color, $tc:$fg_color);
-  &:insensitive { @include button(insensitive, $c:$bg_color, $tc:$fg_color); }
-  &:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
-  &:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
-  &:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
-  padding: 12px;
-  border-top: 1px solid $_bubble_borders_color;
-
-  &:first-child {
-    border-radius: 0px 0px 0px $modal_radius;
-  }
-  &:last-child {
-    border-right-width: 0px;
-    border-radius: 0px 0px $modal_radius 0px;
-  }
-  &:first-child:last-child {
-    border-right-width: 0px;
-    border-radius: 0px 0px $modal_radius $modal_radius;
-  }
-}
-
-/* Entries */
-StEntry {
-  border-radius: $button_radius;
-  padding: 4px;
-  border-width: 1px;
-  color: $fg_color;
-  @include entry(normal);
-  //&:hover { @include entry(hover);}
-  &:focus { @include entry(focus,$fc:transparentize($fg_color,0.5));}
-  &:insensitive { @include entry(insensitive);}
-  selection-background-color: $selected_bg_color;
-  selected-color: $selected_fg_color;
-  StIcon.capslock-warning {
-    icon-size: 16px;
-    warning-color: $warning_color;
-    padding: 0 4px;
-  }
-
-  StIcon.peek-password {
-    icon-size: 1.09em;
-    padding: 0 4px;
-  }
-}
-
-
-/* Scrollbars */
-
-StScrollView {
-  &.vfade { -st-vfade-offset: 68px; }
-  &.hfade { -st-hfade-offset: 68px; }
-}
-
-StScrollBar {
-  padding: 0;
-
-  StScrollView & {
-    min-width: 14px;
-    min-height: 14px;
-  }
-
-  StBin#trough {
-    border-radius: 0;
-    background-color: transparent;
-  }
-
-  StButton#vhandle, StButton#hhandle {
-    border-radius: 8px;
-    background-color: mix($fg_color, $bg_color, 60%);
-    //border: 3px solid transparent; //would be nice to margin or at least to transparent
-    margin: 3px;
-    &:hover { background-color: mix($fg_color, $bg_color, 80%); }
-    &:active { background-color: $selected_bg_color; }
-  }
-}
-
-/* Slider */
-
-.slider {
-  height: 1em;
-  -barlevel-height: 0.3em;
-  -barlevel-background-color: transparentize($fg_color, 0.9); //background of the trough
-  -barlevel-border-color: $borders_color; //trough border color
-  -barlevel-active-background-color: $selected_bg_color; //active trough fill
-  -barlevel-active-border-color: $selected_borders_color; //active trough border
-  -barlevel-overdrive-color: $destructive_color;
-  -barlevel-overdrive-border-color: darken($destructive_color,10%);
-  -barlevel-overdrive-separator-width: 0.2em;
-  -barlevel-border-width: 1px;
-  -slider-handle-radius: 8px;
-  -slider-handle-border-width: 1px;
-  -slider-handle-border-color: $borders_color;
-  color: if($variant == 'light', lighten($bg_color, 10%), darken($bg_color,4%));
-  &:hover { color: $_hover_bg_color; }
-  &:active { color: $_active_bg_color; }
-}
-
-/* Check Boxes */
-
-.check-box {
-  StBoxLayout { spacing: .8em; }
-  StBin {
-    width: 24px;
-    height: 22px;
-    background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
-  }
-  &:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
-  &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
-  &:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
-}
-
-/* Switches */
-.toggle-switch {
-  color: $fg_color;
-  width: 46px;
-  height: 22px;
-  background-size: contain;
-  background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),
-                                           url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
-  &:checked { 
-    background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),
-                                           url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
-  }
-}
-
-/* links */
-.shell-link {
-  color: $link_color;
-  &:hover { color: lighten($link_color,10%); }
-}
-
-/* Modal Dialogs */
-
-.headline { font-size: 110%; }
-.lightbox { background-color: black; }
-.flashspot { background-color: white; }
-
-.modal-dialog {
-  border-radius: $modal_radius;
-  @extend %bubble-panel;
-  .modal-dialog-content-box {
-    padding: 24px;
-  }
-  .run-dialog-entry { width: 20em; margin-bottom: 6px; }
-  .run-dialog-error-box {
-    padding-top: 16px;
-    spacing: 6px;
-  }
-  .run-dialog-button-box { padding-top: 1em; }
-  .run-dialog-label {
-    @include fontsize($font-size + 1.1);
-    font-weight: normal;
-    color: $fg_color;
-    padding-bottom: .4em;
-  }
-
-}
-
-  .mount-dialog-subject,
-  .end-session-dialog-subject { //this should be a generic header class
-    @include fontsize($font-size * 1.3);
-  }
-
-/* Message Dialog */
-  .message-dialog-main-layout {
-    padding: 12px 20px 0;
-    spacing: 12px;
-  }
-
-  .message-dialog-content {
-    max-width: 28em;
-    spacing: 20px;
-  }
-
-  .message-dialog-icon {
-    min-width: 48px;
-    icon-size: 48px;
-  }
-
-  .message-dialog-title {
-    font-weight: bold;
-  }
-
-  .message-dialog-subtitle {
-    color: $fg_color;
-    font-weight: bold;
-  }
-
-/* End Session Dialog */
-.end-session-dialog {
-  spacing: 42px;
-  border: 1px solid $_bubble_borders_color;
-}
-
-  .end-session-dialog-list {
-      padding-top: 20px;
-  }
-
-  .end-session-dialog-layout {
-    padding-left: 17px;
-    &:rtl { padding-right: 17px; }
-  }
-
-  .end-session-dialog-description {
-    width: 28em;
-    padding-bottom: 10px;
-    &:rtl {
-      text-align: right;
-    }
-  }
-
-  .end-session-dialog-warning {
-    width: 28em;
-    color: $warning_color;
-    padding-top: 6px;
-    &:rtl {
-      text-align: right;
-    }
-  }
-
-  .end-session-dialog-logout-icon {
-    border-radius: 99px;
-    width: 48px;
-    height: 48px;
-    background-size: contain;
-  }
-
-  .end-session-dialog-shutdown-icon {
-    color: $fg_color;
-    width: 48px;
-    height: 48px;
-  }
-
-  .end-session-dialog-inhibitor-layout {
-    spacing: 16px;
-    max-height: 200px;
-    padding-right: 65px;
-    padding-left: 65px;
-  }
-
-  .end-session-dialog-session-list,
-  .end-session-dialog-app-list {
-    spacing: 1em;
-  }
-
-  .end-session-dialog-list-header {
-    font-weight: bold;
-    &:rtl { text-align: right; }
-  }
-
-  .end-session-dialog-app-list-item,
-  .end-session-dialog-session-list-item {
-    spacing: 1em;
-  }
-
-  .end-session-dialog-app-list-item-name,
-  .end-session-dialog-session-list-item-name {
-    font-weight: bold;
-  }
-
-  .end-session-dialog-app-list-item-description {
-    color: darken($fg_color,5%);
-    font-size: 10pt;
-  }
-
-/* ShellMountOperation Dialogs */
-.shell-mount-operation-icon { icon-size: 48px; }
-
-  .mount-dialog {
-    spacing: 24px;
-
-    .message-dialog-title {
-      padding-top: 10px;
-      padding-left: 17px;
-      padding-bottom: 6px;
-      max-width: 34em;
-    }
-
-    .message-dialog-title:rtl {
-      padding-left: 0px;
-      padding-right: 17px;
-    }
-
-    .message-dialog-body {
-      padding-left: 17px;
-      width: 28em;
-    }
-
-    .message-dialog-body:rtl {
-      padding-left: 0px;
-      padding-right: 17px;
-    }
-  }
-
-  .mount-dialog-app-list {
-    max-height: 200px;
-    padding-top: 24px;
-    padding-left: 49px;
-    padding-right: 32px;
-  }
-
-  .mount-dialog-app-list:rtl {
-    padding-right: 49px;
-    padding-left: 32px;
-  }
-
-  .mount-dialog-app-list-item {
-    color: lighten($fg_color,10%);
-    &:hover { color: $fg_color; }
-    &:ltr { padding-right: 1em; }
-    &:rtl { padding-left: 1em; }
-  }
-
-  .mount-dialog-app-list-item-icon {
-    &:ltr { padding-right: 17px; }
-    &:rtl { padding-left: 17px; }
-  }
-
-  .mount-dialog-app-list-item-name {
-    font-size: 10pt;
-  }
-
-
-/* Password or Authentication Dialog */
-
-.prompt-dialog {
-  @extend %bubble-panel;
-  //this is the width of the entire modal popup
-  width: 34em;
-
-  .message-dialog-main-layout { spacing: 24px; padding: 10px; }
-  .message-dialog-content { spacing: 16px; }
-  .message-dialog-title { color: lighten($fg_color,15%); }
-}
-
-  .prompt-dialog-description:rtl {
-    text-align: right;
-  }
-
-  .prompt-dialog-password-box {
-    spacing: 1em;
-    padding-bottom: 1em;
-  }
-
-  .prompt-dialog-error-label {
-    font-size: 10pt;
-    color: $warning_color;
-    padding-bottom: 8px;
-  }
-
-  .prompt-dialog-caps-lock-warning {
-    @extend .prompt-dialog-error-label;
-    padding-left: 6.2em;
-  }
-
-  .prompt-dialog-info-label {
-    font-size: 10pt;
-    padding-bottom: 8px;
-  }
-
-  .hidden {
-    color: rgba(0,0,0,0);
-  }
-
-  .prompt-dialog-null-label {
-    font-size: 10pt;
-    padding-bottom: 8px;
-  }
-
-  .prompt-dialog-pim-box {
-    spacing: 1em;
-  }
-
-  .prompt-dialog-grid {
-    spacing-rows: 15px;
-    spacing-columns: 1em;
-  }
-
-  .prompt-dialog-keyfiles-box {
-    spacing: 1em;
-  }
-
-  .prompt-dialog-button.button {
-    padding: 8px;
-  }
-
-
-/* Polkit Dialog */
-
-.polkit-dialog-user-layout {
-  padding-left: 10px;
-  spacing: 10px;
-  &:rtl {
-    padding-left: 0px;
-    padding-right: 10px;
-  }
-}
-
-  .polkit-dialog-user-root-label {
-    color: $warning_color;
-  }
-
-  .polkit-dialog-user-icon {
-    border-radius: 99px;
-    background-size: contain;
-    width: 48px;
-    height: 48px;
-  }
-
-/* Audio selection dialog */
-.audio-device-selection-dialog {
-  @extend %bubble-panel;
-  spacing: 30px;
-}
-
-  .audio-selection-content {
-    spacing: 20px;
-    padding: 24px;
-  }
-
-  .audio-selection-title {
-    font-weight: bold;
-    text-align: center;
-  }
-
-  .audio-selection-box {
-    spacing: 20px;
-  }
-
-  .audio-selection-device {
-    border: 1px solid $_bubble_borders_color;
-    border-radius: 12px;
-    &:hover,&:focus { background-color: $_hover_bg_color; }
-    &:active { 
-      background-color: $selected_bg_color;
-      color: $selected_fg_color;
-    }
-  }
-
-  .audio-selection-device-box {
-    padding: 20px;
-    spacing: 20px;
-  }
-
-  .audio-selection-device-icon {
-    icon-size: 64px;
-  }
-
-/* Access Dialog */
-.access-dialog {
-  @extend %bubble-panel;
-  spacing: 30px;
-}
-
-/* Geolocation Dialog */
-.geolocation-dialog {
-  @extend %bubble-panel;
-  spacing: 30px;
-}
-
-/* Extension Dialog */
-.extension-dialog {
-  @extend %bubble-panel;
-  .message-dialog-main-layout { spacing: 24px; padding: 10px; }
-  .message-dialog-title { font-weight: normal; color: $fg_color; }
-}
-
-/* Inhibit-Shortcuts Dialog */
-.inhibit-shortcuts-dialog {
-  @extend %bubble-panel;
-  spacing: 30px;
-}
-
-/* Network Agent Dialog */
-
-.network-dialog-secret-table {
-  spacing-rows: 15px;
-  spacing-columns: 1em;
-}
-
-.keyring-dialog-control-table {
-  spacing-rows: 15px;
-  spacing-columns: 1em;
-}
-
-/* Popovers/Menus */
-
-.popup-menu {
-  min-width: 15em;
-  color: $fg_color;
-  border-color: $_bubble_borders_color;
-
-  .popup-menu-arrow { } //defined globally in the TOP BAR
-  .popup-sub-menu {
-    background-color: darken($bg_color,5%);
-    box-shadow: inset 0 -1px 0px $_bubble_borders_color;
-  }
-
-  .popup-menu-content { padding: 1em 0em; }
-  .popup-menu-item {
-    spacing: 12px;
-
-    &:ltr { padding: .4em 1.75em .4em 0em; }
-    &:rtl { padding: .4em 0em .4em 1.75em; }
-    &:checked {
-      background-color: $bg_color;
-      box-shadow: inset 0 -1px 0px $_bubble_borders_color;
-      font-weight: bold;
-    }
-    &.selected {
-      background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
-      color: $fg_color;
-    }
-    &:active { 
-      background-color: $selected_bg_color;
-      color: $selected_fg_color;
-     }
-    &:insensitive { color: transparentize($fg_color,.5); }
-  }
-
-  .popup-inactive-menu-item { //all icons and other graphical elements
-    color: $fg_color;
-
-    &:insensitive { color: transparentize($fg_color,0.5); }
-  }
-  //.popup-status-menu-item { font-weight: normal;  color: pink; } //dunno what that is
-  &.panel-menu {
-    -boxpointer-gap: 4px;
-    margin-bottom: 1.75em;
-  }
-}
-
-
-
-  .popup-menu-ornament {
-    text-align: right;
-    width: 1.2em;
-  }
-  .popup-menu-boxpointer,
-  .candidate-popup-boxpointer {
-    -arrow-border-radius: $button_radius+4;
-    -arrow-background-color: $bg_color;
-    -arrow-border-width: 1px;
-    -arrow-border-color: if($variant=='light', transparentize(black, 0.6), $borders_color);
-    -arrow-base: 24px;
-    -arrow-rise: 11px;
-    -arrow-box-shadow: 0 1px 3px black; //dreaming. bug #689995
-  }
-
-  .popup-separator-menu-item {
-    //-margin-horizontal: 24px;
-    height: 1px; //not really the whole box
-    margin: 6px 64px;
-    background-color: transparent;
-    border-color: $_bubble_borders_color;
-    border-bottom-width: 1px;
-    border-bottom-style: solid;
-  }
-
-// Rename popup
-.rename-folder-popup {
-  .rename-folder-popup-item {
-    spacing: 6px;
-    &:ltr, &:rtl { padding: 0, 12px; }
-  }
-}
-
-// Background menu
-.background-menu { -boxpointer-gap: 4px; -arrow-rise: 0px; }
-
-/* fallback menu
-- odd thing for styling App menu when apparently not running under shell. Light Adwaita styled
-  app menu inside the main app window itself rather than the top bar
-*/
-
-/*************
- * App Icons *
- *************/
-/* Outline for low res icons */
-.lowres-icon {
-    icon-shadow: 0 1px 2px rgba(0,0,0,0.3);
-}
-
-/* Drapshadow for large icons */
-.icon-dropshadow {
-  icon-shadow: 0 1px 2px rgba(0,0,0,0.4);
-}
-
-/* OSD */
-.osd-window {
-  text-align: center;
-  font-weight: bold;
-  spacing: 1em;
-  margin: 32px;
-  min-width: 64px;
-  min-height: 64px;
-
-  .osd-monitor-label { font-size: 3em; }
-  .level {
-    height: 0.6em;
-    -barlevel-height: 0.6em;
-    -barlevel-background-color: transparentize($fg_color, if($variant=='light', 0.2, 0.9));
-    -barlevel-active-background-color: $osd_fg_color;
-    -barlevel-overdrive-color: $destructive_color;
-    -barlevel-overdrive-separator-width: 0.2em;
-  }
-}
-
-/* Pad OSD */
-.pad-osd-window {
-    padding: 32px;
-    background-color: transparentize(black, 0.2);
-
-  .pad-osd-title-box { spacing: 12px; }
-  .pad-osd-title-menu-box { spacing: 6px; }
-}
-
-.combo-box-label {
-    width: 15em;
-}
-
-/* App Switcher */
-.switcher-popup {
-  padding: 8px;
-  spacing: 16px;
-}
-
-.osd-window,
-.resize-popup,
-.switcher-list {
-  @extend %osd-panel;
-}
-
-  .switcher-list-item-container { spacing: 8px;  }
-
-  .switcher-list .item-box {
-    padding: 8px;
-    border-radius: 4px;
-  }
-
-  .switcher-list .item-box:outlined {
-    padding: 6px;
-    border: 2px solid darken($borders_color,10%);
-  }
-
-  .switcher-list .item-box:selected {
-    background-color: transparentize($osd_fg_color, 0.7);
-    color: $selected_fg_color;
-  }
-
-  .switcher-list .thumbnail-box {
-    padding: 2px;
-    spacing: 4px;
-  }
-
-  .switcher-list .thumbnail {
-    width:  256px;
-  }
-
-  .switcher-list .separator {
-    width: 1px;
-    background: $borders_color;
-  }
-
-  .switcher-arrow {
-    border-color: rgba(0,0,0,0);
-    color: transparentize($fg_color,0.2);
-    &:highlighted {
-      color: $fg_color;
-    }
-  }
-
-  .input-source-switcher-symbol {
-    font-size: 34pt;
-    width: 96px;
-    height: 96px;
-  }
-
-/* Window Cycler */
-.cycler-highlight { border: 5px solid $selected_bg_color; }
-
-/* Workspace Switcher */
-.workspace-switcher-group { padding: 12px; }
-
-  .workspace-switcher-container {
-    @extend %osd-panel;
-  }
-
-  .workspace-switcher {
-    background: transparent;
-    border: 0px;
-    border-radius: 0px;
-    padding: 0px;
-    spacing: 8px;
-  }
-
-  .ws-switcher-active-up, .ws-switcher-active-down,
-  .ws-switcher-active-left, .ws-switcher-active-right {
-    height: 52px;
-    background-color: $selected_bg_color;
-    color: $selected_fg_color;
-    background-size: 32px;
-    border-radius: 8px;
-  }
-
-  .ws-switcher-box {
-    height: 50px;
-    border: 1px solid transparentize($osd_fg_color,0.9);
-    background: transparent;
-    border-radius: 8px;
-  }
-
-%osd-panel {
-  color: $osd_fg_color;
-  background-color: $osd_bg_color;
-  border: 1px solid $osd_outer_borders_color;
-  border-radius: 12px;
-  padding: 12px;
-}
-
-%bubble-entry {
-  color: $fg_color;
-  background-color: darken($bg_color, 2%);
-  border-color: $_bubble_borders_color;
-  box-shadow: none;
-  &:focus { border: 2px solid $selected_bg_color; }
-}
-
-%bubble-panel {
-  color: $fg_color;
-  background-color: $bg_color;
-  border: 1px solid if($variant=='light', transparentize(black, 0.6), $borders_color);
-
-  StEntry { @extend %bubble-entry; }
-  .button {
-    &, &:hover, &:focus, &:active, &:disabled { 
-      box-shadow: none;
-      border-color: $_bubble_borders_color;
-    }
-    background-color: $bg_color;
-    color: $fg_color;
-    &:hover { background-color: $_hover_bg_color; }
-    &:active { 
-      background-color: $selected_bg_color;
-      color: $selected_fg_color;
-    }
-    &:disabled { color: $insensitive_fg_color; }
-  }
-}
-
-/* Tiled window previews */
-.tile-preview {
-  background-color: transparentize($selected_bg_color,0.5);
-  border: 1px solid $selected_bg_color;
-}
-
-  .tile-preview-left.on-primary {
-    border-radius: $panel-corner-radius 0 0 0;
-  }
-
-  .tile-preview-right.on-primary {
-    border-radius: 0 $panel-corner-radius 0 0;
-  }
-
-  .tile-preview-left.tile-preview-right.on-primary {
-    border-radius: $panel-corner-radius $panel-corner-radius 0 0;
-  }
-
-/* TOP BAR */
-
-#panel {
-  background-color: black;
-  font-weight: bold;
-  height: 1.86em;
-  font-feature-settings: "tnum";
-
-  &.unlock-screen,
-  &.login-screen,
-  &.lock-screen {
-    background-color: transparent;
-  }
-
-  #panelLeft, #panelCenter { // spacing between activities<>app menu and such
-    spacing: 4px;
-  }
-
-  .panel-corner {
-    -panel-corner-radius: $panel-corner-radius;
-    -panel-corner-background-color: black;
-    -panel-corner-border-width: 2px;
-    -panel-corner-border-color: transparent;
-
-    &:active, &:overview, &:focus {
-      -panel-corner-border-color: lighten($selected_bg_color,5%);
-    }
-
-    &.lock-screen, &.login-screen, &.unlock-screen {
-      -panel-corner-radius: 0;
-      -panel-corner-background-color: transparent;
-      -panel-corner-border-color: transparent;
-    }
-  }
-
-  .panel-button {
-    -natural-hpadding: 12px;
-    -minimum-hpadding: 6px;
-    font-weight: bold;
-    color: #ccc;
-
-    .app-menu-icon {
-      -st-icon-style: symbolic;
-      margin-left: 4px;
-      margin-right: 4px;
-      //dimensions of the icon are hardcoded
-    }
-
-    &:hover {
-      color: $selected_fg_color;
-    }
-
-    &:active, &:overview, &:focus, &:checked {
-      // Trick due to St limitations. It needs a background to draw
-      // a box-shadow
-      background-color: rgba(0, 0, 0, 0.01);
-      box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%);
-      color: $selected_fg_color;
-    }
-
-    .system-status-icon { icon-size: 1.09em; padding: 0 5px; }
-    .unlock-screen &,
-    .login-screen &,
-    .lock-screen & {
-      color: lighten($fg_color, 10%);
-      &:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
-    }
-  }
-
-  .panel-status-indicators-box,
-  .panel-status-menu-box {
-    spacing: 2px;
-  }
-
-  // spacing between power icon and (optional) percentage label
-  .power-status.panel-status-indicators-box {
-    spacing: 0;
-  }
-
-  .screencast-indicator { color: $warning_color; }
-
-  .remote-access-indicator { color: $warning_color; }
-}
-
-  // calendar popover
-  #calendarArea {
-    padding: 0.75em 1.0em;
-  }
-
-  .calendar {
-    margin-bottom: 1em;
-  }
-
-    .calendar,
-    .datemenu-today-button,
-    .datemenu-displays-box,
-    .message-list-sections {
-      margin: 0 1.5em;
-    }
-
-    .datemenu-calendar-column { spacing: 0.5em; }
-    .datemenu-displays-section { padding-bottom: 3em; }
-    .datemenu-displays-box { spacing: 1em; }
-
-    .datemenu-calendar-column {
-      border: 0 solid $_bubble_borders_color;
-      &:ltr { border-left-width: 1px; }
-      &:rtl { border-right-width: 1px; }
-    }
-
-    .datemenu-today-button,
-    .world-clocks-button,
-    .weather-button,
-    .events-section-title {
-      border-radius: 4px;
-      padding: .4em;
-    }
-
-    .message-list-section-list:ltr {
-      padding-left: .4em;
-    }
-
-    .message-list-section-list:rtl {
-      padding-right: .4em;
-    }
-
-    .datemenu-today-button,
-    .world-clocks-button,
-    .weather-button,
-    .events-section-title {
-      &:hover, &:focus { background-color: $_hover_bg_color }
-      &:active { background-color: $_active_bg_color }
-    }
-
-    .datemenu-today-button .day-label {
-    }
-
-    .datemenu-today-button .date-label {
-      font-size: 1.5em;
-      font-weight: 300;
-    }
-
-    .world-clocks-header,
-    .weather-header,
-    .events-section-title {
-      color: darken($fg_color,40%);
-      font-weight: bold;
-    }
-
-    .weather-header.location {
-      font-weight: normal;
-      font-size: 0.9em;
-    }
-
-    .world-clocks-grid,
-    .weather-grid {
-      spacing-rows: 0.4em;
-      spacing-columns: 0.8em;
-    }
-
-    .weather-header-box,
-    .weather-box {
-      spacing: 0.4em;
-    }
-
-    .world-clocks-city {
-      font-weight: bold;
-      font-size: 0.9em;
-    }
-
-    .world-clocks-time {
-      color: darken($fg_color,20%);
-      font-feature-settings: "tnum";
-      font-size: 1.2em;
-    }
-
-    .world-clocks-timezone {
-      color: $fg_color;
-      font-feature-settings: "tnum";
-      font-size: 0.9em;
-    }
 
-    .weather-forecast-icon {
-      icon-size: 2.18em;
-    }
+// hover
+$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 5%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 5%));
+$hover_borders_color: lighten($borders_color,if($variant=='light', 5%, 3%));
 
-    .weather-forecast-time {
-      color: darken($fg_color,40%);
-      font-size: 0.8em;
-    }
+// active
+$active_bg_color: if($variant == 'light', darken($bg_color, 7%), darken($bg_color, 9%));
+$active_fg_color: darken($fg_color,if($variant=='light', 5%, 3%));
+$active_borders_color: darken($borders_color,if($variant=='light', 5%, 3%));
 
-    .calendar-month-label {
-      color: lighten($fg_color,5%);
-      font-weight: bold;
-      padding: 8px 0;
-      &:focus {}
-    }
+// fonts
+$base_font_size: 11;
+$text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2));
 
-    .pager-button {
-      background-color: transparent;
-      width: 32px;
-      border-radius: 4px;
-      &:hover, &:focus { background-color: $_hover_bg_color; }
-      &:active { background-color: transparentize($fg_color, 0.84); }
-    }
+// icons
+$base_icon_size: 1.09em;
+// $base_icon_size: 16px;
 
-      .calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { // arrows
-        icon-size: 1.09em;
-      }
-
-    .calendar-day-base {
-      font-size: 80%;
-      text-align: center;
-      width: 2.4em; height: 2.4em;
-      padding: 0.1em;
-      margin: 2px;
-      border-radius: 1.4em;
-      font-feature-settings: "tnum";
-      &:hover, &:focus { background-color: $_hover_bg_color; }
-      &:active,&:selected {
-        color: lighten($selected_fg_color,5%);
-        background-color: $selected_bg_color;
-        border-color: transparent; //avoid jumparound due to today
-      }
-      &.calendar-day-heading {  //day of week heading
-        color: lighten($fg_color,5%);
-        margin-top: 1em;
-        font-size: 70%;
-      }
-    }
-      .calendar-day { //border collapse hack - see calendar.js
-        border-width: 0;
-      }
-      .calendar-day-top { border-top-width: 1px; }
-      .calendar-day-left { border-left-width: 1px; }
-      .calendar-work-day {
-
-      }
-      .calendar-nonwork-day {
-        color: $insensitive_fg_color;
-      }
-      .calendar-today {
-        font-weight: bold;
-        color: lighten($fg_color,5%);
-        background-color: darken($bg_color,5%);
-        // border: 1px solid lighten($_bubble_borders_color,20%);
-      }
-      .calendar-day-with-events {
-        color: lighten($fg_color,10%);
-        font-weight: bold;
-        background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
-      }
-      .calendar-other-month-day {
-        color: transparentize($fg_color ,0.5);
-        opacity: 0.5;
-      }
-      .calendar-week-number {
-        font-size: 70%;
-        font-weight: bold;
-        width: 2.3em; height: 1.8em;
-        border-radius: 2px;
-        padding: 0.5em 0 0;
-        margin: 6px;
-        background-color: $_bubble_borders_color;
-        color: $fg_color;
-      }
-
-      /* Message list */
-      .message-list {
-        width: 31.5em;
-      }
-
-        .message-list-clear-button.button {
-         @extend %button;
-          margin: 1.5em 1.5em 0;
-        }
-
-        .message-list-sections {
-          spacing: 1em;
-        }
-
-        .message-list-section,
-        .message-list-section-list {
-          spacing: 0.4em;
-        }
-
-        .message {
-          border: 1px solid $_bubble_borders_color;
-          background-color: lighten($bg_color, 2%);
-          &:hover,&:focus { background-color: $_hover_bg_color; }
-          &:active { background-color: transparentize($fg_color, 0.84) }
-          border-radius: 5px;
-        }
-
-          .message-icon-bin {
-            padding: 0.68em 0.2em 0.68em 0.68em;
-            &:rtl { padding: 0.68em 0.68em 0.68em 0.2em; }
-          }
-
-          .message-icon-bin > StIcon {
-            color: $fg_color;
-            icon-size: 1.09em;
-            -st-icon-style: symbolic;
-          }
-
-          .message-icon-bin > .fallback-window-icon {
-            width: 1.09em;
-            height: 1.09em;
-          }
-
-          .message-secondary-bin {
-            padding: 0 0.82em;;
-          }
-
-          .message-secondary-bin > .event-time {
-            color: $fg_color;
-            font-size: 0.7em;
-            /* HACK: the label should be baseline-aligned with a 1em label,
-                     fake this with some bottom padding */
-            padding-bottom: 0.13em;
-          }
-
-          .message-secondary-bin > StIcon {
-            icon-size: 1.09em;
-          }
-
-          .message-title {
-            color: $fg_color;            
-          }
-
-          .message-content {
-            color: darken($fg_color, 10%);
-            padding: 10px;
-          }
-
-          .message-close-button {
-            color: lighten($fg_color, 15%);
-            &:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
-            &:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
-          }
-
-          .message-media-control {
-            padding: 12px;
-            color: lighten($fg_color, 15%);
-
-            &:last-child:ltr { padding-right: 18px; }
-            &:last-child:rtl { padding-left: 18px; }
-            &:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
-            &:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
-            &:insensitive { color: if($variant=='light', lighten($fg_color, 50%), darken($fg_color, 40%)); }
-          }
-
-          .media-message-cover-icon {
-            icon-size: 48px !important;
-            &.fallback {
-              color: lighten($fg_color,10%);
-              background-color: $bg_color;
-              border: 1px solid $bg_color;
-              border-radius: 2px;
-              icon-size: 32px !important;
-              padding: 6px; }
-          }
-
-
-  // a little unstructured mess:
-
-  #appMenu {
-    spacing: 4px;
-
-    .label-shadow { color: transparent; }
-  }
-
-  .app-menu,
-  .app-well-menu {
-    max-width: 27.25em;
-  }
-
-  .aggregate-menu {
-    min-width: 21em;
-    .popup-menu-icon { padding: 0 4px;
-                       -st-icon-style: symbolic; }
-    .popup-sub-menu .popup-menu-item > :first-child {
-      &:ltr { /* 12px spacing + 2*4px padding */
-              padding-left: 20px; margin-left: 1.09em; }
-      &:rtl { /* 12px spacing + 2*4px padding */
-              padding-right: 20px; margin-right: 1.09em; }
-    }
-  }
-
-// Activities Ripples
-.ripple-box {
-  width: 52px;
-  height: 52px;
-  border-radius: 0 0 52px 0; // radius the size of the box give us the curve
-  background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
-  box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
-}
-
-.ripple-box:rtl { border-radius: 0 0 0 52px; } // just a simple change to the border radius position
-
-// Rubberband for select-area screenshots
-.select-area-rubberband {
-  background-color: transparentize($selected_bg_color,0.7);
-  border: 1px solid $selected_bg_color;
-}
-
-// Pointer location
-.ripple-pointer-location {
-  width: 50px;
-  height: 50px;
-  border-radius: 25px 25px 25px 25px; // radius the size of the box give us the curve
-  background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
-  box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
-}
-
-// not really top bar only
-.popup-menu-arrow { icon-size: 1.09em; }
-.popup-menu-icon { icon-size: 1.09em; }
-
-//close buttons
-
-.window-close {
-  background-color: $selected_bg_color;
-  color: white;
-  border-radius: 24px;
-  border: 2px solid $selected_bg_color;
-  height: 24px;
-  width: 24px;
-  -shell-close-overlap: 11px;
-  box-shadow: -1px 1px 5px 0px transparentize(black, 0.5);
-
-  &:hover {
-    background-color: lighten($selected_bg_color, 5%);
-    border-color: lighten($selected_bg_color, 5%);
-  }
-
-  &:active {
-    background-color: darken($selected_bg_color, 5%);
-    border-color: darken($selected_bg_color, 5%);
-  }
-}
-
-// Pointer accessibility notifications
-.pie-timer {
-  width: 60px;
-  height: 60px;
-  -pie-border-width: 3px;
-  -pie-border-color: $selected_bg_color;
-  -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
-}
-
-/* NETWORK DIALOGS */
-
-.nm-dialog {
-  @extend %bubble-panel;
-  max-height: 34em;
-  min-height: 31em;
-  min-width: 32em;
-}
-
-  .nm-dialog-content {
-    spacing: 20px;
-    padding: 24px;
-  }
-  .nm-dialog-header-hbox { spacing: 10px; }
-  .nm-dialog-airplane-box { spacing: 12px; }
-
-  .nm-dialog-airplane-headline {
-    font-weight: bold;
-    text-align: center;
-  }
-
-  .nm-dialog-airplane-text { color: $fg_color; }
-  .nm-dialog-header-icon { icon-size: 32px; }
-  .nm-dialog-scroll-view { border: 2px solid $borders_color; }
-  .nm-dialog-header { font-weight: bold; }
-
-  .nm-dialog-item {
-    font-size: 110%;
-    border-bottom: 1px solid $borders_color;
-    padding: 12px;
-    spacing: 20px;
-  }
-
-  .nm-dialog-item:selected {
-    background-color: $selected_bg_color;
-    color: $selected_fg_color;
-  }
-
-  .nm-dialog-icons { spacing: .5em; }
-  .nm-dialog-icon { icon-size: 16px; }
-  .no-networks-label { color: #999999; }
-  .no-networks-box { spacing: 12px; }
-
-/* OVERVIEW */
-
-#overview {
-  spacing: 24px; //
-}
-
-.overview-controls {
-  padding-bottom: 32px;
-}
-
-  .window-picker { //container around window thumbnails
-    -horizontal-spacing: 16px;
-    -vertical-spacing: 16px;
-    padding: 0 16px 16px;
-
-    &.external-monitor { padding: 16px; }
-  }
-
-  .window-clone-border {
-    $_bg: transparentize(white, 0.65);
-    border: 7px solid $_bg;
-    border-radius: $modal_radius;
-    // For window decorations with round corners we can't match
-    // the exact shape when the window is scaled. So apply a shadow
-    // to fix that case
-    box-shadow: inset 0 0 0 1px $_bg;
-}
-  .window-caption {
-    spacing: 25px;
-    color: $selected_fg_color;
-    background-color: $selected_bg_color;
-    border-radius: 8px;
-    padding: 4px 12px;
-  }
-
-  //search entry
-  .search-entry, %search_entry {
-    width: 320px;
-    padding: 7px 9px;
-    border-radius: 18px;
-    color: $fg_color;
-    background-color: $base_color;
-    border-color: $borders_color;
-    &:focus {
-      padding: 6px 8px;
-      border-width: 2px;
-      border-color: $selected_bg_color;
-    }
-
-    .search-entry-icon { icon-size: 1em; padding: 0 4px; color: $fg_color; }
-
-    &:hover, &:focus {
-      .search-entry-icon { color: transparentize($fg_color,.3); }
-    }
-  }
-
-  //search results
-
-  #searchResultsContent {
-    max-width: 1000px;
-    padding-left: 20px;
-    padding-right: 20px;
-    spacing: 16px;
-  }
-
-  .search-section { spacing: 16px; } // This should be equal to #searchResultsContent spacing
-  .search-section-content { spacing: 32px; } // This is the space between the provider icon and the results 
container
-  .search-statustext { // "no results"
-    @extend %status_text;
-  }
-  .list-search-results { spacing: 3px; }
-
-  .search-section-separator { height: 2px; background-color: rgba(255, 255, 255, 0.2); }
-
-  .search-section:last-child .search-section-separator { background-color: transparent; }
-
-  .list-search-result-content { spacing: 30px; }
-  .list-search-result-title { color: darken($osd_fg_color,5%); spacing: 12px; }
-  .list-search-result-description { color: darken($osd_fg_color, 30%); }
-  .list-search-provider-details { width: 150px; color: darken($osd_fg_color,5%); margin-top: 0.24em; }
-  .list-search-provider-content { spacing: 20px; }
-  .search-provider-icon { padding: 15px; }
-
-
-  /* DASHBOARD */
-
-  #dash {
-    @extend %overview-panel;
-    font-size: 9pt;
-    padding: 4px 0;
-    border-radius: 0px 9px 9px 0px;
-
-    &:rtl {
-      border-radius: 9px 0 0 9px;
-    }
-
-    .placeholder {
-      background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
-      background-size: contain;
-      height: 24px;
-    }
-
-    .empty-dash-drop-target {
-      width: 24px;
-      height: 24px;
-    }
-
-  }
-
-  .dash-item-container > StWidget {
-    padding: 4px 8px;
-  }
-
-  .dash-label { //osd tooltip
-    border-radius: 7px;
-    padding: 4px 12px;
-    color: $osd_fg_color;
-    background-color: transparentize($osd_bg_color,0.05);
-    border: 1px solid $osd_outer_borders_color;
-    text-align: center;
-    -x-offset: 8px;
-  }
-
-  /* App Vault/Grid */
-  .icon-grid {
-    spacing: 30px;
-    -shell-grid-horizontal-item-size: 136px;
-    -shell-grid-vertical-item-size: 136px;
-
-    .overview-icon { icon-size: 96px; }
-  }
-  //.app-display { spacing: 20px; }
-
-  .system-action-icon {
-    background-color: black;
-    color: white;
-    border-radius: 99px;
-    icon-size: 48px;
-  }
-
-  .app-view-controls { //favorties | all toggle container
-    padding-bottom: 32px;
-  }
-  .app-view-control { //favorties | all toggle button
-    padding: 4px 32px;
-    margin: 0 4px;
-    &, &:hover, &:checked { @include button(undecorated); }
-
-    &, &:hover { color: darken($osd_fg_color, 25%); }
-
-    &:hover { box-shadow: inset 0 -2px darken($osd_fg_color, 25%); }
-
-    &:active {
-      box-shadow: inset 0 -2px $osd_fg_color;
-    }
-
-    &:checked {
-      color: $osd_fg_color;
-      box-shadow: inset 0 -2px $selected_bg_color;
-    }
-
-    &:first-child {
-      border-right-width: 0;
-      border-radius: 0;
-    }
-
-    &:last-child {
-     border-radius: 0;
-    }
-  }
-
-  //Icon tile
-  .search-provider-icon,
-  .list-search-result {
-    @extend %icon_tile;
-    &:focus, &:selected, &:hover {
-      background-color: transparentize($osd_fg_color,.9);
-      transition-duration: 200ms;
-    }
-    &:active, &:checked { background-color: transparentize(darken($osd_bg_color,10%),.1); }
-  }
-  .app-well-app,
-  .app-well-app.app-folder,
-  .show-apps,
-  .grid-search-result {
-    & .overview-icon {
-      @extend %icon_tile;
-    }
-    &:hover .overview-icon,
-    &:focus .overview-icon,
-    &:selected .overview-icon {
-      background-color: transparentize($osd_fg_color,.9);
-      transition-duration: 0ms;
-      border-image: none;
-      background-image: none;
-    }
-    &:drop .overview-icon {
-      background-color: transparentize($selected_bg_color,.15);
-    }
-    &:active .overview-icon,
-    &:checked .overview-icon {
-      background-color: transparentize(darken($osd_bg_color,10%), 0.5);
-    }
-  }
-
-  .app-well-app-running-dot { //running apps indicator
-    width: 10px; height: 3px;
-    background-color: $selected_bg_color;
-    margin-bottom: 2px;
-  }
-
-  %icon_tile {
-    color: $osd_fg_color;
-    border-radius: $button_radius+4;
-    padding: 6px;
-    border: 1px solid transparent;
-    transition-duration: 100ms;
-    text-align: center;
-  }
-
-  .app-well-app.app-folder > .overview-icon {
-    background-color: transparentize($osd_bg_color,.6);
-  }
-
-  .show-apps:checked .show-apps-icon,
-  .show-apps:focus .show-apps-icon {
-    color: white;
-    transition-duration: 100ms;
-  }
-
-
-  // Collections
-  .app-folder-popup { //expanded collection
-    -arrow-border-radius: 8px;
-    -arrow-background-color: transparentize(darken($osd_bg_color,10%), 0.5);
-    -arrow-base: 24px;
-    -arrow-rise: 11px;
-  }
-  .app-folder-popup-bin { padding: 5px; }
-  .app-folder-icon {
-    padding: 5px;
-    spacing-rows: 5px;
-    spacing-columns: 5px;
-  }
-
-  .page-indicator {
-    padding: 7px 16px;
-
-    .page-indicator-icon {
-      width: 12px;
-      height: 12px;
-      background-color: white;
-      border-radius: 6px;
-    }
-  }
-
-  .no-frequent-applications-label { @extend %status_text; }
-
-  .app-well-app > .overview-icon.overview-icon-with-label,
-  .grid-search-result .overview-icon.overview-icon-with-label {
-    padding: 10px 8px 5px 8px;
-    spacing: 4px;
-  }
-
-  // Workspace pager
-  .workspace-thumbnails { //container ala dash
-    @extend %overview-panel;
-    visible-width: 32px; //amount visible before hover
-    spacing: 11px;
-    padding: 8px;
-    border-radius: 9px 0 0 9px;
-    //border-width: 1px 0 1px 1px; //fixme: can't have non unoform borders :(
-    &:rtl { border-radius: 0 9px 9px 0;}
-
-    .placeholder {
-      background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
-      background-size: contain;
-      height: 24px;
-    }
-  }
-  .workspace-thumbnail-indicator {
-    border: 2px solid $selected_bg_color;
-    padding: 1px;
-  }
-
-  //Some hacks I don't even
-  .all-apps,
-  .frequent-apps > StBoxLayout {
-    // horizontal padding to make sure scrollbars or dash don't overlap content
-    padding: 0px 88px 10px 88px;
-  }
-
-%overview-panel {
-  color: $osd_fg_color;
-  background-color: transparentize($osd_bg_color, 0.1);
-  border: none;
+// Stage
+stage {
+       @include fontsize($base_font_size);
+       color: $fg_color;
 }
 
+/* WIDGETS */
+@import 'widgets/app-grid';
+@import 'widgets/app-switcher';
+@import 'widgets/buttons';
+@import 'widgets/calendar';
+@import 'widgets/check-box';
+@import 'widgets/corner-ripple';
+@import 'widgets/dash';
+@import 'widgets/dialogs';
+@import 'widgets/end-session-dialog';
+@import 'widgets/entries';
+@import 'widgets/hotplug';
+@import 'widgets/ibus-popup';
+@import 'widgets/keyboard';
+@import 'widgets/login-dialog';
+@import 'widgets/looking-glass';
+@import 'widgets/message-list';
+@import 'widgets/notifications';
+@import 'widgets/misc';
+@import 'widgets/network-dialog';
+@import 'widgets/osd';
+@import 'widgets/overview';
+@import 'widgets/panel';
+@import 'widgets/popovers';
+@import 'widgets/screen-shield';
+@import 'widgets/scrollbars';
+@import 'widgets/search-entry';
+@import 'widgets/search-results';
+@import 'widgets/search-results';
+@import 'widgets/slider';
+@import 'widgets/switches';
+@import 'widgets/tiled-previews';
+@import 'widgets/window-picker';
+@import 'widgets/workspace-switcher';
+
+/* Common Stylings */
+
+// Text
 %status_text {
-  font-size: 2em;
-  font-weight: bold;
-  color: $osd_fg_color;
-}
-
-/* NOTIFICATIONS & MESSAGE TRAY */
-
-  .url-highlighter { link-color: lighten($selected_bg_color,10%); }
-
-  // Banners
-  .notification-banner {
-    font-size: 11pt;
-    width: 34em;
-    margin: 5px;
-    border-radius: $modal_radius;
-    border: if($variant == 'light', none, $_bubble_borders_color);
-    min-height: 64px;
-    box-shadow: 0 1px 2px transparentize(black, 0.7);
-    &:hover { background: $bg_color; }
-    &, &:focus, &:active {
-      background-color: $bg_color;
-      .message-title { color: $fg_color }
-      .message-content { color: $fg_color; }
-    }
-
-    .message-icon-bin > StIcon {
-      color: $fg_color;
-    }
-
-    StEntry { @extend %bubble-entry; }
-
-    .notification-icon { padding: 5px; }  
-    .notification-content { padding: 5px; spacing: 5px; }
-    .secondary-icon { icon-size: 1.09em; }
-    .notification-actions {
-      padding-top: 0;
-      color: $fg_color;
-      border-top: 1px solid $_bubble_borders_color;
-      spacing: 0px;
-    }
-    .notification-button {
-      @extend %bubble_button;
-      &:focus { box-shadow: none; }
-      padding: 0 16px;
-      min-height: 35px;
-      border: none;
-    }
-  }
-  .summary-source-counter {
-    font-size: 10pt;
-    font-weight: bold;
-    height: 1.6em; width: 1.6em;
-    -shell-counter-overlap-x: 3px;
-    -shell-counter-overlap-y: 3px;
-    background-color: $selected_bg_color;
-    color: $selected_fg_color;
-    border: 2px solid $fg_color;
-    box-shadow: 0 2px 2px rgba(0,0,0,0.5);
-    border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
-  }
-
-  .secondary-icon { icon-size: 1.09em; }
-
-  //chat bubbles
-  .chat-body { spacing: 5px; }
-  .chat-response { margin: 5px; }
-  .chat-log-message { color: darken($fg_color,10%); }
-  .chat-new-group { padding-top: 1em; }
-  .chat-received {
-    padding-left: 4px;
-    &:rtl { padding-left: 0px; padding-right: 4px; }
-  }
-  .chat-sent {
-    padding-left: 18pt;
-    color: lighten($fg_color, 15%);
-    &:rtl { padding-left: 0; padding-right: 18pt; }
-  }
-  .chat-meta-message {
-    padding-left: 4px;
-    font-size: 9pt;
-    font-weight: bold;
-    color: lighten($fg_color,18%);
-    &:rtl { padding-left: 0; padding-right: 4px; }
-  }
-
-  //hotplug
-  .hotplug-transient-box {
-    spacing: 6px;
-    padding: 2px 72px 2px 12px;
-  }
-    .hotplug-notification-item {
-      @extend %bubble_button;
-      border: none; box-shadow: none;
-      padding: 2px 10px;
-      &:focus { padding: 1px 71px 1px 11px; }
-    }
-
-    .hotplug-notification-item-icon {
-      icon-size: 24px;
-      padding: 2px 5px;
-    }
-
-    .hotplug-resident-box { spacing: 8px; }
-
-    .hotplug-resident-mount {
-      spacing: 8px;
-      border-radius: 4px;
-      &:hover { background-color: $_hover_bg_color; }
-    }
-
-    .hotplug-resident-mount-label {
-      color: inherit;
-      padding-left: 6px;
-    }
-
-    .hotplug-resident-mount-icon {
-      icon-size: 24px;
-      padding-left: 6px;
-    }
-
-    .hotplug-resident-eject-icon {
-      icon-size: 16px;
-    }
-
-    .hotplug-resident-eject-button {
-      padding: 7px;
-      border-radius: 5px;
-      color: pink;
-    }
-
-/* Eeeky things */
-
-//magnifier
-
-.magnifier-zoom-region {
-  border: 2px solid $selected_bg_color;
-  &.full-screen { border-width: 0; }
-}
-
-//Keyboard
-/* On-screen Keyboard */
-.word-suggestions {
-    font-size: 14pt;
-    spacing: 12px;
-    min-height: 20pt;
-}
-
-#keyboard {
-    background-color: transparentize($osd_bg_color, 0.3);
-
-    .page-indicator {
-        padding: 4px 4px;
-
-        .page-indicator-icon {
-            width: 8px;
-            height: 8px;
-        }
-    }
-}
-
-  .key-container {
-    padding: 4px;
-    spacing: 4px;
-  }
-
-  .keyboard-key {
-    $_key_bg: opacify(lighten($osd_bg_color, 9%), 1);
-    background-color: $_key_bg;
-    min-height: 1.2em;
-    min-width: 1.2em;
-    font-size: 16pt;
-    border-radius: $button_radius;
-    border: 1px solid $osd_outer_borders_color;
-    color: $osd_fg_color;
-    &:focus { @include button(focus); }
-    &:hover, &:checked { background-color: lighten($_key_bg, 3%); }
-    &:active { background-color: darken($_key_bg, 2%); }
-    &:grayed { //FIXME
-      background-color: $osd_bg_color;
-      color: $osd_fg_color;
-      border-color: $osd_borders_color;
-    }
-    &.default-key {
-      $_default_key_bg: opacify($osd_bg_color, 1);
-      border-color: $osd_outer_borders_color;
-      background-color: $_default_key_bg;
-      background-size: 20px;
-      &:hover, &:checked { background-color: lighten($_default_key_bg, 3%); }
-      &:active { background-color: darken($_default_key_bg, 2%); }
-    }
-    &.enter-key {
-      border-color: lighten($selected_bg_color, 5%);
-      background-color: $selected_bg_color;
-      background-image: url("resource:///org/gnome/shell/theme/key-enter.svg");
-      &:hover, &:checked { background-color: lighten($selected_bg_color, 3%); }
-      &:active { background-color: darken($selected_bg_color, 2%); }
-    }
-    &.shift-key-lowercase {
-      background-image: url("resource:///org/gnome/shell/theme/key-shift.svg");
-    }
-    &.shift-key-uppercase {
-      background-image: url("resource:///org/gnome/shell/theme/key-shift-uppercase.svg");
-    }
-    &.shift-key-uppercase:latched {
-      background-image: url("resource:///org/gnome/shell/theme/key-shift-latched-uppercase.svg");
-    }
-    &.hide-key {
-      background-image: url("resource:///org/gnome/shell/theme/key-hide.svg");
-    }
-    &.layout-key {
-      background-image: url("resource:///org/gnome/shell/theme/key-layout.svg");
-    }
-  }
-
-  .keyboard-subkeys { //long press on a key popup
-    color: white;
-    -arrow-border-radius: 10px;
-    -arrow-background-color: transparentize($osd_bg_color, 0.3);
-    -arrow-border-width: 2px;
-    -arrow-border-color: $osd_outer_borders_color;
-    -arrow-base: 20px;
-    -arrow-rise: 10px;
-    -boxpointer-gap: 5px;
-  }
-
-.emoji-page {
-  .keyboard-key {
-    background-color: transparent;
-    border: none;
-  }
-}
-
-.emoji-panel {
-  .keyboard-key:latched {
-    border-color: lighten($selected_bg_color, 5%);
-    background-color: $selected_bg_color;
-  }
-}
-
-// IBus Candidate Popup
-
-.candidate-popup-content {
-  padding: 0.5em;
-  spacing: 0.3em;
-}
-
-  .candidate-index {
-    padding: 0 0.5em 0 0;
-    color: darken($fg_color,10%);
-  }
-
-  .candidate-box {
-    padding: 0.3em 0.5em 0.3em 0.5em;
-    border-radius: 4px;
-    &:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
-  }
-
-  .candidate-page-button-box {
-    height: 2em;
-    .vertical & { padding-top: 0.5em; }
-    .horizontal & { padding-left: 0.5em; }
-  }
-
-  .candidate-page-button {
-    padding: 4px;
-  }
-
-  .candidate-page-button-previous { border-radius: 4px 0px 0px 4px; border-right-width: 0; }
-  .candidate-page-button-next { border-radius: 0px 4px 4px 0px;  }
-  .candidate-page-button-icon { icon-size: 1em; }
-
-/* Auth Dialogs & Screen Shield */
-
-.user-icon {
-  background-size: contain;
-  color: $osd_fg_color;
-  border-radius: 99px;
-  &:hover {
-    color: lighten($osd_fg_color,30%);
-  }
-}
-
-// LOGIN DIALOG
-
-.login-dialog-banner-view {
-  padding-top: 24px;
-  max-width: 23em;
-}
-
-.login-dialog {
-  //reset
-  border: none;
-  background-color: transparent;
-
-  $_gdm_fg: #f6f5f4;
-  $_gdm_bg: lighten(#2e3436, 19%);
-
-  StEntry {
-    @extend %search_entry;
-    border-radius: $button_radius;
-    @if $variant=='dark' {
-      $_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
-      background-color: $_gdm_entry_bg;
-      border-color: $_gdm_entry_bg;    
-      color: $osd_fg_color;
-    }
-  }
-
-  .modal-dialog-button-box { spacing: 3px; }
-  .modal-dialog-button {
-    padding: 4px 18px;
-    box-shadow: 0 1px 3px transparentize($shadow_color, 0.02);
-    background-color: $_gdm_bg;
-    border-color: $_gdm_bg;
-    color: $_gdm_fg;
-
-    $_hover_c: lighten($_gdm_bg, 5%);
-    &:hover, &:focus {
-      background-color: $_hover_c;
-      border-color: $_hover_c;
-    }
-    &:active {
-      $_active_c: darken($_gdm_bg, 5%);
-      box-shadow: none;
-      background-color: $_active_c;
-      border-color: $_active_c;
-    }
-    &:insensitive {
-      @include button(insensitive);
-      border-color: darken($_gdm_bg, 5%);
-      background-color: darken($_gdm_bg, 5%);
-      color: transparentize($_gdm_fg, 0.3);
-    }
-    &:default {
-      @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
-      border-color: $selected_bg_color;
-      &:hover, &:focus { 
-        @include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
-        $_def_hover_c: lighten($selected_bg_color, 5%);
-        background-color: $_def_hover_c;
-        border-color: $_def_hover_c;
-      }
-      &:active {
-        @include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
-        $_def_active_c: darken($selected_bg_color, 5%);
-        background-color: $_def_active_c;
-        border-color: $_def_active_c;
-      }
-      &:insensitive {
-        @include button(insensitive);
-        border-color: darken($selected_bg_color, 10%);
-        background-color: darken($selected_bg_color, 10%);
-        color: transparentize($selected_fg_color, 0.3);
-      }
-    }
-  }
-}
-
-  .login-dialog-logo-bin { padding: 24px 0px; }
-  .login-dialog-banner { color: darken($osd_fg_color,10%); }
-  .login-dialog-button-box { spacing: 5px; }
-  .login-dialog-message-warning { color: $warning_color; }
-  .login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
-  .login-dialog-user-selection-box { padding: 100px 0px; }
-  .login-dialog-not-listed-label {
-    padding-left: 2px;
-    .login-dialog-not-listed-button:focus &,
-    .login-dialog-not-listed-button:hover & {
-      color: $osd_fg_color;
-    }
-  }
-  .login-dialog-not-listed-label {
-    font-size: 90%;
-    font-weight: bold;
-    color: darken($osd_fg_color,30%);
-    padding-top: 1em;
-  }
-
-  .login-dialog-user-list-view { -st-vfade-offset: 1em; }
-  .login-dialog-user-list {
-    spacing: 12px;
-    width: 23em;
-    &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: 
$selected_fg_color; }
-    &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
-  }
-  .login-dialog-user-list-item {
-    border-radius: 5px;
-    padding: 6px;
-    color: darken($osd_fg_color,30%);
-    &:ltr .user-widget { padding-right: 1em; }
-    &:rtl .user-widget { padding-left: 1em; }
-    .login-dialog-timed-login-indicator {
-      height: 2px;
-      margin-top: 6px;
-      background-color: $osd_fg_color;
-    }
-    &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
-  }
-
-  .login-dialog-username,
-  .user-widget-label {
-    color: $osd_fg_color;
-    font-size: 120%;
-    font-weight: bold;
-    text-align: left;
-    padding-left: 15px;
-  }
-    .user-widget-label {
-      &:ltr { padding-left: 14px; }
-      &:rtl { padding-right: 14px; }
-    }
-
-  .login-dialog-prompt-layout {
-      padding-top: 24px;
-      padding-bottom: 12px;
-      spacing: 8px;
-      width: 23em;
-  }
-
-  .login-dialog-prompt-label {
-      color: darken($osd_fg_color, 20%);
-      font-size: 110%;
-      padding-top: 1em;
-  }
-
-  .login-dialog-session-list-button StIcon {
-      icon-size: 1.25em;
-  }
-
-  .login-dialog-session-list-button {
-      color: darken($osd_fg_color,30%);
-      &:hover,&:focus { color: $osd_fg_color; }
-      &:active { color: darken($osd_fg_color, 50%); }
-  }
-
-//SCREEN SHIELD
-
-$_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
-
-.screen-shield-arrows {
-    padding-bottom: 3em;
-}
-
-.screen-shield-arrows Gjs_Arrow {
-    color: white;
-    width: 80px;
-    height: 48px;
-    -arrow-thickness: 12px;
-    -arrow-shadow: $_screenshield_shadow;
-}
-
-.screen-shield-clock {
-  color: white;
-  text-shadow: $_screenshield_shadow;
-  font-weight: bold;
-  text-align: center;
-  padding-bottom: 1.5em;
-}
-
-.screen-shield-clock-time {
-  font-size: 72pt;
-  text-shadow: $_screenshield_shadow;
-  font-feature-settings: "tnum";
-}
-
-.screen-shield-clock-date { 
-  font-size: 28pt;
-  font-weight: normal;
-}
-
-.screen-shield-notifications-container {
-  spacing: 6px;
-  width: 30em;
-  background-color: transparent;
-  max-height: 500px;
-  .summary-notification-stack-scrollview {
-    padding-top: 0;
-    padding-bottom: 0;
-  }
-
-  .notification,
-  .screen-shield-notification-source {
-    padding: 12px 6px;
-    border: 1px solid $osd_outer_borders_color;
-    background-color: transparentize($osd_bg_color,0.5);
-    color: $osd_fg_color;
-    border-radius: 4px;
-  }
-  .notification { margin-right: 15px; } //compensate for space allocated to the scrollbar
-}
-
-
-.screen-shield-notification-label {
-  font-weight: bold;
-  padding: 0px 0px 0px 12px;
-}
-
-.screen-shield-notification-count-text { padding: 0px 0px 0px 12px; }
-
-#panel.lock-screen { background-color: transparentize($osd_bg_color, 0.5); }
-
-.screen-shield-background { //just the shadow, really
-  background: black;
-  box-shadow: 0px 2px 4px transparentize(black,0.6);
-}
-
-#lockDialogGroup {
-  background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/noise-texture.png);
-  background-repeat: repeat;
-}
-
-#screenShieldNotifications {
-  StButton#vhandle, StButton#hhandle {
-    background-color: transparentize($bg_color,0.7);
-    &:hover, &:focus { background-color: transparentize($bg_color,0.5); }
-    &:active { background-color: transparentize($selected_bg_color,0.5); }
-  }
-}
-
-
-// Looking Glass
-#LookingGlassDialog {
-  background-color: rgba(0,0,0,0.80);
-  spacing: 4px;
-  padding: 4px;
-  border: 2px solid grey;
-  border-radius: 4px;
-  & > #Toolbar {
-    border: 1px solid grey;
-    border-radius: 4px;
-  }
-  .labels { spacing: 4px; }
-  .notebook-tab {
-    -natural-hpadding: 12px;
-    -minimum-hpadding: 6px;
-    font-weight: bold;
-    color: #ccc;
-    transition-duration: 100ms;
-    padding-left: .3em;
-    padding-right: .3em;
-    &:hover {
-      color: white;
-      text-shadow: black 0px 2px 2px;
-    }
-    &:selected {
-      border-bottom-width: 2px;
-      border-color: lighten($selected_bg_color,5%);
-      color: white;
-      text-shadow: black 0px 2px 2px;
-    }
-  }
-  StBoxLayout#EvalBox { padding: 4px; spacing: 4px; }
-  StBoxLayout#ResultsArea { spacing: 4px; }
-}
-
-  .lg-dialog {
-    StEntry {
-      selection-background-color: #bbbbbb;
-      selected-color: #333333;
-    }
-    .shell-link {
-      color: #999999;
-      &:hover { color: #dddddd; }
-     }
-  }
-
-  .lg-completions-text {
-      font-size: .9em;
-      font-style: italic;
-  }
-
-  .lg-obj-inspector-title {
-      spacing: 4px;
-  }
-
-  .lg-obj-inspector-button {
-      border: 1px solid gray;
-      padding: 4px;
-      border-radius: 4px;
-      &:hover { border: 1px solid #ffffff; }
-  }
-
-  #lookingGlassExtensions { padding: 4px; }
-
-  .lg-extensions-list {
-      padding: 4px;
-      spacing: 6px;
-  }
-
-  .lg-extension {
-      border: 1px solid #6f6f6f;
-      border-radius: 4px;
-      padding: 4px;
-  }
-
-  .lg-extension-name {
-      font-weight: bold;
-  }
-
-  .lg-extension-meta {
-      spacing: 6px;
-  }
-
-  #LookingGlassPropertyInspector {
-    background: rgba(0, 0, 0, 0.8);
-    border: 2px solid grey;
-    border-radius: 4px;
-    padding: 6px;
-  }
+       font-size: 2em;
+       font-weight: bold;
+       color: $osd_fg_color;
+}
+
+
+// osd panels
+%osd_panel {
+       color: $osd_fg_color;
+       background-color: $osd_bg_color;
+       border: 1px solid $osd_outer_borders_color;
+       border-radius: $base_border_radius * 2 + 4px;
+       padding: $base_padding * 2;
+}
+
+// Overview panels 
+// for the dash and workspace switcher
+%overview_panel {
+       color: $osd_fg_color;
+       background-color: transparentize($osd_bg_color, 0.2);
+       border: 1px solid $osd_outer_borders_color;
+}
+
+// icon tiles
+%icon_tile {
+       background-color: transparent; // no background
+       color: $osd_fg_color;
+       border-radius: $base_border_radius + 4px;
+       padding: $base_padding;
+       border: 2px solid transparent;
+       transition-duration: 100ms;
+       text-align: center;
+}
+
+// dialogs
+%bubble_panel {
+       color: $fg_color;
+       background-color: $bg_color;
+       border: 1px solid if($variant=='light', rgba(0,0,0, 0.6), $borders_color);
+
+       // entry
+       StEntry { @extend %bubble_entry;}
+
+       // button
+       .button {
+               background-color: $bg_color;
+               color: $fg_color;
+               box-shadow: none;
+
+               &, &:hover, &:focus, &:active, &:disabled { 
+                       border-color: $bubble_borders_color;
+               }
+
+               &:hover { background-color: $hover_bg_color;}
+               &:active { 
+                       background-color: $selected_bg_color;
+                       color: $selected_fg_color;
+               }
+               &:disabled { color: $insensitive_fg_color;}
+       }
+}
+
+// entries in dialogs
+%bubble_entry {
+       color: $fg_color;
+       background-color: darken($bg_color, 2%);
+       border-color: $bubble_borders_color;
+       box-shadow: none;
+       &:focus { border: 2px solid $selected_bg_color;}
+}
+
+// buttons in dialogs
+%bubble_button {
+       @include button(normal);
+       padding: $base_padding * 2;
+       border-color: $bubble_borders_color;
+       border-style: solid;
+       border-width: 0 !important;
+       border-top-width: 1px !important;
+       box-shadow:none !important;
+
+       &:insensitive { @include button(insensitive);}
+       &:hover { @include button(hover);}
+       &:focus { @include button(focus);}
+       &:active { @include button(active);}
+
+       // radius is 2 pixel less to fit in bubble
+       &:first-child {
+               border-right-width: 1px !important;
+               border-radius: 0px 0px 0px $modal_radius - 2px;
+       }
+       &:last-child {
+               border-right-width: 0 !important;
+               border-radius: 0px 0px $modal_radius - 2px 0px;
+       }
+       
+       &:first-child:last-child {
+               border-radius: 0px 0px $modal_radius - 2px $modal_radius - 2px;
+       }
+}
+
+// button styling
+%button {
+       border-radius: $base_border_radius;
+       border-width: 1px;
+       min-height: 22px;
+       padding: $base_padding * 0.5 $base_padding * 4;
+
+       @include button(normal);
+       &:focus { @include button(focus);}
+       &:hover { @include button(hover);}
+       &:insensitive { @include button(insensitive);}
+       &:active { @include button(active);}
+}
+
+
+// notification styling
+%notification_bubble {
+       border-radius:$base_border_radius + 2px;
+       padding: 0;
+       margin: $base_margin;
+
+       @include button(normal);
+
+       &:focus,
+       &:hover {
+               // margin-top: $base_margin - 1px;
+               // margin-bottom: $base_margin + 1px;
+               @include button(hover);
+       }
+
+       &:active {
+               @include button(active);
+               // margin: $base_margin;
+       }
+}
\ No newline at end of file
diff --git a/_drawing.scss b/_drawing.scss
index 8f4611c..b767528 100644
--- a/_drawing.scss
+++ b/_drawing.scss
@@ -2,25 +2,25 @@
 
 // generic drawing of more complex things
 
-@function _widget_edge($c:$borders_edge) {
+@function draw_widget_edge($c:$borders_edge) {
 // outer highlight "used" on most widgets
-  @return 0 1px $c;
+       @return 0 1px $c;
 }
 
 // provide font size in rem, with px fallback
 @mixin fontsize($size: 24, $base: 16) {
-  font-size: round($size) + pt;
-  //font-size: ($size / $base) * 1rem;
+       font-size: round($size) + pt;
+       //font-size: ($size / $base) * 1rem;
 }
 
-@mixin _shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
+@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
 //
 // Helper function to stack up to 4 box-shadows;
 //
-  @if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
-  @else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
-  @else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
-  @else { box-shadow: $shadow1; }
+       @if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
+       @else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
+       @else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
+       @else { box-shadow: $shadow1; }
 }
 
 // entries
@@ -31,63 +31,65 @@
 //
 // $t: entry type
 // $fc: focus color
-// $edge: set to none to not draw the bottom edge or specify a color to not
-//        use the default one
+// $edge: set to none to not draw the bottom edge or specify a color to not use the default one
 //
 // possible $t values:
 // normal, focus, insensitive
 //
 
-  @if $t==normal {
-    background-color: $base_color;
-    border-color: $borders_color;
-
-  }
-  @if $t==focus {
-    border-color: if($fc==$selected_bg_color,
-                     $selected_borders_color,
-                     darken($fc,35%));
-  }
-  @if $t==hover { }
-  @if $t==insensitive {
-    color: $insensitive_fg_color;
-    border-color: $insensitive_bg_color;
-    box-shadow: none;
-  }
+       @if $t==normal {
+               background-color: $base_color;
+               border-color: $borders_color;
+
+       }
+       @if $t==focus {
+               border-color: if($fc==$selected_bg_color,
+                                                       $selected_borders_color,
+                                                       darken($fc,35%));
+       }
+       @if $t==hover { }
+       @if $t==insensitive {
+               color: $insensitive_fg_color;
+               border-color: $insensitive_bg_color;
+               box-shadow: none;
+       }
 }
 
 // buttons
 
-@function _border_color ($c) { @return darken($c,25%); } // colored buttons want
-                                                         // the border form the
-                                                         // base color
+@function draw_border_color ($c) {
+       //
+       // colored buttons want the border form the base color
+       //
+       @return if($variant == 'light', darken($c, 18%), darken($c, 4%));
+}
 
-@function _text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
+@function draw_text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
 //
 // calculate the color of text shadows
 //
 // $tc is the text color
 // $bg is the background color
 //
-  $_lbg: lightness($bg)/100%;
-  @if lightness($tc)<50% { @return transparentize(white,1-$_lbg/($_lbg*1.3)); }
-  @else { @return transparentize(black,$_lbg*0.8); }
+       $lbg: lightness($bg)/100%;
+       @if lightness($tc)<50% { @return rgba(255,255,255,$lbg/($lbg*1.3)); }
+       @else { @return rgba(0,0,0,1-$lbg*0.8); }
 }
 
-@function _button_hilight_color($c) {
+@function draw_button_hilight_color($c) {
 //
 // calculate the right top hilight color for buttons
 //
 // $c: base color;
 //
-  @if lightness($c)>90% { @return white; }
-  @else if lightness($c)>80% { @return transparentize(white, 0.3); }
-  @else if lightness($c)>50% { @return transparentize(white, 0.5); }
-  @else if lightness($c)>40% { @return transparentize(white, 0.7); }
-  @else { @return transparentize(white, 0.9); }
+       @if lightness($c)>90% { @return white; }
+       @else if lightness($c)>80% { @return rgba(255,255,255, 0.7); }
+       @else if lightness($c)>50% { @return rgba(255,255,255, 0.5); }
+       @else if lightness($c)>40% { @return rgba(255,255,255, 0.3); }
+       @else { @return rgba(255,255,255, 0.1); }
 }
 
-@mixin _button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
+@mixin draw_button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
 //
 // helper function for the text emboss effect
 //
@@ -96,16 +98,16 @@
 // TODO: this functions needs a way to deal with special cases
 //
 
-  $_shadow: _text_shadow_color($tc, $bg);
+       $shadow: draw_text_shadow_color($tc, $bg);
 
-  @if lightness($tc)<50% {
-    text-shadow: 0 1px $_shadow;
-    icon-shadow: 0 1px $_shadow;
-  }
-  @else {
-    text-shadow: 0 -1px $_shadow;
-    icon-shadow: 0 -1px $_shadow;
-  }
+       @if lightness($tc)<50% {
+               text-shadow: 0 1px $shadow;
+               icon-shadow: 0 1px $shadow;
+       }
+       @else {
+               text-shadow: 0 -1px $shadow;
+               icon-shadow: 0 -1px $shadow;
+       }
 }
 
 @mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge) {
@@ -124,79 +126,75 @@
 // osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
 //
 
-  $_hilight_color: _button_hilight_color($c);
-  $_button_edge: if($edge == none, none, _widget_edge($edge));
-  $_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
-  $_button_shadow: 0 1px 2px transparentize($shadow_color, 0.03);
-
-  @if $t==normal {
-  //
-  // normal button
-  //
-
-    color: $tc;
-    background-color: $c;
-    border-color: $borders_color;
-    box-shadow: $_button_shadow;
-    text-shadow: 0 1px black;
-    icon-shadow: 0 1px black;
-  }
-  @if $t==focus {
-  //
-  // focused button
-  //  
-    color: $tc;
-    text-shadow: 0 1px black;
-    icon-shadow: 0 1px black;
-    box-shadow: inset 0px 0px 0px 2px $selected_bg_color;
-    //border-color: $selected_bg_color;
-  }
-
-  @else if $t==hover {
-  //
-  // active osd button
-  //
-    color: $tc;
-    border-color: $borders_color;
-    background-color: $c;
-    box-shadow: $_button_shadow;
-    text-shadow: 0 1px black;
-    icon-shadow: 0 1px black;
-
-  }
-  @else if $t==active {
-  //
-  // active osd button
-  //
-    color: $tc;
-    border-color: $borders_color;
-    background-color: $c;
-    text-shadow: none;
-    icon-shadow: none;
-    box-shadow: none;
-  }
-  @else if $t==insensitive {
-
-    color: $insensitive_fg_color;
-    border-color: $insensitive_borders_color;
-    background-color: $insensitive_bg_color;
-    box-shadow: none;
-    text-shadow: none;
-    icon-shadow: none;
-  }
-  @else if $t==undecorated {
-  //
-  // reset
-  //
-    border-color: transparent;
-    background-color: transparent;
-    background-image: none;
-
-    @include _shadows(inset 0 1px transparentize(white,1),
-                      $_blank_edge);
-
-    text-shadow: none;
-    icon-shadow: none;
-  }
-}
-
+       $hilight_color: draw_button_hilight_color($c);
+       $button_edge: if($edge == none, none, draw_widget_edge($edge));
+       $blank_edge: if($edge == none, none, draw_widget_edge(transparentize($edge,1)));
+
+       // normal button
+       @if $t==normal {
+               color: $tc;
+               background-color: lighten($c, 3%) !important;
+               border-width: 1px;
+               border-style: solid;
+               border-color: draw_border_color($c);
+               @include draw_shadows(0 1px 1px 0 $shadow_color);
+               // box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
+               text-shadow: 0 1px $text_shadow_color;
+               icon-shadow: 0 1px $text_shadow_color;
+       }
+
+       // focused button
+       @if $t==focus {
+               color: $tc;
+               text-shadow: 0 1px $text_shadow_color;
+               icon-shadow: 0 1px $text_shadow_color;
+               box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.7);
+               //border-color: $selected_bg_color;
+       }
+
+       // hover osd button
+       @else if $t==hover {
+               color: $tc;
+               background-color: lighten($c, if($variant == 'light', 8%, 5%)) !important;
+               border-width: 1px;
+               border-style: solid;
+               border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), 
draw_border_color($c));
+               @include draw_shadows(0 1px 1px 0 $shadow_color);
+               text-shadow: 0 1px $text_shadow_color;
+               icon-shadow: 0 1px $text_shadow_color;
+       }
+
+       // active osd button
+       @else if $t==active {
+               color: $tc;
+               background-color: darken($c,3%) !important;
+               border-width: 1px;
+               border-style: solid;
+               border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
+               text-shadow: none;
+               icon-shadow: none;
+               box-shadow: none;
+       }
+
+       // insensitive button
+       @else if $t==insensitive {
+               color: $insensitive_fg_color;
+               border-width: 1px;
+               border-style: solid;
+               border-color: $insensitive_borders_color;
+               background-color: $insensitive_bg_color !important;
+               box-shadow: none;
+               text-shadow: none;
+               icon-shadow: none;
+       }
+
+       // reset
+       @else if $t==undecorated {
+               border-color: transparent;
+               background-color: transparent;
+               background-image: none;
+               @include draw_shadows(inset 0 1px rgba(255,255,255,0),$blank_edge);
+               text-shadow: none;
+               icon-shadow: none;
+       }
+}
\ No newline at end of file
diff --git a/_high-contrast-colors.scss b/_high-contrast-colors.scss
index cba0145..7101793 100644
--- a/_high-contrast-colors.scss
+++ b/_high-contrast-colors.scss
@@ -22,11 +22,10 @@ $destructive_color: darken(#ef2929,10%);
 
 $osd_fg_color: #eeeeec;
 $osd_bg_color: #2e3436;
-$osd_borders_color: transparentize(black, 0.3);
-$osd_outer_borders_color: transparentize(white, 0.9);
+$osd_borders_color: rgba(0,0,0, 0.7);
+$osd_outer_borders_color: rgba(255,255,255, 0.1);
 
-$tooltip_borders_color: $osd_outer_borders_color;
-$shadow_color: transparentize(black, 0.9);
+$shadow_color: rgba(0,0,0, 0.1);
 
 //insensitive state derived colors
 $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
diff --git a/widgets/_app-grid.scss b/widgets/_app-grid.scss
new file mode 100644
index 0000000..4576f8d
--- /dev/null
+++ b/widgets/_app-grid.scss
@@ -0,0 +1,209 @@
+/* App Grid */
+
+$app_icon_size: 96px;
+$app_icon_padding: 20px;
+
+// app icons
+.icon-grid {
+       spacing: 30px;
+       -shell-grid-horizontal-item-size: $app_icon_size + $app_icon_padding * 2;
+       -shell-grid-vertical-item-size: $app_icon_size + $app_icon_padding * 2;
+
+       .overview-icon {
+               icon-size: $app_icon_size;
+       }
+}
+
+//.app-display { spacing: 20px; }
+
+/* App Icons */
+
+$app_grid_fg_color: #fff;
+
+// Outline for low res icons
+.lowres-icon {
+       icon-shadow: 0 1px 2px rgba(0,0,0,0.3);
+}
+
+// Dropshadow for large icons
+.icon-dropshadow {
+       icon-shadow: 0 1px 2px rgba(0,0,0,0.4);
+}
+
+// Icon tiles in the app grid
+.app-well-app,
+.app-folder {
+
+       .overview-icon {
+               @extend %icon_tile;
+               color: $app_grid_fg_color !important;
+       }
+
+       &:hover,
+       &:selected {
+               .overview-icon {
+                       background-color: transparentize($osd_bg_color,0.7);
+                       color: $app_grid_fg_color;
+               }
+       }
+
+       &:hover .overview-icon,
+       &:focus .overview-icon,
+       &:selected .overview-icon {
+               background-color: transparentize($osd_fg_color,0.9);
+               color: $osd_fg_color;
+       }
+
+       &:focus {
+               .overview-icon {
+                       background-color: transparentize($osd_fg_color,0.7      );
+                       // border-color: $selected_bg_color;
+                       color: $app_grid_fg_color;
+               }
+       }
+
+       &:drop {
+               .overview-icon {
+                       background-color: transparentize($selected_bg_color,.15);
+               }
+       }
+
+       &:active,
+       &:checked {
+               .overview-icon {
+                       background-color: transparentize(darken($osd_bg_color,10%), 0.5);
+               }
+       }
+}
+
+/* App Folders */
+.app-folder {
+       .overview-icon {
+               @extend %icon_tile;
+       }
+}
+
+//expanded folder
+.app-folder-popup {
+       -arrow-border-radius: 8px;
+       -arrow-background-color: transparentize(darken($osd_bg_color,10%), 0.5);
+       -arrow-base: 24px;
+       -arrow-rise: 11px;
+}
+
+.app-folder-popup-bin { padding: 5px; }
+.app-folder-icon {
+       padding: $base_padding;
+       spacing-rows: $base_spacing;
+       spacing-columns: $base_spacing;
+}
+
+
+// Running app indicator (also shown in dash)
+.app-well-app-running-dot {
+       height: 5px;
+       width: 5px;
+       border-radius:5px;
+       background-color: $osd_fg_color;
+       margin-bottom: 1px;
+}
+
+// Rename popup for app folders
+.rename-folder-popup {
+       .rename-folder-popup-item {
+               spacing: $base_spacing;
+               &:ltr, &:rtl { padding: 0, $base_padding * 2; }
+       }
+}
+
+// right-click app menu
+.app-menu,
+.app-well-menu {
+       max-width: 27.25em;
+}
+
+// App Grid pagination indicators
+.page-indicator {
+       padding: 15px 20px;
+
+       .page-indicator-icon {
+               width: 12px;
+               height: 12px;
+               background-color: transparent;
+               border: 2px solid rgba(255, 255, 255, 0.4);
+               border-radius: 12px;
+       }
+
+       &:hover .page-indicator-icon { border-color: white; }
+       &:active .page-indicator-icon { border: none; margin: 2px; background-color: white; }
+       &:checked .page-indicator-icon,
+       &:checked:active .page-indicator-icon { background-color: white;}
+}
+
+
+// Some hacks I don't even know
+.all-apps,
+.frequent-apps > StBoxLayout {
+       // horizontal padding to make sure scrollbars or dash don't overlap content
+       padding: 0px 88px 10px 88px;
+}
+
+.app-well-app > .overview-icon.overview-icon-with-label {
+       padding: 10px 8px 5px 8px;
+       spacing: $base_spacing;
+}
+
+// Label when no frequent apps
+.no-frequent-applications-label { @extend %status_text; }
+
+// shutdown and other actions in the grid
+.system-action-icon {
+       background-color: rgba(0,0,0,0.8);
+       color: #fff;
+       border-radius: 50%;
+       icon-size: $app_icon_size * 0.5;
+}
+
+/* Frequent | All toggle */
+
+// container
+.app-view-controls { 
+       padding-bottom: 32px;
+}
+
+// buttons
+.app-view-control { 
+       padding: 4px 32px;
+       margin: 0;
+       background-color: transparentize($osd_bg_color, 0.5);
+       border-width: 1px;
+       color: darken($osd_fg_color, 25%);
+
+       &:hover {
+               background-color: transparentize($osd_bg_color, 0.5) !important;
+               box-shadow:none !important;
+               color: darken($osd_fg_color, 25%);
+       }
+
+       &:active {
+               box-shadow: inset 0 -2px 0 0 $osd_fg_color;
+               background-color: transparentize($selected_bg_color, 0.5) !important;
+               font-weight: bold;
+       }
+
+       &:checked {
+               background-color: transparentize(lighten($osd_bg_color, 20%), 0.5);
+               color: $osd_fg_color;
+               box-shadow: none;
+               font-weight: bold;
+       }
+
+       &:first-child {
+               border-right-width: 0 !important;
+               border-radius: $base_border_radius 0 0 $base_border_radius;
+       }
+
+       &:last-child {
+               border-radius: 0 $base_border_radius $base_border_radius 0;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_app-switcher.scss b/widgets/_app-switcher.scss
new file mode 100644
index 0000000..7fbc9da
--- /dev/null
+++ b/widgets/_app-switcher.scss
@@ -0,0 +1,55 @@
+/* App Switcher */
+
+.switcher-popup {
+       padding: 8px;
+       spacing: $base_spacing * 4;
+}
+
+// switcher onscreen panel
+.switcher-list {
+       @extend %osd_panel;
+
+       .item-box {
+               padding: 8px;
+               border-radius: $base_border_radius + 1px;
+               border: 1px solid transparent;
+
+               &:outlined {
+                       border: 1px solid darken($borders_color,5%);
+                       background-color: transparentize($osd_fg_color, 0.9);
+                       box-shadow: inset 0 2px 2px 0 rgba(0,0,0,0.4);
+               }
+
+               &:selected {
+                       background-color: transparentize($osd_fg_color, 0.9);
+                       color: $osd_fg_color;
+               }
+       }
+
+       // window thumbnails
+       .thumbnail-box {
+               padding: 2px;
+               spacing: $base_spacing;
+       }
+
+       .thumbnail {
+               width: 256px;
+       }
+
+       .separator {
+               width: 1px;
+               background: $borders_color;
+       }
+
+       .switcher-list-item-container {
+               spacing: $base_spacing * 2;
+       }
+}
+
+.switcher-arrow {
+       border-color: rgba(0,0,0,0);
+       color: transparentize($fg_color,0.2);
+       &:highlighted {
+               color: $fg_color;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_buttons.scss b/widgets/_buttons.scss
new file mode 100644
index 0000000..25d3471
--- /dev/null
+++ b/widgets/_buttons.scss
@@ -0,0 +1,5 @@
+/* Buttons */
+
+.button {
+       @extend %button; // that's it
+}
diff --git a/widgets/_calendar.scss b/widgets/_calendar.scss
new file mode 100644
index 0000000..6e86490
--- /dev/null
+++ b/widgets/_calendar.scss
@@ -0,0 +1,268 @@
+/* Date/Time Menu */
+
+// overall menu
+#calendarArea {
+       padding:0;
+       margin:0;
+}
+
+// Calendar menu side column
+.datemenu-calendar-column {
+       spacing: 0;
+       border: 0 solid $bubble_borders_color;
+       padding: $base_padding + $base_margin;
+       padding-bottom: 3em; // account for the notifications clear button
+       padding-top:0;
+
+       &:ltr { border-left-width: 1px; }
+       &:rtl { border-right-width: 1px; }
+
+
+       // today button (the date)
+       .datemenu-today-button {
+               padding: $base_padding * 1.5;
+               margin: $base_margin;
+               border: 1px solid transparent;
+
+               &:focus,
+               &:hover {
+                       border-radius:$base_border_radius + 2px;
+                       margin-top: $base_margin - 1px;
+                       margin-bottom: $base_margin + 1px;
+               }
+
+               &:hover { @include button(hover);}
+               &:focus { @include button(focus);}
+
+               &:active { 
+                       @include button(active);
+                       margin: $base_margin;
+               }
+
+               // weekday label
+               .day-label {
+                       font-size: $base_font_size + 1pt;
+                       font-weight: bold;
+               }
+
+               // date label
+               .date-label {
+                       font-size: $base_font_size * 1.5;
+                       font-weight: 1000;
+               }
+       }
+
+       // calendar
+       .calendar {
+               @extend %notification_bubble;
+               margin:$base_margin !important;
+               margin-bottom: $base_padding + $base_margin !important;
+               padding:$base_padding !important;
+
+               // more below for sub-elements
+       }
+
+       .datemenu-displays-section {
+               margin:0;
+       }
+
+       .datemenu-displays-box {
+               spacing: $base_spacing;
+               margin:0;
+
+               // world clocks and weather
+               .world-clocks-button,
+               .weather-button {
+                       @extend %notification_bubble;
+                       padding:$base_padding !important;
+               }
+       }
+}
+
+.events-section-title {
+       color: desaturate(darken($fg_color,40%), 10%);
+       font-weight: bold;
+       border-radius: 4px;
+       padding: .4em;
+}
+
+/* Calendar */
+.calendar {
+
+       // month
+       .calendar-month-label {
+               color: lighten($fg_color,5%);
+               font-weight: bold;
+               padding: 8px 0;
+               &:focus {}
+       }
+
+       // prev/next month icons
+       .calendar-change-month-back StIcon,
+       .calendar-change-month-forward StIcon {
+               icon-size: $base_icon_size;
+       }
+
+       .pager-button {
+               background-color: transparent;
+               height: 32px;
+               width: 32px;
+               border-radius: $base_border_radius;
+               &:hover, &:focus { background-color: lighten($hover_bg_color, 5%); }
+               &:active { background-color: $active_bg_color; }
+       }
+
+
+       $calendar_day_size: 32px;
+
+       .calendar-day-base {
+               font-size: 80%;
+               text-align: center;
+               width: $calendar_day_size;
+               height: $calendar_day_size;
+               padding: 0;
+               margin: 2px;
+               border-radius: $calendar_day_size * 0.5 + 2px;
+               border: 1px solid transparent; //avoid jumparound due to today
+               font-feature-settings: "tnum";
+               &:hover, &:focus { background-color: $hover_bg_color; }
+               &:active,&:selected {
+                       color: lighten($fg_color,10%);
+                       background-color: darken($bg_color,5%);
+               }
+
+               // day of week heading
+               &.calendar-day-heading {
+                       color: lighten($fg_color,10%);
+                       margin-top: 1em;
+                       font-size: 70%;
+               }
+       }
+       .calendar-day { //border collapse hack - see calendar.js
+               border-width: 0;
+       }
+
+       .calendar-day-top {
+               border-top-width: 1px;
+       }
+
+       .calendar-day-left { border-left-width: 1px; }
+       .calendar-work-day {}
+       .calendar-nonwork-day {
+               color: $insensitive_fg_color;
+       }
+
+       // Today
+       .calendar-today {
+               font-weight: bold;
+               border: 1px solid transparent;
+               background-color: $selected_bg_color;
+               color: $selected_fg_color;
+
+               &:hover,&:focus {
+                       background-color:lighten($selected_bg_color, 3%);
+                       color: $selected_fg_color;
+               }
+
+               &:active,&:selected {
+                       background-color: $selected_bg_color;
+                       color: $selected_fg_color;
+                       &:hover,&:focus {
+                               background-color:lighten($selected_bg_color, 3%);
+                               color: $selected_fg_color;
+                       }
+               }
+
+       }
+       .calendar-day-with-events {
+               color: lighten($fg_color,10%);
+               font-weight: bold;
+               background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
+       }
+
+       .calendar-other-month-day {
+               color: transparentize($fg_color ,0.5);
+               opacity: 0.5;
+       }
+
+       .calendar-week-number {
+               font-size: 70%;
+               font-weight: bold;
+               height: 1.8em;
+               width: 2.3em; 
+               border-radius: 2px;
+               padding: 0.5em 0 0;
+               margin: 6px;
+               background-color: darken($bg_color, 2%);
+               color: lighten($fg_color, 5%);
+       }
+}
+
+
+/* Weather */
+.weather-box {
+       spacing: $base_spacing;
+       padding:$base_padding;
+
+       .weather-header {
+               color: desaturate(darken($fg_color,40%), 10%);
+               font-weight: bold;
+               &.location {
+                       font-weight: normal;
+                       font-size: $base_font_size - 1pt;
+               }
+       }
+
+       .weather-grid {
+               margin-top: $base_margin;
+               spacing-rows: $base_spacing;
+               spacing-columns: $base_spacing * 2;
+       }
+
+       .weather-forecast-icon {
+               icon-size: $base_icon_size * 2;
+       }
+
+       .weather-forecast-time {
+               color: darken($fg_color,30%);
+               font-feature-settings: "tnum";
+               font-size: $base_font_size - 2pt;
+               font-weight: normal;
+       }
+}
+
+/* World clocks */
+.world-clocks-grid {
+       padding:$base_padding;
+       spacing-rows: $base_spacing;
+       spacing-columns: $base_spacing * 2;
+
+       // title
+       .world-clocks-header {
+               color: desaturate(darken($fg_color,40%), 10%);
+               font-weight: bold;
+       }
+
+       // city label
+       .world-clocks-city {
+               color: $fg_color;
+               font-size: $base_font_size;
+               font-weight: normal;
+       }
+
+       // timezone time
+       .world-clocks-time {
+               font-weight: bold;
+               color: $fg_color;
+               font-feature-settings: "lnum";
+               font-size: $base_font_size;
+               text-align:right;
+       }
+
+       // timezone offset label
+       .world-clocks-timezone {
+               color: darken($fg_color,20%);
+               font-feature-settings: "tnum";
+               font-size: $base_font_size - 1pt;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_check-box.scss b/widgets/_check-box.scss
new file mode 100644
index 0000000..a5b4b78
--- /dev/null
+++ b/widgets/_check-box.scss
@@ -0,0 +1,18 @@
+/* Check Boxes */
+
+// these are equal to the size of the SVG assets
+$check_height: 22px;
+$check_width: 24px;
+
+
+.check-box {
+       StBoxLayout { spacing: .8em; }
+       StBin {
+               width: $check_width;
+               height: $check_height;
+               background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
+       }
+       &:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
+       &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
+       &:focus:checked StBin { background-image: 
url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
+}
\ No newline at end of file
diff --git a/widgets/_corner-ripple.scss b/widgets/_corner-ripple.scss
new file mode 100644
index 0000000..4321a3f
--- /dev/null
+++ b/widgets/_corner-ripple.scss
@@ -0,0 +1,24 @@
+/* Activities Ripple */
+
+$ripple_size: 50px;
+
+.ripple-box {
+       background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+       box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
+       // plus + 2px for the border (box-shadow)
+       width: $ripple_size + 2px;
+       height: $ripple_size + 2px;
+       border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
+
+       // just a simple change to the border radius position
+       &:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
+}
+
+// Pointer location
+.ripple-pointer-location {
+       width: $ripple_size;
+       height: $ripple_size;
+       border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
+       background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
+       box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
+}
diff --git a/widgets/_dash.scss b/widgets/_dash.scss
new file mode 100644
index 0000000..354e98c
--- /dev/null
+++ b/widgets/_dash.scss
@@ -0,0 +1,84 @@
+/* Dash */
+
+$dash_placeholder_size: 32px;
+$dash_border_radius: $modal_radius * 1.5;
+
+#dash {
+       @extend %overview_panel;
+       font-size: $base_font_size - 2pt;
+       padding: 0;
+       padding-bottom: $base_padding + 4px;
+
+       //fixme: can't have non uniform borders :(
+       border-radius: 0 $dash_border_radius $dash_border_radius 0; 
+       border-left-width: 0 !important;
+       &:rtl { 
+               border-radius: $dash_border_radius 0 0 $dash_border_radius;
+               border-right-width: 0 !important;
+       }
+
+       .placeholder {
+               // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
+               background-image:none;
+               background-size: contain;
+               height: $dash_placeholder_size;
+       }
+
+       .empty-dash-drop-target {
+               width: $dash_placeholder_size;
+               height: $dash_placeholder_size;
+       }
+}
+
+// Dash Items
+.dash-item-container > StWidget {
+       padding: $base_padding + 4px;
+       padding-bottom: 0;
+}
+
+// OSD Tooltip
+.dash-label {
+       background-color: transparentize($osd_bg_color,0.05);
+       border-radius: $base_border_radius + 2px;
+       border:none;
+       box-shadow:0 0 0 1px $osd_outer_borders_color;
+       color: $osd_fg_color;
+       padding: $base_padding $base_padding + 2px;
+       text-align: center;
+       margin-top: $base_margin + 4px;
+       -x-offset: $base_margin * 2; // distance from the dash edge
+}
+
+// Show apps button
+.show-apps {
+       background-color: transparent;
+       color: $osd_fg_color;
+
+       & .overview-icon {
+               @extend %icon_tile;
+               color: $osd_fg_color;
+       }
+
+       &:hover .overview-icon,
+       &:focus .overview-icon,
+       &:selected .overview-icon {
+               background-color: transparentize($osd_fg_color,0.9);
+               color: $osd_fg_color;
+       }
+
+       &:drop .overview-icon {
+               background-color: transparentize($selected_bg_color,.15);
+       }
+
+       &:active .overview-icon,
+       &:checked .overview-icon {
+               background-color: darken($osd_bg_color,10%);
+       }
+
+       &:checked .show-apps-icon,
+       &:focus .show-apps-icon {
+               color: $fg_color;
+               transition-duration: 100ms;
+       }
+}
+
diff --git a/widgets/_dialogs.scss b/widgets/_dialogs.scss
new file mode 100644
index 0000000..0c8591c
--- /dev/null
+++ b/widgets/_dialogs.scss
@@ -0,0 +1,280 @@
+/* Modal Dialogs */
+
+.modal-dialog {
+       border-radius: $modal_radius;
+       @extend %bubble_panel;
+
+       .modal-dialog-content-box {
+               padding: 24px;
+       }
+
+       .run-dialog-entry { width: 20em; margin-bottom: 6px; }
+       .run-dialog-error-box {
+               padding-top: 16px;
+               spacing: 6px;
+       }
+
+       .run-dialog-button-box { padding-top: 1em; }
+       .run-dialog-label {
+               @include fontsize($base_font_size + 1.1);
+               font-weight: normal;
+               color: $fg_color;
+               padding-bottom: .4em;
+       }
+}
+
+.mount-dialog-subject,
+.end-session-dialog-subject { //this should be a generic header class
+       @include fontsize($base_font_size * 1.3);
+}
+
+.modal-dialog-linked-button {
+       @extend %bubble_button;
+}
+
+/* Message Dialog */
+.message-dialog-main-layout {
+       padding: 12px 20px 0;
+       spacing: 12px;
+}
+
+.message-dialog-content {
+       max-width: 28em;
+       spacing: 20px;
+}
+
+.message-dialog-icon {
+       min-width: $base_icon_size * 3;
+       icon-size: $base_icon_size * 3;
+}
+
+.message-dialog-title {
+       font-weight: bold;
+}
+
+.message-dialog-subtitle {
+       color: $fg_color;
+       font-weight: bold;
+}
+
+/* ShellMountOperation Dialogs */
+.shell-mount-operation-icon {
+       icon-size: $base_icon_size * 3;
+}
+
+.mount-dialog {
+       spacing: 24px;
+
+       .message-dialog-title {
+               padding-top: 10px;
+               padding-left: 17px;
+               padding-bottom: 6px;
+               max-width: 34em;
+       }
+
+       .message-dialog-title:rtl {
+               padding-left: 0px;
+               padding-right: 17px;
+       }
+
+       .message-dialog-body {
+               padding-left: 17px;
+               width: 28em;
+       }
+
+       .message-dialog-body:rtl {
+               padding-left: 0px;
+               padding-right: 17px;
+       }
+}
+
+.mount-dialog-app-list {
+       max-height: 200px;
+       padding-top: 24px;
+       padding-left: 49px;
+       padding-right: 32px;
+}
+
+.mount-dialog-app-list:rtl {
+       padding-right: 49px;
+       padding-left: 32px;
+}
+
+.mount-dialog-app-list-item {
+       color: lighten($fg_color,10%);
+       &:hover { color: $fg_color; }
+       &:ltr { padding-right: 1em; }
+       &:rtl { padding-left: 1em; }
+}
+
+.mount-dialog-app-list-item-icon {
+       &:ltr { padding-right: 17px; }
+       &:rtl { padding-left: 17px; }
+}
+
+.mount-dialog-app-list-item-name {
+       font-size: 10pt;
+}
+
+
+/* Password or Authentication Dialog */
+
+.prompt-dialog {
+       @extend %bubble_panel;
+       //this is the width of the entire modal popup
+       width: 34em;
+
+       .message-dialog-main-layout { spacing: 24px; padding: 10px; }
+       .message-dialog-content { spacing: $base_spacing * 4; }
+       .message-dialog-title { color: lighten($fg_color,15%); }
+}
+
+.prompt-dialog-description:rtl {
+       text-align: right;
+}
+
+.prompt-dialog-password-box {
+       spacing: 1em;
+       padding-bottom: 1em;
+}
+
+.prompt-dialog-error-label {
+       font-size: 10pt;
+       color: $warning_color;
+       padding-bottom: 8px;
+}
+
+.prompt-dialog-info-label {
+       font-size: 10pt;
+       padding-bottom: 8px;
+}
+
+.hidden {
+       color: rgba(0,0,0,0);
+}
+
+.prompt-dialog-null-label {
+       font-size: 10pt;
+       padding-bottom: 8px;
+}
+
+.prompt-dialog-pim-box {
+       spacing: 1em;
+}
+
+.prompt-dialog-grid {
+       spacing-rows: 15px;
+       spacing-columns: 1em;
+}
+
+.prompt-dialog-keyfiles-box {
+       spacing: 1em;
+}
+
+.prompt-dialog-button.button {
+       padding: 8px;
+}
+
+.prompt-dialog-caps-lock-warning {
+       @extend .prompt-dialog-error-label;
+       padding-left: 6.2em;
+}
+
+
+/* Polkit Dialog */
+
+.polkit-dialog-user-layout {
+       padding-left: 10px;
+       spacing: 10px;
+       &:rtl {
+               padding-left: 0px;
+               padding-right: 10px;
+       }
+}
+
+.polkit-dialog-user-root-label {
+       color: $warning_color;
+}
+
+.polkit-dialog-user-icon {
+       border-radius: 99px;
+       background-size: contain;
+       width: 48px;
+       height: 48px;
+}
+
+/* Audio selection dialog */
+.audio-device-selection-dialog {
+       @extend %bubble_panel;
+       spacing: 30px;
+}
+
+.audio-selection-content {
+       spacing: 20px;
+       padding: 24px;
+}
+
+.audio-selection-title {
+       font-weight: bold;
+       text-align: center;
+}
+
+.audio-selection-box {
+       spacing: 20px;
+}
+
+.audio-selection-device {
+       border: 1px solid $bubble_borders_color;
+       border-radius: 12px;
+       &:hover,&:focus { background-color: $hover_bg_color; }
+       &:active { 
+               background-color: $selected_bg_color;
+               color: $selected_fg_color;
+       }
+}
+
+.audio-selection-device-box {
+       padding: 20px;
+       spacing: 20px;
+}
+
+.audio-selection-device-icon {
+       icon-size: $base_icon_size * 4;
+}
+
+/* Access Dialog */
+.access-dialog {
+       @extend %bubble_panel;
+       spacing: 30px;
+}
+
+/* Geolocation Dialog */
+.geolocation-dialog {
+       @extend %bubble_panel;
+       spacing: 30px;
+}
+
+/* Extension Dialog */
+.extension-dialog {
+       @extend %bubble_panel;
+       .message-dialog-main-layout { spacing: 24px; padding: 10px; }
+       .message-dialog-title { font-weight: normal; color: $fg_color; }
+}
+
+/* Inhibit-Shortcuts Dialog */
+.inhibit-shortcuts-dialog {
+       @extend %bubble_panel;
+       spacing: 30px;
+}
+
+/* Network Agent Dialog */
+
+.network-dialog-secret-table {
+       spacing-rows: 15px;
+       spacing-columns: 1em;
+}
+
+.keyring-dialog-control-table {
+       spacing-rows: 15px;
+       spacing-columns: 1em;
+}
\ No newline at end of file
diff --git a/widgets/_end-session-dialog.scss b/widgets/_end-session-dialog.scss
new file mode 100644
index 0000000..19aa993
--- /dev/null
+++ b/widgets/_end-session-dialog.scss
@@ -0,0 +1,80 @@
+/* End Session Dialog */
+
+$end_session_dialog_width: 28em;
+
+.end-session-dialog {
+       spacing: $base_spacing;
+       border: 1px solid $bubble_borders_color;
+}
+
+.end-session-dialog-list {
+       padding-top: 20px;
+}
+
+.end-session-dialog-layout {
+       padding-left: 17px;
+       &:rtl { padding-right: 17px; }
+}
+
+.end-session-dialog-description {
+       width: $end_session_dialog_width;
+       padding-bottom: 10px;
+       &:rtl {
+               text-align: right;
+       }
+}
+
+.end-session-dialog-warning {
+       width: $end_session_dialog_width;
+       color: $warning_color;
+       padding-top: 6px;
+       &:rtl {
+               text-align: right;
+       }
+}
+
+// user profile picture
+.end-session-dialog-logout-icon {
+       border-radius: 99px;
+       width: $base_icon_size * 3;
+       height: $base_icon_size * 3;
+       background-size: contain;
+}
+
+.end-session-dialog-shutdown-icon {
+       color: $fg_color;
+       width: $base_icon_size * 3;
+       height: $base_icon_size * 3;
+}
+
+.end-session-dialog-inhibitor-layout {
+       spacing: $base_spacing * 4;
+       max-height: 200px;
+       padding-right: 65px;
+       padding-left: 65px;
+}
+
+.end-session-dialog-session-list,
+.end-session-dialog-app-list {
+       spacing: 1em;
+}
+
+.end-session-dialog-list-header {
+       font-weight: bold;
+       &:rtl { text-align: right; }
+}
+
+.end-session-dialog-app-list-item,
+.end-session-dialog-session-list-item {
+       spacing: 1em;
+}
+
+.end-session-dialog-app-list-item-name,
+.end-session-dialog-session-list-item-name {
+       font-weight: bold;
+}
+
+.end-session-dialog-app-list-item-description {
+       color: darken($fg_color,5%);
+       font-size: 10pt;
+}
\ No newline at end of file
diff --git a/widgets/_entries.scss b/widgets/_entries.scss
new file mode 100644
index 0000000..7c10558
--- /dev/null
+++ b/widgets/_entries.scss
@@ -0,0 +1,23 @@
+/* Entries */
+
+StEntry {
+       border-radius: $base_border_radius;
+       padding: 4px;
+       border-width: 1px;
+       color: $fg_color;
+       @include entry(normal);
+       //&:hover { @include entry(hover);}
+       &:focus { @include entry(focus,$fc:transparentize($fg_color,0.5));}
+       &:insensitive { @include entry(insensitive);}
+       selection-background-color: $selected_bg_color;
+       selected-color: $selected_fg_color;
+       StIcon.capslock-warning {
+               icon-size: 16px;
+               warning-color: $warning_color;
+               padding: 0 4px;
+       }
+       StIcon.peek-password {
+               icon-size: $base_icon_size;
+               padding: 0 4px;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_hotplug.scss b/widgets/_hotplug.scss
new file mode 100644
index 0000000..04e4185
--- /dev/null
+++ b/widgets/_hotplug.scss
@@ -0,0 +1,46 @@
+// hotplug
+
+.hotplug-transient-box {
+       spacing: 6px;
+       padding: 2px 72px 2px 12px;
+}
+
+.hotplug-notification-item {
+       @extend %bubble_button;
+       border: none; box-shadow: none;
+       padding: 2px 10px;
+       &:focus { padding: 1px 71px 1px 11px; }
+}
+
+.hotplug-notification-item-icon {
+       icon-size: 24px;
+       padding: 2px 5px;
+}
+
+.hotplug-resident-box { spacing: $base_spacing * 2; }
+
+.hotplug-resident-mount {
+       spacing: $base_spacing * 2;
+       border-radius: 4px;
+       &:hover { background-color: $hover_bg_color; }
+}
+
+.hotplug-resident-mount-label {
+       color: inherit;
+       padding-left: 6px;
+}
+
+.hotplug-resident-mount-icon {
+       icon-size: 24px;
+       padding-left: 6px;
+}
+
+.hotplug-resident-eject-icon {
+       icon-size: 16px;
+}
+
+.hotplug-resident-eject-button {
+       padding: 7px;
+       border-radius: 5px;
+       color: pink;
+}
\ No newline at end of file
diff --git a/widgets/_ibus-popup.scss b/widgets/_ibus-popup.scss
new file mode 100644
index 0000000..e8fee85
--- /dev/null
+++ b/widgets/_ibus-popup.scss
@@ -0,0 +1,30 @@
+// IBus Candidate Popup
+.candidate-popup-content {
+       padding: 0.5em;
+       spacing: 0.3em;
+}
+
+.candidate-index {
+       padding: 0 0.5em 0 0;
+       color: darken($fg_color,10%);
+}
+
+.candidate-box {
+       padding: 0.3em 0.5em 0.3em 0.5em;
+       border-radius: $base_border_radius;
+       &:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
+}
+
+.candidate-page-button-box {
+       height: 2em;
+       .vertical & { padding-top: 0.5em; }
+       .horizontal & { padding-left: 0.5em; }
+}
+
+.candidate-page-button {
+       padding: 4px;
+}
+
+.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; 
border-right-width: 0; }
+.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;  }
+.candidate-page-button-icon { icon-size: 1em; }
\ No newline at end of file
diff --git a/widgets/_keyboard.scss b/widgets/_keyboard.scss
new file mode 100644
index 0000000..5cd9caf
--- /dev/null
+++ b/widgets/_keyboard.scss
@@ -0,0 +1,125 @@
+/* On-screen Keyboard */
+
+$key_size: 1.2em;
+$key_border_radius: $base_border_radius + 3px;
+$key_bg_color:  $bg_color;
+// $default_key_bg_color: darken($key_bg_color, 4%);
+$default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten($osd_bg_color, 2%));
+
+
+// draw keys using button function
+%keyboard_key {
+       @include button(normal, $c:$key_bg_color);
+
+       &:focus { @include button(focus);}
+       &:hover, &:checked { @include button(hover, $c: $key_bg_color);}
+       &:active { @include button(active, $c: $key_bg_color); }
+}
+
+#keyboard {
+       background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 
0.1);
+       box-shadow: inset 0 1px 0 0 $osd_outer_borders_color !important;
+
+       .page-indicator {
+               padding: $base_padding;
+
+               .page-indicator-icon {
+                       width: 6px;
+                       height: 6px;
+                       &:checked {
+                               background-color:red;
+                       }
+               }
+       }
+}
+
+// the container for individual keys
+.key-container {
+       padding: $base_margin;
+       spacing: $base_margin;
+}
+
+// the keys
+.keyboard-key {
+       @extend %keyboard_key;
+       font-size: $base_font_size + 5pt;
+       min-height: $key_size;
+       min-width: $key_size;
+
+       border-radius: $key_border_radius;
+
+       &:grayed { //FIXMEy
+               background-color: darken($bg_color, 3%);
+               color: $osd_fg_color;
+               border-color: $osd_borders_color;
+       }
+
+       // non-character keys
+       &.default-key {
+
+               // size of the icon asset
+               background-size: 24px;
+
+               @include button(normal, $c:$default_key_bg_color);
+               &:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
+               &:active { @include button(active, $c: $default_key_bg_color);}
+               box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1) !important; // drawing override because of a visual 
bug
+       }
+
+       // enter key is suggested-action
+       &.enter-key {
+               background-image: url("resource:///org/gnome/shell/theme/key-enter.svg");
+
+               @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
+               &:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
+               &:active {@include button(active, $c: darken($selected_bg_color, 2%));}
+               box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1) !important; // drawing override because of a visual 
bug
+       }
+
+       // key assets
+       &.shift-key-lowercase {background-image: url("resource:///org/gnome/shell/theme/key-shift.svg");}
+       &.shift-key-uppercase {background-image: 
url("resource:///org/gnome/shell/theme/key-shift-uppercase.svg");}
+       &.shift-key-uppercase:latched {background-image: 
url("resource:///org/gnome/shell/theme/key-shift-latched-uppercase.svg");}
+       &.hide-key {background-image: url("resource:///org/gnome/shell/theme/key-hide.svg");}
+       &.layout-key {background-image: url("resource:///org/gnome/shell/theme/key-layout.svg");}
+}
+
+// long press on a key popup
+.keyboard-subkeys {
+       color: $osd_fg_color;
+       -arrow-border-radius: $modal_radius;
+       -arrow-background-color: $osd_bg_color;
+       -arrow-border-width: 1px;
+       -arrow-border-color: lighten($osd_bg_color, 9%);
+       -arrow-base: 20px;
+       -arrow-rise: 10px;
+       -boxpointer-gap: $base_spacing;
+
+       .keyboard-key {
+               @extend %keyboard_key;
+               border-radius:$base_border_radius;
+       }
+}
+
+// emoji
+.emoji-page {
+       .keyboard-key {
+               background-color: transparent;
+               border: none;
+               color: initial;
+       }
+}
+
+.emoji-panel {
+       .keyboard-key:latched {
+               border-color: lighten($selected_bg_color, 5%);
+               background-color: $selected_bg_color;
+       }
+}
+
+// suggestions
+.word-suggestions {
+       font-size: $base_font_size + 3pt;
+       spacing: 12px;
+       min-height: 20pt;
+}
\ No newline at end of file
diff --git a/widgets/_login-dialog.scss b/widgets/_login-dialog.scss
new file mode 100644
index 0000000..8902802
--- /dev/null
+++ b/widgets/_login-dialog.scss
@@ -0,0 +1,154 @@
+/* Login Dialog */
+
+.login-dialog-banner-view {
+       padding-top: 24px;
+       max-width: 23em;
+}
+
+.login-dialog {
+       //reset
+       border: none;
+       background-color: transparent;
+
+       $_gdm_bg: lighten(#2e3436, 19%);
+
+       StEntry {
+               @extend %search_entry;
+               border-radius: $base_border_radius;
+               @if $variant=='dark' {
+                       $_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
+                       background-color: $_gdm_entry_bg;
+                       border-color: $_gdm_entry_bg;    
+                       color: $osd_fg_color;
+               }
+       }
+
+       .modal-dialog-button-box { spacing: 3px; }
+       .modal-dialog-button {
+               padding: 4px 18px;
+               box-shadow: 0 1px 3px rgba(0,0,0,0.2);
+               background-color: $_gdm_bg;
+               border-color: $_gdm_bg;
+               color: $fg_color;
+
+               $_hover_c: lighten($_gdm_bg, 5%);
+               &:hover, &:focus {
+                       background-color: $_hover_c;
+                       border-color: $_hover_c;
+               }
+               &:active {
+                       $_active_c: darken($_gdm_bg, 5%);
+                       box-shadow: none;
+                       background-color: $_active_c;
+                       border-color: $_active_c;
+               }
+               &:insensitive {
+                       @include button(insensitive);
+                       border-color: darken($_gdm_bg, 5%);
+                       background-color: darken($_gdm_bg, 5%);
+                       color: transparentize($fg_color, 0.3);
+               }
+               &:default {
+                       @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
+                       border-color: $selected_bg_color;
+                       &:hover, &:focus { 
+                               @include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
+                               $_def_hover_c: lighten($selected_bg_color, 5%);
+                               background-color: $_def_hover_c;
+                               border-color: $_def_hover_c;
+                       }
+                       &:active {
+                               @include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
+                               $_def_active_c: darken($selected_bg_color, 5%);
+                               background-color: $_def_active_c;
+                               border-color: $_def_active_c;
+                       }
+                       &:insensitive {
+                               @include button(insensitive);
+                               border-color: darken($selected_bg_color, 10%);
+                               background-color: darken($selected_bg_color, 10%);
+                               color: transparentize($selected_fg_color, 0.3);
+                       }
+               }
+       }
+}
+
+.login-dialog-logo-bin { padding: 24px 0px; }
+.login-dialog-banner { color: darken($osd_fg_color,10%); }
+.login-dialog-button-box { spacing: 5px; }
+.login-dialog-message-warning { color: $warning_color; }
+.login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
+.login-dialog-user-selection-box { padding: 100px 0px; }
+.login-dialog-not-listed-label {
+       padding-left: 2px;
+       .login-dialog-not-listed-button:focus &,
+       .login-dialog-not-listed-button:hover & {
+               color: $osd_fg_color;
+       }
+}
+
+.login-dialog-not-listed-label {
+       font-size: 90%;
+       font-weight: bold;
+       color: darken($osd_fg_color,30%);
+       padding-top: 1em;
+}
+
+.login-dialog-user-list-view { -st-vfade-offset: 1em; }
+.login-dialog-user-list {
+       spacing: 12px;
+       width: 23em;
+       &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: 
$selected_fg_color; }
+       &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
+}
+
+.login-dialog-user-list-item {
+       border-radius: 5px;
+       padding: 6px;
+       color: darken($osd_fg_color,30%);
+       &:ltr .user-widget { padding-right: 1em; }
+       &:rtl .user-widget { padding-left: 1em; }
+       .login-dialog-timed-login-indicator {
+               height: 2px;
+               margin-top: 6px;
+               background-color: $osd_fg_color;
+       }
+       &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
+}
+
+.login-dialog-username,
+.user-widget-label {
+       color: $osd_fg_color;
+       font-size: 120%;
+       font-weight: bold;
+       text-align: left;
+       padding-left: 15px;
+}
+
+.user-widget-label {
+       &:ltr { padding-left: 14px; }
+       &:rtl { padding-right: 14px; }
+}
+
+.login-dialog-prompt-layout {
+       padding-top: 24px;
+       padding-bottom: 12px;
+       spacing: $base_spacing * 2;
+       width: 23em;
+}
+
+.login-dialog-prompt-label {
+       color: darken($osd_fg_color, 20%);
+       font-size: 110%;
+       padding-top: 1em;
+}
+
+.login-dialog-session-list-button StIcon {
+       icon-size: 1.25em;
+}
+
+.login-dialog-session-list-button {
+       color: darken($osd_fg_color,30%);
+       &:hover,&:focus { color: $osd_fg_color; }
+       &:active { color: darken($osd_fg_color, 50%); }
+}
\ No newline at end of file
diff --git a/widgets/_looking-glass.scss b/widgets/_looking-glass.scss
new file mode 100644
index 0000000..f065812
--- /dev/null
+++ b/widgets/_looking-glass.scss
@@ -0,0 +1,97 @@
+/* Looking Glass */
+
+// Dialog
+#LookingGlassDialog {
+       background-color: $osd_bg_color;
+       spacing: $base_spacing;
+       padding: 4px;
+       border: 2px solid transparentize($osd_fg_color, 0.8);
+       border-top-width:0;
+       border-radius: 0 0 $base_border_radius $base_border_radius;
+
+       & > #Toolbar {
+               border: none;
+               border-radius: $base_border_radius;
+               background-color: darken($osd_bg_color, 10%);
+       }
+
+       .labels { spacing: $base_spacing; }
+       .notebook-tab {
+               -natural-hpadding: $base_padding * 2;
+               -minimum-hpadding: 6px;
+               font-weight: bold;
+               color: $fg_color;
+               transition-duration: 100ms;
+               padding-left: .3em;
+               padding-right: .3em;
+               &:hover {
+                       color: white;
+                       text-shadow: black 0px 2px 2px;
+               }
+               &:selected {
+                       border-bottom-width: 2px;
+                       border-color: lighten($selected_bg_color,5%);
+                       color: white;
+                       text-shadow: black 0px 2px 2px;
+               }
+       }
+       StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
+       StBoxLayout#ResultsArea { spacing: $base_spacing; }
+}
+
+.lg-dialog {
+       StEntry {
+               selection-background-color: #bbbbbb;
+               selected-color: $osd_bg_color;
+       }
+       .shell-link {
+               color: #999999;
+               &:hover { color: #dddddd; }
+        }
+}
+
+.lg-completions-text {
+               font-size: .9em;
+               font-style: italic;
+}
+
+.lg-obj-inspector-title {
+               spacing: $base_spacing;
+}
+
+.lg-obj-inspector-button {
+               border: 1px solid gray;
+               padding: 4px;
+               border-radius: $base_border_radius;
+               &:hover { border: 1px solid #ffffff; }
+}
+
+// Extensions
+#lookingGlassExtensions { padding: 4px; }
+
+.lg-extensions-list {
+               padding: 4px;
+               spacing: 6px;
+}
+
+.lg-extension {
+               border: 1px solid $osd_borders_color;
+               border-radius: $base_border_radius;
+               padding: 4px;
+}
+
+.lg-extension-name {
+               font-weight: bold;
+}
+
+.lg-extension-meta {
+               spacing: 6px;
+}
+
+// Inspector
+#LookingGlassPropertyInspector {
+       background: $osd_bg_color;
+       border: 1px solid $osd_borders_color;
+       border-radius: $base_border_radius;
+       padding: 6px;
+}
\ No newline at end of file
diff --git a/widgets/_message-list.scss b/widgets/_message-list.scss
new file mode 100644
index 0000000..4317c4e
--- /dev/null
+++ b/widgets/_message-list.scss
@@ -0,0 +1,145 @@
+/* Message List */
+// a.k.a. notifications in the menu
+
+// main list
+.message-list {
+       width: 31.5em;
+       padding: 0 $base_padding * 2;
+}
+
+.message-list-sections {
+       margin:0;
+       spacing: $base_spacing;
+}
+
+.message-list-section,
+.message-list-section-list {
+       spacing: $base_spacing;
+}
+
+.message-list-section-list {
+       &:ltr {padding:0;}
+       &:rtl {padding:0;}
+}
+
+// clear button
+.message-list-clear-button {
+       margin:$base_margin;
+       .button {
+               @extend %button;
+       }
+}
+
+// message bubbles
+.message {
+       @extend %notification_bubble;
+
+       // title
+       .message-title {
+               color: $fg_color;
+               font-weight: bold;
+               margin-bottom:4px;
+       }
+
+       // content
+       .message-content {
+               color: darken($fg_color, 10%);
+               padding: $base_padding 0;
+               margin:$base_margin * 2;
+               &:ltr {
+                       margin-left: $base_margin;
+                       padding-right:$base_padding;
+               }
+               &:rtl {
+                       margin-right: $base_margin;
+                       padding-left:$base_padding;
+               }
+       }
+
+       // close button
+       .message-close-button {
+               color: lighten($fg_color, 15%);
+               &:hover { color: darken($fg_color, 10%);}
+       }
+
+       // icon container
+       .message-icon-bin {
+               // padding: $base_padding;
+               margin:$base_padding 0;
+
+               &:rtl {
+                       // padding: $base_padding;
+               }
+
+               // icon size and color
+               > StIcon {
+                       color: $fg_color;
+                       icon-size: $base_icon_size * 2; // 32px
+                       -st-icon-style: symbolic;
+
+                       padding:0;
+                       margin:$base_padding;
+               }
+
+               // fallback
+               > .fallback-window-icon {
+                       width: $base_icon_size;
+                       height: $base_icon_size;
+               }
+       }
+
+       // secondary container in title box
+       .message-secondary-bin {
+               padding: 0;
+
+               // notification time stamp
+               > .event-time {
+                       color: transparentize($fg_color, 0.5);
+                       font-size: 80%;
+                       text-align: right;
+                       margin: 0 $base_margin * 2;
+                       /* HACK: the label should be baseline-aligned with a 1em label, fake this with some 
bottom padding */
+                       padding-bottom: $base_padding;
+               }
+       }
+
+}
+
+/* Media Controls */
+.message-media-control {
+       padding: $base_padding * 2 $base_padding * 4;
+       color: darken($fg_color, 15%);
+
+       // uses $hover_bg_color since the media controls are in a notification_bubble
+       &:hover {
+               background-color: lighten($hover_bg_color, 5%);
+               color: $fg_color;
+       }
+
+       &:active { 
+               background-color: darken($hover_bg_color, 2%);
+               color: $fg_color;
+       }
+
+       &:insensitive { color: darken($fg_color,40%); }
+       
+       // fix border-radius for last button on hover
+       &:last-child:ltr { &:hover {border-radius:  0 $base_border_radius+2 $base_border_radius+2 0;} }
+       &:last-child:rtl { &:hover {border-radius: $base_border_radius+2 0 0 $base_border_radius+2;} }
+}
+
+// album-art
+.media-message-cover-icon {
+       icon-size: $base_icon_size * 2 !important; // 48px
+       border-radius: $base_border_radius;
+
+       // when there is no artwork
+       &.fallback {
+               color: darken($fg_color, 17%);
+               background-color: $bg_color;
+               border: 1px solid transparent;
+               border-radius: $base_border_radius;
+               icon-size: $base_icon_size * 2 !important;
+               padding: $base_padding * 2;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_misc.scss b/widgets/_misc.scss
new file mode 100644
index 0000000..f905de0
--- /dev/null
+++ b/widgets/_misc.scss
@@ -0,0 +1,55 @@
+// Links/URLs
+.shell-link {
+       color: $link_color;
+       &:hover { color: lighten($link_color,10%); }
+}
+
+.url-highlighter { link-color: $link_color; }
+
+// Rubberband for select-area screenshots
+.select-area-rubberband {
+       background-color: transparentize($selected_bg_color,0.7);
+       border: 1px solid $selected_bg_color;
+}
+
+// Pointer accessibility notifications
+.pie-timer {
+       width: 60px;
+       height: 60px;
+       -pie-border-width: 3px;
+       -pie-border-color: $selected_bg_color;
+       -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+}
+
+// Screen zoom/Magnifier
+.magnifier-zoom-region {
+       border: 2px solid $selected_bg_color;
+       &.full-screen { border-width: 0; }
+}
+
+// User icon
+.user-icon {
+       background-size: contain;
+       color: $osd_fg_color;
+       border-radius: 99px;
+       &:hover {
+               color: lighten($osd_fg_color,30%);
+       }
+}
+
+// Input Source Switcher
+.input-source-switcher-symbol {
+       font-size: 34pt;
+       width: 96px;
+       height: 96px;
+}
+
+// Window cycler highlight
+.cycler-highlight {
+       border: 5px solid $selected_bg_color;
+}
+
+
+.headline { font-size: 110%; }
+.lightbox { background-color: black; }
+.flashspot { background-color: white; }
diff --git a/widgets/_network-dialog.scss b/widgets/_network-dialog.scss
new file mode 100644
index 0000000..5b3aa63
--- /dev/null
+++ b/widgets/_network-dialog.scss
@@ -0,0 +1,57 @@
+/* Network Dialogs */
+.nm-dialog {
+       @extend %bubble_panel;
+       max-height: 34em;
+       min-height: 31em;
+       min-width: 32em;
+}
+
+.nm-dialog-content {
+       spacing: 20px;
+       padding: 24px;
+}
+
+.nm-dialog-airplane-box { spacing: 12px; }
+
+.nm-dialog-airplane-headline {
+       font-weight: bold;
+       text-align: center;
+}
+
+.nm-dialog-airplane-text { color: $fg_color; }
+
+// header
+.nm-dialog-header {
+       font-weight: bold;
+}
+.nm-dialog-header-icon {
+       icon-size: $base_icon_size * 2;
+}
+.nm-dialog-header-hbox { spacing: 10px; }
+
+// list of networks
+.nm-dialog-scroll-view {
+       border: 1px solid $borders_color;
+       padding:0;
+       background-color: darken($bg_color, 3%);
+}
+
+// list item
+.nm-dialog-item {
+       font-size: $base_font_size;
+       border-bottom: 1px solid $borders_color;
+       padding: $base_padding * 2;
+       spacing: 0px;
+       &:selected {
+               background-color: $selected_bg_color;
+               color: $selected_fg_color;
+       }
+}
+
+// icons in list
+.nm-dialog-icon { icon-size: $base_icon_size; }
+.nm-dialog-icons { spacing: $base_spacing * 2; }
+
+// no networks
+.no-networks-label { color: $insensitive_fg_color; }
+.no-networks-box { spacing: $base_padding; }
\ No newline at end of file
diff --git a/widgets/_notifications.scss b/widgets/_notifications.scss
new file mode 100644
index 0000000..e132c2d
--- /dev/null
+++ b/widgets/_notifications.scss
@@ -0,0 +1,100 @@
+/* Notifications & Mesage Tray */
+
+$notification_banner_height: 64px;
+$notification_banner_width: 34em;
+
+// Banner notifications
+.notification-banner {
+       min-height: $notification_banner_height;
+       width: $notification_banner_width;
+       font-size: $base_font_size;
+       margin: $base_margin;
+       border-radius: $modal_radius;
+
+       .message-title { color: $fg_color }
+       .message-content { color: $fg_color; }
+
+       &:hover { background: $bg_color; }
+       &, &:focus, &:active {
+               background-color: $bg_color;
+               .message-title { color: $fg_color }
+               .message-content { color: $fg_color; }
+       }
+
+       // icon
+       .message-icon-bin > StIcon {
+               icon-size: $base_icon_size * 2;
+               color: $fg_color;
+       }
+
+       // entries
+       StEntry { @extend %bubble_entry; }
+
+       .notification-icon {
+               padding: 5px;
+       }
+
+       .notification-content {
+               padding: 5px;
+               spacing: 5px;
+       }
+
+       .secondary-icon { icon-size: $base_icon_size; }
+
+       .notification-actions {
+               padding-top: 0;
+               color: $fg_color;
+               border-top: 1px solid $bubble_borders_color;
+               spacing: 0;
+       }
+
+       .notification-button {
+               @extend %bubble_button;
+               min-height: $notification_banner_height * 0.5;
+               padding: $base_padding !important;
+               border-top-width: 0 !important;
+               
+               &:focus { box-shadow: none; }
+       }
+}
+
+// counter
+.summary-source-counter {
+       font-size: $base_font_size - 1pt;
+       font-weight: bold;
+       height: 1.6em;
+       width: 1.6em;
+       -shell-counter-overlap-x: 3px;
+       -shell-counter-overlap-y: 3px;
+       background-color: $selected_bg_color;
+       color: $selected_fg_color;
+       border: 2px solid $fg_color;
+       box-shadow: 0 2px 2px rgba(0,0,0,0.5);
+       border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
+}
+
+.secondary-icon { icon-size: $base_icon_size; }
+
+// chat bubbles
+.chat-body { spacing: 5px; }
+.chat-response { margin: 5px; }
+.chat-log-message { color: darken($fg_color,10%); }
+.chat-new-group { padding-top: 1em; }
+.chat-received {
+       padding-left: 4px;
+       &:rtl { padding-left: 0px; padding-right: 4px; }
+}
+
+.chat-sent {
+       padding-left: 18pt;
+       color: lighten($fg_color, 15%);
+       &:rtl { padding-left: 0; padding-right: 18pt; }
+}
+
+.chat-meta-message {
+       padding-left: 4px;
+       font-size: 9pt;
+       font-weight: bold;
+       color: lighten($fg_color,18%);
+       &:rtl { padding-left: 0; padding-right: 4px; }
+}
\ No newline at end of file
diff --git a/widgets/_osd.scss b/widgets/_osd.scss
new file mode 100644
index 0000000..ad2d1d1
--- /dev/null
+++ b/widgets/_osd.scss
@@ -0,0 +1,37 @@
+/* OSD */
+.osd-window {
+       @extend %osd_panel;
+       text-align: center;
+       font-weight: bold;
+       spacing: 1em;
+       margin: 32px;
+       min-width: 64px;
+       min-height: 64px;
+
+       .osd-monitor-label { font-size: 3em; }
+       .level {
+               height: 0.6em;
+               -barlevel-height: 0.6em;
+               -barlevel-background-color: transparentize($fg_color, if($variant=='light', 0.2, 0.9));
+               -barlevel-active-background-color: $osd_fg_color;
+               -barlevel-overdrive-color: $destructive_color;
+               -barlevel-overdrive-separator-width: 0.2em;
+       }
+}
+
+/* Pad OSD */
+.pad-osd-window {
+       padding: 32px;
+       background-color: transparentize(#000, 0.2);
+
+       .pad-osd-title-box { spacing: 12px; }
+       .pad-osd-title-menu-box { spacing: 6px; }
+}
+
+.combo-box-label {
+       width: 15em;
+}
+
+.resize-popup {
+       @extend %osd_panel;
+}
\ No newline at end of file
diff --git a/widgets/_overview.scss b/widgets/_overview.scss
new file mode 100644
index 0000000..b48bd05
--- /dev/null
+++ b/widgets/_overview.scss
@@ -0,0 +1,10 @@
+/* OVERVIEW */
+
+#overview {
+       spacing: 24px;
+       background-color: transparent;
+}
+
+.overview-controls {
+       padding-bottom: 32px;
+}
\ No newline at end of file
diff --git a/widgets/_panel.scss b/widgets/_panel.scss
new file mode 100644
index 0000000..ba8e667
--- /dev/null
+++ b/widgets/_panel.scss
@@ -0,0 +1,106 @@
+/* Top Bar */
+// a.k.a. the panel
+
+$panel_corner_radius: $base_border_radius+1;
+$panel_bg_color: if($variant == 'light', rgba(0,0,0,0.9), #000);
+$panel_fg_color: if($variant == 'light', darken($bg_color, 15%), darken($fg_color, 10%));
+$panel_height: 1.86em;
+
+
+#panel {
+  background-color: $panel_bg_color;
+  font-weight: bold;
+  height: $panel_height;
+  font-feature-settings: "tnum";
+
+  // transparent panel on lock & login screens
+  &.unlock-screen,
+  &.login-screen,
+  &.lock-screen {
+    background-color: transparent;
+
+    .panel-corner {
+      -panel-corner-radius: 0;
+      -panel-corner-background-color: transparent;
+      -panel-corner-border-color: transparent;
+    }
+  }
+
+  // spacing between activities, app menu and such
+  #panelLeft, #panelCenter {
+    spacing: $base_spacing;
+  }
+
+  // the rounded outset corners
+  .panel-corner {
+    -panel-corner-radius: $panel_corner_radius;
+    -panel-corner-background-color: $panel_bg_color;
+    -panel-corner-border-width: 2px;
+    -panel-corner-border-color: transparent;
+
+    &:active, &:overview, &:focus {
+      -panel-corner-border-color: lighten($selected_bg_color,5%);
+    }
+  }
+
+  // panel menus
+  .panel-button {
+    font-weight: bold;
+    color: $panel_fg_color;
+    -natural-hpadding: $base_padding * 2;
+    -minimum-hpadding: $base_padding;
+
+    &:hover {
+      color: lighten($panel_fg_color, 20%);
+    }
+
+    &:active, &:overview, &:focus, &:checked {
+      background-color: $panel_bg_color; // Trick due to St limitations. It needs a background to draw a 
box-shadow
+      box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
+
+      color: lighten($panel_fg_color, 20%);
+    }
+
+    // status area icons
+    .system-status-icon {
+      icon-size: $base_icon_size;
+      padding: $base_padding - 1px;
+    }
+
+    // app menu icon
+    .app-menu-icon {
+      margin-left: $base_margin;
+      margin-right: $base_margin;
+      -st-icon-style: symbolic;
+      // dimensions of the icon are hardcoded
+    }
+
+    // lock & login screen styles
+    .unlock-screen &,
+    .login-screen &,
+    .lock-screen & {
+      color: lighten($fg_color, 10%);
+      &:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
+    }
+  }
+
+  .panel-status-indicators-box,
+  .panel-status-menu-box {
+    spacing: 2px;
+  }
+
+  // spacing between power icon and (optional) percentage label
+  .power-status.panel-status-indicators-box {
+    spacing: 0;
+  }
+
+  // indicator for active
+  .screencast-indicator,
+  .remote-access-indicator { color: $warning_color; }
+}
+
+// App Menu
+#appMenu {
+  spacing: $base_spacing;
+  .label-shadow { color: transparent; }
+}
\ No newline at end of file
diff --git a/widgets/_popovers.scss b/widgets/_popovers.scss
new file mode 100644
index 0000000..9cf6b10
--- /dev/null
+++ b/widgets/_popovers.scss
@@ -0,0 +1,123 @@
+/* Popovers/Menus */
+
+$popover_arrow_height: 12px;
+
+//.the popover itself
+.popup-menu-boxpointer,
+.candidate-popup-boxpointer {
+       -arrow-border-radius: $base_border_radius+4;
+       -arrow-background-color: $bg_color;
+       -arrow-border-width: 1px;
+       -arrow-border-color: $borders_color;
+       -arrow-base: $popover_arrow_height * 2;
+       -arrow-rise: $popover_arrow_height;
+       -arrow-box-shadow: 0 1px 3px rgba(0,0,0,0.5); // dreaming bugzilla #689995
+}
+
+// container of the popover menu
+.popup-menu {
+       min-width: 15em;
+       color: $fg_color;
+
+       //.popup-status-menu-item { font-weight: normal;  color: pink; } //dunno what that is
+       &.panel-menu {
+               -boxpointer-gap: $base_margin; // distance from the panel
+               margin-bottom: 1.75em;
+       }
+}
+
+.popup-menu-content {
+       padding: $base_padding * 2 + $base_margin 0;
+}
+
+// menu items
+.popup-menu-item {
+       spacing: $base_padding;
+       padding: $base_padding;
+
+       &:ltr { padding-right:1.75em; padding-left: 0; }
+       &:rtl { padding-right: 0; padding-left:1.75em; }
+
+       &:checked {
+               background-color: lighten($bg_color, 2%);
+               box-shadow: none;
+       }
+
+       &.selected {
+               background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
+               color: $fg_color;
+       }
+
+       &:active { 
+               background-color: $selected_bg_color;
+               color: $selected_fg_color;
+       }
+
+       &:insensitive { color: transparentize($fg_color,0.5);}
+}
+
+// all icons and other graphical elements
+.popup-inactive-menu-item {
+       color: $fg_color;
+
+       &:insensitive { color: transparentize($fg_color,0.5); }
+}
+
+// symbolic icons in popover
+.popup-menu-arrow,
+.popup-menu-icon { icon-size: $base_icon_size; }
+
+// popover submenus
+.popup-sub-menu {
+       background-color: darken($bg_color, 3%);
+       box-shadow: none;
+       border-top: 1px solid transparentize($borders_color, 0.2);
+       border-bottom: 1px solid transparentize($borders_color, 0.2);
+
+       .popup-menu-item:hover {background-color: darken($bg_color, 7%);}
+}
+
+// container for radio and check boxes
+.popup-menu-ornament {
+       text-align: right;
+       width: 1.2em;
+}
+
+// separator
+.popup-separator-menu-item {
+       //-margin-horizontal: 24px;
+       height: 1px; //not really the whole box
+       margin: 6px 64px;
+       background-color: lighten($borders_color, 2%);
+       border: none !important;
+}
+
+// desktop background menu
+.background-menu {
+       -boxpointer-gap: $base_margin;
+       -arrow-rise: 0px; // hide the beak on the menu
+}
+
+// system status menu
+.aggregate-menu {
+       min-width: 21em;
+
+       // lock screen, shutdown, etc. buttons
+       .popup-menu-icon { 
+               padding:0;
+               margin: 0 $base_margin;
+               -st-icon-style: symbolic;
+       }
+
+       .popup-sub-menu .popup-menu-item > :first-child {
+               // account for icons in submenus with padding
+               &:ltr {
+                       padding-left: $base_padding + $base_margin * 2; 
+                       margin-left: $base_icon_size;
+               }
+               &:rtl {
+                       padding-right: $base_padding + $base_margin * 2; ;
+                       margin-right: $base_icon_size;
+               }
+       }
+}
\ No newline at end of file
diff --git a/widgets/_screen-shield.scss b/widgets/_screen-shield.scss
new file mode 100644
index 0000000..0f8a8be
--- /dev/null
+++ b/widgets/_screen-shield.scss
@@ -0,0 +1,83 @@
+/* Screen Shield */
+
+$_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
+
+.screen-shield-arrows {
+       padding-bottom: 3em;
+}
+
+.screen-shield-arrows Gjs_Arrow {
+       color: white;
+       width: 80px;
+       height: 48px;
+       -arrow-thickness: 12px;
+       -arrow-shadow: $_screenshield_shadow;
+}
+
+.screen-shield-clock {
+       color: white;
+       text-shadow: $_screenshield_shadow;
+       font-weight: bold;
+       text-align: center;
+       padding-bottom: 1.5em;
+}
+
+.screen-shield-clock-time {
+       font-size: 72pt;
+       text-shadow: $_screenshield_shadow;
+       font-feature-settings: "tnum";
+}
+
+.screen-shield-clock-date { 
+       font-size: 28pt;
+       font-weight: normal;
+}
+
+.screen-shield-notifications-container {
+       spacing: 6px;
+       width: 30em;
+       background-color: transparent;
+       max-height: 500px;
+       .summary-notification-stack-scrollview {
+               padding-top: 0;
+               padding-bottom: 0;
+       }
+
+       .notification,
+       .screen-shield-notification-source {
+               padding: 12px 6px;
+               border: 1px solid $osd_outer_borders_color;
+               background-color: transparentize($osd_bg_color,0.5);
+               color: $osd_fg_color;
+               border-radius: 4px;
+       }
+       .notification { margin-right: 15px; } //compensate for space allocated to the scrollbar
+}
+
+
+.screen-shield-notification-label {
+       font-weight: bold;
+       padding: 0px 0px 0px 12px;
+}
+
+.screen-shield-notification-count-text { padding: 0px 0px 0px 12px; }
+
+#panel.lock-screen { background-color: transparentize($osd_bg_color, 0.5); }
+
+.screen-shield-background { //just the shadow, really
+       background: black;
+       box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
+}
+
+#lockDialogGroup {
+       background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/noise-texture.png);
+       background-repeat: repeat;
+}
+
+#screenShieldNotifications {
+       StButton#vhandle, StButton#hhandle {
+               background-color: transparentize($bg_color,0.7);
+               &:hover, &:focus { background-color: transparentize($bg_color,0.5); }
+               &:active { background-color: transparentize($selected_bg_color,0.5); }
+       }
+}
\ No newline at end of file
diff --git a/widgets/_scrollbars.scss b/widgets/_scrollbars.scss
new file mode 100644
index 0000000..640c532
--- /dev/null
+++ b/widgets/_scrollbars.scss
@@ -0,0 +1,29 @@
+/* Scrollbars */
+
+StScrollView {
+       &.vfade { -st-vfade-offset: 68px; }
+       &.hfade { -st-hfade-offset: 68px; }
+}
+
+StScrollBar {
+       padding: 0;
+
+       StScrollView & {
+               min-width: 14px;
+               min-height: 14px;
+       }
+
+       StBin#trough {
+               border-radius: 0;
+               background-color: transparent;
+       }
+
+       StButton#vhandle, StButton#hhandle {
+               border-radius: 8px;
+               background-color: mix($fg_color, $bg_color, 60%);
+               //border: 3px solid transparent; //would be nice to margin or at least to transparent
+               margin: 3px;
+               &:hover { background-color: mix($fg_color, $bg_color, 80%); }
+               &:active { background-color: $selected_bg_color; }
+       }
+}
\ No newline at end of file
diff --git a/widgets/_search-entry.scss b/widgets/_search-entry.scss
new file mode 100644
index 0000000..5ecba46
--- /dev/null
+++ b/widgets/_search-entry.scss
@@ -0,0 +1,33 @@
+// Search entry
+
+$search_entry_width: 320px;
+
+%search_entry,
+.search-entry {
+       width: $search_entry_width;
+       padding: 7px 9px;
+       border-radius: 18px;
+       color: transparentize($fg_color,0.3);
+       background-color: $bg_color;
+       border-color: $borders_color;
+
+       &:hover {
+               background-color: $hover_bg_color;
+               border-color: $hover_borders_color;
+               color: $hover_fg_color;
+       }
+
+       &:focus {
+               padding: 6px 8px; // 1px less to account for wider border
+               border-width: 2px;
+               color: $fg_color;
+               border-color: $selected_bg_color;
+               box-shadow: inset 0 1px 2px 1px rgba(0,0,0,0.2);
+       }
+
+       .search-entry-icon { 
+               icon-size: $base_icon_size;
+               padding: 0 4px;
+               color: inherit;
+       }
+}
\ No newline at end of file
diff --git a/widgets/_search-results.scss b/widgets/_search-results.scss
new file mode 100644
index 0000000..dd3f28c
--- /dev/null
+++ b/widgets/_search-results.scss
@@ -0,0 +1,160 @@
+/* Search */
+$overview_search_container_width: 1024px;
+
+
+%search_result_bubble {
+       background-color: transparentize(lighten($osd_bg_color, 5%), 0.2);
+       border-radius: $modal_radius + 3px;
+       border: 1px solid $osd_outer_borders_color;
+       box-shadow: 0 2px 4px 0 $shadow_color;
+       text-shadow: 0 1px if($variant == 'light', rgba(255,255,255,0.2), rgba(0,0,0,0.2));
+       color: $osd_fg_color;
+       padding: $base_padding * 3;
+       margin: $base_margin;
+}
+
+// search overview container
+#searchResultsContent {
+       max-width: $overview_search_container_width;
+}
+
+// search results sections "the boxes"
+.search-section {
+       @extend %search_result_bubble;
+       spacing:0;
+       margin-top:0;
+       margin-bottom:0;
+
+       // hide separator
+       &:first-child .search-section-separator,
+       &:last-child .search-section-separator {
+               background-color: transparent;
+       }
+
+       // separator
+       .search-section-separator { 
+               // margin-top: $base_padding * 2;
+               // height: 1px;
+               // background-color: $osd_outer_borders_color;
+               height: 0px;
+               background-color: transparent;
+       }
+
+       // content
+       .search-section-content {
+               spacing: 0;
+       }
+}
+
+
+// "no results" text
+.search-statustext {
+       @extend %status_text;
+}
+
+// Search results with icons
+.grid-search-result {
+       > .overview-icon {
+               @extend %icon_tile;
+               color: $osd_fg_color;
+       }
+
+       > .overview-icon.overview-icon-with-label {
+               padding: 10px 8px 5px 8px;
+               spacing: $base_spacing;
+       }
+
+       &:hover,
+       &:focus,
+       &:selected {
+               .overview-icon {
+                       background-color: transparentize($osd_bg_color,0.8);
+                       color: $osd_fg_color;
+               }
+       }
+
+       &:drop .overview-icon {
+               background-color: transparentize($selected_bg_color,.15);
+       }
+
+       &:active .overview-icon,
+       &:checked .overview-icon {
+               background-color: transparentize(darken($osd_bg_color,10%), 0.5);
+       }
+}
+
+// search result provider
+.search-provider-icon {
+       @extend %icon_tile;
+
+       padding: 0;
+       spacing: 0;
+       margin-right: $base_margin * 2;
+
+       &:focus,
+       &:selected,
+       &:hover {
+               background-color: transparentize($osd_fg_color,.9);
+               transition-duration: 200ms;
+       }
+
+       &:active,
+       &:checked {
+               background-color: transparentize(darken($osd_bg_color,10%),.1);
+       }
+
+       // content
+       .list-search-provider-content {
+               spacing: $base_spacing * 2;
+
+               // provider labels
+               .list-search-provider-details {
+                       width: 120px;
+                       margin-top: 0;
+                       color: darken($osd_fg_color, 8%);
+                       // font-weight: bold;
+               }
+       }
+}
+
+// search results list
+.list-search-results {
+       spacing: $base_spacing;
+}
+
+// search result listitem
+.list-search-result {
+       @extend %icon_tile;
+       spacing: 0;
+       padding: $base_padding;
+       color: $osd_fg_color;
+
+       &:focus,
+       &:selected,
+       &:hover {
+               background-color: transparentize($osd_fg_color,.9);
+               transition-duration: 200ms;
+       }
+       &:active,
+       &:checked {
+               background-color: transparentize(darken($osd_bg_color,10%),.1);
+       }
+
+       // content
+       .list-search-result-content {
+               spacing: 0;
+       }
+
+       // list item title
+       .list-search-result-title {
+               color: $osd_fg_color;
+               spacing: $base_spacing * 2;
+               padding-right: $base_padding;
+               // font-weight: bold;
+       }
+
+       // list item description
+       .list-search-result-description {
+               color: darken($osd_fg_color, 30%);
+       }
+}
\ No newline at end of file
diff --git a/widgets/_slider.scss b/widgets/_slider.scss
new file mode 100644
index 0000000..4b84ad6
--- /dev/null
+++ b/widgets/_slider.scss
@@ -0,0 +1,27 @@
+/* Slider */
+
+$slider_size: 15px;
+
+.slider {
+       height: $slider_size;
+       // slider trough
+       -barlevel-height: 3px; // has to be an odd number
+       -barlevel-background-color: $borders_color; //background of the trough
+       -barlevel-border-width: 1px; 
+       -barlevel-border-color: $borders_color; // trough border color
+       // fill style
+       -barlevel-active-background-color: $selected_bg_color; //active trough fill
+       -barlevel-active-border-color: if($variant == 'light', darken($selected_bg_color, 4%), 
lighten($selected_bg_color, 2%)); //active trough border
+       // overfill style (red in this case)
+       -barlevel-overdrive-color: $destructive_color;
+       -barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), 
lighten($destructive_color, 2%)); //trough border when red;
+       -barlevel-overdrive-separator-width:1px;
+       // slider hander
+       -slider-handle-radius: $slider_size * 0.5; // half the size of the size
+       -slider-handle-border-width: 1px;
+       -slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
+
+       color: if($variant == 'light', lighten($bg_color, 10%), $fg_color);
+       &:hover { color: $hover_bg_color; }
+       &:active { color: $active_bg_color; }
+}
\ No newline at end of file
diff --git a/widgets/_switches.scss b/widgets/_switches.scss
new file mode 100644
index 0000000..51dc478
--- /dev/null
+++ b/widgets/_switches.scss
@@ -0,0 +1,16 @@
+/* Switches */
+
+// these are equal to the size of the SVG assets
+$switch_height: 22px;
+$switch_width: 46px;
+
+.toggle-switch {
+       color: $fg_color;
+       height: $switch_height;
+       width: $switch_width;
+       background-size: contain;
+       background-image: if($variant == 'light', 
url("resource:///org/gnome/shell/theme/toggle-off.svg"),url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
+       &:checked { 
+               background-image: if($variant == 'light', 
url("resource:///org/gnome/shell/theme/toggle-on.svg"),url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
+       }
+}
\ No newline at end of file
diff --git a/widgets/_tiled-previews.scss b/widgets/_tiled-previews.scss
new file mode 100644
index 0000000..f4b8f54
--- /dev/null
+++ b/widgets/_tiled-previews.scss
@@ -0,0 +1,19 @@
+
+/* Tiled window previews */
+$tile_corner_radius: $base_border_radius + 1px;
+.tile-preview {
+       background-color: transparentize($selected_bg_color,0.5);
+       border: 1px solid $selected_bg_color;
+}
+
+.tile-preview-left.on-primary {
+       border-radius: $tile_corner_radius 0 0 0;
+}
+
+.tile-preview-right.on-primary {
+       border-radius: 0 $tile_corner_radius 0 0;
+}
+
+.tile-preview-left.tile-preview-right.on-primary {
+       border-radius: $tile_corner_radius $tile_corner_radius 0 0;
+}
\ No newline at end of file
diff --git a/widgets/_window-picker.scss b/widgets/_window-picker.scss
new file mode 100644
index 0000000..5c9d565
--- /dev/null
+++ b/widgets/_window-picker.scss
@@ -0,0 +1,66 @@
+/* Window Picker */
+
+$window_picker_spacing: 48px;
+$window_picker_padding: 64px;
+
+$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
+
+$window_close_button_size: 24px;
+$window_close_button_padding: 3px;
+
+
+// Window picker
+.window-picker {
+       // Space between window thumbnails
+       -horizontal-spacing: $window_picker_spacing;
+       -vertical-spacing: $window_picker_spacing;
+       // Padding for container around window thumbnails
+       padding: $window_picker_padding;
+
+       &.external-monitor { padding: $window_picker_padding; }
+}
+
+// Borders on window thumbnails
+.window-clone-border {
+       border: 6px solid $window_thumbnail_border_color;
+       border-radius: $base_border_radius + 2px;
+       // For window decorations with round corners we can't match
+       // the exact shape when the window is scaled. So apply a shadow
+       // to fix that case
+       box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
+}
+
+// Window titles
+.window-caption {
+       spacing: 24px;
+       color: $selected_fg_color;
+       background-color: rgba(0,0,0,0.5);
+       border:1px solid rgba(0,0,0,0.6);
+       border-radius: 8px;
+       margin-top: 24px;
+       padding: 4px 12px;
+       font-size: $base_font_size + 1pt;
+       font-weight: bold;
+}
+
+// Close button
+.window-close {
+       background-color: $selected_bg_color;
+       color: $selected_fg_color;
+       border: none;
+       border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
+       padding: $window_close_button_padding;
+       height: $window_close_button_size;
+       width: $window_close_button_size;
+       box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
+
+       -shell-close-overlap: $window_close_button_size * 0.5;
+
+       &:hover {
+               background-color: lighten($selected_bg_color, 5%);
+       }
+
+       &:active {
+               background-color: darken($selected_bg_color, 5%);
+       }
+}
\ No newline at end of file
diff --git a/widgets/_workspace-switcher.scss b/widgets/_workspace-switcher.scss
new file mode 100644
index 0000000..cf5e6af
--- /dev/null
+++ b/widgets/_workspace-switcher.scss
@@ -0,0 +1,70 @@
+/* Workspace Switcher */
+.workspace-switcher-group {
+       padding: $base_padding * 2;
+}
+
+.workspace-switcher-container {
+       @extend %osd_panel;
+       box-shadow: 0 2px 10px 2px rgba(0,0,0,0.2);
+}
+
+.workspace-switcher {
+       background: transparent;
+       border: none;
+       border-radius: 0;
+       padding: 0;
+       spacing: $base_spacing * 2;
+
+       .ws-switcher-box {
+               // background: transparent;
+               background: transparent;
+               height: 50px;
+               background-size: 32px;
+               border: 1px solid transparentize($osd_fg_color,0.9);
+               border-radius: $base_border_radius + 3px;
+       }
+
+       // active workspace in the switcher
+       .ws-switcher-active-up,
+       .ws-switcher-active-down,
+       .ws-switcher-active-left,
+       .ws-switcher-active-right {
+               background-color: $selected_bg_color;
+               border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), 
lighten($selected_bg_color, 5%));
+               color: $selected_fg_color;
+       }
+}
+
+/* Workspace pager */
+
+// thumbnails in overview
+.workspace-thumbnails { 
+       @extend %overview_panel;
+       visible-width: 32px; //amount visible before hover
+       spacing: $base_spacing;
+       padding: $base_padding;
+
+       //fixme: can't have non uniform borders :(
+       border-top-left-radius:0 !important;
+       border-bottom-left-radius:0 !important;
+       border-right-width: 0 !important;
+       &:rtl { 
+               border-radius: 0 $modal_radius $modal_radius 0; 
+               border-left-width: 0 !important;
+       }
+
+       // drag and drop indicator
+       .placeholder {
+               background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
+               background-size: contain;
+               height: 24px;
+       }
+}
+
+// selected indicator
+.workspace-thumbnail-indicator {
+       border: 3px solid $selected_bg_color;
+       border-radius: 3px;
+       padding: 0px;
+       // background-color: transparentize($selected_bg_color, 0.9);
+}
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]