/* Traffic Shaper Dashboard Styles  * Version: 0.3.0
 */

.traffic-shaper-dashboard {
	padding: 1em;
}

/* Status Cards  * Version: 0.3.0
 */
.ts-status-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	gap: 1em;
	margin-bottom: 2em;
}

.ts-status-card {
	background: #fff;
	border: 1px solid #ddd;
	border-radius: 4px;
	padding: 1em;
	box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.ts-status-card h3 {
	margin: 0 0 0.5em 0;
	font-size: 1.1em;
	color: #333;
}

.ts-status-value {
	font-size: 2em;
	font-weight: bold;
	color: #0088cc;
}

.ts-status-label {
	font-size: 0.9em;
	color: #666;
}

/* Traffic Class Diagram */
.ts-class-diagram {
	background: #f9f9f9;
	border: 1px solid #ddd;
	border-radius: 4px;
	padding: 1.5em;
	margin-bottom: 2em;
}

.ts-class-flow {
	display: flex;
	flex-direction: column;
	gap: 1em;
}

.ts-class-item {
	background: #fff;
	border: 2px solid #ddd;
	border-radius: 4px;
	padding: 1em;
	display: flex;
	justify-content: space-between;
	align-items: center;
	transition: all 0.3s;
}

.ts-class-item:hover {
	border-color: #0088cc;
	box-shadow: 0 2px 8px rgba(0,136,204,0.2);
}

.ts-class-info {
	flex: 1;
}

.ts-class-name {
	font-weight: bold;
	font-size: 1.1em;
	margin-bottom: 0.3em;
}

.ts-class-details {
	font-size: 0.9em;
	color: #666;
}

.ts-class-metrics {
	display: flex;
	gap: 1.5em;
	text-align: right;
}

.ts-metric {
	display: flex;
	flex-direction: column;
}

.ts-metric-value {
	font-size: 1.2em;
	font-weight: bold;
	color: #0088cc;
}

.ts-metric-label {
	font-size: 0.8em;
	color: #999;
}

/* Priority Indicators */
.high-priority {
	border-left: 4px solid #dc3545;
}

.medium-priority {
	border-left: 4px solid #fd7e14;
}

.normal-priority {
	border-left: 4px solid #28a745;
}

.low-priority {
	border-left: 4px solid #6c757d;
}

/* Tables */
.ts-table {
	width: 100%;
	border-collapse: collapse;
	background: #fff;
	box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.ts-table th {
	background: #f8f9fa;
	padding: 0.75em;
	text-align: left;
	border-bottom: 2px solid #dee2e6;
	font-weight: 600;
}

.ts-table td {
	padding: 0.75em;
	border-bottom: 1px solid #dee2e6;
}

.ts-table tr:hover {
	background: #f8f9fa;
}

/* Action Buttons */
.ts-action-buttons {
	display: flex;
	gap: 0.5em;
}

.ts-btn {
	padding: 0.4em 0.8em;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 0.9em;
	transition: all 0.2s;
}

.ts-btn-primary {
	background: #0088cc;
	color: white;
}

.ts-btn-primary:hover {
	background: #006699;
}

.ts-btn-success {
	background: #28a745;
	color: white;
}

.ts-btn-success:hover {
	background: #218838;
}

.ts-btn-danger {
	background: #dc3545;
	color: white;
}

.ts-btn-danger:hover {
	background: #c82333;
}

.ts-btn-warning {
	background: #ffc107;
	color: #212529;
}

.ts-btn-warning:hover {
	background: #e0a800;
}

/* Preset Cards */
.ts-preset-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 1.5em;
	margin-top: 1em;
}

.ts-preset-card {
	background: #fff;
	border: 2px solid #ddd;
	border-radius: 8px;
	padding: 1.5em;
	cursor: pointer;
	transition: all 0.3s;
}

.ts-preset-card:hover {
	border-color: #0088cc;
	box-shadow: 0 4px 12px rgba(0,136,204,0.2);
	transform: translateY(-2px);
}

.ts-preset-title {
	font-size: 1.3em;
	font-weight: bold;
	margin-bottom: 0.5em;
	color: #333;
}

.ts-preset-description {
	color: #666;
	margin-bottom: 1em;
	font-size: 0.95em;
}

.ts-preset-apply {
	text-align: right;
}

/* Stats View */
.ts-stats-container {
	background: #fff;
	border-radius: 4px;
	padding: 1.5em;
	margin-bottom: 1.5em;
}

.ts-stats-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 1em;
	padding-bottom: 0.5em;
	border-bottom: 2px solid #eee;
}

.ts-stats-refresh {
	padding: 0.5em 1em;
	background: #0088cc;
	color: white;
	border: none;
	border-radius: 4px;
	cursor: pointer;
}

.ts-stats-refresh:hover {
	background: #006699;
}

/* Traffic Flow Animation */
@keyframes flowAnimation {
	0% { transform: translateX(-100%); }
	100% { transform: translateX(100%); }
}

.ts-class-item.active::after {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: linear-gradient(90deg, transparent, rgba(0,136,204,0.1), transparent);
	animation: flowAnimation 2s infinite;
}

/* Responsive */
@media (max-width: 768px) {
	.ts-status-cards {
		grid-template-columns: 1fr;
	}

	.ts-class-metrics {
		flex-direction: column;
		gap: 0.5em;
	}

	.ts-preset-grid {
		grid-template-columns: 1fr;
	}
}

/* Form Styles */
.ts-form-group {
	margin-bottom: 1em;
}

.ts-form-label {
	display: block;
	margin-bottom: 0.3em;
	font-weight: 600;
	color: #333;
}

.ts-form-input {
	width: 100%;
	padding: 0.5em;
	border: 1px solid #ddd;
	border-radius: 4px;
	font-size: 1em;
}

.ts-form-input:focus {
	outline: none;
	border-color: #0088cc;
	box-shadow: 0 0 0 3px rgba(0,136,204,0.1);
}

.ts-form-help {
	font-size: 0.85em;
	color: #666;
	margin-top: 0.3em;
}

/* Status Indicators */
.ts-status-active {
	color: #28a745;
	font-weight: bold;
}

.ts-status-inactive {
	color: #dc3545;
	font-weight: bold;
}

.ts-status-badge {
	display: inline-block;
	padding: 0.25em 0.6em;
	border-radius: 12px;
	font-size: 0.85em;
	font-weight: 600;
}

.ts-status-badge.active {
	background: #d4edda;
	color: #155724;
}

.ts-status-badge.inactive {
	background: #f8d7da;
	color: #721c24;
}
