SOURCE CODE: Uize.Widgets.Button.Css (view docs)

<%@ required ('Uize.Widgets.CssUtil'); %>
<%
  var
    _cssUtil = Uize.Widgets.CssUtil,
    _boxBorderWidth = _cssUtil.box.border.width
  ;

  function _buttonBgGradient (_topColor,_bottomColor,_fallbackColor) {
    %>
    background: <%= _fallbackColor %>; /* Old browsers */
    background: -moz-linear-gradient(top,  <%= _topColor %> 0%, <%= _bottomColor %> 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,<%= _topColor %>), color-stop(100%,<%= _bottomColor %>)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  <%= _topColor %> 0%,<%= _bottomColor %> 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  <%= _topColor %> 0%,<%= _bottomColor %> 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  <%= _topColor %> 0%,<%= _bottomColor %> 100%); /* IE10+ */
    background: linear-gradient(to bottom,  <%= _topColor %> 0%,<%= _bottomColor %> 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='<%= _topColor %>', endColorstr='<%= _bottomColor %>',GradientType=0 ); /* IE6-9 */
    <%
  }
%>
/*** base styling ***/
  .``, .``:link, .``:visited, .``:hover, .``:active {
    font-family: <%= _cssUtil.font.family %>;
    font-weight: bold;
    display: inline-block;
    border-width: <%= _boxBorderWidth %>px;
    border-style: solid;
    border-radius: 3px;
    text-decoration: none;
    cursor: pointer;
  }

/*** styling for different display states ***/
  /*** normal flavor ***/
    .`normal`,
    .`normal`:link,
    .`normal`:visited,
    .`normal`:hover,
    .`normal`:active {
      border-color: #ccc #999 #999 #ccc;
      color: #444;
      text-shadow: 1px -1px 0 #fff, 1px 0px 0 #fff, 1px 1px 0 #fff;
      <% _buttonBgGradient ('#ffffff','#e0e0e0','#eeeeee') %>
    }

    .`normal-over`,
    .`normal-over`:link,
    .`normal-over`:visited,
    .`normal-over`:hover,
    .`normal-over`:active {
      border-color: #aaa #777 #777 #aaa;
      color: #222;
      text-shadow: 1px -1px 0 #fff, 1px 0px 0 #fff, 1px 1px 0 #fff;
      background: #efefef;
      filter: none;
    }

    .`normal-active`,
    .`normal-active`:link,
    .`normal-active`:visited,
    .`normal-active`:hover,
    .`normal-active`:active {
      border-color: #666;
      color: #000;
      text-shadow: 1px -1px 0 #fff, 1px 0px 0 #fff, 1px 1px 0 #fff;
      box-shadow: inset 0 2px 4px rgba(0,0,0,.1);
      background: #fff;
      filter: none;
    }

    .`normal-disabled`,
    .`normal-disabled`:link,
    .`normal-disabled`:visited,
    .`normal-disabled`:hover,
    .`normal-disabled`:active {
      border-color: #d3d3d3;
      background: #e6e6e6;
      filter: none;
      color: #bbb;
      text-shadow: none;
      cursor: default;
    }

  /*** subdued flavor ***/
    .`subdued`,
    .`subdued`:link,
    .`subdued`:visited,
    .`subdued`:hover,
    .`subdued`:active {
      border-color: transparent;
      color: #444;
      text-shadow: none;
      background; none;
    }

    .`subdued-over`,
    .`subdued-over`:link,
    .`subdued-over`:visited,
    .`subdued-over`:hover,
    .`subdued-over`:active {
      border-color: #aaa #777 #777 #aaa;
      color: #222;
      text-shadow: 1px -1px 0 #fff, 1px 0px 0 #fff, 1px 1px 0 #fff;
      background: #efefef;
      filter: none;
    }

    .`subdued-active`,
    .`subdued-active`:link,
    .`subdued-active`:visited,
    .`subdued-active`:hover,
    .`subdued-active`:active {
      border-color: #666;
      color: #000;
      text-shadow: 1px -1px 0 #fff, 1px 0px 0 #fff, 1px 1px 0 #fff;
      box-shadow: inset 0 2px 4px rgba(0,0,0,.1);
      background: #fff;
      filter: none;
    }

    .`subdued-disabled`,
    .`subdued-disabled`:link,
    .`subdued-disabled`:visited,
    .`subdued-disabled`:hover,
    .`subdued-disabled`:active {
      border-color: transparent;
      background: none;
      filter: none;
      color: #bbb;
      text-shadow: none;
      cursor: default;
    }

  /*** positive flavor ***/
    .`positive`,
    .`positive`:link,
    .`positive`:visited,
    .`positive`:hover,
    .`positive`:active {
      border-color: #9c9 #696 #585 #9c9;
      color: #fff;
      <% _buttonBgGradient ('#88dd44','#559922','#55aa22') %>
    }

    .`positive-over`,
    .`positive-over`:link,
    .`positive-over`:visited,
    .`positive-over`:hover,
    .`positive-over`:active {
      border-color: #7a7 #474 #474 #7a7;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      background: #6b3;
      filter: none;
    }

    .`positive-active`,
    .`positive-active`:link,
    .`positive-active`:visited,
    .`positive-active`:hover,
    .`positive-active`:active {
      border-color: #584;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      box-shadow: inset 0 4px 6px rgba(0,0,0,.1);
      background: #7c4;
      filter: none;
    }

    .`positive-disabled`,
    .`positive-disabled`:link,
    .`positive-disabled`:visited,
    .`positive-disabled`:hover,
    .`positive-disabled`:active {
      border-color: #bc9;
      background: #bd8;
      filter: none;
      color: rgba(255,255,255,.5);
      text-shadow: none;
      cursor: default;
    }

  /*** negative flavor ***/
    .`negative`,
    .`negative`:link,
    .`negative`:visited,
    .`negative`:hover,
    .`negative`:active {
      border-color: #cc9999 #996666 #875454 #cc9999;
      color: #fff;
      <% _buttonBgGradient ('#dd4646','#9b2222','##aa2222') %>
    }

    .`negative-over`,
    .`negative-over`:link,
    .`negative-over`:visited,
    .`negative-over`:hover,
    .`negative-over`:active {
      border-color: #ab7878 #784545 #784545 #ab7878;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      background: #bc3434;
      filter: none;
    }

    .`negative-active`,
    .`negative-active`:link,
    .`negative-active`:visited,
    .`negative-active`:hover,
    .`negative-active`:active {
      border-color: #884444;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      box-shadow: inset 0 4px 6px rgba(0,0,0,.1);
      background: #cb4343;
      filter: none;
    }

    .`negative-disabled`,
    .`negative-disabled`:link,
    .`negative-disabled`:visited,
    .`negative-disabled`:hover,
    .`negative-disabled`:active {
      border-color: #cc9999;
      background: #dd8888;
      filter: none;
      color: rgba(255,255,255,.5);
      text-shadow: none;
      cursor: default;
    }

  /*** primary flavor ***/
    .`primary`,
    .`primary`:link,
    .`primary`:visited,
    .`primary`:hover,
    .`primary`:active {
      border-color: #99bbcc #668899 #547687 #99bbcc;
      color: #fff;
      <% _buttonBgGradient ('#46abdd','#22729b','#227daa') %>
    }

    .`primary-over`,
    .`primary-over`:link,
    .`primary-over`:visited,
    .`primary-over`:hover,
    .`primary-over`:active {
      border-color: #789aab #456778 #456778 #789aab;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      background: #348fbc;
      filter: none;
    }

    .`primary-active`,
    .`primary-active`:link,
    .`primary-active`:visited,
    .`primary-active`:hover,
    .`primary-active`:active {
      border-color: #447188;
      color: #fff;
      text-shadow: 1px -1px 1px rgba(0,0,0,.1), 1px 0px 1px rgba(0,0,0,.1), 1px 1px 1px rgba(0,0,0,.1);
      box-shadow: inset 0 4px 6px rgba(0,0,0,.1);
      background: #439ecb;
      filter: none;
    }

    .`primary-disabled`,
    .`primary-disabled`:link,
    .`primary-disabled`:visited,
    .`primary-disabled`:hover,
    .`primary-disabled`:active {
      border-color: #99bbcc;
      background: #88c1dd;
      filter: none;
      color: rgba(255,255,255,.5);
      text-shadow: none;
      cursor: default;
    }

/*** styling for busy state ***/
  .`busy`, .`busy`:link, .`busy`:visited, .`busy`:hover, .`busy`:active {
    cursor: wait;
  }

/*** styling for different sizes ***/
<%
  var _sizes = _cssUtil.sizes;
  function _sizeStyleProperties (_sizeName,_horizontalPadding) {
    var
      _size = _sizes [_sizeName],
      _sizeFont = _size.font,
      _sizeOuter = _size.outer,
      _padding = _sizeOuter - _boxBorderWidth * 2 - _sizeFont,
      _topPadding = Math.floor (_padding / 2)
    ;
    %>font-size: <%= _sizeFont %>px;
    line-height: <%= _sizeFont %>px;
    padding: <%= _topPadding %>px <%= _horizontalPadding %>px <%= _padding - _topPadding %>px <%= _horizontalPadding %>px;<%
  }
%>
  .`tiny` {
    <% _sizeStyleProperties ('tiny',8) %>
  }

  .`small` {
    <% _sizeStyleProperties ('small',9) %>
  }

  .`medium` {
    <% _sizeStyleProperties ('medium',14) %>
  }

  .`large` {
    <% _sizeStyleProperties ('large',17) %>
  }