/* Page-specific layout — see docs/brandbook.md */

/* ---------- Shell / dashboard layout ---------- */
.page {
  padding: var(--space-5) 0 var(--space-10);
}

.page-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

.page-header h1 { margin: 0; }

.page-actions {
  display: flex;
  gap: var(--space-2);
}

.section {
  margin-bottom: var(--space-6);
}

.dashboard-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}

@media (min-width: 1024px) {
  .dashboard-grid.with-sidebar {
    grid-template-columns: 2fr 1fr;
    align-items: start;
  }
}

/* ---------- Public status page ---------- */
.status-hero {
  text-align: center;
  padding: var(--space-8) 0 var(--space-6);
}

.status-hero .status-hero-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto var(--space-4);
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
}

.status-hero.all-up .status-hero-icon { background: var(--status-up-bg); color: var(--status-up); }
.status-hero.degraded .status-hero-icon { background: var(--status-degraded-bg); color: var(--status-degraded); }
.status-hero.down .status-hero-icon { background: var(--status-down-bg); color: var(--status-down); }

.status-hero h1 {
  font-size: var(--fs-2xl);
  margin-bottom: var(--space-2);
}

.status-hero p {
  font-size: var(--fs-md);
}

.status-monitor-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.status-monitor-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}

.status-monitor-item .monitor-meta {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.status-monitor-item .monitor-name {
  font-weight: 500;
}

.status-monitor-item .monitor-uptime {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
}

.uptime-bars {
  display: flex;
  gap: 2px;
  align-items: flex-end;
}

.uptime-bar {
  width: 4px;
  height: 24px;
  border-radius: 2px;
  background: var(--status-up);
}

.uptime-bar.status-degraded { background: var(--status-degraded); }
.uptime-bar.status-down { background: var(--status-down); }
.uptime-bar.status-paused { background: var(--status-paused); }

.status-page-meta {
  text-align: center;
  color: var(--text-tertiary);
  font-size: var(--fs-xs);
  margin-top: var(--space-5);
}

/* ---------- Auth pages ---------- */
.auth-shell {
  min-height: calc(100vh - 56px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-6) var(--space-4);
}

.auth-card {
  width: 100%;
  max-width: 380px;
}

.auth-card .brand-mark {
  justify-content: center;
  width: 100%;
  margin-bottom: var(--space-5);
  font-size: var(--fs-xl);
}

.auth-card h1 {
  font-size: var(--fs-lg);
  text-align: center;
  margin-bottom: var(--space-1);
}

.auth-card .auth-subtitle {
  text-align: center;
  margin-bottom: var(--space-5);
}

.auth-footer-link {
  text-align: center;
  margin-top: var(--space-4);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
}

/* ---------- Monitor detail ---------- */
.chart-container {
  position: relative;
  height: 260px;
}

.chart-fallback {
  display: none;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--text-tertiary);
  font-size: var(--fs-sm);
  border: 1px dashed var(--border);
  border-radius: var(--radius-md);
}

.chart-fallback.visible { display: flex; }

.detail-meta-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.detail-meta-row {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  font-size: var(--fs-sm);
}

.detail-meta-row .label { color: var(--text-secondary); }
.detail-meta-row .value { font-family: var(--font-mono); color: var(--text-primary); text-align: right; }

/* ---------- Notification channels ---------- */
.channel-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.channel-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
}

.channel-item .channel-meta {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.channel-type-icon {
  width: 32px;
  height: 32px;
  border-radius: var(--radius-md);
  background: var(--bg-surface-raised);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-secondary);
  flex-shrink: 0;
}
