换班申请页
选择要换的班次和目标同事;填写换班原因;点击'提交申请'后进入待确认状态
```
```css
/* Mini-screen shapes */
.mini-status-bar {
height: 6%; display: flex; align-items: center; justify-content: space-between;
padding: 0 8px; font-size: 6px; font-weight: 600;
}
.mini-header { padding: 4px 8px; }
.mini-page-title { font-size: 9px; font-weight: 700; }
.mini-content { padding: 6px 8px; flex: 1; }
.mini-card {
height: 40px; border-radius: 6px;
background: var(--surface-2, #f0f0f0); margin-bottom: 6px;
}
.mini-button {
height: 24px; border-radius: 12px;
background: var(--accent, #333); color: #fff;
display: flex; align-items: center; justify-content: center;
font-size: 7px; font-weight: 600; /* MUST have text label */
}
.mini-form-field {
height: 16px; background: var(--surface-2, #f0f0f0);
border-radius: 4px; margin-bottom: 4px;
}
.mini-list-row {
height: 12px; width: 80%; background: var(--surface-2, #eee);
border-radius: 3px; margin-bottom: 4px;
}
.mini-tab-bar {
position: absolute; bottom: 0; left: 0; right: 0;
height: 7%; display: flex; justify-content: space-around;
align-items: center; font-size: 6px;
border-top: 1px solid var(--border, #e5e5e5);
}
```
**Rules:**
- `.flow-node`: no border/shadow/background (invisible wrapper, width = visual width)
- `.flow-node-visual`: the only bordered element (device chrome, border-radius 12px). **Must have `position: relative`** so pinned children can anchor to it.
- **Buttons and CTAs inside mini-screen MUST contain their text label** — never a blank color block
- Non-critical content (list rows, cards without key actions) may use blank shape blocks
- All elements' relative position must match the prototype screen
- **Pinned elements**: any element that uses `position: fixed / sticky / absolute; bottom: 0` in the prototype (tab bars, cart bars, checkout footers, FABs) → use `position: absolute; bottom: 0; left: 0; right: 0;` inside `flow-node-visual`. Same logic for top-pinned elements (`top: 0`). They must NOT appear in normal document flow below scrollable content.
### 4.8 Arrows (labels mandatory)
**Default implementation — arrow as flex item between nodes** (robust, no coordinate math):
```html