<g id=”cross”>
<line class=”cls-1″ x1=”7″ x2=”25″ y1=”7″ y2=”25″ />
<line class=”cls-1″ x1=”7″ x2=”25″ y1=”25″ y2=”7″ />
</g>
</svg>
</div>
<form role=”search” method=”get” class=”search-form” action=”https://www.fairobserver.com/search”>
<input type=”text” id=”search” class=”search-field” placeholder=”Enter your search term here…”
value=”” name=”keyword” autocomplete=”off”>
<button type=”submit” id=”search_submit” class=”search-submit”>
<svg fill=”none” height=”20″ stroke=”#fff” stroke-linecap=”round” stroke-linejoin=”round”
stroke-width=”2″ viewBox=”0 0 24 24″ width=”24″ xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”10.5″ cy=”10.5″ r=”7.5″ />
<line x1=”21″ x2=”15.8″ y1=”21″ y2=”15.8″ />
</svg>
</button>
<div class=”search-suggestions”>
<ul id=”suggestions-list”>
</ul>
</div>
</form>
</div>
<!–navigation –>
<nav class=”fo-navigation pos-r” itemscope itemtype=”http://schema.org/Navigation”>
<div class=”fo-HeaderNavigation-Menu”>
<div class=”container”>
<div class=”fo-login-link ttp”> <a href=”#”>
<span>Login</span> </a>
</div>
<div class=”nav-first-col col-n”>
<h4>Sections <div class=”fo-search-row d-flex”>
<svg fill=”none” height=”20″ stroke=”#000″ stroke-linecap=”round”
stroke-linejoin=”round” stroke-width=”2″ viewBox=”0 0 24 24″ width=”24″
xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”10.5″ cy=”10.5″ r=”7.5″ />
<line x1=”21″ x2=”15.8″ y1=”21″ y2=”15.8″ />
</svg>
<span> Search</span>
</div>
</h4>
<div class=”first-n-col”>
<div class=”first-menu-col”>
<ul class=”list-style-none”>
<li><a href=”https://www.fairobserver.com/category/politics/”>Politics</a></li>
<li><a href=”https://www.fairobserver.com/category/economics/”>Economics & Finance</a></li>
<li><a href=”https://www.fairobserver.com/category/business/”>Business &
Entrepreneurship</a></li>
<li><a href=”https://www.fairobserver.com/category/culture/”>Art & Culture</a></li>
<li><a href=”https://www.fairobserver.com/category/more/science/”>Science & Technology</a>
</li>
<li><a href=”https://www.fairobserver.com/category/more/environment/”>Environment & Climate
Change</a></li>
<li><a href=”https://www.fairobserver.com/category/world-news”>World</a></li>
<li> <a href=”https://www.fairobserver.com/category/world-leaders-news”>World Leaders</a>
</li>
</ul>
<ul class=”list-style-none”>
<li> <a href=”https://www.fairobserver.com/category/american-news/”>The Americas</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/europe/”>Europe</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/middle_east_north_africa/”>Middle
East & North Africa</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/africa/”>Africa</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/asia_pacific/”>Asia</a> </li>
<li> <a href=”https://www.fairobserver.com/category/united-states”>United States</a> </li>
<li> <a href=”https://www.fairobserver.com/category/world-news/india-news”>India</a> </li>
<li> <a href=”https://www.fairobserver.com/category/world-news/china-news”>China</a> </li>
</ul>
<ul class=”list-style-none desktop-m”>
<li> <a href=”https://www.fairobserver.com/category/russian-newsrussia-news”>Russia</a>
</li>
<li> <a href=”https://www.fairobserver.com/about”>About</a> </li>
<li> <a href=”https://www.fairobserver.com/authors”>Authors</a> </li>
<li> <a href=”https://www.fairobserver.com/publications”>Publications</a> </li>
<li> <a href=”https://www.fairobserver.com/events”>Events</a> </li>
<li> <a href=”https://www.fairobserver.com/category/multimedia”>Multimedia</a> </li>
<li> <a href=”https://www.fairobserver.com/category/video”>Videos </a> </li>
<li> <a href=”https://www.fairobserver.com/category/podcasts”>Podcasts</a> </li>
</ul>
<ul class=”list-style-none mobile-m”>
<li> <a href=”https://www.fairobserver.com/events”>Events</a> </li>
<li> <a href=”https://www.fairobserver.com/category/russian-newsrussia-news”>Russia</a>
</li>
<li> <a href=”https://www.fairobserver.com/publications”>Publications</a> </li>
<li> <a href=”https://www.fairobserver.com/authors”>Authors</a> </li>
<li> <a href=”https://www.fairobserver.com/about”>About</a> </li>
</ul>
</div>
<div class=”nav-2n-col col-n”>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/Article”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/interactive/christmas-explained-religion-news-christianity-43892/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2021/07/Christmas-explained-80×80.jpg” alt=”Fair Observer” title=””
width=”80″ height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/multimedia/” rel=”bookmark”
title=””>MULTIMEDIA</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/interactive/christmas-explained-religion-news-christianity-43892/”
rel=”bookmark”
title=”Permanent Link to Christmas Explained”>
Christmas Explained </a>
</h2>
</div>
</article>
</div>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/VideoObject”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/region/asia_pacific/fo-talks-from-shrimp-among-whales-to-strategic-power-how-south-korea-is-shaping-geopolitics/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2025/12/From-Shrimp-Among-Whales-to-Strategic-Power-How-South-Korea-Is-Shaping-Geopolitics-Fair-Observer-80×80.jpeg” alt=”Fair Observer” title=””
width=”80″ height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/video/” rel=”bookmark”
title=””>VIDEOS</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/region/asia_pacific/fo-talks-from-shrimp-among-whales-to-strategic-power-how-south-korea-is-shaping-geopolitics/”
rel=”bookmark”
title=”Permanent Link to FO° Talks: From Shrimp Among Whales to Strategic Power: How South Korea Is Shaping Geopolitics”>
FO° Talks: From Shrimp Among Whales to Strategic Power: How South Korea Is Shaping Geopolitics </a>
</h2>
</div>
</article>
</div>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/PodcastEpisode”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/politics/fo-podcasts-the-forbidden-c-word-class-in-america/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Kent–80×80.jpg” alt=”Fair Observer” title=””
width=”80″ height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/podcasts/” rel=”bookmark”
title=””>PODCASTS</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/politics/fo-podcasts-the-forbidden-c-word-class-in-america/”
rel=”bookmark”
title=”Permanent Link to FO° Podcasts: The Forbidden C-word, Class in America”>
FO° Podcasts: The Forbidden C-word, Class in America </a>
</h2>
</div>
</article>
</div>
</div>
</div>
</div>
<div class=”nav-3rd-col col-n”>
<h4>PUBLICATION</h4>
<article itemscope itemtype=”http://schema.org/CreativeWork”>
<div class=”fo-post-img”>
<a href=”https://www.fairobserver.com/publications/fair-observer-monthly-november-2025/”>
<img src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Nove-book-covar-225×290.jpg” alt=”Fair Observer Monthly: November 2025″
width=”225″ height=”290″ />
</a>
</div>
</article>
</div>
<!– donate banner –>
<div class=”menu-donate”>
<div class=”menu-donate-content”>
<h2>Support Fair Observer</h2>
<p>We rely on your support for our independence, diversity and quality.</p>
</div>
<div class=”menu-donate-btn”>
<a class=”site-btn” href=”https://www.fairobserver.com/donate/”>Donate</a>
</div>
</div>
<!– End donate banner –>
</div>
</div>
<div class=”fo-HeaderNavigation-Overlay”></div>
</nav>
<!– end navigation –>
<div class=”container d-flex flex-wrap align-item-center justify-space-between pos-r”>
<!– left menu and logo –>
<div class=”menu-logo d-flex align-item-center”>
<button class=”fo-header-whitcher”>
<div class=”hamburger-box”>
<div class=”hamburger-inner”></div>
</div>
</button>
<div class=”fo-search-row d-flex”>
<svg fill=”none” height=”20″ stroke=”#000″ stroke-linecap=”round” stroke-linejoin=”round”
stroke-width=”2″ viewBox=”0 0 24 24″ width=”24″ xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”10.5″ cy=”10.5″ r=”7.5″ />
<line x1=”21″ x2=”15.8″ y1=”21″ y2=”15.8″ />
</svg>
<span>Search</span>
</div>
</div>
<!–logo–>
<div class=”fo-logo” itemscope itemtype=”http://schema.org/logo”>
<a class=”off_scroll” href=”https://www.fairobserver.com/”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red.png”
alt=”Fair Observer Logo” width=”250″ height=”56″ title=”Fair Observer Logo” /></a>
</div>
<!– <div class=”fo-logo” itemscope itemtype=”http://schema.org/logo”>
<a class=”off_scroll” href=”https://www.fairobserver.com/”>
<img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red-250.webp”
srcset=”
https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red-250.webp 250w,
https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red-500.webp 500w,
https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red.webp 600w
”
sizes=”(max-width: 600px) 250px, 250px”
width=”250″
height=”56″
alt=”Fair Observer Logo”
title=”Fair Observer Logo”
>
</a>
</div> –>
<!–end logo–>
<!–search and button–>
<div class=”fo-search-button-row d-flex flex-wrap justify-space-between align-item-center pos-r”>
<div class=”fo-top-btn”>
<ul class=”d-flex flex-wrap justify-space-between align-item-center list-style-none”>
<li class=”fo-donatebtn”>
<a href=”https://www.fairobserver.com/crowd-funding”><span>Donate</span> </a>
</li>
</ul>
</div>
</div>
</div>
</header>
<script>
jQuery(document).ready(function () {
var site_url = “https://www.fairobserver.com”;
jQuery(‘.search-field’).on(‘input’, function () {
var keyword = jQuery(this).val();
if (keyword.length > 0) {
jQuery(‘.search-suggestions’).show();
jQuery(‘#suggestions-list’).html(
“<li><a href='” + site_url + “/search?keyword=” + keyword +
“‘>Just search for: ” + keyword + “</a></li><li><a href='” + site_url +
“/search?keyword=” + keyword + “&search_in=authors’>In Authors: ” + keyword +
“</a></li><li><a href='” + site_url + “/search?keyword=” + keyword +
“&search_in=categories’>In Categories: ” + keyword + “</a></li>”
);
} else {
jQuery(‘.search-suggestions’).hide();
}
});
});
</script>
<div class=”print_logo”>
<a href=”https://www.fairobserver.com/”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fairovserver-logo-red.png”
alt=”Fair Observer Logo” width=”276″ height=”68″ title=”Fair Observer Logo” /></a>
</div>
<div class=”wrap”>
<div id=”primary” class=”content-area”>
<main id=”main” class=”site-main” role=”main”>
<!– <div class=”back-newsletter”><a href=”https://www.fairobserver.com/newsletters/fowednesday/”>Back to fowednesday</a>
</div> –>
<article id=”post-159933″ class=”post-159933 post type-post status-publish format-standard has-post-thumbnail hentry category-europe category-history category-politics category-world-news tag-ancient-greek-politics tag-democracy-and-tyranny tag-fall-of-democracy tag-greek-city-states tag-markov-model-politics tag-mixed-constitution tag-plato-and-aristotle tag-political-cycles tag-polybius-anacyclosis tag-roman-republic-origins wl_entity_type-article pmpro-has-access entry”>
<div class=”fo-wednseday sep-newsletter”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fo-wednesday1.png” alt=””>
<div class=”posted-on-single-post newsletter-date”>
Tuesday, December 30, 2025 </div>
</div>
<header class=”entry-header”>
<!– category name –>
<span class=”cate-name si-post”>
<a href=”https://www.fairobserver.com/category/region/europe/” rel=”bookmark”
title=”Europe”>
Europe </a>
</span>
<!– End category name –>
<h1 class=”entry-title”>The Fall of Democracy is a Markov Process</h1><h2 class=’main-sub-title’></h2><div class=’post-summary’>Greek philosophers built theories of political change to explain the rise and fall of their city-states. A modern analysis uses data from 1,035 poleis and Markov simulations to test Polybius’s idea of cyclical government. The findings suggest that stability depends on a balanced mix of monarchy, oligarchy and democracy.</div> <div class=”single-authors”>By <span id=”authorname”></span></div>
<!– Authors name –>
<!– <div class=”single-authors”>By <span id=”authorname”></span></div> –>
<!– End Authors name –>
<div class=”posted-on-single-post” style=”display:none”>
Tuesday, December 30, 2025 </div>
</header>
<!– .entry-header –>
<div class=”post-thumbnail”>
<div class=”breadcrumbs_seo” style=”clear:both”>
</div>
<!– <a href=”https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”> –>
<img width=”980″ height=”653″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Roman-Republic.jpg” class=”attachment-twentyseventeen-featured-image size-twentyseventeen-featured-image wp-post-image” alt=”The Fall of Democracy is a Markov Process” decoding=”async” fetchpriority=”high” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/Roman-Republic.jpg 980w, https://www.fairobserver.com/wp-content/uploads/2025/12/Roman-Republic-300×200.jpg 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/Roman-Republic-150×100.jpg 150w” sizes=”(max-width: 980px) 100vw, 980px” style=”width:100%;height:66.63%;max-width:980px;” /> <p class=”caption”>
The Roman Republic, or really, the Senate, its most powerful arm. Cesare Maccari, Public domain, via Wikimedia Commons. </p>
<!– </a> –>
</div>
<!– .post-thumbnail –>
<div class=”content-row”>
<div class=”entry-meta”>
<div style=”flex-direction: column;” class=”author-img “>
<div class=”d-flex align-item-center” style=”flex-direction: column;”>
<a href=”https://www.fairobserver.com/author/dylan-black/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Dylan-Black-150×150.jpg” width=”40″ height=”40″ /></a>
<a href=”https://www.fairobserver.com/login/?redirect_to=https%3A%2F%2Fwww.fairobserver.com%2Fhistory%2Fthe-fall-of-democracy-is-a-markov-process%2F” class=”follow-btn-login ” style=””><i class=”bi bi-plus”></i> Follow</a> </div>
</div>
<div class=”date-author-single-post list-date-author-single-post”>
<div style=”display:none” class=”byline-single-post multiauthor”>
<a href=”https://www.fairobserver.com/author/dylan-black”>Dylan Black</a> </div>
<div class=”social_medai_share”>
<h5>SHARE</h5>
<div class=”social_medai_share”>
<div class=”vid-page top-social-icon”>
<div id=”crestashareiconincontent” class=”cresta-share-icon first_style”>
<div class=”sbutton crestaShadow facebook-cresta-share” id=”facebook-cresta-c”>
<a rel=”nofollow” href=”https://www.facebook.com/sharer.php?u=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”
title=”Share to Facebook” onclick=”window.open(this.href, ‘targetWindow’, ‘toolbars=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=640,height=320,left=200,top=200’);
return false;”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”facebook-f”
class=”svg-inline–fa fa-facebook-f fa-w-10″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 320 512″>
<path fill=”currentColor”
d=”M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z”>
</path>
</svg>
</a>
</div>
<!– <div class=”sbutton crestaShadow facebook-cresta-share” id=”massanger-cresta-c”>
<a href=”fb-messenger://share/?link=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&app_id=916184228770270″>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”facebook-messenger” class=”svg-inline–fa fa-facebook-messenger fa-w-16″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 512 512″>
<path fill=”currentColor” d=”M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z”></path>
</svg>
</a>
</div> –>
<div class=”sbutton crestaShadow twitter-cresta-share” id=”twitter-cresta-c”>
<a rel=”nofollow”
href=”https://twitter.com/intent/tweet?text=The+Fall+of+Democracy+is+a+Markov+Process &url=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&via=myfairobserver”
title=”Share to Twitter” onclick=”window.open(this.href, ‘targetWindow’, ‘toolbars=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=640,height=320,left=200,top=200’);
return false;”>
<svg xmlns=”http://www.w3.org/2000/svg” height=”1em” viewBox=”0 0 512 512″>
<path
d=”M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z”>
</path>
</svg>
</a>
</div>
<div class=”sbutton crestaShadow linkedin-cresta-share” id=”linkedin-cresta-c”>
<a rel=”nofollow”
href=”https://www.linkedin.com/shareArticle?mini=true&url=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&title=The+Fall+of+Democracy+is+a+Markov+Process&source=https://www.fairobserver.com”
title=”Share to LinkedIn” onclick=”window.open(this.href, ‘targetWindow’, ‘toolbars=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=640,height=320,left=200,top=200’);
return false;”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”linkedin-in”
class=”svg-inline–fa fa-linkedin-in fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 448 512″>
<path fill=”currentColor”
d=”M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z”>
</path>
</svg>
</a>
</div>
<!– <div class=”sbutton crestaShadow whatsapp-cresta-share” id=”whatsapp-cresta-c”>
<a href=”whatsapp://send?text=The+Fall+of+Democracy+is+a+Markov+Process – https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/” data-action=”share/whatsapp/share”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”whatsapp” class=”svg-inline–fa fa-whatsapp fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″>
<path fill=”currentColor” d=”M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z”></path>
</svg>
</a>
</div> –>
<div class=”sbutton crestaShadow whatsapp-cresta-share” id=”whatsapp-cresta-c”>
<a href=”https://api.whatsapp.com/send?text=The+Fall+of+Democracy+is+a+Markov+Process – https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/” target=”_blank”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”whatsapp”
class=”svg-inline–fa fa-whatsapp fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 448 512″>
<path fill=”currentColor”
d=”M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z”>
</path>
</svg>
</a>
</div>
<div class=”sbutton crestaShadow email-cresta-share” id=”email-cresta-c”>
<a
href=”mailto:?Subject=The+Fall+of+Democracy+is+a+Markov+Process&Body=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/ https://www.fairobserver.com”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fas” data-icon=”envelope”
class=”svg-inline–fa fa-envelope fa-w-16″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 512 512″>
<path fill=”currentColor”
d=”M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z”>
</path>
</svg>
</a>
</div>
<!– <div class=”bookmark”>
<div class=”sbutton crestaShadow bookmark-cresta-share” id=”bookmark-cresta-c”>
<div class=”nonmember-bookmark-tag”>
<span id=”trigger-modal” class=”bookmarkspan” title=”Click to bookmark “>
<a>
<svg aria-hidden=”true” focusable=”false” data-prefix=”far” data-icon=”bookmark”
class=”svg-inline–fa fa-bookmark fa-w-12″ role=”img”
xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 384 512″>
<path fill=”currentColor”
d=”M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z”>
</path>
</svg>
</a>
</span>
</div>
</div>
<div class=”view-bookmark-list-button” style=”display: none”>
<h2>Saved Successfully.</h2>
<p>This article saved into your bookmarks. Click here to view your bookmarks. </p>
<a href=”https://www.fairobserver.com/cbxbookmark/” target=”_blank” class=””>
<span> My Bookmarks</span>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/external-link-icon-white.png”
alt=”” style=”width: 20px”>
</a>
</div>
</div> –>
<!– <div class=”sbutton crestaShadow email-cresta-share” id=”email-cresta-c”>
<a href=”https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”>
<svg xmlns=”http://www.w3.org/2000/svg” height=”1em” viewBox=”0 0 512 512″> –>
<!–! Font Awesome Free 6.4.0 by @fontawesome – https://fontawesome.com License – https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. –>
<!– <path d=”M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z” />
</svg>
</a>
</div> –>
</div>
</div>
</div> </div>
</div>
</div><!– .entry-meta –>
<div class=”entry-content-right”>
<div class=”date-time-bookmark d-flex flex-wrap justify-space-between border-bottom”>
<div class=”posted-on-single-post”>
December 30, 2025 10:57 EDT
</div>
<div class=”new_icons_wrap”>
<!– Comment button –>
<div class=”article_comment_icon”>
<a href=”javascript:void(0);” id=”scrollToComments”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/comment-badge.svg”
width=”24″ height=”24″ alt=” user comment feature”>
</a>
<div class=”tooltip”>Check out our comment feature!</div>
</div>
<div class=”bookmark”>
<div class=”sbutton crestaShadow bookmark-cresta-share” id=”bookmark-cresta-c”>
<div class=”nonmember-bookmark-tag”>
<span id=”trigger-modal” class=”bookmarkspan” title=”Click to bookmark “>
<a><img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/bookmark-off.svg”
width=”24″ height=”25″ alt=”visitor can bookmark”></a>
</span>
</div>
</div>
<!– Add the new button for viewing bookmark list –>
<div class=”view-bookmark-list-button” style=”display: none”>
<h2>Saved Successfully.</h2>
<p>This article saved into your bookmarks. Click here to view your bookmarks. </p>
<a href=”https://www.fairobserver.com/cbxbookmark/” target=”_blank” class=””>
<span> My Bookmarks</span>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/external-link-icon-white.png”
alt=”” style=”width: 20px”>
</a>
</div>
</div>
<!– Print button –>
<div id=”printButton” title=”Print this article”>
<a href=”javascript:void(0);”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/foicon-v1_print.svg”
width=”24″ height=”25″ alt=”print article page”>
</a>
</div>
</div>
<script>
// Smooth scroll to comment section
document.getElementById(‘scrollToComments’).addEventListener(‘click’, function () {
const commentsWrapper = document.querySelector(‘.comments-wrapper’);
if (commentsWrapper) {
commentsWrapper.scrollIntoView({ behavior: ‘smooth’ });
}
});
// Print functionality
document.getElementById(‘printButton’).addEventListener(‘click’, function () {
window.print(); // Trigger the browser’s print functionality
});
</script>
</div>
<div class=”entry-content full_post abcd”>
<p>How do democracies die? With thunderous applause? <a href=”https://www.starwars.com/video/so-this-is-how-liberty-dies” target=”_blank” rel=”noreferrer noopener nofollow”>Padme</a> certainly thinks so, but would Polybius agree?</p>
<p>The ancient Greeks were, quite reasonably, concerned by this question, because their democracies died all the time. In fact, this happened so much that the most eminent philosophers and historians of the classical period developed a theory that rationalizes the rise and fall of democracies, oligarchies and tyrannies. In this article, we will investigate whether their theory, called <em>anacyclosis,</em> holds up under scrutiny, and by scrutiny, I mean Monte Carlo simulations of government transition based on historical data from 1,035 Greek city-states. But first, some history.</p>
<h2 class=”wp-block-heading”>The <em>poleis</em> of Ancient Greece</h2>
<p>The peculiarities of classical Greece make empirical theories of political revolution much easier to imagine than in, say, the Persian Empire, which was a hereditary monarchy for pretty much its entire history. The dominant mode of social organization in the archaic and classical Greek periods is the <em>polis, </em>the city-state. Usually, there’s an independent mother city (Athens, Sparta, etc.) that politically, economically and culturally dominates its surrounding hinterland. Each city has its own constitution, or form of government, but shares a common Greek culture and language with its neighboring <em>poleis</em>.</p>
<p>This social structure is as dynamic as it is unstable, and there were <em>many</em> political revolutions. The ancient world’s most sophisticated theories of political evolution grew out of this dynamic — they classify government into a few categories based on which group holds power, and posit that they devolve sequentially from higher to lower forms. Let’s take a quick look.</p>
<h2 class=”wp-block-heading”>Governmental types in Ancient Greek thought</h2>
<p>The <em>Inventory of Archaic and Classical Greek Poleis</em>, about which we will have much more to say later, gives a nice introduction to the types of constitution.</p>
<p style=”padding-left: 50px;”>
In Greek political theory <em>politeiai</em> [political institutions] were divided into types according to how many people constituted and manned the principal organs of government. Basically, there were three constitutional types: the rule of the one, the few and the many. Pindar is the first we know who distinguished between rule by a tyrant, or the wise, or the whole army. About a generation later, Herodotos has a debate about the three basic types of constitution, here described as <em>demos</em>, <em>oligarchia</em> and <em>monarchia</em>. [In the early 4th century BC], Plato called the three forms <em>tyrannis</em>, <em>aristokratia</em> and <em>demokratia</em>.</p>
<h2 class=”wp-block-heading”>Linear evolution in Plato’s <em>Republic</em></h2>
<p>Plato made a finer distinction, dividing government into five categories of constitution in his <a href=”https://en.wikipedia.org/wiki/Republic_(Plato)” target=”_blank” rel=”noreferrer noopener nofollow”><em>Republic</em></a><em>, </em>and additionally giving their sequence of devolution.</p>
<p><strong>Aristocracy</strong> (rule by the best) → <strong>Timocracy</strong> (rule by honor/worth/money) → <strong>Oligarchy</strong> (rule by the few) → <strong>Democracy</strong> (rule by the people/mob) → <strong>Tyranny</strong> (rule by one man).</p>
<p>Plato writes that governments devolve in this order, from best to worst, in a <em>linear</em> fashion, terminating in tyranny. I went back and checked the <em>Republic</em> to see if Plato makes any claims of a cyclical nature, and I don’t <em>think</em> that it does, but the <em>Republic</em> is very hard to read generally, so I’m not 100% sure.</p>
<p>Aristotle, a student of Plato, the tutor of Alexander the Great and a giant of philosophy in his own right, generally agreed with Plato, but distinguished between a good and a bad form of monarchy (<em>basileia</em> versus <em>tyrannis</em>), minority rule (<em>aristokratia</em> versus <em>oligarchia</em>) and majority rule (<em>politeia</em> versus <em>demokratia</em>). His conception, however, was also linear (as best as I understand).</p>
<h2 class=”wp-block-heading”><em>Anacyclosis </em>in Polybius’s <em>Histories</em></h2>
<p>Polybius was a Greek hostage and historian in Rome during Rome’s rise to power, and he improved upon Plato and Aristotle’s framework. Polybius divided government into three categories, each with a virtuous and corrupt form, for a total of six constitutions. They are as follows, from his <a href=”https://en.wikipedia.org/wiki/The_Histories_(Polybius)” target=”_blank” rel=”noreferrer noopener nofollow”><em>Histories</em></a>:</p>
<p>The virtuous aristocracy is corrupted into an oligarchy, which is overthrown by the people as a democracy, which degenerates into mob rule or <em>ochlocracy</em>.<strong><em> </em></strong>A great leader emerges from mob chaos to create a monarchy, which descends into tyranny before being overthrown by the noble aristocracy, beginning the cycle anew. He called this cycle <em>anacyclosis.</em></p>
<figure class=”wp-block-image size-large”><img decoding=”async” width=”1024″ height=”655″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-1-1024×655.jpeg” alt=”” class=”wp-image-159934″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-1-1024×655.jpeg 1024w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-1-300×192.jpeg 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-1-150×96.jpeg 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-1.jpeg 1456w” sizes=”(max-width: 1024px) 100vw, 1024px” /><figcaption class=”wp-element-caption”>Anacyclosis as a Diagram.</figcaption></figure>
<p><a href=”https://anacyclosis.org/portfolio/what-is-anacyclosis/” target=”_blank” rel=”noreferrer noopener nofollow”>The Anacyclosis Institute</a> (to whom I must give credit for the genesis of this article), offers the following comments on this process:</p>
<p style=”padding-left: 50px;”>
There is good reason to think that Polybius and his predecessors arrived at this theory empirically. After observing the rise and fall of many hundreds of city-states, most of which cycled through several of the governmental forms mentioned above, Greek political thinkers concluded that these transitions from one form to another were not random. Rather, they seemed to follow simple and recognizable patterns. For example, tyrants were frequently overthrown by groups of aristocrats, while popular revolutions frequently overthrew oligarchies and ushered in democratic rule. Interestingly, the reverse of these trends (aristocracies being overthrown by tyrants or democracies turning into oligarchies) were statistically less likely to occur.</p>
<p style=”padding-left: 50px;”>
Through such observations, Polybius extrapolated the likely complete course of political evolution for an independent state whose lifecycle is not cut short by war or disaster.</p>
<p>Polybius, Plato and Aristotle essentially agree on the pattern — we go from rule-by-few (aristocracy/oligarchy) to rule-by-many (democracy) to rule-by-one (monarchy/tyranny), with an optional cycle back to rule-by-few.</p>
<p>Polybius thinks there’s a way out of this cycle. If one combines all three forms of government into a <em>mixed</em> constitution, a blend of democracy, aristocracy and monarchy, one can create a stable system exempt from <em>anacyclosis. </em>Polybius thought that the Roman Republic was the embodiment of this mixed constitution and the reason for its strength and longevity. The Founding Fathers of the United States of America, and John Adams in particular, were obsessed with Polybius and designed the structure of the United States government to avoid <em>anacyclosis</em>.</p>
<p>So to recap, we have several explicit claims, of which various authors claim subsets:</p>
<ol class=”wp-block-list”>
<li>Political evolution follows a predictable pattern of oligarchy → democracy → monarchy.</li>
<li>This pattern may be linear (Plato) or cyclical (Polybius).</li>
<li>The reverse transitions are unlikely/unnatural.</li>
</ol>
<p>Unfortunately for Polybius, he lacked the tools to quantitatively investigate his theory. Fortunately for us, we are much better than Polybius at linear algebra.</p>
<h2 class=”wp-block-heading”>Political evolution is a Markov process</h2>
<p>Implicit in <em>anacyclosis</em> is actually a fourth claim, the most important claim, that <em>anacyclosis</em> is “memoryless.” In other words, the next type of government <em>depends</em> <em>only on the current type of government</em>: Democracies always devolve to tyrannies, independent of what preceded democracy. In the theory of stochastic processes, this property is called the <a href=”https://en.wikipedia.org/wiki/Markov_property” target=”_blank” rel=”noreferrer noopener nofollow”>Markov property</a>. We can use the Markov property to evaluate the validity of Polybius’ claim.</p>
<p>First, though, we need data. Fortunately, the Copenhagen Polis Centre has done most of the work for us, and <a href=”https://global.oup.com/academic/product/an-inventory-of-archaic-and-classical-poleis-9780198140993?cc=us&lang=en&” target=”_blank” rel=”noreferrer noopener nofollow”>compiled</a> <em>An Inventory of Archaic and Classical Poleis</em>, a monumental work that compiles the existing data/metadata on the 1,035 identifiable Greek city-states of the Archaic and Classical periods (c.650-325 BC). Among the data found in the <em>Inventory </em>is a list of city-states and their known government types, ordered by date.</p>
<figure class=”wp-block-image size-large”><img decoding=”async” width=”1024″ height=”655″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-3-1024×655.jpeg” alt=”” class=”wp-image-159944″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-3-1024×655.jpeg 1024w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-3-300×192.jpeg 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-3-150×96.jpeg 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-3.jpeg 1206w” sizes=”(max-width: 1024px) 100vw, 1024px” /><figcaption class=”wp-element-caption”>One of the appendices from the <em>Inventory.</em></figcaption></figure>
<p>This data is actually all we need in order to pretty fairly evaluate the validity of the theory! For each city-state, we can simply extract ordered pairs of government types from this list and count the frequency with which these transitions occur. Because <em>anacyclosis</em> is a Markov chain (remember that means memoryless), these transition frequencies completely define the system! Note that this method completely ignores <em>staying in the same state</em> as a transition of interest (which requires much more sophisticated data parsing). So this method will probe <em>only </em>when governments change between distinct types.</p>
<p>This will make more sense as we actually construct the transition matrix and learn how to analyze Markov processes more generally.</p>
<h2 class=”wp-block-heading”>An introduction to Markov processes through the inventory of Greek <em>poleis</em></h2>
<p>A Markov process, named after the Russian mathematician <a href=”https://en.wikipedia.org/wiki/Andrey_Markov” target=”_blank” rel=”noreferrer noopener nofollow”>Andrey Markov</a>, is a type of random process. It has discrete states and a notion of time. At each time step in the process, each state <em>X </em>has a probability <em>P(X→Y) </em>of transitioning to state <em>Y. </em>The Markov (memoryless) property ensures that this probability is the <em>only</em> relevant characteristic of the system.</p>
<p>Markov processes are often represented by graphs that abstract these transition probabilities, like the one below from Wikipedia showing a two-state Markov process.</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”260″ height=”260″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-17.png” alt=”” class=”wp-image-159946″ style=”width:831px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-17.png 260w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-17-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-17-96×96.png 96w” sizes=”auto, (max-width: 260px) 100vw, 260px” /><figcaption class=”wp-element-caption”>A Markov process with two states, A and E. A transitions to A with probability P(A→A) = 0.6, and to E with probability P(A→E) = 0.4. E transitions to E with probability P(E→E) = 0.3, and to A with probability P(E→A) = 0.7</figcaption></figure>
<p>In essence, a Markov process is the simplest form of a probabilistic state machine that still has interesting behavior. For <em>any</em> process that can be assumed to be stochastic, or perhaps a system complex enough that its behavior approximates a stochastic process, we can model it as a Markov process and immediately extract nontrivial, useful properties (as we shall see later).</p>
<p>Processes that (approximately) have the Markov property show up everywhere. Weather prediction, stock price prediction and population genetics are all examples of approximately-Markov processes. In each of these cases, while the real system may have complex dependencies, a Markov model captures enough of the important behavior to be very useful while still being mathematically tractable.</p>
<p>So how would we construct a Markov model for political evolution in Greek <em>poleis</em>? Like any good scientists, the first thing we have to do is create a good visualization of our data, and stare at it.</p>
<h2 class=”wp-block-heading”>The data</h2>
<p>Looking at our dataset, we have six distinct types of constitutions listed by the <em>Inventory.</em> I’ll quote briefly from it here:</p>
<p style=”padding-left: 50px;”>
In the <em>Inventory</em>, when we classify the constitution of a polis, we distinguish between <em>basileia</em>, <em>tyrannis</em>, <em>oligarchia</em> and <em>demokratia</em>, but we ignore variants of the latter two types, and all attestations of <em>basileia</em> belong in the Archaic period…</p>
<p style=”padding-left: 50px;”>
In a few cases of serious doubt, we have used <em>Mix.</em> to describe a polis with an unidentifiable mixture of characteristics.</p>
<p>The inventory also has another category in the data not listed above, <em>politeia, </em>which Aristotle defined as the “good” form of democracy, but is also the general term for a “polity” in Greek. Both of these last forms, <em>politeia </em>and “mixed,” are very rare in the <em>Inventory</em> and slightly confusing.</p>
<p>We should also note that the <em>Inventory </em>says that the term <em>basileia </em>might change meaning over time, as it is only attested in the Archaic period and not the Classical period. Second, that “in actual fact, all polis constitutions were mixed,” to one degree or another.</p>
<p>But for a first cut, let’s ignore these complexities and take a look at the data. First, the total frequency of government types:</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”800″ height=”600″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-21.png” alt=”” class=”wp-image-159950″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-21.png 800w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-21-300×225.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-21-150×113.png 150w” sizes=”auto, (max-width: 800px) 100vw, 800px” /><figcaption class=”wp-element-caption”>Total Frequency of Government Types Chart.</figcaption></figure>
<p>The total counts of each type of government in the inventory. I manually removed “klerouchy” and “dynasteia”, additionally (Pol.) in the very first line, because I’m unclear what it means. Each of these occurred only once.</p>
<p>We note that the mixed and <em>politeia</em> types are very rare and not likely to affect our results. Excellent! Let’s ignore them. Second, if we combine <em>basileia </em>and <em>tyrannis</em>, the constitutions are roughly equal in frequency between the autocratic, oligarchic and democratic categories. Interesting! We’ll keep the two types of monarchy separate for now.</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”800″ height=”800″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-20.png” alt=”” class=”wp-image-159949″ style=”width:840px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-20.png 800w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-20-300×300.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-20-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-20-96×96.png 96w” sizes=”auto, (max-width: 800px) 100vw, 800px” /><figcaption class=”wp-element-caption”>Frequency of occurrence for initial and final constitutional types</figcaption></figure>
<p>Next, we can plot the frequency that any constitutional type appears first or last. If Plato is correct, we would expect to see lots of oligarchies initially and lots of tyrannies finally. We … might see some evidence for that? We really see more of a transfer between oligarchy and democracy from this graph, and the number of monarchies slightly decreases, but not a lot. I don’t think Plato gets much help from the data here.</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”800″ height=”800″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-23.png” alt=”” class=”wp-image-159952″ style=”width:840px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-23.png 800w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-23-300×300.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-23-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-23-96×96.png 96w” sizes=”auto, (max-width: 800px) 100vw, 800px” /><figcaption class=”wp-element-caption”>The frequency of occurrence of transitions between constitutional types. Note that there are some self → self transitions, which appear infrequently in the data, likely due to poor or incomplete records recovered of an intervening government type.</figcaption></figure>
<p>Finally, we can plot the frequency of government transition types. We define this naively, taking the sequence of governments in the inventory, and plotting the frequency of each ordered pair, <em>i.e., demokratia, oligarchia, basileia</em> would count as one occurrence each of <em>dem.→ol., ol.→bas..</em></p>
<p>This last plot is pretty much the key to Markov processes. We can simply reinterpret each column of the above heatmap as a <em>probability of transition between states</em>. Thus, by normalizing each column of the transition frequency heatmap, we get a <em>transition matrix</em> <em>T</em> that defines the process. Because our system has the Markov (memoryless) property, the single-step transition matrix <em>entirely</em> defines the process — it is a Markov process.</p>
<p>How does the model work in practice? Let’s enumerate the types of government as the ordered list:</p>
<p>[<em>bas., tyr., ol., dem., mix., pol.</em>]</p>
<p>Then we can define a one-hot vector <em>v </em>that corresponds to my state, <em>e.g.,</em> [1, 0, 0, 0, 0, 0] = the system is in the <em>basileia</em> state. The probability of transitioning to any other state is then given by a vector <em>p</em>, equal to the transition matrix <em>T </em>times <em>v.</em></p>
<p>Let’s explicitly construct <em>T </em>for our data. Since “mixed” and <em>politeia</em> are ill-defined and occur so infrequently, I feel fairly justified in simply dropping those columns from the data.</p>
<p>From this matrix, we can then recreate the Markov-process-style node graph.</p>
<figure class=”wp-block-image size-large”><img loading=”lazy” decoding=”async” width=”1024″ height=”726″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-2-1024×726.jpeg” alt=”” class=”wp-image-159940″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-2-1024×726.jpeg 1024w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-2-300×213.jpeg 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-2-150×106.jpeg 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-2.jpeg 1037w” sizes=”auto, (max-width: 1024px) 100vw, 1024px” /></figure>
<h2 class=”wp-block-heading”>Assessing validity</h2>
<p>We’re now in a position to partially assess the validity of <em>anacyclosis </em>as it relates to the data, in a first-order sort of fashion.</p>
<p>The first claim is that political evolution proceeds in the order oligarchy → democracy → monarchy. Our data is fine-grained enough that we can split monarchy into its “virtuous” and “corrupt” forms, <em>basileia</em> and <em>tyrannis</em>, and so let’s look for oligarchy → democracy → <em>basileia </em>→ <em>tyrannis </em>in the data.</p>
<p>Looking first at the <em>basileia</em> → <em>tyrannis</em> transition, we actually find excellent support for this in the data! <em>Basileia</em> to <em>tyrannis</em> transitions happen about 13 times more often than the reverse. However, there’s a confounding variable. Remember that the <em>Inventory</em> says that <em>basileia </em>is attested only in the Archaic period, so any <em>basileia</em> → <em>tyrannis</em> transitions might be the result of redefinition as opposed to transition. Let’s call this one a partial thumbs up, though.</p>
<p>How about the posited oligarchy → democracy transition? Not so much. These two nodes have the tightest connection in the graph, and the transition rates are essentially even, with oligarchy to democracy being ever so slightly more favorable than the reverse.</p>
<p>Finally, what about democracy → monarchy? It seems as though democracies don’t <em>ever</em> go to <em>basileiai</em>, which certainly doesn’t <em>support</em> the theory of <em>anacyclosis, </em>but again, this could be a definition thing — if we started the chain at <em>basileia</em>, we could have passed through the Archaic period before we got back around, when <em>basileiai </em>had turned into <em>tyrannides</em>. Unfortunately, though, the democracy → tyranny transition (29%) is much less common than tyranny → democracy (56%). This gets even worse if we consider <em>basileia</em> the same thing as <em>tyrannis</em>, which has even more asymmetry between the two transition frequencies. So the democracy to monarchy transition doesn’t find much support here; in fact, more the reverse.</p>
<p>In fact, what <em>is</em> the most common cycle? Let’s re-plot the Markov chain where we combine <em>tyrannis</em> and <em>basileia</em> into “monarchy.”</p>
<figure class=”wp-block-image size-large”><img loading=”lazy” decoding=”async” width=”1024″ height=”723″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-4-1024×723.jpeg” alt=”” class=”wp-image-159953″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-4-1024×723.jpeg 1024w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-4-300×212.jpeg 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-4-150×106.jpeg 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-4.jpeg 1074w” sizes=”auto, (max-width: 1024px) 100vw, 1024px” /><figcaption class=”wp-element-caption”>Markov chain plot with <em>basileia</em> and <em>tyrannis</em> combined into monarchy.</figcaption></figure>
<p>This doesn’t really help us much. The most plausible cycle by far is simply oscillation between democracy and oligarchy, which does not at <em>all</em> fit into the <em>anacyclosis</em> paradigm. It seems we require a more sophisticated analysis to extract the probable dynamics.</p>
<h2 class=”wp-block-heading”>Markov chain Monte Carlo</h2>
<p>Okay, well then, what <em>does</em> happen to a hypothetical average Greek polis? We can use a Monte-Carlo style simulation to find out.</p>
<p>“Monte Carlo” is a cute name for a very simple technique — if you have the rules of a system and want to understand its behavior, just simulate a whole bunch of random instances of that system and average the results. The simulation method is called “Monte Carlo” because one of the inventors <a href=”https://en.wikipedia.org/wiki/Monte_Carlo_method#History” target=”_blank” rel=”noreferrer noopener nofollow”>had</a> an uncle who gambled too much in real Monte Carlo.</p>
<p>Nevertheless, this simple technique is extremely powerful. To implement, we</p>
<ol class=”wp-block-list”>
<li>Choose an initial one-hot state <em>v.</em></li>
<li>Multiply by our transition matrix to get <em>p = Tv,</em> our vector of state probabilities.</li>
<li>Choose a random state from <em>p</em>, weighted by the probabilities of each state, <em>i.e.,</em> if <em>p = [0.1, 0.2, 0.3, 0.4], </em>we have a 10%, 20%, 30% and 40% probability, respectively, of choosing states 1, 2, 3, 4.</li>
<li>Repeat this for <em>n</em> timesteps.</li>
<li>Repeat steps 1-4 for <em>m</em> simulations.</li>
</ol>
<p>Let’s try this out, keeping the <em>basileia/tyrannis</em> distinction, just for fun.</p>
<figure class=”wp-block-image size-large”><img loading=”lazy” decoding=”async” width=”683″ height=”1024″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-5-683×1024.jpeg” alt=”” class=”wp-image-159955″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-5-683×1024.jpeg 683w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-5-200×300.jpeg 200w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-5-150×225.jpeg 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-5.jpeg 800w” sizes=”auto, (max-width: 683px) 100vw, 683px” /><figcaption class=”wp-element-caption”>Markov Chain Monte-Carlo Anacyclosis Analysis. I run 1000 separate simulations with 20 steps each, and plot the fraction of state occupancy at each timestep, along with a 95% confidence interval. The confidence interval is the range in which 95% of averaged occupancy values are expected to fall.</figcaption></figure>
<p>So keeping <em>basileia</em> as a separate category doesn’t do much, its occupancy fraction immediately hits zero (on average) and never recovers. The most distinct feature by far appears to be the oligarchy-democracy oscillation, settling after ten timesteps into an even mixture of democracy and oligarchy (remember this is an <em>average; </em>at each timestep, the system can only be in one state). The <em>tyrannis</em> initialization appears to cause the settling to happen faster, but doesn’t differ in the essential trend. We <em>also</em> appear to stabilize at a steady state for any initialization parameter! Perhaps this is the fabled “mixed” constitution that Polybius thought made the Roman state so powerful and stable? We shall formalize this thought later.</p>
<p>Before we do steady-state analysis, we should check for common cycles. Let’s plot the most common cycles we find, dropping the <em>basileia/tyrannis</em> distinction (both are monarchy) for clarity. 1000 more simulations…</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”780″ height=”483″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-16.png” alt=”” class=”wp-image-159945″ style=”aspect-ratio:1.6149267251140371;width:840px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-16.png 780w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-16-300×186.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-16-150×93.png 150w” sizes=”auto, (max-width: 780px) 100vw, 780px” /><figcaption class=”wp-element-caption”>The most common cycles in 1000 simulations of 20 timesteps, with basileia and tyrannis condensed to a single category, monarchy.</figcaption></figure>
<p>The most common cycle by far is the 2-state democracy → oligarchy → democracy cycle. The next most common state is this same cycle, twice in a row!</p>
<p>But wait, if we look down the list at the fourth most common cycle, it’s <strong>democracy → monarchy → oligarchy → democracy</strong>, that’s <em>anacyclosis</em>! It is the most common three-state cycle! We found it!</p>
<p>Did we just prove <em>anacyclosis</em> is real? Well, uh, it depends on what you mean, I guess.</p>
<p>Instead of answering the above, difficult question, I choose to reinterpret the original theory in light of the data — when Polybius wrote that “<em>anacyclosis </em>consists of predictable, cyclic transitions from democracy → monarchy→ oligarchy<em>,”</em> he clearly must have meant that given the empirical transition probabilities derived from a Markov model of Greek city state constitutional data, a Monte Carlo simulation will show the most common three-state cycle is democracy → monarchy → oligarchy.</p>
<p>I think this is a very reasonable translation of the original Ancient Greek.</p>
<h2 class=”wp-block-heading”>Mixed states and the stable distribution</h2>
<p>Now, Polybius was particularly interested in ways <em>out</em> of this endless cycle. How can we find a stable governmental state? Both our answer and Polybius’ answer are the same, and are already hinted at by the results of the simulations. We noted earlier that the simulations, regardless of initialization state, seemed to settle into a predictable distribution of government types, roughly 40% oligarchy, 40% democracy and 20% tyranny. This was also Polybius’ answer, that a mixed state was a stable point of this Markov process.</p>
<p>Polybius took as his example par excellence the constitution of the Roman Republic, which had popular assemblies (democracy), the Senate (oligarchy), and two consuls with executive power (a dash of monarchy). He felt that this mixture was much more stable than any pure state, and lent Rome its fabulous power.</p>
<p>According to our model, Polybius is absolutely correct.</p>
<p>How can we find the stable state of our Markov process? Well, first, we extend the model to allow for mixed states by not forcing our state <em>v</em> to be one-hot. That’s fairly easy. But how do we find the long-term stable state, if there is one?</p>
<p>Let’s think geometrically about our transition matrix. For a 2 × 2 transition matrix, we can visualize its action by seeing how it transforms a set of vectors arranged along the unit circle in the plane.</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”977″ height=”389″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-14.png” alt=”” class=”wp-image-159942″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-14.png 977w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-14-300×119.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-14-150×60.png 150w” sizes=”auto, (max-width: 977px) 100vw, 977px” /><figcaption class=”wp-element-caption”>The action of a linear transformation on the unit circle</figcaption></figure>
<p>Under this linear transformation, the unit circle becomes an ellipse. The special directions that remain unchanged (up to scaling) by this transformation are called eigenvectors. These are precisely the principal axes of the resulting ellipse.</p>
<p>Mathematically, an eigenvector v with eigenvalue λ is defined by the equation:</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”112″ height=”33″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-12.png” alt=”” class=”wp-image-159939″/></figure>
<p>Where <em>T </em>is our transition matrix, but this is very helpful for us, because if I now apply <em>T</em> twice, I get:</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”110″ height=”38″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-9.png” alt=”” class=”wp-image-159935″/></figure>
<p>Thus, when we apply T repeatedly, each application multiplies the magnitude of <em>v</em> by λ while preserving its direction.</p>
<p>This means:</p>
<ul class=”wp-block-list”>
<li>If λ = 1, <em>v</em> maintains its magnitude: it’s a stable state.</li>
<li>If |λ| > 1, <em>v</em> grows without bound.</li>
<li>If |λ| < 1, <em>v</em> shrinks toward zero.</li>
</ul>
<p>For Markov transition matrices, the <a href=”https://en.wikipedia.org/wiki/Perron%E2%80%93Frobenius_theorem” target=”_blank” rel=”noreferrer noopener nofollow”>Perron-Frobenius theorem</a> guarantees that 1 is <em>always</em> an eigenvalue, and all other eigenvalues have absolute value strictly less than 1, meaning they decay to zero after a long time. When the Markov chain is also <a href=”https://gregorygundersen.com/blog/2019/10/28/ergodic-markov-chains/” target=”_blank” rel=”noreferrer noopener nofollow”>ergodic</a>, meaning that you can visit any state from any other state, and you never get stuck in deterministic cycles, this unit-eigenvalue direction corresponds to a unique stable distribution called the <a href=”https://en.wikipedia.org/wiki/Discrete-time_Markov_chain#Stationary_distributions” target=”_blank” rel=”noreferrer noopener nofollow”><em>stationary distribution</em></a><em>.</em></p>
<p>Any initial distribution will converge to this stationary distribution as we repeatedly apply the transition matrix. We actually saw this in our Monte Carlo simulations — did you notice how, no matter the initial state, we always ended up with the same fraction of oligarchy/democracy/monarchy?</p>
<p>So we can quite quickly find the stationary distribution of our transition matrix by performing an eigendecomposition of our transition matrix. We solve:</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”110″ height=”38″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-9.png” alt=”” class=”wp-image-159936″/></figure>
<p>For all <em>v</em> and <em>λ.</em></p>
<p>Let’s take our transition matrix, where we combine <em>basileia</em> and <em>tyrannis</em> into monarchy.</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”447″ height=”158″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-11.png” alt=”” class=”wp-image-159938″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-11.png 447w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-11-300×106.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-11-150×53.png 150w” sizes=”auto, (max-width: 447px) 100vw, 447px” /></figure>
<p>The eigendecomposition of <em>T</em> yields three eigenvectors.</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”530″ height=”384″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-18.png” alt=”” class=”wp-image-159947″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-18.png 530w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-18-300×217.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-18-150×109.png 150w” sizes=”auto, (max-width: 530px) 100vw, 530px” /></figure>
<p>Which does indeed have a unit-valued eigenvector! To find the stationary distribution, we only need to normalize the eigenvector with eigenvalue 1, by dividing it by its column sum (it’s a probability vector, remember).</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”348″ height=”122″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-13.png” alt=”” class=”wp-image-159941″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-13.png 348w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-13-300×105.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-13-150×53.png 150w” sizes=”auto, (max-width: 348px) 100vw, 348px” /></figure>
<p>We can visualize this final distribution with a bar graph. Bar graphs are the most useless graph type, but they are visually arresting due to large bars of solid primary colors, so I’m making one.</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”727″ height=”579″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-10.png” alt=”” class=”wp-image-159937″ style=”aspect-ratio:1.2556539105089868;width:837px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-10.png 727w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-10-300×239.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-10-150×119.png 150w” sizes=”auto, (max-width: 727px) 100vw, 727px” /><figcaption class=”wp-element-caption”>The stationary distribution of the transition matrix when <em>basileia </em>and <em>tyrannis</em> are combined into monarchy.</figcaption></figure>
<p>This graph shows the <em>anacyclotically stable distribution </em>of the <em>Markov poleis model. </em>I don’t know if the word <em>anacyclotically</em> will ever really catch on in popular discourse, but I think it really rolls off the tongue. Perhaps instead we should call it the <em>Polybian distribution. </em>It does look remarkably similar to the Roman system, which was deeply suspicious of kingship but recognized its utility, and hence had two equal consuls in the place of one tyrant, as well as theoretically balanced popular assemblies and an aristocratic/oligarchic Senate.</p>
<p>So that’s it! This is the final confirmation that Polybius was on the right track, and that if he had only been better at linear algebra, he could have quantitatively estimated the proportion of democracy, monarchy, and oligarchy to inject into a <em>politeia</em> to stabilize it against the inevitable <em>anacyclosis</em>, assuming of course that by <em>anacyclosis</em> he actually meant the stochastic Markov process we’ve been working with this whole time, and not the actual anacyclosis that he wrote down, which is given minimal support by the actual data. Easy!</p>
<p>I should note, for future work, that there is at least one major oversight — for any given year in even the most fractious Greek polis, the probability of government transitioning to an entirely new category is small. In other words, I could have structured this process around a timestep being a single year, instead of an arbitrary “government transition time,” and gotten very different-looking processes, with the same long-run transition probabilities. Oh well, you always have to leave work for the next researcher.</p>
<h2 class=”wp-block-heading”>Addendum: methodological validity</h2>
<p>Mere minutes after posting this article, I had a thought — is the Greek <em>poleis</em> data set even capable of detecting an <em>anacyclosis</em> cycle in principle?</p>
<p>Let’s say I have a sequence A → B → C → A → …, like our <em>poleis</em> dataset. Then, because of spotty recordkeeping, let’s say I decimate this sample by randomly deleting entries, so maybe I’d get A → B → __ → A → … Without knowledge of the original sample, there’s a spurious B → A transition in our data!</p>
<p>So the question I want to ask here is, given a sequence composed of a pure cycle <em>S </em>= A → B → C → A …, if I randomly sample this sequence by throwing away all but a fraction <em>f</em> of the data points, can I still detect my sequence above noise?</p>
<p>Formally, let’s ask the question in the following way: I sample a fraction <em>f</em> of the data points from my sequence <em>S,</em> and construct a Markov transition matrix <em>T </em>by naively measuring transition frequency between neighbors in my sampled sequence. How often will I measure that the probability of the original sequence is greater than that of the reverse sequence? This is a sensible definition of “noise” because if we are solely interested in three-element sequences with unique elements, there are exactly two, A→B→C and C→B→A.</p>
<figure class=”wp-block-image size-full”><img loading=”lazy” decoding=”async” width=”727″ height=”128″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-19.png” alt=”” class=”wp-image-159948″ srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-19.png 727w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-19-300×53.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-19-150×26.png 150w” sizes=”auto, (max-width: 727px) 100vw, 727px” /></figure>
<p>This sounds like an interesting analytical problem, but keeping with the Monte Carlo theme of this article and my own laziness, let’s just try it in code. I’ll construct a sequence of length 100 (A→B→C→…), decimate it, keeping a fraction <em>f</em> of the data, construct my matrix <em>T</em>, and then check whether the original cycle probability exceeds the reverse cycle probability.</p>
<p>The results are as follows.</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”600″ height=”600″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-15.png” alt=”” class=”wp-image-159943″ style=”width:835px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-15.png 600w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-15-300×300.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-15-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-15-96×96.png 96w” sizes=”auto, (max-width: 600px) 100vw, 600px” /><figcaption class=”wp-element-caption”>Probability of detecting A → B → C cycle in the 100-element sequence A → B → C, sampled with fraction <em>f</em> . 1000 simulations.</figcaption></figure>
<p>And for completeness, does this give sensible results when run it on the reverse sequence C → B → A? In other words, what’s the spurious detection rate for a sequence that doesn’t contain the cycle at all?</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”600″ height=”600″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-22.png” alt=”” class=”wp-image-159951″ style=”width:839px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-22.png 600w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-22-300×300.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-22-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-22-96×96.png 96w” sizes=”auto, (max-width: 600px) 100vw, 600px” /><figcaption class=”wp-element-caption”>Probability of detecting A → B → C cycle in the 100-element sequence C → B → A, sampled with fraction <em>f</em> . 1000 simulations.</figcaption></figure>
<p>Yes. This test does indeed give sensible results.</p>
<p>How about a random sequence? What do we expect on average?</p>
<figure class=”wp-block-image size-full is-resized”><img loading=”lazy” decoding=”async” width=”600″ height=”600″ src=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-24.png” alt=”” class=”wp-image-159954″ style=”width:840px;height:auto” srcset=”https://www.fairobserver.com/wp-content/uploads/2025/12/image-24.png 600w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-24-300×300.png 300w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-24-150×150.png 150w, https://www.fairobserver.com/wp-content/uploads/2025/12/image-24-96×96.png 96w” sizes=”auto, (max-width: 600px) 100vw, 600px” /></figure>
<p>Yes, this also makes sense. For a random sequence, we detect that A→B→C is more probable than the reverse about 50% of the time. I think this is a <a href=”https://en.wikipedia.org/wiki/Type_III_error” target=”_blank” rel=”noreferrer noopener nofollow”>“type III” error</a>, where I correctly detect that the probability of my sequence is higher than the reverse sequence (the noise), but this doesn’t mean anything, because the underlying generator is fully random.</p>
<div class=”signup-popup square-email-box n-email-popup light-pink”>
<div class=”modal-content modal-content-email-box”>
<div class=”display-flex”>
<div class=”mobile-view-content”>
<h2>You can read the CIA Factbook and listen to MI6 people for your analysis, or you could read perspectives from our <strong>3,000+ authors</strong> from <strong>90+ countries</strong> and make sense of the world. Sign up for our free newsletters now.</h2>
</div>
<div class=”signup-popup”>
<div class=”signup-innersection”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription”>
<input type=”hidden” name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”newsletter-block”>
<input type=”email” name=”user_email” id=”email” required=”” placeholder=”Enter your email address” onfocus=”this.placeholder=”” onblur=”this.placeholder=’Enter your email address'”>
<input type=”hidden” name=”amp” value=”1″>
<input type=”submit” value=”SUBSCRIBE”>
<div class=”cpf-checkbox”>
<input type=”checkbox” name=”ms-Your_email_will_be_shared_with_fairobserver_and_subject_to_it’s_Privacy_Policy” id=”privacy-policy” value=”true” onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)” required=””><label for=”Your email will be shared with fairobserver and subject to its Privacy Policy”>I agree to receive emails and other content from Fair Observer. I understand that I may repeal my consent at any time. You can review our <a href=”https://www.fairobserver.com/privacy-policy/”>Privacy Policy</a> and <a href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a> for further information…</label>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<p>Based on this, I think I can say that the cutoff point where this detection mechanism starts to work is when the probability of detection exceeds ~50% on that curve, so let’s say a sampling fraction of about <em>f = 0.2</em>. That’s not too bad. I think I can consider my method valid enough for a Substack article.</p>
<p><em>[Dylan Black first published this piece on </em><a href=”https://maximumeffort.substack.com/p/the-fall-of-democracy-is-a-markov” target=”_blank” rel=”noreferrer noopener nofollow”><em>Substack</em></a><em>.]</em></p>
<p><em>[</em><a href=”https://www.linkedin.com/in/kaitlyn-diana-aab997278/” target=”_blank” rel=”noreferrer noopener nofollow”><em>Kaitlyn Diana</em></a><em> edited this piece.]</em></p>
<p><strong>The views expressed in this article are the author’s own and do not necessarily reflect Fair Observer’s editorial policy.</strong></p>
</div>
<!– .entry-content –>
<!– comment section –>
<div class=”comments-wrapper” id=”comments-wrapper”>
<div class=”headline hide-on-print border-bottom marb30″><h2>Comment</h2></div> <div class=”wpdiscuz_top_clearing”></div>
<div id=’comments’ class=’comments-area’><div id=’respond’ style=’width: 0;height: 0;clear: both;margin: 0;padding: 0;’></div> <div id=”wpdcom” class=”wpdiscuz_unauth wpd-default wpd-layout-1 wpd-comments-open”>
<div class=”wc_social_plugin_wrapper”>
</div>
<div class=”wpd-form-wrap”>
<div class=”wpd-form-head”>
<div class=”wpd-auth”>
<div class=”wpd-login”>
<a rel = “nofollow” href = “https://www.fairobserver.com/login/?redirect_to=https%3A%2F%2Fwww.fairobserver.com%2Fhistory%2Fthe-fall-of-democracy-is-a-markov-process%2F%23comments-wrapper”><i class=”fas fa-sign-in-alt”></i> Login</a> </div>
</div>
</div>
<div
class=”wpd-form wpd-form-wrapper wpd-main-form-wrapper” id=’wpd-main-form-wrapper-0_0′>
</div>
<div id=”wpdiscuz_hidden_secondary_form” style=”display: none;”>
<div
class=”wpd-form wpd-form-wrapper wpd-secondary-form-wrapper” id=’wpd-secondary-form-wrapper-wpdiscuzuniqueid’ style=’display: none;’>
<div class=”wpd-secondary-forms-social-content”></div>
<div class=”clearfix”></div>
</div>
</div>
<div class=”wpd-login-to-comment”>Please login to comment</div>
</div>
<div id=”wpd-threads” class=”wpd-thread-wrapper”>
<div class=”wpd-thread-head”>
<div class=”wpd-thread-info ”
data-comments-count=”0″>
<span class=’wpdtc’ title=’0′>0</span> Comments </div>
<div class=”wpd-space”></div>
<div class=”wpd-thread-filter”>
<div class=”wpd-filter wpdf-sorting wpdiscuz-hidden”>
<span class=”wpdiscuz-sort-button wpdiscuz-date-sort-desc wpdiscuz-sort-button-active”
data-sorting=”newest”>Newest</span>
<i class=”fas fa-sort-down”></i>
<div class=”wpdiscuz-sort-buttons”>
<span class=”wpdiscuz-sort-button wpdiscuz-date-sort-asc”
data-sorting=”oldest”>Oldest</span>
<span class=”wpdiscuz-sort-button wpdiscuz-vote-sort-up”
data-sorting=”by_vote”>Most Voted</span>
</div>
</div>
</div>
</div>
<div class=”wpd-comment-info-bar”>
<div class=”wpd-current-view”><i
class=”fas fa-quote-left”></i> Inline Feedbacks </div>
<div class=”wpd-filter-view-all”>View all comments</div>
</div>
<div class=”wpd-thread-list”>
<div class=”wpdiscuz-comment-pagination”>
</div>
</div>
</div>
</div>
</div>
<div id=”wpdiscuz-loading-bar”
class=”wpdiscuz-loading-bar-unauth”></div>
<div id=”wpdiscuz-comment-message”
class=”wpdiscuz-comment-message-unauth”></div>
</div>
<div id=”comment-guidelines-modal” style=”display:none; position:fixed; top:5%; left:50%; transform:translateX(-50%);
background:#fff; padding:20px; border:2px solid #1d2a99; z-index:9999; max-width:900px; width: 100%”>
<h3 style=”font-size: 28px”>Commenting Guidelines</h3>
<p style=”font-size: 18px”>Please read our commenting guidelines</a> before commenting.</p>
<hr>
<div style=”margin-top:15px; text-align:left; font-size: 19px; max-height: 60vh; overflow: auto”>
<p><strong>1. Be Respectful</strong>: Please be polite to the author. Avoid hostility. The whole point of Fair Observer is openness to different perspectives from perspectives from around the world.</p>
<p><strong>2. Comment Thoughtfully</strong>: Please be relevant and constructive. We do not allow personal attacks, disinformation or trolling. We will remove hate speech or incitement.</p>
<p><strong>3. Contribute Usefully</strong>: Add something of value — a point of view, an argument, a personal experience or a relevant link if you are citing statistics and key facts.
</p>
</div>
<div style=”margin: 20px 0;”>
<label style=”font-size: 18px;”>
<input type=”checkbox” id=”guideline-agree-checkbox” style=”transform: scale(1.2); margin-right: 8px;” />
I have read and agree to the above commenting guidelines.
</label>
</div>
<!– warning message –>
<p id=”guideline-warning” style=”display: none; color: red; font-size: 16px; margin-top: 10px;”>
Please agree to the guidelines before proceeding.
</p>
<button class=”wpuf-submit-button” id=”proceed-to-login” style=”margin-right:10px; display: inline-block”>I
Agree, Proceed to Login</button>
<button
style=”padding: 8px 18px; background: var(–blue-color); font-family: var(–second-font); border-radius: 36px; font-size: 20px; gap: 5px; color: white; border: none ”
id=”cancel-login-modal”>Cancel</button>
</div>
<div id=”guideline-modal-overlay”
style=”display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:#00000066; z-index:9998;”>
</div>
<script>
document.addEventListener(‘DOMContentLoaded’, function () {
const loginTrigger = document.querySelector(‘.comment-login-trigger’);
const guidelineModal = document.getElementById(‘comment-guidelines-modal’);
const guidelineOverlay = document.getElementById(‘guideline-modal-overlay’);
const proceedBtn = document.getElementById(‘proceed-to-login’);
const cancelBtn = document.getElementById(‘cancel-login-modal’);
const guidelineCheckbox = document.getElementById(‘guideline-agree-checkbox’);
let loginUrl = ”;
// Show modal on login click
if (loginTrigger) {
loginTrigger.addEventListener(‘click’, function (e) {
e.preventDefault();
loginUrl = this.getAttribute(‘data-login-url’);
guidelineModal.style.display = ‘block’;
guidelineOverlay.style.display = ‘block’;
});
}
const warningText = document.getElementById(‘guideline-warning’);
// Enable/disable the proceed button based on checkbox
guidelineCheckbox.addEventListener(‘change’, function () {
warningText.style.display = ‘none’; // Hide warning on change
});
// Proceed to login
proceedBtn.addEventListener(‘click’, function () {
if (guidelineCheckbox.checked) {
warningText.style.display = ‘none’;
guidelineModal.style.display = ‘none’;
guidelineOverlay.style.display = ‘none’;
window.location.href = loginUrl;
} else {
warningText.style.display = ‘block’;
// Optional: shake animation or scroll to warning
guidelineModal.scrollTo({ top: modal.scrollHeight, behavior: ‘smooth’ });
}
});
// Close modal on cancel button
cancelBtn.addEventListener(‘click’, function () {
guidelineModal.style.display = ‘none’;
guidelineOverlay.style.display = ‘none’;
guidelineCheckbox.checked = false;
// proceedBtn.disabled = true;
});
// Close modal when clicking outside
guidelineOverlay.addEventListener(‘click’, function () {
guidelineModal.style.display = ‘none’;
guidelineOverlay.style.display = ‘none’;
guidelineCheckbox.checked = false;
// proceedBtn.disabled = true;
});
});
</script>
<!– end comment section –>
<div class=”most-popular mart50″>
<div class=”related_post_data”>
<div class=”headline hide-on-print border-bottom marb30″><h2>Related Reading</h2></div>
<article class=”border-bottom” itemscope itemtype=”http://schema.org/Article”>
<div class=”fo-post-content”>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/politics/democracy-is-in-decline-the-mechanics-of-changing-the-world-offers-a-way-out/”>
Democracy is in Decline. The Mechanics of Changing the World Offers a Way Out </a>
</h2>
<p class=”mart5 marb0″ itemprop=”description”>
The Mechanics of Changing the World by John Macgregor is an engaging analysis of what went wrong with democracy. The… </p>
<span itemprop=”author” class=”fo-author fo-author-light d-in-block”>by
<a href=”https://www.fairobserver.com/author/cheyenne-torres”>Cheyenne Torres</a>,
<span class=”post-date” itemprop=”datePublished”
content=”August 10, 2025″>
August 10, 2025 </span>
</span>
</div>
<div class=”fo-post-img”>
<a href=”https://www.fairobserver.com/politics/democracy-is-in-decline-the-mechanics-of-changing-the-world-offers-a-way-out/”><img src=”https://www.fairobserver.com/wp-content/uploads/2025/08/The-Mechanics-of-Changing-the-World-Offers-a-Way-Out-500×281.jpg”
alt=”Fair Observer” title=”” width=”500″ height=”281″/></a>
</div>
</article>
<article class=”border-bottom” itemscope itemtype=”http://schema.org/Article”>
<div class=”fo-post-content”>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/politics/no-trump-is-not-the-end-of-us-democracy-it-never-existed/”>
No, Trump Is Not the End of US Democracy. It Never Existed. </a>
</h2>
<p class=”mart5 marb0″ itemprop=”description”>
Pundits have abused the figure of the tyrant from Plato’s Republic by turning it into a prophecy of Donald Trump…. </p>
<span itemprop=”author” class=”fo-author fo-author-light d-in-block”>by
<a href=”https://www.fairobserver.com/author/anton-schauble”>Anton Schauble</a>,
<span class=”post-date” itemprop=”datePublished”
content=”November 5, 2024″>
November 5, 2024 </span>
</span>
</div>
<div class=”fo-post-img”>
<a href=”https://www.fairobserver.com/politics/no-trump-is-not-the-end-of-us-democracy-it-never-existed/”><img src=”https://www.fairobserver.com/wp-content/uploads/2024/11/old-Greece-500×281.webp”
alt=”Fair Observer” title=”” width=”500″ height=”281″/></a>
</div>
</article>
<article class=”border-bottom” itemscope itemtype=”http://schema.org/Article”>
<div class=”fo-post-content”>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/politics/james-bohland-decline-democracy-authoritarianism-rise-far-right-news-12567/”>
Is the Decline of Democracy Inevitable? </a>
</h2>
<p class=”mart5 marb0″ itemprop=”description”>
What does the future hold for liberal democracies around the world in the next decade? </p>
<span itemprop=”author” class=”fo-author fo-author-light d-in-block”>by
<a href=”https://www.fairobserver.com/author/james-bohland”>James Bohland</a>,
<span class=”post-date” itemprop=”datePublished”
content=”January 31, 2022″>
January 31, 2022 </span>
</span>
</div>
<div class=”fo-post-img”>
<a href=”https://www.fairobserver.com/politics/james-bohland-decline-democracy-authoritarianism-rise-far-right-news-12567/”><img src=”https://www.fairobserver.com/wp-content/uploads/2022/01/Democracy-500×281.jpg”
alt=”Fair Observer” title=”” width=”500″ height=”281″/></a>
</div>
</article>
</div>
</div>
<div class=”response_section”>
<div class=”response_content single-support”>
<h3>Support Fair Observer</h3>
<p>We rely on your support for our independence, diversity and quality.</p>
<p>For more than 10 years, Fair Observer has been free, fair and independent. No billionaire
owns us, no advertisers control us. We are a reader-supported nonprofit. Unlike many other
publications, we keep our content free for readers regardless of where they live or whether
they can afford to pay. We have no paywalls and no ads.</p>
<p>In the post-truth era of fake news, echo chambers and filter bubbles, we publish a plurality
of perspectives from around the world. Anyone can publish with us, but everyone goes through
a rigorous editorial process. So, you get fact-checked, well-reasoned content instead of
noise. </p>
<p>We publish 3,000+ voices from 90+ countries. We also conduct education and training programs
on subjects ranging from digital media and journalism to writing and critical thinking. This
doesn’t come cheap. Servers, editors, trainers and web developers cost
money.<br><span>Please consider supporting us on a regular basis as a recurring donor or a
sustaining member.</span></p>
<script src=”/wp-content/plugins/donation-form-single-page/js/donation-script.js”></script>
<div class=”donation-anywhere-form”>
<div class=”donation_section”>
<div class=”donations-content-section”>
<h3>Will you support FO’s journalism?</h3>
<p>We rely on your support for our independence, diversity and quality.</p>
</div>
<div class=”donation-form-section”>
<form class=”donation-form” id=”anywhere_donation_form”>
<div class=”donation_cycle”>
<h4>Donation Cycle</h4>
<input id=”donation_cycle_one_time” type=”radio” name=”donation_cycle” value=”one-time”>
<label for=”donation_cycle_one_time”><span>One Time</span></label>
<input id=”donation_cycle_monthly” type=”radio” name=”donation_cycle” value=”month”>
<label for=”donation_cycle_monthly”><span>Monthly</span></label>
<input id=”donation_cycle_yearly” type=”radio” checked name=”donation_cycle” value=”year”>
<label for=”donation_cycle_yearly”><span>Yearly</span></label>
</div>
<div class=”grid-box-twocolumn”>
<div class=”donation_amount_section”>
<h4>Donation Amount</h4>
<input id=”amount_11″ class=”amount” type=”radio” name=”amount” value=”11″>
<label for=”amount_11″><span>$11</span></label>
<input id=”amount_111″ class=”amount” type=”radio” name=”amount” value=”111″ checked>
<label for=”amount_111″><span>$111</span></label>
<input id=”other_pay” class=”amount” type=”radio” name=”amount” value=”other”>
<label for=”other”>Other</label>
</div>
<div class=”other_donation_amount_section” style=”display: none;”>
<span class=”input-icon”>$</span>
<input type=”text” id=”other_amount_pay”
onfocus=”this.placeholder=””
onblur=”this.placeholder=’Other Amount'”
oninput=”this.value = this.value.replace(/D/g, ”).replace(/^0+/, ”)”
class=”other_donation_amount”
value=””
placeholder=”Other Amount”>
</div>
</div>
<input type=”submit” value=”$111 / Year” id=”open-donation-popup-btn” name=”anywhere-donation-submit”>
</form>
</div>
</div>
<span>
The IRS recognizes Fair Observer as a section 501(c)(3) registered public charity
(EIN: 46-4070943), enabling you to claim a tax deduction.</span>
</div>
</div>
</div>
<div class=”most-popular mart50″>
<div class=”related_post_data”>
</div>
</div>
</div>
</div>
<div class=”si-emailnewsletetr-support”>
<div class=”emailnewsletter”>
<div class=”fo-right-col”>
<div class=”fo-mobile-view-content padb20″>
<h2>Make Sense of the World</h2>
<p>Unique Insights from 3,000+ Contributors in 90+ Countries</p>
</div>
<div class=”fp-signup-popup”>
<div class=”fo-signup-innersection”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription”> <input
type=”hidden” name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”fo-newsletter-block d-flex justify-space-between flex-wrap”>
<input type=”email” name=”user_email” id=”email” required=””
placeholder=”Enter your email address” onfocus=”this.placeholder=””
onblur=”this.placeholder=’Enter your email address'”>
<input type=”submit” value=”SUBSCRIBE”>
</div>
<div class=”fo-cpf-checkbox d-flex”> <input type=”checkbox”
name=”ms-Your_email_will_be_shared_with_fairobserver_and_subject_to_it’s_Privacy_Policy”
id=”privacy-policy” value=”true”
onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)”
required=””><label
for=”Your email will be shared with fairobserver and subject to its Privacy Policy”>I
agree to receive emails and other content from Fair Observer. I understand
that I
may repeal my consent at any time. You can review our <a
href=”https://www.fairobserver.com/privacy-policy”>Privacy Policy</a>
and <a href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a>
for further
information .</label></div>
</div>
</form>
</div>
</div>
</div>
</div>
<!– <div class=”support-fo-right”>
<div class=”sfr-left”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/support-fo.jpg” alt=”Support Fair Observer” width=”160″ height=”219″>
</div>
<div class=”sfr-right”>
<h3>Support Fair Observer by becoming a sustaining member</h3>
<a class=”btn-red” href=”https://www.fairobserver.com/membership-account/membership-levels/”>Become a
Member <svg xmlns=”http://www.w3.org/2000/svg” height=”1em”
viewBox=”0 0 512 512″>
<path
d=”M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z” />
</svg></a>
</div>
</div> –>
</div>
</article>
<div class=”em-popup-single-post” style=”display: none;”>
<div class=”signup-popup square-email-box n-email-popup light-pink em-popup-block”>
<div class=”modal-content modal-content-email-box”>
<div class=”close-em-popup”><img src=”https://fairobserver.com/wp-content/themes/fo2023/assets/images/close-em.png” alt=”FO”/></div>
<div class=”display-flex”>
<div class=”mobile-view-content”>
<h2>We’re independent, nonprofit and powered by <strong>3,000+ voices</strong> from around the world — not billionaires or governments. Enjoy real journalism, sign up for our free newsletters.</h2>
</div>
<div class=”signup-popup”>
<div class=”signup-innersection”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription”>
<input type=”hidden” name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”newsletter-block”>
<input type=”email” name=”user_email” id=”email” required=”” placeholder=”Enter your email address” onfocus=”this.placeholder=”” onblur=”this.placeholder=’Enter your email address'”>
<input type=”hidden” name=”amp” value=”1″>
<input type=”submit” value=”SUBSCRIBE”>
<div class=”cpf-checkbox”>
<input type=”checkbox” name=”ms-Your_email_will_be_shared_with_fairobserver_and_subject_to_it’s_Privacy_Policy” id=”privacy-policy” value=”true” onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)” required=””><label for=”Your email will be shared with fairobserver and subject to its Privacy Policy”>I agree to receive emails and other content from Fair Observer. I understand that I may repeal my consent at any time. You can review our <a href=”https://www.fairobserver.com/privacy-policy/”>Privacy Policy</a> and <a href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a> for further information…</label>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script type=”text/javascript”>
jQuery(document).ready(function () {
jQuery(‘#trigger-modal ,#trigger-modal2’).click(function () {
jQuery(‘#modal’).show();
});
jQuery(‘.x’).click(function () {
jQuery(‘#screen, #modal’).hide();
});
var authorname = jQuery(‘.multiauthor’).html();
jQuery(‘#authorname’).html(authorname);
});
document.addEventListener(“DOMContentLoaded”, function () {
let shown = sessionStorage.getItem(“newsletter_popup_shown”);
let popupTriggered = false;
// Function to show the popup
function scrollTriggerNewsletter() {
let scrollPercent = window.scrollY / (document.body.scrollHeight – window.innerHeight);
if (scrollPercent > 0.3 && !popupTriggered && !shown) {
popupTriggered = true;
sessionStorage.setItem(“newsletter_popup_shown”, “1”);
const popup = document.querySelector(‘.em-popup-single-post’);
if (popup) {
popup.style.display = ‘flex’; // or ‘block’ depending on CSS
}
}
}
// Attach scroll listener
window.addEventListener(“scroll”, scrollTriggerNewsletter);
// Close button logic
document.addEventListener(“click”, function (e) {
if (e.target.closest(‘.close-em-popup’)) {
const popup = document.querySelector(‘.em-popup-single-post’);
if (popup) {
popup.style.display = ‘none’;
}
}
});
});
</script>
</main><!– #main –>
</div><!– #primary –>
</div><!– .wrap –>
<!–footer–>
<div class=”address_for_inovice”>
<!– dont remove this its for print –>
<p> </p>
Fair Observer, 461 Harbor Blvd, Belmont, CA 94002, USA
</div>
<footer class=”mart70 fo-black-bg padt50 padb30″>
<div class=”container”>
<!– end subscribe publish donate tab –>
<!– menu –>
<div class=”d-flex flex-wrap justify-space-between fo-menu-block”>
<div class=”nav-first-col col-n”>
<h4>Sections</h4>
<div class=”first-n-col”>
<div class=”first-menu-col”>
<ul class=”list-style-none”>
<li><a href=”https://www.fairobserver.com/category/politics/”>Politics</a></li>
<li><a href=”https://www.fairobserver.com/category/economics/”>Economics & Finance</a></li>
<li><a href=”https://www.fairobserver.com/category/business/”>Business &
Entrepreneurship</a></li>
<li><a href=”https://www.fairobserver.com/category/culture/”>Art & Culture</a></li>
<li><a href=”https://www.fairobserver.com/category/more/science/”>Science & Technology</a>
</li>
<li><a href=”https://www.fairobserver.com/category/more/environment/”>Environment & Climate
Change</a></li>
<li> <a href=”https://www.fairobserver.com/category/world-leaders-news”>World Leaders</a>
</li>
<li><a href=”https://www.fairobserver.com/category/world-news”>World</a></li>
</ul>
<ul class=”list-style-none”>
<li> <a href=”https://www.fairobserver.com/category/american-news/”>The Americas</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/europe/”>Europe</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/middle_east_north_africa/”>Middle
East & North Africa</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/africa/”>Africa</a> </li>
<li> <a href=”https://www.fairobserver.com/category/region/asia_pacific/”>Asia</a> </li>
<li> <a href=”https://www.fairobserver.com/category/united-states”>United States</a> </li>
<li> <a href=”https://www.fairobserver.com/category/world-news/india-news”>India</a> </li>
<li> <a href=”https://www.fairobserver.com/category/world-news/china-news”>China</a> </li>
</ul>
<ul class=”list-style-none”>
<li> <a href=”https://www.fairobserver.com/category/russian-newsrussia-news”>Russia</a>
</li>
<li> <a href=”https://www.fairobserver.com/events”>Events</a> </li>
<li> <a href=”https://www.fairobserver.com/publications”>Publications</a> </li>
<li> <a href=”https://www.fairobserver.com/authors”>Authors</a> </li>
<li> <a href=”https://www.fairobserver.com/about”>About</a> </li>
<li> <a href=”https://www.fairobserver.com/publish”>Publish</a> </li>
<li> <a href=”https://www.fairobserver.com/contact”>Contact</a> </li>
<li class=”fo-login-link ttp”> <a href=”#”>
<span>Login</span> </a>
</li>
</ul>
</div>
<div class=”nav-2n-col col-n”>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/Article”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/interactive/christmas-explained-religion-news-christianity-43892/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2021/07/Christmas-explained-80×80.jpg” alt=”Fair Observer” title=”” width=”80″
height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/multimedia/” rel=”bookmark”
title=””>MULTIMEDIA</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/interactive/christmas-explained-religion-news-christianity-43892/”
rel=”bookmark” title=”Permanent Link to Christmas Explained”>
Christmas Explained </a>
</h2>
</div>
</article>
</div>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/VideoObject”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/region/asia_pacific/fo-talks-from-shrimp-among-whales-to-strategic-power-how-south-korea-is-shaping-geopolitics/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2025/12/From-Shrimp-Among-Whales-to-Strategic-Power-How-South-Korea-Is-Shaping-Geopolitics-Fair-Observer-80×80.jpeg” alt=”Fair Observer” title=”” width=”80″
height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/video/” rel=”bookmark”
title=””>VIDEOS</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/region/asia_pacific/fo-talks-from-shrimp-among-whales-to-strategic-power-how-south-korea-is-shaping-geopolitics/”
rel=”bookmark” title=”Permanent Link to FO° Talks: From Shrimp Among Whales to Strategic Power: How South Korea Is Shaping Geopolitics”>
FO° Talks: From Shrimp Among Whales to Strategic Power: How South Korea Is Shaping Geopolitics </a>
</h2>
</div>
</article>
</div>
<div class=”nav-post”>
<article itemscope itemtype=”http://schema.org/PodcastEpisode”>
<div class=”fo-post-img”><a href=”https://www.fairobserver.com/politics/fo-podcasts-the-forbidden-c-word-class-in-america/”><img
src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Kent–80×80.jpg” alt=”Fair Observer” title=”” width=”80″
height=”80″ /></a></div>
<div class=”fo-post-content”>
<h3><a href=”https://www.fairobserver.com/category/podcasts/” rel=”bookmark”
title=””>PODCASTS</a></h3>
<h2 itemprop=”name” class=”fo-post-title”><a href=”https://www.fairobserver.com/politics/fo-podcasts-the-forbidden-c-word-class-in-america/”
rel=”bookmark” title=”Permanent Link to FO° Podcasts: The Forbidden C-word, Class in America”>
FO° Podcasts: The Forbidden C-word, Class in America </a>
</h2>
</div>
</article>
</div>
</div>
</div>
</div>
<div class=”nav-3rd-col col-n”>
<h4>PUBLICATION</h4>
<article itemscope itemtype=”http://schema.org/CreativeWork”>
<div class=”fo-post-img”>
<a href=”https://www.fairobserver.com/publications/fair-observer-monthly-november-2025/”>
<img src=”https://www.fairobserver.com/wp-content/uploads/2025/12/Nove-book-covar-225×290.jpg” alt=”Fair Observer Monthly: November 2025″
width=”225″ height=”290″ />
</a>
</div>
</article>
</div>
<!– donate banner –>
<div class=”menu-donate”>
<div class=”menu-donate-content”>
<h2>Support Fair Observer</h2>
<p>We rely on your support for our independence, diversity and quality.</p>
</div>
<div class=”menu-donate-btn”>
<a class=”site-btn” href=”https://www.fairobserver.com/donate/”>Donate </a>
</div>
</div>
<!– End donate banner –>
</div>
<!–end footer email newsletter–>
<div class=”border-bottom mart40 marb40″></div>
<!–footer bottom –>
<div class=”fo-footer-bottom d-flex flex-wrap justify-space-between align-item-center”>
<div class=”fo-footer-social” itemscope itemtype=”http://schema.org/SiteNavigationElement”>
<ul class=”d-flex list-style-none”>
<li><a itemprop=”url” href=”https://www.linkedin.com/company/fair-observer/” target=”_blank”><svg
aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”linkedin-in”
class=”svg-inline–fa fa-linkedin-in fa-w-14″ role=”img”
xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″>
<path fill=”currentColor”
d=”M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z”>
</path>
</svg></a></li>
<li><a itemprop=”url” href=”https://www.youtube.com/c/FairObserver/videos” target=”_blank”><svg
aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”youtube”
class=”svg-inline–fa fa-youtube fa-w-18″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 576 512″>
<path fill=”currentColor”
d=”M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z”>
</path>
</svg></a>
</li>
<li>
<a itemprop=”url” target=”_blank” href=”https://bsky.app/profile/myfairobserver.bsky.social”>
<svg xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 512 512″>
<path
d=”M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z” />
</svg>
</a>
</li>
<li><a itemprop=”url” href=”https://twitter.com/myfairobserver” target=”_blank”><svg
xmlns=”http://www.w3.org/2000/svg” height=”1em”
viewBox=”0 0 512 512″><!–! Font Awesome Free 6.4.2 by @fontawesome – https://fontawesome.com License – https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. –>
<path
d=”M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z”>
</path>
</svg></a></li>
<li><a itemprop=”url” href=”https://www.instagram.com/fairobserver/” target=”_blank”><svg
aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”instagram”
class=”svg-inline–fa fa-instagram fa-w-14″ role=”img”
xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″>
<path fill=”currentColor”
d=”M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z”>
</path>
</svg></a></li>
<li><a itemprop=”url” href=”https://www.facebook.com/fairobserver” target=”_blank”><svg
aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”facebook-f”
class=”svg-inline–fa fa-facebook-f fa-w-10″ role=”img”
xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 320 512″>
<path fill=”currentColor”
d=”M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z”>
</path>
</svg></a></li>
<li>
<a itemprop=”url” target=”_blank” href=”https://t.me/myfairobserver”>
<svg xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 496 512″>
<path
d=”M248 8C111 8 0 119 0 256S111 504 248 504 496 393 496 256 385 8 248 8zM363 176.7c-3.7 39.2-19.9 134.4-28.1 178.3-3.5 18.6-10.3 24.8-16.9 25.4-14.4 1.3-25.3-9.5-39.3-18.7-21.8-14.3-34.2-23.2-55.3-37.2-24.5-16.1-8.6-25 5.3-39.5 3.7-3.8 67.1-61.5 68.3-66.7 .2-.7 .3-3.1-1.2-4.4s-3.6-.8-5.1-.5q-3.3 .7-104.6 69.1-14.8 10.2-26.9 9.9c-8.9-.2-25.9-5-38.6-9.1-15.5-5-27.9-7.7-26.8-16.3q.8-6.7 18.5-13.7 108.4-47.2 144.6-62.3c68.9-28.6 83.2-33.6 92.5-33.8 2.1 0 6.6 .5 9.6 2.9a10.5 10.5 0 0 1 3.5 6.7A43.8 43.8 0 0 1 363 176.7z” />
</svg>
</a>
</li>
<li>
<a itemprop=”url” target=”_blank” href=”https://whatsapp.com/channel/0029Vb6JJmp7T8bYHRMmSs2D”>
<svg xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″>
<path
d=”M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z” />
</svg>
</a>
</li>
<li><a itemprop=”url” href=”https://www.fairobserver.com/feed/” target=”_blank”><svg
aria-hidden=”true” focusable=”false” data-prefix=”fas” data-icon=”rss”
class=”svg-inline–fa fa-rss fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg”
viewBox=”0 0 448 512″>
<path fill=”currentColor”
d=”M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z”>
</path>
</svg></a></li>
</ul>
</div>
<div class=”fo-copyright”>
© Fair Observer All rights reserved
<div class=”cre”>
Designed, Developed and Maintained by <a href=”https://www.netleon.com” rel=”dofollow”
target=”_blank”>Netleon IT Solutions</a>
</div>
</div>
<div class=”fo-sb-website-logo d-flex justify-space-between align-items-bottom”>
<a href=”https://www.fairobserver.com/education/” target=”_blank”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fo-education-logo.png”
alt=”Fair Observer Education Logo” width=”120″ height=”30″ /></a>
<a href=”https://www.fairobserver.com/leadership-academy/” target=”_blank”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fo-leadership-logo.png”
alt=”Fair Observer Leadership Academy Logo” width=”108″ height=”40″ /></a>
</div>
</div>
<!– endfooter bottom –>
<!– Contact us form –>
</div>
</footer>
<div id=”modal” class=”popup_loginmodel bookmark-full-cover” style=”display: none;”>
<div class=”popup_container dm-fo-login-box”>
<div class=”subscribe-popup-content”>
<h3>BOOKMARK</h3>
</div>
<div class=”bookmarking_text”>
<div class=”headingTitle”>Want to save this post?</div>
<!– <h2>Register as a member to support independent journalism and enjoy subscriber benefits.</h2> –>
</div>
<!– <div class=”button_subscribe registrbtn”><a
href=”https://www.fairobserver.com/membership-account/membership-levels/”>BECOME A MEMBER</a></div>
<div class=”bookmarking_text” style=”padding-top:10px; display: inline-block;
width: 100%;”>
<h2>Already have an account?</h2>
</div> –>
<div class=”button_subscribe registrbtn”><a href=”https://www.fairobserver.com/login/?redirect_to=https%3A%2F%2Fwww.fairobserver.com%2Fhistory%2Fthe-fall-of-democracy-is-a-markov-process%2F”>Click to
Login</a></div>
<div class=”close close-popup-btn-signup” id=”closebtnsignup”>
<img src=”https://www.fairobserver.com/wp-content/themes/fairobserver/assets/images/close-icon-n.png” alt=””
width=”24″ height=”24″>
</div>
</div>
</div>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js”></script>
<!– FIXED FOOTER (SUPPORT JOURNALISM) –>
<footer id=”fixed-footer” class=”support-footer”>
<div class=”container justify-right”>
<div class=”icons-wrap”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fo-round-logo.png”
class=”logo-footer-img” width=”40″ height=”40″ />
<a href=”javascript:void(0);” class=”close-footer-btn”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/close-footer-icon.png” width=”15″ height=”15″ /></a>
</div>
</div>
<div class=”container”>
<div class=”center-column”>
<h2>Support
<span> independent,</span> crowdsourced, nonprofit
<span>journalism. </span>
</h2>
<p>Fair Observer is a 501(c)(3) independent nonprofit. We are not owned by billionaires or controlled by
advertisers. We publish nearly 3,000 authors from over 90 countries after fact-checking and editing each
piece. We do not have a paywall and anyone can read us for free. With your vital donations, we can
continue
to do our work. </p><p>Please make a recurring (or even one-time) donation today. <span> Even $1 goes a long way</span> because
a
million donors
like you mean one million dollars. Thank you for keeping us independent, free and fair.
</p>
<div class=”form-wrap” id=”footer-donation-form-popup”>
<form method=”get” class=”form-wrap” action=”https://www.fairobserver.com/crowd-funding-donation”>
<input type=”hidden” value=”yearly” name=”selected-contribution-type” id=”cycle”>
<input type=”hidden” value=”111″ name=”selected-amount” id=”amount”>
<div class=”d-flex”>
<span class=”cycle-btn” data-value=”one-time”>One Time</span>
<span class=”cycle-btn ” data-value=”monthly”> Monthly</span>
<span class=”cycle-btn active” data-value=”yearly”>Yearly</span>
</div>
<div class=”d-flex amount-buttons”>
<!– <span class=”amount-btn active” data-value=”5″>$5</span>
<span class=”amount-btn” data-value=”9″>$9</span> –>
<!– <span class=”amount-btn” data-value=”50″>$50</span> –>
</div>
<input type=”text” class=”custom_amount” placeholder=”Other”>
<div class=”button-wrap”>
<button type=”submit” class=”btn-continue”>Continue <img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/arrow-footer.png” width=”27″ height=”20″ /></button>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/payment-card.jpg” width=”202″ height=”28″ />
</div>
</form>
</div>
</div>
</div>
</footer>
<!– Login popup –>
<div id=”loginmodal” class=”popup_loginmodel new_loginModal” style=”display: none;”>
<div class=”dm-fo-login-box”>
<div class=”popup-block-wrp” id=”popup-block-wrp-signup”>
<div class=”new_loginHeader”>
<span class=”close close-popup-btn-signup” id=”closebtnlogin”>
<i class=”bi bi-x-lg”></i>
</span>
</div>
<div class=”dm-fo-login-logo marb25 mart25″>
<a target=”_blank” href=”https://www.fairobserver.com/”><img
src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/new_fairovserver-logo-red.png” /></a>
</div>
<!– Dynamic Content –>
<div id=”popup-content”>
<!– Login Form (Default View) –>
<div id=”login-form” class=”popup-form”>
<h3>Sign into your Fair Observer Account</h3>
<div class=”tml tml-login”>
<div class=”tml-alerts”></div><form name=”login” action=”https://www.fairobserver.com/login/” method=”post” data-ajax=”1″>
<div class=”tml-field-wrap tml-log-wrap”>
<label class=”tml-label” for=”user_login”>Username or Email Address</label>
<input name=”log” type=”text” value=”” id=”user_login” autocapitalize=”off” class=”tml-field”>
</div>
<div class=”tml-field-wrap tml-pwd-wrap”>
<label class=”tml-label” for=”user_pass”>Password</label>
<input name=”pwd” type=”password” value=”” id=”user_pass” class=”tml-field”>
</div>
<div class=”tml-field-wrap tml-rememberme-wrap”>
<input name=”rememberme” type=”checkbox” value=”forever” id=”rememberme” class=”tml-checkbox”>
<label class=”tml-label” for=”rememberme”>Remember Me</label>
</div>
<div class=”tml-field-wrap tml-submit-wrap”>
<button name=”submit” type=”submit” class=”tml-button”>Log In</button>
</div>
<input name=”redirect_to” type=”hidden” value=”https://www.fairobserver.com/wp-admin/”>
</form>
<ul class=”tml-links”><li class=”tml-lostpassword-link”><a href=”https://www.fairobserver.com/forgot-the-password/”>Lost your password?</a></li></ul></div>
<!– <a href=”#” class=”text_label switch-form” data-target=”forgot-password-form”>Forgot Password</a> –>
<div>
<!– <a href=”#” class=”switch-form” data-target=”membership-form”>Not a Member?</a> –>
<a href=”#” class=”text_label switch-form” data-target=”forgot-password-form”>Forgot
Password</a>
</div>
</div>
<!– Forgot Password Form –>
<div id=”forgot-password-form” class=”popup-form” style=”display: none;”>
<div class=”forget-password-before”>
<h3>Forgot Password</h3>
<p>Enter your registered email address or username. You will receive a
link to create a new password via email.</p>
<div class=”tml tml-lostpassword”>
<div class=”tml-alerts”></div><form name=”lostpassword” action=”https://www.fairobserver.com/forgot-the-password/” method=”post” data-ajax=”1″>
<div class=”tml-field-wrap tml-message-wrap”>
<p class=”tml-message”>Please enter your username or email address. You will receive an email message with instructions on how to reset your password.</p></div>
<div class=”tml-field-wrap tml-user_login-wrap”>
<label class=”tml-label” for=”user_login”>Username or Email Address</label>
<input name=”user_login” type=”text” value=”” id=”user_login” autocapitalize=”off” class=”tml-field”>
</div>
<div class=”tml-field-wrap tml-submit-wrap”>
<button name=”submit” type=”submit” class=”tml-button”>Get New Password</button>
</div>
<input name=”redirect_to” type=”hidden” value=””>
</form>
<ul class=”tml-links”><li class=”tml-login-link”><a href=”https://www.fairobserver.com/login/”>Log in</a></li></ul></div>
<div class=”not-a-member”>
<div class=”d-flex align-center gap-1″>
<hr class=”w-100″><span class=”text-16 weight-600″>Or</span>
<hr class=”w-100″>
</div>
<a href=”#” class=”switch-form” data-target=”login-form”>Return to
Login</a>
</div>
</div>
<div class=”forget-password-after” style=”display: none;”>
<h3>Forgot Password</h3>
<p>We have sent a link to your registered email address to reset your password.</p>
<i>
<svg viewBox=”0 0 25 24″ fill=”none” xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”12.5″ cy=”12″ r=”12″ fill=”#414141″ />
<path fill-rule=”evenodd” clip-rule=”evenodd”
d=”M9.77728 17.0866L10.1044 17.4393C10.1987 17.5238 10.3405 17.5196 10.4295 17.4231L19.9018 7.21008C19.9903 7.11356 19.9952 6.96069 19.9168 6.85947L19.191 6.07582C19.0966 5.97408 18.9442 5.97408 18.8499 6.07582L10.4295 15.1546C10.3405 15.2511 10.1987 15.2553 10.1044 15.1708L6.12211 10.8779C6.02776 10.7756 5.87582 10.7756 5.78099 10.8779L5.05615 11.6616C4.97679 11.7633 4.98163 11.9162 5.07018 12.0116L9.77534 17.0845L9.77728 17.0866Z”
fill=”white” />
</svg>
</i>
<a href=”#” class=”primary_action_btn switch-form” data-target=”login-form”>Back to
Login</a>
</div>
</div>
<!– membership Form –>
<div id=”membership-form” class=”popup-form” style=”display: none;”>
<div class=”member-container”>
<h3 class=”large”>Become a Member & Enjoy Exclusive Benefits!</h3>
<ul>
<li>
<svg width=”16″ height=”16″ viewBox=”0 0 25 24″ fill=”none”
xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”12.5″ cy=”12″ r=”12″ fill=”#414141″ />
<path fill-rule=”evenodd” clip-rule=”evenodd”
d=”M9.77728 17.0866L10.1044 17.4393C10.1987 17.5238 10.3405 17.5196 10.4295 17.4231L19.9018 7.21008C19.9903 7.11356 19.9952 6.96069 19.9168 6.85947L19.191 6.07582C19.0966 5.97408 18.9442 5.97408 18.8499 6.07582L10.4295 15.1546C10.3405 15.2511 10.1987 15.2553 10.1044 15.1708L6.12211 10.8779C6.02776 10.7756 5.87582 10.7756 5.78099 10.8779L5.05615 11.6616C4.97679 11.7633 4.98163 11.9162 5.07018 12.0116L9.77534 17.0845L9.77728 17.0866Z”
fill=”white” />
</svg>
Access to comments feature
</li>
<li>
<svg width=”16″ height=”16″ viewBox=”0 0 25 24″ fill=”none”
xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”12.5″ cy=”12″ r=”12″ fill=”#414141″ />
<path fill-rule=”evenodd” clip-rule=”evenodd”
d=”M9.77728 17.0866L10.1044 17.4393C10.1987 17.5238 10.3405 17.5196 10.4295 17.4231L19.9018 7.21008C19.9903 7.11356 19.9952 6.96069 19.9168 6.85947L19.191 6.07582C19.0966 5.97408 18.9442 5.97408 18.8499 6.07582L10.4295 15.1546C10.3405 15.2511 10.1987 15.2553 10.1044 15.1708L6.12211 10.8779C6.02776 10.7756 5.87582 10.7756 5.78099 10.8779L5.05615 11.6616C4.97679 11.7633 4.98163 11.9162 5.07018 12.0116L9.77534 17.0845L9.77728 17.0866Z”
fill=”white” />
</svg>
Bookmark your favorite articles
</li>
<li>
<svg width=”16″ height=”16″ viewBox=”0 0 25 24″ fill=”none”
xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”12.5″ cy=”12″ r=”12″ fill=”#414141″ />
<path fill-rule=”evenodd” clip-rule=”evenodd”
d=”M9.77728 17.0866L10.1044 17.4393C10.1987 17.5238 10.3405 17.5196 10.4295 17.4231L19.9018 7.21008C19.9903 7.11356 19.9952 6.96069 19.9168 6.85947L19.191 6.07582C19.0966 5.97408 18.9442 5.97408 18.8499 6.07582L10.4295 15.1546C10.3405 15.2511 10.1987 15.2553 10.1044 15.1708L6.12211 10.8779C6.02776 10.7756 5.87582 10.7756 5.78099 10.8779L5.05615 11.6616C4.97679 11.7633 4.98163 11.9162 5.07018 12.0116L9.77534 17.0845L9.77728 17.0866Z”
fill=”white” />
</svg>
Exclusive invitations to FO° Talks & FO° Live
</li>
<li>
<svg width=”16″ height=”16″ viewBox=”0 0 25 24″ fill=”none”
xmlns=”http://www.w3.org/2000/svg”>
<circle cx=”12.5″ cy=”12″ r=”12″ fill=”#414141″ />
<path fill-rule=”evenodd” clip-rule=”evenodd”
d=”M9.77728 17.0866L10.1044 17.4393C10.1987 17.5238 10.3405 17.5196 10.4295 17.4231L19.9018 7.21008C19.9903 7.11356 19.9952 6.96069 19.9168 6.85947L19.191 6.07582C19.0966 5.97408 18.9442 5.97408 18.8499 6.07582L10.4295 15.1546C10.3405 15.2511 10.1987 15.2553 10.1044 15.1708L6.12211 10.8779C6.02776 10.7756 5.87582 10.7756 5.78099 10.8779L5.05615 11.6616C4.97679 11.7633 4.98163 11.9162 5.07018 12.0116L9.77534 17.0845L9.77728 17.0866Z”
fill=”white” />
</svg>
Access to all of our e-publications
</li>
</ul>
</div>
<a class=”primary_action_btn”
href=”https://www.fairobserver.com/membership-account/membership-levels/”>Explore Membership</a>
<div class=”not-a-member”>
<a href=”#” class=”switch-form” data-target=”login-form”>Return to
Login</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var amounts = {
“one-time”: [16, 33],
“monthly”: [5, 9],
“yearly”: [11, 111]
};
jQuery(function ($) {
function updateFooterAmounts(cycle) {
$(“#footer-donation-form-popup .custom_amount”).val(”);
var amountContainer = $(“#footer-donation-form-popup .amount-buttons”);
amountContainer.empty();
amounts[cycle].forEach(function (amount, index) {
var activeClass = index === 1 ? ‘active’ : ”;
amountContainer.append(‘<span class=”amount-btn ‘ + activeClass + ‘” data-value=”‘ + amount + ‘”>$’ + amount + ‘</span>’);
});
// Set the default selected amount to the second in the list
$(“#footer-donation-form-popup #amount”).val(amounts[cycle][1]);
// Reattach event listeners to new amount buttons
$(“#footer-donation-form-popup .amount-btn”).on(“click”, function (e) {
$(“#footer-donation-form-popup .amount-btn”).removeClass(“active”);
$(this).addClass(“active”);
var amount = $(this).data(“value”);
$(“#footer-donation-form-popup #amount”).val(amount);
});
}
$(“#footer-donation-form-popup .cycle-btn”).on(“click”, function (e) {
$(“#footer-donation-form-popup .cycle-btn”).removeClass(“active”);
$(this).addClass(“active”);
var cycle = $(this).data(“value”);
$(“#footer-donation-form-popup #cycle”).val(cycle);
updateFooterAmounts(cycle);
});
$(“#footer-donation-form-popup .custom_amount”).on(“input”, function (e) {
$(“#footer-donation-form-popup .amount-btn”).removeClass(“active”);
var amount = $(this).val();
$(“#footer-donation-form-popup #amount”).val(amount);
});
// Initialize the amounts for the default selected cycle
$(document).ready(function () {
var defaultCycle = $(“#footer-donation-form-popup #cycle”).val();
if (amounts[defaultCycle]) {
updateFooterAmounts(defaultCycle);
} else {
console.log(`Invalid default cycle: ${defaultCycle}`);
}
});
});
jQuery(‘.close-footer-btn’).on(‘click’, function (e) {
e.stopImmediatePropagation();
jQuery(“#fixed-footer”).hide();
// jQuery.cookie(“isFooterDonationBannerShow”, new Date().toUTCString());
// Set the cookie using jQuery.cookie
jQuery.cookie(“isFooterDonationBannerShow”, new Date().toUTCString(), {
path: ‘/’,
domain: ‘www.fairobserver.com’,
secure: true
});
});
</script>
<!– AMP javascript –>
<script id=”hello-world” type=”text/plain” target=”amp-script” runat=server>
async function demo(){
var initial_position = await document.getElementById(‘amp-textarea’).getBoundingClientRectAsync();
let timer = setInterval( async ()=> {
var current_position = await document.getElementById(‘amp-textarea’).getBoundingClientRectAsync();
if ((Math.ceil(initial_position.top) – Math.ceil(current_position.top)) > 1200){
document.getElementById(‘divToHide’).classList.remove(‘d-none’);
document.getElementById(‘closebtn’).addEventListener(‘click’, ()=>{
document.getElementById(‘divToHide’).classList.add(‘d-none’);
});
clearInterval(timer);
}
},2000);
}
demo();
</script>
<div id=”myModalPopUpsignup” class=”modal signup-wrapper n-email-popup” style=”display: none;”>
<div class=”modal-content” id=”modal-content-signup”>
<div class=”signup-cover”>
<div class=”popup-block-wrp” id=”popup-block-wrp-signup”>
<div class=”subscribe-popup-content”>
<h3>NEWSLETTER</h3>
</div>
<div class=””>
<div class=”headingTitle”>Make Sense of the World</div>
<h2>Unique Insights from 2,500+ Contributors in 90+ Countries</h2>
</div>
<div class=”close close-popup-btn-signup” id=”closebtnsignup”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/close-icon-n.png” alt=”” width=”24″
height=”24″ />
</div>
<div class=”signup-popup”>
<div class=”signup-innersection”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription” method=”post”>
<input type=”hidden” name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”newsletter-block”>
<input type=”email” name=”user_email” id=”email” required=””
placeholder=”Enter your email address”>
<div class=”cpf-checkbox-new”>
<input type=”checkbox”
name=”ms-Your email will be shared with fairobserver and subject to it’s Privacy Policy”
id=”privacy-policy” value=”true”
onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)”
required=””><label
for=”Your email will be shared with fairobserver and subject to it’s Privacy Policy”>I
agree to receive emails and other content from Fair Observer. I understand
that I may repeal my consent at any time. You can review our <a
href=”https://www.fairobserver.com/privacy-policy”>Privacy Policy</a>
and <a href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a>
for further information.</label>
</div>
<input type=”submit” value=”REGISTER”>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id=”myModalPopUp” class=”modal signup-wrapper n-email-popup” style=”display: none;”>
<!– Modal content –>
<div class=”modal-content” id=”modal-content-scroll”>
<div class=”modal-cover”>
<div class=”popup-block-wrp”>
<div class=”subscribe-popup-content”>
<h3>NEWSLETTER</h3>
</div>
<div class=””>
<h1>Make Sense of the World</h1>
<h2>Unique Insights from 2,500+ Contributors in 90+ Countries</h2>
</div>
<div class=”close close-popup-btn” id=”closebtn”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/close-icon-n.png” alt=”” width=”24″
height=”24″ />
</div>
<div class=”signup-popup”>
<div class=”signup-innersection”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription” method=”post”>
<input type=”hidden” name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”newsletter-block”>
<input type=”email” name=”user_email” id=”email” required=””
placeholder=”Enter your email address”>
<div class=”cpf-checkbox-new”>
<input type=”checkbox”
name=”ms-Your email will be shared with fairobserver and subject to it’s Privacy Policy”
id=”privacy-policy” value=”true”
onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)”
required=””><label
for=”Your email will be shared with fairobserver and subject to it’s Privacy Policy”>I
agree to receive emails and other content from Fair Observer. I understand
that I may repeal my consent at any time. You can review our <a
href=”https://www.fairobserver.com/privacy-policy”>Privacy Policy</a>
and <a href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a>
for further information.</label>
</div>
<input type=”submit” value=”REGISTER”>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<!–end footer–>
<script>
jQuery(document).ready(function () {
jQuery(‘body .comment-reply-link’).click(function () {
var data_commentid = jQuery(this).attr(‘data-commentid’);
jQuery(‘body #comment_parent’).val(data_commentid);
});
});
document.addEventListener(“DOMContentLoaded”, function () {
function share() {
this.classList.toggle(“active”);
document.querySelector(“.social”).classList.toggle(“active”);
}
const shareButton = document.querySelector(“.share”);
if (shareButton) {
shareButton.addEventListener(“click”, share);
}
});
</script>
<!– profile-pic-upload-popup (footer) –>
<div id=”myDiv” class=”fixed-footer-newsletter fixed-f”>
<div class=”fixed-toggle”>
<div class=”container”>
<div class=”up-down-toggle-btn”>
<svg xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 384 512″>
<path
d=”M169.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 274.7 54.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z” />
</svg>
</div>
</div>
</div>
<div class=”container”>
<div class=”fixed-f-left”>
<div class=”logo-newsletter”>
<img src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/images/fo-icon-logo.png” alt=”Fair observer”>
</div>
<div class=”fixed-f-text”>
<h2>Make Sense of the World</h2>
<p>Unique Insights from 2,500+ Contributors in 90+ Countries</p>
</div>
</div>
<div class=”footer-fixed-form”>
<form method=”post” action=”https://www.fairobserver.com/moosend-subscription”> <input type=”hidden”
name=”nlang” value=””>
<div class=”tnp-field tnp-field-email”>
<div class=”fo-newsletter-block d-flex justify-space-between”>
<input type=”email” name=”user_email” id=”email” required=””
placeholder=”Enter your email address”>
<input type=”submit” value=”SUBSCRIBE”>
</div>
<div class=”fo-cpf-checkbox d-flex”> <input type=”checkbox”
name=”ms-Your_email_will_be_shared_with_fairobserver_and_subject_to_it’s_Privacy_Policy”
id=”privacy-policy” value=”true”
onchange=”document.getElementById(‘privacy-policy-false’).name=(this.checked ? ” : this.name)”
required=””><label
for=”Your email will be shared with fairobserver and subject to its Privacy Policy”>I
agree to receive emails and other content from Fair Observer. I understand that I
may repeal my consent at any time. You can review our <a
href=”https://www.fairobserver.com/privacy-policy”>Privacy Policy</a> and <a
href=”https://www.fairobserver.com/terms-of-use/”>Terms of Use</a> for further
information .</label></div>
</div>
</form>
</div>
</div>
</div>
<!– Google Tag Manager (noscript) –>
<noscript><iframe src=”https://www.googletagmanager.com/ns.html?id=GTM-PLZSZQV” height=”0″ width=”0″
style=”display:none;visibility:hidden”></iframe></noscript>
<!– End Google Tag Manager (noscript) –>
<script src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/js/custom.js”></script>
<script src=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/js/jquery.cookie.min.js”
type=”sortdDeferScript”></script>
<!– Print css–>
<link href=”https://www.fairobserver.com/wp-content/themes/fo2023/assets/css/print.css?v=2.3″ rel=”stylesheet” media=”print” />
<script type=”speculationrules”>
{“prefetch”:[{“source”:”document”,”where”:{“and”:[{“href_matches”:”/*”},{“not”:{“href_matches”:[“/wp-*.php”,”/wp-admin/*”,”/wp-content/uploads/*”,”/wp-content/*”,”/wp-content/plugins/*”,”/wp-content/themes/fo2023/*”,”/*\?(.+)”]}},{“not”:{“selector_matches”:”a[rel~=”nofollow”]”}},{“not”:{“selector_matches”:”.no-prefetch, .no-prefetch a”}}]},”eagerness”:”conservative”}]}
</script>
<!–googleoff: all–><div id=”cookie-law-info-bar” data-nosnippet=”true”><h5 class=”cli_messagebar_head”>We Need Your Consent</h5><span><div style=”width:100%;font-size:13px”> We use cookies to give you the best possible experience. Learn more about how we use cookies or edit your cookie preferences. <a href=”https://www.fairobserver.com/privacy-policy” id=”CONSTANT_OPEN_URL” target=”_blank” class=”cli-plugin-main-link”>Privacy Policy</a>. <span><a role=’button’ class=”medium cli-plugin-button cli-plugin-main-button cli_settings_button”>My Options</a> <a role=’button’ data-cli_action=”accept” id=”cookie_action_close_header” class=”medium cli-plugin-button cli-plugin-main-button cookie_action_close_header cli_action_button wt-cli-accept-btn”>I Accept</a></span></div></span></div><div id=”cookie-law-info-again” data-nosnippet=”true”><span id=”cookie_hdr_showagain”>Privacy & Cookies Policy</span></div><div class=”cli-modal” data-nosnippet=”true” id=”cliSettingsPopup” tabindex=”-1″ role=”dialog” aria-labelledby=”cliSettingsPopup” aria-hidden=”true”>
<div class=”cli-modal-dialog” role=”document”>
<div class=”cli-modal-content cli-bar-popup”>
<button type=”button” class=”cli-modal-close” id=”cliModalClose”>
<svg class=”” viewBox=”0 0 24 24″><path d=”M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z”></path><path d=”M0 0h24v24h-24z” fill=”none”></path></svg>
<span class=”wt-cli-sr-only”>Close</span>
</button>
<div class=”cli-modal-body”>
<div class=”cli-container-fluid cli-tab-container”>
<div class=”cli-row”>
<div class=”cli-col-12 cli-align-items-stretch cli-px-0″>
<div class=”cli-privacy-overview”>
<h4>Edit Cookie Preferences</h4> <div class=”cli-privacy-content”>
<div class=”cli-privacy-content-text”>The Fair Observer website uses digital cookies so it can collect statistics on how many visitors come to the site, what content is viewed and for how long, and the general location of the computer network of the visitor. These statistics are collected and processed using the Google Analytics service. Fair Observer uses these aggregate statistics from website visits to help improve the content of the website and to provide regular reports to our current and future donors and funding organizations. The type of digital cookie information collected during your visit and any derived data cannot be used or combined with other information to personally identify you. Fair Observer does not use personal data collected from its website for advertising purposes or to market to you.</p><p>As a convenience to you, Fair Observer provides buttons that link to popular social media sites, called social sharing buttons, to help you share Fair Observer content and your comments and opinions about it on these social media sites. These social sharing buttons are provided by and are part of these social media sites. They may collect and use personal data as described in their respective policies. Fair Observer does not receive personal data from your use of these social sharing buttons. It is not necessary that you use these buttons to read Fair Observer content or to share on social media.</p><p> </div>
</div>
<a class=”cli-privacy-readmore” aria-label=”Show more” role=”button” data-readmore-text=”Show more” data-readless-text=”Show less”></a> </div>
</div>
<div class=”cli-col-12 cli-align-items-stretch cli-px-0 cli-tab-section-container”>
<div class=”cli-tab-section”>
<div class=”cli-tab-header”>
<a role=”button” tabindex=”0″ class=”cli-nav-link cli-settings-mobile” data-target=”necessary” data-toggle=”cli-toggle-tab”>
Necessary </a>
<div class=”wt-cli-necessary-checkbox”>
<input type=”checkbox” class=”cli-user-preference-checkbox” id=”wt-cli-checkbox-necessary” data-id=”checkbox-necessary” checked=”checked” />
<label class=”form-check-label” for=”wt-cli-checkbox-necessary”>Necessary</label>
</div>
<span class=”cli-necessary-caption”>Always Enabled</span>
</div>
<div class=”cli-tab-content”>
<div class=”cli-tab-pane cli-fade” data-id=”necessary”>
<div class=”wt-cli-cookie-description”>
These cookies essential for the website to function. </div>
</div>
</div>
</div>
<div class=”cli-tab-section”>
<div class=”cli-tab-header”>
<a role=”button” tabindex=”0″ class=”cli-nav-link cli-settings-mobile” data-target=”social_media” data-toggle=”cli-toggle-tab”>
Social Media </a>
<div class=”cli-switch”>
<input type=”checkbox” id=”wt-cli-checkbox-social_media” class=”cli-user-preference-checkbox” data-id=”checkbox-social_media” checked=’checked’ />
<label for=”wt-cli-checkbox-social_media” class=”cli-slider” data-cli-enable=”Enabled” data-cli-disable=”Disabled”><span class=”wt-cli-sr-only”>Social Media</span></label>
</div>
</div>
<div class=”cli-tab-content”>
<div class=”cli-tab-pane cli-fade” data-id=”social_media”>
<div class=”wt-cli-cookie-description”>
These cookies are used to enable sharing or following of content that you find interesting on our website. These settings apply to third-party social networking and other websites. </div>
</div>
</div>
</div>
<div class=”cli-tab-section”>
<div class=”cli-tab-header”>
<a role=”button” tabindex=”0″ class=”cli-nav-link cli-settings-mobile” data-target=”performance” data-toggle=”cli-toggle-tab”>
Performance & Functionality </a>
<div class=”cli-switch”>
<input type=”checkbox” id=”wt-cli-checkbox-performance” class=”cli-user-preference-checkbox” data-id=”checkbox-performance” checked=’checked’ />
<label for=”wt-cli-checkbox-performance” class=”cli-slider” data-cli-enable=”Enabled” data-cli-disable=”Disabled”><span class=”wt-cli-sr-only”>Performance & Functionality</span></label>
</div>
</div>
<div class=”cli-tab-content”>
<div class=”cli-tab-pane cli-fade” data-id=”performance”>
<div class=”wt-cli-cookie-description”>
These cookies are used to enhance the performance and functionality of our website. They provide statistics on how our website is used and help us improve by measuring errors. Certain functionalities on our website may become unavailable without these cookies. </div>
</div>
</div>
</div>
<div class=”cli-tab-section”>
<div class=”cli-tab-header”>
<a role=”button” tabindex=”0″ class=”cli-nav-link cli-settings-mobile” data-target=”analytics” data-toggle=”cli-toggle-tab”>
Analytics </a>
<div class=”cli-switch”>
<input type=”checkbox” id=”wt-cli-checkbox-analytics” class=”cli-user-preference-checkbox” data-id=”checkbox-analytics” checked=’checked’ />
<label for=”wt-cli-checkbox-analytics” class=”cli-slider” data-cli-enable=”Enabled” data-cli-disable=”Disabled”><span class=”wt-cli-sr-only”>Analytics</span></label>
</div>
</div>
<div class=”cli-tab-content”>
<div class=”cli-tab-pane cli-fade” data-id=”analytics”>
<div class=”wt-cli-cookie-description”>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class=”cli-modal-footer”>
<div class=”wt-cli-element cli-container-fluid cli-tab-container”>
<div class=”cli-row”>
<div class=”cli-col-12 cli-align-items-stretch cli-px-0″>
<div class=”cli-tab-footer wt-cli-privacy-overview-actions”>
<a id=”wt-cli-privacy-save-btn” role=”button” tabindex=”0″ data-cli-action=”accept” class=”wt-cli-privacy-btn cli_setting_save_button wt-cli-privacy-accept-btn cli-btn”>SAVE & ACCEPT</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class=”cli-modal-backdrop cli-fade cli-settings-overlay”></div>
<div class=”cli-modal-backdrop cli-fade cli-popupbar-overlay”></div>
<!–googleon: all–> <!– Memberships powered by Paid Memberships Pro v2.11.2. –>
<script>document.body.classList.remove(“no-js”);</script> <script>
document.addEventListener(‘DOMContentLoaded’, function() {
// Select all image elements
const allImages = document.querySelectorAll(‘img’);
// Iterate through each image and add alt if missing
allImages.forEach((img, index) => {
if (!img.hasAttribute(‘alt’) || img.alt.trim() === ”) {
// Add a default alt tag (you can customize the logic)
img.alt = img.src.split(‘/’).pop().split(‘.’)[0].replace(/[-_]/g, ‘ ‘);
}
});
});
</script>
<script type=”text/javascript”>
jQuery(document).ready(function ($) {
// Function to update the tooltip text for notification checkboxes
function updateTooltip(checkbox) {
// Select the closest label for the specific notification checkbox
const tooltipLabel = $(checkbox).closest(‘.wpd_label’);
// Update the tooltip based on the checkbox state
if ($(checkbox).is(‘:checked’)) {
tooltipLabel.attr(‘wpd-tooltip’, “Don’t notify me about replies”);
} else {
tooltipLabel.attr(‘wpd-tooltip’, “Notify me about replies”);
}
}
// Initial tooltip update for relevant notification checkboxes on page load
$(‘.wpd_label__checkbox[name=”wpdiscuz_notification_type”]’).each(function () {
updateTooltip(this);
});
// Update tooltip when any notification checkbox is toggled
$(document).on(‘change’, ‘.wpd_label__checkbox[name=”wpdiscuz_notification_type”]’, function () {
updateTooltip(this);
});
});
</script>
<style type=”text/css”>
.wpd-comment-share.wpd-hidden .wpd-tooltip-content {
min-width: 165px !important;
}
</style>
<script type=”text/javascript”>
jQuery(document).ready(function ($) {
// Target only .wpd-tooltip-content inside .wpd-comment-share.wpd-hidden
$(‘.wpd-comment-share.wpd-hidden .wpd-tooltip-content’).each(function () {
// Extract the comment URL from the existing WhatsApp or Twitter link
var twitterUrl = $(this).find(‘a.wc_tw’).attr(‘href’);
var commentUrl = ”;
// Check if the Twitter URL exists and extract the actual URL part
if (twitterUrl) {
var urlParams = new URLSearchParams(twitterUrl.split(‘?’)[1]);
commentUrl = urlParams.get(‘url’);
}
// Fallback to WhatsApp URL if Twitter URL is not found
if (!commentUrl) {
var whatsappUrl = $(this).find(‘a.wc_whatsapp’).attr(‘href’);
if (whatsappUrl) {
commentUrl = decodeURIComponent(whatsappUrl.split(‘URL: ‘)[1]);
}
}
// Ensure the commentUrl is extracted, then append new share buttons
if (commentUrl) {
$(this).append(
‘<a class=”wc_facebook” rel=”noreferrer” href=”https://www.facebook.com/sharer/sharer.php?u=’ + encodeURIComponent(commentUrl) + ‘” target=”_blank” title=”Share On Facebook”>’ +
‘<i class=”fab fa-facebook wpf-cta” aria-hidden=”true”></i></a>’ +
‘<a class=”wc_telegram” rel=”noreferrer” href=”https://t.me/share/url?url=’ + encodeURIComponent(commentUrl) + ‘” target=”_blank” title=”Share On Telegram”>’ +
‘<i class=”fab fa-telegram wpf-cta” aria-hidden=”true”></i></a>’ +
‘<a class=”wc_linkedin” rel=”noreferrer” href=”https://www.linkedin.com/sharing/share-offsite/?url=’ + encodeURIComponent(commentUrl) + ‘” target=”_blank” title=”Share On LinkedIn”>’ +
‘<i class=”fab fa-linkedin wpf-cta” aria-hidden=”true”></i></a>’ +
‘<a class=”wc_email” rel=”noreferrer” href=”mailto:?subject=Check out this comment on Fair Observer&body=’ + encodeURIComponent(commentUrl) + ‘” target=”_blank” title=”Share via Email”>’ +
‘<i class=”fas fa-envelope wpf-cta” aria-hidden=”true”></i></a>’
);
}
});
});
</script>
<div id=’wpd-editor-source-code-wrapper-bg’></div><div id=’wpd-editor-source-code-wrapper’><textarea id=’wpd-editor-source-code’></textarea><button id=’wpd-insert-source-code’>Insert</button><input type=’hidden’ id=’wpd-editor-uid’ /></div> <script>
/(trident|msie)/i.test(navigator.userAgent) && document.getElementById && window.addEventListener && window.addEventListener(“hashchange”, (function() {
var t, e = location.hash.substring(1);
/^[A-z0-9_-]+$/.test(e) && (t = document.getElementById(e)) && (/^(?:a|select|input|button|textarea)$/i.test(t.tagName) || (t.tabIndex = -1), t.focus())
}), !1);
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/cbxwpbookmark/assets/js/cbxwpbookmark-events.js?ver=1.7.13″ id=”cbxwpbookmark-events-js”></script>
<script src=”https://www.fairobserver.com/wp-content/plugins/cbxwpbookmark/assets/vendors/awesome-notifications/script.js?ver=1.7.13″ id=”awesome-notifications-js”></script>
<script id=”cbxwpbookmarkpublicjs-js-extra”>
var cbxwpbookmark = {“ajaxurl”:”https://www.fairobserver.com/wp-admin/admin-ajax.php”,”nonce”:”e56a1b0a54″,”cat_template”:””””,”category_delete_success”:”Category deleted successfully”,”category_delete_error”:”Unable to delete the category”,”are_you_sure_global”:”Are you sure?”,”are_you_sure_delete_desc”:”Once you delete, it’s gone forever. You can not revert it back.”,”areyousuretodeletecat”:”Are you sure you want to delete this Bookmark Category?”,”areyousuretodeletebookmark”:”Are you sure you want to delete this Bookmark?”,”bookmark_failed”:”Failed to Bookmark”,”bookmark_removed”:”Bookmark Removed”,”bookmark_removed_empty”:”All Bookmarks Removed”,”bookmark_removed_failed”:”Bookmark Removed Failed”,”error_msg”:”Error loading data. Response code = “,”category_name_empty”:”Category name can not be empty”,”add_to_head_default”:”Click Category to Bookmark”,”add_to_head_cat_list”:”Click to Edit Category”,”add_to_head_cat_edit”:”Edit Category”,”add_to_head_cat_create”:”Create Category”,”no_cats_found”:”No category found”,”add_to_head_max_cat”:”Maximum category limit reached”,”max_cat_limit”:”0″,”max_cat_limit_error”:”Sorry, you reached the maximum category limit and to create one one, please delete unnecessary categories first”,”user_current_cat_count”:”0″,”user_current_cats”:””,”user_can_create_cat”:”1″,”bookmark_mode”:”no_cat”,”bookmark_not_found”:”No bookmarks found”,”load_more”:”Load More …”,”category_default_status”:”1″,”delete_all_bookmarks_by_user_confirm”:”Are you sure to delete all of your bookmarks? This process can not be undone.”,”awn_options”:{“tip”:”Tip”,”info”:”Info”,”success”:”Success”,”warning”:”Attention”,”alert”:”Error”,”async”:”Loading”,”confirm”:”Confirmation”,”confirmOk”:”OK”,”confirmCancel”:”Cancel”},”shareurl_html”:”u003Cdiv class=”shareurl_modal”u003Eu003Ch3u003ECopy and Share Urlu003C/h3u003Eu003Cdiv class=”shareurl_copy”u003Eu003Cinput readonly class=”shareurl_copy_input” name=”shareurl_copy_input” type=”text” value=”##share_url##” /u003Eu003Cbutton data-url=”##share_url##” class=”shareurl_copy_btn”u003ECopyu003C/buttonu003Eu003C/divu003Eu003C/divu003E”,”shareurl_trans”:{“copy”:”Copy”,”copied”:”Copied”}};
//# sourceURL=cbxwpbookmarkpublicjs-js-extra
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/cbxwpbookmark/assets/js/cbxwpbookmark-public.js?ver=1.7.13″ id=”cbxwpbookmarkpublicjs-js”></script>
<script src=”https://www.fairobserver.com/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1″ id=”wp-hooks-js”></script>
<script src=”https://www.fairobserver.com/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375″ id=”wp-i18n-js”></script>
<script id=”wp-i18n-js-after”>
wp.i18n.setLocaleData( { ‘text directionu0004ltr’: [ ‘ltr’ ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4″ id=”swv-js”></script>
<script id=”contact-form-7-js-before”>
var wpcf7 = {
“api”: {
“root”: “https://www.fairobserver.com/wp-json/”,
“namespace”: “contact-form-7/v1”
},
“cached”: 1
};
//# sourceURL=contact-form-7-js-before
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4″ id=”contact-form-7-js”></script>
<script src=”https://www.fairobserver.com/wp-includes/js/comment-reply.min.js?ver=6.9″ id=”comment-reply-js” async data-wp-strategy=”async” fetchpriority=”low”></script>
<script id=”theme-my-login-js-extra”>
var themeMyLogin = {“action”:””,”errors”:[]};
//# sourceURL=theme-my-login-js-extra
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/theme-my-login/assets/scripts/theme-my-login.min.js?ver=7.1.14″ id=”theme-my-login-js”></script>
<script id=”wordlift-js-extra”>
var wlSettings = {“ajaxUrl”:”https://www.fairobserver.com/wp-admin/admin-ajax.php”,”apiUrl”:”https://www.fairobserver.com/wl-api/”,”jsonld_url”:”https://www.fairobserver.com/wp-json/wordlift/v1/jsonld/”,”postId”:”159933″,”jsonld_enabled”:””};
//# sourceURL=wordlift-js-extra
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/wordlift/js/dist/bundle.js?ver=3.54.6″ id=”wordlift-js”></script>
<script id=”wordlift-cloud-js-extra”>
var _wlCloudSettings = {“selector”:”a.wl-entity-page-link”,”url”:”https://www.fairobserver.com/wp-json/wordlift/v1/jsonld”};
//# sourceURL=wordlift-cloud-js-extra
</script>
<script defer=”defer” src=”https://www.fairobserver.com/wp-content/plugins/wordlift/js/dist/wordlift-cloud.js?ver=3.54.6″ id=”wordlift-cloud-js”></script>
<script id=”custom-scripts-js-extra”>
var ajax_object = {“ajax_url”:”https://www.fairobserver.com/wp-admin/admin-ajax.php”};
//# sourceURL=custom-scripts-js-extra
</script>
<script src=”https://www.fairobserver.com/wp-content/themes/fo2023/js/custom-scripts.js” id=”custom-scripts-js”></script>
<script id=”wpdiscuz-combo-js-js-extra”>
var wpdiscuzAjaxObj = {“wc_hide_replies_text”:”Hide Replies”,”wc_show_replies_text”:”View Replies”,”wc_msg_required_fields”:”Please fill out required fields”,”wc_invalid_field”:”Some of field value is invalid”,”wc_error_empty_text”:”please fill out this field to comment”,”wc_error_url_text”:”url is invalid”,”wc_error_email_text”:”email address is invalid”,”wc_invalid_captcha”:”Invalid Captcha Code”,”wc_login_to_vote”:”You Must Be Logged In To Vote”,”wc_deny_voting_from_same_ip”:”You are not allowed to vote for this comment”,”wc_self_vote”:”You cannot vote for your comment”,”wc_vote_only_one_time”:”You’ve already voted for this comment”,”wc_voting_error”:”Voting Error”,”wc_banned_user”:”You are banned”,”wc_comment_edit_not_possible”:”Sorry, this comment is no longer possible to edit”,”wc_comment_not_updated”:”Sorry, the comment was not updated”,”wc_comment_not_edited”:”You’ve not made any changes”,”wc_msg_input_min_length”:”Input is too short”,”wc_msg_input_max_length”:”Input is too long”,”wc_spoiler_title”:”Spoiler Title”,”wc_cannot_rate_again”:”You cannot rate again”,”wc_not_allowed_to_rate”:”You’re not allowed to rate here”,”wc_confirm_rate_edit”:”Are you sure you want to edit your rate?”,”wc_follow_user”:”Follow this user”,”wc_unfollow_user”:”Unfollow this user”,”wc_follow_success”:”You started following this comment author”,”wc_follow_canceled”:”You stopped following this comment author.”,”wc_follow_email_confirm”:”Please check your email and confirm the user following request.”,”wc_follow_email_confirm_fail”:”Sorry, we couldn’t send confirmation email.”,”wc_follow_login_to_follow”:”Please login to follow users.”,”wc_follow_impossible”:”We are sorry, but you can’t follow this user.”,”wc_follow_not_added”:”Following failed. Please try again later.”,”is_user_logged_in”:””,”commentListLoadType”:”0″,”commentListUpdateType”:”0″,”commentListUpdateTimer”:”60″,”liveUpdateGuests”:”0″,”wordpressThreadCommentsDepth”:”10″,”wordpressIsPaginate”:””,”commentTextMaxLength”:”1500″,”replyTextMaxLength”:”1500″,”commentTextMinLength”:”1″,”replyTextMinLength”:”1″,”storeCommenterData”:”100000″,”socialLoginAgreementCheckbox”:”1″,”enableFbLogin”:”0″,”fbUseOAuth2″:”0″,”enableFbShare”:”1″,”facebookAppID”:””,”facebookUseOAuth2″:”0″,”enableGoogleLogin”:”0″,”googleClientID”:””,”googleClientSecret”:””,”cookiehash”:”e66860338f17370cef9df4542f61dc2c”,”isLoadOnlyParentComments”:”0″,”scrollToComment”:”1″,”commentFormView”:”collapsed”,”enableDropAnimation”:”1″,”isNativeAjaxEnabled”:”1″,”userInteractionCheck”:”1″,”enableBubble”:”0″,”bubbleLiveUpdate”:”0″,”bubbleHintTimeout”:”45″,”bubbleHintHideTimeout”:”10″,”cookieHideBubbleHint”:”wpdiscuz_hide_bubble_hint”,”bubbleHintShowOnce”:”1″,”bubbleHintCookieExpires”:”7″,”bubbleShowNewCommentMessage”:”1″,”bubbleLocation”:”content_left”,”firstLoadWithAjax”:”0″,”wc_copied_to_clipboard”:”Copied to clipboard!”,”inlineFeedbackAttractionType”:”blink”,”loadRichEditor”:”1″,”wpDiscuzReCaptchaSK”:”6Lcv4t0rAAAAADxN4Z8xk9FLg7__TNK_1uYYIDUe”,”wpDiscuzReCaptchaTheme”:”light”,”wpDiscuzReCaptchaVersion”:”2.0″,”wc_captcha_show_for_guest”:”0″,”wc_captcha_show_for_members”:”0″,”wpDiscuzIsShowOnSubscribeForm”:”0″,”wmuEnabled”:”0″,”wmuInput”:”wmu_files”,”wmuMaxFileCount”:”1″,”wmuMaxFileSize”:”2097152″,”wmuPostMaxSize”:”3221225472″,”wmuIsLightbox”:”1″,”wmuMimeTypes”:{“jpg”:”image/jpeg”,”jpeg”:”image/jpeg”,”jpe”:”image/jpeg”,”gif”:”image/gif”,”png”:”image/png”,”bmp”:”image/bmp”,”tiff”:”image/tiff”,”tif”:”image/tiff”,”ico”:”image/x-icon”},”wmuPhraseConfirmDelete”:”Are you sure you want to delete this attachment?”,”wmuPhraseNotAllowedFile”:”Not allowed file type”,”wmuPhraseMaxFileCount”:”Maximum number of uploaded files is 1″,”wmuPhraseMaxFileSize”:”Maximum upload file size is 2MB”,”wmuPhrasePostMaxSize”:”Maximum post size is 3072MB”,”wmuPhraseDoingUpload”:”Uploading in progress! Please wait.”,”msgEmptyFile”:”File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.”,”msgPostIdNotExists”:”Post ID not exists”,”msgUploadingNotAllowed”:”Sorry, uploading not allowed for this post”,”msgPermissionDenied”:”You do not have sufficient permissions to perform this action”,”wmuKeyImages”:”images”,”wmuSingleImageWidth”:”auto”,”wmuSingleImageHeight”:”200″,”previewTemplate”:”u003Cdiv class=”wmu-preview [PREVIEW_TYPE_CLASS]” title=”[PREVIEW_TITLE]” data-wmu-type=”[PREVIEW_TYPE]” data-wmu-attachment=”[PREVIEW_ID]”u003Ern u003Cdiv class=”wmu-preview-remove”u003Ern u003Cimg class=”wmu-preview-img” src=”[PREVIEW_ICON]”u003Ern u003Cdiv class=”wmu-file-name”u003E[PREVIEW_FILENAME]u003C/divu003Ern u003C!– u003Cdiv class=”wmu-delete”u003Eu00a0u003C/divu003E–u003Ern u003C/divu003Ernu003C/divu003Ern”,”isUserRated”:”0″,”version”:”7.6.42″,”wc_post_id”:”159933″,”isCookiesEnabled”:”1″,”loadLastCommentId”:”0″,”dataFilterCallbacks”:[],”phraseFilters”:[],”scrollSize”:”32″,”url”:”https://www.fairobserver.com/wp-admin/admin-ajax.php”,”customAjaxUrl”:”https://www.fairobserver.com/wp-content/plugins/wpdiscuz/utils/ajax/wpdiscuz-ajax.php”,”bubbleUpdateUrl”:”https://www.fairobserver.com/wp-json/wpdiscuz/v1/update”,”restNonce”:”4a4b9da582″,”is_rate_editable”:”0″,”menu_icon”:”https://www.fairobserver.com/wp-content/plugins/wpdiscuz/assets/img/plugin-icon/wpdiscuz-svg.svg”,”menu_icon_hover”:”https://www.fairobserver.com/wp-content/plugins/wpdiscuz/assets/img/plugin-icon/wpdiscuz-svg_hover.svg”,”is_email_field_required”:”1″};
var wpdiscuzUCObj = {“msgConfirmDeleteComment”:”Are you sure you want to delete this comment?”,”msgConfirmCancelSubscription”:”Are you sure you want to cancel this subscription?”,”msgConfirmCancelFollow”:”Are you sure you want to cancel this follow?”,”additionalTab”:”0″};
//# sourceURL=wpdiscuz-combo-js-js-extra
</script>
<script id=”wpdiscuz-combo-js-js-before”>
var wpdiscuzEditorOptions = {
modules: {
toolbar: “”,
counter: {
uniqueID: “”,
commentmaxcount : 1500,
replymaxcount : 1500,
commentmincount : 1,
replymincount : 1,
},
},
wc_be_the_first_text: “Be the First to Comment!”,
wc_comment_join_text: “Join the discussion”,
theme: ‘snow’,
debug: ‘error’
};
//# sourceURL=wpdiscuz-combo-js-js-before
</script>
<script src=”https://www.fairobserver.com/wp-content/plugins/wpdiscuz/assets/js/wpdiscuz-combo.min.js?ver=7.6.42″ id=”wpdiscuz-combo-js-js”></script>
<script src=”https://www.fairobserver.com/wp-content/plugins/featured-video-plus/js/jquery.fitvids.min.js” id=”featured-video-plus-js”></script>
<script></script> <script>
document.addEventListener(“DOMContentLoaded”, function() {
var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/wpdiscuz/themes/default/style.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/wpdiscuz/assets/css/wpdiscuz-combo.min.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/wpdiscuz/assets/third-party/font-awesome-5.13.0/css/fa.min.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/gutenberg_Image_align_addon/css/gia-style.min.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/cbxwpbookmark/assets/vendors/awesome-notifications/style.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/cookie-law-info/legacy/public/css/cookie-law-info-public.css’;
document.head.appendChild(l);var l=document.createElement(‘link’);
l.rel=’stylesheet’;
l.href=’https://www.fairobserver.com/wp-content/plugins/cookie-law-info/legacy/public/css/cookie-law-info-gdpr.css’;
document.head.appendChild(l); });
</script>
<style>
.download_product_popup_content,
.popup_container {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
text-align: center
}
/* .popup_loginmodel .dm-fo-login-box {
max-width: 420px !important
} */
</style>
<script>
jQuery(document).ready(function () {
jQuery(‘.close-popup-btn-signup’).click(function () {
jQuery(‘#myModalPopUpsignup’).hide();
});
jQuery(‘#myBtn , .sign_up_heaer’).click(function () {
jQuery(‘#myModalPopUpsignup’).show();
});
var path = location.pathname;
var popup_not_allowed_in_paths = [“/fo/donate/”, “/fo/support-fo/”, “/fo/membership-account/membership-levels/”,
“/fo/membership-account/membership-checkout/?level=2”, “/fo/membership-account/membership-checkout/?level=1”,
“/fo/contact/”, “payment-success”
];
var isPopupOnPathAllowed = true;
if (popup_not_allowed_in_paths.includes(path)) {
isPopupOnPathAllowed = false;
}
if (jQuery.cookie(‘whenToShowDialog’) != “yesss” && isPopupOnPathAllowed) {
jQuery(window).scroll(function () {
var available, percentage_of_page, half_screen, height;
available = jQuery(document).height();
percentage_of_page = 0.25;
half_screen = available * percentage_of_page;
height = jQuery(window).scrollTop();
if (height > half_screen) {
if (jQuery.cookie(‘whenToShowDialog’) != “yesss”) {
jQuery(“#myModalPopUp”).css(‘display’, ‘flex’);
jQuery.cookie(“whenToShowDialog”, “yesss”);
}
}
});
} else {
jQuery(‘#myModalPopUp’).hide();
}
var dwnldbtn = jQuery(“#download_product_popup_open”);
dwnldbtn.click(() => {
console.log(‘be’);
jQuery(‘#download_product_popup’).show();
});
jQuery(‘#download_product_popup_open’).click(function () {
console.log(‘hellof’);
jQuery(‘#download_product_popup’).fadeIn();
});
jQuery(‘.download_product_popup_close’).click(function () {
jQuery(‘#download_product_popup’).fadeOut();
});
jQuery(‘.download_product_popup_close’).click(function () {
jQuery(‘#download_product_popup’).fadeOut();
});
var container = jQuery(“#download_product_popup”);
container.click((e) => {
if (e.target.id == ‘download_product_popup’) {
jQuery(‘#download_product_popup’).hide();
}
});
jQuery(‘.close-popup-btn’).click(function () {
// $.cookie(‘whenToShowDialog’, “yesss”);
display(“whenToShowDialog”, “yesss”);
jQuery(‘#myModalPopUp’).hide();
});
jQuery(‘.other_donation_amount’).keyup(function (e) {
var $otherRadio = jQuery(‘#other’);
var $otherAmountSection = jQuery(‘.other_donation_amount_section’);
$otherAmountSection.show();
$otherRadio.prop(‘checked’, true);
var value = jQuery(this).val();
jQuery(‘#donation_amount’).html(‘$’ + value);
$otherRadio.val(value);
jQuery(‘#amount’).val(value);
});
jQuery(‘#other’).change(function () {
if (jQuery(this).is(‘:checked’)) {
jQuery(‘.other_donation_amount_section’).show();
} else {
jQuery(‘.other_donation_amount_section’).hide();
}
});
});
<!– –>
jQuery(document).click(function () {
/* login popup */
jQuery(‘#closebtnlogin’).click(function () {
jQuery(“#loginmodal”).hide();
});
var logincontainer = jQuery(“.dm-fo-login-box”);
if (!logincontainer.is(event.target) && !logincontainer.has(event.target).length) {
jQuery(“#loginmodal”).hide();
}
var loginbtn = jQuery(“.fo-login-link”);
if (!loginbtn.is(event.target) && !loginbtn.has(event.target).length) {
} else {
var loginModal = jQuery(“#loginmodal”);
loginModal.find(‘.popup-form input’).val(”); // Clear all input values (optional)
loginModal.find(‘.popup-form’).hide(); // Hide all forms within #loginmodal
loginModal.find(‘.error-message’).remove(); // Remove all error messages within #loginmodal
loginModal.find(‘.input-error’).removeClass(‘input-error’); // Remove error class within #loginmodal
loginModal.find(‘#login-form’).show(); // Show the target form within #loginmodal
loginModal.show(); // Show the login modal
}
/* signupbutton popup */
var signupcontainer = jQuery(“#modal-content-signup”);
if (!signupcontainer.is(event.target) && !signupcontainer.has(event.target).length) {
jQuery(“#myModalPopUpsignup”).hide();
}
var signupcontainerbtn = jQuery(“#myBtn”);
if (!signupcontainerbtn.is(event.target) && !signupcontainerbtn.has(event.target).length) {
} else {
jQuery(“#myModalPopUpsignup”).css(‘display’, ‘flex’);
}
/* signupbutton onscroll popup */
var container = jQuery(“#modal-content-scroll”);
if (!container.is(event.target) && !container.has(event.target).length) {
var displayval = jQuery(‘#myModalPopUp’).css(‘display’);
if (displayval == ‘flex’) {
jQuery(“#myModalPopUp”).hide();
display(“whenToShowDialog”, “yesss”);
}
}
jQuery(‘#other’).click(function () {
jQuery(‘.other_donation_amount_section’).show();
});
jQuery(‘.other_donation_amount’).keyup(function (e) {
var activeElement = document.getElementsByClassName(“donation-amount-box”)[0].getElementsByClassName(“active”)[0];
if (activeElement) {
activeElement.classList.remove(‘active’);
}
var value = $(‘.other_donation_amount’).val();
jQuery(‘#other’).val(value);
jQuery(‘#donation_amount’).html(‘$’ + value);
jQuery(‘#amount’).val(value);
jQuery(‘#paypalamount’).val(value);
jQuery(‘#monthly’).val(value);
})
});
jQuery(document).ready(function () {
jQuery(‘.fo-login-link.btn-popup-footer a’).on(‘click’, function (e) {
e.preventDefault(); // Prevent the default behavior of the link
jQuery(‘.btn-popup-footer-login’).addClass(‘pop-active’); // Add the custom class
});
});
jQuery(document).ready(function () {
jQuery(‘.btn-popup-footer-login-close’).on(‘click’, function () {
jQuery(‘.popup_loginmodel.btn-popup-footer-login’).removeClass(‘pop-active’);
});
});
jQuery(document).ready(function ($) {
jQuery(“.total_counts h1”).click(function () {
jQuery(“.fo-search-popup”).addClass(“active”);
});
});
jQuery(document).ready(function () {
jQuery(‘.tml-pwd-wrap’).append(‘<div id=”show_hide_div” class=”togglepwd” onclick=”showPassword(event)”><i class=”bi bi-eye-slash-fill”></i></div>’);
jQuery(‘meta[property=”og:image:height”]’).attr(“content”, 400);
jQuery(‘meta[property=”og:image:width”]’).attr(“content”, 400);
//Open Bookmark Model
jQuery(‘#screen, #modal’).hide();
jQuery(‘#trigger-modal ,#trigger-modal2’).click(function () {
jQuery(‘#modal’).show();
});
jQuery(‘.x’).click(function () {
jQuery(‘#screen, #modal’).hide();
});
window.addEventListener(‘click’, function (e) {
if (document.getElementById(‘modal’).contains(e.target)) {
jQuery(“#modal”).hide();
} else { }
});
});
function showPassword(event) {
event.stopPropagation();
var pass = document.getElementById(“user_pass”);
if (pass.type === “password”) {
pass.type = “text”;
document.getElementById(“show_hide_div”).innerHTML = “<i class=’bi bi-eye-fill’></i>”;
} else {
pass.type = “password”;
document.getElementById(“show_hide_div”).innerHTML = “<i class=’bi bi-eye-slash-fill’></i>”;
}
}
function showPassword1() {
var pass = document.getElementById(“upassword”);
if (pass.type === “password”) {
pass.type = “text”;
document.getElementById(“show_hide_div_reg1”).innerHTML = “Hide”;
} else {
pass.type = “password”;
document.getElementById(“show_hide_div_reg1”).innerHTML = “Show”;
}
}
function showPassword2() {
var pass = document.getElementById(“upasswordconfirm”);
if (pass.type === “password”) {
pass.type = “text”;
document.getElementById(“show_hide_div_reg2”).innerHTML = “Hide”;
} else {
pass.type = “password”;
document.getElementById(“show_hide_div_reg2”).innerHTML = “Show”;
}
}
jQuery(“.emaillink”).click(function (e) {
e.preventDefault();
jQuery(“#contact_us_form”).css(‘display’, ‘flex’);
});
jQuery(‘#contact_us_form’).click((e) => {
if (e.target.id === “contact_us_form”) {
jQuery(“#contact_us_form”).css(‘display’, ‘none’);
}
});
</script>
<!– Scroll footer fixed –>
<script>
document.addEventListener(“DOMContentLoaded”, function () {
// Wait for 1 minute (60000 milliseconds) after the page loads
setTimeout(function () {
// Get the fixed-footer div
var fixedFooter = document.getElementById(“fixed-footer”);
if (fixedFooter) {
// Make the div visible by setting its display to block
fixedFooter.style.display = “block”;
}
}, 5000); // 60000 ms = 1 minute
});
jQuery(function ($) {
$(window).scroll(function () {
var scrollOffset = $(window).scrollTop();
if (scrollOffset > 400) { // change 100 to the desired scroll offset
$(‘.fixed-footer-newsletter’).addClass(‘active’);
} else {
$(‘fixed-footer-newsletter’).removeClass(‘none’);
}
});
$(document).ready(function () {
$(“.up-down-toggle-btn svg”).click(function () {
$(“.fixed-footer-newsletter”).toggleClass(“hide”);
if ($(“.fixed-footer-newsletter”).hasClass(‘hide’)) {
localStorage.setItem(‘hideClass’, ‘true’);
} else {
localStorage.removeItem(‘hideClass’);
}
});
var hideClass = localStorage.getItem(‘hideClass’);
if (hideClass === ‘true’) {
$(‘.fixed-footer-newsletter’).addClass(‘hide’);
}
});
});
</script>
<!– new custom script –>
<script>
jQuery(function ($) {
$(“.hamburger-box”).click(function () {
$(“.hamburger-box”).toggleClass(“is-active”);
});
});
</script>
<!– author slider –>
<!– FO Newsletter –>
<script type=”sortdDeferScript2″>
/* — FO Newsletter add or remove class */
jQuery(function($){
$(“.newsletters-click”).on(“click”, function (e) {
$(this).addClass(‘active’);
});
$(‘#amount_50’).click(function () {
$(‘.amount’).removeAttr(‘checked’);
$(‘#other_pay’).val(0);
$(‘#other_amount_pay’).val(0);
$(this).attr(‘checked’, ‘checked’)
});
$(‘#amount_100’).click(function () {
$(‘.amount’).removeAttr(‘checked’);
$(‘#other_pay’).val(0);
$(‘#other_amount_pay’).val(0);
$(this).attr(‘checked’, ‘checked’)
});
$(‘#amount_500’).click(function () {
$(‘.amount’).removeAttr(‘checked’);
$(‘#other_pay’).val(0);
$(‘#other_amount_pay’).val(0);
$(this).attr(‘checked’, ‘checked’)
});
$(‘#amount_1000’).click(function () {
$(‘.amount’).removeAttr(‘checked’);
$(‘#other_pay’).val(0);
$(‘#other_amount_pay’).val(0);
$(this).attr(‘checked’, ‘checked’)
});
$(‘#other_pay’).change(function () {
$(‘.amount’).removeAttr(‘checked’);
$(this).attr(‘checked’, ‘checked’)
});
$(“#other_amount_pay”).on(“input”, function () {
var inputValue = $(this).val();
if (inputValue !== “”) {
$(‘#amount_50’).removeAttr(‘checked’);
$(‘#amount_100’).removeAttr(‘checked’);
$(‘#amount_500’).removeAttr(‘checked’);
$(‘#amount_1000’).removeAttr(‘checked’);
$(‘#other_pay’).val(inputValue);
$(“#other_pay”).prop(“checked”, true);
}
});
});
/* input type number validation */
const numericInput = document.getElementById(‘other_donation_amount’);
if (numericInput) {
numericInput.addEventListener(‘input’, function (e) {
// Get the current input value
const inputValue = e.target.value;
// Remove any non-numeric characters
const numericValue = inputValue.replace(/[^0-9]/g, ”);
// Update the input value with the numeric value
e.target.value = numericValue;
});
}
</script>
<script type=”sortdDeferScript”>
jQuery(document).ready(function () {
jQuery(“.share-btn”).click(function () {
jQuery(“.m-share-events”).toggleClass(“active”);
});
});
jQuery(function($){
// For Login Form
if ($(‘form[name=”login”]’).length) {
const loginForm = $(‘form[name=”login”]’);
// Dynamically remove labels and add placeholders for Login Form
$(‘form[name=”login”] label[for=”user_login”]’).remove();
$(‘form[name=”login”] #user_login’).attr(‘placeholder’, ‘Email or Username’);
$(‘form[name=”login”] label[for=”user_pass”]’).remove();
$(‘form[name=”login”] #user_pass’).attr(‘placeholder’, ‘Password’);
// Form validation and error handling for Login Form
$(‘form[name=”login”]’).on(‘submit’, function (e) {
e.preventDefault(); // Prevent form submission for validation
let isValid = true;
$(this).find(‘input[type=”text”], input[type=”password”]’).each(function () {
const input = $(this);
const value = input.val().trim();
// Remove previous error message and red border
input.closest(‘.tml-field-wrap’).prev(‘.error-message’).remove();
input.removeClass(‘input-error’);
// Determine field name for the error message
const fieldName = input.attr(‘id’) === ‘user_login’ ? ‘Email or Username’ :
input.attr(‘id’) === ‘user_pass’ ? ‘Password’ :
‘This field’;
// Add error if the field is empty
if (!value) {
isValid = false;
input.closest(‘.tml-field-wrap’).before(`<div class=”error-message”>${fieldName} is required.</div>`);
input.addClass(‘input-error’);
}
});
// Submit the form if valid
return isValid;
});
// Remove error message and red border on input for Login Form
$(document).on(‘input’, ‘.input-error’, function () {
$(this).removeClass(‘input-error’);
$(this).closest(‘.tml-field-wrap’).prev(‘.error-message’).remove();
});
}
// For Lost Password Form
if ($(‘form[name=”lostpassword”]’).length) {
// Dynamically remove labels and add placeholders for Lost Password Form
$(‘form[name=”lostpassword”] label[for=”user_login”]’).remove();
$(‘form[name=”lostpassword”] #user_login’).attr(‘placeholder’, ‘Email or Username’);
// Change the submit button text for Lost Password form
$(‘form[name=”lostpassword”] button[type=”submit”]’).text(‘Reset Password’);
// Form validation and error handling for Lost Password Form
$(‘form[name=”lostpassword”]’).on(‘submit’, function (e) {
e.preventDefault(); // Prevent form submission for validation
let isValid = true;
$(this).find(‘input[type=”text”]’).each(function () {
const input = $(this);
const value = input.val().trim();
// Remove previous error message and red border
input.closest(‘.tml-field-wrap’).prev(‘.error-message’).remove();
input.removeClass(‘input-error’);
// Determine field name for the error message
const fieldName = input.attr(‘id’) === ‘user_login’ ? ‘Email or Username’ : ‘This field’;
// Add error if the field is empty
if (!value) {
isValid = false;
input.closest(‘.tml-field-wrap’).before(`<div class=”error-message”>${fieldName} is required.</div>`);
input.addClass(‘input-error’);
}
});
// Submit the form if valid
return isValid;
});
// Remove error message and red border on input for Lost Password Form
$(document).on(‘input’, ‘.input-error’, function () {
$(this).removeClass(‘input-error’);
$(this).closest(‘.tml-field-wrap’).prev(‘.error-message’).remove();
});
}
$(document).ajaxSuccess(function (event, xhr, settings) {
// Check if the request URL is the one from the lostpassword form (or another condition based on your URL)
if (settings.url.indexOf(‘forgot-the-password’) !== -1) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
// const successMessage = response.data.notice;
const successMessage = “we have sent a link to your email to reset your password.”;
// Toggle visibility of the before and after sections
$(‘#forgot-password-form .forget-password-before’).hide();
$(‘#forgot-password-form .forget-password-after’).fadeIn();
} else {
// const errorMessage = response.data.errors;
// Clear previous error messages
$(‘form[name=”lostpassword”] .error-message’).remove();
$(‘form[name=”lostpassword”] .input-error’).removeClass(‘input-error’);
const errorMessage = ‘Email address or username is not registered’;
// Find the input fields for user_login and user_pass
const userLoginInput = $(‘form[name=”lostpassword”] #user_login’);
userLoginInput.closest(‘.tml-field-wrap’).before(`<div class=”error-message”>${errorMessage}</div>`);
userLoginInput.addClass(‘input-error’);
}
}
if (settings.url.indexOf(‘login’) !== -1) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
// $(‘form[name=”login”]’).after(‘<div class=”success-message”>Login successful! Redirecting…</div>’);
} else {
// Clear previous error messages
$(‘form[name=”login”] .error-message’).remove();
$(‘form[name=”login”] .input-error’).removeClass(‘input-error’);
const errorMessage = response.data.errors; // Assuming this is an HTML string
// Extract plain text error messages from the response
const extractedErrorMessage = $(errorMessage).text().trim();
// Determine where to display the error based on keywords in the message
const userLoginInput = $(‘form[name=”login”] #user_login’);
const userPassInput = $(‘form[name=”login”] #user_pass’);
$(‘form[name=”login”]’).prepend(`<div class=”error-message”>Email address or password is incorrect.</div>`);
userLoginInput.addClass(‘input-error’);
userPassInput.addClass(‘input-error’);
}
}
});
// Switch Between Forms (Login and Forgot Password)
$(‘.switch-form’).on(‘click’, function (e) {
e.preventDefault();
const target = $(this).data(‘target’);
$(‘.popup-form’).hide(); // Hide all forms
$(‘.error-message’).remove(); // Remove all error messages
$(‘.input-error’).removeClass(‘input-error’); // Remove input error classes
$(‘.popup-form input’).val(”); // Clear all input values (optional)
// Show the target form
if (target === ‘forgot-password-form’) {
// Always show forget-password-before when switching to forgot-password-form
$(‘#forgot-password-form .forget-password-after’).hide();
$(‘#forgot-password-form .forget-password-before’).show();
}
$(‘#’ + target).fadeIn(); // Show the target form
});
});
</script>
<!– <script>
document.addEventListener(“DOMContentLoaded”, function () {
// Select the “I Accept” button by its ID or class (adjust selector based on your HTML)
const acceptButton = document.querySelector(“#cookie_action_close_header”); // Replace with the actual button’s class or ID
if (acceptButton) {
acceptButton.addEventListener(“click”, function () {
// Set the cookie with site-wide path and a long expiration date
document.cookie = “viewed_cookie_policy=yes; path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT;”;
console.log(“Cookie consent accepted and cookie set.”);
});
}
});
</script> –>
<script id=”sortd_nodefer”>
let isTriggered = false;
const interactionEvents = [“keydown”, “mousemove”, “touchmove”, “touchstart”, “touchend”, “wheel”];
function loadDeferredScripts(deferType) {
const scripts = document.querySelectorAll(`script[type=”${deferType}”]`);
scripts.forEach((script) => {
const newScript = document.createElement(“script”);
if (script.defer) {
newScript.defer = true;
}
if (script.src) {
newScript.src = script.src;
if (script.src.includes(‘/dyn/’)) {
newScript.async = true;
}
} else {
if (script.getAttribute(“sortd_type”)) {
newScript.type = script.getAttribute(“sortd_type”);
} else {
newScript.type = “text/javascript”;
}
newScript.text = script.innerHTML;
}
script.parentNode.replaceChild(newScript, script);
});
}
interactionEvents.forEach((event) => {
window.addEventListener(event, function () {
if (!isTriggered) {
isTriggered = true;
loadDeferredScripts(“sortdDeferScript”);
setTimeout(function () {
loadDeferredScripts(“sortdDeferScript2″);
}, 500);
}
});
});
</script>
<script>
class WaveformAudioPlayer {
constructor(playerId) {
this.playerId = playerId;
this.audio = document.getElementById(`audioPlayer_${playerId}`);
this.playBtn = document.getElementById(`playBtn_${playerId}`);
this.playTriangle = document.getElementById(`playTriangle_${playerId}`);
this.pauseBars = document.getElementById(`pauseBars_${playerId}`);
this.currentTime = document.getElementById(`currentTime_${playerId}`);
this.totalTime = document.getElementById(`totalTime_${playerId}`);
this.waveformContainer = document.getElementById(`waveformContainer_${playerId}`);
this.waveformProgress = document.getElementById(`waveformProgress_${playerId}`);
this.waveformBars = document.getElementById(`waveformBars_${playerId}`);
this.menuBtn = document.getElementById(`menuBtn_${playerId}`);
this.isPlaying = false;
this.waveformData = [];
this.totalBars = 200; // Number of waveform bars
this.initWaveform();
this.initEventListeners();
this.updateTotalTime();
}
initWaveform() {
// Generate random waveform data (in real app, you’d analyze the audio)
this.waveformData = Array.from({ length: this.totalBars }, () => {
return Math.random() * 40 + 5; // Random height between 5-45px
});
// Create waveform bars
this.waveformBars.innerHTML = ”;
this.waveformData.forEach((height, index) => {
const bar = document.createElement(‘div’);
bar.className = ‘waveform-bar’;
bar.style.height = `${height}px`;
bar.dataset.index = index;
this.waveformBars.appendChild(bar);
});
}
initEventListeners() {
// Play/Pause button
this.playBtn.addEventListener(‘click’, () => this.togglePlayPause());
// Audio events
this.audio.addEventListener(‘loadedmetadata’, () => this.updateTotalTime());
this.audio.addEventListener(‘timeupdate’, () => this.updateProgress());
this.audio.addEventListener(‘ended’, () => this.audioEnded());
// Waveform container click for seeking
this.waveformContainer.addEventListener(‘click’, (e) => this.seek(e));
// Menu button
this.menuBtn.addEventListener(‘click’, () => this.showMenu());
}
togglePlayPause() {
// Pause all other players first
window.pauseAllPlayersExcept(this.playerId);
if (this.isPlaying) {
this.pause();
} else {
this.play();
}
}
play() {
this.audio.play().then(() => {
this.isPlaying = true;
this.updatePlayButton();
}).catch(error => {
console.error(‘Error playing audio:’, error);
});
}
pause() {
this.audio.pause();
this.isPlaying = false;
this.updatePlayButton();
}
updatePlayButton() {
if (this.isPlaying) {
this.playTriangle.style.display = ‘none’;
this.pauseBars.style.display = ‘block’;
} else {
this.playTriangle.style.display = ‘block’;
this.pauseBars.style.display = ‘none’;
}
}
updateProgress() {
if (this.audio.duration) {
const progress = (this.audio.currentTime / this.audio.duration) * 100;
this.waveformProgress.style.width = `${progress}%`;
this.currentTime.textContent = this.formatTime(this.audio.currentTime);
// Update active bars
const activeBars = Math.floor((progress / 100) * this.totalBars);
const bars = this.waveformBars.querySelectorAll(‘.waveform-bar’);
bars.forEach((bar, index) => {
if (index <= activeBars) {
bar.classList.add(‘active’);
} else {
bar.classList.remove(‘active’);
}
});
}
}
updateTotalTime() {
if (this.audio.duration) {
this.totalTime.textContent = this.formatTime(this.audio.duration);
}
}
seek(e) {
const rect = this.waveformContainer.getBoundingClientRect();
const percent = (e.clientX – rect.left) / rect.width;
const newTime = percent * this.audio.duration;
if (newTime >= 0 && newTime <= this.audio.duration) {
this.audio.currentTime = newTime;
}
}
formatTime(seconds) {
if (!seconds || !isFinite(seconds)) return ’00:00′;
const minutes = Math.floor(seconds / 60);
const remainingSeconds = Math.floor(seconds % 60);
return `${minutes.toString().padStart(2, ‘0’)}:${remainingSeconds.toString().padStart(2, ‘0’)}`;
}
audioEnded() {
this.isPlaying = false;
this.updatePlayButton();
this.waveformProgress.style.width = ‘0%’;
this.currentTime.textContent = ’00:00′;
// Reset all bars
const bars = this.waveformBars.querySelectorAll(‘.waveform-bar’);
bars.forEach(bar => bar.classList.remove(‘active’));
}
showMenu() {
console.log(`Menu clicked for player ${this.playerId} – implement additional features here`);
// Add your menu functionality here
}
// Method to change audio source
changeAudio(src) {
this.pause();
this.audio.src = src;
this.audio.load();
this.waveformProgress.style.width = ‘0%’;
this.currentTime.textContent = ’00:00′;
// Reset bars
const bars = this.waveformBars.querySelectorAll(‘.waveform-bar’);
bars.forEach(bar => bar.classList.remove(‘active’));
}
}
// Global variables to manage multiple players
window.waveformPlayers = {};
// Function to pause all players except the current one
window.pauseAllPlayersExcept = function(currentPlayerId) {
Object.keys(window.waveformPlayers).forEach(playerId => {
if (playerId !== currentPlayerId) {
window.waveformPlayers[playerId].pause();
}
});
};
// Initialize all players when DOM is loaded
document.addEventListener(‘DOMContentLoaded’, () => {
// Find all waveform audio players
const playerElements = document.querySelectorAll(‘.waveform-audio-player’);
playerElements.forEach(playerElement => {
const playerId = playerElement.dataset.playerId;
if (playerId) {
// Extract post ID from player ID (format: player_123)
const postId = playerId.replace(‘player_’, ”);
window.waveformPlayers[postId] = new WaveformAudioPlayer(postId);
}
});
// Global keyboard shortcuts
document.addEventListener(‘keydown’, (e) => {
const isEditable = e.target.isContentEditable;
if (e.code === ‘Space’ && e.target.tagName !== ‘INPUT’ && e.target.tagName !== ‘TEXTAREA’ && !isEditable) {
e.preventDefault();
// This will be handled by individual players
}
});
});
</script>
<script>
jQuery(function($){
// Prevent numbers while typing & enforce maxlength for Name
$(document).on(‘input’, ‘#contactFormCustom input[name=”your-name”]’, function(){
// allow letters, spaces, hyphen, apostrophe, limit to 50 chars
this.value = this.value.replace(/[^A-Za-zs’-]/g, ”).slice(0,50);
});
// Email field: limit to 100 characters and block spaces
$(document).on(‘input’, ‘#contactFormCustom input[name=”your-email”]’, function() {
this.value = this.value.replace(/s/g, ”).slice(0, 100);
});
});
</script>
<style>
/* .postid-157691 .cate-name.si-post{font-weight: 700;color: #fe6b0c;font-family: var(–second-font);} */
.logo-devil-description p {
font-size: 20px;
margin-top: 0;
}
</style>
</body>
</html>
<style>
/* Hide the view count by default */
.hidden {
display: none;
}
</style>
<p class=”hidden”>Total Views: </p>
<div class=”bottom-social-menu”>
<ul>
<!– <li class=”facebook”><a href=”https://m.facebook.com/sharer.php?u=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”> –>
<li class=”facebook”><a href=”https://www.facebook.com/dialog/share?app_id=1830882597555871&href=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/” target=”_blank”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”facebook-f” class=”svg-inline–fa fa-facebook-f fa-w-10″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 320 512″><path fill=”currentColor” d=”M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z”></path></svg>
</a></li>
<li class=”twitter”>
<a href=”https://twitter.com/intent/tweet?original_referer=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&ref_src=twsrc%5Etfw&text=The Fall of Democracy is a Markov Process &tw_p=tweetbutton&url=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&via=myfairobserver”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”twitter” class=”svg-inline–fa fa-twitter fa-w-16″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 512 512″><path fill=”currentColor” d=”M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z”></path></svg>
</a>
</li>
<li class=”linkedin”><a href=”https://www.linkedin.com/shareArticle?mini=true&url=https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/&title=The Fall of Democracy is a Markov Process&summery=The Fall of Democracy is a Markov Process&source=LinkedIn”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”linkedin-in” class=”svg-inline–fa fa-linkedin-in fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″><path fill=”currentColor” d=”M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z”></path></svg>
</a></li>
<li class=”whatsup”><a href=”whatsapp://send?text=The Fall of Democracy is a Markov Process – https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fab” data-icon=”whatsapp” class=”svg-inline–fa fa-whatsapp fa-w-14″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 448 512″><path fill=”currentColor” d=”M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z”></path></svg>
</a></li>
<li class=”email”><a href=”mailto:?subject=The Fall of Democracy is a Markov Process&body=The Fall of Democracy is a Markov Process – https://www.fairobserver.com/history/the-fall-of-democracy-is-a-markov-process/”>
<svg aria-hidden=”true” focusable=”false” data-prefix=”fas” data-icon=”envelope” class=”svg-inline–fa fa-envelope fa-w-16″ role=”img” xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 512 512″><path fill=”currentColor” d=”M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z”></path></svg>
</a></li>
</ul>
</div>
<!– <style>
#cliSettingsPopup {display:none}
</style>
<style>
#cookie-law-info-bar,.wt-cli-cookie-bar{box-sizing:border-box;font-size:10pt;margin:0 auto;padding:10px 10px;position:absolute;text-align:center;width:100%;z-index:99999;box-shadow:rgb(0 0 0 / .5) 0 5px 10px;display:none;left:0}#cookie-law-info-again{font-size:10pt;margin:0;padding:5px 10px;text-align:center;z-index:9999;cursor:pointer;box-shadow:#161616 2px 2px 5px 2px}#cookie-law-info-bar span{vertical-align:middle}.cli-plugin-button,.cli-plugin-button:visited{display:inline-block;padding:8px 16px 8px;color:#fff;text-decoration:none;-moz-border-radius:4px;-webkit-border-radius:4px;position:relative;cursor:pointer;text-decoration:none}.cli-accept-button{font-family:Courier;font-variant:small-caps}.cli-plugin-button:hover{background-color:#111;color:#fff;text-decoration:none}.small.cli-plugin-button,.small.cli-plugin-button:visited{font-size:11px}.cli-plugin-button,.cli-plugin-button:visited,.medium.cli-plugin-button,.medium.cli-plugin-button:visited{font-size:13px;font-weight:500;line-height:1}.large.cli-plugin-button,.large.cli-plugin-button:visited{font-size:14px;padding:8px 14px 9px}.super.cli-plugin-button,.super.cli-plugin-button:visited{font-size:34px;padding:8px 14px 9px}.pink.cli-plugin-button,.magenta.cli-plugin-button:visited{background-color:#e22092}.pink.cli-plugin-button:hover{background-color:#c81e82}.green.cli-plugin-button,.green.cli-plugin-button:visited{background-color:#91bd09}.green.cli-plugin-button:hover{background-color:#749a02}.red.cli-plugin-button,.red.cli-plugin-button:visited{background-color:#e62727}.red.cli-plugin-button:hover{background-color:#cf2525}.orange.cli-plugin-button,.orange.cli-plugin-button:visited{background-color:#ff5c00}.orange.cli-plugin-button:hover{background-color:#d45500}.blue.cli-plugin-button,.blue.cli-plugin-button:visited{background-color:#2981e4}.blue.cli-plugin-button:hover{background-color:#2575cf}.yellow.cli-plugin-button,.yellow.cli-plugin-button:visited{background-color:#ffb515}.yellow.cli-plugin-button:hover{background-color:#fc9200}.cli-bar-popup{-moz-background-clip:padding;-webkit-background-clip:padding;background-clip:padding-box;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;padding:20px}.cli-clearboth{clear:both}@media only screen and (max-width:768px){.cli-settings-mobile:hover{box-shadow:none!important}.cli-settings-desktop{display:none}.cli-col-8{max-width:100%!important;width:100%!important;flex:100%!important;-ms-flex:100%!important}.cli-accordion-plusminus{float:right;font-size:22px;line-height:22px}.cli-plugin-button{margin:10px}}@media only screen and (max-width:567px){.cli-switch .cli-slider:after{display:none}.cli-tab-header a.cli-nav-link{font-size:12px}.cli-modal .cli-modal-close{right:-10px;top:-15px}}.wt-cli-iframe-placeholder{background-image:url(../images/cli_placeholder.svg);background-size:80px;max-width:100%;max-height:100%;background-position:center;background-repeat:no-repeat;background-color:#b2b0b059;position:relative;display:flex;align-items:flex-end;justify-content:center}.wt-cli-iframe-placeholder .wt-cli-inner-text{width:100%;text-align:center;padding:1rem 1rem;border-radius:400px}.wt-cli-cookie-bar-container{display:none}.wt-cli-necessary-checkbox{display:none!important}a.wt-cli-ccpa-opt-out{text-decoration:underline!important;}.gdpr-container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto;box-sizing:border-box}.gdpr-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.gdpr-col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.gdpr-col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.gdpr-align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.gdpr-d-flex{display:-ms-flexbox!important;display:flex!important}.gdpr-px-0{padding-left:0;padding-right:0}.modal-backdrop.show{opacity:.8}.modal-open{overflow:hidden}.modal-open .gdpr-modal{overflow-x:hidden;overflow-y:auto}.gdpr-modal.fade .gdpr-modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.gdpr-modal.show .gdpr-modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1039;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.gdpr-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:none}.gdpr-modal a{text-decoration:none}.gdpr-modal .gdpr-modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none;font-family:-apple-system,BlinkMacSystemFont,”Segoe UI”,Roboto,”Helvetica Neue”,Arial,sans-serif,”Apple Color Emoji”,”Segoe UI Emoji”,”Segoe UI Symbol”;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% – (.5rem * 2))}@media (min-width:576px){.gdpr-modal .gdpr-modal-dialog{max-width:500px;margin:1.75rem auto;min-height:calc(100% – (1.75rem * 2))}}@media (min-width:992px){.gdpr-modal .gdpr-modal-dialog{max-width:900px}}.gdpr-modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgb(0 0 0 / .2);border-radius:.3rem;box-sizing:border-box;outline:0}.gdpr-modal .row{margin:0 -15px}.gdpr-modal .modal-body{padding:0;position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.gdpr-modal .close{position:absolute;right:10px;top:10px;z-index:1;padding:0;background-color:#fff0;border:0;-webkit-appearance:none;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff}.gdpr-modal .close:focus{outline:0}.gdpr-switch{display:inline-block;position:relative;min-height:1px;padding-left:70px;font-size:14px}.gdpr-switch input[type=”checkbox”]{display:none}.gdpr-switch .gdpr-slider{background-color:#e3e1e8;height:24px;width:50px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.gdpr-switch .gdpr-slider:before{background-color:#fff;bottom:2px;content:””;height:20px;left:2px;position:absolute;transition:.4s;width:20px}.gdpr-switch input:checked+.gdpr-slider{background-color:#63b35f}.gdpr-switch input:checked+.gdpr-slider:before{transform:translateX(26px)}.gdpr-switch .gdpr-slider{border-radius:34px}.gdpr-switch .gdpr-slider:before{border-radius:50%}.gdpr-tab-content>.gdpr-tab-pane{display:none}.gdpr-tab-content>.active{display:block}.gdpr-fade{transition:opacity .15s linear}.gdpr-nav-pills{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none;-ms-flex-direction:column!important;flex-direction:column!important;align-items:stretch!important;-ms-align-items:stretch!important}.nav.gdpr-nav-pills,.gdpr-tab-content{width:100%;padding:30px;box-sizing:border-box}.nav.gdpr-nav-pills{background:#f3f3f3}.nav.gdpr-nav-pills .gdpr-nav-link{border:1px solid #0070ad;margin-bottom:10px;color:#0070ad;font-size:14px;display:block;padding:.5rem 1rem;border-radius:.25rem}.nav.gdpr-nav-pills .gdpr-nav-link.active,.nav.gdpr-nav-pills .show>.gdpr-nav-link{background-color:#0070ad;border:1px solid #0070ad}.nav.gdpr-nav-pills .gdpr-nav-link.active{color:#fff}.gdpr-tab-content .gdpr-button-wrapper{padding-top:30px;margin-top:30px;border-top:1px solid #d6d6d6}.gdpr-tab-content .gdpr-button-wrapper .btn-gdpr{background-color:#0070ad;border-color:#0070ad;color:#fff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid #fff0;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;box-sizing:border-box}.gdpr-tab-content p{color:#343438;font-size:14px;margin-top:0}.gdpr-tab-content h4{font-size:20px;margin-bottom:.5rem;margin-top:0;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.cli-container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.cli-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.cli-col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.cli-col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%;flex-direction:column}.cli-align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.cli-d-flex{display:-ms-flexbox!important;display:flex!important}.cli-px-0{padding-left:0;padding-right:0}.cli-btn{cursor:pointer;font-size:14px;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid #fff0;padding:.5rem 1.25rem;line-height:1;border-radius:.25rem;transition:all .15s ease-in-out}.cli-btn:hover{opacity:.8}.cli-btn:focus{outline:0}.cli-read-more-link{cursor:pointer;font-size:15px;font-weight:500;text-decoration:underline}.cli-modal-backdrop.cli-show{opacity:.8}.cli-modal-open{overflow:hidden}.cli-barmodal-open{overflow:hidden}.cli-modal-open .cli-modal{overflow-x:hidden;overflow-y:auto}.cli-modal.cli-fade .cli-modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.cli-modal.cli-show .cli-modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.cli-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;-webkit-transform:scale(0);transform:scale(0);transition:opacity ease-in-out 0.5s}.cli-modal-backdrop.cli-fade{opacity:0}.cli-modal-backdrop.cli-show{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}.cli-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;-webkit-transform:scale(0);transform:scale(0);overflow:hidden;outline:0;visibility:hidden}.cli-modal.cli-show{visibility:visible}.cli-modal a{text-decoration:none}.cli-modal .cli-modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% – (.5rem * 2))}@media (min-width:576px){.cli-modal .cli-modal-dialog{max-width:500px;margin:1.75rem auto;min-height:calc(100% – (1.75rem * 2))}}.cli-modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-clip:padding-box;border-radius:.2rem;box-sizing:border-box;outline:0}.cli-modal .row{margin:0 -15px}.cli-modal-footer{position:relative}.cli-modal .modal-body{padding:0;position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.cli-modal .cli-modal-close:focus{outline:0}.cli-switch{display:inline-block;position:relative;min-height:1px;padding-left:38px;font-size:14px;width:auto}.cli-switch input[type=”checkbox”]{display:block;margin:0;width:0;position:absolute!important;left:0!important;opacity:0!important}.cli-switch .cli-slider{background-color:#e3e1e8;height:20px;width:38px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.cli-switch .cli-slider:before{bottom:2px;content:””;height:15px;left:3px;position:absolute;transition:.4s;width:15px}.cli-switch input:checked+.cli-slider{background-color:#28a745}.cli-switch input:checked+.cli-slider:before{transform:translateX(18px)}.cli-switch .cli-slider{border-radius:34px;font-size:0}.cli-switch .cli-slider:before{border-radius:50%}.cli-nav-pills{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none;-ms-flex-direction:column;flex-direction:column}.cli-nav-pills,.cli-tab-content{width:100%;padding:5px 30px 5px 5px;box-sizing:border-box}@media (max-width:767px){.cli-nav-pills,.cli-tab-content{padding:30px 10px}}.cli-nav-pills{background:#fff}.cli-nav-pills .cli-nav-link{border:1px solid #ccc;margin-bottom:10px;color:#2a2a2a;font-size:14px;display:block;padding:.5rem 1rem;border-radius:.25rem;cursor:pointer}.cli-nav-pills .cli-nav-link.cli-active,.cli-nav-pills .cli-show>.cli-nav-link{background-color:#f6f6f9;border:1px solid #ccc}.cli-nav-pills .cli-nav-link.cli-active{color:#2a2a2a}.cli-tab-content .cli-button-wrapper{padding-top:30px;margin-top:30px;border-top:1px solid #d6d6d6}.cli-tab-content p{color:#343438;font-size:14px;margin-top:0}.cli-tab-content h4{font-size:20px;margin-bottom:1.5rem;margin-top:0;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}#cookie-law-info-bar .cli-nav-pills,#cookie-law-info-bar .cli-tab-content,#cookie-law-info-bar .cli-nav-pills .cli-show>.cli-nav-link,#cookie-law-info-bar a.cli-nav-link.cli-active{background:#fff0}#cookie-law-info-bar .cli-nav-pills .cli-nav-link.cli-active,#cookie-law-info-bar .cli-nav-link,#cookie-law-info-bar .cli-tab-container p,#cookie-law-info-bar span.cli-necessary-caption,#cookie-law-info-bar .cli-switch .cli-slider:after{color:inherit}#cookie-law-info-bar .cli-tab-header a:before{border-right:1px solid currentColor;border-bottom:1px solid currentColor}#cookie-law-info-bar .cli-row{margin-top:20px}#cookie-law-info-bar .cli-col-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}#cookie-law-info-bar .cli-col-8{flex-basis:0%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.cli-wrapper{max-width:100%;float:none;margin:0 auto}#cookie-law-info-bar .cli-tab-content h4{margin-bottom:.5rem}#cookie-law-info-bar .cli-nav-pills .cli-nav-link{padding:.2rem .5rem}#cookie-law-info-bar .cli-tab-container{display:none;text-align:left}.cli-tab-footer .cli-btn{padding:10px 15px;width:auto;text-decoration:none}.cli-tab-footer{width:100%;text-align:right;padding:20px 0}.cli-col-12{width:100%}.cli-tab-header{display:flex;justify-content:space-between}.cli-tab-header a:before{width:10px;height:2px;left:0;top:calc(50% – 1px)}.cli-tab-header a:after{width:2px;height:10px;left:4px;top:calc(50% – 5px);-webkit-transform:none;transform:none}.cli-tab-header a:before{width:7px;height:7px;border-right:1px solid #4a6e78;border-bottom:1px solid #4a6e78;content:” “;transform:rotate(-45deg);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;margin-right:10px}.cli-tab-header a.cli-nav-link{position:relative;display:flex;align-items:center;font-size:14px;color:#000;text-decoration:none}.cli-tab-header.cli-tab-active .cli-nav-link:before{transform:rotate(45deg);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.cli-tab-header{border-radius:5px;padding:12px 15px;cursor:pointer;transition:background-color 0.2s ease-out 0.3s,color 0.2s ease-out 0s;background-color:#f2f2f2}.cli-modal .cli-modal-close{position:absolute;right:0;top:0;z-index:1;-webkit-appearance:none;width:40px;height:40px;padding:0;border-radius:50%;padding:10px;background:#fff0;border:none}.cli-tab-container h4{font-family:inherit;font-size:16px;margin-bottom:15px;margin:10px 0}.cli-tab-container p,.cli-privacy-content-text{font-size:14px;line-height:1.4;margin-top:0;padding:0;color:#000}.cli-tab-content{display:none}.cli-tab-section .cli-tab-content{padding:10px 20px 5px 20px}.cli-tab-section{margin-top:5px}@media (min-width:992px){.cli-modal .cli-modal-dialog{max-width:645px}}.cli-switch .cli-slider:after{content:attr(data-cli-disable);position:absolute;right:50px;font-size:12px;text-align:right;min-width:120px}.cli-switch input:checked+.cli-slider:after{content:attr(data-cli-enable)}a.cli-privacy-readmore{font-size:12px;margin-top:12px;display:inline-block;cursor:pointer;text-decoration:underline}.cli-privacy-overview{padding-bottom:12px}a.cli-privacy-readmore:before{content:attr(data-readmore-text)}.cli-collapsed a.cli-privacy-readmore:before{content:attr(data-readless-text)}.cli-collapsed .cli-privacy-content{transition:max-height 0.25s ease-in}.cli-privacy-content p{margin-bottom:0}.cli-modal-close svg{fill:#000}span.cli-necessary-caption{color:#000;font-size:12px}.cli-tab-section.cli-privacy-tab{display:none}#cookie-law-info-bar .cli-tab-section.cli-privacy-tab{display:block}#cookie-law-info-bar .cli-privacy-overview{display:none}.cli-tab-container .cli-row{max-height:500px;overflow-y:auto}.cli-modal.cli-blowup.cli-out{z-index:-1}.cli-modal.cli-blowup{z-index:999999;-webkit-transform:scale(1);transform:scale(1)}.cli-modal.cli-blowup .cli-modal-dialog{animation:blowUpModal 0.5s cubic-bezier(.165,.84,.44,1) forwards}.cli-modal.cli-blowup.cli-out .cli-modal-dialog{animation:blowUpModalTwo 0.5s cubic-bezier(.165,.84,.44,1) forwards}@keyframes blowUpContent{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}99.9%{-webkit-transform:scale(2);transform:scale(2);opacity:0}100%{-webkit-transform:scale(0);transform:scale(0)}}@keyframes blowUpContentTwo{0%{-webkit-transform:scale(2);transform:scale(2);opacity:0}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes blowUpModal{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes blowUpModalTwo{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}100%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.cli-bar-container{float:none;margin:0 auto;justify-content:space-between;display:flex;align-items:center;flex-wrap:wrap}.cli-style-v2 a{cursor:pointer}.cli-style-v2 .cli-plugin-main-link{font-weight:inherit}.cli-style-v2{font-size:11pt;font-weight:400}#cookie-law-info-bar[data-cli-type=”widget”] .cli-bar-container,#cookie-law-info-bar[data-cli-type=”popup”] .cli-bar-container{display:block}.cli-bar-message{width:70%;text-align:left}#cookie-law-info-bar[data-cli-type=”widget”] .cli-bar-message,#cookie-law-info-bar[data-cli-type=”popup”] .cli-bar-message{width:100%}#cookie-law-info-bar[data-cli-style=”cli-style-v2″] .cli_messagebar_head{text-align:left;margin-left:5%;margin-bottom:10px}@media (max-width:985px){.cli-bar-message{width:100%}.cli-bar-container{justify-content:center}}#cookie-law-info-bar[data-cli-style=”cli-style-v2″] .wt-cli-ccpa-checkbox{display:block}.wt-cli-form-group input:disabled{opacity:.5}.wt-cli-custom-checkbox input[type=”checkbox”]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block!important;line-height:0;height:16px;margin:-4px 4px 0 0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgb(0 0 0 / .1);transition:.05s border-color ease-in-out}.wt-cli-custom-checkbox input[type=checkbox]:checked:before{content:”;display:block;border:solid #61a229;width:5px;height:10px;border-width:0 2px 2px 0;transform:rotate(45deg);margin:1px 0 0 5px;box-sizing:border-box}.wt-cli-form-group{margin-right:15px}.cli-style-v3 .cli-bar-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.cli-style-v3 .cli-bar-btn_container,.cli-style-v3 .wt-cli-category-widget{margin-top:10px}.cli-style-v3{text-align:left}#cookie-law-info-bar a,.wt-cli-category-widget .wt-cli-form-group label{cursor:pointer}.wt-cli-category-widget .wt-cli-form-group label{font-size:inherit}#cookie-law-info-bar[data-template-id=”cli-style-v3″]{padding:10px 90px}#cookie-law-info-bar[data-template-id=”cli-style-v3″][data-cli-type=”widget”]{padding:10px 20px}#cookie-law-info-bar[data-template-id=”cli-style-v3″][data-cli-type=”popup”]{padding:10px 20px}#cookie-law-info-bar[data-template-id=”cli-style-v3″] .wt-cli-category-widget{display:flex;flex-wrap:wrap}#cookie-law-info-bar[data-template-id=”cli-style-v3″]{text-align:left;font-size:11pt;border:1px solid #ffffffe6}#cookie-law-info-bar[data-template-id=”cli-style-v3″] h5{margin:10px 0}.wt-cli-category-widget-active .cli-switch,.wt-cli-category-widget-active .wt-cli-necessary-checkbox,.wt-cli-category-widget-active .cli-necessary-caption{display:none!important}@media (max-width:985px){#cookie-law-info-bar[data-template-id=”cli-style-v3″]{padding:10px 20px}}.wt-cli-sr-only{display:none}.wt-cli-cookie-bar-container.wt-cli-hide-bar{display:none!important}.wt-cli-privacy-accept-btn{margin-left:10px}.cli_settings_button:focus,#cookie-law-info-again:focus,#wt-cli-cookie-banner-title:focus,.cli-plugin-main-link,.cli_action_button,.cli-privacy-readmore,.cli-tab-header a,.cli-switch .cli-slider,.cli-tab-content .cli-tab-pane:focus{outline:0}.cli-plugin-button:focus{outline:0;opacity:.7}.wt-cli-ckyes-brand-logo{display:flex;align-items:center;font-size:9px;color:#111;font-weight:400}.wt-cli-ckyes-brand-logo img{width:65px;margin-left:2px}.wt-cli-privacy-overview-actions{padding-bottom:0}<style><style id=’cookie-law-info-gdpr-inline-css’type=’text/css’>.cli-modal-content,.cli-tab-content{background-color:#fff}.cli-privacy-content-text,.cli-modal .cli-modal-dialog,.cli-tab-container p,a.cli-privacy-readmore{color:#000}.cli-tab-header{background-color:#f2f2f2}.cli-tab-header,.cli-tab-header a.cli-nav-link,span.cli-necessary-caption,.cli-switch .cli-slider:after{color:#000}.cli-switch .cli-slider:before{background-color:#fff}.cli-switch input:checked+.cli-slider:before{background-color:#fff}.cli-switch .cli-slider{background-color:#e3e1e8}.cli-switch input:checked+.cli-slider{background-color:#28a745}.cli-modal-close svg{fill:#000}.cli-tab-footer .wt-cli-privacy-accept-all-btn{background-color:#00acad;color:#fff}.cli-tab-footer .wt-cli-privacy-accept-btn{background-color:#00acad;color:#fff}.cli-tab-header a:before{border-right:1px solid #000;border-bottom:1px solid #000}
</style>
<script>
window.addEventListener(“load”, function() {
setTimeout(function() {
var s = document.createElement(“script”);
s.src = “https://www.fairobserver.com/wp-content/themes/fo2023/js/gdpr-cookie.js”;
document.body.appendChild(s);
}, 5000); // 15000 ms = 15 seconds
});
</script> –>
<!– Page cached by LiteSpeed Cache 7.7 on 2025-12-30 23:08:15 –>
Source: World Politics - fairobserver.com

