.app {
  min-block-size: 100dvh;
}

/* Signed-in shell: one scroll container (.panel-main), not the document. */
.app:not(.app--guest) {
  block-size: 100dvh;
  max-block-size: 100dvh;
  overflow: hidden;
  overscroll-behavior: none;
}

.panel-main [id] {
  scroll-margin-top: 1rem;
}

.main {
  margin-inline: auto;
  max-inline-size: var(--content-width);
  padding: var(--block-space-double) var(--inline-space);
}

.main--narrow {
  max-inline-size: 28rem;
}

.main--guest {
  max-inline-size: 48rem;
}

.page__header {
  align-items: flex-end;
  display: flex;
  flex-wrap: wrap;
  gap: var(--block-space);
  justify-content: space-between;
  margin-block-end: var(--block-space-double);
}

.page__title {
  font-size: clamp(1.35rem, 2vw, 1.75rem);
  font-weight: 800;
  letter-spacing: -0.03em;
}

.page__subtitle {
  color: var(--color-text-muted);
  font-size: 0.95rem;
  margin-block-start: 0.35rem;
}

.page__back {
  align-items: center;
  color: var(--color-text-muted);
  display: inline-flex;
  font-size: 0.8125rem;
  font-weight: 600;
  gap: 0.35rem;
  margin-block-end: 0.75rem;
  text-decoration: none;
}

.page__back:hover {
  color: var(--color-text);
}

.grid {
  display: grid;
  gap: var(--block-space-double);
}

@media (min-width: 60rem) {
  .grid--2 {
    grid-template-columns: 1fr 1fr;
  }
}

.stack {
  display: flex;
  flex-direction: column;
  gap: var(--block-space);
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-block-end: var(--block-space);
}

.panel--follow {
  margin-block-start: var(--block-space-double);
}

.panel--spaced {
  margin-block-start: var(--block-space);
}

.form--wide {
  max-inline-size: none;
}

.table-wrap--flat {
  border: none;
  margin-block-start: var(--block-space);
}
