.configuration-plan-panel {
  margin-top:
    16px;

  padding:
    14px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.configuration-plan-panel[hidden] {
  display:
    none;
}


.config-plan-head {
  display:
    flex;

  align-items:
    flex-start;

  justify-content:
    space-between;

  gap:
    16px;
}


.config-plan-head h3 {
  margin:
    4px 0;
}


.config-plan-head p {
  margin:
    0;

  color:
    var(--text-secondary);
}


.config-plan-readonly,
.config-plan-state,
.config-plan-restart {
  display:
    inline-flex;

  align-items:
    center;

  padding:
    4px 8px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;

  font-size:
    .75rem;

  font-weight:
    700;
}


.config-plan-summary {
  display:
    grid;

  grid-template-columns:
    repeat(
      4,
      minmax(0, 1fr)
    );

  gap:
    10px;

  margin:
    16px 0;
}


.config-plan-summary > div {
  display:
    grid;

  gap:
    5px;

  padding:
    10px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-plan-summary small,
.config-plan-category,
.config-plan-change small {
  color:
    var(--text-secondary);

  font-size:
    .72rem;

  font-weight:
    700;

  letter-spacing:
    .04em;
}


.config-plan-summary strong {
  font-size:
    1.35rem;
}


.config-plan-blockers,
.config-plan-ready,
.config-plan-boundary {
  display:
    grid;

  gap:
    6px;

  padding:
    12px;

  margin-bottom:
    14px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-plan-blockers {
  border-left:
    3px solid
    var(--accent);
}


.config-plan-blockers ul,
.config-plan-actions ul {
  margin:
    4px 0 0;

  padding-left:
    20px;
}


.config-plan-targets {
  display:
    grid;

  gap:
    10px;
}


.config-plan-target {
  display:
    grid;

  gap:
    10px;

  padding:
    12px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-plan-target > header {
  display:
    flex;

  align-items:
    flex-start;

  justify-content:
    space-between;

  gap:
    12px;
}


.config-plan-target > header > div {
  display:
    grid;

  gap:
    3px;
}


.config-plan-target > p,
.config-plan-target > footer {
  margin:
    0;

  color:
    var(--text-secondary);
}


.config-plan-target > footer {
  font-size:
    .78rem;
}


.config-plan-change-list {
  display:
    grid;

  gap:
    8px;
}


.config-plan-change {
  display:
    grid;

  gap:
    7px;

  padding:
    10px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-plan-values {
  display:
    grid;

  grid-template-columns:
    minmax(
      0,
      1fr
    )
    auto
    minmax(
      0,
      1fr
    );

  align-items:
    center;

  gap:
    8px;
}


.config-plan-values > span:not(
  .config-plan-arrow
) {
  display:
    grid;

  gap:
    3px;

  overflow-wrap:
    anywhere;
}


.config-plan-arrow {
  font-weight:
    800;
}


.config-plan-restart {
  width:
    max-content;

  max-width:
    100%;
}


.config-plan-actions {
  padding-top:
    4px;
}


.config-plan-boundary {
  margin-top:
    14px;
}


.config-plan-boundary span {
  color:
    var(--text-secondary);
}


.config-plan-id {
  margin-top:
    10px;

  color:
    var(--text-secondary);

  font-size:
    .8rem;
}


.config-plan-empty {
  padding:
    12px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;

  color:
    var(--text-secondary);
}


@media (
  max-width: 800px
) {

  .config-plan-summary {
    grid-template-columns:
      repeat(
        2,
        minmax(0, 1fr)
      );
  }

}


@media (
  max-width: 560px
) {

  .config-plan-head,
  .config-plan-target > header {
    flex-direction:
      column;
  }


  .config-plan-summary {
    grid-template-columns:
      1fr;
  }


  .config-plan-values {
    grid-template-columns:
      1fr;
  }


  .config-plan-arrow {
    transform:
      rotate(
        90deg
      );

    width:
      max-content;
  }

}


/*
 * Complete unsaved configuration review.
 */

.config-complete-review,
.config-service-coverage {
  display:
    grid;

  gap:
    14px;

  margin:
    18px 0;

  padding:
    14px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-review-heading {
  display:
    flex;

  align-items:
    flex-start;

  justify-content:
    space-between;

  gap:
    14px;
}


.config-review-heading h3,
.config-service-coverage h3 {
  margin:
    4px 0;
}


.config-review-heading p,
.config-service-coverage > p {
  margin:
    0;

  color:
    var(--text-secondary);
}


.config-review-unsaved,
.config-review-origin,
.config-review-requirement,
.config-service-state {
  display:
    inline-flex;

  align-items:
    center;

  padding:
    3px 7px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;

  font-size:
    .7rem;

  font-weight:
    700;

  white-space:
    nowrap;
}


.config-review-group {
  display:
    grid;

  gap:
    10px;

  padding-top:
    12px;

  border-top:
    1px solid
    var(--border);
}


.config-review-group > header {
  display:
    grid;

  gap:
    3px;
}


.config-review-group > header > span {
  color:
    var(--text-secondary);

  font-size:
    .85rem;
}


.config-review-grid {
  display:
    grid;

  grid-template-columns:
    repeat(
      3,
      minmax(0, 1fr)
    );

  gap:
    8px;
}


.config-review-item {
  display:
    grid;

  align-content:
    start;

  gap:
    8px;

  min-height:
    88px;

  padding:
    10px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-review-item.missing-required {
  border-left:
    3px solid
    var(--accent);
}


.config-review-label {
  display:
    grid;

  gap:
    6px;
}


.config-review-badges {
  display:
    flex;

  flex-wrap:
    wrap;

  gap:
    5px;
}


.config-review-value {
  overflow-wrap:
    anywhere;

  font-weight:
    700;
}


.config-review-requirement.optional {
  opacity:
    .65;
}


.config-module-review {
  display:
    flex;

  flex-wrap:
    wrap;

  gap:
    6px;
}


.config-module-review span {
  padding:
    5px 8px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;

  font-size:
    .78rem;

  font-weight:
    700;
}


.config-service-grid {
  display:
    grid;

  grid-template-columns:
    repeat(
      2,
      minmax(0, 1fr)
    );

  gap:
    8px;
}


.config-service-item {
  display:
    flex;

  align-items:
    flex-start;

  justify-content:
    space-between;

  gap:
    10px;

  padding:
    10px;

  border:
    1px solid
    var(--border);

  border-radius:
    4px;
}


.config-service-item > div {
  display:
    grid;

  gap:
    4px;
}


.config-service-item > div:last-child {
  justify-items:
    end;

  text-align:
    right;
}


.config-service-item span,
.config-service-item small {
  color:
    var(--text-secondary);
}


.config-service-item.affected
  .config-service-state {
  color:
    inherit;
}


@media (
  max-width: 900px
) {

  .config-review-grid {
    grid-template-columns:
      repeat(
        2,
        minmax(0, 1fr)
      );
  }

}


@media (
  max-width: 620px
) {

  .config-review-heading {
    flex-direction:
      column;
  }


  .config-review-grid,
  .config-service-grid {
    grid-template-columns:
      1fr;
  }


  .config-service-item {
    flex-direction:
      column;
  }


  .config-service-item > div:last-child {
    justify-items:
      start;

    text-align:
      left;
  }

}
