/*!
 * Reali Premium Components
 * Bootstrap-based custom components for Razor Pages
 */

/* =======================================================
   BRAND / LOGOS
   ======================================================= */

/* Logo principal (horizontal) */
.rp-logo {
  background: url("assets/logos/reali-premium.png") no-repeat center;
  background-size: contain;
  width: 170px;
  height: 44px;
  display: inline-block;
}

/* Troca automática no dark mode */
[data-bs-theme="dark"] .rp-logo {
  background-image: url("assets/logos/reali-premium-white.png");
}

/* Símbolo (quadrado / ícone R) */
.rp-logo-symbol {
  background: url("assets/logos/reali-symbol.png") no-repeat center;
  background-size: contain;
  width: 44px;
  height: 44px;
  display: inline-block;
}

[data-bs-theme="dark"] .rp-logo-symbol {
  background-image: url("assets/logos/reali-symbol-white.png");
}

/* Tamanhos utilitários */
.rp-logo-sm { width: 140px; height: 36px; }
.rp-logo-lg { width: 220px; height: 56px; }
.rp-logo-symbol-sm { width: 32px; height: 32px; }
.rp-logo-symbol-lg { width: 56px; height: 56px; }

/* =======================================================
   DASHBOARD LAYOUT COMPONENTS
   ======================================================= */

/* Dashboard Container */
.rp-dashboard {
  display: flex;
  min-height: 100vh;
  background-color: var(--bs-body-bg);
}

/* Sidebar */
.rp-sidebar {
  width: 280px;
  background: linear-gradient(180deg, var(--rp-navy), var(--rp-navy-2));
  color: white;
  padding: 1.5rem;
  box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1);
  position: fixed;
  height: 100vh;
  overflow-y: auto;
}

.rp-sidebar-nav {
  list-style: none;
  padding: 0;
  margin: 2rem 0 0 0;
}

.rp-sidebar-nav-item {
  margin-bottom: 0.5rem;
}

.rp-sidebar-nav-link {
  display: flex;
  align-items: center;
  padding: 0.75rem 1rem;
  color: rgba(255, 255, 255, 0.8);
  text-decoration: none;
  border-radius: 0.5rem;
  transition: all 0.2s ease;
  font-weight: 500;
}

.rp-sidebar-nav-link:hover {
  background-color: rgba(255, 255, 255, 0.1);
  color: white;
}

.rp-sidebar-nav-link.active {
  background-color: rgba(255, 255, 255, 0.15);
  color: white;
}

/* Main Content Area */
.rp-main {
  flex: 1;
  margin-left: 280px;
  padding: 2rem;
}

.rp-main-header {
  margin-bottom: 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* =======================================================
   AUTH / LOGIN
   ======================================================= */

.rp-auth-page {
  min-height: 100vh;
  background-color: var(--bs-body-bg);
}

.rp-auth-layout {
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(320px, 480px) 1fr;
}

.rp-auth-panel {
  padding: clamp(2rem, 4vw, 3.5rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2rem;
  background-color: var(--rp-card-bg);
}

.rp-auth-header {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.rp-auth-title {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 700;
  margin: 0;
}

.rp-auth-subtitle {
  color: var(--rp-text-muted);
  margin-bottom: 0;
}

.rp-auth-card {
  background: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: calc(var(--bs-border-radius-lg) + 0.25rem);
  padding: 2rem;
  box-shadow: var(--bs-box-shadow);
}

.rp-auth-card-footer {
  margin-top: 1.5rem;
  color: var(--rp-text-muted);
  font-size: 0.875rem;
}

.rp-auth-hero {
  position: relative;
  background: url("assets/illustrations/login-hero.svg") center/cover no-repeat;
  display: flex;
  align-items: flex-end;
  color: #fff;
}

.rp-auth-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(18, 29, 54, 0.2) 0%, rgba(18, 29, 54, 0.85) 100%);
}

.rp-auth-hero-content {
  position: relative;
  z-index: 1;
  padding: clamp(2rem, 4vw, 3.5rem);
  max-width: 520px;
}

.rp-auth-hero-title {
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  font-weight: 700;
  margin-bottom: 0.75rem;
}

.rp-auth-hero-text {
  color: rgba(255, 255, 255, 0.8);
  margin-bottom: 0;
}

.rp-auth-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.rp-auth-divider {
  display: flex;
  align-items: center;
  gap: 1rem;
  color: var(--rp-text-muted);
  font-size: 0.875rem;
}

.rp-auth-divider::before,
.rp-auth-divider::after {
  content: "";
  height: 1px;
  flex: 1;
  background-color: var(--bs-border-color);
}

@media (max-width: 992px) {
  .rp-auth-layout {
    grid-template-columns: 1fr;
  }

  .rp-auth-hero {
    min-height: 280px;
  }
}

/* =======================================================
   WIDGETS & CARDS
   ======================================================= */

.rp-widget {
  background-color: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  padding: 1.5rem;
  box-shadow: var(--bs-box-shadow-sm);
  transition: all 0.3s ease;
}

.rp-widget:hover {
  box-shadow: var(--bs-box-shadow);
  transform: translateY(-2px);
}

.rp-widget-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--bs-border-color);
}

.rp-widget-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--bs-body-color);
  margin: 0;
}

.rp-widget-body {
  color: var(--bs-body-color);
}

.rp-widget-footer {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--bs-border-color);
  font-size: 0.875rem;
  color: var(--rp-text-muted);
}

/* Stat Widget */
.rp-stat-widget {
  background-color: var(--rp-card-bg);
  border-radius: var(--bs-border-radius);
  padding: 1.5rem;
  text-align: center;
  border: 1px solid var(--bs-border-color);
}

.rp-stat-value {
  font-size: 2.5rem;
  font-weight: 700;
  color: var(--bs-primary);
  margin-bottom: 0.5rem;
}

.rp-stat-label {
  font-size: 0.875rem;
  color: var(--rp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* =======================================================
   FILTERS & CONTROLS
   ======================================================= */

.rp-filter-bar {
  display: flex;
  gap: 1rem;
  align-items: center;
  padding: 1rem;
  background-color: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  margin-bottom: 1.5rem;
}

.rp-search-box {
  position: relative;
  flex: 1;
  max-width: 400px;
}

.rp-search-box input {
  width: 100%;
  padding-left: 2.5rem;
}

.rp-search-icon {
  position: absolute;
  left: 0.875rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--rp-text-muted);
}

/* =======================================================
   TABLES
   ======================================================= */

.rp-table-container {
  background-color: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  overflow: hidden;
  box-shadow: var(--bs-box-shadow-sm);
}

.rp-table {
  width: 100%;
  margin: 0;
}

.rp-table thead {
  background-color: var(--rp-surface-2);
}

.rp-table thead th {
  padding: 1rem;
  font-weight: 600;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  color: var(--rp-text-muted);
  border-bottom: 2px solid var(--bs-border-color);
}

.rp-table tbody td {
  padding: 1rem;
  vertical-align: middle;
  border-bottom: 1px solid var(--bs-border-color);
  color: var(--bs-body-color);
}

.rp-table tbody tr:last-child td {
  border-bottom: none;
}

.rp-table tbody tr:hover {
  background-color: var(--rp-surface-2);
}

/* =======================================================
   TABS
   ======================================================= */

.rp-tabs {
  display: flex;
  gap: 0.5rem;
  border-bottom: 2px solid var(--bs-border-color);
  margin-bottom: 1.5rem;
}

.rp-tab {
  padding: 0.75rem 1.25rem;
  background: transparent;
  border: none;
  color: var(--rp-text-muted);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
}

.rp-tab:hover {
  color: var(--bs-body-color);
  background-color: var(--rp-surface-2);
}

.rp-tab.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
}

/* =======================================================
   CHARTS & PLACEHOLDERS
   ======================================================= */

.rp-chart-container {
  background-color: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  padding: 1.5rem;
  box-shadow: var(--bs-box-shadow-sm);
}

.rp-chart-placeholder {
  height: 300px;
  background: linear-gradient(
    135deg,
    var(--rp-surface-2) 0%,
    var(--bs-border-color) 100%
  );
  border-radius: var(--bs-border-radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rp-text-muted);
  font-style: italic;
}

/* =======================================================
   EMPTY STATES
   ======================================================= */

.rp-empty-state {
  text-align: center;
  padding: 3rem 2rem;
  background-color: var(--rp-surface-2);
  border-radius: var(--bs-border-radius);
}

.rp-empty-state-icon {
  font-size: 4rem;
  color: var(--rp-text-muted);
  margin-bottom: 1rem;
}

.rp-empty-state-title {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--bs-body-color);
  margin-bottom: 0.5rem;
}

.rp-empty-state-text {
  color: var(--rp-text-muted);
  margin-bottom: 1.5rem;
}

/* =======================================================
   SKELETON LOADERS
   ======================================================= */

.rp-skeleton {
  background: linear-gradient(
    90deg,
    var(--rp-surface-2) 25%,
    var(--bs-border-color) 50%,
    var(--rp-surface-2) 75%
  );
  background-size: 200% 100%;
  animation: rp-skeleton-loading 1.5s ease-in-out infinite;
  border-radius: var(--bs-border-radius-sm);
}

.rp-skeleton-text {
  height: 1rem;
  margin-bottom: 0.5rem;
}

.rp-skeleton-title {
  height: 1.5rem;
  width: 60%;
  margin-bottom: 1rem;
}

.rp-skeleton-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
}

@keyframes rp-skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

/* =======================================================
   TOASTS & NOTIFICATIONS
   ======================================================= */

.rp-toast {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 1050;
  background-color: var(--rp-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  box-shadow: var(--bs-box-shadow-lg);
  padding: 1rem 1.25rem;
  max-width: 400px;
  animation: rp-toast-slide-in 0.3s ease;
}

@keyframes rp-toast-slide-in {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.rp-toast-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  font-weight: 600;
  color: var(--bs-body-color);
}

.rp-toast-body {
  color: var(--rp-text-muted);
}

/* Toast variants */
.rp-toast-success {
  border-left: 4px solid var(--bs-success);
}

.rp-toast-warning {
  border-left: 4px solid var(--bs-warning);
}

.rp-toast-danger {
  border-left: 4px solid var(--bs-danger);
}

.rp-toast-info {
  border-left: 4px solid var(--bs-info);
}

/* =======================================================
   BREADCRUMBS
   ======================================================= */

.rp-breadcrumbs {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem 0;
}

.rp-breadcrumb-item {
  display: flex;
  align-items: center;
  color: var(--rp-text-muted);
  font-size: 0.875rem;
}

.rp-breadcrumb-item a {
  color: var(--bs-primary);
  text-decoration: none;
  transition: color 0.2s ease;
}

.rp-breadcrumb-item a:hover {
  color: var(--rp-primary-2);
}

.rp-breadcrumb-item.active {
  color: var(--bs-body-color);
  font-weight: 500;
}

.rp-breadcrumb-separator {
  margin: 0 0.5rem;
  color: var(--rp-text-muted);
}

/* =======================================================
   RESPONSIVE UTILITIES
   ======================================================= */

@media (max-width: 992px) {
  .rp-sidebar {
    transform: translateX(-100%);
    transition: transform 0.3s ease;
  }

  .rp-sidebar.show {
    transform: translateX(0);
    z-index: 1040;
  }

  .rp-main {
    margin-left: 0;
  }
}

@media (max-width: 768px) {
  .rp-main {
    padding: 1rem;
  }

  .rp-filter-bar {
    flex-direction: column;
    align-items: stretch;
  }

  .rp-search-box {
    max-width: none;
  }

  .rp-widget {
    padding: 1rem;
  }

  .rp-stat-value {
    font-size: 2rem;
  }
}

  /* =======================================================
     UI ICONS (PNG) - uso como background (sem <img>)
     - você cria classes rp-icon-xxx e usa <span>
     ======================================================= */

  .rp-icon {
    width: 1rem;
    height: 1rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;
  }

  /* Base estilo Bootstrap (CSS normal, sem @apply btn) */
  .btn {
    border-radius: var(--rp-radius-sm);
    font-weight: 600;
    padding: .6rem 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    line-height: 1.1;
  }

  .btn-primary {
    color: #fff;
    background: linear-gradient(
      180deg,
      rgb(var(--rp-primary)) 0%,
      rgb(var(--rp-primary-2)) 100%
    );
    border: 0;
    box-shadow: 0 10px 18px rgba(46, 116, 203, 0.22);
  }
  .btn-primary:hover {
    filter: brightness(.98);
    box-shadow: 0 12px 22px rgba(46, 116, 203, 0.28);
  }

  .btn-outline-primary {
    background: transparent;
    border: 1px solid rgba(46, 116, 203, 0.45);
    color: rgb(var(--rp-primary));
  }
  .btn-outline-primary:hover {
    background: rgba(46, 116, 203, 0.08);
    border-color: rgba(46, 116, 203, 0.65);
    color: rgb(var(--rp-primary-2));
  }

  /* Inputs “bootstrap-friendly” */
  .form-control, .form-select, .input {
    border-radius: var(--rp-radius-sm);
    border: 1px solid rgb(var(--rp-border));
    padding: .60rem .75rem;
    background: rgb(var(--rp-card));
    color: rgb(var(--rp-fg));
  }
  .form-control:focus, .form-select:focus, .input:focus {
    border-color: rgba(46,116,203,.55);
    box-shadow: 0 0 0 .25rem var(--rp-ring);
    outline: none;
  }

  /* EXEMPLOS (adicione os seus conforme seus arquivos existirem) */
  .rp-icon-check { background-image: url("@reali/theme/assets/icons/ui/check.png"); }
  .rp-icon-alert { background-image: url("@reali/theme/assets/icons/ui/alert.png"); }
  .rp-icon-info  { background-image: url("@reali/theme/assets/icons/ui/info.png"); }
  .rp-icon-close { background-image: url("@reali/theme/assets/icons/ui/close.png"); }

  /* tamanhos */
  .rp-icon-sm { width: .875rem; height: .875rem; }
  .rp-icon-lg { width: 1.25rem; height: 1.25rem; }
  
  /* Layout */
  .rp-surface {
    @apply bg-bg text-fg;
  }

  /* Card */
  .rp-card {
    @apply bg-card border border-border rounded-base shadow-sm;
  }
  .rp-card-header {
    @apply border-b border-border px-4 py-3 font-semibold text-fg;
  }
  .rp-card-body {
    @apply px-4 py-4;
  }

  /* Buttons */
  .rp-btn {
    @apply inline-flex items-center justify-center gap-2 rounded-sm px-4 py-2 font-semibold
           transition focus:outline-none;
  }
  .rp-btn:focus-visible {
    box-shadow: 0 0 0 .25rem var(--rp-ring);
  }
  .rp-btn-primary {
    @apply rp-btn text-white;
    background: linear-gradient(
      180deg,
      rgb(var(--rp-primary)) 0%,
      rgb(var(--rp-primary-2)) 100%
    );
    box-shadow: 0 10px 18px rgba(46, 116, 203, 0.22);
  }
  .rp-btn-primary:hover {
    filter: brightness(0.98);
    box-shadow: 0 12px 22px rgba(46, 116, 203, 0.28);
  }

  .rp-btn-outline {
    @apply rp-btn bg-transparent border border-border text-primary;
  }
  .rp-btn-outline:hover {
    background: rgb(var(--rp-primary) / 0.1);
  }

  .rp-btn-ghost {
    @apply rp-btn bg-transparent text-fg;
  }
  .rp-btn-ghost:hover {
    background: rgb(var(--rp-border) / 0.4);
  }

  /* Inputs */
  .rp-input {
    @apply w-full rounded-sm border border-border bg-card px-3 py-2 text-fg
           placeholder:text-muted/70 focus:outline-none;
  }
  .rp-input:focus {
    border-color: rgba(46, 116, 203, 0.55);
    box-shadow: 0 0 0 .25rem var(--rp-ring);
  }

  .rp-label {
    @apply text-sm font-semibold text-fg;
  }

  .rp-help {
    @apply text-xs text-muted;
  }

  .rp-select {
    @apply rp-input;
  }

  .rp-datepicker {
    @apply rp-input cursor-pointer;
  }

  .rp-datepicker-popup {
    @apply absolute z-40 mt-2 rounded-base border border-divider bg-card p-4 shadow-md;
  }

  .rp-datepicker-day {
    @apply flex h-8 w-8 items-center justify-center rounded-sm text-sm text-fg;
  }
  .rp-datepicker-day:hover {
    @apply bg-surface-2;
  }

  .rp-datepicker-day-selected {
    background: rgb(var(--rp-primary) / 0.15);
    color: rgb(var(--rp-primary-2));
  }

  .rp-datepicker-day-muted {
    @apply text-muted;
  }

  .rp-switch {
    @apply inline-flex items-center gap-2 text-sm text-muted;
  }

  /* Badge */
  .rp-badge {
    @apply inline-flex items-center gap-2 rounded-full px-3 py-1 text-xs font-bold;
  }
  .rp-badge-info {
    @apply rp-badge;
    background: rgba(46, 116, 203, 0.12);
    border: 1px solid rgba(46, 116, 203, 0.22);
    color: rgb(var(--rp-primary-2));
  }
  .rp-badge-ok {
    @apply rp-badge;
    background: rgba(22, 163, 74, 0.12);
    border: 1px solid rgba(22, 163, 74, 0.22);
    color: rgb(var(--rp-success));
  }
  .rp-badge-alert {
    @apply rp-badge;
    background: rgba(245, 158, 11, 0.14);
    border: 1px solid rgba(245, 158, 11, 0.28);
    color: #b45309;
  }
  .rp-badge-critical {
    @apply rp-badge;
    background: rgba(239, 68, 68, 0.12);
    border: 1px solid rgba(239, 68, 68, 0.25);
    color: rgb(var(--rp-danger));
  }

  .rp-status-badge {
    @apply rp-badge;
  }

  .rp-status-badge-info {
    @apply rp-badge-info;
  }

  .rp-status-badge-success {
    @apply rp-badge-ok;
  }

  .rp-status-badge-warn {
    @apply rp-badge-alert;
  }

  .rp-status-badge-danger {
    @apply rp-badge-critical;
  }

  /* Table */
  .rp-table {
    @apply w-full border border-border rounded-base overflow-hidden bg-card;
  }
  .rp-table thead th {
    @apply text-left text-xs font-semibold text-muted px-4 py-3 border-b border-border;
  }
  .rp-table tbody td {
    @apply px-4 py-3 border-b border-border/80;
  }
  .rp-table tbody tr:hover {
    @apply bg-border/30;
  }

  .rp-table-row {
    @apply border-b border-border/80;
  }

  .rp-table-row:hover {
    @apply bg-border/30;
  }

  .rp-table-cell {
    @apply px-4 py-3;
  }

  .rp-table-actions {
    @apply flex items-center justify-end gap-2;
  }

  /* Navbar */
  .rp-navbar {
    background: var(--rp-nav-grad);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  }
  .rp-navbar a {
    color: rgba(255, 255, 255, 0.92);
  }
  .rp-navbar a:hover {
    color: #fff;
  }

  /* =======================================================
     DASHBOARD / MOSAIC LAYOUT
     ======================================================= */

  .rp-dashboard {
    @apply min-h-screen bg-bg text-fg;
  }

  .rp-dashboard-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    min-height: 100vh;
    background: rgb(var(--rp-bg));
  }

  .rp-dashboard-sidebar {
    @apply border-r border-divider bg-card px-4 py-6;
  }

  .rp-dashboard-brand {
    @apply mb-8 flex items-center gap-3;
  }

  .rp-dashboard-nav {
    @apply flex flex-col gap-1 text-sm;
  }

  .rp-dashboard-link {
    @apply flex items-center gap-3 rounded-base px-3 py-2 text-muted;
  }
  .rp-dashboard-link:hover {
    @apply bg-surface-2 text-fg;
  }

  .rp-dashboard-link-active {
    @apply bg-surface-2 text-fg;
  }

  .rp-shell {
    @apply rp-dashboard-layout;
  }

  .rp-sidebar {
    @apply rp-dashboard-sidebar;
  }

  .rp-sidebar-item {
    @apply rp-dashboard-link;
  }

  .rp-sidebar-item-active {
    @apply rp-dashboard-link-active;
  }

  .rp-topbar {
    @apply rp-dashboard-topbar;
  }

  .rp-search {
    @apply rp-input;
  }

  .rp-action-icon {
    @apply rp-btn-ghost p-2;
  }

  .rp-dashboard-main {
    @apply flex flex-col;
  }

  .rp-dashboard-topbar {
    @apply flex items-center justify-between border-b border-divider bg-card px-6 py-4;
  }

  .rp-dashboard-content {
    @apply flex-1 bg-bg px-6 py-6;
  }

  .rp-dashboard-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }

  .rp-kpi-grid {
    @apply rp-dashboard-grid;
  }

  .rp-grid-span-3 {
    grid-column: span 3 / span 3;
  }

  .rp-grid-span-4 {
    grid-column: span 4 / span 4;
  }

  .rp-grid-span-6 {
    grid-column: span 6 / span 6;
  }

  .rp-grid-span-8 {
    grid-column: span 8 / span 8;
  }

  .rp-grid-span-12 {
    grid-column: span 12 / span 12;
  }

  /* Widgets */
  .rp-widget {
    @apply rounded-base border border-divider bg-card shadow-sm;
  }

  .rp-widget-header {
    @apply flex items-center justify-between border-b border-divider px-4 py-3 font-semibold text-fg;
  }

  .rp-widget-body {
    @apply px-4 py-4;
  }

  .rp-widget-footer {
    @apply border-t border-divider px-4 py-3 text-sm text-muted;
  }

  .rp-widget-stat {
    @apply flex flex-col gap-1;
  }

  .rp-widget-value {
    @apply text-2xl font-semibold text-fg;
  }

  .rp-widget-label {
    @apply text-sm text-muted;
  }

  .rp-widget-title {
    @apply text-sm font-semibold text-fg;
  }

  .rp-widget-sub {
    @apply rp-widget-label;
  }

  .rp-widget-delta {
    @apply inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-semibold;
    background: rgb(var(--rp-success) / 0.12);
    color: rgb(var(--rp-success));
  }

  .rp-widget-delta-negative {
    background: rgb(var(--rp-danger) / 0.12);
    color: rgb(var(--rp-danger));
  }

  .rp-chart {
    @apply rp-widget;
  }

  .rp-chart-header {
    @apply rp-widget-header;
  }

  .rp-chart-body {
    @apply rp-widget-body;
  }

  .rp-chart-footer {
    @apply rp-widget-footer;
  }

  .rp-chart-placeholder {
    @apply flex items-center justify-center rounded-base border border-divider bg-surface-2 text-sm text-muted;
    min-height: 180px;
  }

  /* Table */
  .rp-table-compact tbody td {
    @apply py-2 text-sm;
  }

  .rp-table-striped tbody tr:nth-child(even) {
    background: rgb(var(--rp-surface-2));
  }

  .rp-table-cell-muted {
    @apply text-sm text-muted;
  }

  /* Filters: chips, dropdowns, tabs */
  .rp-filter-bar {
    @apply flex flex-wrap items-center gap-3 rounded-base border border-divider bg-card px-4 py-3;
  }

  .rp-filter-group {
    @apply flex flex-wrap items-center gap-2;
  }

  .rp-filter-chip {
    @apply inline-flex items-center gap-2 rounded-full border border-divider bg-surface-2 px-3 py-1 text-xs font-semibold text-muted;
  }

  .rp-filter-chip-active {
    @apply text-primary;
    border-color: rgb(var(--rp-primary) / 0.3);
    background: rgb(var(--rp-primary) / 0.1);
  }

  .rp-filter-chip-ghost {
    @apply border-divider/60 bg-transparent text-muted;
  }
  .rp-filter-chip-ghost:hover {
    @apply bg-surface-2;
  }

  .rp-tabs {
    @apply flex items-center gap-6 border-b border-divider;
  }

  .rp-tab {
    @apply pb-3 text-sm font-semibold text-muted;
  }
  .rp-tab:hover {
    @apply text-fg;
  }

  .rp-tab-active {
    color: rgb(var(--rp-fg));
    border-bottom: 2px solid rgb(var(--rp-primary));
  }

  .rp-dropdown {
    @apply relative inline-flex;
  }

  .rp-dropdown-trigger {
    @apply inline-flex items-center gap-2 rounded-base border border-divider bg-card px-3 py-2 text-sm text-fg;
  }

  .rp-dropdown-menu {
    @apply absolute right-0 z-30 mt-2 w-52 rounded-base border border-divider bg-card shadow-md;
    top: 100%;
  }

  .rp-dropdown-header {
    @apply px-3 py-2 text-xs font-semibold text-muted;
  }

  .rp-dropdown-item {
    @apply flex items-center gap-2 px-3 py-2 text-sm text-fg;
  }
  .rp-dropdown-item:hover {
    @apply bg-surface-2;
  }

  .rp-dropdown-divider {
    @apply my-1 border-t border-divider;
  }

  /* Overlays: modal, drawer, toast, tooltip */
  .rp-overlay {
    position: fixed;
    inset: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgb(var(--rp-fg) / 0.45);
  }

  .rp-modal {
    @apply w-full max-w-lg rounded-base border border-divider bg-card shadow-md;
  }

  .rp-modal-header {
    @apply flex items-center justify-between border-b border-divider px-4 py-3 font-semibold;
  }

  .rp-modal-body {
    @apply px-4 py-4;
  }

  .rp-modal-close {
    @apply inline-flex h-8 w-8 items-center justify-center rounded-sm text-muted;
  }
  .rp-modal-close:hover {
    @apply bg-surface-2 text-fg;
  }

  .rp-modal-footer {
    @apply flex justify-end gap-3 border-t border-divider px-4 py-3;
  }

  .rp-drawer {
    @apply fixed right-0 top-0 z-50 flex h-full w-80 flex-col border-l border-divider bg-card shadow-md;
  }

  .rp-drawer-header {
    @apply flex items-center justify-between border-b border-divider px-4 py-4 font-semibold;
  }

  .rp-drawer-body {
    @apply flex-1 overflow-y-auto px-4 py-4;
  }

  .rp-drawer-footer {
    @apply border-t border-divider px-4 py-3;
  }

  .rp-toast {
    @apply flex items-start gap-3 rounded-base border border-divider bg-card px-4 py-3 shadow-md;
  }

  .rp-toast-title {
    @apply font-semibold text-fg;
  }

  .rp-toast-body {
    @apply text-sm text-muted;
  }

  .rp-tooltip {
    position: absolute;
    z-index: 50;
    padding: 0.35rem 0.5rem;
    border-radius: 6px;
    font-size: 0.75rem;
    background: rgb(var(--rp-fg));
    color: rgb(var(--rp-card));
    box-shadow: var(--rp-shadow-sm);
  }

  /* Navigation */
  .rp-breadcrumbs {
    @apply flex items-center gap-2 text-sm text-muted;
  }

  .rp-breadcrumbs a {
    @apply text-muted;
  }
  .rp-breadcrumbs a:hover {
    @apply text-fg;
  }

  .rp-breadcrumb-separator {
    color: rgb(var(--rp-muted));
  }

  .rp-pagination {
    @apply flex items-center gap-2;
  }

  .rp-page {
    @apply inline-flex items-center justify-center rounded-base border border-divider px-3 py-1 text-sm text-muted;
  }

  .rp-page:hover {
    @apply bg-surface-2 text-fg;
  }

  .rp-page-active {
    @apply border-primary bg-primary text-white;
  }

  .rp-page-disabled {
    @apply cursor-not-allowed opacity-50;
  }

  /* Empty state + skeleton */
  .rp-empty-state {
    @apply flex flex-col items-center gap-3 rounded-base border border-dashed border-divider bg-surface-2 px-6 py-10 text-center text-muted;
  }

  .rp-empty-title {
    @apply text-lg font-semibold text-fg;
  }

  .rp-empty-subtitle {
    @apply text-sm text-muted;
  }

  @keyframes rp-skeleton-shimmer {
    0% {
      background-position: -200% 0;
    }
    100% {
      background-position: 200% 0;
    }
  }

  .rp-skeleton {
    background: linear-gradient(
      90deg,
      rgb(var(--rp-muted) / 0.15),
      rgb(var(--rp-muted) / 0.35),
      rgb(var(--rp-muted) / 0.15)
    );
    background-size: 200% 100%;
    animation: rp-skeleton-shimmer 1.4s ease-in-out infinite;
    border-radius: var(--rp-radius-sm);
  }

  @media (prefers-reduced-motion: reduce) {
    .rp-skeleton {
      animation: none;
    }
  }

  .rp-skeleton-line {
    height: 0.75rem;
    width: 100%;
  }

  .rp-skeleton-title {
    height: 1.2rem;
    width: 60%;
  }

  .rp-skeleton-avatar {
    height: 2.5rem;
    width: 2.5rem;
    border-radius: 999px;
  }
}

/* =======================================================
   LOGIN PAGE
   ======================================================= */

.rp-login {
  min-height: 100vh;
  display: flex;
  background: rgb(var(--rp-bg));
}

.rp-login-visual {
  flex: 1;
  background: url("assets/backgrounds/login-hero.svg") center/cover no-repeat;
  padding: clamp(2rem, 4vw, 4.5rem);
  color: #f8fafc;
  position: relative;
  display: flex;
  align-items: center;
}

.rp-login-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(8, 20, 45, 0.45), rgba(8, 20, 45, 0.05));
}

.rp-login-visual::before {
  content: "";
  position: absolute;
  top: -12%;
  bottom: -12%;
  right: -120px;
  width: 240px;
  background: rgb(var(--rp-bg));
  border-radius: 120px;
  z-index: 0;
}

.rp-login-visual-content {
  position: relative;
  z-index: 1;
  max-width: 460px;
  display: grid;
  gap: 1rem;
}

.rp-login-visual-brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.rp-login-visual-brand-title {
  font-weight: 600;
  font-size: 1.1rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: rgba(248, 250, 252, 0.8);
}

.rp-login-visual-title {
  font-size: clamp(1.8rem, 2.5vw, 2.6rem);
  font-weight: 600;
  margin: 0;
}

.rp-login-visual-text {
  margin: 0;
  color: rgba(248, 250, 252, 0.85);
  font-size: 1rem;
}

.rp-login-form {
  width: min(520px, 100%);
  padding: clamp(2rem, 4vw, 4.5rem);
  display: flex;
  align-items: center;
  justify-content: center;
}

.rp-login-panel-title {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.75rem;
  color: rgb(var(--rp-muted));
}

.rp-login-card {
  width: 100%;
  background: rgb(var(--rp-card));
  border-radius: calc(var(--rp-radius) + 4px);
  padding: clamp(2rem, 3vw, 2.75rem);
  box-shadow: var(--rp-shadow-md);
  border: 1px solid rgb(var(--rp-border));
}

.rp-login-brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 2rem;
}

.rp-login-brand-title {
  font-weight: 600;
  font-size: 1.15rem;
}

.rp-login-muted {
  color: rgb(var(--rp-muted));
}

.rp-login-input {
  border-radius: 12px;
  padding: 0.75rem 1rem;
  border: 1px solid rgb(var(--rp-border));
}

.rp-login-input:focus {
  border-color: rgb(var(--rp-primary));
  box-shadow: 0 0 0 0.2rem var(--rp-ring);
}

.rp-login-action {
  padding: 0.75rem 1rem;
  border-radius: 12px;
  font-weight: 600;
}

.rp-login-actions {
  display: flex;
  gap: 0.75rem;
  margin-top: 1.5rem;
}

.rp-login-alt-action {
  flex: 1;
  padding: 0.6rem 0.75rem;
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-radius: 10px;
}

.rp-login-social {
  display: flex;
  gap: 0.75rem;
  margin-top: 2rem;
}

.rp-login-social a {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid rgba(248, 250, 252, 0.4);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #f8fafc;
  text-decoration: none;
  font-size: 0.85rem;
}

@media (max-width: 991.98px) {
  .rp-login {
    flex-direction: column;
  }

  .rp-login-form {
    width: 100%;
  }

  .rp-login-visual::before {
    display: none;
  }
}
