/* Software Unlimited — status page.
   Every value here resolves to a design-system token. If you need a colour, a radius or a gap
   that is not a token, the answer is almost always that the design system already has one. */

/* ---------------------------------------------------------------- layout */

.su-container {
  width: 100%;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-lg);
}

.su-container--narrow { max-width: var(--container-narrow); }

.su-page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.su-main { flex: 1 0 auto; padding: var(--space-xxl) 0 var(--space-section); }

.su-stack { display: flex; flex-direction: column; gap: var(--space-xxl); }
.su-stack--tight { gap: var(--space-lg); }
.su-stack--rows { gap: var(--space-sm); }

.su-section-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}

.su-section-head h2,
.su-section-head h3 {
  font-size: var(--title-lg-size);
  line-height: var(--title-lg-lh);
  letter-spacing: var(--title-lg-ls);
}

/* The heading keeps its width; a long meta line (a file path, a count) truncates instead. */
.su-section-head > h2,
.su-section-head > h3 { flex: 0 0 auto; }

.su-section-head .su-meta {
  margin-left: auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.su-meta {
  font-size: var(--caption-size);
  line-height: var(--caption-lh);
  color: var(--text-caption);
}

.su-mono { font-family: var(--font-mono); }

.su-muted { color: var(--text-muted); }

.su-body-sm { font-size: var(--body-sm-size); line-height: var(--body-md-lh); color: var(--text-body); }

.su-empty {
  padding: var(--pad-card-compact);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-card);
  color: var(--text-muted);
  font-size: var(--body-sm-size);
}

/* ---------------------------------------------------------------- top nav */

.su-nav {
  height: var(--nav-height);
  background: var(--surface-nav);
  border-bottom: 1px solid var(--border-divider);
  display: flex;
  align-items: center;
  flex: 0 0 auto;
}

.su-nav__inner {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  width: 100%;
}

.su-wordmark {
  display: flex;
  align-items: baseline;
  gap: var(--space-xs);
  font-family: var(--font-display);
  font-size: var(--title-md-size);
  font-weight: var(--weight-display);
  letter-spacing: -0.5px;
  color: var(--text-heading);
  text-decoration: none;
  white-space: nowrap;
}

.su-wordmark:hover { text-decoration: none; }
.su-wordmark span { color: var(--text-muted); font-weight: var(--weight-medium); }

.su-nav__links {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
}

.su-nav__link {
  font-size: var(--nav-link-size);
  line-height: var(--nav-link-lh);
  font-weight: var(--weight-medium);
  color: var(--text-muted);
}

.su-nav__link--active { color: var(--text-heading); font-weight: var(--weight-semibold); }

.su-nav__right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

/* ---------------------------------------------------------------- buttons */

.su-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  height: 40px;
  padding: 0 20px;
  border-radius: var(--radius-button);
  font-family: var(--font-ui);
  font-size: var(--button-size);
  font-weight: var(--weight-semibold);
  line-height: var(--button-lh);
  border: 1px solid transparent;
  background: var(--action-primary-bg);
  color: var(--action-primary-fg);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: var(--transition-press);
}

.su-btn:hover { text-decoration: none; }
.su-btn:active { background: var(--action-primary-bg-active); }

.su-btn--secondary {
  background: var(--action-secondary-bg);
  color: var(--action-secondary-fg);
  border-color: var(--border-default);
}

.su-btn--secondary:active { background: var(--surface-card); }

.su-btn--ghost { background: transparent; color: var(--text-heading); }

.su-btn--danger { background: var(--canvas); color: var(--status-major); border-color: var(--border-default); }

.su-btn--sm { height: 32px; padding: 0 14px; font-size: 13px; }
.su-btn--lg { height: 48px; padding: 0 24px; font-size: 15px; }

.su-btn[disabled] {
  background: var(--surface-disabled);
  color: var(--muted);
  border-color: transparent;
  cursor: not-allowed;
}

.su-actions { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }

/* ---------------------------------------------------------------- cards */

.su-card {
  border-radius: var(--radius-card);
  background: var(--surface-panel);
  border: 1px solid var(--border-default);
  padding: var(--pad-card-compact);
}

.su-card--feature { background: var(--surface-feature); border-color: transparent; }
.su-card--product { box-shadow: var(--shadow-sm); }
.su-card--roomy { padding: var(--pad-card); }

/* ---------------------------------------------------------------- status banner */

.su-banner {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--pad-card-compact) var(--pad-card);
  border-radius: var(--radius-card);
  background: var(--surface-feature);
  border: 1px solid transparent;
}

.su-banner__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
  background: var(--status-operational);
  color: var(--canvas);
  flex: 0 0 auto;
}

.su-banner__headline {
  font-family: var(--font-display);
  font-weight: var(--weight-display);
  font-size: var(--display-sm-size);
  line-height: var(--display-sm-lh);
  letter-spacing: var(--display-sm-ls);
  color: var(--text-heading);
}

.su-banner__sub {
  margin-top: var(--space-xxs);
  color: var(--text-muted);
  font-size: var(--body-md-size);
}

.su-banner__updated {
  margin-left: auto;
  text-align: right;
  color: var(--text-caption);
  font-size: var(--caption-size);
  white-space: nowrap;
}

/* Severity washes. Operational keeps the neutral light-gray card; everything else tints. */
.su-banner[data-status="degraded"] { background: var(--status-degraded-soft); border-color: var(--status-degraded); }
.su-banner[data-status="partial"] { background: var(--status-partial-soft); border-color: var(--status-partial); }
.su-banner[data-status="major"] { background: var(--status-major-soft); border-color: var(--status-major); }
.su-banner[data-status="maintenance"] { background: var(--status-maintenance-soft); border-color: var(--status-maintenance); }
.su-banner[data-status="unknown"] { background: var(--status-unknown-soft); border-color: var(--status-unknown); }

.su-banner[data-status="degraded"] .su-banner__icon { background: var(--status-degraded); }
.su-banner[data-status="partial"] .su-banner__icon { background: var(--status-partial); }
.su-banner[data-status="major"] .su-banner__icon { background: var(--status-major); }
.su-banner[data-status="maintenance"] .su-banner__icon { background: var(--status-maintenance); }
.su-banner[data-status="unknown"] .su-banner__icon { background: var(--status-unknown); }

/* ---------------------------------------------------------------- status pill */

.su-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xxs);
  padding: 4px 12px;
  border-radius: var(--radius-badge);
  font-family: var(--font-ui);
  font-size: var(--caption-size);
  font-weight: var(--weight-medium);
  white-space: nowrap;
  background: var(--status-unknown-soft);
  color: #4b5563;
}

.su-pill[data-status="operational"] { background: var(--status-operational-soft); color: #047857; }
.su-pill[data-status="degraded"] { background: var(--status-degraded-soft); color: #b45309; }
.su-pill[data-status="partial"] { background: var(--status-partial-soft); color: #c2410c; }
.su-pill[data-status="major"] { background: var(--status-major-soft); color: #b91c1c; }
.su-pill[data-status="maintenance"] { background: var(--status-maintenance-soft); color: #1d4ed8; }

.su-status-text {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xxs);
  font-size: var(--body-sm-size);
  font-weight: var(--weight-semibold);
  color: #4b5563;
}

.su-status-text[data-status="operational"] { color: #047857; }
.su-status-text[data-status="degraded"] { color: #b45309; }
.su-status-text[data-status="partial"] { color: #c2410c; }
.su-status-text[data-status="major"] { color: #b91c1c; }
.su-status-text[data-status="maintenance"] { color: #1d4ed8; }

/* ---------------------------------------------------------------- badges */

.su-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xxs);
  padding: 3px 10px;
  border-radius: var(--radius-badge);
  background: var(--surface-card);
  color: var(--text-muted);
  font-size: var(--caption-size);
  font-weight: var(--weight-medium);
  white-space: nowrap;
}

.su-badge--ink { background: var(--primary); color: var(--on-primary); }
.su-badge--ok { background: var(--status-operational-soft); color: #047857; }

.su-badge-row { display: flex; gap: var(--space-xxs); flex-wrap: wrap; }

/* ---------------------------------------------------------------- component group */

.su-group__head {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding-bottom: var(--space-sm);
}

.su-group__title { font-size: var(--title-md-size); font-weight: var(--weight-semibold); color: var(--text-heading); }
.su-group__sub { margin-top: 2px; font-size: var(--body-sm-size); color: var(--text-muted); }
.su-group__right { margin-left: auto; display: flex; align-items: center; gap: var(--space-sm); }

.su-row {
  padding: var(--space-md) 0;
  border-bottom: 1px solid var(--border-divider);
}

.su-row:last-child { border-bottom: none; padding-bottom: var(--space-xs); }

.su-row__head { display: flex; align-items: center; gap: var(--space-md); }
.su-row__name { font-size: var(--title-sm-size); font-weight: var(--weight-semibold); color: var(--text-heading); }
.su-row__desc { margin-top: 2px; font-size: var(--body-sm-size); color: var(--text-muted); }
.su-row__right { margin-left: auto; }

/* The reports caveat: a capsule, not a coloured border bar. */
.su-notice {
  margin-top: var(--space-sm);
  display: flex;
  align-items: flex-start;
  gap: var(--space-xs);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  background: var(--status-degraded-soft);
  color: #b45309;
  font-size: var(--body-sm-size);
}

.su-notice svg { flex: 0 0 auto; margin-top: 2px; }

.su-notice--info { background: var(--status-unknown-soft); color: #4b5563; }
.su-notice--maintenance { background: var(--status-maintenance-soft); color: #1d4ed8; }

/* ---------------------------------------------------------------- uptime strip */

.su-uptime { margin-top: var(--space-sm); }

.su-uptime__bars {
  display: flex;
  gap: 2px;
  align-items: stretch;
  height: 30px;
}

.su-uptime__day {
  flex: 1 1 0;
  min-width: 2px;
  border-radius: 2px;
  background: var(--status-unknown);
}

.su-uptime__day[data-status="operational"] { background: var(--status-operational); opacity: 0.85; }
.su-uptime__day[data-status="degraded"] { background: var(--status-degraded); }
.su-uptime__day[data-status="partial"] { background: var(--status-partial); }
.su-uptime__day[data-status="major"] { background: var(--status-major); }
.su-uptime__day[data-status="maintenance"] { background: var(--status-maintenance); }
.su-uptime__day[data-status="unknown"] { background: var(--surface-strong); }

.su-uptime__legend {
  margin-top: var(--space-xs);
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  font-size: var(--caption-size);
  color: var(--text-caption);
}

.su-uptime__rule { flex: 1; height: 1px; background: var(--border-divider); }
.su-uptime__value { color: var(--text-muted); font-weight: var(--weight-medium); font-family: var(--font-mono); }

/* Range switcher — the nav-pill-group treatment. */
.su-rangeset {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  border-radius: var(--radius-pill);
  background: var(--surface-pill-track);
}

.su-rangeset button {
  appearance: none;
  border: none;
  background: transparent;
  border-radius: var(--radius-pill);
  padding: 5px 12px;
  font-family: var(--font-ui);
  font-size: var(--caption-size);
  font-weight: var(--weight-medium);
  color: var(--text-muted);
  cursor: pointer;
  transition: var(--transition-surface);
}

.su-rangeset button[aria-pressed="true"] {
  background: var(--canvas);
  color: var(--text-heading);
  box-shadow: var(--shadow-pill-active);
}

/* ---------------------------------------------------------------- incidents */

.su-incident__head { display: flex; align-items: center; gap: var(--space-xs); flex-wrap: wrap; }

.su-incident__title {
  margin-top: var(--space-sm);
  font-family: var(--font-ui);
  font-size: var(--title-md-size);
  line-height: var(--title-md-lh);
  font-weight: var(--weight-semibold);
  color: var(--text-heading);
}

.su-incident__title a { color: inherit; }

.su-incident__when {
  margin-top: var(--space-xxs);
  display: flex;
  align-items: center;
  gap: var(--space-xxs);
  font-size: var(--caption-size);
  color: var(--text-caption);
}

.su-timeline {
  margin-top: var(--space-md);
  border-top: 1px solid var(--border-divider);
  padding-top: var(--space-md);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.su-timeline__entry { display: grid; grid-template-columns: 148px 1fr; gap: var(--space-md); }
.su-timeline__at { font-size: var(--caption-size); color: var(--text-caption); font-family: var(--font-mono); }
.su-timeline__phase { font-size: var(--body-sm-size); font-weight: var(--weight-semibold); color: var(--text-heading); }
.su-timeline__body { margin-top: 2px; font-size: var(--body-sm-size); color: var(--text-body); white-space: pre-line; }

.su-month {
  display: flex;
  align-items: baseline;
  gap: var(--space-sm);
  padding-bottom: var(--space-sm);
  border-bottom: 1px solid var(--border-divider);
  margin-bottom: var(--space-md);
}

.su-month h3 { font-size: var(--title-lg-size); line-height: var(--title-lg-lh); letter-spacing: var(--title-lg-ls); }

/* ---------------------------------------------------------------- grids */

.su-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gutter-grid); }
.su-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gutter-grid); }

/* ---------------------------------------------------------------- forms */

.su-field { display: flex; flex-direction: column; gap: var(--space-xs); }

.su-label {
  font-size: var(--body-sm-size);
  font-weight: var(--weight-semibold);
  color: var(--text-heading);
}

.su-hint { font-size: var(--caption-size); color: var(--text-caption); }

.su-input,
.su-select,
.su-textarea {
  width: 100%;
  font-family: var(--font-ui);
  font-size: var(--body-md-size);
  color: var(--text-body);
  background: var(--canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-input);
  padding: 10px 12px;
  transition: border-color var(--duration-fast) var(--ease-standard);
}

.su-input { height: 40px; }
.su-select { height: 40px; }
.su-textarea { min-height: 120px; resize: vertical; line-height: var(--body-md-lh); }

.su-input:focus,
.su-select:focus,
.su-textarea:focus { border-color: var(--border-focus); }

.su-check {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--body-sm-size);
  color: var(--text-body);
}

.su-check input { width: 16px; height: 16px; accent-color: var(--primary); }

.su-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg); }
.su-form-grid > .su-span-2 { grid-column: 1 / -1; }

.su-validation {
  color: var(--status-major);
  font-size: var(--body-sm-size);
}

.su-validation ul { margin: 0; padding-left: var(--space-md); }

/* ---------------------------------------------------------------- admin table */

.su-table { width: 100%; border-collapse: collapse; }

.su-table th {
  text-align: left;
  font-size: var(--caption-size);
  font-weight: var(--weight-semibold);
  color: var(--text-caption);
  padding: 0 var(--space-md) var(--space-xs) 0;
  border-bottom: 1px solid var(--border-default);
}

.su-table td {
  padding: var(--space-md) var(--space-md) var(--space-md) 0;
  border-bottom: 1px solid var(--border-divider);
  font-size: var(--body-sm-size);
  color: var(--text-body);
  vertical-align: top;
}

.su-table tr:last-child td { border-bottom: none; }
.su-table td:last-child, .su-table th:last-child { padding-right: 0; text-align: right; }

/* ---------------------------------------------------------------- footer */

.su-footer {
  flex: 0 0 auto;
  background: var(--surface-footer);
  color: var(--text-on-dark-muted);
  padding: 64px 0;
}

.su-footer__brand {
  font-family: var(--font-display);
  font-size: var(--title-lg-size);
  font-weight: var(--weight-display);
  letter-spacing: -0.3px;
  color: var(--text-on-dark);
}

.su-footer__cols {
  margin-top: var(--space-xl);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gutter-grid);
}

.su-footer__col { display: flex; flex-direction: column; gap: var(--gutter-footer); }

.su-footer__col-title {
  color: var(--text-on-dark);
  font-size: var(--body-sm-size);
  font-weight: var(--weight-semibold);
}

.su-footer a { color: var(--text-on-dark-muted); font-size: var(--body-sm-size); }
.su-footer a:hover { color: var(--text-on-dark); }

.su-footer__note {
  margin-top: var(--space-xxl);
  padding-top: var(--space-lg);
  border-top: 1px solid var(--surface-dark-elevated);
  font-size: var(--body-sm-size);
  color: var(--text-on-dark-muted);
}

/* ---------------------------------------------------------------- responsive */

@media (max-width: 900px) {
  .su-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .su-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  .su-main { padding: var(--space-xl) 0 var(--space-xxl); }
  .su-stack { gap: var(--space-xl); }

  .su-nav__inner { gap: var(--space-md); }
  .su-nav__links { gap: var(--space-md); }

  .su-banner { flex-wrap: wrap; padding: var(--pad-card-compact); }
  .su-banner__headline { font-size: var(--title-lg-size); letter-spacing: -0.3px; }
  .su-banner__updated { margin-left: 52px; text-align: left; width: 100%; }

  .su-grid-2,
  .su-grid-3,
  .su-form-grid,
  .su-footer__cols { grid-template-columns: minmax(0, 1fr); }

  .su-timeline__entry { grid-template-columns: minmax(0, 1fr); gap: var(--space-xxs); }

  .su-row__head { flex-wrap: wrap; }
  .su-row__right { margin-left: 0; width: 100%; }

  .su-table thead { display: none; }
  .su-table td { display: block; padding: var(--space-xxs) 0; border-bottom: none; }
  .su-table tr { display: block; padding: var(--space-md) 0; border-bottom: 1px solid var(--border-divider); }
  .su-table td:last-child { text-align: left; padding-top: var(--space-sm); }
}

/* Motion is functional only, and never on page load. */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}
