diff --git a/docs/design-import-gaps.md b/docs/design-import-gaps.md
index 170e643..c2b2a79 100644
--- a/docs/design-import-gaps.md
+++ b/docs/design-import-gaps.md
@@ -117,6 +117,43 @@ the chrome, hosts and terminals, file transfer, the vault, teams, and preference
> | **Serial** beside **Terminal** in the toolbar | Omitted. Every session here is an SSH channel; a serial transport is not a button, it is a second session kind. |
> | The strip's tabs inside the titlebar row, with a hamburger | A row of its own under the titlebar. The titlebar already carries the drag region, the search box, the sync light and three window controls, and the strip scrolls — putting both on one 44-pixel row would make the thing that scrolls fight the thing that drags. |
> | A count on the S3 tab | Omitted. The rail entry it replaces carried one; a number on two of five tabs reads as a fact about those two rather than as the tab's own state, and a terminal tab has nothing to count. The count is on the S3 screen. |
+>
+> ## The desktop's v4 — the host detail pane
+>
+> A fourth pass, narrower than v3: one pane and the cards beside it. It changes the *shape* of the drawer
+> rather than what is in it, and it changes one behaviour that is not cosmetic at all.
+>
+> **The drawer is asked for now.** Selecting a host used to open it, which charged 304 pixels of grid for
+> the act of choosing — including every card arrowed past on the way to the one you wanted. A pencil appears
+> on a card under the pointer, and on the selected card, and that is what opens the pane;
+> `VaultViewModel.IsHostPaneOpen` is the flag, and the context menu has a **Details…** entry so the pane is
+> reachable without a pointer. Once open the pane follows the selection, because a pane about one host
+> beside a grid marking a different one is two answers to the same question.
+>
+> **The pane is three cards, a fixed header and a fixed footer.** Address, General, Connection — the same
+> three in the detail pane and in the host editor, the first as rows and the second as boxes. Only the
+> middle scrolls, so the button each panel exists to offer is never below the fold, which CONNECT could be
+> on a host with fifteen tags. The detail pane's rows are *buttons that open the editor*: the design draws
+> every fact as a filled box, and rather than draw an input that refuses the pointer, pressing one leads to
+> the same card with a real box in it. Saving is a whole-host operation — it validates the key-or-credential
+> exclusion and writes one encrypted payload — so a box committing per keystroke was never on offer.
+>
+> **A host card is two lines and no chips.** The subtitle is `ssh, root, pci, eu-west-1`: the transport, the
+> resolved account, then every tag. It replaces the `user@host:port` line *and* the wrapped row of tag chips
+> below it. The address moved to the card's tooltip rather than nowhere — a card is read while scanning
+> forty machines, where the name and the kind of machine are what is being looked for, and an address is
+> what you read once you have found it.
+>
+> | v4 element | What ships instead |
+> | --- | --- |
+> | **Share this host** | Omitted, as the vault screen's `SHARED WITH · 6` is. A grant is per *vault* and per-item sharing is M5; a button here would imply this one host could be handed over, which is the thing the architecture does not do. |
+> | **Add Telnet**, and **Serial** in the toolbar | Omitted. `ISshConnection` is the only transport there is. This is also why the card subtitle's `ssh` is a constant today rather than a reading — it is stated in `HostRowViewModel.Summary`, which is the one place in this interface where a constant is printed on purpose. |
+> | **+ SSH ID, Certificate, FIDO2** | Omitted. `IDENTITIES` and `CERTIFICATES` have been on this document's list since the first import — neither is even a reserved `SyncEntityType` — and there is no security-key path anywhere in the SSH layer. One control offering three item types that do not exist. |
+> | The **Backspace / Default** row | Omitted. It is a terminal setting, and the client has no preferences store and no frame to carry one to the renderer — see the Preferences section. It would be a control whose value could not survive the window closing. |
+> | The **chevron beside the vault name** | The name alone. An item cannot be moved between vaults: the two are encrypted under different keys, so moving one is a delete and a retype. Where a *new* item is filed is chosen on the keychain screen, which is the only vault question with an answer. |
+> | **Show more ⌄** | Not drawn as a disclosure. What it would hide — notes, the relay switch, forgetting the host key — is in the editor, one press away, and a second fold inside a pane that already scrolls is a second place for a field to be missing from. |
+> | **Port Forwarding** in the sidebar | Nothing, for the third time in this document. |
+> | The host grid's toolbar avatar, share and tag-filter controls | Omitted, as in v3 and for the same reasons. |
Most of it landed. This file is the rest: every element of that design with nothing behind it, which
project each piece would have to land in, and **what the shipped interface does instead**. That last
diff --git a/src/DodoSSH.Client.App/App.axaml b/src/DodoSSH.Client.App/App.axaml
index 80ad3eb..c8372d4 100644
--- a/src/DodoSSH.Client.App/App.axaml
+++ b/src/DodoSSH.Client.App/App.axaml
@@ -625,6 +625,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+ The subtitle is the keychain this host is filed in, and the design's chevron beside it is not drawn:
+ an item cannot be moved between vaults — the two are encrypted under different keys, so moving one
+ is a delete and a retype — and a picker offering the move would be offering something no layer below
+ this can do.
+ -->
+
+
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
-
-
+
diff --git a/src/DodoSSH.Client.App/Views/HostsScreen.axaml b/src/DodoSSH.Client.App/Views/HostsScreen.axaml
index 96e1d88..a97e84f 100644
--- a/src/DodoSSH.Client.App/Views/HostsScreen.axaml
+++ b/src/DodoSSH.Client.App/Views/HostsScreen.axaml
@@ -16,7 +16,12 @@
Cards split the two jobs. The grid is about all of them — how many groups there are, which machines are
in one, which have a shell open — and it gets the full width to say so. The drawer is about one, and it
- is only there when there is one. See HostDrawer and VaultViewModel.IsDrawerOpen.
+ is only there when it has been asked for. See HostDrawer and VaultViewModel.IsDrawerOpen.
+
+ ◆ ASKED FOR, AND IT USED TO ARRIVE WITH THE SELECTION. Touching any card opened the drawer, so choosing
+ a host cost 304 pixels of grid every time — including for every card passed over on the way to the one
+ somebody wanted. The pencil on a card is what opens it now; selecting is free again. See the item
+ template below and VaultViewModel.IsHostPaneOpen.
── WHAT IS DELIBERATELY NOT HERE ────────────────────────────────────────────────────────────────────
The design this was drawn from puts a view-mode switch, a tag filter, a calendar and a share control in
@@ -357,9 +362,17 @@
and cancels the menu outright over the space around the cards, where there is no host to act
on.
-->
+
+
@@ -369,116 +382,148 @@
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
-
-
+
+
+
-
+
- This is what the fold-away heading over a run of cards used to say. A chip on the
- card says it per host instead, which is the shape the rest of this card already is
- and the shape a wrap of cards can carry: it survives the cards being reflowed, it
- needs no row of its own, and it is what changes when a card is dropped onto a group.
+
-
-
-
+ Selecting a card no longer opens it. That used to be automatic, which meant the grid
+ gave up 304 pixels the moment anybody touched a card — including every card arrowed
+ past on the way to the one they wanted. Opening the pane is a thing you ask for now,
+ and this is where the asking is. See VaultViewModel.IsHostPaneOpen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ The row is the command's parameter rather than being left to the selection. A button
+ inside a ListBoxItem takes the press itself, and whether the item is also selected by
+ it is the theme's business — so a command reading SelectedHost would open the pane on
+ whichever card happened to be lit, which on the first click of a session is none of
+ them.
+ -->
+
+
@@ -503,8 +548,9 @@