﻿/* OPEN DOORWAY - Component Styles */
/* Loaded after design-tokens.css */

/* -- Buttons -- */
.btn-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.625rem 1.5rem; font-size: 0.875rem; font-weight: 700;
  color: var(--text-on-brand); background: var(--brand-primary);
  border: none; border-radius: var(--radius-md); cursor: pointer;
  transition: all var(--duration-normal) var(--ease-out);
  box-shadow: var(--shadow-xs);
}
.btn-primary:hover {
  background: var(--brand-primary-hover);
  box-shadow: var(--shadow-brand); transform: translateY(-1px);
}
.btn-primary:active { transform: translateY(0); box-shadow: var(--shadow-xs); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }

.btn-secondary {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.625rem 1.5rem; font-size: 0.875rem; font-weight: 600;
  color: var(--text-primary); background: var(--surface-base);
  border: 1px solid var(--border-default); border-radius: var(--radius-md);
  cursor: pointer; transition: all var(--duration-normal) var(--ease-out);
}
.btn-secondary:hover {
  border-color: var(--brand-primary-ink); color: var(--brand-primary-ink);
  box-shadow: var(--shadow-sm);
}

.btn-ghost {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500;
  color: var(--text-secondary); background: transparent;
  border: none; border-radius: var(--radius-md); cursor: pointer;
  transition: all var(--duration-fast) ease;
}
.btn-ghost:hover { background: var(--surface-overlay); color: var(--text-primary); }

/* -- Cards -- */
.card {
  background: var(--surface-base);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-xl);
  transition: all var(--duration-normal) var(--ease-out);
}
.card:hover { border-color: var(--border-strong); box-shadow: var(--shadow-md); }

.card-elevated {
  background: var(--surface-base);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  transition: all var(--duration-normal) var(--ease-out);
}
.card-elevated:hover {
  box-shadow: var(--shadow-lg); transform: translateY(-2px);
  border-color: var(--brand-primary-ink);
}

.card-premium {
  background: var(--surface-base);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  position: relative; overflow: hidden;
}
.card-premium::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--brand-gradient); opacity: 0;
  transition: opacity var(--duration-normal) ease;
}
.card-premium:hover::before { opacity: 1; }
.card-premium:hover { box-shadow: var(--shadow-lg); border-color: var(--brand-primary-ink); }

/* -- Inputs -- */
.input-field {
  width: 100%; padding: 0.625rem 0.875rem; font-size: 0.875rem;
  color: var(--text-primary); background: var(--surface-overlay);
  border: 1px solid var(--border-default); border-radius: var(--radius-md);
  transition: all var(--duration-normal) ease; outline: none;
}
.input-field::placeholder { color: var(--text-muted); }
.input-field:focus {
  background: var(--surface-base); border-color: var(--brand-primary-ink);
  box-shadow: 0 0 0 3px var(--brand-primary-10);
}

/* -- Breadcrumbs -- */
.breadcrumb {
  display: flex; align-items: center; gap: 0.375rem;
  font-size: 0.8125rem; color: var(--text-muted); margin-bottom: 1rem;
}
.breadcrumb a { color: var(--text-secondary); transition: color var(--duration-fast) ease; }
.breadcrumb a:hover { color: var(--brand-primary-ink); }
.breadcrumb .separator { color: var(--text-muted); font-size: 0.75rem; }
.breadcrumb .current { color: var(--text-primary); font-weight: 500; }

/* -- Badges -- */
.badge {
  display: inline-flex; align-items: center; gap: 0.25rem;
  padding: 0.25rem 0.625rem; font-size: 0.75rem; font-weight: 600;
  border-radius: var(--radius-full);
}
.badge-primary { background: var(--brand-primary-10); color: var(--brand-primary-ink); }
.badge-success { background: var(--color-success-bg); color: var(--color-success); }
.badge-amber { background: var(--color-amber-bg); color: var(--color-amber); }
.badge-error { background: var(--color-error-bg); color: var(--color-error); }

/* -- KPI Cards -- */
.kpi-card {
  background: var(--surface-base); border: 1px solid var(--border-default);
  border-radius: var(--radius-xl); padding: 1.25rem 1.5rem;
  position: relative; overflow: hidden;
  transition: all var(--duration-normal) var(--ease-out);
}
.kpi-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--brand-gradient); opacity: 0;
  transition: opacity var(--duration-normal) ease;
}
.kpi-card:hover { border-color: var(--brand-primary-ink); box-shadow: var(--shadow-md); }
.kpi-card:hover::before { opacity: 1; }

.kpi-icon {
  width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;
  background: var(--brand-gradient-subtle, var(--brand-primary-light));
  border: 1px solid var(--brand-primary-20); border-radius: var(--radius-md);
  margin-bottom: 0.75rem;
}

/* -- Sidebar Navigation -- */
.nav-group-label {
  font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.1em; color: var(--text-muted); padding: 0.5rem 0.75rem;
  margin-top: 0.5rem;
}
.nav-item {
  display: flex; align-items: center; gap: 0.75rem;
  padding: 0.5rem 0.75rem; border-radius: var(--radius-md);
  font-size: 0.875rem; font-weight: 500; color: var(--text-secondary);
  border-left: 2px solid transparent;
  transition: all var(--duration-fast) ease; cursor: pointer;
}
.nav-item:hover { background: var(--surface-overlay); color: var(--text-primary); }
.nav-item.active {
  background: var(--brand-primary-light); border-left-color: var(--brand-primary-ink);
  color: var(--brand-primary-ink); font-weight: 600;
}

/* -- Skeleton Loading -- */
.skeleton {
  background: linear-gradient(90deg, var(--surface-overlay) 25%, var(--surface-sunken) 50%, var(--surface-overlay) 75%);
  background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite;
  border-radius: var(--radius-md);
}
@keyframes skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* -- Transitions -- */
.fade-in { animation: fadeIn var(--duration-slow) var(--ease-out) forwards; }
.slide-up { animation: slideUp var(--duration-slow) var(--ease-out) forwards; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }