# v12.3.4 — Interactive table setup, coloured active tabs, steadier layout

**Restaurant & tables (Settings → Application mode & POS)**
- Tables are set up visually: each *area* is a box, each table a tile. Tap a tile to rename it, set seats (− / + stepper and 2·4·6·8 chips), move it to another area, shift it earlier/later, duplicate or remove it.
- On a computer, drag tiles to reorder them or drop them onto another area.
- *+ Table* adds the next name automatically (T5 → T6). *Add several* creates a run (T1…T10, seats each) inside that area. *+ Add area* creates a new box. Area names are edited in place; renaming an area to an existing one merges them. Areas keep their on-screen order.
- Live summary (tables · seats · areas), duplicate / empty names are flagged as you type; saving jumps straight to the first problem.
- Data format is unchanged (no database or server change). An area exists once it has a table.

**Active tabs**
- Stocking Plans (and every `section-tabs` bar) now shows the active tab with a tinted background and a coloured underline — the old underline was clipped by the scrolling container. Same tint for Settings tabs and the segmented tab rows.

**Layout shifts fixed**
- Selecting a tab / segment no longer changes its size (bold weight, 2px→3px border and the “✓ ” prefix used to).
- Google Fonts load from `<link>` with preconnect instead of a blocking `@import`; metric-matched fallback faces keep text from reflowing when the font swaps in.
- `scrollbar-gutter: stable` — page no longer jumps sideways when a view gets a scrollbar.
- The app shell fades in once the user and permissions are known (menu items and permission-gated buttons no longer pop in and push things down); 4s safety timeout.
- Tables and "Loading…" blocks reserve a minimum height so lists don't collapse then expand.

Files: `public/js/pos.js`, `public/js/app.js`, `public/css/pos.css`, `public/css/style.css`, `public/dashboard.html`, `public/index.html`, `public/sw.js` (cache v36).

## 12.3.4.1
- **✓ no longer overlaps labels** — the selected-state tick (Takeaway/Dine-in, %/Rs., All/Today/7 days…) now has its own reserved slot in every button (invisible until selected), so it can't sit on top of the text, and selecting never changes a button's width.
