diff --git a/web/src/lib/components/layout/WorkspaceSwitcher.svelte b/web/src/lib/components/layout/WorkspaceSwitcher.svelte
index 309fb0af..5e38e571 100644
--- a/web/src/lib/components/layout/WorkspaceSwitcher.svelte
+++ b/web/src/lib/components/layout/WorkspaceSwitcher.svelte
@@ -1,9 +1,12 @@
{#snippet workspaceList()}
@@ -103,6 +172,46 @@
{/snippet}
+{#snippet deletedSection()}
+
+ {#if deleted.length > 0}
+
+
+ {#if deletedExpanded}
+
+ {#each deleted as ws (ws.slug)}
+
+ {ws.name}
+
+ {ws.days_left} {ws.days_left === 1 ? 'day' : 'days'} left
+
+
+
+ {/each}
+
+ {/if}
+
+ {/if}
+{/snippet}
+
@@ -203,4 +314,63 @@
font-size: 1em;
border-radius: var(--radius-sm);
}
+
+ /* ── Recently deleted ─────────────────────────────────────────────── */
+ .deleted-section { border-top: 1px solid var(--border); }
+ .deleted-header {
+ display: flex;
+ align-items: center;
+ gap: var(--space-2);
+ color: var(--text-muted);
+ font-size: 0.8em;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ }
+ .deleted-caret { font-size: 0.9em; flex-shrink: 0; }
+ .deleted-title { flex: 1; min-width: 0; }
+ .deleted-count {
+ flex-shrink: 0;
+ padding: 0 var(--space-2);
+ background: var(--bg-tertiary);
+ border-radius: var(--radius-sm);
+ font-size: 0.9em;
+ }
+ .deleted-list { display: flex; flex-direction: column; }
+ .deleted-item {
+ display: flex;
+ align-items: center;
+ gap: var(--space-2);
+ padding: var(--space-2) var(--space-4);
+ font-size: 0.9em;
+ }
+ .deleted-name {
+ flex: 1;
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: var(--text-secondary);
+ }
+ .deleted-days {
+ flex-shrink: 0;
+ color: var(--text-muted);
+ font-size: 0.85em;
+ white-space: nowrap;
+ }
+ .restore-btn {
+ flex-shrink: 0;
+ padding: var(--space-1) var(--space-2);
+ background: none;
+ border: 1px solid var(--border);
+ border-radius: var(--radius-sm);
+ color: var(--accent-blue);
+ cursor: pointer;
+ font-size: 0.85em;
+ }
+ .restore-btn:hover:not(:disabled) { background: var(--bg-hover); }
+ .restore-btn:disabled { opacity: 0.6; cursor: default; }
+
+ /* Inside the mobile sheet, give the deleted rows the same roomier
+ padding as the workspace rows above. */
+ .sheet-body .deleted-item { padding: var(--space-2) var(--space-3); }