/* Header */
.header {
  height: var(--header-height);
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--space-6);
  position: sticky;
  top: 0;
  z-index: 100;
}

.header-logo {
  font-size: var(--text-xl);
  font-weight: 700;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.header-logo a {
  color: inherit;
  text-decoration: none;
}

.header-nav {
  display: flex;
  align-items: center;
  gap: var(--space-4);
}

.header-user {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
}

/* Page Shell */
.page {
  min-height: calc(100vh - var(--header-height));
}

.page-centered {
  max-width: var(--max-content-width);
  margin: 0 auto;
  padding: var(--space-8) var(--space-6);
}

.page-narrow {
  max-width: 480px;
  margin: 0 auto;
  padding: var(--space-8) var(--space-6);
}

.page-title {
  font-size: var(--text-2xl);
  font-weight: 700;
  margin-bottom: var(--space-6);
}

.page-subtitle {
  color: var(--color-text-secondary);
  margin-bottom: var(--space-8);
}

/* Section */
.section {
  margin-bottom: var(--space-8);
}

.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-4);
}

/* Footer */
.footer {
  text-align: center;
  padding: var(--space-8) var(--space-6);
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  border-top: 1px solid var(--color-border);
}

/* Grid */
.grid {
  display: grid;
  gap: var(--space-6);
}

.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }

@media (max-width: 768px) {
  .grid-2, .grid-3 {
    grid-template-columns: 1fr;
  }

  .page-centered {
    padding: var(--space-4) var(--space-4);
  }

  .header {
    padding: 0 var(--space-4);
  }
}

/* Flex utilities */
.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }

/* Visibility */
.hidden { display: none !important; }

/* Loading */
.loading-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid var(--color-gray-200);
  border-top-color: var(--color-primary);
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

.page-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 300px;
}
