| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | //// Button groups// --------------------------------------------------// Make the div behave like a button.btn-group,.btn-group-vertical {  position: relative;  display: inline-block;  vertical-align: middle; // match .btn alignment given font-size hack above  > .btn {    position: relative;    float: left;    // Bring the "active" button to the front    &:hover,    &:focus,    &:active,    &.active {      z-index: 2;    }  }}// Prevent double borders when buttons are next to each other.btn-group {  .btn + .btn,  .btn + .btn-group,  .btn-group + .btn,  .btn-group + .btn-group {    margin-left: -1px;  }}// Optional: Group multiple button groups together for a toolbar.btn-toolbar {  margin-left: -5px; // Offset the first child's margin  &:extend(.clearfix all);  .btn,  .btn-group,  .input-group {    float: left;  }  > .btn,  > .btn-group,  > .input-group {    margin-left: 5px;  }}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {  border-radius: 0;}// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match.btn-group > .btn:first-child {  margin-left: 0;  &:not(:last-child):not(.dropdown-toggle) {    .border-right-radius(0);  }}// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child) {  .border-left-radius(0);}// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group).btn-group > .btn-group {  float: left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {  border-radius: 0;}.btn-group > .btn-group:first-child:not(:last-child) {  > .btn:last-child,  > .dropdown-toggle {    .border-right-radius(0);  }}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {  .border-left-radius(0);}// On active and open, don't show outline.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle {  outline: 0;}// Sizing//// Remix the default button sizing classes into new ones for easier manipulation..btn-group-xs > .btn { &:extend(.btn-xs); }.btn-group-sm > .btn { &:extend(.btn-sm); }.btn-group-lg > .btn { &:extend(.btn-lg); }// Split button dropdowns// ----------------------// Give the line between buttons some depth.btn-group > .btn + .dropdown-toggle {  padding-left: 8px;  padding-right: 8px;}.btn-group > .btn-lg + .dropdown-toggle {  padding-left: 12px;  padding-right: 12px;}// The clickable button for toggling the menu// Remove the gradient and set the same inset shadow as the :active state.btn-group.open .dropdown-toggle {  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));  // Show no shadow for `.btn-link` since it has no other button styles.  &.btn-link {    .box-shadow(none);  }}// Reposition the caret.btn .caret {  margin-left: 0;}// Carets in other button sizes.btn-lg .caret {  border-width: @caret-width-large @caret-width-large 0;  border-bottom-width: 0;}// Upside down carets for .dropup.dropup .btn-lg .caret {  border-width: 0 @caret-width-large @caret-width-large;}// Vertical button groups// ----------------------.btn-group-vertical {  > .btn,  > .btn-group,  > .btn-group > .btn {    display: block;    float: none;    width: 100%;    max-width: 100%;  }  // Clear floats so dropdown menus can be properly placed  > .btn-group {    &:extend(.clearfix all);    > .btn {      float: none;    }  }  > .btn + .btn,  > .btn + .btn-group,  > .btn-group + .btn,  > .btn-group + .btn-group {    margin-top: -1px;    margin-left: 0;  }}.btn-group-vertical > .btn {  &:not(:first-child):not(:last-child) {    border-radius: 0;  }  &:first-child:not(:last-child) {    .border-top-radius(@btn-border-radius-base);    .border-bottom-radius(0);  }  &:last-child:not(:first-child) {    .border-top-radius(0);    .border-bottom-radius(@btn-border-radius-base);  }}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {  border-radius: 0;}.btn-group-vertical > .btn-group:first-child:not(:last-child) {  > .btn:last-child,  > .dropdown-toggle {    .border-bottom-radius(0);  }}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {  .border-top-radius(0);}// Justified button groups// ----------------------.btn-group-justified {  display: table;  width: 100%;  table-layout: fixed;  border-collapse: separate;  > .btn,  > .btn-group {    float: none;    display: table-cell;    width: 1%;  }  > .btn-group .btn {    width: 100%;  }  > .btn-group .dropdown-menu {    left: auto;  }}// Checkbox and radio options//// In order to support the browser's form validation feedback, powered by the// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use// `display: none;` or `visibility: hidden;` as that also hides the popover.// Simply visually hiding the inputs via `opacity` would leave them clickable in// certain cases which is prevented by using `clip` and `pointer-events`.// This way, we ensure a DOM element is visible to position the popover from.//// See https://github.com/twbs/bootstrap/pull/12794 and// https://github.com/twbs/bootstrap/pull/14559 for more information.[data-toggle="buttons"] {  > .btn,  > .btn-group > .btn {    input[type="radio"],    input[type="checkbox"] {      position: absolute;      clip: rect(0,0,0,0);      pointer-events: none;    }  }}
 |