[object Object]

← back to Crazy News Channel

Fix real horizontal overflow from the chaos-tier-3 broadcast tilt

f961c6774fa7d4fbf8b3e9b084a6d4b7f011e653 · 2026-09-23 19:44:48 -0700 · Steve Abrams

Independently verified the Chaos Index build (0e2f7d8) against its own
"no overflow at 390/768/1024/1440" claim by driving chaos to tier-3 and
checking document.documentElement.scrollWidth directly -- it failed at
390/768/1024 in Chrome and at 1024 in WebKit. Root-caused via CSSOM rule
bisection (disabling each chaos-tier-3 rule one at a time): the 0.6deg
TV-bezel tilt on main#channelContainer -- a very tall element -- widens its
own visual bounding box (w*cos(theta) + h*sin(theta) > w), and with
overflow-x unset on html/body that extra width leaked into a real,
scrollable horizontal overflow at every breakpoint except 1440.

Fix: overflow-x:hidden on both html and body (body alone was insufficient --
verified empirically that with html's overflow left at its default, the UA
propagates body's overflow to the viewport scroller and
document.documentElement.scrollWidth can still report the wider, unclipped
value; setting it on html too stops the propagation and actually clips it).
Re-verified clean at all 4 widths in Chrome + WebKit, reduced-motion never
applies the tilt (transform:none, 0 overflow), sticky header still sticks,
klaxon/category-chip/article-link remain clickable at max tier. All prior
regressions (hash freeze, arcs, frame grammar, attribute escaping, grid
race, WebKit header) still pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011iuURMrsPBwAqMc5LgvFLH

Files touched

Diff

commit f961c6774fa7d4fbf8b3e9b084a6d4b7f011e653
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Sep 23 19:44:48 2026 -0700

    Fix real horizontal overflow from the chaos-tier-3 broadcast tilt
    
    Independently verified the Chaos Index build (0e2f7d8) against its own
    "no overflow at 390/768/1024/1440" claim by driving chaos to tier-3 and
    checking document.documentElement.scrollWidth directly -- it failed at
    390/768/1024 in Chrome and at 1024 in WebKit. Root-caused via CSSOM rule
    bisection (disabling each chaos-tier-3 rule one at a time): the 0.6deg
    TV-bezel tilt on main#channelContainer -- a very tall element -- widens its
    own visual bounding box (w*cos(theta) + h*sin(theta) > w), and with
    overflow-x unset on html/body that extra width leaked into a real,
    scrollable horizontal overflow at every breakpoint except 1440.
    
    Fix: overflow-x:hidden on both html and body (body alone was insufficient --
    verified empirically that with html's overflow left at its default, the UA
    propagates body's overflow to the viewport scroller and
    document.documentElement.scrollWidth can still report the wider, unclipped
    value; setting it on html too stops the propagation and actually clips it).
    Re-verified clean at all 4 widths in Chrome + WebKit, reduced-motion never
    applies the tilt (transform:none, 0 overflow), sticky header still sticks,
    klaxon/category-chip/article-link remain clickable at max tier. All prior
    regressions (hash freeze, arcs, frame grammar, attribute escaping, grid
    race, WebKit header) still pass.
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_011iuURMrsPBwAqMc5LgvFLH
---
 index.html | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/index.html b/index.html
index 453bae5..7d94990 100644
--- a/index.html
+++ b/index.html
@@ -19,6 +19,12 @@
 /* ---------- 1. Reset & base ---------- */
 *, *::before, *::after { box-sizing: border-box; }
 html, body { margin: 0; padding: 0; }
+/* overflow-x on body alone is not enough: with html's overflow unset, the
+   UA propagates body's overflow to the viewport's scroller, but
+   document.documentElement.scrollWidth can still report the wider,
+   unclipped value (verified empirically). Setting it on html too stops the
+   propagation and clips scrollWidth for real, everywhere. */
+html { overflow-x: hidden; }
 /* The [hidden] attribute must always win over any class-based `display`
    rule below (several elements here are toggled via `.hidden = true/false`
    in JS while also carrying a class that sets display:flex/grid). Without
@@ -34,6 +40,14 @@ body {
   line-height: 1.4;
   /* reserve room for the fixed chyron ticker so it never overlaps content */
   padding-bottom: 3rem;
+  /* Safety net: the chaos-tier-3 TV-bezel tilt rotates a very tall element
+     (main#channelContainer), and rotating a tall box even a fraction of a
+     degree widens its visual bounding box (width*cos + height*sin) beyond
+     the viewport — confirmed via CSSOM bisection to be the sole cause of a
+     real horizontal scrollbar at 390-1024px at max chaos. overflow-x:hidden
+     here clips that leak (vertical/position:sticky is untouched) without
+     changing the tilt's visible effect or any layout. */
+  overflow-x: hidden;
 }
 h1, h2, h3, p { margin: 0; }
 button { font-family: inherit; }

← 0e2f7d8 Add CHAOS INDEX: a global escalation gauge that degrades the  ·  back to Crazy News Channel  ·  Chaos Index: serialize live announcements, reserve 100% for 679e2f4 →