# MTG Python Deckbuilder v4.3.1

## Summary
Adds Smart Land Bases — automatic land count and mana-base profile selection driven by the commander's CMC and color-pip density, with no configuration required.

## Added

### Smart Land Bases
When `ENABLE_SMART_LANDS=1` (default in Docker), the builder analyzes the commander profile at build time and automatically selects a land count, mana-base profile, and ETB tapped tolerance suited to the deck's speed and color complexity.

**Speed detection**
Commander CMC is used to classify the deck as fast (< 3.0), mid, or slow (> 4.0). The user's configured ideal land count is offset accordingly:
- Fast: −2 lands
- Mid: ±0
- Slow: +2 to +4, scaling with color count

**Profile selection**
Three mana-base profiles determine the ratio of basics to non-basics and the ETB tapped tolerance:
- *Basics-heavy* (~60% basics) — 1–2 color decks or low pip density
- *Balanced* — 2–3 colors with moderate pip density (standard)
- *Fixing-heavy* — 3+ colors or high pip density (≥15 double-pip or ≥3 triple-or-more-pip cards); minimizes basics in favor of duals and fetches

**ETB tapped tolerance**
Automatically tightened for fast decks (fewer taplands allowed) and loosened for slow decks, so the land selection step reinforces the speed profile.

**Budget override**
When Budget Mode is active with a low cap and 3+ colors, the profile is automatically forced to basics-heavy to avoid recommending expensive fetch/shock lands the deck cannot afford.

**Slot earmarking**
After the land target is set, non-land ideal counts (creatures, ramp, removal, wipes, card draw, protection) are scaled proportionally to fit within the remaining slots. This prevents the spell-fill phases from consuming slots reserved for lands.

**Backfill**
A final land step (Step 9) pads the deck with basics if any land phase fell short, guaranteeing the deck reaches the configured land target. A swap mechanism handles the 100-card safety clamp so backfill basics are never silently trimmed.

**Smart Lands notice**
The Land Summary section in the build output explains the chosen profile, land target, and reasoning in plain English.

**Overrides**
- `LAND_PROFILE=basics|mid|fixing` — force a specific profile, bypassing auto-detection
- `LAND_COUNT=<n>` — force a specific land count, bypassing curve calculation
