.app-shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-block-size: 100dvh;
  background: var(--color-canvas);
}

.app-shell__main {
  min-inline-size: 0;
  padding: var(--space-page);
  padding-block-end: calc(var(--space-page) + env(safe-area-inset-bottom));
}

.responsive-nav {
  position: fixed;
  z-index: var(--z-nav);
  inset-inline: 0;
  inset-block-end: 0;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  padding: var(--space-1) max(var(--space-2), env(safe-area-inset-right)) max(var(--space-1), env(safe-area-inset-bottom)) max(var(--space-2), env(safe-area-inset-left));
  border-block-start: 0.0625rem solid var(--color-border);
  background: var(--color-surface);
}

.responsive-nav a,
.responsive-nav button {
  min-block-size: var(--target-min);
}

.command-palette,
.dialog-shell,
.side-panel {
  inline-size: min(42rem, calc(100vi - 2 * var(--space-4)));
  max-block-size: min(50rem, calc(100dvh - 2 * var(--space-4)));
  padding: var(--space-5);
  overflow: auto;
  border: 0.0625rem solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface-elevated);
  color: var(--color-foreground);
  box-shadow: var(--shadow-2);
}

.command-palette::backdrop,
.dialog-shell::backdrop,
.side-panel::backdrop {
  background: rgb(2 8 23 / 0.62);
}

.page-header,
.action-bar,
.filter-chips,
.tabs,
.cluster-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--density-gap);
  align-items: center;
}

.page-header {
  justify-content: space-between;
}

.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.data-region {
  container-name: data-region;
  container-type: inline-size;
  max-inline-size: 100%;
  overflow: auto;
  border: 0.0625rem solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}

.data-region thead {
  position: sticky;
  z-index: 1;
  inset-block-start: 0;
  background: var(--color-surface-elevated);
}

.data-region th,
.data-region td {
  min-block-size: var(--density-row-height);
  padding: var(--space-3);
  border-block-end: 0.0625rem solid var(--color-divider);
  text-align: start;
}

.record-card,
.metric-card,
.empty-state,
.error-state,
.file-uploader {
  container-type: inline-size;
  padding: var(--space-4);
  border: 0.0625rem solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow-1);
}

.metric-card__value {
  font-size: var(--font-heading);
  font-variant-numeric: tabular-nums;
}

.timeline {
  display: grid;
  gap: var(--space-4);
  padding-inline-start: var(--space-5);
  border-inline-start: 0.125rem solid var(--color-divider);
}

.status-badge,
.filter-chip {
  display: inline-flex;
  gap: var(--space-1);
  align-items: center;
  min-block-size: var(--target-min);
  padding-inline: var(--space-3);
  border: 0.0625rem solid currentColor;
  border-radius: var(--radius-pill);
  font-size: var(--font-small);
  font-weight: 650;
}

.empty-state,
.error-state {
  display: grid;
  gap: var(--space-3);
  place-items: start;
}

.skeleton {
  min-block-size: 1rem;
  border-radius: var(--radius-sm);
  background: linear-gradient(90deg, var(--color-surface-muted), var(--color-divider), var(--color-surface-muted));
  background-size: 200% 100%;
  animation: shared-skeleton 1.2s var(--ease-standard) infinite;
}

@keyframes shared-skeleton {
  to { background-position: -200% 0; }
}

.toast-region {
  position: fixed;
  z-index: var(--z-toast);
  inset-inline-end: max(var(--space-4), env(safe-area-inset-right));
  inset-block-end: max(calc(4rem + var(--space-4)), env(safe-area-inset-bottom));
  display: grid;
  gap: var(--space-2);
  max-inline-size: min(26rem, calc(100vi - 2 * var(--space-4)));
}

.side-panel {
  position: fixed;
  z-index: var(--z-panel);
  inset: auto 0 0;
  inline-size: 100%;
  max-block-size: 92dvh;
  border-end-start-radius: 0;
  border-end-end-radius: 0;
}

.combobox,
.money-input,
.quantity-input,
.date-time-input,
.scan-input {
  display: grid;
  gap: var(--space-2);
}

.file-uploader[data-scan-state="pending"] {
  border-style: dashed;
  border-color: var(--color-warning);
}

.stepper {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(10rem, 100%), 1fr));
  gap: var(--space-3);
  counter-reset: step;
}

.stepper > *::before {
  counter-increment: step;
  content: counter(step);
  display: inline-grid;
  place-items: center;
  inline-size: 2rem;
  block-size: 2rem;
  margin-inline-end: var(--space-2);
  border-radius: 50%;
  background: var(--color-surface-muted);
}

.conflict-banner,
.sync-banner,
.offline-banner {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-3) var(--space-4);
  border-inline-start: 0.25rem solid var(--color-warning);
  background: var(--color-surface-muted);
}

@container data-region (max-width: 42rem) {
  .data-region table[data-card-alternative] thead {
    display: none;
  }

  .data-region table[data-card-alternative] tr,
  .data-region table[data-card-alternative] td {
    display: grid;
  }

  .data-region table[data-card-alternative] td::before {
    content: attr(data-label);
    color: var(--color-foreground-muted);
    font-size: var(--font-small);
    font-weight: 650;
  }
}

@container (min-width: 36rem) {
  .record-card__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-4);
  }
}

@media (min-width: 48rem) {
  .app-shell {
    grid-template-columns: 4.5rem minmax(0, 1fr);
  }

  .responsive-nav {
    position: sticky;
    inset: 0 auto 0 0;
    display: flex;
    flex-direction: column;
    block-size: 100dvh;
    border-block-start: 0;
    border-inline-end: 0.0625rem solid var(--color-border);
  }

  .side-panel {
    inset: 0 0 0 auto;
    inline-size: min(38rem, 88vi);
    max-block-size: 100dvh;
    border-radius: 0;
  }
}

@media (min-width: 72rem) {
  .app-shell {
    grid-template-columns: var(--nav-width) minmax(0, 1fr);
  }
}

@media (forced-colors: active) {
  .status-badge,
  .filter-chip,
  .record-card,
  .metric-card,
  .data-region {
    forced-color-adjust: auto;
    border-color: CanvasText;
  }
}
