/* Buttons */
.uk-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--uk-sp-2);
  padding: var(--uk-sp-2) var(--uk-sp-5); border-radius: var(--uk-radius);
  font-family: var(--uk-font); font-size: var(--uk-text-sm); font-weight: 600;
  border: none; cursor: pointer; white-space: nowrap;
  transition: all var(--uk-duration-fast) var(--uk-ease);
}
.uk-btn:active { transform: scale(0.97); }
.uk-btn-primary { background: var(--uk-primary); color: var(--uk-white); }
.uk-btn-primary:hover { background: var(--uk-primary-dark); }
.uk-btn-secondary { background: var(--uk-gray-100); color: var(--uk-gray-700); }
.uk-btn-secondary:hover { background: var(--uk-gray-200); }
.uk-btn-outline { background: transparent; border: 1.5px solid var(--uk-gray-200); color: var(--uk-gray-700); }
.uk-btn-outline:hover { border-color: var(--uk-primary); color: var(--uk-primary); }
.uk-btn-danger { background: var(--uk-danger); color: var(--uk-white); }
.uk-btn-sm { padding: var(--uk-sp-1) var(--uk-sp-3); font-size: var(--uk-text-xs); }
.uk-btn-lg { padding: var(--uk-sp-3) var(--uk-sp-8); font-size: var(--uk-text-base); }
.uk-btn-icon { width: 36px; height: 36px; padding: 0; border-radius: var(--uk-radius); }

/* Cards */
.uk-card {
  background: var(--uk-white); border-radius: var(--uk-radius-lg);
  border: 1px solid var(--uk-gray-100); box-shadow: var(--uk-shadow-sm);
  transition: box-shadow var(--uk-duration) var(--uk-ease);
}
.uk-card:hover { box-shadow: var(--uk-shadow-md); }
.uk-card-header { padding: var(--uk-sp-4) var(--uk-sp-5); border-bottom: 1px solid var(--uk-gray-100); }
.uk-card-body { padding: var(--uk-sp-5); }
.uk-card-footer { padding: var(--uk-sp-4) var(--uk-sp-5); border-top: 1px solid var(--uk-gray-100); }

/* Badges */
.uk-badge {
  display: inline-flex; align-items: center; padding: var(--uk-sp-1) var(--uk-sp-3);
  border-radius: var(--uk-radius-full); font-size: var(--uk-text-xs); font-weight: 600;
}
.uk-badge-primary { background: var(--uk-primary-light); color: var(--uk-primary); }
.uk-badge-success { background: hsl(142,64%,94%); color: var(--uk-success); }
.uk-badge-warning { background: hsl(38,92%,94%); color: hsl(38,72%,38%); }
.uk-badge-danger { background: hsl(0,72%,94%); color: var(--uk-danger); }

/* Form inputs */
.uk-input, .uk-select, .uk-textarea {
  width: 100%; padding: var(--uk-sp-2) var(--uk-sp-4);
  border: 1.5px solid var(--uk-gray-200); border-radius: var(--uk-radius);
  font-family: var(--uk-font); font-size: var(--uk-text-sm);
  background: var(--uk-white); color: var(--uk-gray-800);
  transition: border-color var(--uk-duration-fast) var(--uk-ease);
}
.uk-input:focus, .uk-select:focus, .uk-textarea:focus {
  outline: none; border-color: var(--uk-primary);
  box-shadow: 0 0 0 3px hsla(var(--uk-primary-h), var(--uk-primary-s), var(--uk-primary-l), 0.12);
}
.uk-label { display: block; font-size: var(--uk-text-sm); font-weight: 600; color: var(--uk-gray-600); margin-bottom: var(--uk-sp-1); }
.uk-form-group { margin-bottom: var(--uk-sp-4); }

/* Tabs */
.uk-tabs { display: flex; gap: var(--uk-sp-1); border-bottom: 2px solid var(--uk-gray-100); }
.uk-tab {
  padding: var(--uk-sp-2) var(--uk-sp-4); font-size: var(--uk-text-sm); font-weight: 500;
  color: var(--uk-gray-400); background: none; border: none; cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -2px;
  transition: all var(--uk-duration-fast) var(--uk-ease);
}
.uk-tab:hover { color: var(--uk-gray-700); }
.uk-tab.uk-active { color: var(--uk-primary); border-bottom-color: var(--uk-primary); }
.uk-tab-panel { display: none; padding: var(--uk-sp-4) 0; }
.uk-tab-panel.uk-active { display: block; }

/* Modal */
.uk-modal-backdrop {
  position: fixed; inset: 0; background: hsla(220,20%,8%,0.5);
  z-index: var(--uk-z-modal-backdrop); display: none; align-items: center; justify-content: center;
  backdrop-filter: blur(4px);
}
.uk-modal-backdrop.uk-open { display: flex; }
.uk-modal {
  background: var(--uk-white); border-radius: var(--uk-radius-xl);
  box-shadow: var(--uk-shadow-lg); width: 90%; max-width: 540px;
  max-height: 85vh; overflow-y: auto;
}
.uk-modal-header { padding: var(--uk-sp-5) var(--uk-sp-6); border-bottom: 1px solid var(--uk-gray-100); display: flex; align-items: center; justify-content: space-between; }
.uk-modal-body { padding: var(--uk-sp-6); }
.uk-modal-footer { padding: var(--uk-sp-4) var(--uk-sp-6); border-top: 1px solid var(--uk-gray-100); display: flex; gap: var(--uk-sp-3); justify-content: flex-start; }

/* Skeleton */
.uk-skeleton { background: linear-gradient(90deg, var(--uk-gray-100) 25%, var(--uk-gray-50) 50%, var(--uk-gray-100) 75%);
  background-size: 200% 100%; animation: uk-shimmer 1.5s infinite; border-radius: var(--uk-radius); }
.uk-skeleton-text { height: 14px; margin-bottom: var(--uk-sp-2); }
.uk-skeleton-heading { height: 22px; width: 60%; margin-bottom: var(--uk-sp-3); }
.uk-skeleton-avatar { width: 40px; height: 40px; border-radius: var(--uk-radius-full); }
.uk-skeleton-card { height: 180px; }
@keyframes uk-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* Empty state */
.uk-empty { text-align: center; padding: var(--uk-sp-12) var(--uk-sp-4); color: var(--uk-gray-400); }
.uk-empty-icon { font-size: 3rem; margin-bottom: var(--uk-sp-4); opacity: 0.4; }
.uk-empty-title { font-size: var(--uk-text-lg); font-weight: 600; color: var(--uk-gray-600); margin-bottom: var(--uk-sp-2); }

/* Dropdown */
.uk-dropdown {
  position: absolute; top: 100%; left: 0; min-width: 180px;
  background: var(--uk-white); border-radius: var(--uk-radius-lg);
  box-shadow: var(--uk-shadow-md); border: 1px solid var(--uk-gray-100);
  z-index: var(--uk-z-dropdown); display: none; padding: var(--uk-sp-2);
}
.uk-dropdown.uk-open { display: block; }
.uk-dropdown-item {
  display: block; width: 100%; padding: var(--uk-sp-2) var(--uk-sp-3);
  font-size: var(--uk-text-sm); color: var(--uk-gray-700); background: none; border: none;
  border-radius: var(--uk-radius-sm); cursor: pointer; text-align: right;
}
.uk-dropdown-item:hover { background: var(--uk-gray-50); }

/* Table */
.uk-table { width: 100%; border-collapse: collapse; font-size: var(--uk-text-sm); }
.uk-table th, .uk-table td { padding: var(--uk-sp-3) var(--uk-sp-4); text-align: right; border-bottom: 1px solid var(--uk-gray-100); }
.uk-table th { font-weight: 600; color: var(--uk-gray-500); background: var(--uk-gray-50); }
.uk-table tr:hover td { background: hsl(220,14%,98%); }

/* Chip / filter */
.uk-chip {
  display: inline-flex; align-items: center; gap: var(--uk-sp-1);
  padding: var(--uk-sp-1) var(--uk-sp-3); border-radius: var(--uk-radius-full);
  font-size: var(--uk-text-xs); font-weight: 500; background: var(--uk-gray-100);
  color: var(--uk-gray-600); cursor: pointer; border: 1.5px solid transparent;
  transition: all var(--uk-duration-fast) var(--uk-ease);
}
.uk-chip:hover, .uk-chip.uk-active { background: var(--uk-primary-light); color: var(--uk-primary); border-color: var(--uk-primary); }

/* Toolbar */
.uk-toolbar {
  display: flex; align-items: center; gap: var(--uk-sp-3); flex-wrap: wrap;
  padding: var(--uk-sp-3) var(--uk-sp-5); background: var(--uk-white);
  border-radius: var(--uk-radius-lg); border: 1px solid var(--uk-gray-100);
  margin-bottom: var(--uk-sp-4);
}

/* Nav items */
.uk-nav-item {
  display: flex; align-items: center; gap: var(--uk-sp-3);
  padding: var(--uk-sp-2) var(--uk-sp-4); border-radius: var(--uk-radius);
  font-size: var(--uk-text-sm); color: var(--uk-gray-500); font-weight: 500;
  transition: all var(--uk-duration-fast) var(--uk-ease); cursor: pointer;
}
.uk-nav-item:hover { background: var(--uk-gray-50); color: var(--uk-gray-800); }
.uk-nav-item.uk-active { background: var(--uk-primary-light); color: var(--uk-primary); }

/* Bottom nav (mobile) */
.uk-bottom-nav {
  position: fixed; bottom: 0; right: 0; left: 0; height: 64px;
  background: var(--uk-white); border-top: 1px solid var(--uk-gray-200);
  display: flex; align-items: center; justify-content: space-around;
  z-index: var(--uk-z-sticky);
}
.uk-bottom-nav-item {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  font-size: var(--uk-text-xs); color: var(--uk-gray-400); background: none; border: none; cursor: pointer;
}
.uk-bottom-nav-item.uk-active { color: var(--uk-primary); }
@media (min-width: 769px) { .uk-bottom-nav { display: none; } }

/* Side panel */
.uk-side-panel {
  position: fixed; top: 0; left: 0; width: 380px; max-width: 90vw;
  height: 100vh; background: var(--uk-white); box-shadow: var(--uk-shadow-lg);
  z-index: var(--uk-z-modal); transform: translateX(-100%);
  transition: transform var(--uk-duration) var(--uk-ease); overflow-y: auto;
}
.uk-side-panel.uk-open { transform: translateX(0); }
