diff --git a/frontend/apps/artcraft-website-next/DESIGN.md b/frontend/apps/artcraft-website-next/DESIGN.md
--- a/frontend/apps/artcraft-website-next/DESIGN.md
+++ b/frontend/apps/artcraft-website-next/DESIGN.md
@@ -57,3 +57,8 @@ a hypothesis under test, replaceable by a better experiment:
 - **Progressive enhancement is non-negotiable.** Reduced motion, coarse
   pointers, no-JS crawlers, and WebGL failure all receive a complete,
   legible page.
+- **Contain full-bleed decoration at the viewport edge.** The hero contrast
+  scrim and section crosshair ticks extend beyond the content rails; keep
+  horizontal clipping on their full-width sections so they cannot widen the
+  mobile document, including after scroll-driven reveals. Prefer
+  `overflow-x: clip` over `hidden` to preserve sticky section headers.
diff --git a/frontend/apps/artcraft-website-next/src/components/landing/hero.tsx b/frontend/apps/artcraft-website-next/src/components/landing/hero.tsx
--- a/frontend/apps/artcraft-website-next/src/components/landing/hero.tsx
+++ b/frontend/apps/artcraft-website-next/src/components/landing/hero.tsx
@@ -7,7 +7,7 @@ import HeroGalaxy from "./hero-galaxy";
 
 export default function Hero() {
   return (
-    <section id="hero" className="relative">
+    <section id="hero" className="relative overflow-x-clip">
       {/* Single-stage radial poster: the wordmark at the center is the
           emanation point of the galaxy — showcase cards born blurred behind
           the brand mark, swirling out along the arms. Everything that sells
diff --git a/frontend/apps/artcraft-website-next/src/components/landing/section-shell.tsx b/frontend/apps/artcraft-website-next/src/components/landing/section-shell.tsx
--- a/frontend/apps/artcraft-website-next/src/components/landing/section-shell.tsx
+++ b/frontend/apps/artcraft-website-next/src/components/landing/section-shell.tsx
@@ -20,7 +20,11 @@ export function SectionShell({
   ticks?: boolean;
 }) {
   return (
-    <section id={id} data-choreo className={`relative ${className}`}>
+    <section
+      id={id}
+      data-choreo
+      className={`relative overflow-x-clip ${className}`}
+    >
       <span
         aria-hidden
         data-draw-rule
