# Cleaning Supervisor (Mobile) — Screen Inventory

> Source: `docs/design/SCREEN_LIST.md` "Cleaning Supervisor (CS)" block (7 role screens, incl. `CS-ASSIGN` per CL-5) + the shared Auth screens (Module 0) the role passes through on login. Surface = Mobile (Flutter) portrait. GZ scope = `own · team`.
> **Clone of the anchor** (`staff-court-monitor-mobile`): same fill→submit flow, different auto-assigned templates (cleaning/hygiene) + slot-2 label ("Cleaning"), **plus the CL-5 `CS-ASSIGN` AllocationBoard in slot 3 (`user-plus`); Roster moves into More.**
> **Pixel target:** the `screens/*.html` mockups at ~390px. **States:** `states/`. **Sheets:** `bottom-sheets/`.

---

## Auth (shared — built in Wave 0, included here as the entry path)

| Screen ID | Screen | Purpose | States / sheets | Mockup |
|---|---|---|---|---|
| `AUTH-LOGIN` | Login | Email/phone + password sign-in | error (bad creds), locked (rate-limited), loading | `screens/01-login.html` |
| `CS-DASH` (router) | Role-resolved Home | Post-login → Cleaning Supervisor Home via `/me` role resolve | loading | `screens/02-dashboard.html` |

> `AUTH-FORGOT / AUTH-OTP / AUTH-RESET / AUTH-LOGOUT / SH-NOTIF / SH-PROFILE` are Wave-0 shared screens; this pack mocks `01-login.html` + a `07-profile.html` to show the role's entry + More-tab landing. The full shared-auth set ships once in Wave 0 and is reused by every role.

## Cleaning Supervisor (CS) — role screens

| # | Screen ID | Screen | Purpose | States / sheets | Mockup |
|---|---|---|---|---|---|
| 1 | `CS-DASH` | Cleaning Supervisor Home | Today's auto-assigned cleaning/hygiene checklists + own shift; due-soon / overdue badges | loading, empty (nothing-assigned), overdue badge | `screens/02-dashboard.html` |
| 2 | `CS-CHK-TODAY` | Today's Checklists | Auto-assigned cleaning/hygiene + zone checklists (e.g. Cleaning / Hygiene — Daily, Washroom Hygiene); status chips | not-started / in-progress / submitted chips, overdue, empty | `screens/03-today-checklists.html` |
| 3 | `CS-CHK-FILL` | Fill Checklist | G/A per item + note + server-time + auto-initials; mandatory completion photo; per-A-item photo; save-draft | G/A toggle, A-photo-required block, draft-saved; sheets: photo-capture, A-note+photo | `screens/04-checklist-fill.html` |
| 4 | `CS-CHK-SUBMIT` | Submit Checklist | Final review + submit (blocked until photos present) | missing-photo block, submit confirm sheet | `screens/05-checklist-submit.html` |
| 5 | `CS-CHK-STATUS` | My Checklist Status | Live cascade status of own submissions (Pending until OH-approved); sent-back re-fill banner | sent-back banner, empty | `screens/06-my-status.html` |
| 6 | `CS-ASSIGN` | Assign Cleaning Work *(CL-5)* | AllocationBoard — allocate cleaning staff to areas/zones (light task-allocation); CS decides who works where + still fills the checklist himself | assigned / unassigned rows, allocate confirm sheet; empty (no staff on shift) | `screens/09-assign.html` |
| 7 | `CS-ROSTER-OWN` | My Roster (under **More**) | Own shifts only (day/week); read-only | day/week toggle, empty | `screens/08-my-roster.html` |
| — | `SH-PROFILE` (More) | Profile / More | Own profile, role, reports-to, cleaning areas; logout | — | `screens/07-profile.html` |

## States (this pack)

| State | File | Where it appears |
|---|---|---|
| Loading (skeleton) | `states/loading.html` | `CS-DASH`, `CS-CHK-TODAY` |
| Empty (nothing assigned) | `states/empty.html` | `CS-CHK-TODAY`, `CS-DASH` |
| Error (generic + retry) | `states/error.html` | any data screen |
| Offline / no-connection retry | `states/offline.html` | fill + submit (in-memory draft preserved) |
| Locked (rate-limited login) | `states/locked.html` | `AUTH-LOGIN` |
| 403 (out-of-scope Game Zone / action) | `states/forbidden.html` | any |

## Bottom sheets (this pack)

| Sheet | File | Trigger |
|---|---|---|
| Photo-capture (Camera / Gallery) | `bottom-sheets/photo-capture.html` | tap a completion-photo tile or A-item camera |
| A-(Action required) note + photo | `bottom-sheets/a-item-note-photo.html` | toggle an item to **A** |
| Confirm submit | `bottom-sheets/confirm-submit.html` | tap Submit on `CS-CHK-SUBMIT` |
| Assign cleaning staff *(CL-5)* | `bottom-sheets/assign-staff.html` | tap "Assign staff" / "Change" on an area row in `CS-ASSIGN` |

---

## Counts

- **8 screens** (1 login + Home + Today + Fill + Submit + Status + **Assign (CL-5)** + Roster, plus a Profile/More landing) — covering the **7** `CS-*` role screens (incl. `CS-ASSIGN`) + the auth entry.
- **6 state variants** · **4 bottom-sheets** (incl. CL-5 assign-staff).
- **Total HTML artifacts in this pack: 9 screens + 6 states + 4 sheets = 19 HTML files** (PNG render is a later step).

> The 3 filler roles (SCM / MON / CS) share the same fill→submit flow. This pack (CS) = the anchor with slot-2 label "Cleaning" + cleaning/hygiene templates, **plus the CL-5 `CS-ASSIGN` AllocationBoard** (slot-3, `user-plus`) — the CS allocates cleaning staff to areas and still fills the checklist himself. SCM is the identical anchor clone for Senior Court Monitor.
