diff --git a/src/app/benchmarks/[slug]/page.tsx b/src/app/benchmarks/[slug]/page.tsx index ed36aac1b..bdb0d1a57 100644 --- a/src/app/benchmarks/[slug]/page.tsx +++ b/src/app/benchmarks/[slug]/page.tsx @@ -401,7 +401,7 @@ export default async function BenchmarkPage({ long-tail query phrases land in the first ~200 words crawlers weight heavily. Optional - omitted when the YAML doesn't set it. */} {benchmark.seoIntro && ( -
+
{benchmark.seoIntro .split(/\n\n+/) .map((para, i) => ( @@ -434,7 +434,7 @@ export default async function BenchmarkPage({ />
-

+

{benchmark.abstract}

diff --git a/src/app/globals.css b/src/app/globals.css index 50114e343..3d988d984 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -327,10 +327,18 @@ textarea:focus-visible { html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; - /* Safety net: clip any rogue horizontal overflow at the root so a - single wide child (e.g. a min-w table) can never push the whole - page off-screen on mobile. Per-component fixes still target the - intrinsic min-widths so the clip rarely fires. `clip` (not hidden) - avoids creating a scroll container that breaks position: sticky. */ +} + +/* Safety net: clip any rogue horizontal overflow on BOTH html and body. + iOS Safari + Telegram WKWebView sometimes ignore `overflow-x: clip` + on alone and still let a wide child push the page past 100vw. + Applying it to body too — plus capping body width at 100vw — covers + the WebView edge cases. `clip` (not `hidden`) avoids creating a + scroll container, so position: sticky on the header keeps working. */ +html, +body { overflow-x: clip; } +body { + max-width: 100vw; +}