# Monthly Ticket Overview Page (`tickets/YYYY-MM.html`)

## User-corrected visual contract

The CHETS ticket-month page uses compact tiles. Preserve this layout when regenerating `tickets/YYYY-MM.html`:

- Small date/day number at the **top-left**.
- Small weekday under the date.
- Small controller names + counts in the middle-left (`Зозуля 1`, `Пісоцька 2`, etc.).
- Large red daily total at the **bottom-right**.

This was explicitly corrected by the user after a stale deploy reverted to centered tiles.

## Required HTML shape

```html
<a class="day-tile" href="/tickets/01.05.26.html">
  <span class="tile-date">1</span>
  <span class="tile-weekday">Пт</span>
  <div class="tile-people">
    <span class="tile-person">Зозуля 1</span>
    <span class="tile-person">Пісоцька 2</span>
  </div>
  <span class="tile-count">5</span>
</a>
```

Days with zero tickets may omit `tile-people` but must still show the date, weekday, and `tile-count` = `0`.

## Required CSS shape

```css
.day-tile{display:flex;min-height:82px;border:1px solid #d8dee9;border-radius:12px;background:#fff;text-decoration:none;color:#1f2937;box-shadow:0 2px 7px rgba(0,0,0,.05);padding:8px 10px;position:relative}
.day-tile.weekend{background:#f7f7f7}
.tile-date{font-size:13px;font-weight:900;position:absolute;top:6px;left:8px;color:#475467}
.tile-weekday{font-size:10px;color:#98a2b3;position:absolute;top:20px;left:8px;font-weight:700}
.tile-people{display:flex;flex-direction:column;gap:1px;margin-top:34px;margin-right:50px;font-size:9px;font-weight:600;color:#374151;line-height:1.2;overflow:hidden}
.tile-person{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile-count{font-size:28px;font-weight:900;color:#d92d20;position:absolute;bottom:6px;right:10px;line-height:1}
```

## Verification

Before deploying:

```bash
python3 - <<'PY'
from pathlib import Path
p = Path('/opt/data/vercel-project/tickets/2026-05.html')
s = p.read_text(encoding='utf-8')
print('desired layout:', 'position:relative' in s and 'font-size:28px' in s and 'tile-people' in s)
print('people snippets:', s.count('tile-person'))
print(s[s.find('class="day-tile'):s.find('class="day-tile')+450])
PY
```

If `/tmp/schedule_site/vercel-project/tickets/YYYY-MM.html` has the desired layout but `/opt/data/vercel-project/tickets/YYYY-MM.html` does not, copy the file into `/opt/data/vercel-project/tickets/` before deployment.
