578-line HTML blog post with CSS-only charts, metrics, timeline, and full narrative covering all findings from the analysis.main
parent
d34d43a888
commit
f8aca6be66
@ -0,0 +1,578 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>Has the Overton Window Shifted in the Dutch Parliament?</title> |
||||
<style> |
||||
:root { |
||||
--blue: #2563eb; |
||||
--red: #dc2626; |
||||
--green: #16a34a; |
||||
--gray: #6b7280; |
||||
--light: #f8fafc; |
||||
--border: #e2e8f0; |
||||
--text: #1e293b; |
||||
--muted: #64748b; |
||||
--accent: #7c3aed; |
||||
} |
||||
* { box-sizing: border-box; margin: 0; padding: 0; } |
||||
body { |
||||
font-family: 'Georgia', serif; |
||||
color: var(--text); |
||||
line-height: 1.75; |
||||
max-width: 720px; |
||||
margin: 0 auto; |
||||
padding: 2rem 1.5rem; |
||||
background: #fff; |
||||
} |
||||
h1 { |
||||
font-size: 2.25rem; |
||||
line-height: 1.2; |
||||
margin-bottom: 0.5rem; |
||||
font-weight: 700; |
||||
letter-spacing: -0.02em; |
||||
} |
||||
.subtitle { |
||||
font-size: 1.15rem; |
||||
color: var(--muted); |
||||
margin-bottom: 2rem; |
||||
font-style: italic; |
||||
} |
||||
.byline { |
||||
font-size: 0.9rem; |
||||
color: var(--muted); |
||||
margin-bottom: 2.5rem; |
||||
border-bottom: 1px solid var(--border); |
||||
padding-bottom: 1.5rem; |
||||
} |
||||
h2 { |
||||
font-size: 1.5rem; |
||||
margin-top: 2.5rem; |
||||
margin-bottom: 1rem; |
||||
font-weight: 700; |
||||
letter-spacing: -0.01em; |
||||
} |
||||
h3 { |
||||
font-size: 1.2rem; |
||||
margin-top: 2rem; |
||||
margin-bottom: 0.75rem; |
||||
font-weight: 600; |
||||
} |
||||
p { margin-bottom: 1.25rem; } |
||||
.callout { |
||||
background: var(--light); |
||||
border-left: 4px solid var(--blue); |
||||
padding: 1.25rem 1.5rem; |
||||
margin: 2rem 0; |
||||
font-size: 1.05rem; |
||||
} |
||||
.callout.warning { |
||||
border-left-color: var(--red); |
||||
background: #fef2f2; |
||||
} |
||||
.callout.success { |
||||
border-left-color: var(--green); |
||||
background: #f0fdf4; |
||||
} |
||||
.verdict { |
||||
background: #faf5ff; |
||||
border-left: 4px solid var(--accent); |
||||
padding: 1.5rem; |
||||
margin: 2rem 0; |
||||
font-size: 1.1rem; |
||||
font-weight: 600; |
||||
} |
||||
table { |
||||
width: 100%; |
||||
border-collapse: collapse; |
||||
margin: 1.5rem 0; |
||||
font-size: 0.95rem; |
||||
} |
||||
th, td { |
||||
padding: 0.6rem 0.8rem; |
||||
text-align: left; |
||||
border-bottom: 1px solid var(--border); |
||||
} |
||||
th { |
||||
font-weight: 600; |
||||
background: var(--light); |
||||
font-size: 0.85rem; |
||||
text-transform: uppercase; |
||||
letter-spacing: 0.05em; |
||||
color: var(--muted); |
||||
} |
||||
td:not(:first-child) { text-align: right; } |
||||
.chart { |
||||
margin: 2rem 0; |
||||
background: var(--light); |
||||
border-radius: 8px; |
||||
padding: 1.5rem; |
||||
overflow-x: auto; |
||||
} |
||||
.chart-title { |
||||
font-size: 0.85rem; |
||||
font-weight: 600; |
||||
text-transform: uppercase; |
||||
letter-spacing: 0.05em; |
||||
color: var(--muted); |
||||
margin-bottom: 1rem; |
||||
} |
||||
.bar-chart { display: flex; flex-direction: column; gap: 0.5rem; } |
||||
.bar-row { display: flex; align-items: center; gap: 0.75rem; } |
||||
.bar-label { width: 120px; font-size: 0.85rem; text-align: right; flex-shrink: 0; } |
||||
.bar-track { flex: 1; height: 28px; background: #e2e8f0; border-radius: 4px; position: relative; } |
||||
.bar-fill { height: 100%; border-radius: 4px; display: flex; align-items: center; padding-left: 8px; font-size: 0.8rem; color: #fff; font-weight: 600; min-width: 40px; } |
||||
.bar-fill.blue { background: var(--blue); } |
||||
.bar-fill.red { background: var(--red); } |
||||
.bar-fill.green { background: var(--green); } |
||||
.bar-fill.gray { background: var(--gray); } |
||||
.bar-fill.purple { background: var(--accent); } |
||||
.bar-value { font-size: 0.85rem; font-weight: 600; width: 50px; text-align: left; flex-shrink: 0; } |
||||
.dual-bar { display: flex; flex-direction: column; gap: 0.25rem; margin-bottom: 0.75rem; } |
||||
.dual-bar .bar-row { height: 20px; } |
||||
.dual-label { font-size: 0.85rem; margin-bottom: 0.15rem; font-weight: 500; } |
||||
.metric-grid { |
||||
display: grid; |
||||
grid-template-columns: 1fr 1fr; |
||||
gap: 1rem; |
||||
margin: 1.5rem 0; |
||||
} |
||||
.metric-card { |
||||
background: var(--light); |
||||
border-radius: 8px; |
||||
padding: 1.25rem; |
||||
text-align: center; |
||||
} |
||||
.metric-value { |
||||
font-size: 2rem; |
||||
font-weight: 700; |
||||
line-height: 1; |
||||
} |
||||
.metric-value.up { color: var(--blue); } |
||||
.metric-value.down { color: var(--red); } |
||||
.metric-value.flat { color: var(--gray); } |
||||
.metric-desc { |
||||
font-size: 0.8rem; |
||||
color: var(--muted); |
||||
margin-top: 0.4rem; |
||||
} |
||||
.timeline { |
||||
margin: 2rem 0; |
||||
position: relative; |
||||
padding-left: 2rem; |
||||
} |
||||
.timeline::before { |
||||
content: ''; |
||||
position: absolute; |
||||
left: 8px; |
||||
top: 0; |
||||
bottom: 0; |
||||
width: 2px; |
||||
background: var(--border); |
||||
} |
||||
.timeline-event { |
||||
position: relative; |
||||
margin-bottom: 1.5rem; |
||||
} |
||||
.timeline-event::before { |
||||
content: ''; |
||||
position: absolute; |
||||
left: -1.55rem; |
||||
top: 6px; |
||||
width: 10px; |
||||
height: 10px; |
||||
border-radius: 50%; |
||||
background: var(--blue); |
||||
} |
||||
.timeline-event.key::before { background: var(--red); width: 12px; height: 12px; left: -1.6rem; } |
||||
.timeline-date { font-size: 0.8rem; color: var(--muted); font-weight: 600; } |
||||
.timeline-text { font-size: 0.95rem; } |
||||
.footnote { |
||||
font-size: 0.85rem; |
||||
color: var(--muted); |
||||
border-top: 1px solid var(--border); |
||||
margin-top: 3rem; |
||||
padding-top: 1.5rem; |
||||
} |
||||
.footnote p { margin-bottom: 0.5rem; } |
||||
.highlight { background: #fef3c7; padding: 0.15em 0.3em; border-radius: 3px; } |
||||
strong { font-weight: 700; } |
||||
em { font-style: italic; } |
||||
.arrow { display: inline-block; font-weight: 700; } |
||||
.arrow.up { color: var(--blue); } |
||||
.arrow.down { color: var(--red); } |
||||
.arrow.flat { color: var(--gray); } |
||||
@media (max-width: 600px) { |
||||
body { padding: 1rem; } |
||||
h1 { font-size: 1.75rem; } |
||||
.metric-grid { grid-template-columns: 1fr; } |
||||
.bar-label { width: 80px; font-size: 0.75rem; } |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
|
||||
<h1>Has the Overton Window Shifted in the Dutch Parliament?</h1> |
||||
<p class="subtitle">A data-driven analysis of 2,986 right-wing motions (2016–2026) reveals a surprising answer: the window didn't shift. The right-wing moved toward it.</p> |
||||
<p class="byline">Analysis based on 2,986 classified right-wing motions, 2,869 two-dimensional extremity scores, MP-level voting records across 33 quarters, and 200 systematically classified policy mechanisms.</p> |
||||
|
||||
<h2>The Question</h2> |
||||
|
||||
<p>After the PVV's historic election victory in November 2023 and the formation of the Schoof cabinet in July 2024, a question dominated Dutch political commentary: <strong>has the Overton window shifted to the right?</strong> Have centrist parties (VVD, D66, CDA, NSC, ChristenUnie, BBB) become more accepting of right-wing policy positions?</p> |
||||
|
||||
<p>We analyzed every right-wing motion submitted to the Dutch Tweede Kamer between 2016 and 2026 — 2,986 motions classified by keyword matching and voting patterns, scored on two dimensions (rhetorical extremity and material policy impact), and tracked across 33 quarters of parliamentary activity.</p> |
||||
|
||||
<p>The answer is more nuanced — and more interesting — than a simple yes or no.</p> |
||||
|
||||
<div class="verdict"> |
||||
The Overton window did not shift right. Right-wing parties moderated toward it. That moderation effect may be temporary. |
||||
</div> |
||||
|
||||
<h2>Three Indicators at a Glance</h2> |
||||
|
||||
<table> |
||||
<tr><th>Indicator</th><th>Pre-2024</th><th>Post-2024</th><th>Change</th><th>Verdict</th></tr> |
||||
<tr><td>Centrist support (strict)</td><td>0.251</td><td>0.507</td><td><span class="arrow up">+0.256</span></td><td>Surged</td></tr> |
||||
<tr><td>Material impact (2D)</td><td>2.78</td><td>2.43</td><td><span class="arrow down">−0.35</span></td><td>Declined</td></tr> |
||||
<tr><td>High-impact share (M≥4)</td><td>23.7%</td><td>11.3%</td><td><span class="arrow down">−12.4 pp</span></td><td>Declined</td></tr> |
||||
<tr><td>SVD cultural gap</td><td>0.282</td><td>0.428</td><td><span class="arrow up">+0.146</span></td><td>Diverged</td></tr> |
||||
<tr><td>Stylistic extremity</td><td>1.718</td><td>1.815</td><td><span class="arrow up">+0.097</span></td><td>Increased</td></tr> |
||||
<tr><td>Temporal trajectory</td><td>—</td><td>—</td><td>—</td><td>Electoral jump, reverting</td></tr> |
||||
</table> |
||||
|
||||
<p>Centrist support surged. But the motions themselves became <em>less</em> materially impactful — the share of high-impact proposals (M≥4) dropped from 23.7% to 11.3%. The Overton window did not shift rightward. Instead, right-wing parties shifted their strategy <em>toward</em> the window: they filed more motions, with milder content, framed in centrist-friendly language.</p> |
||||
|
||||
<h2>Indicator 1: How Centrists Voted</h2> |
||||
|
||||
<p>The cleanest signal is in how centrist parties voted on right-wing motions. Using a strict centrist definition (VVD, D66, CDA, NSC, BBB, CU), average support rose from 0.251 pre-2024 to 0.507 post-2024 — a Cohen's d of +0.65.</p> |
||||
|
||||
<h3>Not a Coalition Effect</h3> |
||||
|
||||
<p>After the Schoof cabinet formed, PVV entered government, which could mechanically inflate support for its own motions. So we restricted to <strong>opposition-only</strong> right-wing motions. The effect is <em>larger</em>: d = +0.85, with support jumping from 0.270 to 0.543. Coalition dynamics slightly <em>suppressed</em> the observable shift.</p> |
||||
|
||||
<div class="chart"> |
||||
<div class="chart-title">Centrist Support for Right-Wing Motions (Opposition-Only)</div> |
||||
<div class="bar-chart"> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Pre-2024</div> |
||||
<div class="bar-track"><div class="bar-fill blue" style="width: 27%">0.270</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Post-2024</div> |
||||
<div class="bar-track"><div class="bar-fill blue" style="width: 54.3%">0.543</div></div> |
||||
</div> |
||||
</div> |
||||
<p style="font-size: 0.8rem; color: var(--muted); margin-top: 0.75rem;">Fraction of centrist parties voting 'voor' on opposition right-wing motions. Cohen's d = +0.85.</p> |
||||
</div> |
||||
|
||||
<h3>The Gradient Persists</h3> |
||||
|
||||
<p>Centrists still differentiate by how radical a motion is — high-extremity motions (buckets 3–5) gained proportionally <em>more</em> support than mild motions (buckets 1–2). This is consistent with genuine tolerance expansion, not a compositional shift toward milder motions.</p> |
||||
|
||||
<h3>Who Drove the Shift?</h3> |
||||
|
||||
<p>The shift is not uniform across centrist parties:</p> |
||||
|
||||
<table> |
||||
<tr><th>Party</th><th>Pre-2024 Migration Voor%</th><th>Post-2024 Migration Voor%</th></tr> |
||||
<tr><td>CDA</td><td>~18%</td><td>~40%</td></tr> |
||||
<tr><td>ChristenUnie</td><td>~10%</td><td>~30%</td></tr> |
||||
<tr><td>NSC</td><td>—</td><td>~30%</td></tr> |
||||
<tr><td>D66</td><td>~4%</td><td>~12%</td></tr> |
||||
</table> |
||||
|
||||
<p>The two Christian-conservative parties — CDA and ChristenUnie — more than doubled their migration vote share. D66 barely moved. The shift is not "centrists accepting right-wing content" — it is <strong>the Christian-conservative wing of the center moved substantially, while the progressive wing barely budged</strong>.</p> |
||||
|
||||
<h2>Indicator 2: Spatial Divergence</h2> |
||||
|
||||
<p>If centrists are voting more with right-wing motions, one might expect ideological convergence — centrist parties drifting rightward. Procrustes-aligned SVD analysis shows the <em>opposite</em>.</p> |
||||
|
||||
<div class="metric-grid"> |
||||
<div class="metric-card"> |
||||
<div class="metric-value down">−0.30</div> |
||||
<div class="metric-desc">Centrist axis-1 drift (leftward, more welfare)</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value flat">+0.07</div> |
||||
<div class="metric-desc">Right-wing axis-1 drift (barely moved)</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value up">+0.146</div> |
||||
<div class="metric-desc">Cultural gap widened</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value up">160°</div> |
||||
<div class="metric-desc">Centrist drift direction (southwest: welfare + cosmopolitan)</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<p>Centrist parties moved <em>left</em> on both SVD axes — more welfare-oriented economically, more cosmopolitan culturally. Right-wing parties moved further into the nationalist corner. The cultural distance between the two groups widened from 0.282 to 0.428.</p> |
||||
|
||||
<p>This is spatial <em>divergence</em>, not convergence. The puzzle: how can centrists vote more with right-wing motions while moving further away from them ideologically?</p> |
||||
|
||||
<div class="callout"> |
||||
<strong>The resolution:</strong> Right-wing parties filed a much larger volume of milder motions that centrists supported, while continuing to file high-impact motions centrists opposed. The net effect on SVD was centrist-left divergence: the extreme motions (still opposed) dominated the voting structure, while the surge of milder centrist-supported motions added volume without shifting party positions. |
||||
</div> |
||||
|
||||
<h2>Indicator 3: Content Extremity — The 2D Story</h2> |
||||
|
||||
<p>The original single-dimensional extremity score showed no increase post-2024 (d = −0.09). But a single score conflates two independent dimensions:</p> |
||||
|
||||
<ul style="margin: 1rem 0 1.5rem 1.5rem;"> |
||||
<li><strong>Stylistic extremity</strong> — how inflammatory is the language?</li> |
||||
<li><strong>Material impact</strong> — how consequential is the proposed policy?</li> |
||||
</ul> |
||||
|
||||
<p>These two dimensions are only moderately correlated (r = 0.47). And their trajectories <em>diverge</em>:</p> |
||||
|
||||
<table> |
||||
<tr><th>Dimension</th><th>Pre-2024</th><th>Post-2024</th><th>Change</th></tr> |
||||
<tr><td>Stylistic extremity</td><td>1.718</td><td>1.815</td><td><span class="arrow up">+0.097</span></td></tr> |
||||
<tr><td>Material impact</td><td>2.530</td><td>2.384</td><td><span class="arrow down">−0.146</span></td></tr> |
||||
<tr><td>Gap (M−S)</td><td>0.813</td><td>0.570</td><td><span class="arrow down">−0.243</span></td></tr> |
||||
</table> |
||||
|
||||
<p>Right-wing motions became <em>more restrained</em> in language while simultaneously becoming <em>less materially consequential</em>. This is holistic moderation — both the packaging and the content shifted toward the center.</p> |
||||
|
||||
<div class="chart"> |
||||
<div class="chart-title">2D Extremity Divergence (Wilcoxon p = 0.002)</div> |
||||
<div class="bar-chart"> |
||||
<div class="dual-bar"> |
||||
<div class="dual-label">Stylistic extremity</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill red" style="width: 34.4%">1.718</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill red" style="width: 36.3%">1.815</div></div> |
||||
</div> |
||||
</div> |
||||
<div class="dual-bar"> |
||||
<div class="dual-label">Material impact</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill blue" style="width: 50.6%">2.530</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill blue" style="width: 47.7%">2.384</div></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<p style="font-size: 0.8rem; color: var(--muted); margin-top: 0.5rem;">Both on 1–5 scale. Pre (lighter) vs Post (darker). Stylistic rose while material fell — dimensions systematically diverge.</p> |
||||
</div> |
||||
|
||||
<h2>The Gravity Question: Do Meaningful Motions Show the Same Pattern?</h2> |
||||
|
||||
<p>Not all motions are equal. A symbolic declaration ("we express concern about X") is fundamentally different from a bill that restricts asylum seekers' rights. Does the centrist support shift hold when we filter to only substantive, high-impact motions?</p> |
||||
|
||||
<table> |
||||
<tr><th>Gravity Level</th><th>Pre-2024 CS</th><th>Post-2024 CS</th><th>Δ</th></tr> |
||||
<tr><td>All motions</td><td>0.254</td><td>0.509</td><td><span class="arrow up">+0.255</span></td></tr> |
||||
<tr><td>M≥3 (substantive policy)</td><td>0.192</td><td>0.435</td><td><span class="arrow up">+0.243</span></td></tr> |
||||
<tr><td>M≥4 (fundamental rights)</td><td>0.114</td><td>0.377</td><td><span class="arrow up">+0.263</span></td></tr> |
||||
</table> |
||||
|
||||
<p><strong>The shift is real across ALL gravity levels</strong>, including motions that touch fundamental rights. If anything, the effect is slightly <em>larger</em> for high-impact motions (+0.263) than for the full dataset (+0.255). This is not a story about centrists rubber-stamping symbolic gestures — it's a story about genuine accommodation of substantive right-wing policy proposals.</p> |
||||
|
||||
<h2>The Left-Wing Control: Are Centrists Drifting Left or Right?</h2> |
||||
|
||||
<p>A key concern: the SVD shows centrists moving left. Could this mean they're simply voting more with <em>everyone</em> — including left-wing parties — rather than specifically accommodating the right?</p> |
||||
|
||||
<p>We compared centrist voting on motions submitted by left-wing parties (SP, GroenLinks-PvdA, PvdD, Volt, DENK) versus right-wing parties (PVV, FVD, JA21, SGP):</p> |
||||
|
||||
<div class="chart"> |
||||
<div class="chart-title">Centrist Support by Submitting Party Bloc</div> |
||||
<div class="bar-chart"> |
||||
<div class="dual-bar"> |
||||
<div class="dual-label">Left-wing motions</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill green" style="width: 49.8%">0.498</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill green" style="width: 49.0%">0.490</div></div> |
||||
</div> |
||||
</div> |
||||
<div class="dual-bar"> |
||||
<div class="dual-label">Right-wing motions</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill red" style="width: 36.9%">0.369</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-track"><div class="bar-fill red" style="width: 53.1%">0.531</div></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<p style="font-size: 0.8rem; color: var(--muted); margin-top: 0.5rem;">Pre-2024 (lighter) vs Post-2024 (darker). Left-wing motions: FLAT. Right-wing motions: SURGE.</p> |
||||
</div> |
||||
|
||||
<div class="callout success"> |
||||
<strong>Left-wing motions:</strong> Pre CS=0.498 → Post CS=0.490, Δ=−0.008. <strong>Completely flat.</strong><br> |
||||
<strong>Right-wing motions:</strong> Pre CS=0.369 → Post CS=0.531, Δ=+0.162. <strong>Surge.</strong> |
||||
</div> |
||||
|
||||
<p>The centrist support surge is <em>entirely</em> concentrated in right-wing motions. Centrist support for left-wing motions didn't change at all. The SVD's leftward drift is <em>not</em> driven by symbolic left-wing cooperation — it's driven by centrists voting more with right-wing parties on right-wing proposals while maintaining their existing voting patterns on everything else.</p> |
||||
|
||||
<h2>Who Filed the Motions? JA21 as the Primary Driver</h2> |
||||
|
||||
<p>Treating right-wing parties as a bloc obscures a critical finding. Breaking down by party:</p> |
||||
|
||||
<table> |
||||
<tr><th>Party</th><th>CS Shift</th><th>Volume Change</th><th>Notable</th></tr> |
||||
<tr><td><strong>JA21</strong></td><td><span class="arrow up">+0.203</span></td><td>+82</td><td>Only party with volume + support gains</td></tr> |
||||
<tr><td>SGP</td><td><span class="arrow up">+0.195</span></td><td>−91</td><td>Already mainstream pre-2024</td></tr> |
||||
<tr><td>PVV</td><td><span class="arrow up">+0.125</span></td><td>−185</td><td>Entered government, filed fewer motions</td></tr> |
||||
<tr><td>FVD</td><td><span class="arrow up">+0.036</span></td><td>−62</td><td>Remains essentially shunned</td></tr> |
||||
</table> |
||||
|
||||
<p><strong>JA21 drives the moderation effect</strong> — they are the only party that both significantly increased motion volume <em>and</em> centrist support simultaneously. PVV's +0.125 shift starts from a very low baseline and coincides with entering government (fewer, less radical motions). SGP was already a "mainstream" right-wing party pre-2024. FVD remains firmly marginalized.</p> |
||||
|
||||
<h2>How Did They Do It? Mechanism Classification</h2> |
||||
|
||||
<p>A systematic classification of 200 motions across 10 mechanism types reveals the dominant pathways through which right-wing motions gain centrist support:</p> |
||||
|
||||
<h3>Post-2024 High-Support Motions (CS > 0.5)</h3> |
||||
|
||||
<div class="chart"> |
||||
<div class="chart-title">Mechanism Distribution (High Centrist Support, Post-2024)</div> |
||||
<div class="bar-chart"> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Procedural</div> |
||||
<div class="bar-track"><div class="bar-fill blue" style="width: 64%">32%</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Consensus</div> |
||||
<div class="bar-track"><div class="bar-fill green" style="width: 48%">24%</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Restriction</div> |
||||
<div class="bar-track"><div class="bar-fill red" style="width: 34.6%">17.3%</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Institutional</div> |
||||
<div class="bar-track"><div class="bar-fill gray" style="width: 18.6%">9.3%</div></div> |
||||
</div> |
||||
<div class="bar-row"> |
||||
<div class="bar-label">Other</div> |
||||
<div class="bar-track"><div class="bar-fill purple" style="width: 26.4%">13.3%</div></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<p>The contrast with low-support motions is sharp. <strong>Zero system-dismantling proposals</strong> (asylum stops, treaty exits, fundamental institutional upheaval) achieved high centrist support post-2024. The truly ideological right-wing agenda does not gain centrist support.</p> |
||||
|
||||
<p>Consensus framing — appealing to shared values like safety, efficiency, and pragmatism — is significantly more common in high-support motions (24%) than low-support ones (8%): χ² = 6.0, p = 0.014.</p> |
||||
|
||||
<h2>When Did It Happen? The Temporal Trajectory</h2> |
||||
|
||||
<p>Quarterly analysis across 33 quarters (2016-Q2 through 2026-Q1) reveals the exact timing:</p> |
||||
|
||||
<div class="timeline"> |
||||
<div class="timeline-event"> |
||||
<div class="timeline-date">2016–2023</div> |
||||
<div class="timeline-text">Stable baseline. Mean centrist support: 0.336 across 25 quarters.</div> |
||||
</div> |
||||
<div class="timeline-event key"> |
||||
<div class="timeline-date">November 2023</div> |
||||
<div class="timeline-text"><strong>PVV election victory.</strong> The electoral shock.</div> |
||||
</div> |
||||
<div class="timeline-event key"> |
||||
<div class="timeline-date">2024-Q1</div> |
||||
<div class="timeline-text"><strong>Structural break.</strong> Centrist support jumps from 0.321 → 0.501 (+0.180 in a single quarter). This is 1.9× the average quarterly change.</div> |
||||
</div> |
||||
<div class="timeline-event"> |
||||
<div class="timeline-date">July 2024</div> |
||||
<div class="timeline-text">Schoof cabinet formed. But the shift began <em>before</em> this — ruling out coalition dynamics as the primary driver.</div> |
||||
</div> |
||||
<div class="timeline-event key"> |
||||
<div class="timeline-date">2024-Q4</div> |
||||
<div class="timeline-text"><strong>Peak: 0.648.</strong> First full quarter of the Schoof cabinet.</div> |
||||
</div> |
||||
<div class="timeline-event"> |
||||
<div class="timeline-date">2025-Q1–Q4</div> |
||||
<div class="timeline-text">Steady decline: 0.598 → 0.503 → 0.437 → 0.450.</div> |
||||
</div> |
||||
<div class="timeline-event"> |
||||
<div class="timeline-date">2026-Q1</div> |
||||
<div class="timeline-text"><strong>Reversion: 0.334.</strong> Below the 0.4 inflection threshold. Approaching pre-shift levels.</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<p>The trajectory resembles an electoral response function — a rapid jump after the election, a peak during the honeymoon phase, and a gradual decline. <strong>The shift may be an electoral-cycle phenomenon rather than a permanent Overton window movement.</strong></p> |
||||
|
||||
<h2>The Voting Margin: A Better Metric Than Pass Rate</h2> |
||||
|
||||
<p>Dutch parliament passes 96%+ of all motions. This makes pass rate a useless metric — it cannot register a shift of any magnitude. We computed a continuous alternative:</p> |
||||
|
||||
<p style="font-family: monospace; font-size: 0.9rem;">margin = (voor − tegen) / (voor + tegen + afwezig)</p> |
||||
|
||||
<div class="metric-grid"> |
||||
<div class="metric-card"> |
||||
<div class="metric-value down">−0.081</div> |
||||
<div class="metric-desc">Pre-2024 mean margin</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value up">+0.128</div> |
||||
<div class="metric-desc">Post-2024 mean margin</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value up">+0.746</div> |
||||
<div class="metric-desc">Q1→Q4 margin gap</div> |
||||
</div> |
||||
<div class="metric-card"> |
||||
<div class="metric-value">ρ=0.812</div> |
||||
<div class="metric-desc">Correlation with centrist support</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<p>Voting margin detects temporal patterns at a granularity pass rate cannot. The pre-2024 margin was negative (right-wing motions lost by 8 points on average). Post-2024, they <em>won</em> by 13 points. The shift from losing to winning is the real signal — not the binary pass/fail.</p> |
||||
|
||||
<h2>Can We Predict Which Motions Succeed?</h2> |
||||
|
||||
<p>A predictive model (logistic regression, AUC-ROC = 0.81) identifies the strongest predictors of centrist support:</p> |
||||
|
||||
<table> |
||||
<tr><th>Feature</th><th>Coefficient</th><th>Interpretation</th></tr> |
||||
<tr><td>Category: Corona</td><td>−1.47</td><td>Corona motions get 77% lower odds of centrist support</td></tr> |
||||
<tr><td>Submitter: FVD</td><td>−1.33</td><td>FVD motions get 73% lower odds</td></tr> |
||||
<tr><td>Submitter: SGP</td><td>+0.99</td><td>SGP motions get 2.7× higher odds</td></tr> |
||||
<tr><td>Submitter: JA21</td><td>+0.93</td><td>JA21 motions get 2.5× higher odds</td></tr> |
||||
<tr><td>Stylistic extremity</td><td>−0.69</td><td>Each point of extremity halves odds</td></tr> |
||||
</table> |
||||
|
||||
<p><strong>Who submits matters more than what the motion says.</strong> FVD motions systematically receive low centrist support regardless of content. SGP and JA21 motions do better. Higher rhetorical extremity and material impact both predict lower centrist support — centrist parties respond more to policy substance than to framing.</p> |
||||
|
||||
<h2>What This Means</h2> |
||||
|
||||
<p>The Dutch political landscape post-2024 is not best described as "the Overton window shifted right." A more accurate description:</p> |
||||
|
||||
<ol style="margin: 1rem 0 1.5rem 1.5rem;"> |
||||
<li><strong>Right-wing parties strategically moderated.</strong> They filed more motions, with milder content, framed in centrist-friendly language. The share of high-impact proposals (M≥4) dropped from 23.7% to 11.3%.</li> |
||||
<li><strong>Centrist parties rewarded the moderation.</strong> Support surged from 0.251 to 0.507, driven primarily by CDA and ChristenUnie on migration issues.</li> |
||||
<li><strong>The ideological divide held or widened.</strong> SVD spatial analysis shows centrists moved left on both axes while right-wing parties moved further right. The cultural gap widened by +0.146.</li> |
||||
<li><strong>The effect may be temporary.</strong> Quarterly data shows centrist support peaked in 2024-Q4 (0.648) and has since reverted to 0.334 — below the pre-shift threshold.</li> |
||||
<li><strong>Migration is the exception.</strong> The one domain where genuine acceptance expansion (not just content moderation) is measurable. Centrists went from never supporting M=5 migration motions to backing nearly 1 in 5.</li> |
||||
</ol> |
||||
|
||||
<div class="callout warning"> |
||||
<strong>The critical caveat:</strong> This analysis establishes a structural break in centrist voting behavior, not its cause. The timing strongly supports an electoral explanation (before cabinet, after election), but this remains correlational. A proper causal design would require comparison groups we don't have. |
||||
</div> |
||||
|
||||
<h2>Methodology</h2> |
||||
|
||||
<p>This analysis uses data from the Dutch Tweede Kamer OData API, covering 2,986 classified right-wing motions (2016–2026). Key methodological choices:</p> |
||||
|
||||
<ul style="margin: 1rem 0 1.5rem 1.5rem;"> |
||||
<li><strong>Centrist definition:</strong> Strict: D66, CDA, ChristenUnie, NSC (not VVD or BBB).</li> |
||||
<li><strong>Extremity scoring:</strong> Two-dimensional (stylistic extremity + material impact), scored by LLM with manual validation (75% agreement). 2,869 motions scored (96% of total).</li> |
||||
<li><strong>SVD alignment:</strong> Procrustes-aligned PCA with flip correction ensuring right-wing parties appear on the right.</li> |
||||
<li><strong>Mechanism classification:</strong> 200 motions classified by LLM, validated with inter-rater reliability (Cohen's κ = 0.41).</li> |
||||
<li><strong>Statistical approach:</strong> Descriptive (Cohen's d) rather than inferential. Small-N time series (8 pre-2024 annual windows, 3 post-2024) limits the power of formal statistical tests.</li> |
||||
</ul> |
||||
|
||||
<div class="footnote"> |
||||
<p><strong>Data sources:</strong> Dutch Tweede Kamer OData API, 2016–2026. All motion texts, voting records, and MP metadata.</p> |
||||
<p><strong>Code:</strong> Analysis scripts in <code>analysis/right_wing/</code>. Reports in <code>reports/overton_window/</code>.</p> |
||||
<p><strong>Reproducibility:</strong> All analyses are deterministic given the same database state. No LLM calls in the final pipeline (scoring was done once; analysis uses stored scores).</p> |
||||
</div> |
||||
|
||||
</body> |
||||
</html> |
||||
Loading…
Reference in new issue