/****************
 * Text Entries *
 ****************/

 %entry,
 entry {
   %entry_basic, & {
     min-height: 25px;
     padding-left: 8px;
     padding-right: 8px;
     border: 1px solid;
     border-radius: 3px;
     transition: all 200ms $ease-out-quad;
 
     @include entry(normal);
 
     image { // icons inside the entry
       &.left { padding-left: 0; padding-right: 6px; }
       &.right { padding-left: 6px; padding-right: 0; }
     }
 
     undershoot {
       &.left { @include undershoot(left); }
       &.right { @include undershoot(right); }
     }
 
     &.flat {
       &:focus-within, & {
         min-height: 0;
         padding: 2px;
         background-image: none;
         border-color: transparent;
         box-shadow: none;
         border-radius: 0;
       }
     }
 
     &:focus-within { @include entry(focus); }
 
     &:disabled { @include entry(insensitive); }
 
     &:backdrop {
       @include entry(backdrop);
 
       transition: $backdrop_transition;
     }
 
     &:backdrop:disabled { @include entry(backdrop-insensitive); }
 
     selection { &:focus, & { @extend %selected_items; }}
 
     // entry error and warning style
     @each $e_type, $e_color in (error, $error_color),
                                (warning, $warning_color) {
       &.#{$e_type} {
         @include entry(normal);
         color: $e_color;
         border-color: entry_focus_border($e_color);
 
         &:focus-within { @include entry(focus, $e_color); }
 
         &:selected { &:focus, & { background-color: $e_color; }}
       }
     }
 
     & image { // entry icons colors
       color: mix($fg_color, $base_color, 80%);
 
       &:hover { color: $fg_color; }
 
       &:active { color: $selected_bg_color; }
 
       &:backdrop { color: mix($backdrop_fg_color, $backdrop_base_color, 80%); }
     }
 
     &:drop(active) {
       &:focus-within, & {
         border-color: $drop_target_color;
         box-shadow: inset 0 0 0 1px $drop_target_color;
       }
     }
 
     .osd & {
       @include entry(osd);
 
       &:focus-within { @include entry(osd-focus); }
 
       &:backdrop { @include entry(osd-backdrop); }
 
       &:disabled { @include entry(osd-insensitive); }
     }
   }
 
   progress {
     margin: 2px -6px;
     background-color: transparent;
     background-image: none;
     border-radius: 0;
     border-width: 0 0 2px;
     border-color: $selected_bg_color;
     border-style: solid;
     box-shadow: none;
 
     &:backdrop { background-color: transparent; }
   }
 
    // linked entries
  .linked:not(.vertical) > & { @extend %linked; }

  .linked:not(.vertical) > &:drop(active) + &,
  .linked:not(.vertical) > &:drop(active) + button,
  .linked:not(.vertical) > &:drop(active) + menubutton > button,
  .linked:not(.vertical) > &:drop(active) + dropdown > button,
  .linked:not(.vertical) > &:drop(active) + colorbutton > button,
  .linked:not(.vertical) > &:drop(active) + fontbutton > button,
  .linked:not(.vertical) > &:drop(active) + filechooserbutton > button,
  .linked:not(.vertical) > &:drop(active) + filechooserbutton > combobox > box > button.combo,
  .linked:not(.vertical) > &:drop(active) + appchooserbutton > combobox > box > button.combo,
  .linked:not(.vertical) > &:drop(active) + combobox > box > button.combo { border-left-color: $drop_target_color; }
  
  .linked:not(.vertical) > & { 
    border-right-style: solid;
    border-right-color: transparent;
    &:focus-within {
      @include entry(focus); 
      + .popup button {
        border-left-width: 1px;
        border-left-style: solid;
        border-left-color: $selected_bg_color;
      }
    }

    + .popup button { border-radius: 0px 6px 6px 0px; }
  }
  
   // Vertically linked entries
   // FIXME: take care of "colored" entries
   .linked.vertical > & {
     @extend %linked_vertical;
 
     // brighter border between linked entries
     &:not(:disabled) + entry:not(:disabled),
     &:not(:disabled) + %entry:not(:disabled) {
       border-top-color: mix($borders_color, $base_color, 30%);
       background-image: linear-gradient(to bottom, $base_color, $base_color);
 
       &:backdrop {
         border-top-color: mix($backdrop_borders_color, $backdrop_base_color, 30%);
         background-image: linear-gradient(to bottom, $backdrop_base_color, $backdrop_base_color);
       }
     }
 
     // brighter border between linked insensitive entries
     &:disabled + %entry:disabled,
     &:disabled + entry:disabled { border-top-color: mix($borders_color, $base_color, 30%); }
 
     // color back the top border of a linked focused entry following another entry and add back the focus shadow.
     // :not(:only-child) is a specificity bump hack.
     + %entry:focus:not(:only-child),
     + entry:focus:not(:only-child) { border-top-color: entry_focus_border(); }
 
     + %entry:drop(active):not(:only-child),
     + entry:drop(active):not(:only-child) { border-top-color: $drop_target_color; }
 
     // this takes care of coloring the top border of the focused entry subsequent widget.
     // :not(:only-child) is a specificity bump hack.
     &:focus:not(:only-child) {
       + %entry,
       + entry,
       + button,
       + combobox > box > button.combo { border-top-color: entry_focus_border(); }
     }
 
     &:drop(active):not(:only-child) {
       + %entry,
       + entry,
       + button,
       + combobox > box > button.combo { border-top-color: $drop_target_color; }
     }
   }
 }
 
 treeview entry {
   &:focus-within {
     &:dir(rtl), &:dir(ltr) { // specificity bump hack
       background-color: $base_color;
       transition-property: color, background;
     }
   }
 
   &.flat, & {
     border-radius: 0;
     background-image: none;
     background-color: $base_color;
 
     &:focus-within { border-color: $selected_bg_color; }
   }
 }
 