/* R&C Patrol — Global text visibility & visual quality
   Load after rc-tokens.css / app.css / shell.css.
   Prevents dark-on-dark, faint muted text, clipping, and overflow regressions. */

/* ——— Typography utilities ——— */
.rc-text-primary { color: var(--rc-text) !important; }
.rc-text-secondary { color: var(--rc-text-secondary) !important; }
.rc-text-muted { color: var(--rc-muted) !important; }
.rc-text-on-dark { color: var(--rc-text-on-dark) !important; }
.rc-text-secondary-on-dark { color: var(--rc-text-secondary-on-dark) !important; }
.rc-text-success { color: var(--rc-success-text) !important; }
.rc-text-warning { color: var(--rc-warning-text) !important; }
.rc-text-danger { color: var(--rc-danger-text) !important; }
.rc-text-link { color: var(--rc-link) !important; }

/* Dark surface context: force readable text inside known dark panels */
.rc-surface-dark,
.sidebar,
.app-header,
.topbar,
.fa-shift-card,
.fa-tile,
.fa-bottom-nav,
.fa-more-sheet,
.asu-hero,
.an-hero,
.mp-hero,
.rc-pwa-banner,
.fiw-page,
.tc-verify-page,
.cp-topbar {
  color: var(--rc-text-on-dark);
}

.rc-surface-dark a:not(.btn):not(.an-btn):not(.mp-btn):not(.rc-btn):not(.fa-cta):not(.hc-btn),
.sidebar a.nav-link {
  color: var(--rc-link-on-dark);
}

/* Light cards / pages stay dark-ink */
.card,
.rc-card,
.rc-summary-card,
.an-card,
.mp-card,
.hc-card,
.mw-card,
.app-tile,
.nc-card,
table.data-table,
.table {
  color: var(--rc-text);
}

.card .text-muted,
.rc-card .text-muted,
.an-card .hint,
.mp-help,
.mp-app-desc,
.mp-app-note,
.hc-muted,
.mw-card .sub,
.rc-summary-card .rc-support,
.rc-summary-card .rc-label {
  color: var(--rc-text-secondary) !important;
  opacity: 1 !important;
}

/* Never inherit black ink onto charcoal / black panels */
.sidebar,
.app-header,
.topbar,
.fa-tile,
.fa-shift-card,
.fa-bottom-nav,
.fa-more-sheet,
.rc-surface-dark {
  --color-text: var(--rc-text-on-dark);
  --color-text-muted: var(--rc-muted-on-dark);
  --rc-ink: var(--rc-text-on-dark);
  --rc-muted: var(--rc-muted-on-dark);
}

/* ——— Body / helper floors ——— */
body.app-body {
  font-size: 1rem;
  line-height: var(--rc-lh-body);
}

body.app-body small,
body.app-body .hint,
body.app-body .help-text,
body.app-body .form-text,
body.app-body .text-muted,
body.app-body .sub,
body.app-body .rc-support,
body.app-body .mp-help,
body.app-body .an-empty,
body.app-body .hc-muted,
body.app-body .hc-kicker {
  font-size: max(0.875rem, 14px) !important;
  font-weight: 600;
  opacity: 1 !important;
}

body.app-body .text-muted,
body.app-body .hint,
body.app-body .help-text,
body.app-body .form-text,
body.app-body .sub,
body.app-body .rc-support,
body.app-body .mp-help,
body.app-body .an-empty,
body.app-body .hc-muted {
  color: var(--rc-text-secondary) !important;
}

/* Dark helpers */
.sidebar .text-muted,
.fa-home .text-muted,
.fa-tile-sub,
.fa-shift-helper,
.fa-shift-meta,
.fa-more-sub,
.asu-sub,
.an-hero p,
.mp-hero .sub {
  color: var(--rc-text-secondary-on-dark) !important;
  opacity: 1 !important;
}

/* ——— Forms ——— */
label,
.form-label,
.mw-field > label,
.an-field > label,
.mp-field > label,
.hc-field > label {
  display: block;
  font-size: var(--rc-fs-label);
  font-weight: 750;
  color: var(--rc-text);
  line-height: var(--rc-lh-tight);
  margin-bottom: 0.35rem;
}

::placeholder {
  color: #52525B !important;
  opacity: 1 !important;
}

input,
select,
textarea,
.form-control {
  color: var(--rc-text) !important;
  font-size: max(1rem, 16px) !important; /* prevent iOS zoom + readable */
  line-height: 1.35;
  min-height: var(--rc-control-height);
}

input:disabled,
select:disabled,
textarea:disabled,
.form-control:disabled,
button:disabled,
.btn:disabled,
.rc-btn:disabled,
.an-btn:disabled,
.mp-btn:disabled {
  color: var(--rc-text-disabled) !important;
  opacity: 0.72 !important;
}

.invalid-feedback,
.form-error,
.error-message,
.field-error {
  display: block;
  color: var(--rc-danger-text) !important;
  font-size: max(0.875rem, 14px);
  font-weight: 700;
  line-height: 1.35;
  margin-top: 0.35rem;
}

/* ——— Buttons ——— */
.btn,
.rc-btn,
.an-btn,
.mp-btn,
.hc-btn,
.mw-btn,
.fa-cta,
.asu-btn {
  font-size: var(--rc-fs-button) !important;
  font-weight: 750;
  line-height: 1.25;
  white-space: normal;
  text-align: center;
  overflow-wrap: anywhere;
  word-break: normal;
  min-height: var(--rc-btn-height);
  padding-top: 0.65rem;
  padding-bottom: 0.65rem;
}

.btn-primary,
.rc-btn-primary,
.an-btn-gold,
.mp-btn-gold,
.hc-btn-gold,
.fa-cta,
.asu-btn-gold {
  color: #141416 !important;
}

.btn-secondary,
.btn-dark,
.rc-btn-dark,
.mp-btn-dark,
.nc-btn-dark,
.ed-btn-dark {
  color: #FFF8EC !important;
}

/* ——— Badges ——— */
.badge,
.an-badge,
.mp-app-badge,
.mp-chip,
.fa-badge,
.rc-chip,
.asu-status,
.asu-installed-badge {
  font-size: max(0.75rem, 12px) !important;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.02em;
  min-height: 1.5rem;
  padding: 0.2rem 0.55rem;
  white-space: normal;
}

.badge-muted {
  background: #E4E4E7 !important;
  color: #27272A !important;
}

/* ——— Cards / overflow ——— */
.card,
.rc-card,
.rc-summary-card,
.an-card,
.mp-card,
.hc-card,
.mw-card,
.fa-tile,
.app-tile,
.asu-step {
  overflow: visible;
  height: auto !important;
  min-height: 0;
}

.fa-tile-title,
.fa-tile-sub,
.app-tile-label,
.app-tile-meta,
.rc-summary-card .rc-label,
.rc-summary-card .rc-support,
.an-user strong,
.an-user span,
.mp-app-device-name,
.mp-app-device-meta {
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;
}

/* Ellipsis only when title attribute can expose full value */
.rc-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

/* ——— Tables ——— */
.table th,
.an-table th,
.data-table th {
  font-size: max(0.8125rem, 13px);
  font-weight: 800;
  color: var(--rc-text-secondary);
  letter-spacing: 0.03em;
}

.table td,
.an-table td,
.data-table td {
  font-size: max(0.9375rem, 15px);
  color: var(--rc-text);
  overflow-wrap: anywhere;
}

/* ——— Navigation ——— */
.fa-bottom-nav a,
.fa-bottom-nav button,
.m-bottom-nav a,
.mobile-bottom-nav a {
  font-size: max(0.8125rem, 13px) !important;
  font-weight: 750;
  color: rgba(255, 248, 236, 0.84) !important;
}

.fa-bottom-nav a.is-active,
.fa-bottom-nav button.is-active,
.m-bottom-nav a.is-active,
.mobile-bottom-nav a.is-active {
  color: var(--rc-champagne) !important;
}

.nav-section-label {
  color: rgba(243, 215, 122, 0.88) !important;
  font-size: max(0.75rem, 12px) !important;
  letter-spacing: 0.06em;
}

.nav-link,
.nav-link-text {
  color: rgba(255, 248, 236, 0.92);
  font-size: max(0.94rem, 15px);
}

.nav-link-icon {
  color: rgba(255, 248, 236, 0.75) !important;
}

/* Content clearance above bottom nav */
body.has-bottom-nav .app-content,
body.has-bottom-nav .content,
body.field-app .app-content,
body.field-app .fa-home,
body.field-app .an-page,
body.field-app .asu-page,
body.field-app .mp-page,
body.field-app .hc-page {
  padding-bottom: calc(var(--rc-bottom-nav-height) + env(safe-area-inset-bottom, 0px) + 1.25rem) !important;
}

/* ——— Modals / drawers / toasts ——— */
.modal,
.m-dialog,
.rc-push-modal,
.hc-drawer,
.fa-more-sheet,
.session-timeout-dialog {
  color: var(--rc-text);
}

.fa-more-sheet,
.fa-more-sheet a,
.fa-more-sheet button {
  color: var(--rc-text-on-dark);
}

.toast,
.alert,
.flash,
[role="alert"],
[role="status"] {
  font-size: max(0.9375rem, 15px);
  font-weight: 650;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.alert-success { color: var(--rc-success-text); }
.alert-danger { color: var(--rc-danger-text); }
.alert-warning { color: var(--rc-warning-text); }
.alert-info { color: var(--rc-info-text); }

/* Keep toasts above bottom nav */
.toast-container,
.rc-toast,
#toast-root,
.flash-stack {
  z-index: var(--rc-z-toast);
  margin-bottom: calc(env(safe-area-inset-bottom, 0px) + 0.5rem);
}

body.has-bottom-nav .toast-container,
body.has-bottom-nav .flash-stack {
  bottom: calc(var(--rc-bottom-nav-height) + env(safe-area-inset-bottom, 0px) + 0.5rem);
}

/* ——— Focus ——— */
:focus-visible {
  outline: 2px solid rgba(201, 150, 46, 0.85);
  outline-offset: 2px;
}

/* ——— Links ——— */
body.app-body:not(.field-app) a:not(.btn):not(.rc-btn):not(.an-btn):not(.mp-btn):not(.hc-btn):not(.fa-cta):not(.nav-link):not(.fa-tile):not(.app-tile):not(.asu-btn) {
  color: var(--rc-link);
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

body.app-body:not(.field-app) a:not(.btn):not(.rc-btn):not(.an-btn):not(.mp-btn):not(.hc-btn):not(.fa-cta):not(.nav-link):hover {
  color: var(--rc-link-hover);
}

body.field-app .fa-home a:not(.fa-cta):not(.fa-tile):not(.fa-setup-card):not(.fa-bell),
body.field-app .fa-more-sheet a {
  color: var(--rc-link-on-dark);
}

/* ——— Emergency / status cards on dark ——— */
.fa-tile.is-alert,
.fa-duty-banner-danger,
.is-critical {
  color: #FFF8EC !important;
}

.fa-tile.is-alert .fa-tile-title,
.fa-tile.is-alert .fa-tile-sub {
  color: #FFF8EC !important;
}

/* ——— Zoom / scaling safety ——— */
@media (max-width: 430px) {
  body.app-body {
    font-size: 16px;
  }

  .btn,
  .rc-btn,
  .an-btn,
  .mp-btn,
  .hc-btn,
  .fa-cta {
    width: auto;
    max-width: 100%;
  }
}

/* Prevent transparent text regressions */
[style*="color: transparent"],
[style*="color:transparent"] {
  color: var(--rc-text) !important;
}
