diff --git a/docs/custom-cli.md b/docs/custom-cli.md
index 8150e0de..4469651c 100644
--- a/docs/custom-cli.md
+++ b/docs/custom-cli.md
@@ -124,6 +124,7 @@ Notes:
- commands run with the same care as if you typed them into the repeater CLI directly
- this is intended for local admin use on a trusted network
- `start ota` releases the local HTTP redirect listener on port `80` so the OTA HTTP listener can take over without stopping the rest of the repeater services, regardless of whether the command is run from the web panel, serial CLI, or a remote companion/app CLI session
+- the `/app` Regions shortcut runs the existing MeshCore region commands in sequence: `region put au`, `region put au-STATE`, `region allowf au`, `region allowf au-STATE`, then `region save`
## Companion WiFi Rescue Commands
diff --git a/docs/web-panel.md b/docs/web-panel.md
index 18107ebd..3eb2d7ba 100644
--- a/docs/web-panel.md
+++ b/docs/web-panel.md
@@ -166,6 +166,10 @@ Notes:
- the refresh buttons load the current value from the repeater
- the save buttons send the matching CLI command immediately
+## Radio Settings And Regions
+
+The `Radio Settings` section includes the community radio preset selector, path hash mode, and a `Region (Australia)` dropdown derived from the state groups used by the MQTT IATA selector. The dropdown is preselected only when the repeater already has a matching allowed `au-STATE` region. Pressing the region `Save` button creates and allows the base `au` region plus the selected state region, then persists the region map with `region save`.
+
## Info
This section shows:
diff --git a/src/helpers/web/WebPanelServer.cpp b/src/helpers/web/WebPanelServer.cpp
index 5b397bd9..39e74c5e 100644
--- a/src/helpers/web/WebPanelServer.cpp
+++ b/src/helpers/web/WebPanelServer.cpp
@@ -392,11 +392,13 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
button.action-dreamy { background:linear-gradient(135deg,#4e7ac7,#8b7cf6); color:#f7f7ff; border:none; }
button.action-dreamy:hover { background:linear-gradient(135deg,#5c89d4,#9a8cff); }
.stack { display:grid; gap:12px; }
- .field-card { display:grid; gap:10px; }
+ .field-card { display:grid; gap:6px; align-content:start; }
.section-group { background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:14px; display:grid; gap:12px; }
.section-group h3 { margin:0; font-size:13px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.08em; }
.inline-actions { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:8px; align-items:center; }
- .label { font-size:12px; color:var(--text-muted); margin-bottom:6px; display:block; }
+ .inline-actions.two-actions { grid-template-columns:minmax(0,1fr) auto; }
+ .label { font-size:12px; color:var(--text-muted); margin:0; display:block; }
+ .field-card > div > .label + .fieldline, .field-card > div > .label + .inline-actions, .stack > div > .label + .quick { margin-top:6px; }
.fieldline { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:center; }
.iconbtn { width:44px; padding:12px 0; }
.placeholder-slot { display:block; width:44px; height:44px; }
@@ -733,16 +735,28 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(