/* =========================================
   NextZero Packages - Professional UI Styles
   Modern, Clean, Harmonious Design
   ========================================= */

/* ===================
   CSS Variables
   =================== */
:root {
	/* Primary Colors - Deep Blue (Trust & Security) */
	--primary-50: #EEF2FF;
	--primary-100: #E0E7FF;
	--primary-200: #C7D2FE;
	--primary-300: #A5B4FC;
	--primary-400: #818CF8;
	--primary-500: #6366F1;
	--primary-600: #4F46E5;
	--primary-700: #4338CA;
	--primary-800: #3730A3;
	--primary-900: #312E81;

	/* Accent Colors - Teal (Balance & Harmony) */
	--accent-50: #F0FDFA;
	--accent-100: #CCFBF1;
	--accent-200: #99F6E4;
	--accent-300: #5EEAD4;
	--accent-400: #2DD4BF;
	--accent-500: #14B8A6;
	--accent-600: #0D9488;

	/* Semantic Colors */
	--success-50: #ECFDF5;
	--success-100: #D1FAE5;
	--success-500: #10B981;
	--success-600: #059669;
	--success-700: #047857;

	--warning-50: #FFFBEB;
	--warning-100: #FEF3C7;
	--warning-500: #F59E0B;
	--warning-600: #D97706;
	--warning-700: #B45309;

	--danger-50: #FEF2F2;
	--danger-100: #FEE2E2;
	--danger-500: #EF4444;
	--danger-600: #DC2626;
	--danger-700: #B91C1C;

	/* Neutral Colors */
	--gray-50: #F9FAFB;
	--gray-100: #F3F4F6;
	--gray-200: #E5E7EB;
	--gray-300: #D1D5DB;
	--gray-400: #9CA3AF;
	--gray-500: #6B7280;
	--gray-600: #4B5563;
	--gray-700: #374151;
	--gray-800: #1F2937;
	--gray-900: #111827;

	/* Background & Surface */
	--bg-primary: #F8FAFC;
	--bg-secondary: #F1F5F9;
	--surface-primary: #FFFFFF;
	--surface-elevated: #FFFFFF;

	/* Text Colors - WCAG AA compliant contrast ratios */
	--text-primary: #1E293B;
	--text-secondary: #475569;
	--text-tertiary: #64748B;
	--text-inverse: #FFFFFF;

	/* Border & Divider */
	--border-light: #E2E8F0;
	--border-medium: #CBD5E1;
	--divider: #E2E8F0;

	/* Shadows */
	--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
	--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
	--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
	--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
	--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
	--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
	--shadow-glow: 0 0 20px rgba(99, 102, 241, 0.15);

	/* Spacing Scale */
	--space-1: 0.25rem;
	--space-2: 0.5rem;
	--space-3: 0.75rem;
	--space-4: 1rem;
	--space-5: 1.25rem;
	--space-6: 1.5rem;
	--space-8: 2rem;
	--space-10: 2.5rem;
	--space-12: 3rem;
	--space-16: 4rem;

	/* Border Radius */
	--radius-sm: 0.375rem;
	--radius-md: 0.5rem;
	--radius-lg: 0.75rem;
	--radius-xl: 1rem;
	--radius-2xl: 1.5rem;
	--radius-full: 9999px;

	/* Transitions */
	--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
	--transition-normal: 200ms cubic-bezier(0.4, 0, 0.2, 1);
	--transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);

	/* Typography */
	--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
	--font-mono: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, monospace;
}

/* ===================
   Reset & Base Styles
   =================== */
*,
*::before,
*::after {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

html {
	font-size: 16px;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	scroll-behavior: smooth;
}

body {
	font-family: var(--font-sans);
	font-size: 0.9375rem;
	font-weight: 400;
	line-height: 1.6;
	color: var(--text-primary);
	background: var(--bg-primary);
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

/* Import Inter font */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

/* ===================
   Navbar
   =================== */
.navbar {
	background: var(--surface-primary);
	border-bottom: 1px solid var(--border-light);
	padding: var(--space-4) var(--space-8);
	display: flex;
	justify-content: space-between;
	align-items: center;
	position: sticky;
	top: 0;
	z-index: 100;
	box-shadow: var(--shadow-sm);
	backdrop-filter: blur(8px);
	background: rgba(255, 255, 255, 0.95);
}

.nav-brand h1 {
	font-size: 1.375rem;
	font-weight: 700;
	color: var(--primary-600);
	letter-spacing: -0.025em;
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

.nav-menu {
	display: flex;
	gap: var(--space-1);
	align-items: center;
}

.nav-menu a {
	text-decoration: none;
	color: var(--text-secondary);
	font-weight: 500;
	font-size: 0.875rem;
	padding: var(--space-2) var(--space-4);
	border-radius: var(--radius-md);
	transition: all var(--transition-fast);
	position: relative;
}

.nav-menu a:hover {
	color: var(--primary-600);
	background: var(--primary-50);
}

.nav-menu a:focus-visible {
	outline: 2px solid var(--primary-500);
	outline-offset: 2px;
}

.btn-logout {
	color: var(--danger-600) !important;
	margin-left: var(--space-4);
	border-left: 1px solid var(--border-light);
	padding-left: var(--space-6) !important;
}

.btn-logout:hover {
	background: var(--danger-50) !important;
}

/* ===================
   Container & Layout
   =================== */
.container {
	max-width: 1280px;
	width: 100%;
	margin: 0 auto;
	padding: var(--space-8) var(--space-6);
	flex: 1;
}

main.container {
	padding-top: var(--space-10);
	padding-bottom: var(--space-16);
}

/* ===================
   Login Page
   =================== */
.login-body {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	background: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #6366f1 100%);
	background-size: 200% 200%;
	animation: gradientShift 15s ease infinite;
	position: relative;
	overflow: hidden;
}

.login-body::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
	pointer-events: none;
}

@keyframes gradientShift {
	0% {
		background-position: 0% 50%;
	}

	50% {
		background-position: 100% 50%;
	}

	100% {
		background-position: 0% 50%;
	}
}

.login-container {
	width: 100%;
	max-width: 420px;
	padding: var(--space-6);
	position: relative;
	z-index: 1;
}

.login-card {
	background: var(--surface-primary);
	padding: var(--space-10);
	border-radius: var(--radius-2xl);
	box-shadow: var(--shadow-2xl), 0 0 40px rgba(0, 0, 0, 0.1);
	animation: slideUp 0.5s ease-out;
}

@keyframes slideUp {
	from {
		opacity: 0;
		transform: translateY(20px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.login-card h1 {
	font-size: 1.75rem;
	font-weight: 700;
	text-align: center;
	color: var(--primary-600);
	margin-bottom: var(--space-2);
	letter-spacing: -0.025em;
}

.login-card h2 {
	font-size: 1rem;
	font-weight: 500;
	text-align: center;
	color: var(--text-tertiary);
	margin-bottom: var(--space-8);
}

/* ===================
   Forms
   =================== */
.form-group {
	margin-bottom: var(--space-5);
}

.form-group label {
	display: block;
	margin-bottom: var(--space-2);
	font-weight: 500;
	font-size: 0.875rem;
	color: var(--text-primary);
}

.form-group input,
.form-group select {
	width: 100%;
	padding: var(--space-3) var(--space-4);
	border: 1.5px solid var(--border-medium);
	border-radius: var(--radius-lg);
	font-size: 0.9375rem;
	font-family: inherit;
	color: var(--text-primary);
	background: var(--surface-primary);
	transition: all var(--transition-fast);
}

.form-group input::placeholder {
	color: var(--text-tertiary);
}

.form-group input:hover,
.form-group select:hover {
	border-color: var(--gray-400);
}

.form-group input:focus,
.form-group select:focus {
	outline: none;
	border-color: var(--primary-500);
	box-shadow: 0 0 0 3px var(--primary-100);
}

.form-group input[type="file"] {
	padding: var(--space-3);
	cursor: pointer;
	background: var(--gray-50);
}

.form-group input[type="file"]:hover {
	background: var(--gray-100);
}

.form-group select {
	cursor: pointer;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%236B7280'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-3) center;
	background-size: 1.25rem;
	padding-right: var(--space-10);
}

.help-text {
	display: block;
	margin-top: var(--space-2);
	font-size: 0.8125rem;
	color: var(--text-tertiary);
	line-height: 1.5;
}

/* ===================
   Buttons
   =================== */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	height: 40px;
	padding: 0 var(--space-5);
	border: none;
	border-radius: var(--radius-lg);
	font-size: 0.875rem;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	text-decoration: none;
	transition: all var(--transition-fast);
	white-space: nowrap;
	min-width: max-content;
}

.btn:focus-visible {
	outline: 2px solid var(--primary-500);
	outline-offset: 2px;
}

.btn-primary {
	background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-700) 100%);
	color: var(--text-inverse);
	box-shadow: var(--shadow-sm), 0 1px 2px rgba(79, 70, 229, 0.2);
}

.btn-primary:hover {
	background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-800) 100%);
	box-shadow: var(--shadow-md), 0 4px 12px rgba(79, 70, 229, 0.3);
	transform: translateY(-1px);
}

.btn-primary:active {
	transform: translateY(0);
	box-shadow: var(--shadow-sm);
}

.btn-secondary {
	background: var(--gray-100);
	color: var(--text-primary);
	border: 1px solid var(--border-medium);
}

.btn-secondary:hover {
	background: var(--gray-200);
	border-color: var(--gray-400);
}

.btn-success {
	background: linear-gradient(135deg, var(--success-500) 0%, var(--success-600) 100%);
	color: var(--text-inverse);
	box-shadow: var(--shadow-sm), 0 1px 2px rgba(16, 185, 129, 0.2);
}

.btn-success:hover {
	background: linear-gradient(135deg, var(--success-600) 0%, var(--success-700) 100%);
	box-shadow: var(--shadow-md), 0 4px 12px rgba(16, 185, 129, 0.3);
	transform: translateY(-1px);
}

.btn-warning {
	background: linear-gradient(135deg, var(--warning-500) 0%, var(--warning-600) 100%);
	color: var(--text-inverse);
	box-shadow: var(--shadow-sm), 0 1px 2px rgba(245, 158, 11, 0.2);
}

.btn-warning:hover {
	background: linear-gradient(135deg, var(--warning-600) 0%, var(--warning-700) 100%);
	box-shadow: var(--shadow-md), 0 4px 12px rgba(245, 158, 11, 0.3);
	transform: translateY(-1px);
}

.btn-danger {
	background: linear-gradient(135deg, var(--danger-500) 0%, var(--danger-600) 100%);
	color: var(--text-inverse);
	box-shadow: var(--shadow-sm), 0 1px 2px rgba(239, 68, 68, 0.2);
}

.btn-danger:hover {
	background: linear-gradient(135deg, var(--danger-600) 0%, var(--danger-700) 100%);
	box-shadow: var(--shadow-md), 0 4px 12px rgba(239, 68, 68, 0.3);
	transform: translateY(-1px);
}

.btn-sm {
	height: 32px;
	padding: 0 var(--space-3);
	font-size: 0.8125rem;
	border-radius: var(--radius-md);
	min-width: 72px;
}

.btn-lg {
	height: 48px;
	padding: 0 var(--space-8);
	font-size: 1rem;
}

button[type="submit"]:not(.btn-sm) {
	width: 100%;
	height: 48px;
	font-size: 1rem;
}

/* ===================
   Alerts
   =================== */
.alert {
	padding: var(--space-4) var(--space-5);
	border-radius: var(--radius-lg);
	margin-bottom: var(--space-6);
	font-size: 0.875rem;
	font-weight: 500;
	display: flex;
	align-items: center;
	gap: var(--space-3);
	animation: fadeIn 0.3s ease-out;
}

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(-10px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.alert::before {
	content: '';
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	background-size: contain;
	background-repeat: no-repeat;
}

.alert-error {
	background: var(--danger-50);
	color: var(--danger-700);
	border: 1px solid var(--danger-100);
	border-left: 4px solid var(--danger-500);
}

.alert-error::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23DC2626'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z'%3E%3C/path%3E%3C/svg%3E");
}

.alert-success {
	background: var(--success-50);
	color: var(--success-700);
	border: 1px solid var(--success-100);
	border-left: 4px solid var(--success-500);
}

.alert-success::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23059669'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'%3E%3C/path%3E%3C/svg%3E");
}

/* ===================
   Dashboard
   =================== */
.dashboard h2 {
	font-size: 1.75rem;
	font-weight: 700;
	color: var(--text-primary);
	margin-bottom: var(--space-8);
	letter-spacing: -0.025em;
}

.stats-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-6);
	margin-bottom: var(--space-10);
}

@media (max-width: 768px) {
	.stats-grid {
		grid-template-columns: 1fr;
	}
}

.stat-card {
	background: var(--surface-primary);
	padding: var(--space-8);
	border-radius: var(--radius-xl);
	box-shadow: var(--shadow-md);
	border: 1px solid var(--border-light);
	text-align: center;
	transition: all var(--transition-normal);
	position: relative;
	overflow: hidden;
}

.stat-card::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 3px;
	background: linear-gradient(90deg, var(--primary-500), var(--primary-600));
	opacity: 1;
}

.stat-card:hover {
	box-shadow: var(--shadow-lg), var(--shadow-glow);
	transform: translateY(-2px);
	border-color: var(--primary-200);
}

.stat-value {
	font-size: 3rem;
	font-weight: 700;
	background: linear-gradient(135deg, var(--primary-600), var(--accent-500));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	line-height: 1.2;
}

.stat-label {
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--text-secondary);
	margin-top: var(--space-2);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.quick-actions {
	background: var(--surface-primary);
	padding: var(--space-8);
	border-radius: var(--radius-xl);
	box-shadow: var(--shadow-md);
	border: 1px solid var(--border-light);
}

.quick-actions h3 {
	font-size: 1rem;
	font-weight: 600;
	color: var(--text-primary);
	margin-bottom: var(--space-6);
	padding-bottom: var(--space-4);
	border-bottom: 1px solid var(--border-light);
}

.action-buttons {
	display: flex;
	gap: var(--space-4);
	flex-wrap: wrap;
}

.action-buttons .btn {
	min-width: 160px;
}

/* ===================
   Page Header
   =================== */
.page-header {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	margin-bottom: var(--space-8);
	flex-wrap: wrap;
	gap: var(--space-6);
	padding-bottom: var(--space-6);
	border-bottom: 1px solid var(--border-light);
}

.page-header>div:first-child {
	flex: 1;
	min-width: 200px;
}

.page-header h2 {
	font-size: 1.75rem;
	font-weight: 700;
	color: var(--text-primary);
	letter-spacing: -0.025em;
	margin: 0;
}

.page-header p {
	color: var(--text-secondary);
	margin-top: var(--space-2);
	font-size: 0.875rem;
}

.page-actions {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	flex-wrap: wrap;
	justify-content: flex-end;
}

.search-form {
	display: inline-flex;
	gap: var(--space-3);
	align-items: center;
	background: transparent;
	border: none;
	padding: 0;
}

.search-form input,
.search-form select {
	height: 40px;
	padding: 0 var(--space-4);
	border: 1.5px solid var(--border-medium);
	border-radius: var(--radius-lg);
	font-size: 0.875rem;
	background: var(--surface-primary);
	box-shadow: var(--shadow-xs);
	transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
}

.search-form input {
	min-width: 220px;
}

.search-form select {
	min-width: 120px;
	background-color: var(--surface-primary);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%236B7280'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-3) center;
	background-size: 1rem;
	padding-right: var(--space-8);
	appearance: none;
}

.search-form input:focus,
.search-form select:focus {
	border-color: var(--primary-500);
	box-shadow: 0 0 0 3px var(--primary-100);
	background: var(--surface-primary);
	outline: none;
}

.search-form button[type="submit"] {
	height: 40px;
	width: auto;
	font-size: 0.875rem;
}

.pagination-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-4);
	padding: var(--space-4) var(--space-5);
	background: linear-gradient(180deg, var(--gray-50) 0%, var(--surface-primary) 100%);
	border-bottom: 1px solid var(--border-light);
}

.pagination-bar:last-child {
	border-bottom: none;
	border-top: 1px solid var(--border-light);
	background: var(--surface-primary);
}

.pagination-bar+table {
	border-top: none;
}

.page-meta {
	font-size: 0.875rem;
	color: var(--text-secondary);
	display: flex;
	align-items: center;
	gap: var(--space-2);
	font-weight: 500;
}

/* Page actions buttons inherit default sizing */

.btn-ghost {
	background: transparent;
	color: var(--text-primary);
	border: 1px solid var(--border-light);
	box-shadow: none;
}

.btn-ghost:hover {
	background: var(--gray-100);
	border-color: var(--border-medium);
}

.btn.disabled,
.btn[aria-disabled="true"] {
	opacity: 0.45;
	pointer-events: none;
	cursor: not-allowed;
}

.btn-ghost.disabled {
	opacity: 0.45;
	pointer-events: none;
}

/* ===================
   Tables
   =================== */
.releases-table,
.tenants-table {
	background: var(--surface-primary);
	border-radius: var(--radius-xl);
	box-shadow: var(--shadow-md);
	border: 1px solid var(--border-light);
	overflow: hidden;
}

.tenants-table h3,
.releases-table>h3 {
	padding: var(--space-5) var(--space-6);
	font-size: 1rem;
	font-weight: 600;
	color: var(--text-primary);
	border-bottom: 1px solid var(--border-light);
	background: linear-gradient(180deg, var(--gray-50) 0%, var(--surface-primary) 100%);
	margin: 0;
}

table {
	width: 100%;
	border-collapse: collapse;
}

thead {
	background: linear-gradient(180deg, var(--gray-50) 0%, var(--gray-100) 100%);
}

th {
	padding: var(--space-4) var(--space-5);
	text-align: left;
	font-weight: 600;
	font-size: 0.75rem;
	color: var(--text-secondary);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	border-bottom: 1px solid var(--border-light);
}

td {
	padding: var(--space-4) var(--space-5);
	text-align: left;
	border-bottom: 1px solid var(--border-light);
	font-size: 0.875rem;
	color: var(--text-primary);
}

tbody tr {
	transition: background var(--transition-fast);
}

tbody tr:hover {
	background: var(--gray-50);
}

tbody tr:last-child td {
	border-bottom: none;
}

.version {
	font-weight: 600;
	color: var(--primary-600);
	font-family: var(--font-mono);
	font-size: 0.875rem;
}

code {
	font-family: var(--font-mono);
	font-size: 0.8125rem;
	background: var(--gray-100);
	padding: var(--space-1) var(--space-2);
	border-radius: var(--radius-sm);
	color: var(--gray-700);
}

.text-muted {
	color: var(--text-tertiary);
	font-style: italic;
}

.actions {
	display: flex;
	gap: var(--space-2);
	flex-wrap: wrap;
	align-items: center;
}

.actions .btn-sm {
	min-width: 80px;
}

/* Specific action button widths for consistency */
td .actions .btn-sm {
	min-width: 88px;
}

/* ===================
   Badges
   =================== */
.badge {
	display: inline-flex;
	align-items: center;
	padding: var(--space-1) var(--space-3);
	border-radius: var(--radius-full);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.025em;
	text-transform: uppercase;
}

.badge-success {
	background: var(--success-100);
	color: var(--success-700);
}

.badge-inactive {
	background: var(--gray-100);
	color: var(--gray-600);
}

.badge-secondary {
	background: var(--gray-100);
	color: var(--gray-700);
}

.badge-info {
	background: var(--primary-100);
	color: var(--primary-700);
	font-family: var(--font-mono);
	font-size: 0.6875rem;
	text-transform: none;
	max-width: 200px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Product Type Badges */
.badge-desktop {
	background: var(--primary-100);
	color: var(--primary-700);
}

.badge-cli {
	background: var(--gray-800);
	color: var(--gray-100);
}

.badge-android {
	background: var(--success-100);
	color: var(--success-700);
}

.badge-ios {
	background: var(--gray-100);
	color: var(--gray-700);
}

.platform-tags {
	display: flex;
	gap: var(--space-2);
	flex-wrap: wrap;
}

/* ===================
   Cards
   =================== */
.upload-card,
.create-tenant-card {
	background: var(--surface-primary);
	padding: var(--space-8);
	border-radius: var(--radius-xl);
	box-shadow: var(--shadow-md);
	border: 1px solid var(--border-light);
	max-width: 600px;
}

.create-tenant-card {
	margin-bottom: var(--space-8);
}

.create-tenant-card h3 {
	font-size: 1rem;
	font-weight: 600;
	color: var(--text-primary);
	margin-bottom: var(--space-6);
	padding-bottom: var(--space-4);
	border-bottom: 1px solid var(--border-light);
}

/* ===================
   Upload Progress
   =================== */
.upload-progress {
	display: none;
	margin: var(--space-6) 0;
	text-align: center;
}

.upload-progress.htmx-request {
	display: block;
}

.progress-bar {
	width: 100%;
	height: 8px;
	background: var(--gray-200);
	border-radius: var(--radius-full);
	overflow: hidden;
	margin-bottom: var(--space-3);
}

.progress-fill {
	height: 100%;
	background: linear-gradient(90deg, var(--primary-500), var(--accent-500));
	border-radius: var(--radius-full);
	animation: progressAnimation 1.5s ease-in-out infinite;
}

@keyframes progressAnimation {
	0% {
		width: 0%;
	}

	50% {
		width: 70%;
	}

	100% {
		width: 100%;
	}
}

.upload-progress p {
	font-size: 0.875rem;
	color: var(--text-secondary);
	font-weight: 500;
}

/* ===================
   Upload Page
   =================== */
.upload-page h2 {
	font-size: 1.75rem;
	font-weight: 700;
	color: var(--text-primary);
	margin-bottom: var(--space-8);
	letter-spacing: -0.025em;
}

/* ===================
   Footer
   =================== */
footer {
	text-align: center;
	padding: var(--space-8) var(--space-6);
	color: var(--text-tertiary);
	font-size: 0.875rem;
	border-top: 1px solid var(--border-light);
	background: var(--surface-primary);
	margin-top: auto;
}

footer p {
	margin: 0;
}

/* ===================
   Utility Classes
   =================== */
.mt-4 {
	margin-top: var(--space-8);
}

.mt-6 {
	margin-top: var(--space-12);
}

.text-center {
	text-align: center;
}

/* ===================
   Responsive
   =================== */
@media (max-width: 1024px) {
	.container {
		padding: var(--space-6) var(--space-4);
	}

	.navbar {
		padding: var(--space-4);
	}
}

@media (max-width: 768px) {
	.navbar {
		flex-direction: column;
		gap: var(--space-4);
	}

	.nav-menu {
		flex-wrap: wrap;
		justify-content: center;
	}

	.btn-logout {
		margin-left: 0;
		border-left: none;
		padding-left: var(--space-4) !important;
	}

	.page-header {
		flex-direction: column;
		align-items: flex-start;
	}

	.action-buttons {
		flex-direction: column;
	}

	.action-buttons .btn {
		width: 100%;
	}

	table {
		font-size: 0.8125rem;
	}

	th,
	td {
		padding: var(--space-3);
	}

	.login-card {
		padding: var(--space-6);
	}

	.stat-card {
		padding: var(--space-6);
	}

	.stat-value {
		font-size: 2.5rem;
	}
}

@media (max-width: 480px) {
	.stats-grid {
		gap: var(--space-4);
	}

	.upload-card,
	.create-tenant-card,
	.quick-actions {
		padding: var(--space-5);
	}
}

/* ===================
   Scrollbar Styling
   =================== */
::-webkit-scrollbar {
	width: 8px;
	height: 8px;
}

::-webkit-scrollbar-track {
	background: var(--gray-100);
}

::-webkit-scrollbar-thumb {
	background: var(--gray-300);
	border-radius: var(--radius-full);
}

::-webkit-scrollbar-thumb:hover {
	background: var(--gray-400);
}

/* ===================
   Selection Styling
   =================== */
::selection {
	background: var(--primary-200);
	color: var(--primary-900);
}

/* ===================
   Focus Visible (Accessibility)
   =================== */
:focus-visible {
	outline: 2px solid var(--primary-500);
	outline-offset: 2px;
}

:focus:not(:focus-visible) {
	outline: none;
}

/* ===================
   Toast Notifications
   =================== */
.toast-container {
	position: fixed;
	bottom: var(--space-6);
	right: var(--space-6);
	z-index: 9999;
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
	pointer-events: none;
}

.toast {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	padding: var(--space-4) var(--space-5);
	border-radius: var(--radius-lg);
	background: var(--surface-primary);
	box-shadow: var(--shadow-lg), 0 0 0 1px rgba(0, 0, 0, 0.05);
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--text-primary);
	pointer-events: auto;
	animation: toastSlideIn 0.3s ease-out;
	max-width: 360px;
}

.toast.toast-hiding {
	animation: toastSlideOut 0.2s ease-in forwards;
}

@keyframes toastSlideIn {
	from {
		opacity: 0;
		transform: translateX(100%);
	}

	to {
		opacity: 1;
		transform: translateX(0);
	}
}

@keyframes toastSlideOut {
	from {
		opacity: 1;
		transform: translateX(0);
	}

	to {
		opacity: 0;
		transform: translateX(100%);
	}
}

.toast-icon {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
}

.toast-message {
	flex: 1;
	line-height: 1.4;
}

.toast-success {
	border-left: 4px solid var(--success-500);
}

.toast-success .toast-icon {
	color: var(--success-500);
}

.toast-error {
	border-left: 4px solid var(--danger-500);
}

.toast-error .toast-icon {
	color: var(--danger-500);
}

.toast-info {
	border-left: 4px solid var(--primary-500);
}

.toast-info .toast-icon {
	color: var(--primary-500);
}

.toast-warning {
	border-left: 4px solid var(--warning-500);
}

.toast-warning .toast-icon {
	color: var(--warning-500);
}

.toast-confirm {
	max-width: 420px;
	align-items: flex-start;
}

.toast-actions {
	display: flex;
	gap: var(--space-2);
	align-items: center;
	margin-left: auto;
}

@media (max-width: 480px) {
	.toast-container {
		left: var(--space-4);
		right: var(--space-4);
		bottom: var(--space-4);
	}

	.toast {
		max-width: none;
	}
}

/* ===================
   Edit Release Form
   =================== */
.editing {
	background-color: var(--primary-50);
	transition: background-color 0.3s ease;
	animation: highlightRow 0.5s ease-out;
}

.editing>td {
	border-top: 2px solid var(--primary-200);
	border-bottom: 2px solid var(--primary-200);
}

.edit-release-form {
	padding: var(--space-2);
	background: transparent;
}

.edit-release-form .form-row {
	display: flex;
	gap: var(--space-4);
	align-items: flex-end;
	flex-wrap: wrap;
}

.edit-release-form .form-group {
	margin-bottom: 0;
	flex: 1;
	min-width: 180px;
}

.edit-release-form .form-group label {
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--text-secondary);
	margin-bottom: var(--space-1);
	font-weight: 600;
}

.edit-release-form .form-group input {
	padding: var(--space-2) var(--space-3);
	font-size: 0.875rem;
	border: 1px solid var(--primary-300);
	background-color: var(--surface-primary);
	box-shadow: var(--shadow-xs);
}

.edit-release-form .form-group input:focus {
	border-color: var(--primary-500);
	box-shadow: 0 0 0 3px var(--primary-100);
}

.edit-release-form .form-group.checkbox {
	flex: 0 0 auto;
	padding-bottom: var(--space-2);
	display: flex;
	align-items: center;
}

.edit-release-form .form-group.checkbox label {
	font-size: 0.875rem;
	text-transform: none;
	color: var(--text-primary);
	display: flex;
	align-items: center;
	gap: var(--space-2);
	cursor: pointer;
	margin-bottom: 0;
}

.edit-release-form .form-group.checkbox input[type="checkbox"] {
	width: 1.125rem;
	height: 1.125rem;
	padding: 0;
	border: 2px solid var(--primary-400);
	cursor: pointer;
}

.edit-release-form .actions {
	display: flex;
	gap: var(--space-2);
	flex: 0 0 auto;
	margin-left: auto;
}

@keyframes highlightRow {
	from {
		background-color: var(--accent-100);
	}

	to {
		background-color: var(--primary-50);
	}
}