/* ============================================================
	 TRANSGAB RAIL - Styles principaux
	 Thème : Vert Gabon / Moderne / Responsive
	 ============================================================ */

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

/* ============================================================
	 VARIABLES CSS - THÈME CLAIR
	 ============================================================ */
:root {
		--tg-green: #1B5E20;
		--tg-green-light: #2E7D32;
		--tg-green-mid: #388E3C;
		--tg-green-pale: #E8F5E9;
		--tg-yellow: #F9A825;
		--tg-yellow-light: #FFF8E1;
		--tg-blue: #1565C0;
		--tg-red: #C62828;
		--tg-gold: #D4AF37;
		
		--bg-primary: #FFFFFF;
		--bg-secondary: #F8FAF8;
		--bg-card: #FFFFFF;
		--bg-sidebar: #F1F8F1;
		--bg-input: #FFFFFF;
		
		--text-primary: #1A2E1A;
		--text-secondary: #4A5A4A;
		--text-muted: #7A8A7A;
		--text-on-dark: #FFFFFF;
		
		--border-color: #D4E8D4;
		--border-focus: #2E7D32;
		
		--shadow-sm: 0 2px 8px rgba(27,94,32,0.08);
		--shadow-md: 0 4px 20px rgba(27,94,32,0.12);
		--shadow-lg: 0 8px 40px rgba(27,94,32,0.16);
		--shadow-card: 0 2px 12px rgba(0,0,0,0.08);
		
		--navbar-bg: #1B5E20;
		--footer-bg: #0D2E10;
		
		--font-display: 'Sora', sans-serif;
		--font-body: 'Inter', sans-serif;
		
		--transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
		--radius-sm: 10px;
		--radius-md: 16px;
		--radius-lg: 20px;
		--radius-xl: 26px;
}

/* THÈME SOMBRE */
[data-bs-theme="dark"] {
		--bg-primary: #0D1A0D;
		--bg-secondary: #111F11;
		--bg-card: #162016;
		--bg-sidebar: #0F1A0F;
		--bg-input: #1A2A1A;
		
		--text-primary: #E8F5E9;
		--text-secondary: #A5C8A5;
		--text-muted: #6A9A6A;
		
		--border-color: #2A4A2A;
		--border-focus: #4CAF50;
		
		--shadow-sm: 0 2px 8px rgba(0,0,0,0.4);
		--shadow-md: 0 4px 20px rgba(0,0,0,0.5);
		--shadow-lg: 0 8px 40px rgba(0,0,0,0.6);
		--shadow-card: 0 2px 12px rgba(0,0,0,0.4);
		
		--navbar-bg: #0D1A0D;
		--footer-bg: #080F08;
}

/* ============================================================
	 BASE
	 ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
		font-family: var(--font-body);
		background-color: var(--bg-secondary);
		color: var(--text-primary);
		transition: var(--transition);
		min-height: 100vh;
}

h1, h2, h3, h4, h5, h6 {
		font-family: var(--font-display);
		font-weight: 700;
}

a { text-decoration: none; color: var(--tg-green-mid); transition: var(--transition); }
a:hover { color: var(--tg-green); }

/* ============================================================
	 NAVBAR
	 ============================================================ */
.navbar-transgab {
		background: var(--navbar-bg) !important;
		border-bottom: 2px solid rgba(249,168,37,0.3);
		padding: 0.75rem 0;
		box-shadow: 0 2px 20px rgba(0,0,0,0.3);
}

.brand-logo {
		display: flex;
		align-items: center;
		gap: 12px;
		color: white;
}

.brand-logo .fa-train {
		font-size: 1.8rem;
		color: var(--tg-yellow);
		animation: trainPulse 3s ease-in-out infinite;
}

@keyframes trainPulse {
		0%, 100% { transform: translateX(0); }
		50% { transform: translateX(3px); }
}

.brand-name {
		display: block;
		font-family: var(--font-display);
		font-weight: 800;
		font-size: 1.2rem;
		color: white;
		line-height: 1.1;
}

.brand-sub {
		display: block;
		font-size: 0.65rem;
		color: rgba(255,255,255,0.6);
		letter-spacing: 0.05em;
		text-transform: uppercase;
}

.navbar-transgab .nav-link {
		color: rgba(255,255,255,0.85) !important;
		font-weight: 500;
		padding: 0.5rem 1rem !important;
		border-radius: var(--radius-sm);
		transition: var(--transition);
		font-size: 0.9rem;
}

.navbar-transgab .nav-link:hover {
		color: white !important;
		background: rgba(255,255,255,0.1);
}

.btn-theme-toggle {
		background: rgba(255,255,255,0.1);
		border: 1px solid rgba(255,255,255,0.2);
		color: white !important;
		width: 38px;
		height: 38px;
		border-radius: 50%;
		display: flex;
		align-items: center;
		justify-content: center;
		transition: var(--transition);
		padding: 0;
}

.btn-theme-toggle:hover {
		background: rgba(255,255,255,0.2);
		transform: rotate(20deg);
}

/* ============================================================
	 HERO / SEARCH SECTION
	 ============================================================ */
.hero-section {
		background: linear-gradient(135deg, #1B5E20 0%, #2E7D32 40%, #1565C0 100%);
		position: relative;
		padding: 40px 0 80px;
		min-height: 520px;
		display: flex;
		align-items: center;
}

.hero-section::before {
		content: '';
		position: absolute;
		inset: 0;
		background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Ccircle cx='50' cy='50' r='1' fill='rgba(255,255,255,0.05)'/%3E%3C/svg%3E") repeat;
		opacity: 0.5;
}

.hero-section::after {
		content: '';
		position: absolute;
		bottom: -2px;
		left: 0;
		right: 0;
		height: 60px;
		background: var(--bg-secondary);
		clip-path: ellipse(55% 100% at 50% 100%);
}

.hero-title {
		font-family: var(--font-display);
		font-weight: 800;
		font-size: clamp(2rem, 5vw, 3.2rem);
		color: white;
		line-height: 1.15;
		text-shadow: 0 2px 20px rgba(0,0,0,0.2);
}

.hero-subtitle {
		color: rgba(255,255,255,0.85);
		font-size: 1.1rem;
		margin-bottom: 2rem;
}

.hero-badge {
		background: rgba(249,168,37,0.2);
		border: 1px solid rgba(249,168,37,0.4);
		color: var(--tg-yellow);
		padding: 0.3rem 0.8rem;
		border-radius: 20px;
		font-size: 0.8rem;
		font-weight: 600;
		letter-spacing: 0.05em;
		text-transform: uppercase;
		display: inline-block;
		margin-bottom: 1rem;
}

/* ============================================================
	 SEARCH BOX
	 ============================================================ */
.search-card {
		background: var(--bg-card);
		border-radius: var(--radius-lg);
		padding: 2rem;
		box-shadow: var(--shadow-lg);
		border: 1px solid var(--border-color);
		position: relative;
		z-index: 2;
}

.trip-type-tabs .nav-link {
		background: var(--bg-secondary);
		border: 2px solid var(--border-color) !important;
		color: var(--text-secondary);
		border-radius: var(--radius-sm) !important;
		font-weight: 600;
		padding: 0.6rem 1.5rem;
		transition: var(--transition);
}

.trip-type-tabs .nav-link.active {
		background: var(--tg-green) !important;
		border-color: var(--tg-green) !important;
		color: white !important;
}

.trip-type-tabs .nav-link:hover:not(.active) {
		border-color: var(--tg-green-mid) !important;
		color: var(--tg-green);
}

.form-label-custom {
		font-weight: 600;
		font-size: 0.82rem;
		text-transform: uppercase;
		letter-spacing: 0.05em;
		color: var(--text-muted);
		margin-bottom: 0.4rem;
}

.form-control-custom {
		background: var(--bg-input);
		border: 2px solid var(--border-color);
		border-radius: var(--radius-sm);
		color: var(--text-primary);
		padding: 0.7rem 1rem;
		font-size: 0.95rem;
		font-family: var(--font-body);
		transition: var(--transition);
		width: 100%;
}

.form-control-custom:focus {
		outline: none;
		border-color: var(--tg-green-mid);
		box-shadow: 0 0 0 4px rgba(46,125,50,0.12);
		background: var(--bg-card);
}

.swap-btn {
		background: var(--tg-green-pale);
		border: 2px solid var(--border-color);
		color: var(--tg-green);
		width: 42px;
		height: 42px;
		border-radius: 50%;
		display: flex;
		align-items: center;
		justify-content: center;
		cursor: pointer;
		transition: var(--transition);
		flex-shrink: 0;
}

.swap-btn:hover {
		background: var(--tg-green);
		color: white;
		transform: rotate(180deg);
}

[data-bs-theme="dark"] .swap-btn {
		background: rgba(46,125,50,0.2);
}

.btn-search {
		background: linear-gradient(135deg, var(--tg-green) 0%, var(--tg-green-mid) 100%);
		border: none;
		color: white;
		padding: 0.85rem 2.5rem;
		border-radius: var(--radius-sm);
		font-family: var(--font-display);
		font-weight: 700;
		font-size: 1rem;
		letter-spacing: 0.02em;
		transition: var(--transition);
		box-shadow: 0 4px 15px rgba(27,94,32,0.3);
}

.btn-search:hover {
		transform: translateY(-2px);
		box-shadow: 0 8px 25px rgba(27,94,32,0.4);
		color: white;
}

.btn-search:active { transform: translateY(0); }

.passenger-selector {
		background: var(--bg-input);
		border: 2px solid var(--border-color);
		border-radius: var(--radius-sm);
		padding: 0.6rem 1rem;
		cursor: pointer;
		transition: var(--transition);
		display: flex;
		align-items: center;
		justify-content: space-between;
		user-select: none;
}

.passenger-selector:hover {
		border-color: var(--tg-green-mid);
}

/* ============================================================
	 CARTES RÉSULTATS TRAINS
	 ============================================================ */
.train-result-card {
		background: var(--bg-card);
		border: 1px solid var(--border-color);
		border-radius: var(--radius-lg);
		padding: 1.5rem;
		margin-bottom: 1rem;
		transition: var(--transition);
		cursor: pointer;
		position: relative;
		overflow: hidden;
}

.train-result-card::before {
		content: '';
		position: absolute;
		left: 0;
		top: 0;
		bottom: 0;
		width: 4px;
		background: var(--tg-green);
		border-radius: 4px 0 0 4px;
		transition: var(--transition);
}

.train-result-card:hover {
		box-shadow: var(--shadow-md);
		transform: translateY(-2px);
		border-color: var(--tg-green-mid);
}

.train-result-card.selected {
		border-color: var(--tg-green);
		box-shadow: 0 0 0 2px rgba(46,125,50,0.2), var(--shadow-md);
}

.train-result-card.selected::before {
		width: 6px;
		background: linear-gradient(180deg, var(--tg-green), var(--tg-yellow));
}

.train-time {
		font-family: var(--font-display);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--text-primary);
		line-height: 1;
}

.train-station {
		font-size: 0.85rem;
		color: var(--text-muted);
		font-weight: 500;
}

.train-duration-line {
		flex: 1;
		display: flex;
		align-items: center;
		gap: 8px;
		padding: 0 1.5rem;
}

.duration-bar {
		flex: 1;
		height: 2px;
		background: linear-gradient(90deg, var(--tg-green), var(--tg-green-mid));
		position: relative;
		border-radius: 2px;
}

.duration-bar::before,
.duration-bar::after {
		content: '';
		position: absolute;
		top: 50%;
		transform: translateY(-50%);
		width: 8px;
		height: 8px;
		border-radius: 50%;
		background: var(--tg-green);
}

.duration-bar::before { left: 0; }
.duration-bar::after { right: 0; }

.duration-badge {
		background: var(--tg-green-pale);
		color: var(--tg-green);
		padding: 0.25rem 0rem;
		border-radius: 20px;
		font-size: 0.78rem;
		font-weight: 600;
		white-space: nowrap;
		line-height: normal;
}

[data-bs-theme="dark"] .duration-badge {
		background: rgba(46,125,50,0.2);
}

.train-badge {
		display: inline-flex;
		align-items: center;
		gap: 5px;
		background: var(--bg-secondary);
		border: 1px solid var(--border-color);
		border-radius: 20px;
		padding: 0.2rem 0.7rem;
		font-size: 0.75rem;
		font-weight: 600;
		color: var(--text-secondary);
}

.service-icon {
		width: 28px;
		height: 28px;
		border-radius: 50%;
		background: var(--bg-secondary);
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 0.7rem;
		color: var(--text-muted);
		border: 1px solid var(--border-color);
		title: attr(data-title);
}

.service-icon.active {
		background: var(--tg-green-pale);
		color: var(--tg-green);
		border-color: var(--tg-green-light);
}

[data-bs-theme="dark"] .service-icon.active {
		background: rgba(46,125,50,0.2);
		border-color: rgba(46,125,50,0.4);
}

/* ============================================================
	 CLASSES CARDS
	 ============================================================ */
.classe-card {
		border: 2px solid var(--border-color);
		border-radius: var(--radius-md);
		padding: 1.2rem;
		cursor: pointer;
		transition: var(--transition);
		text-align: center;
}

.classe-card:hover {
		border-color: var(--tg-green-mid);
		box-shadow: var(--shadow-sm);
		background-color: var(--tg-green-pale);
}

.classe-card.selected {
		border-color: #D4AF37;
		background: #FFF8E1;
		box-shadow: 0 0 0 3px rgba(212,175,55,0.2);
}

[data-bs-theme="dark"] .classe-card.selected {
		background: rgba(212,175,55,0.1);
}

.classe-1ere .classe-card.selected { border-color: #D4AF37; }
.classe-2eme .classe-card.selected { border-color: #4A90D9; background: #E3F2FD; }
.classe-3eme .classe-card.selected { border-color: #6C757D; background: #F8F9FA; }

[data-bs-theme="dark"] .classe-2eme .classe-card.selected,
[data-bs-theme="dark"] .classe-3eme .classe-card.selected {
		background: rgba(74,144,217,0.1);
}

/* ============================================================
	 STEPPER RÉSERVATION
	 ============================================================ */
.stepper {
		display: flex;
		align-items: center;
		gap: 0;
		margin-bottom: 2rem;
		overflow-x: auto;
		padding-bottom: 5px;
}

.step {
		display: flex;
		align-items: center;
		flex: 1;
		min-width: 80px;
}

.step-circle {
		width: 40px;
		height: 40px;
		border-radius: 50%;
		background: var(--bg-secondary);
		border: 2px solid var(--border-color);
		display: flex;
		align-items: center;
		justify-content: center;
		font-weight: 700;
		font-size: 0.9rem;
		color: var(--text-muted);
		transition: var(--transition);
		flex-shrink: 0;
		position: relative;
		z-index: 1;
}

.step-label {
		font-size: 0.75rem;
		font-weight: 600;
		color: var(--text-muted);
		text-align: center;
		margin-top: 0.3rem;
		white-space: nowrap;
}

.step-connector {
		flex: 1;
		height: 2px;
		background: var(--border-color);
		margin: 0 -5px;
		transition: var(--transition);
}

.step.active .step-circle {
		background: var(--tg-green);
		border-color: var(--tg-green);
		color: white;
		box-shadow: 0 0 0 4px rgba(46,125,50,0.15);
}

.step.active .step-label { color: var(--tg-green); }

.step.completed .step-circle {
		background: var(--tg-green);
		border-color: var(--tg-green);
		color: white;
}

.step.completed .step-connector {
		background: var(--tg-green);
}

/* ============================================================
	 BILLET ÉLECTRONIQUE
	 ============================================================ */
.e-ticket {
		background: var(--bg-card);
		border: 2px solid var(--tg-green);
		border-radius: var(--radius-lg);
		overflow: hidden;
		max-width: 760px;
		margin: 0 auto;
		box-shadow: var(--shadow-lg);
}

.ticket-header {
		background: linear-gradient(135deg, #1B5E20 0%, #2E7D32 60%, #1565C0 100%);
		padding: 1.5rem 2rem;
		color: white;
}

.ticket-ref {
		font-family: var(--font-display);
		font-size: 1.5rem;
		font-weight: 800;
		letter-spacing: 0.1em;
		color: var(--tg-yellow);
}

.ticket-body {
		padding: 1.5rem 2rem;
}

.ticket-divider {
		position: relative;
		height: 30px;
		display: flex;
		align-items: center;
		margin: 1rem -2rem;
}

.ticket-divider::before,
.ticket-divider::after {
		content: '';
		flex: 1;
		height: 1px;
		border-top: 2px dashed var(--border-color);
}

.ticket-divider::before { margin-right: -15px; }
.ticket-divider::after { margin-left: -15px; }

.ticket-divider .circle {
		width: 30px;
		height: 30px;
		border-radius: 50%;
		background: var(--bg-secondary);
		border: 2px solid var(--border-color);
		flex-shrink: 0;
		z-index: 1;
}

.ticket-footer {
		background: var(--bg-secondary);
		padding: 1rem 2rem;
		border-top: 2px dashed var(--border-color);
}

.qr-code-placeholder {
		width: 100px;
		height: 100px;
		background: white;
		border: 2px solid var(--border-color);
		border-radius: var(--radius-sm);
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 3rem;
		color: var(--tg-green);
}

/* ============================================================
	 ADMIN LAYOUT
	 ============================================================ */
.admin-layout {
		display: flex;
		min-height: calc(100vh - 70px);
}

.admin-sidebar {
		width: 260px;
		background: var(--bg-sidebar);
		border-right: 1px solid var(--border-color);
		flex-shrink: 0;
		padding: 1.5rem 0;
		position: sticky;
		top: 70px;
		height: calc(100vh - 70px);
		overflow-y: auto;
}

.admin-main {
		flex: 1;
		padding: 1.5rem;
		overflow-x: hidden;
}

.sidebar-brand {
		padding: 0 1.5rem 1.5rem;
		border-bottom: 1px solid var(--border-color);
		margin-bottom: 1rem;
}

.sidebar-brand h6 {
		color: var(--text-muted);
		font-size: 0.7rem;
		text-transform: uppercase;
		letter-spacing: 0.1em;
		margin: 0;
}

.sidebar-nav-group {
		margin-bottom: 0.5rem;
}

.sidebar-nav-group-label {
		padding: 0.4rem 1.5rem;
		font-size: 0.68rem;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.1em;
		color: var(--text-muted);
}

.sidebar-nav-link {
		display: flex;
		align-items: center;
		gap: 10px;
		padding: 0.6rem 1.5rem;
		color: var(--text-secondary);
		font-size: 0.88rem;
		font-weight: 500;
		transition: var(--transition);
		border-left: 3px solid transparent;
}

.sidebar-nav-link:hover {
		background: var(--tg-green-pale);
		color: var(--tg-green);
		border-left-color: var(--tg-green);
}

[data-bs-theme="dark"] .sidebar-nav-link:hover {
		background: rgba(46,125,50,0.15);
}

.sidebar-nav-link.active {
		background: var(--tg-green-pale);
		color: var(--tg-green);
		border-left-color: var(--tg-green);
		font-weight: 600;
}

[data-bs-theme="dark"] .sidebar-nav-link.active {
		background: rgba(46,125,50,0.2);
}

.sidebar-nav-link .fa {
		width: 18px;
		text-align: center;
		font-size: 0.9rem;
}

/* ============================================================
	 CARDS & STATS
	 ============================================================ */
.stat-card {
		background: var(--bg-card);
		border: 1px solid var(--border-color);
		border-radius: var(--radius-lg);
		padding: 1.5rem;
		display: flex;
		align-items: center;
		gap: 1rem;
		transition: var(--transition);
}

.stat-card:hover {
		box-shadow: var(--shadow-sm);
		transform: translateY(-1px);
}

.stat-icon {
		width: 52px;
		height: 52px;
		border-radius: var(--radius-md);
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 1.3rem;
		flex-shrink: 0;
}

.stat-icon.green { background: #E8F5E9; color: #2E7D32; }
.stat-icon.blue { background: #E3F2FD; color: #1565C0; }
.stat-icon.orange { background: #FFF3E0; color: #E65100; }
.stat-icon.red { background: #FFEBEE; color: #C62828; }
.stat-icon.gold { background: #FFF8E1; color: #F57F17; }
.stat-icon.purple { background: #F3E5F5; color: #6A1B9A; }

[data-bs-theme="dark"] .stat-icon.green { background: rgba(46,125,50,0.2); }
[data-bs-theme="dark"] .stat-icon.blue { background: rgba(21,101,192,0.2); }
[data-bs-theme="dark"] .stat-icon.orange { background: rgba(230,81,0,0.2); }
[data-bs-theme="dark"] .stat-icon.red { background: rgba(198,40,40,0.2); }
[data-bs-theme="dark"] .stat-icon.gold { background: rgba(245,127,23,0.2); }

.stat-value {
		font-family: var(--font-display);
		font-size: 1.8rem;
		font-weight: 800;
		color: var(--text-primary);
		line-height: 1;
}

.stat-label {
		font-size: 0.8rem;
		color: var(--text-muted);
		margin-top: 0.2rem;
}

/* ============================================================
	 TABLES ADMIN
	 ============================================================ */
.admin-table-card {
		background: var(--bg-card);
		border: 1px solid var(--border-color);
		border-radius: var(--radius-lg);
		overflow: hidden;
}

.admin-table-header {
		padding: 1.2rem 1.5rem;
		border-bottom: 1px solid var(--border-color);
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1rem;
		flex-wrap: wrap;
}

.admin-table-header h5 {
		margin: 0;
		font-size: 1rem;
}

.table-admin {
		margin: 0;
		font-size: 0.88rem;
}

.table-admin th {
		background: var(--bg-secondary);
		font-weight: 700;
		font-size: 0.75rem;
		text-transform: uppercase;
		letter-spacing: 0.05em;
		color: var(--text-muted);
		border-bottom: 1px solid var(--border-color) !important;
		padding: 0.8rem 1rem;
		white-space: nowrap;
}

.table-admin td {
		padding: 0.9rem 1rem;
		vertical-align: middle;
		border-bottom: 1px solid var(--border-color);
		color: var(--text-primary);
}

.table-admin tbody tr:hover td {
		background: var(--bg-secondary);
}

/* ============================================================
	 BADGES STATUS
	 ============================================================ */
.badge-status {
		padding: 0.3rem 0.7rem;
		border-radius: 20px;
		font-size: 0.72rem;
		font-weight: 600;
		text-transform: uppercase;
		letter-spacing: 0.04em;
}

.badge-status.payee, .badge-status.confirmee { background: #E8F5E9; color: #2E7D32; }
.badge-status.en_attente { background: #FFF3E0; color: #E65100; }
.badge-status.annulee { background: #FFEBEE; color: #C62828; }
.badge-status.programme { background: #E3F2FD; color: #1565C0; }
.badge-status.en_cours { background: #E8F5E9; color: #2E7D32; }
.badge-status.termine { background: var(--bg-secondary); color: var(--text-muted); }

[data-bs-theme="dark"] .badge-status.payee,
[data-bs-theme="dark"] .badge-status.confirmee { background: rgba(46,125,50,0.2); }
[data-bs-theme="dark"] .badge-status.en_attente { background: rgba(230,81,0,0.2); }
[data-bs-theme="dark"] .badge-status.annulee { background: rgba(198,40,40,0.2); }
[data-bs-theme="dark"] .badge-status.programme { background: rgba(21,101,192,0.2); }

/* ============================================================
	 PAIEMENT
	 ============================================================ */
.payment-method-card {
		border: 2px solid var(--border-color);
		border-radius: var(--radius-md);
		padding: 1rem;
		cursor: pointer;
		transition: var(--transition);
		display: flex;
		align-items: center;
		gap: 12px;
}

.payment-method-card:hover {
		border-color: var(--tg-green-mid);
		background: var(--tg-green-pale);
}

[data-bs-theme="dark"] .payment-method-card:hover {
		background: rgba(46,125,50,0.1);
}

.payment-method-card.selected {
		border-color: var(--tg-green);
		background: var(--tg-green-pale);
		box-shadow: 0 0 0 3px rgba(46,125,50,0.15);
}

.payment-method-card input[type="radio"] { display: none; }

.payment-icon {
		width: 48px;
		height: 48px;
		border-radius: var(--radius-sm);
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 1.4rem;
		background: var(--bg-secondary);
		flex-shrink: 0;
}
.payment-icon .profile-image {
		max-width: 100%;
		height: auto;
		display: block;
}

/* ============================================================
	 FOOTER
	 ============================================================ */
.footer-transgab {
		background: var(--footer-bg);
		padding: 3rem 0 0;
}

.footer-title {
		color: white;
		font-weight: 700;
		margin-bottom: 1rem;
		font-family: var(--font-display);
}

.footer-links {
		list-style: none;
		padding: 0;
		margin: 0;
}

.footer-links li {
		margin-bottom: 0.5rem;
		color: rgba(255,255,255,0.6);
		font-size: 0.88rem;
}

.footer-links li a {
		color: rgba(255,255,255,0.6);
		transition: var(--transition);
}

.footer-links li a:hover {
		color: var(--tg-yellow);
}

.social-links { display: flex; gap: 10px; }

.social-link {
		width: 36px;
		height: 36px;
		border-radius: 50%;
		background: rgba(255,255,255,0.1);
		display: flex;
		align-items: center;
		justify-content: center;
		color: white;
		transition: var(--transition);
		font-size: 0.85rem;
}

.social-link:hover {
		background: var(--tg-yellow);
		color: #333;
		transform: translateY(-3px);
}

.payment-badges { display: flex; flex-wrap: wrap; gap: 6px; }

.payment-badge {
		background: rgba(255,255,255,0.08);
		border: 1px solid rgba(255,255,255,0.15);
		color: rgba(255,255,255,0.8);
		padding: 0.25rem 0.6rem;
		border-radius: 20px;
		font-size: 0.75rem;
		font-weight: 500;
}

.footer-divider {
		border-color: rgba(255,255,255,0.1);
		margin: 2rem 0 1rem;
}

.footer-bottom {
		padding-bottom: 1.5rem;
}

.footer-bottom a {
		color: rgba(255,255,255,0.5);
		transition: var(--transition);
}

.footer-bottom a:hover { color: var(--tg-yellow); }

/* ============================================================
	 FLASH ALERT
	 ============================================================ */
.alert-flash {
		border-radius: 0;
		border: none;
		border-bottom: 1px solid rgba(0,0,0,0.1);
		margin: 0;
}

/* ============================================================
	 FORMS GENERAUX
	 ============================================================ */
.form-section-card {
		background: var(--bg-card);
		border: 1px solid var(--border-color);
		border-radius: var(--radius-lg);
		padding: 1.5rem;
		margin-bottom: 1.5rem;
}

.section-card-title {
		font-family: var(--font-display);
		font-weight: 700;
		font-size: 1rem;
		color: var(--text-primary);
		margin-bottom: 1.2rem;
		padding-bottom: 0.8rem;
		border-bottom: 1px solid var(--border-color);
		display: flex;
		align-items: center;
		gap: 8px;
}

/* ============================================================
	 RESPONSIVE
	 ============================================================ */
@media (max-width: 768px) {
		.admin-sidebar {
				position: fixed;
				left: -260px;
				z-index: 1040;
				height: 100vh;
				transition: var(--transition);
		}
		
		.admin-sidebar.show { left: 0; }
		
		.admin-main { padding: 1rem; }
		
		.train-time { font-size: 1.3rem; }
		
		.e-ticket .ticket-header { padding: 1rem; }
		.e-ticket .ticket-body { padding: 1rem; }
		
		.hero-section { padding: 50px 0 40px; }
		
		.search-card { padding: 1.2rem; border-radius: var(--radius-lg); }
}

@media (max-width: 576px) {
		.train-duration-line { padding: 0 0.5rem; }
		.stepper { gap: 0; }
		.step-label { font-size: 0.65rem; }
}

/* ============================================================
	 ANIMATIONS
	 ============================================================ */
.fade-in {
		animation: fadeIn 0.4s ease forwards;
}

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

.slide-in {
		animation: slideIn 0.3s ease forwards;
}

@keyframes slideIn {
		from { opacity: 0; transform: translateX(-20px); }
		to { opacity: 1; transform: translateX(0); }
}

/* Skeleton loading */
.skeleton {
		background: linear-gradient(90deg, var(--border-color) 25%, var(--bg-secondary) 50%, var(--border-color) 75%);
		background-size: 200% 100%;
		animation: skeleton 1.5s infinite;
		border-radius: 4px;
}

@keyframes skeleton {
		0% { background-position: 200% 0; }
		100% { background-position: -200% 0; }
}

/* Arrêts timeline */
.stops-timeline {
		position: relative;
		padding-left: 1.5rem;
}

.stops-timeline::before {
		content: '';
		position: absolute;
		left: 8px;
		top: 8px;
		bottom: 8px;
		width: 2px;
		background: linear-gradient(180deg, var(--tg-green), var(--border-color));
}

.stop-item {
		position: relative;
		padding: 0.5rem 0 0.5rem 1.2rem;
}

.stop-dot {
		position: absolute;
		left: -0.35rem;
		top: 50%;
		transform: translateY(-50%);
		width: 14px;
		height: 14px;
		border-radius: 50%;
		background: white;
		border: 2px solid var(--tg-green);
}

.stop-dot.major {
		width: 18px;
		height: 18px;
		left: -0.55rem;
		background: var(--tg-green);
}

[data-bs-theme="dark"] .stop-dot { background: var(--bg-card); }

/* Scrollbar custom */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--bg-secondary); }
::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: var(--tg-green-mid); }

/* Override Bootstrap forms for dark mode */
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select,
[data-bs-theme="dark"] .input-group-text {
		background-color: var(--bg-input);
		border-color: var(--border-color);
		color: var(--text-primary);
}

[data-bs-theme="dark"] .form-control:focus,
[data-bs-theme="dark"] .form-select:focus {
		background-color: var(--bg-input);
		border-color: var(--tg-green-mid);
		color: var(--text-primary);
}

[data-bs-theme="dark"] .table {
		--bs-table-bg: var(--bg-card);
		--bs-table-striped-bg: var(--bg-secondary);
		--bs-table-hover-bg: rgba(46,125,50,0.08);
		--bs-table-border-color: var(--border-color);
		color: var(--text-primary);
}

[data-bs-theme="dark"] .modal-content {
		background: var(--bg-card);
		border-color: var(--border-color);
}

[data-bs-theme="dark"] .dropdown-menu {
		background: var(--bg-card);
		border-color: var(--border-color);
}

[data-bs-theme="dark"] .dropdown-item {
		color: var(--text-primary);
}

[data-bs-theme="dark"] .dropdown-item:hover {
		background: var(--bg-secondary);
		color: var(--tg-green);
}
