Bootstrap-3's default makes the active indicator 12x12 with margin 0
while inactive is 10x10 with margin 1px. With two slides the size and
margin swap shifts dot positions on every slide change, which reads as
the gap between dots changing. Force all dots to the inactive geometry
so only the fill toggles.
The hand-edited live theme stylesheet uses // for line comments in
several places — valid in SCSS, invalid in CSS. Browsers recover but the
recovery can drop the surrounding declaration depending on context. The
body{} block at the top of the file in particular had `font-size: 14px;
//13px;` which on some browsers kills the whole rule, falling back to
Bootstrap's body defaults (Helvetica, line-height 1.428). Convert the
seven // line comments to /* */ so parsing is unambiguous.
The Sass file in sass/_praxis_theme.scss had drifted from the live
_style.css over the project's life — different line-heights (34/28 vs
24), padding overrides, restructured selectors, and a few sections that
the SCSS parser couldn't accept anyway (CSS // line-comments, missing
semicolons inherited from the original hand-written CSS).
For Phase 1 visual parity the correct source of truth is the live CSS,
not a re-edited copy. Drop compile_sass, ship the live _style.css as
/css/praxis.css straight from static/, and point base.html at it. This
restores the live vertical rhythm (paragraph spacing, banner padding)
that had been subtly off.