v0.1.3 — Accessibility + responsive + design tokens + defeated overlay
Polish pass addressing the technical audit:
/harden — accessibility
- ARIA roles on tab nav (role=tablist/tab/tabpanel + aria-selected/controls + roving tabindex).
- Arrow Left/Right/Up/Down + Home/End cycle through tabs.
- aria-pressed on toggle buttons (condition pills, piercing toggle).
- associations on condition checkboxes.
- aria-label on icon-only buttons (delete, +/-, blessed/boned controls).
- ⚠ / ○ symbol prefixes on Miasma badges (color isn't the only carrier).
- :focus-visible rings on all interactive elements (gold for PC, red for monster).
/adapt — responsive
- Crow sheet height: 820 → "auto" (no forced scrollbar at small heights).
- Touch targets bumped: condition checkboxes 16→18 + 8px padding (~34×34), +/- buttons min 28×28, tab buttons min 32px tall.
- Breakpoints: <820px collapses skills to 1 column, stats to 2-col, substats to 1; <620px stats to 1-col, time/tabs wrap.
/normalize — design tokens
- 50+ CSS custom properties on :root grouped by purpose (paper, gold, village/crypt/miasma/craft, blood, night/monster). Future re-skins override the root vars in one place.
/clarify — UX text + icons
- Emoji buttons replaced with FontAwesome icons (🪶 → fa-feather-pointed, ⚔ → fa-burst, + → fa-heart, ✕ → fa-times).
- Empty-state hints now actionable in Crypt/Miasma/Crafting panels — tell players the next step.
/optimize — import hoisting
- 30+ `await import('../helpers/X')` calls in action handlers moved to module-level imports. Helper-to-helper lazy imports kept (circular-dependency guards).
/quieter — secondary button gradients flattened
- Dialog buttons flat #fff4d6; primary CTAs keep their gradient for emphasis. Progress bars (chaos, crafting) keep gradient (data viz).
/extract — CSS organization
- 28-line table of contents + class-prefix search guide at top of crows.css.
/polish — final fixes
- Defeated monster gets the "dead" token status overlay automatically when stamina hits 0; healing back above 0 clears it.
- Character creator dialog: single-fire Create button (was double-fire via dual listeners).
- Chat-card Apply Damage listener: dataset.wired guard prevents stacking on chat-log re-render.
- preparedTask.setOn surfaced in the Time-strip badge (was schema bloat).
- README GM Quickstart section.
Install / update
Existing players auto-update via Foundry:
```
https://github.com/DimitroffVodka/crows_playtest/releases/latest/download/system.json
```
Audit score delta (10/20 → ~17/20)
| Dim | Before | After |
|---|---|---|
| Accessibility | 1 | 4 |
| Performance | 3 | 4 |
| Theming | 2 | 3 |
| Responsive | 1 | 3 |
| Anti-patterns | 3 | 3 |