:root {
    --primary: #1a5ca3;
    --accent: #ff914d;
    --available: #ffffff;
    --occupied: #e74c3c;
    --selected: #2ecc71;
    --dark: #2c3e50;
    --bg: #f4f7f9;
}

body { font-family: 'Segoe UI', sans-serif; background: var(--bg); margin: 0; }
nav { background: #fff; padding: 15px 5%; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
.logo { font-weight: 900; color: var(--primary); text-decoration: none; font-size: 1.4rem; }

.main-grid { display: grid; grid-template-columns: 1fr 350px; gap: 20px; max-width: 1200px; margin: 30px auto; padding: 0 15px; }

.bus-card { background: #fff; border-radius: 15px; padding: 20px; text-align: center; box-shadow: 0 5px 15px rgba(0,0,0,0.05); }
.bus-container { background: #dfe6e9; width: 220px; margin: 20px auto; border-radius: 40px 40px 10px 10px; padding: 40px 15px; border: 4px solid #b2bec3; }

/* REGLA CRÍTICA PARA EL MAPA */
.bus-grid { 
    display: grid; 
    grid-template-columns: 45px 45px 20px 45px; 
    gap: 10px; 
    justify-content: center; 
}

.asiento { 
    width: 45px; height: 45px; background: var(--available); border: 1px solid #ccc; 
    border-radius: 8px; display: flex; align-items: center; justify-content: center; 
    cursor: pointer; font-weight: bold; font-size: 0.8rem;
}
.asiento.selected { background: var(--selected); color: #fff; border-color: #27ae60; }
.asiento.occupied { background: var(--occupied); color: #fff; cursor: not-allowed; opacity: 0.6; }
.driver { background: var(--dark); color: #fff; cursor: default; }
.pasillo { width: 20px; }
.vacio { width: 45px; visibility: hidden; }

.form-card { background: #fff; border-radius: 15px; padding: 25px; box-shadow: 0 5px 15px rgba(0,0,0,0.05); }
.form-group { margin-bottom: 15px; }
label { font-size: 0.75rem; font-weight: bold; color: var(--primary); display: block; margin-bottom: 5px; text-transform: uppercase; }
input, select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }

.price-display { background: var(--dark); color: #fff; padding: 20px; border-radius: 12px; text-align: center; margin: 20px 0; }
.price-display span { font-size: 2rem; display: block; color: var(--selected); font-weight: bold; }

.btn-action { width: 100%; padding: 15px; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; margin-bottom: 10px; transition: 0.3s; }
.btn-cash { background: var(--selected); color: white; }

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