## Implementation Plan: Add Loading/In-Progress Animations to Post Action Buttons
### Overview
Connect the three layers (CSS, templates, JS) that are currently missing for post action buttons.
The existing `btn-spinner` + `is-loading` pattern is the intended design — we will extend it to the unmodified buttons.
### Step 1 – CSS
**File:** `devplacepy/static/css/base.css` (or the file containing `.btn.is-loading` and `.btn-spinner`)
Add selectors for all missing button classes so that `.is-loading` triggers `pointer-events: none` and shows the spinner child.
```css
/* Existing pattern: .btn.is-loading .btn-spinner ... */
/* Add these new rules: */
.post-action-btn.is-loading,
.comment-vote-btn.is-loading,
.comment-action-btn.is-loading,
.vote-star.is-loading,
.comment-form-submit.is-loading {
pointer-events: none;
opacity: 0.7; /* optional: visual readonly cue */
}
```
(If the CSS for `.btn.is-loading` already sets `pointer-events: none; position: relative;` you may not need to repeat – just ensure the spinner is visible. Verify that `.btn-spinner` is positioned correctly inside these buttons; if not, add a generic rule `.is-loading > .btn-spinner { display: inline-block; }`.)
### Step 2 – Templates
Insert `` before the text label in every button listed in the investigation report.
The following templates need modification (paths relative to `devplacepy/templates/`):
| Template file | Button class / selector | Spinner insertion point |
|---------------|------------------------|--------------------------|
| `votes/_star_vote.html` | `.vote-star` | Inside `