To solve this optimization problem, we first need to define the decision variables and the objective function. Let's denote the number of rafts as \(R\) and the number of kayaks as \(K\). The objective is to maximize profit, which is calculated as \(45R + 55K\), given the constraints on space, budget, and the percentage of rafts.

1. **Space Constraint**: Each raft takes 10 sq ft, and each kayak takes 12 sq ft. The total available space is 400 sq ft. So, the constraint can be written as \(10R + 12K \leq 400\).

2. **Budget Constraint**: The budget is $10,000, with rafts costing $200 each and kayaks costing $250 each. Thus, the budget constraint is \(200R + 250K \leq 10000\).

3. **Percentage of Rafts Constraint**: At least 55% of all items must be rafts. This can be represented as \(R \geq 0.55(R + K)\), which simplifies to \(R \geq 1.22K\) or, rearranged for clarity in the context of our model, \(R - 1.22K \geq 0\). However, for simplicity and clarity in modeling, we'll ensure this constraint is properly accounted for in a way that aligns with linear programming conventions.

Given these constraints, the problem can be formulated as a linear program aimed at maximizing profit. Here's how we translate this into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Sports_Warehouse_Optimization")

# Define decision variables
R = m.addVar(vtype=GRB.INTEGER, name="Rafts")
K = m.addVar(vtype=GRB.INTEGER, name="Kayaks")

# Objective function: Maximize profit
m.setObjective(45*R + 55*K, GRB.MAXIMIZE)

# Constraints
m.addConstr(10*R + 12*K <= 400, "Space_Constraint")
m.addConstr(200*R + 250*K <= 10000, "Budget_Constraint")

# Ensure at least 55% of items are rafts
m.addConstr(R >= 0.55*(R + K), "Raft_Percentage_Constraint")

# Solve the model
m.optimize()

# Print results
for v in m.getVars():
    print(f"{v.varName}: {v.x}")
print(f"Objective (Max Profit): {m.objVal}")

```