Test for two means: Equal-variances assumption


Conditional

Unconditional


Test for two means: Normality assumption


Conditional

Unconditional


Test for two means: Equal-variances and Normality assumptions


Conditional

Unconditional


show with app
# TEST FUNCTIONS

# Robust test of means
# Equal variances
test.robust.eq <- function(m1, m2, v1, v2, n1, n2, sk1, sk2){
  vp <- ( (n1 - 1)*v1 + (n2-1)*v2 ) / (n1 + n2 - 2) # Pooled variance
  b1 <- ( ( (sk1*(v1^1.5) )/(6*(n1^2)*(v1/n1+v2/n2)) )+ ( ( (sk1 * v1^1.5)/(2*n1*n2) - (sk1*v1^1.5)/(6*(n1^2)) )*( (m1-m2)^2/(v1/m1+v2/m2)^2 ) ) ) / sqrt(vp * (1/n1+1/n2))
  b2 <- ( ( (sk2*(v2^1.5) )/(6*(n2^2)*(v2/n2+v1/n1)) )+ ( ( (sk2 * v2^1.5)/(2*n1*n2) - (sk2*v2^1.5)/(6*(n2^2)) )*( (m2-m1)^2/(v2/m2+v1/m1)^2 ) ) ) / sqrt(vp * (1/n2+1/n1))
  t <- (m1 - m2) / sqrt( v1/n1 + v2/n2 )
  u <- t + (b1 - b2)
  df <- n1+n2-2
  pval <- 2*pt(abs(u), df = df, lower.tail = F)
  return(pval)
}

# Unequal variances
test.robust.uneq <- function(m1, m2, v1, v2, n1, n2, sk1, sk2){
  b1 <- ( ( (sk1*v1^1.5)/(6*n1^2*(v1/n1+v2/n2)) )+( (sk1*v1^1.5*(m1-m2)^2)/ (3*n1^2*(v1/n1+v2/n2)^2) ) ) / ( sqrt( v1/n1 + v2/n2 ) )
  b2 <- ( ( (sk2*v2^1.5)/(6*n2^2*(v2/n2+v1/n1)) )+( (sk2*v2^1.5*(m2-m1)^2)/ (3*n2^2*(v2/n2+v1/n1)^2) ) ) / ( sqrt( v2/n2 + v1/n1 ) )
  t <- (m1 - m2) / sqrt( v1/n1 + v2/n2 )
  u <- t + (b1 - b2)
  df <- ( v1/n1 + v2/n2 )^2 / ( (v1/n1)^2/(n1-1)+(v2/n2)^2/(n2-1) )
  pval <- 2*pt(abs(u), df = df, lower.tail = F)
  return(pval)
}

# Student's t test
test.student <- function(samplemeans1, samplemeans2, sampleunbvariance1, sampleunbvariance2, n1, n2){
          N <- n1 + n2
          nom <- (samplemeans1 - samplemeans2) 
          tstat_eqvar <-  nom / sqrt( ( ( (n1-1)*sampleunbvariance1 + (n2-1)*sampleunbvariance2 )/(N-2) ) * (1/n1+1/n2) )
          df_eqvar <- N-2
          pval_teq <- 2*pt(abs(tstat_eqvar), df = df_eqvar, lower.tail = F)
          return(pval_teq)
}

# Welch t test
    test.welch <- function(samplemeans1, samplemeans2, sampleunbvariance1, sampleunbvariance2, n1, n2){
        nom <- (samplemeans1 - samplemeans2)
        tstat_uneqvar <- nom / sqrt( sampleunbvariance1/n1 + sampleunbvariance2/n2 )
        df_uneqvar <- ( sampleunbvariance1/n1 + sampleunbvariance2/n2 )^2 / ( (sampleunbvariance1/n1)^2/(n1-1)+(sampleunbvariance2/n2)^2/(n2-1) )
        pval_tuneq <- 2*pt(abs(tstat_uneqvar), df = df_uneqvar, lower.tail = F)
        return(pval_tuneq)
    }

# F test
test.f <- function(var1, var2, n1, n2){
  fstat <- var1/var2
  df_f <- c(n1-1, n2-1)
  plower <- pf(fstat, df_f[1], df_f[2], lower.tail = F)
  pupper <- pf(fstat, df_f[1], df_f[2], lower.tail = T)
  pval <- 2*pmin(plower, pupper)
  return(pval)
}

# Levene test
test.levene <- function(data1, data2, samplemeans1, samplemeans2, n1, n2){
  
    N <- n1 + n2
  
    y1 <- t(abs(t(data1) - samplemeans1)) # Or median
    y2 <- t(abs(t(data2) - samplemeans2))
    y12 <- rbind(y1, y2)
    y <- colMeans(y12)
    
    wstat <- (N-2) *
      ( n1 * ( colMeans(y1) - y)^2 + n2 * ( colMeans(y2) - y)^2 ) /
      ( colSums( ( t(t(y1) - colMeans(y1)) )^2) + colSums( (t(t(y2) - colMeans(y2)))^2) )
     df_w <- c(1, N-2)
     
     plower <- pf(wstat, df_w[1], df_w[2], lower.tail = F)
     pupper <- pf(wstat, df_w[1], df_w[2], lower.tail = T)
     
    pval_l <- 2*pmin(plower, pupper)
    
    return(pval_l)
}

# Chi square test
test.chi <- function(data1, data2){ # 10 breaks
  breaksprob <- seq(0.10, 1, 0.10)
  nint <- length(breaksprob)
  df_chi <- (nint-3)
  breaks <- c(-Inf, qnorm(breaksprob, 0, 1))
  
  # Group 1
  n1 <- length(data1)
  temp <- hist(data1, breaks = breaks, plot = F)
  yvar <- temp$counts
  expected <- n1/nint
  chistat <- sum((yvar-expected)^2/expected)
  pval_chi1 <- pchisq(chistat, df = df_chi, lower.tail = F)
  
  # Group 2
  n2 <- length(data2)
  temp <- hist(data2, breaks = breaks, plot = F)
  yvar <- temp$counts
  expected <- n2/nint
  chistat <- sum((yvar-expected)^2/expected)
  pval_chi2 <- pchisq(chistat, df = df_chi, lower.tail = F)
  
  res <- c(pval_chi1, pval_chi2)
  names(res) <- c("Group 1", "Group 2")
  return(res)
}

# LAPLACE DISTRIBUTION

dlaplace <- function(x, location, scale){ # Probability density function
  res <- 1/(2*scale) * exp( - abs(x - location)/scale )
  return(res)
}
plaplace <- function(x, location, scale){ # Distribution function
  res <- numeric(length(x))
  res[x < location] <- 1/2 * exp((x-location)/scale)
  res[x >= location] <- 1 - 1/2 * exp(-(x-location)/scale)
  return(res)
}
qlaplace <- function(p, location, scale){ # Inverse distribution function (for random n. generation)
  res <- sgn <- numeric(length(p))
  p0 <- p - 0.5
  sgn <- sign(p0)
  res <- location - scale * sgn * log( 1-2*abs(p-0.5) )
}
rlaplace <- function(n, location, scale){ # Generate n Laplace distributed random numbers
  p <- runif(n, 0, 1)
  res <- qlaplace(p, location = location, scale = scale)
  return(res)
}

# BETA DISTRIBUTION

area.beta <- function (x, y){
  npos <- length (x)
  fact <- sum((x[2:npos]-x[1:(npos-1)])*y[1:(npos-1)])
  return(fact)  
}

# MOMENTS

A1 <- function(dist = 0, param = 0){
  if(dist == "dnorm"){
    res <- param[1]
  } else if (dist == "dunif"){
    res <- (param[1]+param[2])/2
  } else if(dist == "dlnorm"){
    res <- exp(param[1] + param[2]^2/2)
  } else if(dist == "dbeta"){
    res <- param[1] / (param[1]+param[2])
  } else if(dist == "dlaplace"){
    res <- param[1]
  }
  return(res)
}

A2 <- function(dist = 0, param = 0, betasd = 0.8){
  if(dist == "dnorm"){
    res <- param[2]^2
  } else if (dist == "dunif"){
    res <- 1/12 * (param[2]-param[1])^2
  } else if(dist == "dlnorm"){
    res <- ( exp(param[2]^2)-1 ) * exp( 2*param[1] + param[2]^2 )
  } else if (dist == "dbeta"){
    res <- betasd^2
    #res <- (param[1] * param[2]) / ( (param[1]+param[2])^2*(param[1]+param[2]+1) )
  } else if (dist == "dlaplace"){
    res <- 2*param[2]^2
  }
  return(res)
}

A3 <- function(datos = 0, dist = 0, param = 0){
  if(dist == "dnorm" | dist == "dunif"){
    res <- 0
  } else if(dist == "dlnorm"){
    res <- ( exp(param[2]^2)+2 )*sqrt( exp(param[2]^2)-1 )
  } else if(dist == "dbeta"){
    res <- (2* (param[2] - param[1])*sqrt(param[1] + param[2] + 1) ) / ( (param[1] + param[2] + 2)*sqrt(param[1] * param[2]) )
  } else if(dist == "dlaplace"){
    res <- 0
  } else {
    n <- length(datos)
    res <- sum((datos-mean(datos))^3)/(sqrt(var(datos))^3*n) ### 
  }
  return(res)
}

A4 <- function(datos = 0, dist = 0, param = 0){
  if(dist == "dnorm"){
    res <- 0
  } else if (dist == "dunif"){
    res <- -6/5
  } else if(dist == "dlnorm"){
    res <- exp(4*param[2]^2) + 2 * exp(3*param[2]^2) + 3 * exp(2*param[2]^2)-6
  } else if (dist == "dbeta"){
    res <- ( 6 * ((param[1]-param[2])^2*(param[1]+param[2]+1)-param[1]*param[2]*(param[1] + param[2] + 2)) ) / (param[1] * param[2] * (param[1] + param[2] + 2)*(param[1] + param[2] + 3))
  } else if(dist == "dlaplace"){
    res <- 3
  } else {
    n <- length(datos)
    res <- sum((datos-mean(datos))^4)/( sqrt(var(datos))^4*n)-3 ### OJO ###
  }
  return(res)
}
# This script contains PLOT FUNCTIONS, but only HISTOGRAMS

# bounds_2 <- seq(0, 1, 0.05) # Length 21

# Test of normality (large)
plot.histograms.normality <- function(results = NA, results.all = NA, nrep = NA, alpha = 0.05, alphagraph = 0.05, default = F) {
  
 bounds_0 <- seq(0, min(c(alphagraph, 0.05)), by = min(c(alphagraph, 0.05))) # length 1
 bounds_1 <- seq(min(c(alphagraph, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T)
  
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab=" ", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bold("test of normality)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    box()
  } else{ # These are the actual plots
    rej1 <- results[,1] < alpha
    rej2 <- results[,2] < alpha
    rej <- rej1 == 1 | rej2 == 1
    
    # General error rates
    Pless <- mean(rej) #mean(results < alpha)
    Pmore <- 1-Pless #mean(results >= alpha)
    # Error rates for group 1
    Pless1 <- mean(results[,1] < alpha)
    Pmore1 <- 1-Pless1
    # Error rates for group 2
    Pless2 <- mean(results[,2] < alpha)
    Pmore2 <- 1-Pless2
      
      mydata_hist <- hist(results[,1], breaks = bounds_2, plot = FALSE) # This should be only one group
      ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
      mydata_hist_3 <- hist(results, breaks = bounds_2, plot = FALSE)
      ymaxlab_3 <- floor(max(mydata_hist_3$counts/100)+1)*100
      
      plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_3), type="n", xlab=" ",
           ylab=" ", adj=0.6, axes=F, main = " ")
      title(main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bold("test of normality)"))),
            line = 3)
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
      axis(2, at= round(seq(0,ymaxlab_3, length.out=6)), labels=T, las="1")
      # Group 1
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2], ytop=mydata_hist$counts, col="palegreen4", border = "gray65", density = 15, angle = 45)
      # Group 2
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=mydata_hist$counts, xright=bounds_2[2:last_2], ytop=mydata_hist_3$counts, col="palegreen4", border = "gray65", density = 20, angle = -45)
      
      lines (c(alphagraph,alphagraph), c(0,fac.plot*ymaxlab_3), lwd=3)
      arrows(alphagraph-0.15, fac.plot*ymaxlab_3, alphagraph+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      text(alpha-0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = "gray42", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
      box()
      
      text(0.5, ymaxlab_3+ymaxlab_3*0.16, labels = "Rejection rates", pos = 4, cex = 0.7, xpd = T, font = 2)
      text(0.5, ymaxlab_3+ymaxlab_3*0.1, labels = paste("Group 1:", Pless1), pos = 4, cex = 0.7, xpd = T)
      text(0.5, ymaxlab_3+ymaxlab_3*0.05, labels = paste("Group 2:", Pless2), pos = 4, cex = 0.7, xpd = T)

    }
  }
plot.histograms.pvaln <- function(results,nrep = NA, alpha = 0.05, default = F){
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = NA, xaxs="i", yaxs="i")
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (test of normality)"))))
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
  } else{ # These are the actual plots
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (test of normality)"))))
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col="palegreen3", border = "white")
    lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
    arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)

    rej1 <- results[,1] < alpha
    rej2 <- results[,2] < alpha
    rej <- rej1 == 1 | rej2 == 1
    Pless <- mean(rej) #mean(results < alpha)
    Pmore <- 1-Pless #mean(results >= alpha)
    text(alpha-0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = "palegreen4", cex = 0.75, xpd = T)
    text(alpha+0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    
  }
}
plot.histograms.ttest <- function(results = NA, results2 = NA, nrep = NA, alpha = 0.05, default = F, colores = c("indianred", "firebrick1")) {
  
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)

  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i",
      cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T, mgp = c(3,1,0),
      mar = c(5, 4, 4, 2) + 0.1)
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2),
         type="n", xlab= " ", ylab = " ", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-tests)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    box()
  } else{ # These are the actual plots
      Pmore <- mean(results2 >= alpha)
      Pless <- mean(results2 < alpha) 
      mydata_hist <- hist(results, breaks = bounds_2, plot = FALSE) # This should be Welch
      ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
      mydata_hist_3 <- hist(results2, breaks = bounds_2, plot = FALSE)
      ymaxlab_3 <- floor(max(mydata_hist_3$counts/100)+1)*100
      
      plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_3), type="n", xlab=" ",
           ylab=" ", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-tests)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
      axis(2, at= round(seq(0,ymaxlab_3, length.out=6)), labels=T, las="1")
      # Welch
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2], ytop=mydata_hist$counts, col=colores[2], border = "white")
      # T test
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=mydata_hist$counts, xright=bounds_2[2:last_2], ytop=mydata_hist_3$counts, col=colores[1], border = "white")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      text(alpha-0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = "black", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
      box()
    
  }
}
plot.histograms.ttest.norm <- function(results = NA, results2 = NA, results3 = NA, nrep = NA, alpha = 0.05, colores = c("indianred", "firebrick1")) {
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T, mgp = c(3,1,0))
      Pmore <- mean(results2 >= alpha)
      Pless <- mean(results2 < alpha) 
      
      mydata_hist <- hist(results, breaks = bounds_2, plot = FALSE) # This should be Welch
      ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
      mydata_hist_3 <- hist(results2, breaks = bounds_2, plot = FALSE) # This is all three
      ymaxlab_3 <- floor(max(mydata_hist_3$counts/100)+1)*100
      mydata_hist_2 <- hist(results3, breaks = bounds_2, plot = FALSE) # This is the robust one
      ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
      
      plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_3), type="n", xlab=" ",
           ylab=" ", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-tests)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))    
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
      axis(2, at= round(seq(0,ymaxlab_3, length.out=6)), labels=T, las="1")
      # Robust
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],
           ytop=mydata_hist_2$counts, col="navyblue", border = "white")
      # Welch
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=mydata_hist_2$counts,
           xright=bounds_2[2:last_2], ytop=mydata_hist_3$counts,
           col="lightslateblue", border = "white")
      # T test
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=mydata_hist_2$counts+mydata_hist$counts, xright=bounds_2[2:last_2],
           ytop=mydata_hist_3$counts, col="indianred", border = "white")

      
      lines(c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      text(alpha-0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = "black", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_3*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
      
      box()
  
}
plot.histograms.var <- function(results = NA, results2 = NA, default = NA, nrep = NA, alpha = 0.05, side = c(2,1)){
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=side, mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = NA, xaxs="i", yaxs="i")
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (Student's "), bolditalic("t"), bold("-test)"))))
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values"), bold(" (Welch's "), bolditalic(t), bold("-test)"))))
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    
  } else{ # These are the actual plots
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
    mydata_hist_3 <- hist(results2, breaks = bounds_2, plot = FALSE)
    ymaxlab_3 <- floor(max(mydata_hist_3$counts/100)+1)*100

    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (Student's "), bolditalic("t"), bold("-test)"))))
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col="indianred", border = "white")
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
      if(!is.na(alpha)){
        lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
        arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
      }
      Pmore <- mean(results >= alpha)
      Pless <- mean(results < alpha) 
      text(alpha-0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = "indianred4", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  

    ####
    
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_3), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic("p"), bold("-values"), bold(" (Welch's "), bolditalic(t), bold("-test)"))))
        title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_3$counts, col="lightslateblue", border = "white")
          axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
          axis(2, at= round(seq(0,ymaxlab_3, length.out=6)), labels=T, las="1")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      if(!is.na(alpha)){
        lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
        arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      }
      Pmore <- mean(results2 >= alpha)
      Pless <- mean(results2 < alpha) 
      text(alpha-0.01, ymaxlab_3*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = "royalblue4", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_3*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    
  }
}
plot.histograms.rob <- function(results = NA, default = NA, nrep = NA, alpha = 0.05, side = c(1,1)){
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=side, mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = NA, xaxs="i", yaxs="i")
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
        plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values"), bold(" (Cressie's "), bolditalic(t), bold("-test)"))))
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    
  } else{ # These are the actual plots
    mydata_hist_4 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_4 <- floor(max(mydata_hist_4$counts/100)+1)*100

    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_4), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic("p"), bold("-values"), bold(" (Cressie's "), bolditalic(t), bold("-test)"))))
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_4$counts, col="navyblue", border = "white")
          axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
          axis(2, at= round(seq(0,ymaxlab_4, length.out=6)), labels=T, las="1")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_4), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_4, alpha+0.15, fac.plot*ymaxlab_4, length=0.07, angle=25, lwd=2, code=3)
      if(!is.na(alpha)){
        lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_4), lwd=3)
        arrows(alpha-0.15, fac.plot*ymaxlab_4, alpha+0.15, fac.plot*ymaxlab_4, length=0.07, angle=25, lwd=2, code=3)
      }
      Pmore <- mean(results >= alpha)
      Pless <- mean(results < alpha) 
      text(alpha-0.01, ymaxlab_4*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = "navyblue", cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_4*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    
  }
}
plot.histograms.norm <- function(results = NA, results2 = NA, default = NA, nrep = NA, alpha = 0.05, side = c(2,1), colores1 =c("indianred", "indianred4"), colores2 =c("lightslateblue", "royalblue4")){
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=side, mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = NA, xaxs="i", yaxs="i")
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (Student's "), bolditalic("t"), bold("-test)"))))
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values"), bold(" (Robust "), bolditalic(t), bold("-test)"))))
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    
  } else{ # These are the actual plots
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
    mydata_hist_3 <- hist(results2, breaks = bounds_2, plot = FALSE)
    ymaxlab_3 <- floor(max(mydata_hist_3$counts/100)+1)*100

    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (Student's "), bolditalic("t"), bold("-test)"))))
      rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col=colores1[1], border = "white")
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
      if(!is.na(alpha)){
        lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
        arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
      }
      Pmore <- mean(results >= alpha)
      Pless <- mean(results < alpha) 
      text(alpha-0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = colores1[2], cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_2*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  

    ####
    
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_3), type="n", xlab=" ",
         ylab="Frequency", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic("p"), bold("-values"), bold(" (Robust "), bolditalic(t), bold("-test)"))))
title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5)
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_3$counts, col=colores2[1], border = "white")
          axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
          axis(2, at= round(seq(0,ymaxlab_3, length.out=6)), labels=T, las="1")
      lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
      arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      if(!is.na(alpha)){
        lines (c(alpha,alpha), c(0,fac.plot*ymaxlab_3), lwd=3)
        arrows(alpha-0.15, fac.plot*ymaxlab_3, alpha+0.15, fac.plot*ymaxlab_3, length=0.07, angle=25, lwd=2, code=3)
      }
      Pmore <- mean(results2 >= alpha)
      Pless <- mean(results2 < alpha) 
      text(alpha-0.01, ymaxlab_3*(fac.plot2+0.03), labels=round(Pless, digits=3), adj=c(1,1), col = colores2[2], cex = 0.75, xpd = T)
      text(alpha+0.01, ymaxlab_3*(fac.plot2+0.03), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    
  }
}
# Test of variances (large)
plot.histograms.pvalv <- function(results, results0 = NA, nrep = NA, alpha = 0.05, default = F, what = "variances"){
 bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T)  
  
  if(default){ # These are the default plots shown at the start
    ymaxlab_2 <- 1000 # Approximately the default nrep
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=expression(paste(italic("p"), "-value")),
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (test of homoscedasticity)"))))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    box()
  } else{ # These are the actual plots
    Pmore <- mean(results >= alpha)
    Pless <- mean(results < alpha)
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    
    if(!is.na(results0[1])){
    mydata_hist <- hist(results0, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist$counts/100)+1)*100

    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=expression(paste(italic("p"), "-value")),
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (test of homoscedasticity)"))))
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist$counts, col=rgb(0.4863, 0.8039, 0.4863, 0.25), border = "white")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col="palegreen3", border = "white")
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    box()
    lines(c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
    arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
    text(alpha-0.01, ymaxlab_2*(fac.plot2), labels=round(Pless, digits=3), adj=c(1,1), col = "palegreen4", cex = 0.75, xpd = T)
    text(alpha+0.01, ymaxlab_2*(fac.plot2), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    } else {
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab_2), type="n", xlab=expression(paste(italic("p"), "-value")),
         ylab="Frequency", adj=0.6, axes=F,
         main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values (test of homoscedasticity)"))))
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col="palegreen3", border = "white")
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5)
    axis(2, at= round(seq(0,ymaxlab_2, length.out=6)), labels=T, las="1")
    box()
    lines(c(alpha,alpha), c(0,fac.plot*ymaxlab_2), lwd=3)
    arrows(alpha-0.15, fac.plot*ymaxlab_2, alpha+0.15, fac.plot*ymaxlab_2, length=0.07, angle=25, lwd=2, code=3)
    text(alpha-0.01, ymaxlab_2*(fac.plot2), labels=round(Pless, digits=3), adj=c(1,1), col = "palegreen4", cex = 0.75, xpd = T)
    text(alpha+0.01, ymaxlab_2*(fac.plot2), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  

    }
    }
}

# Students only (large)
plot.histograms.ttest.students <- function(results = NA, results0 = NA, nrep = NA, alpha = 0.05, colores = c("indianred", "firebrick1")) {
  
   bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T)
    Pmore <- mean(results >= alpha)
    Pless <- mean(results < alpha) 
    mydata_hist <- hist(results0, breaks = bounds_2, plot = FALSE)
    ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100

    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab), type="n", xlab=" ",
         ylab=" ", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-test)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
    axis(2, at= round(seq(0,ymaxlab, length.out=6)), labels=T, las="1")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist$counts, col=rgb(0.8039, 0.3608, 0.3608, 0.25), border = "white")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col="indianred", border = "white")
    lines (c(alpha,alpha), c(0,fac.plot*ymaxlab), lwd=3)
    arrows(alpha-0.15, fac.plot*ymaxlab, alpha+0.15, fac.plot*ymaxlab, length=0.07, angle=25, lwd=2, code=3)
    text(alpha-0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = "indianred", cex = 0.75, xpd = T)
    text(alpha+0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    box()
}
# Welch only (large)
plot.histograms.ttest.welch <- function(results = NA, results0 = NA, nrep = NA, alpha = 0.05, colores = c("lightslateblue", "royalblue")) {
   bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
 bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
 bounds_2 <- c(bounds_0, bounds_1)
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T)
    Pmore <- mean(results >= alpha)
    Pless <- mean(results < alpha) 
    mydata_hist <- hist(results0, breaks = bounds_2, plot = FALSE)
    ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
    mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
    ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
    
    plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab), type="n", xlab=" ",
         ylab=" ", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-test)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
    axis(2, at= round(seq(0,ymaxlab, length.out=6)), labels=T, las="1")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist$counts, col=colores[2], border = "white")
    rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col=colores[1], border = "white")
    lines (c(alpha,alpha), c(0,fac.plot*ymaxlab), lwd=3)
    arrows(alpha-0.15, fac.plot*ymaxlab, alpha+0.15, fac.plot*ymaxlab, length=0.07, angle=25, lwd=2, code=3)
    text(alpha-0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = colores[1], cex = 0.75, xpd = T)
    text(alpha+0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
    box()
}
# Robust only (large)
plot.histograms.ttest.robust <- function(results = NA, results0 = NA, nrep = NA, alpha = 0.05, colores = c("indianred", "firebrick1")) {
  bounds_0 <- seq(0, min(c(alpha, 0.05)), by = min(c(alpha, 0.05))) # length 1
  bounds_1 <- seq(min(c(alpha, 0.05)), 1, length.out = 20)
  bounds_2 <- c(bounds_0, bounds_1)
  fac.plot <- 1.02
  fac.plot2 <- fac.plot+0.1*fac.plot # For the text
  xlabels_2 <- bounds_2
  last_2 <- length(bounds_2)
  
  par(mfrow=c(1,1), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "s", family = "sans",
      cex.axis = 0.8, cex.lab=0.8, cex.main = 0.7, xpd = T)
  Pmore <- mean(results >= alpha)
  Pless <- mean(results < alpha) 
  mydata_hist <- hist(results0, breaks = bounds_2, plot = FALSE)
  ymaxlab <- floor(max(mydata_hist$counts/100)+1)*100
  mydata_hist_2 <- hist(results, breaks = bounds_2, plot = FALSE)
  ymaxlab_2 <- floor(max(mydata_hist_2$counts/100)+1)*100
  
  plot(c(bounds_2[1], bounds_2[last_2]), c(0, ymaxlab), type="n", xlab=" ",
       ylab=" ", adj=0.6, axes=F, main = expression(paste(bold("Histogram of "), bolditalic(p), bold("-values ("), bolditalic(t), bold("-test)"))))
    title(xlab = expression(paste(italic("p"), "-value")), adj = 0.5, mgp = c(1.5,1,0))
    title(ylab = "Frequency", mgp = c(2.2,1,0))
    axis(1, at=seq(0,1,0.2), labels=seq(0,1,0.2), tick=T, padj = 0.5, mgp = c(3,0.5,0))
  axis(2, at= round(seq(0,ymaxlab, length.out=6)), labels=T, las="1")
  rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist$counts, col=colores[2], border = "white")
  rect(xleft=bounds_2[1:(last_2-1)], ybottom=0, xright=bounds_2[2:last_2],ytop=mydata_hist_2$counts, col=colores[1], border = "white")
  lines (c(alpha,alpha), c(0,fac.plot*ymaxlab), lwd=3)
  arrows(alpha-0.15, fac.plot*ymaxlab, alpha+0.15, fac.plot*ymaxlab, length=0.07, angle=25, lwd=2, code=3)
  text(alpha-0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pless, digits=3), adj=c(1,1), col = colores[1], cex = 0.75, xpd = T)
  text(alpha+0.01, ymaxlab*(fac.plot2-0.02), labels=round(Pmore, digits=3), adj=c(0,1), col = "black", cex = 0.75, xpd = T)  
  box()
}
# This script contains PLOT FUNCTIONS, except histograms

plot.dist <- function(dist1 = 1, parama1 = 1.649, paramb1 = 2.161, dist2 = 1, parama2 = 1.649, paramb2 = 2.161, means = 1.649, sds1 = 0.8, sds2 = 0.8, default = F){
  if(default){
    
    par(mfrow=c(1,1), mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = NA, bg = NA,
    xaxs="i", yaxs="i", las = 1, pty = "m")
    
    plot(c(-2, 5), c(0, 1),
     xlab = expression(paste("Variable, ", italic(x))),
     ylab = "Density", type = "n", axes = F, main = "True distribution of the variable")
    axis(1); axis(2); box()
    
  } else {
  
  all.ddistfun <- c("dnorm", "dunif", "dlnorm", "dbeta", "dlaplace") # Probability density functions to draw the populations
  
  # Theoretical moments of both groups
  
  mean1.t <- means # Mean
  mean2.t <- mean1.t
  
  sigma1.t <- round(sqrt(A2(dist = all.ddistfun[dist1], param = c(parama1, paramb1), betasd = sds1)),3) # Sd
  sigma2.t <- round(sqrt(A2(dist = all.ddistfun[dist2], param = c(parama2, paramb2), betasd = sds2)),3)
  
  skewness1.t <- round(A3(dist = all.ddistfun[dist1], param = c(parama1, paramb1)),3) # Skewness
  skewness2.t <- round(A3(dist = all.ddistfun[dist2], param = c(parama2, paramb2)),3)
  kurtosis1.t <- round(A4(dist = all.ddistfun[dist1], param = c(parama1, paramb1)),3) # Excess kurtosis
  kurtosis2.t <- round(A4(dist = all.ddistfun[dist2], param = c(parama2, paramb2)),3)

  x <- seq(-2.5, 5.5, .001) # Domain
  x1 <- x - 0.149 # Just to center at 0.5 from the original point 1.649
  x2 <- x - 0.149
  
  y1 <- get(all.ddistfun[dist1])(x, parama1, paramb1)
  y2 <- get(all.ddistfun[dist2])(x, parama2, paramb2)
  
  # The beta distribution needs additional changes
  # Standardize and then change
  # a = 2, b = 5 (doesn't matter if a = 5 and b = 2)
  if(dist1 == 4) {
    x1 <- ((x - 0.7143)/0.1597)*sds1 + 1.5
    areabe <- area.beta(x1, y1)
    y1 <- y1/areabe
  }
  if(dist2 == 4) {
    x2 <- ((x - 0.7143)/0.1597)*sds2 + 1.5
    areabe <- area.beta(x2, y2)
    y2 <- y2/areabe
  }
    

lboundy <- min(c(y1, y2))
uboundy <- max(c(y1, y2)) + 0.1*max(c(y1, y2))

par(mfrow=c(1,1), mar=c(5,5,5,5),cex.axis = 1, cex.lab=1.2, xpd = F, bg = NA,
    xaxs="i", yaxs="i", las = 1, pty = "m")
plot(c(-2, 5), c(lboundy, uboundy),
     xlab = expression(paste("Variable, ", italic(x))),
     ylab = "Density", type = "n", axes = F, main = "True distribution of the variable")
axis(1); axis(2); box()
lines(x1, y1, lwd = 2.3, col = "salmon4", xpd = F)
lines(x2, y2, lwd = 2.3, col = "paleturquoise4", xpd = F)
  legend("topleft", border = "white",
         legend = c(parse(text = paste0("~ sigma[1] ==", sigma1.t)),
              parse(text = paste0("~ gamma[1] == ", skewness1.t)),
              parse(text = paste0("~ kappa[1] ==", kurtosis1.t))), xpd = T, bty = "n", text.col = "salmon4",
         cex = 1.1, y.intersp = 0.8)
    legend("topright", border = "white",
         legend = c(parse(text = paste0("~ sigma[2] ==", sigma2.t)),
              parse(text = paste0("~ gamma[2] ==", skewness2.t)),
              parse(text = paste0("~ kappa[2] ==", kurtosis2.t))), xpd = T, bty = "n", text.col = "paleturquoise4",
         cex = 1.1, y.intersp = 0.8)
  }
}
plot.errors.variance <- function(data.plots.variance, data.plots.variance2, plottitle = "Conditional test for two means: equal variance assumption (F-test)"){
  alpha <- 0.05
  
  errorv.n <- data.plots.variance$error.rates.uncond[,1]
  errort.n <- data.plots.variance$error.rates.uncond[,2]
  errorw.n <- data.plots.variance$error.rates.uncond[,3]
  errorv.v <- data.plots.variance$error.rates.uncond[,4]
  errort.v <- data.plots.variance$error.rates.uncond[,5]
  errorw.v <- data.plots.variance$error.rates.uncond[,6]
  errort.n.cond <- data.plots.variance$error.rates.cond[,1]
  errorw.n.cond <- data.plots.variance$error.rates.cond[,2]
  errort.v.cond <- data.plots.variance$error.rates.cond[,3]
  errorw.v.cond <- data.plots.variance$error.rates.cond[,4]
  sd1 <- data.plots.variance$sd1
  sd2 <- data.plots.variance$sd2
  n1 <- data.plots.variance$n1
  n2 <- data.plots.variance$n2
  mulv <- data.plots.variance$mulv # Multiplicative constant for the standard deviation
  mulf <- data.plots.variance$muln # Multiplicative constant for the sample size

  ##
   par(mfrow=c(2,2), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "m", family = "sans",
      cex.axis = 0.7, cex.lab=0.8, cex.main = 0.8, xpd = T, oma=c(0,0,0,0), mai = c(1.5,1,1,0.5))
   
plot(c(0.5,1.5), c(0, 0.12), type = "n", bg = "cornflowerblue",
     ylab = " ",
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)
title(ylab = expression(paste("Type I error rate (", italic(t), "-test)")), mgp = c(1.95, 0, 0), xpd = T)

# Conditional
lines(mulf, errort.n.cond, col = "indianred", lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = "indianred", col = "black") # Students RED
lines(mulf, errorw.n.cond, col = "lightslateblue", lty = 1) # Welch BLUE
points(mulf, errorw.n.cond, pch = 24, bg = "lightslateblue", col = "black")

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black", cex = 1.2) # Students RED
lines(mulf, errorw.n, col = rgb(0.5176, 0.4392, 1, 1)) # Welch BLUE
points(mulf, errorw.n, pch = 21, bg = rgb(0.5176, 0.4392, 1, 1), col = "black", cex = 1.2)

    legend(y = 0.12, x = max(mulf)-0.48, border = "black",
         legend = c(parse(text = paste0("~ sigma[1] == ~ sigma[2] ==", sd1)),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
arrows(x0 = 1.4, x1 = 1.4, y0 = 0.01, y1 = 0, length = 0.15, lwd = 3, col = "black")

# Change variance
plot(c(0.5,1.5), c(0, 0.12), type = "n", bg = "cornflowerblue",
     ylab = " ",
     xlab = expression(paste("Standard deviation ratio, ", frac(sigma[2], sigma[1]))))
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)

# Conditional
lines(mulv, errort.v.cond, col = "indianred", lty = 1)
points(mulv, errort.v.cond, pch = 24, bg = "indianred", col = "black") # Students RED
lines(mulv, errorw.v.cond, col = "lightslateblue", lty = 1) # Welch BLUE
points(mulv, errorw.v.cond, pch = 24, bg = "lightslateblue", col = "black")

# Unconditional
lines(mulv, errort.v, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulv, errort.v, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black", cex = 1.2) # Students RED
lines(mulv, errorw.v, col = rgb(0.5176, 0.4392, 1, 1)) # Welch BLUE
points(mulv, errorw.v, pch = 21, bg = rgb(0.5176, 0.4392, 1, 1), col = "black", cex = 1.2)

    legend(y = 0.12, x = max(mulf)-0.48, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] ==", sd1)),
                    parse(text = paste0("~ italic(n[1]) == ~ italic(n[2]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    
arrows(x0 = 0.8, x1 = 0.8, y0 = 0.01, y1 = 0, length = 0.15, lwd = 3, col = "black")


##### NULL HYPOTHESIS IS FALSE #####
    
  errorv.n <- data.plots.variance2$error.rates.uncond[,1]
  errort.n <- data.plots.variance2$error.rates.uncond[,2]
  errorw.n <- data.plots.variance2$error.rates.uncond[,3]
  errorv.v <- data.plots.variance2$error.rates.uncond[,4]
  errort.v <- data.plots.variance2$error.rates.uncond[,5]
  errorw.v <- data.plots.variance2$error.rates.uncond[,6]
  
  errort.n.cond <- data.plots.variance2$error.rates.cond[,1]
  errorw.n.cond <- data.plots.variance2$error.rates.cond[,2]
  errort.v.cond <- data.plots.variance2$error.rates.cond[,3]
  errorw.v.cond <- data.plots.variance2$error.rates.cond[,4]
  
  sd1 <- data.plots.variance2$sd1
  sd2 <- data.plots.variance2$sd2
  sd22 <- data.plots.variance2$sd21
  n1 <- data.plots.variance2$n1
  n2 <- data.plots.variance2$n2
  n22 <- data.plots.variance2$n21
  
plot(c(0.5,1.5), c(0, 0.12), type = "n", bg = "cornflowerblue",
     ylab = " ",
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)
title(ylab = expression(paste("Type I error rate (", italic(t), "-test)")), mgp = c(1.95, 0, 0), xpd = T)

# Conditional
lines(mulf, errort.n.cond, col = "indianred", lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = "indianred", col = "black") # Students RED
lines(mulf, errorw.n.cond, col = "lightslateblue", lty = 1) # Welch BLUE
points(mulf, errorw.n.cond, pch = 24, bg = "lightslateblue", col = "black")

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black", cex = 1.2) # Students RED
lines(mulf, errorw.n, col = rgb(0.5176, 0.4392, 1, 1)) # Welch BLUE
points(mulf, errorw.n, pch = 21, bg = rgb(0.5176, 0.4392, 1, 1), col = "black", cex = 1.2)

    legend(y = 0.12, x = max(mulf)-0.48, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] ==", sd1)),
                    parse(text = paste0("~ sigma[2] ==", sd22)),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    
# Change variance
plot(c(0.5,1.5), c(0, 0.12), type = "n", bg = "cornflowerblue",
     ylab = " ",
     xlab = expression(paste("Standard deviation ratio, ", frac(sigma[2], sigma[1]))))
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)

# Conditional
lines(mulv, errort.v.cond, col = "indianred", lty = 1)
points(mulv, errort.v.cond, pch = 24, bg = "indianred", col = "black") # Students RED
lines(mulv, errorw.v.cond, col = "lightslateblue", lty = 1) # Welch BLUE
points(mulv, errorw.v.cond, pch = 24, bg = "lightslateblue", col = "black")

# Unconditional
lines(mulv, errort.v, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulv, errort.v, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black", cex = 1.2) # Students RED
lines(mulv, errorw.v, col = rgb(0.5176, 0.4392, 1, 1)) # Welch BLUE
points(mulv, errorw.v, pch = 21, bg = rgb(0.5176, 0.4392, 1, 1), col = "black", cex = 1.2)

    legend(y = 0.12, x = max(mulf)-0.48, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] ==", sd1)),
                    parse(text = paste0("~ italic(n[1]) ==", n1)),
              parse(text = paste0("~ italic(n[2]) ==", n22))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    
    mtext(plottitle, line=-2, side=3, outer=TRUE, cex=1.5)

}
plot.errors.normal <- function(datosplot1 = NA, datosplot2 = NA, datosplot3 = NA, datosplot4 = NA, plottitle = "Test of equality of means conditioned to Chi-square test"){
  
  alpha <- 0.05
  
  errort.n <- datosplot1$error.rates.uncond
  errort.n.r <- datosplot1$error.rates.uncond.r
  errort.n.cond <- datosplot1$error.rates.cond
  errort.n.cond.r <- datosplot1$error.rates.cond.r

  sd1 <- datosplot1$sd1
  sd2 <- datosplot1$sd2
  n1 <- datosplot1$n1
  n2 <- datosplot1$n2
  mulf <- datosplot1$muln # Multiplicative constant for the sample size
  
   par(mfrow=c(2,2), col.lab="black", las="1", xaxs="i", yaxs="i", cex = 1.8, pty = "m", family = "sans",
      cex.axis = 0.7, cex.lab=0.8, cex.main = 0.8, xpd = T, oma=c(0,0,1,0), mai = c(1.5,1,1,0.5))
   
plot(c(0.5,1.5), c(0, 0.1), type = "n",
     ylab = " ",
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
title(main = "Uniform distribution", line = 1)
title(ylab = expression(paste("Type I error rate (", italic(t), "-test)")), mgp = c(1.95, 0, 0), xpd = T)

abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)
# Conditional
lines(mulf, errort.n.cond, col = rgb(0.8039, 0.3608, 0.3608, 1), lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.cond.r, col = rgb(0.5, 0.5, 0.5, 1), lty = 1)
points(mulf, errort.n.cond.r, pch = 24, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.r, col = rgb(0.5, 0.5, 0.5, 1))
points(mulf, errort.n.r, pch = 21, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED
        
legend(y = 0.1, x = max(mulf)-0.45, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] == ~ sigma[2]")),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    
    ####
    
  errort.n <- datosplot4$error.rates.uncond
  errort.n.r <- datosplot4$error.rates.uncond.r
  errort.n.cond <- datosplot4$error.rates.cond
    errort.n.cond.r <- datosplot4$error.rates.cond.r
  
plot(c(0.5,1.5), c(0, 0.1), type = "n",
     ylab = expression(paste("Type I error rate (", italic(t), "-test)")),
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
title(main = "Laplace distribution", line = 1)
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)

# Conditional
lines(mulf, errort.n.cond, col = rgb(0.8039, 0.3608, 0.3608, 1), lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.cond.r, col = rgb(0.5, 0.5, 0.5, 1), lty = 1)
points(mulf, errort.n.cond.r, pch = 24, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.r, col = rgb(0.5, 0.5, 0.5, 1))
points(mulf, errort.n.r, pch = 21, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED
        
    legend(y = 0.1, x = max(mulf)-0.45, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] == ~ sigma[2]")),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)

    ####
    
  errort.n <- datosplot2$error.rates.uncond
  errort.n.r <- datosplot2$error.rates.uncond.r
  errort.n.cond <- datosplot2$error.rates.cond
    errort.n.cond.r <- datosplot2$error.rates.cond.r
  
plot(c(0.5,1.5), c(0, 0.1), type = "n",
     ylab = " ",
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
title(main = "Lognormal distribution", line = 1)
title(ylab = expression(paste("Type I error rate (", italic(t), "-test)")), mgp = c(1.95, 0, 0), xpd = T)
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)

# Conditional
lines(mulf, errort.n.cond, col = rgb(0.8039, 0.3608, 0.3608, 1), lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.cond.r, col = rgb(0.5, 0.5, 0.5, 1), lty = 1)
points(mulf, errort.n.cond.r, pch = 24, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.r, col = rgb(0.5, 0.5, 0.5, 1))
points(mulf, errort.n.r, pch = 21, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED
        
    legend(y = 0.1, x = max(mulf)-0.45, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] == ~ sigma[2]")),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    
    ####
    
  errort.n <- datosplot3$error.rates.uncond
  errort.n.r <- datosplot3$error.rates.uncond.r
  errort.n.cond <- datosplot3$error.rates.cond
    errort.n.cond.r <- datosplot3$error.rates.cond.r
    
plot(c(0.5,1.5), c(0, 0.1), type = "n",
     ylab = expression(paste("Type I error rate (", italic(t), "-test)")),
     xlab = expression(paste("Sample size ratio, ", frac(italic(n[2]), italic(n[1]) ))))
title(main = "Beta distribution", line = 1)
abline(h = alpha, lty = 2, lwd = 1, col = rgb(0,0,0,1), xpd = F)

# Conditional
lines(mulf, errort.n.cond, col = rgb(0.8039, 0.3608, 0.3608, 1), lty = 1)
points(mulf, errort.n.cond, pch = 24, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.cond.r, col = rgb(0.5, 0.5, 0.5, 1), lty = 1)
points(mulf, errort.n.cond.r, pch = 24, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED

# Unconditional
lines(mulf, errort.n, col = rgb(0.8039, 0.3608, 0.3608, 1))
points(mulf, errort.n, pch = 21, bg = rgb(0.8039, 0.3608, 0.3608, 1), col = "black") # Students RED
lines(mulf, errort.n.r, col = rgb(0.5, 0.5, 0.5, 1))
points(mulf, errort.n.r, pch = 21, bg = rgb(0.5, 0.5, 0.5, 1), col = "black") # Students RED
        
    legend(y = 0.1, x = max(mulf)-0.45, border = "white",
         legend = c(parse(text = paste0("~ sigma[1] == ~ sigma[2]")),
              parse(text = paste0("~ italic(n[1]) ==", n1))), xpd = T, bty = "n", text.col = "black",
         cex = 0.8, y.intersp = 0.7)
    mtext(plottitle, line=-0.7, side=3, outer=TRUE, cex=1.5)
}

server <- function(input, output, session) {
  shinyjs::runjs('toggleCodePosition();')
  # Need to load these on server
  # Data of the Variance assumption simulations
  load("dataplots_f_false.Rdata"); data.plots.variance.false <- data.plots.f
  load("dataplots_levene_false.Rdata"); data.plots.levene.false <- data.plots.f
  load("dataplots_f_.Rdata"); data.plots.variance <- data.plots.f
  load("dataplots_levene_.Rdata"); data.plots.levene <- data.plots.f
  
  # Data of the Normality assumption simulations
  load("dataplots_Shapiro_runif.Rdata"); shapiro1 <- resultados
  load("dataplots_Shapiro_rlnorm.Rdata"); shapiro2 <- resultados
  load("dataplots_Shapiro_rbeta.Rdata"); shapiro3 <- resultados
  load("dataplots_Shapiro_rlaplace.Rdata"); shapiro4 <- resultados
  
  load("dataplots_Chi_runif.Rdata"); chi1 <- resultados
  load("dataplots_Chi_rlnorm.Rdata"); chi2 <- resultados
  load("dataplots_Chi_rbeta.Rdata"); chi3 <- resultados
  load("dataplots_Chi_rlaplace.Rdata"); chi4 <- resultados
  
  shinyjs::hide("fakerunT"); shinyjs::hide("fakerunT1"); shinyjs::hide("fakerunT2") # This fakerunT shows the loading animation, does nothing else
  options("scipen"=4, "digits"=4) # print numbers in fixed notation
  
  # Plots independent of simulations
  # Variance tab
  observe({
    if(input$whichVar1 == "F-test"){
    output$plotErrorPlot1 <- renderPlot({
        plot.errors.variance(data.plots.variance, data.plots.variance.false,
                             plottitle = "Student's t-test for two means conditioned to homoscedasticity test (F-test)")
      })
    } else {
          output$plotErrorPlot1 <- renderPlot({
        plot.errors.variance(data.plots.levene,
                             data.plots.levene.false,
                             plottitle = "Student's t-test for two means conditioned to homoscedasticity test (Levene's test)")
      })
    }
  })
  
  # Normality tab
  observe({
    if(input$whichNorm2 == "Shapiro-Wilk"){
      output$ploterrorNormal <- renderPlot({
        plot.errors.normal(shapiro1, shapiro2, shapiro3, shapiro4,
                           plottitle = "Student's t-test for two means conditioned to normality test (Shapiro-Wilk test)")
        # Student's t‐test for two means conditioned to normality test (Chi‐square)
      })
    } else {
            output$ploterrorNormal <- renderPlot({
        plot.errors.normal(chi1, chi2, chi3, chi4,
                           plottitle = "Student's t-test for two means conditioned to normality test (Chi-square test)")
      })
    }
  })
  
 ################  Fix input boundaries ################ 
  minsd <- 0.05 # Standard deviation
  maxsd <- 5
  minalpha <- 0.0001 # Significance level
  maxalpha <- 0.9999
  
 ############### SIMULATION PARAMETERS (NOT INPUTS) ################ 
    nrep <- 10000 # Number of simulations
    # Default mean and standard deviation
    # Selected so that the resulting Lognormal distribution is meaningfully skewed
    sd1 <- sd2 <- 0.8
    mu1 <- mu2 <- 1.649
    all.dist <- c("Normal", "Uniform", "Lognormal", "Negatively skewed (Beta)", "Laplace")
    all.rdistfun <- c("rnorm", "runif", "rlnorm", "rbeta", "rlaplace")
    
 ################ DOCUMENTATION ################ 

# First tab
output$informationT1 <- renderUI({
    HTML('
      <p> 
Student&#39s <i>t</i>‐test is widely used to test the null hypothesis of equality of means with
two independent samples of observations. It is a parametric technique that relies on a set of
assumptions including normality (both samples have been drawn from normally distributed random
variables) and homoscedasticity (both random variables have the same variance). Those assumptions
can be put to test likewise, yielding a conditional strategy where statistical
hypotheses about normality and homoscedasticity are tested first, and the choice of test of means
depends on the outcome of tests on assumptions. For instance, if the null hypothesis about equality
of variances is rejected, an alternative procedure like Welch&#39s <i>t</i>‐test (which does not assume
         homoscedasticity) will be performed over the means; otherwise a Student&#39s <i>t</i>‐test will
be chosen. This conditional approach has gained popularity and it is customarily used even though it has been
found to alter the type‐I error rate of <i>t</i>-tests in such a way that the empirical rate
no longer reflects the nominal significance level (Gans, 1981; Zimmerman 1996, 2004).
</p>

<p>      
This <b>app aims</b> at illustrating the effects of conditional and unconditional uses of <i>t</i>‐tests on the empirical type‐I error rate.
The app simulates data and performs two‐tailed tests for the difference of two means with
independent observations in scenarios specified by the user. The <b>current tab</b> focuses on the
homoscedasticity assumption.
In the conditional procedure, homoscedasticity is tested first.
When the null hypothesis about equality of variances is rejected, Welch&#39s <i>t</i>-test
         is performed over the means; otherwise, a Student&#39s <i>t</i>-test is performed.
 In the unconditional approach the two <i>t</i>-tests are always performed over the means without
checking any assumptions.
</p>

      <h4> Usage </h4>
    <p>
To explore how violations of the equal‐variances assumption affect empirical type‐I error rates
         under conditional and unconditional approaches, samples are drawn from normally
         distributed variables with equal means (i.e., the null hypothesis for the <i>t</i>‐test is
         always true). The user can select the values of (i) the significance level (which
         corresponds to the nominal type‐I error rate and is common to both, tests of variances
         and means), (ii) the values of true standard deviations &sigma;<sub>1</sub> and &sigma;<sub>2</sub>, and (iii) the sample sizes of each group.
There are two tests of variances available: <i>F</i>‐test and Levene&#39s.
Because the ratio of true standard deviations and the ratio of sample sizes affect performance of
<i>t</i>‐tests, they are explicitly shown on the sidebar. In addition, true distributions of the variables are
plotted at the bottom of the sidebar, alongside a legend with the values of the standard deviations &sigma;, skewness
&gamma;, and excess kurtosis &kappa; (group &#35;1 to the left and colored red, group &#35;2 to the right and colored
green). Since only normal distributions are used, &kappa;<sub>1</sub> = &kappa;<sub>2</sub> = 0, and
&gamma;<sub>1</sub> = &gamma;<sub>1</sub> = 0.
    </p>

      <h4> Output </h4>
      <p>
Results for the conditional and unconditional approaches are respectively shown on the left and
         right columns. The <b>top-left histogram</b> on the left plots the empirical distribution of
         <i>p</i>‐values yielded by Student&#39s <i>t</i>‐test (red) and Welch&#39s <i>t</i>‐test (blue)
         used as prescribed by the conditional procedure. Numeric labels on the top left area
         correspond to the overall proportions of null hypotheses rejected (type‐I error rate, left)
         and not rejected (right). There is a drop‐down menu above the histogram that allows users to
         display only the <i>p</i>‐values of Student&#39s test, only those of Welch&#39s test, or both.
If only one type of test is selected, light bars showing results for that test under the unconditional
approach are included for reference, and the numeric labels on the top left represent
proportions for that test alone.

</p><p>The <b>histogram at the bottom</b> (colored green) shows the distribution
         of <i>p</i>‐values of the test of equality of variances (either <i>F</i> or Levene&#39s, depending on the
         user&#39s choice), alongside its null‐hypothesis rejection and non‐rejection rates.
      </p>

      <p>
The two <b>histograms on the right</b> depict the empirical distribution of <i>p</i>‐values
and empirical type‐I error rate for Student&#39s <i>t</i>‐test (top) and Welch&#39s test (bottom) without
following a conditional approach (i.e., all samples are tested using both tests). </p>

      <p>
<b>Additional plots</b> can be accessed by clicking the button between the information and warning icons,
which show empirical type‐I error rates for <i>t</i>-tests as a function of the ratio between
standard deviations and the ratio between sample sizes. Further explanation is included in the
figure caption.
      </p>

      </br>
      <p> <b> References </b> </p>
      <p>Gans, D. J. (1981). Use of a preliminary test in comparing two sample means. <i>Communications in Statistics - Simulation and Computation</i>, <i>10</i>, 163-174. </p>
      <p>Zimmerman, D. W. (1996). Some properties of preliminary tests of equality of variances in the two-sample location problem. <i>The Journal of General Psychology</i>, <i>123</i>, 217-231.</p>
      <p>Zimmerman, D. W. (2004). A note on preliminary tests of equality of variances. <i>British Journal of Mathematical and Statistical Psychology</i>, <i>57</i>, 173-181.</p>
         ')
  })

# Second tab   
    output$informationT2 <- renderUI({
    HTML('
<p>
Student&#39s <i>t</i>‐test is widely used to test the null hypothesis of equality of means
with two independent samples of observations. It is a parametric technique that relies on a
set of assumptions including normality (both samples have been drawn from normally distributed
random variables) and homoscedasticity (both random variables have the same variance).
Those assumptions can be put to test likewise, yielding a conditional strategy where statistical hypotheses about normality and homoscedasticity are tested first
and the choice of test of means depends on the outcome of tests on assumptions.
For instance, only if the null hypothesis about normality fails to be rejected on both groups a
Student&#39s <i>t</i>‐test will be conducted; otherwise a robust alternative will be chosen.
This conditional approach has gained popularity and
it is customarily used even though it has been found to alter the type‐I error rate of tests of means in such
a way that the empirical rate no longer reflects the nominal significance level (Gans, 1981; Rochon & Kieser, 2011).
</p>

<p>
This <b>app aims</b> at illustrating the effects of conditional and unconditional uses of
<i>t</i>‐tests on the empirical type‐I error rate. The app simulates data and performs two‐tailed
tests for the difference of two means with independent observations in scenarios specified by the user.
The <b>current tab</b> focuses on the normality assumption. In the conditional procedure,
a goodness-of fit test on normality is carried out first and
         only when the null hypothesis fails to be rejected in both groups a
         Student&#39s <i>t</i>-test is be conducted. When normality is rejected
in at least one group, Cressie and Whitford&#39s (1986) robust <i>U<sub>2</sub></i>
<i>t</i>-test is used as a replacement. 
</p>

      <h4> Usage </h4>
<p>
To explore how violations of the normality assumption affect empirical type‐I error rates
under conditional and unconditional approaches, samples are drawn from variables with
equal variances (i.e., the homoscedasticity assumption is met) along with equal means
(i.e., the null hypothesis for the <i>t</i>‐test is always true).
The user can select the significance level, &alpha; (nominal type‐I error rate),
the shape of the distributions, and the sample sizes <i>n</i><sub>1</sub> and <i>n</i><sub>2</sub> of each group.
</p>
<p>
Along with the significance level, an option to correct for multiple comparisons is offered.
Because Student&#39s <i>t</i>‐test assumes normality for both groups,
two separate tests of normality must be carried out per test on means. In order to maintain an overall significance level of &alpha;,
a cutoff point of &alpha;/2 must be used for each normality test.
</p>
<p>
Choices of shape are (i) normal (symmetrical and mesokurtic), (ii) uniform for a symmetric
and platykurtic distribution, (iii) Laplace for a symmetric and leptokurtic option,
(iv) lognormal for a strongly positively skewed variable, and (v) beta with parameters chosen to render
a moderately negatively skewed alternative.
True distributions selected by the user are plotted at the
bottom of the sidebar, alongside a legend with the values of the standard deviations &sigma;,
skewness &gamma;, and excess kurtosis &kappa; (group &#35;1 to the left and colored red,
group &#35;2 to the right and colored green).
</p>

      <h4> Output </h4>
      <p>Results for the conditional and unconditional approaches are respectively shown on
the left and right columns. The <b>top-left histogram</b> depicts the empirical distribution of
<i>p</i>-values yielded by Student&#39s <i>t</i>-test (red) and
Cressie&#39s <i>t</i>-test (grey), used as prescribed by the
conditional procedure. Numeric labels over the arrows in the top left area correspond to the
proportions of null hypotheses on means rejected (type-I error rate, left) and not rejected (right) under 
the conditional approach. There is a drop‐down menu above the histogram that allows
users to display only the <i>p</i>‐values of Student&#39s test, only those of Cressie&#39s <i>t</i>-test,
or both. If only one type of test is selected, light bars showing results for that test under the unconditional
approach are included for reference, and the numeric labels on the top left represent
proportions for that test alone.
</p><p>

The <b>histogram at the bottom</b> (green) shows the distribution
of <i>p</i>-values of the goodness-of-fit test of normality (either, Shapiro-Wilk
or chi-square depending on the user&#39s input) for groups &#35;1 (45&#176; patterned bars, bottom)
and &#35;2 (-45&#176; patterned bars, top).
Individual rejection rates are shown separately (top right legend)
for both groups whereas the combined rejection and non-rejection rates are printed above the
arrows. Only combined rejection rates are used in the conditional approach, as it requires rejection of normality in at least one group.
      </p>

<p>The <b>histograms on the right</b> depict the empirical distribution of <i>p</i>-values and
empirical type-I error rate for Student&#39s (top) and Cressie&#39s (bottom)
<i>t</i>-tests under the unconditional approach
(i.e., performed over all samples).</p>

<p>
<b>Additional plots</b> can be accessed by clicking the button between the information and warning icons, which show empirical type-I error rates for <i>t</i>-tests as a function of the ratio between sample sizes when one of the samples has been drawn from a non-normal distribution (uniform, Laplace, lognormal, and beta) and the other from a normal one. Further explanation is available in the figure caption.
</p>

      </br>
      <p> <b> References </b> </p>
<p>Cressie, N. A. C. & Whitford, H. J. (1986) How to use the two-sample <i>t</i>-test, <i>Biometrical Journal</i>, <i>2</i>, 131–148.</p>
      <p>Gans, D. J. (1981). Use of a preliminary test in comparing two sample means. <i>Communications in Statistics - Simulation and Computation</i>, <i>10</i>, 163-174. </p>
<p>Rochon, J., & Kieser, M. (2011). A closer look at the effect of preliminary goodness‐of‐fit testing for normality for the one‐sample <i>t</i>‐test. <i>British Journal of Mathematical and Statistical Psychology</i>, <i>64</i>, 410-426.</p>
         ')
  })
    
  # Third tab
  output$informationT <- renderUI({
    HTML('

      <p> 
Student&#39s <i>t</i>‐test is widely used to test the null hypothesis of equality of means with
two independent samples of observations. It is a parametric technique that relies on a set of
assumptions including normality (both samples have been drawn from normally distributed random
variables) and homoscedasticity (both random variables have the same variance). Those assumptions
can be put to test likewise, yielding a conditional strategy where a series of statistical
hypotheses about normality and homoscedasticity are tested first and the choice of test of means
depends on the outcome of tests on assumptions. This conditional approach has gained popularity and it is customarily used even though it has been
found to alter the type‐I error rate of tests of means in such a way that the empirical rate
no longer reflects the nominal significance level (Gans, 1981; Zimmerman 1996, 2004; Rochon & Kieser, 2011).
</p>

<p>
This app aims at illustrating the effects of conditional and unconditional uses of <i>t</i>-tests
on the empirical type-I error rate. The app simulates data and performs two-tailed tests
for the difference of two means with independent observations in scenarios specified by the user.
The current tab allows examining the homoscedasticity and normality assumptions in a three-step
procedure: First of all, a test on normality is performed. If normality is rejected for at least
one group, Cressie & Whitford&#39s (1986) modification of their
<i>U<sub>2</sub><sup></sup></i> test, which assumes
neither normality nor homoscedasticity, is conducted. Otherwise,
variances are tested leading to either a Welch&#39s <i>t</i>-test on means
(upon rejection of homoscedasticity) or a Student&#39s <i>t</i>-test on means
(if homoscedasticity cannot be rejected).
</p>

      <h4> Usage </h4>
<p>
As in previous tabs, samples are drawn from variables with equal means (i.e., the null hypothesis
for the <i>t</i>-test is always true). There are two goodness-of-fit tests available
(Shapiro-Wilk and chi-square) and two tests of variances (<i>F</i> and Levene&#39s).
The user can also select (i) the significance level, &alpha; (which is used in all tests),
(ii) whether a correction for multiple comparisons is applied to tests on normality,
(iii) the shape of the distributions from which samples are drawn, (iv) the values of true standard deviations &sigma;<sub>1</sub> and &sigma;<sub>2</sub>, and (v) the sample sizes <i>n</i><sub>1</sub> and <i>n</i><sub>2</sub> of each group.
</p>
<p>
Because the ratio of standard deviations and the ratio of sample sizes affect the performance
of <i>t</i>-tests, they are explicitly shown on the sidebar. Distributions selected by the user are plotted at the bottom of the sidebar, alongside a legend with the values of the standard deviations &sigma;, skewness &gamma;, and excess kurtosis &kappa; (group &#35;1 to the left and colored red, group &#35;2 to the right and colored green).
</p>

<h4> Output </h4>
<p>
Results for the conditional and unconditional approaches are respectively shown on the left
and right columns. The <b>histogram on the left</b> depicts the empirical distribution of
<i>p</i>-values yielded by Student&#39s <i>t</i>-test (red), Welch&#39s <i>t</i>-test
(light blue),
and Cressie&#39s <i>t</i>-test (dark blue) used as prescribed by the
conditional procedure. Numeric labels over the arrows in the top
left area correspond to the overall proportions of null hypotheses on means rejected
(type-I error rate, left) and not rejected (right) under the conditional approach.
There is a drop‐down menu above the histogram that allows
users to display only the <i>p</i>‐values of Student&#39s test, only those of Welch&#39s <i>t</i>-test,
those of Cressie&#39s <i>t</i>-test,
or all three. If only one type of test is selected, light bars showing results for that test under the unconditional
approach are included for reference, and the numeric labels on the top left represent
proportions for that test alone.
</p>

<p>
The two <b>histograms on the right</b> (unconditional) depict the empirical distribution of
<i>p</i>-values and empirical type-I error rate for Student&#39s <i>t</i>-test (top),
Welch&#39s test (middle),
and the Cressie&#39s <i>t</i>-test (bottom) without following a
conditional approach (i.e., all tests are performed on all samples without any prior checks).
</p>

<p>
Plots showing the distribution of <i>p</i>-values for the tests of normality and homoscedasticity
are available by clicking the button between the information and warning icons. Further explanation is available in the figure caption.
</p>

      </br>
      <p> <b> References </b> </p>
<p>Cressie, N. A. C. & Whitford, H. J. (1986) How to use the two-sample <i>t</i>-test, <i>Biometrical Journal</i>, <i>2</i>, 131–148.</p>
      <p>Gans, D. J. (1981). Use of a preliminary test in comparing two sample means. <i>Communications in Statistics - Simulation and Computation</i>, <i>10</i>, 163-174. </p>
<p>Rochon, J., & Kieser, M. (2011). A closer look at the effect of preliminary goodness‐of‐fit testing for normality for the one‐sample <i>t</i>‐test. <i>British Journal of Mathematical and Statistical Psychology</i>, <i>64</i>, 410-426.</p>
<p>Zimmerman, D. W. (1996). Some properties of preliminary tests of equality of variances in the two-sample location problem. <i>The Journal of General Psychology</i>, <i>123</i>, 217-231.</p>
      <p>Zimmerman, D. W. (2004). A note on preliminary tests of equality of variances. <i>British Journal of Mathematical and Statistical Psychology</i>, <i>57</i>, 173-181.</p>
         ')
  })
  
  # Show blank plots
  output$plott <- output$plott1 <- output$plott2 <- renderPlot(plot.histograms.ttest(default = T))
  #output$plotpvalues <- renderPlot({plot.histograms.chif(default = T)})
  output$histogramst.r <- renderPlot(plot.histograms.rob(default = T)) 
  output$histogramst2 <- renderPlot(plot.histograms.norm(default = T)) 
  output$histogramst1 <- renderPlot(plot.histograms.var(default = T)) 
  output$histogramsn2 <- renderPlot(plot.histograms.pvaln(default = T))
  output$histogramsv1 <- renderPlot(plot.histograms.pvalv(default = T))
  output$histograms.var <- renderPlot({plot.histograms.pvalv(default = T)})
  output$histogramst <- renderPlot({plot.histograms.var(default = T)})
  output$histograms.norm <- renderPlot({plot.histograms.normality(default = T)})
  output$plotNormPval <- renderPlot({plot.histograms.normality(default = T) })
  output$plotDist <- output$plotDist2 <- output$plotDist3 <- renderPlot({plot.dist(default =T)}, bg = "transparent")
  output$warningsT <- output$warningsT1 <- output$warningsT2 <- renderUI(HTML('<center><h2> There are no warnings to display </h2></center>'))
  
  ################################################################################
  #                                   VARIANCE                                   #
  ################################################################################
  
  # Error control
  observeEvent(input$runT1, ignoreNULL = T, {
  shinyjs::hide("runT1"); shinyjs::show("fakerunT1")
      # These ones don't need error control because they're sliders
    n1 <- input$n11
    n2 <- input$n21
    
    warnings.t1.sequential <- list(NULL, NULL)
    if (is.na(input$alphanom1) || input$alphanom1 < minalpha || input$alphanom1 > maxalpha) {
      warnings.t1.sequential[[1]] <- paste("Probabilities must be between ", minalpha, " and ", maxalpha, ".", sep = "")
      alphanom <- 0.05
    } else {
      alphanom <- input$alphanom1
    }
    if (is.na(input$sd11) || input$sd11 < minsd || input$sd11 > maxsd) {
      warnings.t1.sequential[[2]] <- paste("The standard deviation must be between ", minsd, " and ", maxsd, ".", sep = "")
      param.b1 <- 1
    } else {
      param.b1 <- input$sd11
    }
    if (is.na(input$sd21) || input$sd21 < minsd || input$sd21 > maxsd) {
      warnings.t1.sequential[[2]] <- paste("The standard deviation must be between ", minsd, " and ", maxsd, ".", sep = "")
      param.b2 <- 1
    } else {
      param.b2 <- input$sd21
    }
    if (any(sapply(warnings.t1.sequential, is.null) == FALSE)){
      output$warningsT1 <- renderUI(HTML(paste("<p>", warnings.t1.sequential[!(sapply(warnings.t1.sequential, is.null))], "</p><p>")))
      output$alertT1 <- renderUI(HTML('<script> sweetAlert(\'Simulation failed!\',\' It appears you have entered at least one incorrect input. Check the warnings for details. \',\'error\') </script>'))
      shinyjs::hide("fakerunT1"); shinyjs::show("runT1")
      return()
    }

    ################

    # We fixed the mean and the sd earlier at the top. Because we're using the Normal distribution,
    # the mean is the first parameter and the standard deviation the second.
    param.a1 <- mu1
    param.a2 <- mu2
    N <- n1 + n2 # Total sample size
    # Vectors to store p-values of eq. variances and eq. means
    pval_teq <- pval_tuneq <- pval_var <- numeric(nrep)
    
    ################ GENERATE DATA ################ 
    data1 <- matrix(rnorm(n1*nrep, param.a1, param.b1),
                    nrow = n1, ncol = nrep)
    data2 <- matrix(rnorm(n2*nrep, param.a2, param.b2),
                    nrow = n2, ncol = nrep)
    
    ################ CALCULATE STUFF ################ 
    # Sample means and variances
    samplemeans1 <- colMeans(data1)
    samplemeans2 <- colMeans(data2)
    sampleunbvariance1 <- apply(data1, 2, var)
    sampleunbvariance2 <- apply(data2, 2, var)
    
    # T-test
    # Equal variances
    pval_teq <- test.student(samplemeans1, samplemeans2,
                             sampleunbvariance1, sampleunbvariance2,
                           n1, n2)
    # Unequal variances
    pval_tuneq <- test.welch(samplemeans1, samplemeans2,
                             sampleunbvariance1, sampleunbvariance2,
                           n1, n2)
    # Test of equality of variances
    if(input$whichVar1 == "F-test"){
      pval_var <- test.f(sampleunbvariance1, sampleunbvariance2, n1, n2) # F-test
    } else {
      pval_var <- test.levene(data1, data2, samplemeans1, samplemeans2, n1, n2)
    }
    # Conditional p-values
    pval_teq_cond <- pval_teq[pval_var >= alphanom] # Student's t-test
    pval_tuneq_cond <- pval_tuneq[pval_var < alphanom] # Welch's test
    # Outputs
    observe({
      if(input$ttestpval1 == "Both") {
        colores <- c("indianred", "lightslateblue")
        pval_t <- c(pval_tuneq_cond)
        pval_t2 <- c(pval_teq_cond, pval_tuneq_cond)
        pval_t.uncond <- NA
      output$plott1 <- renderPlot({
        plot.histograms.ttest(results = pval_t, results2 = pval_t2,
                              nrep = nrep, alpha = alphanom, default = F, colores = colores)
      })
      } else if (input$ttestpval1 == "Welch's test"){
        colores <- c("lightslateblue", "#8470FF40")
        pval_t <- pval_tuneq_cond
        pval_t.uncond <- pval_tuneq
        pval_t2 <- NA
      output$plott1 <- renderPlot({
        plot.histograms.ttest.welch(results = pval_tuneq_cond, results0 = pval_tuneq,
                              nrep = nrep, alpha = alphanom, colores = colores)
      })
      } else{
        pval_t <- pval_teq_cond
        pval_t.uncond <- pval_teq
        pval_t2 <- NA
        colores <- c("indianred", "#CD5C5C40")
      output$plott1 <- renderPlot({
        plot.histograms.ttest.students(results = pval_teq_cond, results0 = pval_teq,
                              nrep = nrep, alpha = alphanom, colores = colores)
      })
      }

    })
    output$histogramst1 <- renderPlot({
      plot.histograms.var(results = pval_teq, results2 = pval_tuneq, nrep = nrep, alpha = alphanom, default = F)
    })
    output$histogramsv1 <- renderPlot({
            plot.histograms.pvalv(results = pval_var, nrep = nrep, alpha = alphanom, default = F)
    })
      output$plotDist2 <- renderPlot({
             plot.dist(dist1 = 1, dist2 = 1,
                parama1 = param.a1, parama2 = param.a2,
                paramb1 = param.b1, paramb2 = param.b2)
        },  bg = "transparent")
        
    # Finish
    output$alertT1 <- renderUI(HTML('<script> sweetAlert(\'Simulation finished!\',\' \',\'success\') </script>'))
    shinyjs::hide("fakerunT1"); shinyjs::show("runT1")
  })
  
  observe({
            # Top right table
        R1 <- rbind(c(input$sd21/input$sd11),
                      c(input$n21/input$n11))
        rownames(R1) <- c("Standard deviation ratio (group 2 / group 1):",
                            "Sample-size ratio (group 2 / group 1):")
        output$legend1 <- renderTable(R1, rownames = T, colnames = F, hover = T,
                                      spacing = "xs", align = "l", width = "400px")
  })
  
  ################################################################################
  #                                  NORMALITY                                   #
  ################################################################################
  
  observeEvent(input$runT2, ignoreNULL = T, {
    shinyjs::hide("runT2"); shinyjs::show("fakerunT2")
    n1 <- input$n12
    n2 <- input$n22
    
    warnings.t2.sequential <- list(NULL)
      if (is.na(input$alphanom2) || input$alphanom2 < minalpha || input$alphanom2 > maxalpha) {
        warnings.t2.sequential[[1]] <- paste("Probabilities must be between ", minalpha, " and ", maxalpha, ".", sep = "")
        alphanom <- 0.05
      } else {
        alphanom <- input$alphanom2
      }
      if (any(sapply(warnings.t2.sequential, is.null) == FALSE)){
          shinyjs::hide("fakerunT2"); shinyjs::show("runT2")
        return()
      }
    
    ##########
    # Calculate parameter values depending on the mean and sd
    # Group 1
    param.b1 <- c(sd1, # Normal distribution
                  sqrt(3)*sd1+mu1, # Uniform distribution
                  sqrt( log( sd1^2/mu1^2+1 ) ), # Lognormal distribution
                  2, # Beta distribution
                  sd1/sqrt(2)) # Laplace distribution
    param.a1 <- c(mu1, 2 * mu1 - param.b1[2], log(mu1) - param.b1[3]^2/2, 5, mu1)
    
    # Group 2
    param.b2 <- c(sd2, sqrt(3)*sd2+mu2, sqrt( log( sd2^2/mu2^2+1 ) ), 2, sd2/sqrt(2))
    param.a2 <- c(mu2, 2 * mu2 - param.b2[2], log(mu2) - param.b2[3]^2/2, 5, mu2)
    
    # Now select the parameters we want based on the selected distribution
    # If dist == Normal, select the first set of parameters (param.a1[1], etc.)
    # If dist == Uniform, select the second set of parameters (param.a1[2], etc.)
    # If dist == Lognormal, select the third set of parameters (param.a1[3], etc.)
    # Ditto for the other distributions...
    # This is a way for me to avoid explicit if...else
    index.dist1 <- which(all.dist == input$whichdist1)
    index.dist2 <- which(all.dist == input$whichdist2)
    
    # These are the final parameter values
    param.a1 <- param.a1[index.dist1]
    param.b1 <- param.b1[index.dist1]
    param.a2 <- param.a2[index.dist2]
    param.b2 <- param.b2[index.dist2]

    ################ USER INPUTS ################ 
    N <- n1 + n2
    pval_norm <- matrix(ncol = 2, nrow = nrep)
    if(input$normBonferroni) {
      alphanom.norm <- alphanom/2
    } else {
      alphanom.norm <- alphanom
    }
    
    ################ GENERATE DATA ################ 
    data1 <- matrix(get(all.rdistfun[index.dist1])(n1*nrep, param.a1, param.b1),
                    nrow = n1, ncol = nrep)
    data2 <- matrix(get(all.rdistfun[index.dist2])(n2*nrep, param.a2, param.b2),
                    nrow = n2, ncol = nrep)
    
    ######## STANDARDIZE AND TRANSFORM IF NEEDED
    # Only when using the beta distribution will we need to transform the scores
    # Use the true mean and sd for fake standarization before transforming
    if(index.dist1 == 4){
    betamean <- param.a1/(param.a1+param.b1)
    betasd <- sqrt((param.a1*param.b1) / ( (param.a1 + param.b1)^2 * (param.a1 + param.b1 + 1) ))
    data1 <- ((data1 - betamean)/betasd) * sd1 + mu1
    }
    if(index.dist2 == 4){
    betamean <- param.a2/(param.a2+param.b2)
    betasd <- sqrt((param.a2*param.b2) / ( (param.a2 + param.b2)^2 * (param.a2 + param.b2 + 1) ))
    data2 <- ((data2 - betamean)/betasd) * sd2 + mu2
    }
    
    ################ CALCULATE STUFF ################ 
    samplemeans1 <- colMeans(data1)
    samplemeans2 <- colMeans(data2)
    sampleunbvariance1 <- apply(data1, 2, var) 
    sampleunbvariance2 <- apply(data2, 2, var) 
    sk1 <- apply(data1, 2, A3)
    sk2 <- apply(data2, 2, A3)
    
    ######## TEST
    
    # Student's t-test + robust alternative
    pval_teq <- test.student(samplemeans1, samplemeans2, sampleunbvariance1, sampleunbvariance2, n1, n2)
    pval_robust <- test.robust.eq(samplemeans1, samplemeans2, sampleunbvariance1, sampleunbvariance2, n1, n2, sk1, sk2)
    
    # Normality test
    if(input$whichNorm2 == "Shapiro-Wilk"){
      for(i in 1:nrep){
        pval_norm[i,1] <- stats::shapiro.test(data1[,i])$p.value
        pval_norm[i,2] <- stats::shapiro.test(data2[,i])$p.value
      }
    } else {
    # Standardize
    stdata1 <- t( (t(data1)-samplemeans1)/sqrt(sampleunbvariance1))
    stdata2 <- t( (t(data2)-samplemeans2)/sqrt(sampleunbvariance2))
      for(i in 1:nrep){
        pval_norm[i,] <- test.chi(data1 = stdata1[,i], data2 = stdata2[,i])
      }
    }
    
    # Conditional p-values
    pval_teq_cond <- pval_teq[pval_norm[,1] >= alphanom.norm & pval_norm[,2] >= alphanom.norm]
    pval_robust_cond <- pval_robust[pval_norm[,1] < alphanom.norm | pval_norm[,2] < alphanom.norm]
    
    ##########
    
    # P values of the Normality test
    output$plotNormPval <- renderPlot({
      plot.histograms.normality(results = pval_norm, nrep = nrep, alpha = alphanom.norm, default = F,
                                alphagraph = alphanom)
    })
    
    observe({
      if(input$ttestpval2 == "Both") {
        colores <- c("indianred", "#808080")
        output$plott2 <- renderPlot({
          plot.histograms.ttest(results = pval_robust_cond, results2 = c(pval_teq_cond, pval_robust_cond),
                                nrep = nrep, alpha = alphanom, default = F, colores = colores)
        })
      } else if (input$ttestpval2 == "Cressie's t-test"){
        colores <- c("#808080", "#80808040")
        output$plott2 <- renderPlot({
          plot.histograms.ttest.robust(results = pval_robust_cond, results0 = pval_robust,
                                       nrep = nrep, alpha = alphanom, colores = colores)
        })
      } else{
        colores <- c("indianred", "indianred4")
        output$plott2 <- renderPlot({
          plot.histograms.ttest.students(results = pval_teq_cond, results0 = pval_teq,
                                         nrep = nrep, alpha = alphanom, colores = colores)
        })
      }
      
    })
    
    # P values of the t test (conditioned, left)
    #  output$plott2 <- renderPlot({
    #    plot.histograms.ttest.norm(results = pval_teq_cond,
    #         results.uncond = pval_teq, results2 = NA,
    #         nrep = nrep, alpha = alphanom, colores = c("indianred1", "indianred4"))
    #  })
      
    # P values of the t test (unconditioned, right)
    output$histogramst2 <- renderPlot({
      colores1 <- c("indianred", "indianred")
      colores2 <- c("#808080", "#808080")
      plot.histograms.norm(results = pval_teq, results2 = pval_robust,
                           nrep = nrep, alpha = alphanom, default = F,
                           colores1 = colores1, colores2 = colores2)
    })
      
     #   output$histogramst2 <- renderPlot({
    #      plot.histograms.ttest(results = pval_teq, results2 = NA,
      #                        nrep = nrep, alpha = alphanom, colores = c("indianred1", "indianred4"))
     #   })
      # Distribution plot (bottom left)
        output$plotDist <- renderPlot({
      plot.dist(dist1 = index.dist1, dist2 = index.dist2,
                parama1 = param.a1, parama2 = param.a2,
                paramb1 = param.b1, paramb2 = param.b2)
        },  bg = "transparent")
        
    
    ##########
      
    output$alertT2 <- renderUI(HTML('<script> sweetAlert(\'Simulation finished!\',\' \',\'success\') </script>'))
    shinyjs::hide("fakerunT2"); shinyjs::show("runT2")
    
  })
  
    observe({
            # Top right table
        R1 <- rbind(c(input$n22/input$n12))
        rownames(R1) <- c("Sample-size ratio (group 2 / group 1):")
        output$legend2 <- renderTable(R1, rownames = T, colnames = F, hover = T,
                                      spacing = "xs", align = "l", width = "400px")
  })
  
  ################################################################################
  #                                    BOTH                                      #
  ################################################################################
  
  upperb <- NULL
  
  ################################ SEQUENTIAL DESIGN ############################
  
  observeEvent(input$runT, ignoreNULL = T, {
    
    n1 <- input$n1
    n2 <- input$n2
    
    warnings.t.sequential <- list(NULL, NULL)
    
    shinyjs::hide("runT"); shinyjs::show("fakerunT")

    
    if (is.na(input$alphanom) || input$alphanom < minalpha || input$alphanom > maxalpha) {
      warnings.t.sequential[[1]] <- paste("Probabilities must be between ", minalpha, " and ", maxalpha, ".", sep = "")
      alphanom <- 0.05
    } else {
      alphanom <- input$alphanom
    }
      
      if (is.na(input$sd1) || input$sd1 < minsd || input$sd1 > maxsd) {
        warnings.t.sequential[[2]] <- paste("The standard deviation must be between ", minsd, " and ", maxsd, ".", sep = "")
        sd1 <- 1
      } else {
        sd1 <- input$sd1
      }
      
     if (is.na(input$sd2) || input$sd2 < minsd || input$sd2 > maxsd) {
        warnings.t.sequential[[2]] <- paste("The standard deviation must be between ", minsd, " and ", maxsd, ".", sep = "")
        sd2 <- 1
      } else {
        sd2 <- input$sd2
      }
    
  if (any(sapply(warnings.t.sequential, is.null) == FALSE)){
    output$warningsT <- renderUI(HTML(paste("<p>", warnings.t.sequential[!(sapply(warnings.t.sequential, is.null))], "</p><p>")))
    output$alertT <- renderUI(HTML('<script> sweetAlert(\'Simulation failed!\',\' It appears you have entered at least one incorrect input. Check the warnings for details. \',\'error\') </script>'))
    shinyjs::hide("fakerunT"); shinyjs::show("runT")
    return()
  }

    ################ USER INPUTS ################ 
    
    if(input$normBonferroni2){
    alphanom.norm <- alphanom/2
    }else{
      alphanom.norm <- alphanom
    }
    
    conditioned.var <- T # If means is conditioned or not
    conditioned.norm <- conditioned.var
    
    N <- n1 + n2
    
    pval_norm <- matrix(ncol = 2, nrow = nrep)
    
    # Calculate parameter values depending on the mean and sd
    
    # Group 1
    param.b1 <- c(sd1, # Normal distribution
                  sqrt(3)*sd1+mu1, # Uniform distribution
                  sqrt( log( sd1^2/mu1^2+1 ) ), # Lognormal distribution
                  2, # Beta distribution
                  sd1/sqrt(2)) # Laplace distribution
    param.a1 <- c(mu1,
                  2 * mu1 - param.b1[2], ###OJO### mu1 - sqrt(3)*sd1
                  log(mu1) - param.b1[3]^2/2,
                  5,
                  mu1)
    # Group 2
    param.b2 <- c(sd2,
                  sqrt(3)*sd2+mu2,
                  sqrt( log( sd2^2/mu2^2+1 ) ),
                  2,
                  sd2/sqrt(2))
    
    param.a2 <- c(mu2,
                  2 * mu2 - param.b2[2],
                  log(mu2) - param.b2[3]^2/2,
                  5,
                  mu2)
    
    index.dist1 <- which(all.dist == input$dist1)
    index.dist2 <- which(all.dist == input$dist2)
    
    # These are the final parameter values
    param.a1 <- param.a1[index.dist1]
    param.b1 <- param.b1[index.dist1]
    
    param.a2 <- param.a2[index.dist2]
    param.b2 <- param.b2[index.dist2]
    
    ################ GENERATE DATA ################ 
    data1 <- matrix(get(all.rdistfun[index.dist1])(n1*nrep, param.a1, param.b1),
                    nrow = n1, ncol = nrep)
    data2 <- matrix(get(all.rdistfun[index.dist2])(n2*nrep, param.a2, param.b2),
                    nrow = n2, ncol = nrep)
    
   # print(sd(data1))

        ######## STANDARDIZE AND TRANSFORM IF NEEDED
    # Only when using the beta distribution will we need to transform the scores
    # Use the true mean and sd for fake standarization before transforming
    if(index.dist1 == 4){
    betamean <- param.a1/(param.a1+param.b1)
    betasd <- sqrt((param.a1*param.b1) / ( (param.a1 + param.b1)^2 * (param.a1 + param.b1 + 1) ))
    data1 <- ((data1 - betamean)/betasd) * sd1 + mu1
    }
    if(index.dist2 == 4){
    betamean <- param.a2/(param.a2+param.b2)
    betasd <- sqrt((param.a2*param.b2) / ( (param.a2 + param.b2)^2 * (param.a2 + param.b2 + 1) ))
    data2 <- ((data2 - betamean)/betasd) * sd2 + mu2
    }
    
    ################ CALCULATE STUFF ################ 
    samplemeans1 <- colMeans(data1)
    samplemeans2 <- colMeans(data2)
    sampleunbvariance1 <- apply(data1, 2, var)
    sampleunbvariance2 <- apply(data2, 2, var)
    sk1 <- apply(data1, 2, A3)
    sk2 <- apply(data2, 2, A3)
    
    ################ TEST MEANS ################ 
    # T-test
    # Equal variances
    pval_teq <- test.student(samplemeans1, samplemeans2,
                             sampleunbvariance1, sampleunbvariance2,
                           n1, n2)
    # Unequal variances
    pval_tuneq <- test.welch(samplemeans1, samplemeans2,
                             sampleunbvariance1, sampleunbvariance2,
                           n1, n2)
    
    # Robust, unequal variances
    pval_robust <- test.robust.uneq(samplemeans1, samplemeans2, sampleunbvariance1, sampleunbvariance2, n1, n2, sk1, sk2)

    
    ################ TEST VARIANCES ################ 
    if(input$whichVar == "F-test"){
      pval_var <- test.f(sampleunbvariance1, sampleunbvariance2, n1, n2) # F-test
    } else {
      pval_var <- test.levene(data1, data2, samplemeans1, samplemeans2, n1, n2)
    }
    
    ################ TEST NORMALITY ################ 
    
    # Only do this if required because it takes a long time
    if(conditioned.norm){
    if(input$whichNorm == "Shapiro-Wilk"){
      for(i in 1:nrep){
        pval_norm[i,1] <- stats::shapiro.test(data1[,i])$p.value
        pval_norm[i,2] <- stats::shapiro.test(data2[,i])$p.value
      }
    } else {
    # Standardize
    stdata1 <- t( (t(data1)-samplemeans1)/sqrt(sampleunbvariance1))
    stdata2 <- t( (t(data2)-samplemeans2)/sqrt(sampleunbvariance2))
      for(i in 1:nrep){
        pval_norm[i,] <- test.chi(data1 = stdata1[,i], data2 = stdata2[,i])
      }
    }
    }
    
    ############### CALCULATE CONDITIONAL PVALUES ###############

  pval_teq_cond <- pval_teq[pval_norm[,1] >= alphanom.norm & pval_norm[,2] >= alphanom.norm & pval_var >= alphanom]
  pval_tuneq_cond <- pval_tuneq[pval_norm[,1] >= alphanom.norm & pval_norm[,2] >= alphanom.norm & pval_var < alphanom]
  pval_robust_cond <- pval_robust[pval_norm[,1] < alphanom.norm | pval_norm[,2] < alphanom.norm]
  pval_var_cond <- pval_var[pval_norm[,1] >= alphanom.norm & pval_norm[,2] >= alphanom.norm]
  
    ############### PLOT RESULTS ###############
  
      observe({
      if(input$ttestpval3 == "All") {
        colores <- c("indianred", "#808080")
    output$plott <- renderPlot({
      plot.histograms.ttest.norm(results = pval_tuneq_cond, results2 = c(pval_teq_cond, pval_tuneq_cond, pval_robust_cond),
                                 results3 = pval_robust_cond,
                                 nrep = nrep, alpha = alphanom, colores = c("indianred3", "firebrick1"))
    })
      } else if (input$ttestpval3 == "Cressie's t-test"){
        colores <- c("#000080", "#00008040")
        output$plott <- renderPlot({
          plot.histograms.ttest.robust(results = pval_robust_cond, results0 = pval_robust,
                                       nrep = nrep, alpha = alphanom, colores = colores)
        })
      } else if(input$ttestpval3 == "Student's t-test"){
        colores <- c("indianred", "indianred4")
        output$plott <- renderPlot({
          plot.histograms.ttest.students(results = pval_teq_cond, results0 = pval_teq,
                                         nrep = nrep, alpha = alphanom, colores = colores)
        })
      } else{
        colores <- c("lightslateblue", "#8470FF40")
      output$plott <- renderPlot({
        plot.histograms.ttest.welch(results = pval_tuneq_cond, results0 = pval_tuneq,
                              nrep = nrep, alpha = alphanom, colores = colores)
      })
      }
      
    })
      
  
    output$histogramst <- renderPlot({
      plot.histograms.var(results = pval_teq, results2 = pval_tuneq, nrep = nrep, alpha = alphanom, default = F)
    })
    
    output$histogramst.r <- renderPlot({
      plot.histograms.rob(results = pval_robust, nrep = nrep, alpha = alphanom, default = F)
    })
    
    output$histograms.norm <- renderPlot({
      plot.histograms.normality(results = pval_norm, nrep = nrep, alpha = alphanom.norm, default = F,
                                alphagraph = alphanom)
    })
        output$histograms.var <- renderPlot({
      plot.histograms.pvalv(results = pval_var_cond, results0 = pval_var, nrep = nrep, alpha = alphanom, default = F)
    })
            output$plotDist3 <- renderPlot({
      plot.dist(dist1 = index.dist1, dist2 = index.dist2,
                parama1 = param.a1, parama2 = param.a2,
                paramb1 = param.b1, paramb2 = param.b2, sds1 = isolate(input$sd1), sds2 = isolate(input$sd2) )
        },  bg = "transparent")
  
    output$alertT <- renderUI(HTML('<script> sweetAlert(\'Simulation finished!\',\' \',\'success\') </script>'))
    shinyjs::hide("fakerunT"); shinyjs::show("runT")
    
  })
  
  observe({
            # Top right table
        R1 <- rbind(c(input$sd2/input$sd1),
                      c(input$n2/input$n1))
        rownames(R1) <- c("Standard deviation ratio (group 2 / group 1):",
                            "Sample-size ratio (group 2 / group 1):")
        output$legend0 <- renderTable(R1, rownames = T, colnames = F, hover = T,
                                      spacing = "xs", align = "l", width = "400px")
  })
  
}
#####################################################################
# ShinyApp 2019: Conditional testing (Eq. Var., Normality, t-test)  #
#               Universidad Complutense de Madrid                   #
#####################################################################

rm(list = ls())

library('shiny')
library('shinyBS')
library('shinyjs')
library('sweetalertR') # install with devtools::install_github("timelyportfolio/sweetalertR")
library('htmltools')

source("plotfun.R"); source("calcfun.R"); source("histfun.R")

ui <- fluidPage(theme = "bootstrap.css",
                shinyjs::useShinyjs(),
                includeScript("../../../Matomo-qhelp.js"),
                navbarPage(HTML("CONDITIONAL TESTING"),
             
  ################################################################################
  #                                   VARIANCE                                   #
  ################################################################################
  
tabPanel("Homoscedasticity",
         useShinyjs(),
         tags$p(),
         
         tags$head(tags$style(HTML('.modal-sm {
                                   width: 650px;
                                   }'))),
  
         h1("Test for two means: Equal-variances assumption", align = "center"),
         br(),

         sidebarLayout(
           
           
           sidebarPanel(width = 4,
                        
                        fluidRow(column(width = 6,
                                        selectInput(inputId = "whichVar1", label = HTML("Which test of</br>homoscedasticity?"), choices = c("F-test", "Levene's"))),
                        column(width = 6,
                                        numericInput(inputId = "alphanom1", label = HTML("Significance</br>level"), value = 0.05,
                                                     min = 0.0001, max = 0.9999))),
                        
                        fluidRow(column(width = 6,
                                        HTML("<p> <center> <b> GROUP 1 </br> (Normal distribution) </b> </center> </p>")),
                                 column(width = 6,
                                        HTML("<p> <center> <b> GROUP 2 </br> (Normal distribution) </b> </center> </p>"))),
                        
                        fluidRow(
                          column(width = 6, 
                                 numericInput(inputId = "sd11", label = "Standard deviation", value = 1, min = 0.01, max = 100, step = 0.01)),
                          column(width = 6,
                                 numericInput(inputId = "sd21", label = "Standard deviation", value = 1.5, min = 0.01, max = 100, step = 0.01)
                          )
                        ),
                        
                        # Sample sizes
                        
                        fluidRow(
                          column(width = 6,
                                 sliderInput(inputId = "n11", label = HTML("Sample size"), value = 20, min = 10, max = 100, step = 5)),
                          column(width = 6,
                                 sliderInput(inputId = "n21", label = HTML('Sample size'), value = 30, min = 10, max = 100, step = 5)
                          )),
                        
                        fluidRow(tableOutput("legend1")),
                        
                        # last line
                        
                        fluidRow(
                          column(width = 1, offset = 0,
                                 actionButton("infoT1", label = "", icon = icon("info-circle"),
                                              style="color: #fff; background-color: #337ab7; border-color: #2e6da4")
                          ),
                          column(width = 1, offset = 1,
                                 actionButton("errorPlot1B", label = "", icon = icon("line-chart"),
                                              style="color: #fff; background-color: #337ab7; border-color: #2e6da4")),
                          column(width = 1, offset = 1,
                                 actionButton("warnT1", label = "", icon = icon("exclamation-triangle"),
                                              style="color: #fff; background-color: #FF8000; border-color: #FF8000"),
                                 bsTooltip("warnT1", "Check for warnings (recommended)", "right", trigger = "hover", options = list(container = "body"))
                          ),
                          column(width = 2, offset = 1,
                                 HTML('
      <button id="runT1" type="button" class="btn btn-primary action-button">
      <i class="glyphicon glyphicon-triangle-right"></i>
      Run simulation
      </button>
      '),
                                 HTML('
      <button id="fakerunT1" type="button" class="btn btn-primary action-button">
      <i class="fa fa-spinner fa-spin"></i>
      Run simulation
      </button>
      ')
                                 # fa fa-spinner fa-spin
                                 # glyphicon glyphicon-refresh fast-right-spinner
                          )
                          
                        ),
            fluidRow(plotOutput(outputId = "plotDist2", height = "300px") )

           ),
           
           mainPanel(
  fluidRow(column(width = 6, HTML("<p> <center> <b> <h2> Conditional </h2> </b></center></p>")),
               column(width = 6, HTML("<p><center> <b><h2> Unconditional </h2></b> </center></p>"))),
         hr(),

             fluidRow(column(width = 2, offset = 2,
                             selectInput("ttestpval1", 
                                         label = HTML("Plot <i>p</i>-values of:"),
                                         choices = c("Student's t-test", "Welch's test", "Both"),
                                         selected = "Both"))),
             fluidRow(
               column(width = 6,
                      plotOutput(outputId = "plott1", height = "500px")),
               column(width = 6,
                      plotOutput(outputId = "histogramst1", height = "500px")),
               fluidRow(column(width = 6, offset = 0,
                               plotOutput("histogramsv1", height = "500px"))),
               
               bsModal("modalT1", "Warnings", "warnT1", size = "large", htmlOutput("warningsT1")),
               bsModal("modalInfoT1", "Test for two means: Equal-variances assumptions", "infoT1", size = "large", htmlOutput("informationT1"))
               ,bsModal("errorPlot1", "Conditional test for two means: Equal-variances assumption", "errorPlot1B", size = "large",
                        plotOutput("plotErrorPlot1", height = 1000),
                        fluidRow(column(width = 12,
                                        HTML('
</br> </br> </br> </br>
<p> Illustration of the functioning of Student&#39s and Welch&#39s <i>t</i>‐tests used in conditional and
unconditional testing in different scenarios (homoscedasticity vs. heteroscedasticity with
a variety of sample-size ratios and standard deviation ratios).
In this tab, the normality assumption is always satisfied.
</p>

<p>
All panels show the empirical type‐I error rates of Welch&#39s (blue) and Student&#39s (red) <i>t</i>‐tests
for two independent means across 50,000 replicates. For each color, triangles and circles
respectively correspond to the conditional and unconditional approaches. Under the conditional approach,
a homoscedasticity test (<i>F</i>‐test or Levene&#39s, depending on the user&#39s selection through the app inputs) was carried out first.
If the null hypothesis of equality of variances was rejected, then a Welch&#39s test was performed on the means;
otherwise, a Student&#39s <i>t</i>‐test was conducted. In the unconditional approach, both tests on means were performed
without any prior checks on assumptions. The dashed black line marks the nominal alpha level,
which in this window remains fixed at 0.05 regardless of the significance level chosen by the user.
The arrows in the top panels mark the conditions used to produce the bottom panels
(top‐left arrow for bottom‐right panel and top‐right arrow for bottom‐left panel).</p>

<p>
Panels on <b>the left column</b> show type‐I error rates as a function of the ratio between the sample size
of both groups when the two standard deviations are equal (top left) and when they differ to a fixed ratio of
0.8 (bottom left). When standard deviations are equal (the homoscedasticity assumption holds),
the conditional approach renders the same results as unconditional testing.
Note that the symbols of the conditional Welch&#39s test (blue triangles) do not always lie exactly over the nominal significance
level because this test is only conducted approximately 5&#37; of the time (i.e., around 2,500 replicates).
When the standard deviations differ, only the unconditional Welch&#39s <i>t</i>‐test (blue circles)
renders empirical rejection rates at the nominal alpha level regardless of the sample-size ratio.
Unsurprisingly, empirical rejection rates yielded by the Student&#39s <i>t</i>‐test depart from the nominal alpha level
when it is used unconditionally. However, the implementation of a two‐step conditional approach does not fix the problem and
both Student&#39s and Welch&#39s tests produce rejection rates that depart from the theoretical value of 5&#37;.
</p>

<p>
Panels on <b>the right column</b> show type‐I error rates as a function of the ratio between true standard deviations
when sample sizes are equal (top right) and unequal (bottom right,
corresponding to a sample-size ratio of 1.4). With equal sample sizes, both Student&#39s and Welch&#39s
unconditional <i>t</i>‐tests perform adequately even if the equal‐variances assumption is violated,
but empirical error rates of the conditional approach steer away from the nominal alpha when the standard deviations differ.
When sample sizes are also different, only Welch&#39s unconditional test (blue circles) performs as expected in terms of its type‐I error rates.
</p>

<p>
Taking into account all conditions, only Welch&#39s non‐conditional test is robust for heteroscedasticity and unequal sample sizes,
which makes it the preferred option as long as the normality assumption is satisfied.
</p>
                                             '))))
               ,htmlOutput("alertT1")
               ,sweetalert()
             )
           )
         )),

  ################################################################################
  #                                  NORMALITY                                   #
  ################################################################################

tabPanel("Normality",
         
         useShinyjs(),
         tags$p(),
         
         tags$head(tags$style(HTML('.modal-sm {
                                   width: 650px;
                                   }'))),
         
         h1("Test for two means: Normality assumption", align = "center"),
        br(),
         
         sidebarLayout(
           
           
           sidebarPanel(width = 4,
                        
                        fluidRow(column(width = 6,
                                        selectInput(inputId = "whichNorm2", label = "Which test of normality?", choices = c("Chi-square", "Shapiro-Wilk"), selected = "Shapiro-Wilk")),
                                 column(width = 6,
                                        numericInput(inputId = "alphanom2", label = "Significance level", value = 0.05,
                                                     min = 0.0001, max = 0.9999))),
                        fluidRow(column(width = 12,
                                        checkboxInput(inputId = "normBonferroni", label = "Correct for multiple comparisons? (normality test)", value = T))),
                    
                        bsTooltip(id = "normBonferroni", "Note that the test of normality involves testing groups 1 and 2",
                                  "right", trigger = "hover"),

                        fluidRow(column(width = 6,
                                        HTML("<p> <center> <b> GROUP 1 </b> </center> </p>")),
                                 column(width = 6,
                                        HTML("<p> <center> <b> GROUP 2 </b> </center> </p>"))),
                        
                        fluidRow(column(width = 6,
                                        selectInput(inputId = "whichdist1",
                                                    label = "Distribution",
                                                    choices = c("Normal", "Uniform", "Lognormal", "Negatively skewed (Beta)", "Laplace"),
                                                    selected = "Normal")),
                                 column(width = 6,
                                        selectInput(inputId = "whichdist2",
                                                    label = "Distribution", choices = c("Normal", "Uniform", "Lognormal", "Negatively skewed (Beta)", "Laplace"),
                                                    selected = "Lognormal"))),
                        
                        # Sample sizes
                        
                        fluidRow(
                          column(width = 6,
                                 sliderInput(inputId = "n12", label = HTML("Sample size"), value = 50, min = 10, max = 190, step = 5)),
                          column(width = 6,
                                 sliderInput(inputId = "n22", label = HTML('Sample size'), value = 50, min = 10, max = 190, step = 5)
                          )),
                        
                        fluidRow(
                        tableOutput("legend2")),
                        
                        # last line
                        
                        fluidRow(
                          column(width = 1, offset = 0,
                                 actionButton("infoT2", label = "", icon = icon("info-circle"),
                                              style="color: #fff; background-color: #337ab7; border-color: #2e6da4")
                          ),
                          column(width = 1, offset = 1,
                                 actionButton("errorplotNormal", label = "", icon = icon("line-chart"),
                                              style="color: #fff; background-color: #337ab7; border-color: #2e6da4")),
                          column(width = 1, offset = 1,
                                 actionButton("warnT2", label = "", icon = icon("exclamation-triangle"),
                                              style="color: #fff; background-color: #FF8000; border-color: #FF8000"),
                                 bsTooltip("warnT2", "Check for warnings (recommended)", "right", trigger = "hover", options = list(container = "body"))
                          ),
                          column(width = 2, offset = 1,
                                 HTML('
      <button id="runT2" type="button" class="btn btn-primary action-button">
      <i class="glyphicon glyphicon-triangle-right"></i>
      Run simulation
      </button>
      '),
                                 HTML('
      <button id="fakerunT2" type="button" class="btn btn-primary action-button">
      <i class="fa fa-spinner fa-spin"></i>
      Run simulation
      </button>
      ')
                                 # fa fa-spinner fa-spin
                                 # glyphicon glyphicon-refresh fast-right-spinner
                          )
                          
                        ),
                        
        fluidRow(plotOutput(outputId = "plotDist", height = "300px") )
           ),
           
           mainPanel(
      fluidRow(column(width = 6, HTML("<p> <center> <b> <h2> Conditional </h2> </b></center></p>")),
               column(width = 6, HTML("<p><center> <b><h2> Unconditional </h2></b> </center></p>"))),
               hr(),
      fluidRow(column(width = 2, offset = 2,
                      selectInput("ttestpval2", 
                                  label = HTML("Plot <i>p</i>-values of:"),
                                  choices = c("Student's t-test", "Cressie's t-test", "Both"),
                                  selected = "Both"))),
             fluidRow(
               column(width = 6,
                      plotOutput(outputId = "plott2", height = "500px")
                      ),
               column(width = 6, offset = 0,
                             plotOutput(outputId = "histogramst2", height = "500px")),
               bsModal("modalT2", "Warnings", "warnT2", size = "large", htmlOutput("warningsT2")),
               bsModal("modalInfoT2", "Test for two means: Normality assumption", "infoT2", size = "large", htmlOutput("informationT2"))
               ,bsModal("ploterrorNormalB", "Conditional test for two means: Normality assumption", "errorplotNormal", size = "large",
                        plotOutput("ploterrorNormal", height = 1000),
                        fluidRow(column(width = 12,
                                        HTML('
</br> </br> </br> </br>
<p>
Illustration of the functioning of Student&#39s and Cressie&#39s <i>t</i>‐tests used
in conditional and unconditional testing
when the assumption of normality is partially violated (the variable is always
normally distributed in the first group and it departs from normality in the second).
In this tab the equal‐variance assumption always holds.
</p>

<p>
All panels show the empirical type‐I error rates of Student&#39s and Cressie&#39s <i>t</i>‐tests
for two independent means across 50,000 replicates.
Triangles show results for the conditional approach, whereas circles stand for the unconditional approach.
Red corresponds to Student&#39s results and grey represents Cressie&#39s test.
In the conditional approach, Student&#39s <i>t</i>-test was conducted only if normality was not rejected (either with a chi‐square or a Shapiro‐Wilk test,
depending on the user&#39s selection through the app inputs) in both samples; otherwise Cressie&#39s <i>t</i>-test was carried out.
In the unconditional approach, both tests on means were performed without any prior checks on assumptions.
The dashed black line marks the nominal alpha level, which in this window remains fixed at 0.05 regardless of the significance level
chosen by the user.
A correction for multiple comparisons has been performed in the test of normality
(click the information button for further details).</p>

<p>
Panels on the <b>top row</b> show type‐I error
  rates as a function of the ratio between sample sizes when the variable is not normal but still symmetric
 in the second group: uniform for platykurtosis (top‐left) and Laplace for leptokurtosis (top right). Panels
 on the <b>bottom row</b> show results for skewed variables in the second group (lognormal for a strongly
 positively skewed distribution on the bottom‐left and beta with parameters chosen to render a moderately negatively skewed
 distribution on the bottom‐right).</p>

<p>
In all cases, unconditional approaches render empirical type-I error rates similar to
their nominal rates with both Student&#39s and Cressie&#39s <i>t</i>-tests. When a conditional
approach is followed, empirical rates notably depart from their nominal rates when the distribution
of the variable in the second group is uniform or lognormal. 
</p>

<p>
Taking into account all conditions, Student&#39s unconditional <i>t</i>‐test is resistant to departures of normality
(provided that variances are equal).
Cressie&#39s <i>t</i>-test,
which is presented as an alternative that is particularly robust to skewed distributions,
does not outperform Student&#39s <i>t</i>‐test in any one of these conditions,
and neither does it provide any meaningful advantage.
In any case, it is inadvisable to follow a conditional approach,
as it has been shown to alter the type‐I error rate.</p>
                                             '))))
               ,htmlOutput("alertT2")
               ,sweetalert()
             ),
             fluidRow(column(width = 6,
                      plotOutput(outputId = "plotNormPval", height = "500px")
                      ),
                      column(width = 6,
                             plotOutput(outputId = "plotRobustuncond", height = "500px")
                      ))
           )
         )),

  ################################################################################
  #                                    BOTH                                      #
  ################################################################################

tabPanel("Both",
           
  useShinyjs(),
  tags$p(),
  
  tags$head(tags$style(HTML('.modal-sm {
                            width: 650px;
                           }'))),
  
  h1("Test for two means: Equal-variances and Normality assumptions", align = "center"),
  br(),

  sidebarLayout(
    
    
    sidebarPanel(width = 4,
      
      fluidRow(column(width = 6,
                      selectInput(inputId = "whichNorm", label = HTML("Which test of</br>normality?"), choices = c("Chi-square", "Shapiro-Wilk"), selected = "Shapiro-Wilk")),
               column(width = 6,
                      selectInput(inputId = "whichVar", label = HTML("Which test of</br>homoscedasticity?"), choices = c("F-test", "Levene's")))),
      
      fluidRow(column(width = 6,
                      numericInput(inputId = "alphanom", label = "Significance level", value = 0.05,
                                   min = 0.0001, max = 0.9999)),
               column(width = 6,
                      checkboxInput(inputId = "normBonferroni2", label = "Correct for multiple comparisons? (normality test)", value = T))),

    fluidRow(column(width = 6,
             HTML("<p> <center> <b> GROUP 1 </b> <c/enter> </p>")),
             column(width = 6,
             HTML("<p> <center> <b> GROUP 2 </b> </center> </p>")))
    
    ,fluidRow(column(width = 6,
      selectInput(inputId = "dist1", label = "Distribution", choices = c("Normal", "Uniform",
                                                                         "Lognormal", "Negatively skewed (Beta)", "Laplace"),
                  selected = "Normal")),
      column(width = 6,
             selectInput(inputId = "dist2", label = "Distribution", choices = c("Normal",
                                                                                "Uniform",
                                                                                "Lognormal", "Negatively skewed (Beta)", "Laplace"),
                         selected = "Uniform"))
    )
    
    ########### DISTRIBUTION PARAMETERS

    ,fluidRow(
      column(width = 6, 
             numericInput(inputId = "sd1", label = "Standard deviation", value = 1, min = 0.01, max = 100, step = 0.01)),
      column(width = 6,
             numericInput(inputId = "sd2", label = "Standard deviation", value = 1.5, min = 0.01, max = 100, step = 0.01)
      )
    ),
    
    ########## SAMPLE SIZES
    
    fluidRow(
      column(width = 6,
             sliderInput(inputId = "n1", label = HTML("Sample size"), value = 50, min = 10, max = 190, step = 5)),
      column(width = 6,
             sliderInput(inputId = "n2", label = HTML('Sample size'), value = 30, min = 10, max = 190, step = 5)
      )),
    
    fluidRow(tableOutput("legend0")),
   
  
  # last line
      
      fluidRow(
      column(width = 1, offset = 0,
      actionButton("infoT", label = "", icon = icon("info-circle"),
      style="color: #fff; background-color: #337ab7; border-color: #2e6da4")
      ),
      column(width = 1, offset = 1,
             actionButton("chiPlot", label = "", icon = icon("bar-chart"),
                          style="color: #fff; background-color: #337ab7; border-color: #2e6da4")),
      column(width = 1, offset = 1,
             actionButton("warnT", label = "", icon = icon("exclamation-triangle"),
                          style="color: #fff; background-color: #FF8000; border-color: #FF8000"),
             bsTooltip("warnT", "Check for warnings (recommended)", "right", trigger = "hover", options = list(container = "body"))
      ),
      column(width = 2, offset = 1,
      HTML('
      <button id="runT" type="button" class="btn btn-primary action-button">
      <i class="glyphicon glyphicon-triangle-right"></i>
      Run simulation
      </button>
      '),
      HTML('
      <button id="fakerunT" type="button" class="btn btn-primary action-button">
      <i class="fa fa-spinner fa-spin"></i>
      Run simulation
      </button>
      ')
      # fa fa-spinner fa-spin
      # glyphicon glyphicon-refresh fast-right-spinner
    )
  
  ),
          fluidRow(plotOutput(outputId = "plotDist3", height = "300px") )

  
  ##
),
    
    mainPanel(
      fluidRow(column(width = 6, HTML("<p> <center> <b> <h2> Conditional </h2> </b></center></p>")),
               column(width = 6, HTML("<p><center> <b><h2> Unconditional </h2></b> </center></p>"))),
               hr(),
      fluidRow(column(width = 2, offset = 2,
                      selectInput("ttestpval3", 
                                  label = HTML("Plot <i>p</i>-values of:"),
                                  choices = c("Student's t-test", "Welch's t-test", "Cressie's t-test", "All"),
                                  selected = "All"))),
      fluidRow(
      column(width = 6,
        plotOutput(outputId = "plott", height = "500px")),
        column(width = 6,
        plotOutput(outputId = "histogramst", height = "500px")),
      bsModal("modalT", "Warnings", "warnT", size = "large", htmlOutput("warningsT")),
      bsModal("modalInfoT", "Test for two means: Equal-variances and Normality assumptions", "infoT", size = "large", htmlOutput("informationT"))
      ,bsModal("histchiF", "Test for two means: Equal-variances and Normality assumptions", "chiPlot", size = "large", fluidRow(column(width = 6,
                                                                           plotOutput("histograms.norm", height = "500px")),
                                                                    column(width = 6,
                                                                           plotOutput("histograms.var", height = "500px"))),
fluidRow(column(width = 12,
                                        HTML('
</br></br>
<p>
<b>Left</b>. Empirical distribution of <i>p</i>-values for the test of normality (either,
Shapiro-Wilk or chi-square depending on the user&#39s input) for groups &#35;1 (45&#176; patterned
bars, bottom) and &#35;2 (-45&#176; patterned bars, top). Individual rejection rates are shown separately
(top right legend) for both groups whereas the combined rejection and non-rejection rates are printed above the arrows.
Only combined rejection rates are used in the conditional approach, as they require rejection of normality
in at least one group.
</p>

<p>
<b>Right</b>. Empirical distribution of <i>p</i>-values of the test of equality of variances
(either <i>F</i> or Levene&#39s, depending on the user&#39s input). Dark-green bars show results
for the conditional procedure where variances are tested only if normality was not previously
rejected for any group. Numeric labels over the arrows in the top left area correspond to the
proportions of null hypotheses about variances rejected and not rejected under this approach.
Light-green bars plotting results under the unconditional approach are added for reference.
</p>'))))

      ,htmlOutput("alertT")
      ,sweetalert()
      ),
fluidRow(column(width = 6),
         column(width = 6,
                plotOutput(outputId = "histogramst.r", height = 250)))
    )
  )




)



    
  ))
@import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic");
/*!
 * bootswatch v3.3.6
 * Homepage: http://bootswatch.com
 * Copyright 2012-2016 Thomas Park
 * Licensed under MIT
 * Based on Bootstrap
*/
/*!
 * Bootstrap v3.3.6 (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  -webkit-box-sizing: content-box;
     -moz-box-sizing: content-box;
          box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  -webkit-box-sizing: content-box;
     -moz-box-sizing: content-box;
          box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../fonts/glyphicons-halflings-regular.eot');
  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

.gly-spin {
  -webkit-animation: spin 2s infinite linear;
  -moz-animation: spin 2s infinite linear;
  -o-animation: spin 2s infinite linear;
  animation: spin 2s infinite linear;
}
@-moz-keyframes spin {
  0% {
    -moz-transform: rotate(0deg);
  }
  100% {
    -moz-transform: rotate(359deg);
  }
}
@-webkit-keyframes spin {
  0% {
    -webkit-transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
  }
}
@-o-keyframes spin {
  0% {
    -o-transform: rotate(0deg);
  }
  100% {
    -o-transform: rotate(359deg);
  }
}
@keyframes spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.gly-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -moz-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -o-transform: rotate(90deg);
  transform: rotate(90deg);
}
.gly-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
}
.gly-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -moz-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  -o-transform: rotate(270deg);
  transform: rotate(270deg);
}
.gly-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -moz-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  -o-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.gly-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -moz-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  -o-transform: scale(1, -1);
  transform: scale(1, -1);
}

.glyphicon.fast-right-spinner {
    -webkit-animation: glyphicon-spin-r 1s infinite linear;
    animation: glyphicon-spin-r 1s infinite linear;
}

.glyphicon.normal-right-spinner {
    -webkit-animation: glyphicon-spin-r 2s infinite linear;
    animation: glyphicon-spin-r 2s infinite linear;
}

.glyphicon.slow-right-spinner {
    -webkit-animation: glyphicon-spin-r 3s infinite linear;
    animation: glyphicon-spin-r 3s infinite linear;
}

.glyphicon.fast-left-spinner {
    -webkit-animation: glyphicon-spin-l 1s infinite linear;
    animation: glyphicon-spin-l 1s infinite linear;
}

.glyphicon.normal-left-spinner {
    -webkit-animation: glyphicon-spin-l 2s infinite linear;
    animation: glyphicon-spin-l 2s infinite linear;
}

.glyphicon.slow-left-spinner {
    -webkit-animation: glyphicon-spin-l 3s infinite linear;
    animation: glyphicon-spin-l 3s infinite linear;
}

@-webkit-keyframes glyphicon-spin-r {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(359deg);
        transform: rotate(359deg);
    }
}

@keyframes glyphicon-spin-r {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(359deg);
        transform: rotate(359deg);
    }
}

@-webkit-keyframes glyphicon-spin-l {
    0% {
        -webkit-transform: rotate(359deg);
        transform: rotate(359deg);
    }

    100% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
}

@keyframes glyphicon-spin-l {
    0% {
        -webkit-transform: rotate(359deg);
        transform: rotate(359deg);
    }

    100% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
}

.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.42857143;
  color: #2c3e50;
  background-color: #ffffff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #18bc9c;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #18bc9c;
  text-decoration: underline;
}
a:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 6px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #ffffff;
  border: 1px solid #ecf0f1;
  border-radius: 4px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 21px;
  margin-bottom: 21px;
  border: 0;
  border-top: 1px solid #ecf0f1;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-weight: 400;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #b4bcc2;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 21px;
  margin-bottom: 10.5px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 10.5px;
  margin-bottom: 10.5px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 39px;
}
h2,
.h2 {
  font-size: 32px;
}
h3,
.h3 {
  font-size: 26px;
}
h4,
.h4 {
  font-size: 19px;
}
h5,
.h5 {
  font-size: 15px;
}
h6,
.h6 {
  font-size: 13px;
}
p {
  margin: 0 0 10.5px;
}
.lead {
  margin-bottom: 21px;
  font-size: 17px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 22.5px;
  }
}
small,
.small {
  font-size: 86%;
}
mark,
.mark {
  background-color: #f39c12;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #b4bcc2;
}
.text-primary {
  color: #2c3e50;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #1a242f;
}
.text-success {
  color: #ffffff;
}
a.text-success:hover,
a.text-success:focus {
  color: #e6e6e6;
}
.text-info {
  color: #ffffff;
}
a.text-info:hover,
a.text-info:focus {
  color: #e6e6e6;
}
.text-warning {
  color: #ffffff;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #e6e6e6;
}
.text-danger {
  color: #ffffff;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #e6e6e6;
}
.bg-primary {
  color: #fff;
  background-color: #2c3e50;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #1a242f;
}
.bg-success {
  background-color: #18bc9c;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #128f76;
}
.bg-info {
  background-color: #3498db;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #217dbb;
}
.bg-warning {
  background-color: #f39c12;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #c87f0a;
}
.bg-danger {
  background-color: #e74c3c;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #d62c1a;
}
.page-header {
  padding-bottom: 9.5px;
  margin: 42px 0 21px;
  border-bottom: 1px solid transparent;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 10.5px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 21px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 768px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #b4bcc2;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 10.5px 21px;
  margin: 0 0 21px;
  font-size: 18.75px;
  border-left: 5px solid #ecf0f1;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #b4bcc2;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #ecf0f1;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 21px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 4px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #ffffff;
  background-color: #333333;
  border-radius: 3px;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  -webkit-box-shadow: none;
          box-shadow: none;
}
pre {
  display: block;
  padding: 10px;
  margin: 0 0 10.5px;
  font-size: 14px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #7b8a8b;
  background-color: #ecf0f1;
  border: 1px solid #cccccc;
  border-radius: 4px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 15px;
  padding-right: 15px;
}
.row {
  margin-left: -15px;
  margin-right: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #b4bcc2;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 21px;
}
.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.42857143;
  vertical-align: top;
  border-top: 1px solid #ecf0f1;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ecf0f1;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ecf0f1;
}
.table .table {
  background-color: #ffffff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ecf0f1;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ecf0f1;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #ecf0f1;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #ecf0f1;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #dde4e6;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #18bc9c;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #15a589;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #3498db;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #258cd1;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #f39c12;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #e08e0b;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #e74c3c;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #e43725;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 15.75px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ecf0f1;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 21px;
  font-size: 22.5px;
  line-height: inherit;
  color: #2c3e50;
  border: 0;
  border-bottom: 1px solid transparent;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 11px;
  font-size: 15px;
  line-height: 1.42857143;
  color: #2c3e50;
}
.form-control {
  display: block;
  width: 100%;
  height: 45px;
  padding: 10px 15px;
  font-size: 15px;
  line-height: 1.42857143;
  color: #2c3e50;
  background-color: #ffffff;
  background-image: none;
  border: 1px solid #dce4ec;
  border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #2c3e50;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(44, 62, 80, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(44, 62, 80, 0.6);
}
.form-control::-moz-placeholder {
  color: #acb6c0;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #acb6c0;
}
.form-control::-webkit-input-placeholder {
  color: #acb6c0;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #ecf0f1;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 45px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 35px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 66px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 21px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 11px;
  padding-bottom: 11px;
  margin-bottom: 0;
  min-height: 36px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 35px;
  padding: 6px 9px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 3px;
}
select.input-sm {
  height: 35px;
  line-height: 35px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 35px;
  padding: 6px 9px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 3px;
}
.form-group-sm select.form-control {
  height: 35px;
  line-height: 35px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 35px;
  min-height: 34px;
  padding: 7px 9px;
  font-size: 13px;
  line-height: 1.5;
}
.input-lg {
  height: 66px;
  padding: 18px 27px;
  font-size: 19px;
  line-height: 1.3333333;
  border-radius: 6px;
}
select.input-lg {
  height: 66px;
  line-height: 66px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 66px;
  padding: 18px 27px;
  font-size: 19px;
  line-height: 1.3333333;
  border-radius: 6px;
}
.form-group-lg select.form-control {
  height: 66px;
  line-height: 66px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 66px;
  min-height: 40px;
  padding: 19px 27px;
  font-size: 19px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 56.25px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 45px;
  height: 45px;
  line-height: 45px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 66px;
  height: 66px;
  line-height: 66px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 35px;
  height: 35px;
  line-height: 35px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #ffffff;
}
.has-success .form-control {
  border-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #e6e6e6;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
}
.has-success .input-group-addon {
  color: #ffffff;
  border-color: #ffffff;
  background-color: #18bc9c;
}
.has-success .form-control-feedback {
  color: #ffffff;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #ffffff;
}
.has-warning .form-control {
  border-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #e6e6e6;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
}
.has-warning .input-group-addon {
  color: #ffffff;
  border-color: #ffffff;
  background-color: #f39c12;
}
.has-warning .form-control-feedback {
  color: #ffffff;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #ffffff;
}
.has-error .form-control {
  border-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #e6e6e6;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
}
.has-error .input-group-addon {
  color: #ffffff;
  border-color: #ffffff;
  background-color: #e74c3c;
}
.has-error .form-control-feedback {
  color: #ffffff;
}
.has-feedback label ~ .form-control-feedback {
  top: 26px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #597ea2;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 11px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 32px;
}
.form-horizontal .form-group {
  margin-left: -15px;
  margin-right: -15px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 11px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 15px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 19px;
    font-size: 19px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 7px;
    font-size: 13px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  -ms-touch-action: manipulation;
      touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 10px 15px;
  font-size: 15px;
  line-height: 1.42857143;
  border-radius: 4px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #ffffff;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #ffffff;
  background-color: #95a5a6;
  border-color: #95a5a6;
}
.btn-default:focus,
.btn-default.focus {
  color: #ffffff;
  background-color: #798d8f;
  border-color: #566566;
}
.btn-default:hover {
  color: #ffffff;
  background-color: #798d8f;
  border-color: #74898a;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #ffffff;
  background-color: #798d8f;
  border-color: #74898a;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #ffffff;
  background-color: #687b7c;
  border-color: #566566;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #95a5a6;
  border-color: #95a5a6;
}
.btn-default .badge {
  color: #95a5a6;
  background-color: #ffffff;
}
.btn-primary {
  color: #ffffff;
  background-color: #2c3e50;
  border-color: #2c3e50;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #ffffff;
  background-color: #1a242f;
  border-color: #000000;
}
.btn-primary:hover {
  color: #ffffff;
  background-color: #1a242f;
  border-color: #161f29;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #ffffff;
  background-color: #1a242f;
  border-color: #161f29;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #ffffff;
  background-color: #0d1318;
  border-color: #000000;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #2c3e50;
  border-color: #2c3e50;
}
.btn-primary .badge {
  color: #2c3e50;
  background-color: #ffffff;
}
.btn-success {
  color: #ffffff;
  background-color: #18bc9c;
  border-color: #18bc9c;
}
.btn-success:focus,
.btn-success.focus {
  color: #ffffff;
  background-color: #128f76;
  border-color: #0a4b3e;
}
.btn-success:hover {
  color: #ffffff;
  background-color: #128f76;
  border-color: #11866f;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #ffffff;
  background-color: #128f76;
  border-color: #11866f;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #ffffff;
  background-color: #0e6f5c;
  border-color: #0a4b3e;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #18bc9c;
  border-color: #18bc9c;
}
.btn-success .badge {
  color: #18bc9c;
  background-color: #ffffff;
}
.btn-info {
  color: #ffffff;
  background-color: #3498db;
  border-color: #3498db;
}
.btn-info:focus,
.btn-info.focus {
  color: #ffffff;
  background-color: #217dbb;
  border-color: #16527a;
}
.btn-info:hover {
  color: #ffffff;
  background-color: #217dbb;
  border-color: #2077b2;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #ffffff;
  background-color: #217dbb;
  border-color: #2077b2;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #ffffff;
  background-color: #1c699d;
  border-color: #16527a;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #3498db;
  border-color: #3498db;
}
.btn-info .badge {
  color: #3498db;
  background-color: #ffffff;
}
.btn-warning {
  color: #ffffff;
  background-color: #f39c12;
  border-color: #f39c12;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #ffffff;
  background-color: #c87f0a;
  border-color: #7f5006;
}
.btn-warning:hover {
  color: #ffffff;
  background-color: #c87f0a;
  border-color: #be780a;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #ffffff;
  background-color: #c87f0a;
  border-color: #be780a;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #ffffff;
  background-color: #a66908;
  border-color: #7f5006;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f39c12;
  border-color: #f39c12;
}
.btn-warning .badge {
  color: #f39c12;
  background-color: #ffffff;
}
.btn-danger {
  color: #ffffff;
  background-color: #e74c3c;
  border-color: #e74c3c;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #ffffff;
  background-color: #d62c1a;
  border-color: #921e12;
}
.btn-danger:hover {
  color: #ffffff;
  background-color: #d62c1a;
  border-color: #cd2a19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #ffffff;
  background-color: #d62c1a;
  border-color: #cd2a19;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #ffffff;
  background-color: #b62516;
  border-color: #921e12;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #e74c3c;
  border-color: #e74c3c;
}
.btn-danger .badge {
  color: #e74c3c;
  background-color: #ffffff;
}
.btn-link {
  color: #18bc9c;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #18bc9c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #b4bcc2;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 18px 27px;
  font-size: 19px;
  line-height: 1.3333333;
  border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 6px 9px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 3px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  -o-transition-property: height, visibility;
     transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  -o-transition-duration: 0.35s;
     transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  -o-transition-timing-function: ease;
     transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 15px;
  text-align: left;
  background-color: #ffffff;
  border: 1px solid #cccccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  -webkit-background-clip: padding-box;
          background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 9.5px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #7b8a8b;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #ffffff;
  background-color: #2c3e50;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #ffffff;
  text-decoration: none;
  outline: 0;
  background-color: #2c3e50;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #b4bcc2;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #b4bcc2;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 768px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.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,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 4px;
  border-top-left-radius: 4px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
}
.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,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 66px;
  padding: 18px 27px;
  font-size: 19px;
  line-height: 1.3333333;
  border-radius: 6px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 66px;
  line-height: 66px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 35px;
  padding: 6px 9px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 3px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 35px;
  line-height: 35px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 10px 15px;
  font-size: 15px;
  font-weight: normal;
  line-height: 1;
  color: #2c3e50;
  text-align: center;
  background-color: #ecf0f1;
  border: 1px solid #dce4ec;
  border-radius: 4px;
}
.input-group-addon.input-sm {
  padding: 6px 9px;
  font-size: 13px;
  border-radius: 3px;
}
.input-group-addon.input-lg {
  padding: 18px 27px;
  font-size: 19px;
  border-radius: 6px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #ecf0f1;
}
.nav > li.disabled > a {
  color: #b4bcc2;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #b4bcc2;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #ecf0f1;
  border-color: #18bc9c;
}
.nav .nav-divider {
  height: 1px;
  margin: 9.5px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ecf0f1;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #ecf0f1 #ecf0f1 #ecf0f1;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #2c3e50;
  background-color: #ffffff;
  border: 1px solid #ecf0f1;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 4px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ecf0f1;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ecf0f1;
    border-radius: 4px 4px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #ffffff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 4px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #ffffff;
  background-color: #2c3e50;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 4px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ecf0f1;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ecf0f1;
    border-radius: 4px 4px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #ffffff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 60px;
  margin-bottom: 21px;
  border: 1px solid transparent;
}
@media (min-width: 768px) {
  .navbar {
    border-radius: 4px;
  }
}
@media (min-width: 768px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 15px;
  padding-left: 15px;
  border-top: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 768px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 480px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: -15px;
  margin-left: -15px;
}
@media (min-width: 768px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 768px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 768px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 19.5px 15px;
  font-size: 19px;
  line-height: 21px;
  height: 60px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 768px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: -15px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 15px;
  padding: 9px 10px;
  margin-top: 13px;
  margin-bottom: 13px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 4px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 768px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 9.75px -15px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 21px;
}
@media (max-width: 767px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 21px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 768px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 19.5px;
    padding-bottom: 19.5px;
  }
}
.navbar-form {
  margin-left: -15px;
  margin-right: -15px;
  padding: 10px 15px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: 7.5px;
  margin-bottom: 7.5px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 767px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 768px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 4px;
  border-top-left-radius: 4px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: 7.5px;
  margin-bottom: 7.5px;
}
.navbar-btn.btn-sm {
  margin-top: 12.5px;
  margin-bottom: 12.5px;
}
.navbar-btn.btn-xs {
  margin-top: 19px;
  margin-bottom: 19px;
}
.navbar-text {
  margin-top: 19.5px;
  margin-bottom: 19.5px;
}
@media (min-width: 768px) {
  .navbar-text {
    float: left;
    margin-left: 15px;
    margin-right: 15px;
  }
}
@media (min-width: 768px) {
  .navbar-left {
    float: left !important;
  }
  .navbar-right {
    float: right !important;
    margin-right: -15px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #2c3e50;
  border-color: transparent;
}
.navbar-default .navbar-brand {
  color: #ffffff;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #18bc9c;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #ffffff;
}
.navbar-default .navbar-nav > li > a {
  color: #ffffff;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #18bc9c;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #ffffff;
  background-color: #1a242f;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #cccccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #1a242f;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #1a242f;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #ffffff;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: transparent;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #1a242f;
  color: #ffffff;
}
@media (max-width: 767px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #ffffff;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #18bc9c;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #ffffff;
    background-color: #1a242f;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #cccccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #ffffff;
}
.navbar-default .navbar-link:hover {
  color: #18bc9c;
}
.navbar-default .btn-link {
  color: #ffffff;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #18bc9c;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #cccccc;
}
.navbar-inverse {
  background-color: #18bc9c;
  border-color: transparent;
}
.navbar-inverse .navbar-brand {
  color: #ffffff;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #2c3e50;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #ffffff;
}
.navbar-inverse .navbar-nav > li > a {
  color: #ffffff;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #2c3e50;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #ffffff;
  background-color: #15a589;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #cccccc;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #128f76;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #128f76;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #ffffff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #149c82;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #15a589;
  color: #ffffff;
}
@media (max-width: 767px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #ffffff;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #2c3e50;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #ffffff;
    background-color: #15a589;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #cccccc;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #ffffff;
}
.navbar-inverse .navbar-link:hover {
  color: #2c3e50;
}
.navbar-inverse .btn-link {
  color: #ffffff;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #2c3e50;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #cccccc;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 21px;
  list-style: none;
  background-color: #ecf0f1;
  border-radius: 4px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #cccccc;
}
.breadcrumb > .active {
  color: #95a5a6;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 21px 0;
  border-radius: 4px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 10px 15px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #ffffff;
  background-color: #18bc9c;
  border: 1px solid transparent;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 4px;
  border-top-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 4px;
  border-top-right-radius: 4px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #ffffff;
  background-color: #0f7864;
  border-color: transparent;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #ffffff;
  background-color: #0f7864;
  border-color: transparent;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #ecf0f1;
  background-color: #3be6c4;
  border-color: transparent;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 18px 27px;
  font-size: 19px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 6px;
  border-top-left-radius: 6px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 6px;
  border-top-right-radius: 6px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 6px 9px;
  font-size: 13px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pager {
  padding-left: 0;
  margin: 21px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #18bc9c;
  border: 1px solid transparent;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #0f7864;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #ffffff;
  background-color: #18bc9c;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #ffffff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #ffffff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #95a5a6;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #798d8f;
}
.label-primary {
  background-color: #2c3e50;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #1a242f;
}
.label-success {
  background-color: #18bc9c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #128f76;
}
.label-info {
  background-color: #3498db;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #217dbb;
}
.label-warning {
  background-color: #f39c12;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #c87f0a;
}
.label-danger {
  background-color: #e74c3c;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #d62c1a;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 13px;
  font-weight: bold;
  color: #ffffff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #2c3e50;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #ffffff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #2c3e50;
  background-color: #ffffff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #ecf0f1;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 23px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #cfd9db;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 6px;
  padding-left: 15px;
  padding-right: 15px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 68px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 21px;
  line-height: 1.42857143;
  background-color: #ffffff;
  border: 1px solid #ecf0f1;
  border-radius: 4px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #18bc9c;
}
.thumbnail .caption {
  padding: 9px;
  color: #2c3e50;
}
.alert {
  padding: 15px;
  margin-bottom: 21px;
  border: 1px solid transparent;
  border-radius: 4px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #18bc9c;
  border-color: #18bc9c;
  color: #ffffff;
}
.alert-success hr {
  border-top-color: #15a589;
}
.alert-success .alert-link {
  color: #e6e6e6;
}
.alert-info {
  background-color: #3498db;
  border-color: #3498db;
  color: #ffffff;
}
.alert-info hr {
  border-top-color: #258cd1;
}
.alert-info .alert-link {
  color: #e6e6e6;
}
.alert-warning {
  background-color: #f39c12;
  border-color: #f39c12;
  color: #ffffff;
}
.alert-warning hr {
  border-top-color: #e08e0b;
}
.alert-warning .alert-link {
  color: #e6e6e6;
}
.alert-danger {
  background-color: #e74c3c;
  border-color: #e74c3c;
  color: #ffffff;
}
.alert-danger hr {
  border-top-color: #e43725;
}
.alert-danger .alert-link {
  color: #e6e6e6;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@-o-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 21px;
  margin-bottom: 21px;
  background-color: #ecf0f1;
  border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 13px;
  line-height: 21px;
  color: #ffffff;
  text-align: center;
  background-color: #2c3e50;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  -webkit-background-size: 40px 40px;
          background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #18bc9c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #3498db;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f39c12;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #e74c3c;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #ffffff;
  border: 1px solid #ecf0f1;
}
.list-group-item:first-child {
  border-top-right-radius: 4px;
  border-top-left-radius: 4px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
}
a.list-group-item,
button.list-group-item {
  color: #555555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555555;
  background-color: #ecf0f1;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #ecf0f1;
  color: #b4bcc2;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #b4bcc2;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #ffffff;
  background-color: #2c3e50;
  border-color: #2c3e50;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #8aa4be;
}
.list-group-item-success {
  color: #ffffff;
  background-color: #18bc9c;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #ffffff;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #ffffff;
  background-color: #15a589;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #ffffff;
  border-color: #ffffff;
}
.list-group-item-info {
  color: #ffffff;
  background-color: #3498db;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #ffffff;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #ffffff;
  background-color: #258cd1;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #ffffff;
  border-color: #ffffff;
}
.list-group-item-warning {
  color: #ffffff;
  background-color: #f39c12;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #ffffff;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #ffffff;
  background-color: #e08e0b;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #ffffff;
  border-color: #ffffff;
}
.list-group-item-danger {
  color: #ffffff;
  background-color: #e74c3c;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #ffffff;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #ffffff;
  background-color: #e43725;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #ffffff;
  border-color: #ffffff;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 21px;
  background-color: #ffffff;
  border: 1px solid transparent;
  border-radius: 4px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 3px;
  border-top-left-radius: 3px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 17px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #ecf0f1;
  border-top: 1px solid #ecf0f1;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 3px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 3px;
  border-top-left-radius: 3px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 3px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 3px;
  border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 3px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 3px;
  border-bottom-right-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ecf0f1;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 21px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 4px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ecf0f1;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ecf0f1;
}
.panel-default {
  border-color: #ecf0f1;
}
.panel-default > .panel-heading {
  color: #2c3e50;
  background-color: #ecf0f1;
  border-color: #ecf0f1;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ecf0f1;
}
.panel-default > .panel-heading .badge {
  color: #ecf0f1;
  background-color: #2c3e50;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ecf0f1;
}
.panel-primary {
  border-color: #2c3e50;
}
.panel-primary > .panel-heading {
  color: #ffffff;
  background-color: #2c3e50;
  border-color: #2c3e50;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #2c3e50;
}
.panel-primary > .panel-heading .badge {
  color: #2c3e50;
  background-color: #ffffff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #2c3e50;
}
.panel-success {
  border-color: #18bc9c;
}
.panel-success > .panel-heading {
  color: #ffffff;
  background-color: #18bc9c;
  border-color: #18bc9c;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #18bc9c;
}
.panel-success > .panel-heading .badge {
  color: #18bc9c;
  background-color: #ffffff;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #18bc9c;
}
.panel-info {
  border-color: #3498db;
}
.panel-info > .panel-heading {
  color: #ffffff;
  background-color: #3498db;
  border-color: #3498db;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #3498db;
}
.panel-info > .panel-heading .badge {
  color: #3498db;
  background-color: #ffffff;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #3498db;
}
.panel-warning {
  border-color: #f39c12;
}
.panel-warning > .panel-heading {
  color: #ffffff;
  background-color: #f39c12;
  border-color: #f39c12;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #f39c12;
}
.panel-warning > .panel-heading .badge {
  color: #f39c12;
  background-color: #ffffff;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #f39c12;
}
.panel-danger {
  border-color: #e74c3c;
}
.panel-danger > .panel-heading {
  color: #ffffff;
  background-color: #e74c3c;
  border-color: #e74c3c;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #e74c3c;
}
.panel-danger > .panel-heading .badge {
  color: #e74c3c;
  background-color: #ffffff;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #e74c3c;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #ecf0f1;
  border: 1px solid transparent;
  border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 6px;
}
.well-sm {
  padding: 9px;
  border-radius: 3px;
}
.close {
  float: right;
  font-size: 22.5px;
  font-weight: bold;
  line-height: 1;
  color: #000000;
  text-shadow: none;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #ffffff;
  border: 1px solid #999999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  -webkit-background-clip: padding-box;
          background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 20px;
}
.modal-footer {
  padding: 20px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #ffffff;
  text-align: center;
  background-color: #000000;
  border-radius: 4px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 15px;
  background-color: #ffffff;
  -webkit-background-clip: padding-box;
          background-clip: padding-box;
  border: 1px solid #cccccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 15px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 5px 5px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #ffffff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #ffffff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #ffffff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #ffffff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #ffffff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #ffffff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #ffffff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #ffffff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #ffffff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
.navbar {
  border-width: 0;
}
.navbar-default .badge {
  background-color: #fff;
  color: #2c3e50;
}
.navbar-inverse .badge {
  background-color: #fff;
  color: #18bc9c;
}
.navbar-brand {
  line-height: 1;
}
.btn {
  border-width: 2px;
}
.btn:active {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.text-primary,
.text-primary:hover {
  color: #2c3e50;
}
.text-success,
.text-success:hover {
  color: #18bc9c;
}
.text-danger,
.text-danger:hover {
  color: #e74c3c;
}
.text-warning,
.text-warning:hover {
  color: #f39c12;
}
.text-info,
.text-info:hover {
  color: #3498db;
}
table a:not(.btn),
.table a:not(.btn) {
  text-decoration: underline;
}
table .dropdown-menu a,
.table .dropdown-menu a {
  text-decoration: none;
}
table .success,
.table .success,
table .warning,
.table .warning,
table .danger,
.table .danger,
table .info,
.table .info {
  color: #fff;
}
table .success > th > a,
.table .success > th > a,
table .warning > th > a,
.table .warning > th > a,
table .danger > th > a,
.table .danger > th > a,
table .info > th > a,
.table .info > th > a,
table .success > td > a,
.table .success > td > a,
table .warning > td > a,
.table .warning > td > a,
table .danger > td > a,
.table .danger > td > a,
table .info > td > a,
.table .info > td > a,
table .success > a,
.table .success > a,
table .warning > a,
.table .warning > a,
table .danger > a,
.table .danger > a,
table .info > a,
.table .info > a {
  color: #fff;
}
table > thead > tr > th,
.table > thead > tr > th,
table > tbody > tr > th,
.table > tbody > tr > th,
table > tfoot > tr > th,
.table > tfoot > tr > th,
table > thead > tr > td,
.table > thead > tr > td,
table > tbody > tr > td,
.table > tbody > tr > td,
table > tfoot > tr > td,
.table > tfoot > tr > td {
  border: none;
}
table-bordered > thead > tr > th,
.table-bordered > thead > tr > th,
table-bordered > tbody > tr > th,
.table-bordered > tbody > tr > th,
table-bordered > tfoot > tr > th,
.table-bordered > tfoot > tr > th,
table-bordered > thead > tr > td,
.table-bordered > thead > tr > td,
table-bordered > tbody > tr > td,
.table-bordered > tbody > tr > td,
table-bordered > tfoot > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ecf0f1;
}
.form-control,
input {
  border-width: 2px;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.form-control:focus,
input:focus {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label,
.has-warning .form-control-feedback {
  color: #f39c12;
}
.has-warning .form-control,
.has-warning .form-control:focus {
  border: 2px solid #f39c12;
}
.has-warning .input-group-addon {
  border-color: #f39c12;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label,
.has-error .form-control-feedback {
  color: #e74c3c;
}
.has-error .form-control,
.has-error .form-control:focus {
  border: 2px solid #e74c3c;
}
.has-error .input-group-addon {
  border-color: #e74c3c;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label,
.has-success .form-control-feedback {
  color: #18bc9c;
}
.has-success .form-control,
.has-success .form-control:focus {
  border: 2px solid #18bc9c;
}
.has-success .input-group-addon {
  border-color: #18bc9c;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  border-color: transparent;
}
.pager a,
.pager a:hover {
  color: #fff;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  background-color: #3be6c4;
}
.close {
  color: #fff;
  text-decoration: none;
  opacity: 0.4;
}
.close:hover,
.close:focus {
  color: #fff;
  opacity: 1;
}
.alert .alert-link {
  color: #fff;
  text-decoration: underline;
}
.progress {
  height: 10px;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.progress .progress-bar {
  font-size: 10px;
  line-height: 10px;
}
.well {
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.list-group-item.active,
a.list-group-item.active:hover,
a.list-group-item.active:focus {
  border-color: #ecf0f1;
}
a.list-group-item-success.active {
  background-color: #18bc9c;
}
a.list-group-item-success.active:hover,
a.list-group-item-success.active:focus {
  background-color: #15a589;
}
a.list-group-item-warning.active {
  background-color: #f39c12;
}
a.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus {
  background-color: #e08e0b;
}
a.list-group-item-danger.active {
  background-color: #e74c3c;
}
a.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus {
  background-color: #e43725;
}
.panel-default .close {
  color: #2c3e50;
}
.modal .close {
  color: #2c3e50;
}
.popover {
  color: #2c3e50;
}