.mb-mails .mb-mail-preview {
    clear: both;
    margin-top: 10px;
    color: #3e4049;
    margin-top: 2px;
}

.mb-mails > tbody > tr > td {
    /* border-top-color: transparent; */
    cursor: pointer;
}

.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
    padding: 8px;
    line-height: 1.52857143;
    /*vertical-align: top;*/
    /*border-top: 1px solid rgba(0, 0, 0, 0.07);*/
}

.col-centered{
    float: none;
    margin: 0 auto;
}

.home-row {
  margin-top: 25px;
  margin-bottom: 25px;
}
.ngdialog.ngdialog-theme-default .ngdialog-content {
    width: 75%;
}

.animate-repeat {
}

.animate-repeat.ng-move,
.animate-repeat.ng-enter,
.animate-repeat.ng-leave {
  transition:all linear 0.25s;
}

.animate-repeat.ng-leave.ng-leave-active,
.animate-repeat.ng-move,
.animate-repeat.ng-enter {
  opacity:0;
  /*transform:scale(0,0);
  -ms-transform:scale(0,0);
  -webkit-transform:scale(0,0);*/
}

.animate-repeat.ng-leave,
.animate-repeat.ng-move.ng-move-active,
.animate-repeat.ng-enter.ng-enter-active {
  opacity:1;
  /*transform:scale(1,1);
  -ms-transform:scale(1,1);
  -webkit-transform:scale(1,1);*/
}

.fsloader{
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  right:0;
  z-index:100;
  background-color:rgba(255,255,255,0.9);
}
.fsloader .loadingw{
  text-align:center;
  display:table;
  width:100%;
  height:100%;
}
.fsloader .loadingw loading{
  display:table-cell;
  vertical-align:middle;
}

.hand{ cursor: pointer; }

/*
 * Archive avatars: empty/null profile_url used to leave a broken <img>
 * (alt text like "CASEY M…" + browser border) over the default avatar.
 * Prefer a real SVG src from fixtures; these rules cover residual empties.
 */
.ne__avatar img,
img.mb-mail-avatar,
.ne__avatar__wrapper img {
  border: 0 !important;
  outline: none;
  box-shadow: none;
  /* hide alt text if the image still fails to load */
  color: transparent;
  font-size: 0;
  text-indent: -9999px;
}

.ne__avatar img[src=""],
.ne__avatar img:not([src]),
.ne__avatar img[src="null"],
.ne__avatar img[src="undefined"],
img.mb-mail-avatar[src=""],
img.mb-mail-avatar:not([src]) {
  /* keep layout; show CSS background avatar instead of broken icon */
  opacity: 0;
}

.ne__avatar {
  overflow: hidden;
  border-radius: 50%;
  background-image: url("../img/icon/avatar.svg");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

/*
 * Analytics 3D bar chart.
 *
 * Historical markup nests faces under .ne__bar-graph__bar; each face uses
 * absolute left % inside .ne__bar-graph__bar-group (barsN / bar-60-N rules).
 * Bars must *overlay* the group — not stack in normal flow. Absolute overlay
 * restores side-by-side 3D bars.
 *
 * Face transforms must match historical `_bar-graph.scss`:
 *   left:  rotateY(-90deg) translate3d(-50%, 0, 0)
 *   right: rotateY( 90deg) translate3d( 50%, 0, 0)
 *   top:   rotateX(-90deg) translate3d(0, 100%, 0)  origin 100% 100%
 * Earlier -55deg / scaleX hacks flattened the cubes into flat strips.
 */
.ne__analytics .ne__bar-graph {
  /* Room inside the pane — bars must not grow out the top of the viewport */
  box-sizing: border-box;
  min-height: 16rem;
  height: min(36vh, 22rem);
  max-height: 22rem;
  padding: 1.5rem 1rem 0.5rem;
  position: relative;
  align-items: flex-end;
  overflow: hidden;
}

.ne__analytics .ne__bar-graph__bar-group {
  perspective: 55rem !important;
  perspective-origin: 50% 75%; /* historical */
  transform-style: preserve-3d;
  position: relative;
  height: 100%;
  width: 100%;
  margin-bottom: 4.5rem; /* space for legend metatext */
  overflow: visible;
}

/* Every series bar covers the full chart; faces pick their column via left %. */
.ne__analytics .ne__bar-graph__bar {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  /* Intermediate 3D context so face rotateY/X stay true 3D (not flattened) */
  transform-style: preserve-3d;
  pointer-events: none;
  overflow: visible;
}

.ne__analytics .ne__bar-graph__bar .side {
  pointer-events: auto;
  transform-style: preserve-3d;
  backface-visibility: visible;
  will-change: height, bottom;
  transition:
    height 1s cubic-bezier(0.32, 0.01, 0, 1),
    bottom 1s cubic-bezier(0.32, 0.01, 0, 1),
    background-color 0.5s cubic-bezier(0.32, 0.01, 0, 1);
}

/*
 * Historical face transforms from style.css / _bar-graph.scss.
 * Re-assert with equal-or-higher specificity so nothing flattens them again.
 */
.ne__analytics .ne__bar-graph__bar-group .leftside {
  transform: rotateY(-90deg) translate3d(-50%, 0, 0);
  transform-origin: center center;
  z-index: 2;
}

.ne__analytics .ne__bar-graph__bar-group .rightside {
  transform: rotateY(90deg) translate3d(50%, 0, 0);
  transform-origin: center center;
  z-index: 2;
}

.ne__analytics .ne__bar-graph__bar-group .topside {
  transform-origin: 100% 100%;
  transform: rotateX(-90deg) translate3d(0, 100%, 0);
  z-index: 1;
}

.ne__analytics .ne__bar-graph__bar-group .frontside {
  z-index: 3;
}

.ne__analytics .ne__bar-graph__bar-group .shadowbase {
  top: 100%;
  box-shadow: #000 0 0 64px;
  opacity: 0.2;
  border-radius: 40%;
  background-color: rgba(0, 0, 0, 0.5);
  transform-origin: 0 0;
  transform: rotateX(-90deg) scaleY(2) translate3d(0, 0, 0);
  z-index: 0;
}

.ne__analytics .ne__bar-graph__legend {
  height: auto !important;
  min-height: 3rem;
  overflow: visible;
}
