diff --git a/internal/web/static/app.css b/internal/web/static/app.css
index df77449..458e3fc 100644
--- a/internal/web/static/app.css
+++ b/internal/web/static/app.css
@@ -666,6 +666,8 @@ a.admin-link:hover { color: var(--fg); text-decoration: underline; }
th { padding: 8px 10px; font-size: 12px; white-space: nowrap; }
td { padding: 8px 10px; font-size: 14px; }
.pager { flex-wrap: wrap; gap: 8px; font-size: 13px; }
+ /* #296: URL column scales down on mobile; the table scrolls horizontally inside .float */
+ .col-url { width: 200px; }
/* paste view */
.paste-title-bar { padding: 10px 12px; gap: 8px; }
@@ -896,7 +898,9 @@ button[type="submit"]:focus-visible,
.col-f { width: 100px; } .col-g { width: 190px; }
/* #255: history's URL column had its own narrow width (col-f doubles as
/mine's ID column); give it a dedicated class. */
-.col-url { width: 150px; }
+.col-url { width: 300px; }
+/* keep ellipsis for genuinely long custom slugs inside the wider URL column (#296) */
+td a.slug.url-link { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
/* #210: /mine rows render a delete button cell that had no declared column,
so under table-layout:fixed it overlapped the ID column. */
.col-del { width: 64px; }
diff --git a/internal/web/static/history.js b/internal/web/static/history.js
index 29fcf52..2ad0f55 100644
--- a/internal/web/static/history.js
+++ b/internal/web/static/history.js
@@ -9,9 +9,9 @@ const t = PaletteTable.init({
? `${t.esc(it.title)} ${it.is_can ? ' can ' : ''}`
: `${t.esc(it.id)} ${it.is_can ? ' can ' : ''}`) +
`` +
- (it.custom_slug ? `
/${t.esc(it.custom_slug)} ` : `none `) +
`${t.esc(it.type || it.language || 'text')} ` +
`${t.fmtSize(it.size)} ${it.view_count} ${t.ago(it.created_at)} ` +
+ (it.custom_slug ? `/${t.esc(it.custom_slug)} ` : `none `) +
`${t.esc(it.id)} `,
emptyFiltered: 'No pastes match your search.',
emptyAll: 'No pastes yet. Create the first one.',
diff --git a/internal/web/static/mine.js b/internal/web/static/mine.js
index 0318e0f..ad1b25e 100644
--- a/internal/web/static/mine.js
+++ b/internal/web/static/mine.js
@@ -21,9 +21,9 @@ const t = PaletteTable.init({
? `${t.esc(it.title)} ${it.is_can ? ' can ' : ''}`
: `${t.esc(it.id)} ${it.is_can ? ' can ' : ''}`) +
`` +
- (it.custom_slug ? `/${t.esc(it.custom_slug)} ` : `none `) +
`${t.esc(it.type || it.language || 'text')} ` +
`${t.fmtSize(it.size)} ${t.ago(it.created_at)} ` +
+ (it.custom_slug ? `/${t.esc(it.custom_slug)} ` : `none `) +
`${t.esc(it.id)} ` +
`× `,
emptyFiltered: 'No pastes from this browser match your search.',
diff --git a/internal/web/templates/history.html b/internal/web/templates/history.html
index d997ac1..2896a62 100644
--- a/internal/web/templates/history.html
+++ b/internal/web/templates/history.html
@@ -8,14 +8,14 @@