.topbar {
  grid-template-columns: 1fr minmax(220px, 420px) minmax(0, 1fr) auto;
}
.campaign-board {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.workshop-panel {
  margin: 0 0 .8rem;
  padding: .65rem;
  color: #2d2227;
  background: linear-gradient(145deg, #f6e9c6, #d9bf86);
  border: 2px solid #6e5360;
  border-radius: 12px;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.55), 0 4px 0 #7f5b3f;
}
.workshop-heading {
  display: flex;
  justify-content: space-between;
  gap: .8rem;
  align-items: baseline;
  margin-bottom: .55rem;
}
.workshop-heading h2 {
  margin: 0;
  font-family: Georgia, serif;
  font-size: .92rem;
}
.workshop-heading p {
  margin: 0;
  color: #684e57;
  font-size: .65rem;
  font-weight: 900;
  text-align: right;
}
.upgrade-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .5rem;
}
.upgrade-card {
  position: relative;
  min-width: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: 74px 1fr;
  gap: .45rem;
  padding: .45rem;
  background: #fff8df;
  border: 2px solid #86636a;
  border-radius: 10px;
}
.upgrade-card > img {
  width: 74px;
  height: 56px;
  align-self: start;
  object-fit: cover;
  border-radius: 7px;
  box-shadow: 0 2px 0 #5b4136;
}
.upgrade-copy {
  min-width: 0;
}
.upgrade-copy .panel-label {
  margin: 0 0 .1rem;
  color: #8c4944;
  font-size: .52rem;
}
.upgrade-copy h3 {
  margin: 0;
  font-family: Georgia, serif;
  font-size: .78rem;
}
.upgrade-copy p {
  margin: .15rem 0 0;
  font-size: .56rem;
  line-height: 1.25;
}
.upgrade-copy .upgrade-strapline {
  color: #735864;
  font-weight: 900;
}
.upgrade-button {
  grid-column: 1 / -1;
  min-height: 30px;
  padding: .35rem .45rem;
  color: #fff8e8;
  background: #70404d;
  border: 0;
  border-radius: 7px;
  box-shadow: 0 3px 0 #3b2730;
  font: 900 .58rem/1.1 "Trebuchet MS", sans-serif;
}
.upgrade-button:disabled {
  color: #655a5d;
  background: #cbbda0;
  box-shadow: none;
}
.upgrade-card.selected {
  border-color: #527c45;
  box-shadow: inset 0 0 0 2px #bde29e;
}
.upgrade-card.locked:not(.selected) {
  filter: saturate(.55);
  opacity: .74;
}
.upgrade-summary {
  overflow: hidden;
  max-width: 28ch;
  margin: 0;
  color: #f4dba4;
  font-size: .62rem;
  font-weight: 900;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 980px) {
  .topbar {
    grid-template-columns: 1fr auto;
  }
  .top-actions {
    grid-column: 2;
    grid-row: 1;
  }
  .upgrade-summary {
    grid-column: 1 / -1;
    grid-row: 3;
    justify-self: center;
  }
}
@media (max-width: 800px) {
  .campaign-board {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .upgrade-grid {
    grid-template-columns: 1fr;
  }
  .upgrade-card {
    grid-template-columns: 62px 1fr auto;
    align-items: center;
  }
  .upgrade-card > img {
    width: 62px;
    height: 47px;
  }
  .upgrade-button {
    grid-column: auto;
    max-width: 120px;
  }
}
@media (orientation: landscape) and (max-height: 520px) {
  .topbar {
    grid-template-columns: 1fr 250px 1fr;
  }
  .top-actions {
    grid-column: auto;
    grid-row: auto;
  }
  .upgrade-summary {
    display: none;
  }
  .briefing {
    max-height: calc(100% - .5rem);
    overflow: auto;
    overscroll-behavior: contain;
  }
  .workshop-panel {
    padding: .4rem;
    margin-bottom: .4rem;
  }
  .workshop-heading {
    margin-bottom: .3rem;
  }
  .upgrade-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .3rem;
  }
  .upgrade-card {
    grid-template-columns: 42px 1fr;
    gap: .3rem;
    padding: .3rem;
  }
  .upgrade-card > img {
    width: 42px;
    height: 34px;
  }
  .upgrade-copy p:not(.upgrade-strapline),
  .upgrade-copy .panel-label {
    display: none;
  }
  .upgrade-copy h3 {
    font-size: .64rem;
  }
  .upgrade-copy .upgrade-strapline {
    font-size: .5rem;
  }
  .upgrade-button {
    grid-column: 1 / -1;
    min-height: 24px;
    padding: .22rem;
    font-size: .5rem;
  }
}
