/* Layout Helpers — Mobile-first */

.container {
  max-width: 480px;
  margin: 0 auto;
  padding: 0 16px;
}

/* Vertical stacks — flex column with gap */
.stack-4   { display: flex; flex-direction: column; gap: 4px; }
.stack-8   { display: flex; flex-direction: column; gap: 8px; }
.stack-12  { display: flex; flex-direction: column; gap: 12px; }
.stack-16  { display: flex; flex-direction: column; gap: 16px; }
.stack-20  { display: flex; flex-direction: column; gap: 20px; }
.stack-24  { display: flex; flex-direction: column; gap: 24px; }
.stack-32  { display: flex; flex-direction: column; gap: 32px; }

/* Horizontal */
.row {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
}

.row-between {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.center {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Full viewport height (dvh for mobile address bar safety) */
.full-h {
  min-height: 100dvh;
}

/* Padding helpers */
.p-8  { padding: 8px;  }
.p-12 { padding: 12px; }
.p-16 { padding: 16px; }
.p-20 { padding: 20px; }
.p-24 { padding: 24px; }

/* Margin helpers (vertical) */
.mt-4  { margin-top: 4px;  }
.mt-8  { margin-top: 8px;  }
.mt-12 { margin-top: 12px; }
.mt-16 { margin-top: 16px; }
.mt-24 { margin-top: 24px; }
.mt-32 { margin-top: 32px; }

/* Misc */
.flex-1     { flex: 1; }
.text-center{ text-align: center; }
.hidden     { display: none !important; }

/* Safe-area inset awareness (iOS notch) */
.safe-top    { padding-top: max(16px, env(safe-area-inset-top));    }
.safe-bottom { padding-bottom: max(16px, env(safe-area-inset-bottom)); }
