/* ShadowCore Gym UI overflow hardening */
#app,
#app * {
  min-width: 0;
}

#app .wrap,
#app .grid,
#app .card,
#app .twoCol,
#app .field,
#app .toolbar,
#app .table,
#app .chart {
  max-width: 100%;
}

#app .grid {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: start;
}

#app .twoCol {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#app .card {
  overflow: hidden;
}

#app .field input,
#app .field select,
#app .toolbar input,
#app .toolbar select,
#app .toolbar button,
#app input,
#app select,
#app button {
  width: 100%;
  max-width: 100%;
  min-width: 0 !important;
}

#app .toolbar .btn,
#app .top .btn {
  width: auto;
  flex: 0 0 auto;
}

#app .toolbar {
  align-items: stretch;
}

#app .top {
  min-width: 0;
}

#app .top > div {
  min-width: 0;
}

#app .top .toolbar {
  flex-wrap: wrap;
  justify-content: flex-end;
}

#app .value,
#app .brand,
#app .small,
#app .note,
#app .field label,
#app .table td,
#app .table th {
  overflow-wrap: anywhere;
  word-break: normal;
}

#app .table {
  table-layout: fixed;
}

#app #costTable,
#app #comparisonRows,
#app #recommendation,
#app #priceRows {
  overflow-x: auto;
}

#app .dotGrid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

#app .dotBox {
  min-width: 0;
}

@media (max-width: 1180px) {
  #app .span2,
  #app .span3 {
    grid-column: span 4;
  }

  #app .span4 {
    grid-column: span 6;
  }
}

@media (max-width: 900px) {
  #app .span2,
  #app .span3,
  #app .span4,
  #app .span6,
  #app .span8,
  #app .span12 {
    grid-column: 1 / -1;
  }

  #app .twoCol {
    grid-template-columns: 1fr;
  }

  #app .dotGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #app .top .toolbar,
  #app .toolbar {
    width: 100%;
  }

  #app .top .toolbar .btn {
    flex: 1 1 140px;
  }
}

@media (max-width: 520px) {
  .wrap {
    padding: 14px;
  }

  #app .dotGrid {
    grid-template-columns: 1fr;
  }

  #app .value {
    font-size: 24px;
  }
}
