.gridRep {
  aspect-ratio: 3/2;
  border: 1px solid transparent;
  border-radius: $card-corner;
  box-sizing: border-box;
  min-width: 320px;
  position: relative;
  width: 100%;
  opacity: 1;

  @include breakpoint(phone) {
    padding-bottom: $unit-2x;
  }

  &.visible {
    transition: opacity 0.3s ease-in-out;
    opacity: 1;
  }

  &.hidden {
    opacity: 0;
    transition: opacity 0.12s ease-in-out;
  }

  &:hover {
    background: var(--grid-rep-hover);
    border: 1px solid rgba(0, 0, 0, 0.1);

    a {
      text-decoration: none;
    }

    .indicators {
      opacity: 1;
    }

    .weaponGrid {
      cursor: pointer;

      .weapon {
        background: var(--unit-bg-hover);
      }
    }

    @include breakpoint(phone) {
      background: inherit;

      .Grid .Weapon {
        box-shadow: none;
      }
    }
  }

  a {
    display: grid;
    grid-template-rows: auto 1fr;
    grid-gap: 8px;
    gap: 8px;
    padding: $unit-2x $unit-2x 0 $unit-2x;
  }

  button {
    position: absolute;
    z-index: 2;
    right: $unit-2x;
    top: $unit-2x;
    width: 44px;
  }

  .gridContainer {
    aspect-ratio: 2.1/1;
    width: 100%;
    align-self: start;
  }

  .characterGrid {
    aspect-ratio: 2.1/1;
    display: flex;
    justify-content: space-between;

    .protagonist {
      border-width: 1px;
      border-style: solid;

      &.fire {
        background: var(--fire-portrait-bg);
        border-color: var(--fire-bg);
      }

      &.water {
        background: var(--water-portrait-bg);
        border-color: var(--water-bg);
      }

      &.wind {
        background: var(--wind-portrait-bg);
        border-color: var(--wind-bg);
      }

      &.earth {
        background: var(--earth-portrait-bg);
        border-color: var(--earth-bg);
      }

      &.light {
        background: var(--light-portrait-bg);
        border-color: var(--light-bg);
      }

      &.dark {
        background: var(--dark-portrait-bg);
        border-color: var(--dark-bg);
      }

      &.empty {
        background: var(--card-bg);
      }
    }

    .grid {
      background: var(--background);
      border-radius: $item-corner-small;
      aspect-ratio: 69/142;
      list-style: none;
      height: calc(100% - $unit);

      img {
        border-radius: $item-corner-small;
        width: 100%;
      }
    }
  }

  .weaponGrid {
    aspect-ratio: 3.25/1;
    display: grid;
    grid-template-columns: 1fr 3.55fr; /* left column takes up 1 fraction, right column takes up 3 fractions */
    grid-gap: $unit; /* add a gap of 8px between grid items */

    .weapon {
      background: var(--unit-bg);
      border-radius: $item-corner-small;
    }

    .mainhand.weapon {
      aspect-ratio: 73/153;
      display: grid;
      grid-column: 1 / 2; /* spans one column */
      height: 100%;
    }

    .weapons {
      display: grid; /* make the right-images container a grid */
      grid-template-columns: repeat(
        3,
        1fr
      ); /* create 3 columns, each taking up 1 fraction */
      grid-template-rows: repeat(
        3,
        1fr
      ); /* create 3 rows, each taking up 1 fraction */
      gap: $unit;
      // column-gap: $unit;
      // row-gap: $unit-2x;
    }

    .grid.weapon {
      aspect-ratio: 280 / 160;
      display: grid;
    }

    .mainhand.weapon img[src*='jpg'],
    .grid.weapon img[src*='jpg'] {
      border-radius: 4px;
      width: 100%;
    }
  }

  .summonGrid {
    aspect-ratio: 2/0.91;
    display: flex;
    gap: $unit;
    width: 100%;
    height: 100%;

    .mainSummon {
      aspect-ratio: 56/97;
      display: grid;
      flex-shrink: 0;
      background: var(--unit-bg);
      border-radius: $item-corner-small;

      img {
        border-radius: 4px;
        width: 100%;
        height: 100%;
      }
    }

    .summons {
      display: grid;
      flex-shrink: 1;
      grid-template-rows: repeat(3, 1fr);
      grid-template-columns: repeat(2, 1fr);
      gap: $unit;
    }

    .summon {
      aspect-ratio: 184/138;
      display: grid;
      background: var(--unit-bg);
      border-radius: $item-corner-small;

      img {
        border-radius: 4px;
        width: 100%;
        height: 100%;
      }
    }
  }

  .details {
    display: flex;
    flex-direction: column;
    gap: $unit;

    .buttonArea {
      display: flex;
      flex-direction: row;
      gap: $unit;
      justify-content: center;
    }

    h2 {
      color: var(--text-primary);
      font-size: $font-regular;
      font-weight: $bold;
      overflow: hidden;
      padding-bottom: 1px;
      text-overflow: ellipsis;
      white-space: nowrap;
      min-height: 24px;
      max-width: 258px; // Can we not do this?

      &.empty {
        color: var(--text-tertiary);
      }
    }

    .top {
      display: flex;
      flex-direction: row;
      gap: calc($unit / 2);
      align-items: center;

      .info {
        display: flex;
        flex-direction: column;
        flex-grow: 1;
        gap: calc($unit / 2);
        max-width: calc(100% - 44px - $unit);
      }

      .iconWrapper {
        width: $unit-5x;
        height: $unit-5x;
        display: flex;
        align-items: center;
        justify-content: center;

        .icon {
          display: flex;
          align-items: center;
          justify-content: center;
          width: $unit * 2.5;
          height: $unit * 2.5;

          svg {
            fill: var(--text-tertiary);
          }
        }
      }

      button svg {
        width: 14px;
        height: 14px;
      }
    }

    .attributed,
    .bottom {
      display: flex;
      gap: $unit-half;
      justify-content: space-between;

      a.user:hover {
        color: var(--link-text-hover);
      }
    }

    .bottom {
      flex-direction: column;
    }

    .user {
      flex-grow: 1;
    }

    .user,
    .raid,
    time {
      color: var(--text-tertiary);
      font-size: $font-small;
    }

    time {
      line-height: 18px;
      white-space: nowrap;
    }

    .properties {
      display: flex;
      font-size: $font-small;
      gap: $unit-half;

      .raid {
        white-space: nowrap;
        text-overflow: ellipsis;
      }

      .auto {
        flex: 1;
        display: inline-flex;
        gap: $unit-half;
        flex-direction: row;
        flex-wrap: nowrap;
      }

      .fullAuto {
        color: var(--full-auto-label-text);
        white-space: nowrap;
      }

      .extra {
        color: var(--extra-purple-light-text);
        white-space: nowrap;
      }

      .autoGuard {
        display: inline-block;
        width: 12px;
        height: 12px;

        svg {
          fill: var(--full-auto-label-text);
        }
      }
    }

    .raid {
      color: var(--text-primary);

      &.empty {
        color: var(--text-tertiary);
      }
    }

    .user {
      display: flex;
      gap: calc($unit / 2);
      align-items: center;

      img,
      .no-user {
        $diameter: 18px;

        border-radius: calc($diameter / 2);
        height: $diameter;
        width: $diameter;
      }

      img.gran {
        background-color: #cee7fe;
      }

      img.djeeta {
        background-color: #ffe1fe;
      }

      .no-user {
        background: $grey-80;
      }
    }
  }

  .indicators {
    display: flex;
    flex-direction: row;
    gap: $unit;
    margin-top: $unit * -1;
    margin-bottom: $unit-fourth;
    justify-content: center;
    opacity: 0;

    @include breakpoint(phone) {
      display: none;
    }

    li {
      flex-grow: 1;
      text-indent: -9999px;
      padding: $unit 0;

      .indicator {
        transition: background-color 0.12s ease-in-out;
        height: $unit;
        border-radius: $unit-half;
        background-color: var(--button-contained-bg-hover);
      }

      span {
        text-indent: -9999px;
        position: absolute;
      }

      &:hover .indicator,
      &.active .indicator {
        background-color: var(--text-secondary);
      }
    }
  }
}
