Commiteed4684unknown_key
feat(M17): near-full-bleed pass 2 — widen all tiers to fill the screen
feat(M17): near-full-bleed pass 2 — widen all tiers to fill the screen Per owner "do it all": push the width pass to near-full-bleed. - Shell (nav / main / footer) 1600 -> 1920px - Wide app/dashboard/list/admin/explore/insights pages -> 1680 - Medium pages -> 1320 - Settings / forms -> 1200 - Small confirm/detail cards -> 900 (gentle nudge) - Tiny claim/dialog views (<740px) left compact - web.tsx branches/tags inline containers -> 1680 scripts/widen-layout.ts updated to the pass-2 tier map (documented as non-idempotent — run only from a clean tree). Pure CSS-value edits; test suite unchanged at 2712 pass / 28 pre-existing fail.
90 files changed+111−109eed46845b55ea5347365a205fe49f28de2ae516b
90 changed files+111−109
ModifiedBUILD_BIBLE.md+1−1View fileUnifiedSplit
@@ -376,7 +376,7 @@ The "lightning-fast push → live site + zero friction" package. Owner directive
376376- **M14** — Repository Health Score → ✅ shipped. `src/lib/health-score.ts` — `computeHealthScore(repoId)` runs 4 parallel DB queries (open advisories, gate pass rate 30d, avg PR TTM 90d, avg open issue age) and returns a 0-100 composite score with grade (Elite/Strong/Improving/Needs Attention). `src/routes/health-score.tsx` — `GET /:owner/:repo/insights/health`. CSS-only SVG circle gauge, grade badge, 4 component progress bars. Insights sub-nav: Insights / DORA / Velocity / Pulse / Health / Hot Files. Zero new DB tables. 9 tests.
377377- **M15** — PR Size Auto-Labels → ✅ shipped. `src/lib/pr-size.ts` — `computePrSize(owner, repo, base, head)` runs `git diff --numstat base...head`, sums lines changed, maps to XS/S/M/L/XL label with colour. Badge rendered in PR detail meta row next to state pill, with tooltip showing +added/−deleted breakdown. Zero new DB tables. 10 tests.
378378- **M16** — Hot Files Heatmap → ✅ shipped. `src/lib/hot-files.ts` — `getHotFiles(owner, repo, windowDays)` spawns `git log --numstat --since=N.days.ago --format=` and aggregates per-file churn (added+deleted). Risk tiers: high (auth/security/schema/db/middleware/crypto), medium (routes/api/lib/.sql), low (everything else). Top 50 files returned. `src/routes/hot-files.tsx` — `GET /:owner/:repo/insights/hotfiles?window=7|30|90`. Heat bar + risk pill per row. Insights sub-nav matches M14/M9. Zero new DB tables. 14 tests.
379- **M17** — Site-wide width pass ("stop the thin") → ✅ shipped. Follow-up to M4: M4 widened the `src/views/layout.tsx` shell to 1440px, but ~90 per-page content containers (`*-wrap` / `*-container` / `*-page`) were still capped at 880–1180px, leaving a narrow centered column inside a wide shell — the "everything's thin" complaint. This pass (1) bumped the shell (nav / `main` / footer) 1440 → **1600px**, and (2) widened the per-page containers into consistent tiers via the one-shot, conservative `scripts/widen-layout.ts` (only rewrites lines that set both a `*-wrap/container/page` selector AND `max-width: Npx; margin: 0 auto`, so prose measure / hero-inner / media-query widths are untouched): `≥1000px → 1320`, `900–999 → 1120`, `820–899 → 1040`, `<820 → unchanged` (intentionally small confirm / detail / claim views). Also widened the two inline-styled branches/tags containers in `src/routes/web.tsx` (1100 → 1320). 87 files, pure CSS-value edits — no logic, routes, or `Layout` props changed; full suite unchanged at 2712 pass / 28 pre-existing fail.
379- **M17** — Site-wide width pass ("stop the thin") → ✅ shipped. Follow-up to M4: M4 widened the `src/views/layout.tsx` shell to 1440px, but ~90 per-page content containers (`*-wrap` / `*-container` / `*-page`) were still capped at 880–1180px, leaving a narrow centered column inside a wide shell — the "everything's thin" complaint. Shipped in two passes via the one-shot, conservative `scripts/widen-layout.ts` (only rewrites lines that set both a `*-wrap/container/page` selector AND `max-width: Npx; margin: 0 auto`, so prose measure / hero-inner / media-query widths are untouched). **Final state (near-full-bleed, per owner "do it all"):** shell (nav / `main` / footer) 1440 → **1920px**; per-page tiers — wide app/dashboard/list/admin/explore/insights → **1680**, medium pages → **1320**, settings/forms → **1200**, small confirm/detail cards → **900**, tiny claim/dialog views (< 740px) left compact. Inline-styled branches/tags containers in `src/routes/web.tsx` → 1680. 87 files, pure CSS-value edits — no logic, routes, or `Layout` props changed; full suite unchanged at 2712 pass / 28 pre-existing fail. NOTE: the script's pass-2 tier map is **not idempotent** (1320 is both a medium-tier output and a wide-tier input) — re-run only from a clean tree, never twice in a row.
380380
381381---
382382
Modifiedscripts/widen-layout.ts+11−9View fileUnifiedSplit
@@ -14,11 +14,12 @@
1414 * media-query widths never match (no `margin: 0 auto`), so prose measure and
1515 * narrow confirm dialogs are left intact.
1616 *
17 * Tiers (old -> new):
18 * >= 1000px -> 1320 (dashboards, lists, tables, admin, explore, insights)
19 * 900..999 -> 1120 (medium / form-heavy pages)
20 * 820..899 -> 1040 (settings, repo-settings, import)
21 * < 820 -> unchanged (intentionally small confirm / detail / claim views)
17 * Tiers (pass 2 — "do it all", near-full-bleed):
18 * >= 1300px -> 1680 (dashboards, lists, tables, admin, explore, insights)
19 * 1080..1299 -> 1320 (medium pages)
20 * 1000..1079 -> 1200 (settings, repo-settings, import, forms)
21 * 740..819 -> 900 (small confirm/detail cards, gentle nudge)
22 * else -> unchanged (tiny claim/dialog views < 740px stay compact)
2223 *
2324 * Run once: `bun scripts/widen-layout.ts`
2425 */
@@ -28,10 +29,11 @@ import { Glob } from "bun";
2829const ROOT = new URL("..", import.meta.url).pathname;
2930
3031function widen(old: number): number | null {
31 if (old >= 1000) return 1320;
32 if (old >= 900) return 1120;
33 if (old >= 820) return 1040;
34 return null; // leave small intentional widths alone
32 if (old >= 1300) return 1680;
33 if (old >= 1080) return 1320;
34 if (old >= 1000) return 1200;
35 if (old >= 740 && old < 820) return 900;
36 return null; // leave tiny intentional widths alone
3537}
3638
3739// Matches a single-line page-container declaration, capturing the px width.
Modifiedsrc/routes/activity.tsx+1−1View fileUnifiedSplit
@@ -30,7 +30,7 @@ const activity = new Hono<AuthEnv>();
3030activity.use("*", softAuth);
3131
3232const styles = `
33 .act-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
33 .act-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
3434
3535 .act-hero {
3636 position: relative;
Modifiedsrc/routes/admin-diagnose.tsx+1−1View fileUnifiedSplit
@@ -715,7 +715,7 @@ function fixHrefForCheck(r: CheckResult): { href: string; label: string } | null
715715 * `error-page` (the just-shipped 2026 visual recipe).
716716 * ───────────────────────────────────────────────────────────────────── */
717717const healthStyles = `
718 .health-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
718 .health-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
719719
720720 .health-hero {
721721 position: relative;
Modifiedsrc/routes/admin-integrations.tsx+1−1View fileUnifiedSplit
@@ -38,7 +38,7 @@ integrations.use("*", softAuth);
3838 * card patterns from commits 07f4b70 and 98eb360.
3939 * ───────────────────────────────────────────────────────────────────── */
4040const styles = `
41 .admin-int-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
41 .admin-int-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4242
4343 .admin-int-hero {
4444 position: relative;
Modifiedsrc/routes/admin-ops.tsx+1−1View fileUnifiedSplit
@@ -241,7 +241,7 @@ async function readReadinessChecks(): Promise<CheckResult[]> {
241241 * patterns from admin-integrations.tsx and error-page.tsx.
242242 * ───────────────────────────────────────────────────────────────────── */
243243const opsStyles = `
244 .ops-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
244 .ops-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
245245
246246 /* ─── Hero ─── */
247247 .ops-hero {
Modifiedsrc/routes/admin.tsx+6−6View fileUnifiedSplit
@@ -54,7 +54,7 @@ admin.use("*", softAuth);
5454 * repo-home (commit 544d842), and settings polish (commit 98eb360).
5555 * ───────────────────────────────────────────────────────────────────── */
5656const adminStyles = `
57 .admin-wrap { max-width: 1320px; margin: 0 auto; }
57 .admin-wrap { max-width: 1680px; margin: 0 auto; }
5858
5959 /* ─── Hero (main dashboard) ─── */
6060 .admin-hero {
@@ -699,7 +699,7 @@ const adminStyles = `
699699 * - empty state with orb
700700 * ───────────────────────────────────────────────────────────────────── */
701701const admUsersStyles = `
702 .adm-users-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
702 .adm-users-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
703703
704704 /* Hero */
705705 .adm-users-hero {
@@ -1080,7 +1080,7 @@ const admUsersStyles = `
10801080`;
10811081
10821082const admReposStyles = `
1083 .adm-repos-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
1083 .adm-repos-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
10841084
10851085 .adm-repos-hero {
10861086 position: relative;
@@ -1384,7 +1384,7 @@ const admReposStyles = `
13841384`;
13851385
13861386const admFlagsStyles = `
1387 .adm-flags-wrap { max-width: 1040px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
1387 .adm-flags-wrap { max-width: 1200px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
13881388
13891389 .adm-flags-hero {
13901390 position: relative;
@@ -1618,7 +1618,7 @@ const admFlagsStyles = `
16181618`;
16191619
16201620const admDigestsStyles = `
1621 .adm-digests-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
1621 .adm-digests-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
16221622
16231623 .adm-digests-hero {
16241624 position: relative;
@@ -1988,7 +1988,7 @@ const admDigestsStyles = `
19881988`;
19891989
19901990const admAutopilotStyles = `
1991 .adm-autopilot-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
1991 .adm-autopilot-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
19921992
19931993 .adm-autopilot-hero {
19941994 position: relative;
Modifiedsrc/routes/advisories.tsx+1−1View fileUnifiedSplit
@@ -74,7 +74,7 @@ function severityClass(sev: string): string {
7474 * critical → red, high → amber, medium/moderate → yellow, low → blue
7575 * ───────────────────────────────────────────────────────────────────── */
7676const styles = `
77 .adv-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
77 .adv-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
7878
7979 .adv-hero {
8080 position: relative;
Modifiedsrc/routes/ai-changelog.tsx+1−1View fileUnifiedSplit
@@ -44,7 +44,7 @@ aiChangelog.use("*", softAuth);
4444 * panel + copy-to-clipboard pattern from admin-integrations.tsx.
4545 * ───────────────────────────────────────────────────────────────────── */
4646const styles = `
47 .ai-changelog-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
47 .ai-changelog-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4848
4949 .ai-changelog-hero {
5050 position: relative;
Modifiedsrc/routes/ai-explain.tsx+1−1View fileUnifiedSplit
@@ -48,7 +48,7 @@ const aiExplainRoutes = new Hono<AuthEnv>();
4848 * admin-integrations.tsx / build-agent-spec.tsx.
4949 * ───────────────────────────────────────────────────────────────────── */
5050const styles = `
51 .ai-explain-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
51 .ai-explain-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
5252
5353 .ai-explain-hero {
5454 position: relative;
Modifiedsrc/routes/ai-tests.tsx+1−1View fileUnifiedSplit
@@ -57,7 +57,7 @@ const aiTestsRoutes = new Hono<AuthEnv>();
5757 * inputs via the :root --border-focus token.
5858 * ───────────────────────────────────────────────────────────────────── */
5959const styles = `
60 .ai-tests-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
60 .ai-tests-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
6161
6262 .ai-tests-hero {
6363 position: relative;
Modifiedsrc/routes/api-docs.tsx+1−1View fileUnifiedSplit
@@ -17,7 +17,7 @@ const apiDocs = new Hono<AuthEnv>();
1717
1818// ─── Scoped CSS (.apidocs-*) ────────────────────────────────────────────────
1919const apiDocsStyles = `
20 .apidocs-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
20 .apidocs-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
2121
2222 /* ─── Header ─── */
2323 .apidocs-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/billing-usage.tsx+1−1View fileUnifiedSplit
@@ -47,7 +47,7 @@ usage.use("*", softAuth);
4747
4848// ─── Scoped CSS (all `.cost-*`) ───────────────────────────────────────────
4949const styles = `
50 .cost-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
50 .cost-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
5151
5252 .cost-hero {
5353 position: relative;
Modifiedsrc/routes/billing.tsx+1−1View fileUnifiedSplit
@@ -46,7 +46,7 @@ billing.use("*", softAuth);
4646 * from admin-integrations.tsx, admin-ops.tsx, error-page.tsx.
4747 * ───────────────────────────────────────────────────────────────────── */
4848const styles = `
49 .bill-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
49 .bill-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
5050
5151 /* ─── Hero ─── */
5252 .bill-hero {
Modifiedsrc/routes/build-agent-spec.tsx+1−1View fileUnifiedSplit
@@ -20,7 +20,7 @@ const buildAgentSpec = new Hono<AuthEnv>();
2020buildAgentSpec.use("*", softAuth);
2121
2222const styles = `
23 .ba-spec-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
23 .ba-spec-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
2424
2525 .ba-spec-hero {
2626 position: relative;
Modifiedsrc/routes/claude-deploy.tsx+1−1View fileUnifiedSplit
@@ -82,7 +82,7 @@ const BUDGET_PLANS: Array<{
8282// CSS — scoped under .cldploy- prefix.
8383// ---------------------------------------------------------------------------
8484const styles = `
85 .cldploy-container { max-width: 1320px; margin: 0 auto; padding: 0 0 var(--space-6); }
85 .cldploy-container { max-width: 1680px; margin: 0 auto; padding: 0 0 var(--space-6); }
8686
8787 /* ─── Hero ─── */
8888 .cldploy-hero {
Modifiedsrc/routes/code-scanning.tsx+1−1View fileUnifiedSplit
@@ -30,7 +30,7 @@ codeScanning.use("*", softAuth);
3030 * orb + per-card pattern from `admin-integrations` and `admin-diagnose`.
3131 * ───────────────────────────────────────────────────────────────────── */
3232const styles = `
33 .sec-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
33 .sec-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
3434
3535 .sec-hero {
3636 position: relative;
Modifiedsrc/routes/collaborators.tsx+1−1View fileUnifiedSplit
@@ -89,7 +89,7 @@ async function resolveOwnerRepo(
8989// (--bg-elevated, --border, --text-strong, --accent, --space-*, --font-*).
9090
9191const collabStyles = `
92 .collab-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
92 .collab-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
9393
9494 /* ─── Header strip (sits below RepoHeader + RepoNav) ─── */
9595 .collab-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/connect-claude.tsx+1−1View fileUnifiedSplit
@@ -296,7 +296,7 @@ function buildPersonalizedManifest(opts: {
296296
297297// ─── CSS ───────────────────────────────────────────────────────────────────
298298const styles = `
299 .connect-claude-container { max-width: 1120px; margin: 0 auto; padding: 0 0 var(--space-6); }
299 .connect-claude-container { max-width: 1320px; margin: 0 auto; padding: 0 0 var(--space-6); }
300300
301301 /* ─── Hero ─── */
302302 .connect-claude-hero {
Modifiedsrc/routes/contributors.tsx+1−1View fileUnifiedSplit
@@ -393,7 +393,7 @@ function IconCommit() {
393393// ─── Scoped CSS (.contrib-*) ────────────────────────────────────────────────
394394
395395const contribStyles = `
396 .contrib-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
396 .contrib-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
397397
398398 /* ─── Header strip ─── */
399399 .contrib-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/demo.tsx+1−1View fileUnifiedSplit
@@ -528,7 +528,7 @@ app.get("/demo", softAuth, async (c) => {
528528// bleed into other views. Drop-in replacement for the legacy `.demo-*`
529529// classes; the new prefix is wider so we can polish without collisions.
530530const DEMO_CSS = `
531 .demo-page { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
531 .demo-page { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
532532
533533 /* ─── Hero ─── */
534534 .demo-page-hero {
Modifiedsrc/routes/dep-updater.tsx+1−1View fileUnifiedSplit
@@ -34,7 +34,7 @@ depUpdater.use("*", softAuth);
3434 * orb, run cards with status pill / tabular-nums timing, mono version cells.
3535 * ───────────────────────────────────────────────────────────────────── */
3636const depStyles = `
37 .dep-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
37 .dep-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
3838
3939 /* ─── Hero ─── */
4040 .dep-hero {
Modifiedsrc/routes/deployments.tsx+2−2View fileUnifiedSplit
@@ -44,7 +44,7 @@ type Row = typeof deployments.$inferSelect & { triggeredByName: string | null };
4444 * admin-integrations.tsx and admin-ops.tsx.
4545 * ───────────────────────────────────────────────────────────────────── */
4646const deployStyles = `
47 .dk-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
47 .dk-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4848
4949 /* ─── Page heading (no hero block — RepoHeader supplies framing) ─── */
5050 .dk-head { margin-bottom: var(--space-5); }
@@ -305,7 +305,7 @@ const deployStyles = `
305305 }
306306
307307 /* ─── Detail page ─── */
308 .dk-detail-wrap { max-width: 760px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
308 .dk-detail-wrap { max-width: 900px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
309309 .dk-bread {
310310 display: flex;
311311 align-items: center;
Modifiedsrc/routes/deps.tsx+1−1View fileUnifiedSplit
@@ -38,7 +38,7 @@ deps.use("*", softAuth);
3838// the gradient-hairline + card patterns used in admin-integrations and
3939// collaborators.
4040const depsStyles = `
41 .deps-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
41 .deps-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
4242
4343 /* ─── Header strip (sits below RepoHeader + RepoNav) ─── */
4444 .deps-head { margin-bottom: var(--space-5); display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; }
Modifiedsrc/routes/developer-apps.tsx+1−1View fileUnifiedSplit
@@ -43,7 +43,7 @@ apps.use("/settings/applications/*", requireAuth);
4343// into other settings pages.
4444// ----------------------------------------------------------------------------
4545const devStyles = `
46 .dev-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
46 .dev-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4747
4848 /* ─── Breadcrumb ─── */
4949 .dev-breadcrumb {
Modifiedsrc/routes/discussions.tsx+1−1View fileUnifiedSplit
@@ -48,7 +48,7 @@ const discussionRoutes = new Hono<AuthEnv>();
4848 * orb + card patterns from `insights.tsx` and `error-page.tsx`.
4949 * ───────────────────────────────────────────────────────────────────── */
5050const styles = `
51 .disc-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
51 .disc-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
5252
5353 .disc-hero {
5454 position: relative;
Modifiedsrc/routes/docs-tracking.tsx+1−1View fileUnifiedSplit
@@ -97,7 +97,7 @@ async function loadStored(repositoryId: string): Promise<StoredRow[]> {
9797 * dashboard feels at home alongside the other repo sub-pages.
9898 * ───────────────────────────────────────────────────────────────────── */
9999const docTrackingStyles = `
100 .doctrk-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
100 .doctrk-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
101101
102102 .doctrk-head {
103103 position: relative;
Modifiedsrc/routes/dora.tsx+1−1View fileUnifiedSplit
@@ -90,7 +90,7 @@ function formatHours(h: number): string {
9090// ─── Scoped CSS ───────────────────────────────────────────────────────────────
9191
9292const styles = `
93 .dora-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
93 .dora-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
9494
9595 .dora-hero {
9696 position: relative;
Modifiedsrc/routes/editor.tsx+1−1View fileUnifiedSplit
@@ -361,7 +361,7 @@ function CODEMIRROR_INIT_SCRIPT(args: {
361361// --border, --text-strong, --accent, --space-*, --font-*).
362362
363363const editorStyles = `
364 .editor-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
364 .editor-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
365365
366366 /* ─── Header strip (sits below RepoHeader + RepoNav) ─── */
367367 .editor-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/email-verification.tsx+1−1View fileUnifiedSplit
@@ -301,7 +301,7 @@ verify.post("/verify-email/resend", requireAuth, async (c) => {
301301// page. Mirrors the gradient-hairline hero + card pattern from
302302// settings-2fa.tsx and admin-integrations.tsx.
303303const evStyles = `
304 .ev-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
304 .ev-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
305305
306306 .ev-hero {
307307 position: relative;
Modifiedsrc/routes/environments.tsx+1−1View fileUnifiedSplit
@@ -124,7 +124,7 @@ function envProtectionCount(env: Environment): number {
124124 * admin-integrations and error-page.
125125 * ───────────────────────────────────────────────────────────────────── */
126126const envsStyles = `
127 .envs-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
127 .envs-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
128128
129129 .envs-head {
130130 position: relative;
Modifiedsrc/routes/explore.tsx+1−1View fileUnifiedSplit
@@ -30,7 +30,7 @@ const ExploreStyle = () => (
3030 <style
3131 dangerouslySetInnerHTML={{
3232 __html: `
33 .explore-wrap { max-width: 1320px; margin: 0 auto; }
33 .explore-wrap { max-width: 1680px; margin: 0 auto; }
3434
3535 /* ─── Hero ─── */
3636 .explore-hero {
Modifiedsrc/routes/follows.tsx+1−1View fileUnifiedSplit
@@ -65,7 +65,7 @@ function profileUrl(username: string): string {
6565// continuity (--bg-elevated, --border, --text-strong, --accent, --space-*).
6666
6767const followStyles = `
68 .follows-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
68 .follows-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
6969
7070 /* ─── Header ─── */
7171 .follows-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/fork.tsx+1−1View fileUnifiedSplit
@@ -32,7 +32,7 @@ fork.use("*", softAuth);
3232
3333// ─── Scoped CSS — `.fork-*` ────────────────────────────────────────────────
3434const forkStyles = `
35 .fork-wrap { max-width: 760px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
35 .fork-wrap { max-width: 900px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
3636
3737 /* ─── Hero ─── */
3838 .fork-hero {
Modifiedsrc/routes/gates.tsx+1−1View fileUnifiedSplit
@@ -72,7 +72,7 @@ function relTime(d: Date | string): string {
7272 * settings-2fa.tsx.
7373 * ───────────────────────────────────────────────────────────────────── */
7474const gatesStyles = `
75 .gates-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-4) 0; }
75 .gates-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-4) 0; }
7676
7777 .gates-hero {
7878 position: relative;
Modifiedsrc/routes/gists.tsx+1−1View fileUnifiedSplit
@@ -45,7 +45,7 @@ const gistRoutes = new Hono<AuthEnv>();
4545
4646// ─── Scoped CSS (.gists-*) ──────────────────────────────────────────────────
4747const gistsStyles = `
48 .gists-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
48 .gists-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
4949
5050 .gists-head {
5151 display: flex;
Modifiedsrc/routes/help.tsx+1−1View fileUnifiedSplit
@@ -21,7 +21,7 @@ help.use("*", softAuth);
2121// surfaces. Mirrors the 2026 hero polish in admin, dashboard, import,
2222// settings, and repo-settings.
2323const helpStyles = `
24 .help-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
24 .help-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
2525
2626 /* ─── Hero ─── */
2727 .help-hero {
Modifiedsrc/routes/import-bulk.tsx+1−1View fileUnifiedSplit
@@ -47,7 +47,7 @@ type Visibility = "public" | "private" | "both";
4747// All classes prefixed with .import-bulk- so the block cannot bleed
4848// into neighbouring routes. Mirrors the /import polish.
4949const importBulkStyles = `
50 .import-bulk-container { max-width: 1040px; margin: 0 auto; }
50 .import-bulk-container { max-width: 1200px; margin: 0 auto; }
5151
5252 /* ─── Hero ─── */
5353 .import-bulk-hero {
Modifiedsrc/routes/import.tsx+1−1View fileUnifiedSplit
@@ -43,7 +43,7 @@ interface GitHubRepo {
4343// All classes prefixed with .import- so the block cannot bleed into
4444// neighbouring routes. Mirrors the dashboard-hero + settings polish.
4545const importStyles = `
46 .import-container { max-width: 1040px; margin: 0 auto; }
46 .import-container { max-width: 1200px; margin: 0 auto; }
4747
4848 /* ─── Hero ─── */
4949 .import-hero {
Modifiedsrc/routes/inbox.tsx+1−1View fileUnifiedSplit
@@ -118,7 +118,7 @@ function relTime(d: Date): string {
118118// pulls-dashboard visual language: gradient hairline + orb + clamp() title.
119119// ---------------------------------------------------------------------------
120120const styles = `
121 .inbox-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
121 .inbox-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
122122
123123 .inbox-hero {
124124 position: relative;
Modifiedsrc/routes/insights.tsx+1−1View fileUnifiedSplit
@@ -44,7 +44,7 @@ insights.use("*", softAuth);
4444 * `font-variant-numeric: tabular-nums` so columns of numbers line up.
4545 * ───────────────────────────────────────────────────────────────────── */
4646const styles = `
47 .insights-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
47 .insights-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
4848
4949 .insights-hero {
5050 position: relative;
Modifiedsrc/routes/invites.tsx+1−1View fileUnifiedSplit
@@ -37,7 +37,7 @@ inviteRoutes.use("*", softAuth);
3737
3838// ─── Scoped CSS (.inv-*) ────────────────────────────────────────────────────
3939const invStyles = `
40 .inv-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
40 .inv-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4141
4242 .inv-hero {
4343 position: relative;
Modifiedsrc/routes/issues-dashboard.tsx+1−1View fileUnifiedSplit
@@ -53,7 +53,7 @@ const issuesDashboard = new Hono<AuthEnv>();
5353issuesDashboard.use("*", softAuth);
5454
5555const styles = `
56 .idash-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
56 .idash-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
5757
5858 .idash-hero {
5959 position: relative;
Modifiedsrc/routes/marketplace-agents.tsx+1−1View fileUnifiedSplit
@@ -57,7 +57,7 @@ marketplaceAgents.use("*", softAuth);
5757 * pre-existing `.mkt-*` marketplace surface. Pattern mirrors that file.
5858 * ───────────────────────────────────────────────────────────────────── */
5959const styles = `
60 .amkt-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
60 .amkt-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
6161
6262 /* ─── Hero ─── */
6363 .amkt-hero {
Modifiedsrc/routes/marketplace.tsx+1−1View fileUnifiedSplit
@@ -51,7 +51,7 @@ marketplace.use("*", softAuth);
5151 * from admin-integrations.tsx, admin-ops.tsx, error-page.tsx.
5252 * ───────────────────────────────────────────────────────────────────── */
5353const styles = `
54 .mkt-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
54 .mkt-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
5555
5656 /* ─── Hero ─── */
5757 .mkt-hero {
Modifiedsrc/routes/merge-queue.tsx+1−1View fileUnifiedSplit
@@ -51,7 +51,7 @@ queue.use("*", softAuth);
5151 * 1100px content width spec.
5252 * ───────────────────────────────────────────────────────────────────── */
5353const mqStyles = `
54 .mq-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
54 .mq-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
5555
5656 /* ─── Hero ─── */
5757 .mq-hero {
Modifiedsrc/routes/migration-assistant.tsx+1−1View fileUnifiedSplit
@@ -35,7 +35,7 @@ migrationAssistant.use("*", softAuth);
3535 * form, result panel. Never overrides layout primitives.
3636 * ────────────────────────────────────────────────────────────────── */
3737const migpropStyles = `
38 .migprop-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
38 .migprop-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
3939
4040 .migprop-hero {
4141 position: relative;
Modifiedsrc/routes/migrations.tsx+1−1View fileUnifiedSplit
@@ -39,7 +39,7 @@ migrations.use("/migrations/*", requireAuth);
3939
4040// ─── Scoped CSS (.mig-*) ────────────────────────────────────────────────
4141const migStyles = `
42 .mig-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
42 .mig-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
4343
4444 .mig-head {
4545 margin-bottom: var(--space-5);
Modifiedsrc/routes/mirrors.tsx+1−1View fileUnifiedSplit
@@ -45,7 +45,7 @@ mirrors.use("*", softAuth);
4545 * (--bg-elevated, --border, --text-strong, --space-*, --font-*).
4646 * ───────────────────────────────────────────────────────────────────── */
4747const mirrorStyles = `
48 .mirror-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
48 .mirror-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
4949
5050 /* ─── Hero ─── */
5151 .mirror-hero {
Modifiedsrc/routes/oauth.tsx+1−1View fileUnifiedSplit
@@ -111,7 +111,7 @@ function describeScope(s: string): { label: string; explain: string } {
111111// can't bleed into the wider app polish. Mirrors the gradient-hairline hero +
112112// orb pattern from admin-integrations.tsx and error-page.tsx.
113113const oauthStyles = `
114 .oauth-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
114 .oauth-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
115115
116116 /* ─── Hero ─── */
117117 .oauth-hero {
Modifiedsrc/routes/onboarding.tsx+1−1View fileUnifiedSplit
@@ -25,7 +25,7 @@ const onboardingRoutes = new Hono<AuthEnv>();
2525 * patterns from admin-integrations.tsx, admin-ops.tsx, error-page.tsx.
2626 * ───────────────────────────────────────────────────────────────────── */
2727const styles = `
28 .onb-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
28 .onb-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
2929
3030 /* ─── Hero ─── */
3131 .onb-hero {
Modifiedsrc/routes/org-insights.tsx+1−1View fileUnifiedSplit
@@ -281,7 +281,7 @@ async function isOrgMember(orgId: string, userId: string): Promise<boolean> {
281281 * stat-card grid + leaderboard pattern from `insights.tsx`.
282282 * ───────────────────────────────────────────────────────────────────── */
283283const styles = `
284 .org-ins-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
284 .org-ins-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
285285
286286 .org-ins-hero {
287287 position: relative;
Modifiedsrc/routes/orgs.tsx+1−1View fileUnifiedSplit
@@ -34,7 +34,7 @@ const orgRoutes = new Hono<AuthEnv>();
3434// repo header / nav / page chrome. Mirrors the gradient-hairline hero +
3535// card patterns from settings-2fa.tsx + admin-integrations.tsx.
3636const orgsStyles = `
37 .orgs-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
37 .orgs-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
3838
3939 .orgs-hero {
4040 position: relative;
Modifiedsrc/routes/packages.tsx+1−1View fileUnifiedSplit
@@ -77,7 +77,7 @@ function humanSize(bytes: number): string {
7777
7878// ─── Scoped CSS (.pkg-*) ────────────────────────────────────────────────────
7979const pkgStyles = `
80 .pkg-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
80 .pkg-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
8181
8282 .pkg-head {
8383 display: flex;
Modifiedsrc/routes/pages.tsx+1−1View fileUnifiedSplit
@@ -97,7 +97,7 @@ async function getEffectiveSettings(repositoryId: string) {
9797
9898// ─── Scoped CSS (.pages-*) ──────────────────────────────────────────────────
9999const pagesStyles = `
100 .pages-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
100 .pages-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
101101
102102 .pages-head {
103103 display: flex;
Modifiedsrc/routes/passkeys.tsx+1−1View fileUnifiedSplit
@@ -58,7 +58,7 @@ passkeys.use("/api/passkeys/register/*", requireAuth);
5858 * admin-ops.tsx.
5959 * ───────────────────────────────────────────────────────────────────── */
6060const pkStyles = `
61 .pk-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
61 .pk-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
6262
6363 /* ─── Hero ─── */
6464 .pk-hero {
Modifiedsrc/routes/playground.tsx+1−1View fileUnifiedSplit
@@ -42,7 +42,7 @@ const playgroundCreateRateLimit = rateLimit(3, 60_000, "playground-create");
4242
4343// ─── Scoped CSS — all classes prefixed `.play-*` ───────────────────────────
4444const playStyles = `
45 .play-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
45 .play-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6, 32px) var(--space-4, 24px); }
4646
4747 /* ─── Hero ─── */
4848 .play-hero {
Modifiedsrc/routes/previews.tsx+1−1View fileUnifiedSplit
@@ -63,7 +63,7 @@ async function loadRepo(owner: string, repo: string) {
6363 * into the layout. Same gradient hairline + orb language as environments.
6464 * ───────────────────────────────────────────────────────────────────── */
6565const previewStyles = `
66 .preview-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
66 .preview-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
6767
6868 .preview-head {
6969 position: relative;
Modifiedsrc/routes/projects.tsx+1−1View fileUnifiedSplit
@@ -33,7 +33,7 @@ const projectRoutes = new Hono<AuthEnv>();
3333
3434// ─── Scoped CSS (.proj-*) ───────────────────────────────────────────────────
3535const projStyles = `
36 .proj-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
36 .proj-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
3737
3838 .proj-head {
3939 display: flex;
Modifiedsrc/routes/protected-tags.tsx+1−1View fileUnifiedSplit
@@ -51,7 +51,7 @@ async function loadRepo(ownerName: string, repoName: string) {
5151 * Scoped CSS — every selector under `.pt-` so this surface can't leak.
5252 * ───────────────────────────────────────────────────────────────────── */
5353const ptStyles = `
54 .pt-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-4) 0; }
54 .pt-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-4) 0; }
5555
5656 .pt-hero {
5757 position: relative;
Modifiedsrc/routes/pulls-dashboard.tsx+1−1View fileUnifiedSplit
@@ -35,7 +35,7 @@ const pullsDashboard = new Hono<AuthEnv>();
3535pullsDashboard.use("*", softAuth);
3636
3737const styles = `
38 .pdash-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
38 .pdash-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
3939
4040 .pdash-hero {
4141 position: relative;
Modifiedsrc/routes/pulse.tsx+1−1View fileUnifiedSplit
@@ -461,7 +461,7 @@ function activityLabel(action: string, targetType: string | null, targetId: stri
461461function PulseStyle() {
462462 return (
463463 <style>{`
464 .pulse-page { max-width: 1120px; margin: 0 auto; padding: 0 16px 48px; }
464 .pulse-page { max-width: 1320px; margin: 0 auto; padding: 0 16px 48px; }
465465 .pulse-header { margin: 24px 0 20px; }
466466 .pulse-title { font-size: 22px; font-weight: 700; margin: 0 0 8px; }
467467 .pulse-subtitle { font-size: 14px; color: var(--fg-muted); margin: 8px 0 0; }
Modifiedsrc/routes/push-watch.tsx+1−1View fileUnifiedSplit
@@ -225,7 +225,7 @@ async function loadPushData(repoId: string, sha: string) {
225225
226226const pwStyles = `
227227 /* ── wrapper ── */
228 .pw-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
228 .pw-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
229229
230230 /* ── banner ── */
231231 .pw-banner {
Modifiedsrc/routes/refactors.tsx+1−1View fileUnifiedSplit
@@ -53,7 +53,7 @@ refactors.use("/api/v2/refactors/*", softAuth, requireAuth);
5353// Scoped CSS — every class is `.refac-*`.
5454// ---------------------------------------------------------------------------
5555const refacStyles = `
56 .refac-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
56 .refac-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
5757
5858 .refac-hero {
5959 position: relative;
Modifiedsrc/routes/releases.tsx+1−1View fileUnifiedSplit
@@ -71,7 +71,7 @@ async function loadRepo(owner: string, repo: string) {
7171// Tokens come from the layout (--bg-elevated, --border, --text-strong,
7272// --space-*, --font-*).
7373const relStyles = `
74 .rel-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
74 .rel-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
7575
7676 .rel-head {
7777 display: flex;
Modifiedsrc/routes/repo-settings.tsx+1−1View fileUnifiedSplit
@@ -24,7 +24,7 @@ repoSettings.use("*", softAuth);
2424// bleed into other surfaces. Pattern mirrors the user-settings polish
2525// (commit 98eb360) and the admin-panel polish (commit 07f4b70).
2626const repoSettingsStyles = `
27 .repo-settings-container { max-width: 1040px; margin: 0 auto; padding: 0 var(--space-3); }
27 .repo-settings-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-3); }
2828
2929 /* ─── Hero ─── */
3030 .repo-settings-hero {
Modifiedsrc/routes/required-checks.tsx+1−1View fileUnifiedSplit
@@ -140,7 +140,7 @@ function lightClass(status: string | null): "is-pass" | "is-fail" | "is-warn" |
140140 * Scoped CSS — every selector prefixed `.rc-` so this surface can't leak.
141141 * ───────────────────────────────────────────────────────────────────── */
142142const rcStyles = `
143 .rc-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-4) 0; }
143 .rc-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-4) 0; }
144144
145145 .rc-hero {
146146 position: relative;
Modifiedsrc/routes/rulesets.tsx+1−1View fileUnifiedSplit
@@ -85,7 +85,7 @@ function ruleDescription(type: string, params: Record<string, unknown>): string
8585 * Scoped CSS — every selector under `.rs-` so this surface can't leak.
8686 * ───────────────────────────────────────────────────────────────────── */
8787const rsStyles = `
88 .rs-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-4) 0; }
88 .rs-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-4) 0; }
8989
9090 .rs-hero {
9191 position: relative;
Modifiedsrc/routes/saved-replies.tsx+1−1View fileUnifiedSplit
@@ -52,7 +52,7 @@ async function listForUser(userId: string) {
5252// other page. Mirrors the gradient-hairline hero + card patterns from
5353// admin-integrations.tsx and settings-2fa.tsx.
5454const srStyles = `
55 .sr-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
55 .sr-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
5656
5757 /* ─── Hero ─── */
5858 .sr-hero {
Modifiedsrc/routes/semantic-search.tsx+1−1View fileUnifiedSplit
@@ -44,7 +44,7 @@ semanticSearch.use("*", softAuth);
4444
4545// ─── Scoped CSS (.ss-*) ──────────────────────────────────────────────────
4646const ssStyles = `
47 .ss-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
47 .ss-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
4848
4949 .ss-head {
5050 margin-bottom: var(--space-5);
Modifiedsrc/routes/settings-2fa.tsx+1−1View fileUnifiedSplit
@@ -49,7 +49,7 @@ function errorRedirect(path: string, msg: string) {
4949 * admin-integrations.tsx and admin-ops.tsx.
5050 * ───────────────────────────────────────────────────────────────────── */
5151const tfaStyles = `
52 .tfa-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
52 .tfa-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
5353
5454 /* ─── Hero ─── */
5555 .tfa-hero {
Modifiedsrc/routes/settings-agents.tsx+1−1View fileUnifiedSplit
@@ -24,7 +24,7 @@ const settingsAgents = new Hono<AuthEnv>();
2424settingsAgents.use("/settings/agents*", requireAuth);
2525
2626const styles = `
27 .sa-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
27 .sa-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
2828 .sa-hero {
2929 border: 1px solid var(--border);
3030 border-radius: 14px;
Modifiedsrc/routes/settings-integrations.tsx+1−1View fileUnifiedSplit
@@ -32,7 +32,7 @@ r.use("/settings/integrations*", softAuth, requireAuth);
3232// Scoped CSS (.chati-*). Mirrors the tokens / webhooks polish.
3333// ---------------------------------------------------------------------------
3434const chatiStyles = `
35 .chati-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
35 .chati-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
3636
3737 /* ─── Hero ─── */
3838 .chati-hero {
Modifiedsrc/routes/settings.tsx+2−2View fileUnifiedSplit
@@ -34,7 +34,7 @@ settings.use("/api/user/*", requireAuth);
3434// cannot bleed into other surfaces. Pattern mirrors the dashboard-hero polish
3535// (commit a004c46) and auth-container gradient hairline (commit 98f45b4).
3636const settingsStyles = `
37 .settings-container { max-width: 1040px; margin: 0 auto; }
37 .settings-container { max-width: 1200px; margin: 0 auto; }
3838
3939 /* ─── Hero ─── */
4040 .settings-hero {
@@ -1274,7 +1274,7 @@ settings.get("/settings/digest/preview", async (c) => {
12741274// it can be linked to directly from /notifications and the main /settings
12751275// page.
12761276const notifsetStyles = `
1277 .notifset-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
1277 .notifset-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
12781278
12791279 .notifset-hero {
12801280 position: relative;
Modifiedsrc/routes/signing-keys.tsx+1−1View fileUnifiedSplit
@@ -42,7 +42,7 @@ signingKeysRoutes.use("/settings/signing-keys/*", requireAuth);
4242 * admin-integrations.tsx and admin-ops.tsx.
4343 * ───────────────────────────────────────────────────────────────────── */
4444const signingKeyStyles = `
45 .sk-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
45 .sk-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4646
4747 /* ─── Page heading (no hero block — settings sidebar supplies framing) ─── */
4848 .sk-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/sleep-mode.tsx+1−1View fileUnifiedSplit
@@ -340,7 +340,7 @@ sleepMode.get("/sleep-mode", (c) => {
340340});
341341
342342const pageCss = `
343 .sleep-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
343 .sleep-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
344344
345345 /* ─── Hero ─── */
346346 .sleep-hero {
Modifiedsrc/routes/specs.tsx+1−1View fileUnifiedSplit
@@ -55,7 +55,7 @@ const DISABLE_ON_SUBMIT_JS = `
5555
5656// ─── Scoped CSS (.specs-*) ─────────────────────────────────────────────────
5757const specsStyles = `
58 .specs-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
58 .specs-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
5959
6060 /* ─── Header ─── */
6161 .specs-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/sponsors.tsx+1−1View fileUnifiedSplit
@@ -39,7 +39,7 @@ function formatCents(cents: number): string {
3939 * Scoped CSS — every selector prefixed `.spons-` so this surface can't leak.
4040 * ───────────────────────────────────────────────────────────────────── */
4141const sponsStyles = `
42 .spons-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
42 .spons-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4343
4444 .spons-hero {
4545 position: relative;
Modifiedsrc/routes/sso.tsx+1−1View fileUnifiedSplit
@@ -62,7 +62,7 @@ function ssoStateCookieOpts(): {
6262// into other admin pages.
6363// ----------------------------------------------------------------------------
6464const ssoStyles = `
65 .sso-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
65 .sso-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
6666
6767 /* ─── Hero ─── */
6868 .sso-hero {
Modifiedsrc/routes/status.tsx+1−1View fileUnifiedSplit
@@ -439,7 +439,7 @@ status.get("/status.svg", async (c) => {
439439 * bleed into the admin status page or any other route.
440440 * ───────────────────────────────────────────────────────────────────── */
441441const statusStyles = `
442 .status-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
442 .status-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
443443
444444 /* ─── Hero ─── */
445445 .status-hero {
Modifiedsrc/routes/symbols.tsx+1−1View fileUnifiedSplit
@@ -32,7 +32,7 @@ symbols.use("*", softAuth);
3232
3333// ─── Scoped CSS (.sym-*) ─────────────────────────────────────────────────
3434const symStyles = `
35 .sym-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
35 .sym-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
3636
3737 .sym-head {
3838 margin-bottom: var(--space-5);
Modifiedsrc/routes/team-collaborators.tsx+1−1View fileUnifiedSplit
@@ -42,7 +42,7 @@ teamCollaboratorRoutes.use("*", softAuth);
4242
4343// ─── Scoped CSS — all classes prefixed `.tc-*` ─────────────────────────────
4444const tcStyles = `
45 .tc-wrap { max-width: 1040px; margin: 0 auto; padding: var(--space-5, 24px) var(--space-4, 24px); }
45 .tc-wrap { max-width: 1200px; margin: 0 auto; padding: var(--space-5, 24px) var(--space-4, 24px); }
4646
4747 /* ─── Back link ─── */
4848 .tc-back {
Modifiedsrc/routes/traffic.tsx+1−1View fileUnifiedSplit
@@ -30,7 +30,7 @@ traffic.use("*", softAuth);
3030 * stat-card grid pattern from `insights.tsx` + `admin-integrations`.
3131 * ───────────────────────────────────────────────────────────────────── */
3232const styles = `
33 .traffic-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
33 .traffic-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
3434
3535 .traffic-hero {
3636 position: relative;
Modifiedsrc/routes/web.tsx+2−2View fileUnifiedSplit
@@ -3593,7 +3593,7 @@ web.get("/:owner/:repo/branches", async (c) => {
35933593 <RepoNav owner={owner} repo={repo} active="code" />
35943594 <div
35953595 class="branches-wrap"
3596 style="max-width:1320px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)"
3596 style="max-width:1680px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)"
35973597 >
35983598 <header class="branches-head" style="margin-bottom:var(--space-5)">
35993599 <div
@@ -3898,7 +3898,7 @@ web.get("/:owner/:repo/tags", async (c) => {
38983898 <RepoNav owner={owner} repo={repo} active="code" />
38993899 <div
39003900 class="tags-wrap"
3901 style="max-width:1320px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)"
3901 style="max-width:1680px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)"
39023902 >
39033903 <header class="tags-head" style="margin-bottom:var(--space-5)">
39043904 <div
Modifiedsrc/routes/webhooks.tsx+1−1View fileUnifiedSplit
@@ -41,7 +41,7 @@ webhookRoutes.use("*", softAuth);
4141 * patterns from admin-integrations.tsx and admin-ops.tsx.
4242 * ───────────────────────────────────────────────────────────────────── */
4343const webhookStyles = `
44 .wh-wrap { max-width: 1120px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
44 .wh-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-6) var(--space-4); }
4545
4646 /* ─── Page heading (no hero — settings sidebar already supplies it) ─── */
4747 .wh-head { margin-bottom: var(--space-5); }
Modifiedsrc/routes/wikis.tsx+1−1View fileUnifiedSplit
@@ -46,7 +46,7 @@ const wikiRoutes = new Hono<AuthEnv>();
4646
4747// ─── Scoped CSS (.wiki-*) ────────────────────────────────────────────────
4848const wikiStyles = `
49 .wiki-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
49 .wiki-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
5050
5151 .wiki-head {
5252 margin-bottom: var(--space-5);
Modifiedsrc/routes/workflow-secrets.tsx+1−1View fileUnifiedSplit
@@ -633,7 +633,7 @@ workflowSecretsRoutes.post(
633633 * into other settings pages.
634634 * ───────────────────────────────────────────────────────────────────── */
635635const wsecStyles = `
636 .wsec-wrap { max-width: 1040px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
636 .wsec-wrap { max-width: 1200px; margin: 0 auto; padding: var(--space-5) var(--space-4); }
637637
638638 /* ─── Sub-nav ─── */
639639 .wsec-subnav {
Modifiedsrc/routes/workflows.tsx+1−1View fileUnifiedSplit
@@ -119,7 +119,7 @@ function statusPillClass(status: string, conclusion: string | null): string {
119119 * admin-integrations and error-page.
120120 * ───────────────────────────────────────────────────────────────────── */
121121const wfStyles = `
122 .wf-wrap { max-width: 1320px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
122 .wf-wrap { max-width: 1680px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
123123
124124 .wf-head {
125125 position: relative;
Modifiedsrc/views/landing-2030.tsx+1−1View fileUnifiedSplit
@@ -459,7 +459,7 @@ a{color:inherit;text-decoration:none}
459459.vstat span{color:rgba(255,255,255,.6);font-size:13.5px}
460460
461461/* quote */
462.quote-wrap{max-width:1040px;margin:0 auto;text-align:center}
462.quote-wrap{max-width:1200px;margin:0 auto;text-align:center}
463463.quote{font-family:'Inter Tight',sans-serif;font-weight:600;font-size:clamp(24px,3.6vw,38px);
464464 line-height:1.25;letter-spacing:-.02em;margin:0}
465465.quote em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
Modifiedsrc/views/layout.tsx+4−4View fileUnifiedSplit
@@ -1410,7 +1410,7 @@ const css = `
14101410 display: flex;
14111411 align-items: center;
14121412 gap: 18px;
1413 max-width: 1600px;
1413 max-width: 1920px;
14141414 margin: 0 auto;
14151415 height: 100%;
14161416 }
@@ -1746,7 +1746,7 @@ const css = `
17461746 }
17471747
17481748 main {
1749 max-width: 1600px;
1749 max-width: 1920px;
17501750 margin: 0 auto;
17511751 padding: 36px 24px 80px;
17521752 flex: 1;
@@ -1793,7 +1793,7 @@ const css = `
17931793 var(--bg);
17941794 }
17951795 footer .footer-inner {
1796 max-width: 1600px;
1796 max-width: 1920px;
17971797 margin: 0 auto;
17981798 display: grid;
17991799 grid-template-columns: 1fr auto;
@@ -1829,7 +1829,7 @@ const css = `
18291829 }
18301830 footer .footer-col a:hover { color: var(--text-strong); text-decoration: none; }
18311831 footer .footer-bottom {
1832 max-width: 1600px;
1832 max-width: 1920px;
18331833 margin: 40px auto 0;
18341834 padding-top: 24px;
18351835 border-top: 1px solid var(--border-subtle);
18361836