{"id":19803,"date":"2020-08-13T07:03:27","date_gmt":"2020-08-13T07:03:27","guid":{"rendered":"https:\/\/commodity.com\/?page_id=19803"},"modified":"2026-04-25T01:25:41","modified_gmt":"2026-04-25T01:25:41","slug":"latvia","status":"publish","type":"page","link":"https:\/\/commodity.com\/data\/latvia\/","title":{"rendered":"Latvia Economy Profile: GDP and Top 5 Imports\/Exports"},"content":{"rendered":"\n<p>In this economic guide to Latvia, we&#8217;ll give you an overview of the Latvian economy, including its primary imports and exports of goods and services.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Latvia Economy Overview<\/h2>\n\n\n\n<p>A GDP of $34.4 billion makes Latvia the world&#8217;s 99th largest economy. Based on the diversity and complexity of its exports, the country ranks 36th on the Economic Complexity Index.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-20727\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2020\/08\/latvia-map.png\" alt=\"Latvia map\" width=\"400\" height=\"230\" \/><figcaption><a rel=\"noreferrer noopener\" href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Latvia_regions_map.png\" target=\"_blank\">Latvia Map<\/a> by <a rel=\"noreferrer noopener\" href=\"https:\/\/commons.wikimedia.org\/wiki\/User:Peterfitzgerald\" target=\"_blank\">Peter Fitzgerald<\/a> via Wikimedia (<a rel=\"noreferrer noopener\" href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/\" target=\"_blank\">CC BY-SA 4.0<\/a>)<\/figcaption><\/figure><\/div>\n\n\n\n<p>With imports of $22 billion exceeding exports of $15.8 billion, Latvia has a negative trade balance of -$6.23 billion. Imports per capita are $11,400, while exports per capita are $8,200. Sawn wood is the most exported product, and <a href=\"https:\/\/commodity.com\/debt-clock\/lithuania\/\">Lithuania<\/a> is the biggest export destination. The most imported product is refined petroleum from <a href=\"https:\/\/commodity.com\/data\/russia\/\">Russia<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GDP of Latvia<\/h2>\n\n\n\n<p>Latvia&#8217;s GDP is $34.4 billion, representing a negative growth of -3.5% between 2008 and 2018. However, its GDP per capita of $17,861 grew by 9.06% over the same period. <\/p>\n\n\n\n<p>In terms of its GDP, the country ranks 99th in the world. Russia and Lithuania count among Latvia&#8217;s top trade partners.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Latvia&#8217;s <strong>Top 5 Commodity Exports<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/commodity.com\/soft-agricultural\/random-length-lumber\/\">Sawn wood<\/a>\u00a0&#8211; $867 million<\/li>\n\n\n\n<li><a href=\"https:\/\/commodity.com\/energy\/rbob-gasoline\/trading\/\">Refined petroleum<\/a>\u00a0&#8211; $495 million<\/li>\n\n\n\n<li>Fuel wood &#8211; $435 million<\/li>\n\n\n\n<li><a href=\"https:\/\/commodity.com\/soft-agricultural\/wheat\/trading\/\">Wheat<\/a> &#8211; $409 million<\/li>\n\n\n\n<li>Rough wood &#8211; $363 million<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Other Notable Latvian Exports&nbsp;<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Broadcasting equipment\u00a0&#8211; $703 million<\/li>\n\n\n\n<li>Hard liquor\u00a0&#8211; $561 million<\/li>\n\n\n\n<li>Packaged medicaments\u00a0&#8211; $501 million<\/li>\n\n\n\n<li>Gas turbines &#8211; $405 million<\/li>\n\n\n\n<li>Plywood &#8211; $332 million<\/li>\n<\/ul>\n\n\n\n<p>Latvia is the world&#8217;s 78th biggest exporter with total exports growing by $2.71 billion to $15.8 billion between 2013 and 2018. The top 3 export destinations from Latvia are <a href=\"https:\/\/commodity.com\/data\/lithuania\/\">Lithuania<\/a> ($2.25 billion), <a href=\"https:\/\/commodity.com\/debt-clock\/estonia\/\">Estonia<\/a> ($1.45 billion), and Russia ($1.32 billion). <\/p>\n\n\n\n<p>The <a href=\"https:\/\/commodity.com\/data\/uk\/\">United Kingdom<\/a> is the biggest export market for sawn wood, receiving 38.5% of total exports of $867 million.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Latvia&#8217;s <strong>Top 5 Commodity Imports<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Refined petroleum\u00a0&#8211; $2.83 billion<\/li>\n\n\n\n<li>Petroleum gas &#8211; $477 million<\/li>\n\n\n\n<li>Coal tar oil &#8211; $385 million<\/li>\n\n\n\n<li>Wheat &#8211; $266 million<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Other Notable Latvian Imports<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cars\u00a0&#8211; $718 million<\/li>\n\n\n\n<li>Broadcasting equipment &#8211; $689 million<\/li>\n\n\n\n<li>Packaged medicaments\u00a0&#8211; $597 million<\/li>\n\n\n\n<li>Planes, helicopters, and\/or spacecraft\u00a0&#8211; $549 million<\/li>\n\n\n\n<li>Gas turbines &#8211; $522 million<\/li>\n<\/ul>\n\n\n\n<p>Latvia is the 74th largest trade destination in the world with refined petroleum making up the biggest chunk of its total imports of $22 billion. This represents an increase of $5.12 billion in the five-year period from 2013 to 2018.<\/p>\n\n\n\n<p><a href=\"https:\/\/commodity.com\/data\/russia\/\">Russia<\/a> is Latvia&#8217;s biggest import partner, with 62% of the $2.83 billion worth of imported refined petroleum coming from this neighboring country. The total value of imports from Russia is $4.18 billion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Details About Latvia Imports\/Exports&nbsp;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sawn Wood<\/h3>\n\n\n\n<p>Latvia is the world&#8217;s 11th largest exporter of <a href=\"https:\/\/commodity.com\/soft-agricultural\/random-length-lumber\/trading\/\">sawn wood<\/a>. Annual exports total $867 million, of which 38.5% ($334 million) are destined for the United Kingdom.<\/p>\n\n\n\n<p>Other big export markets for sawn wood from Latvia are Estonia ($62.3 million), the <a href=\"https:\/\/commodity.com\/data\/netherlands\/\">Netherlands<\/a> ($47.4 million), <a href=\"https:\/\/commodity.com\/data\/south-korea\/\">South Korea<\/a> ($47.3 million), and <a href=\"https:\/\/commodity.com\/data\/germany\/\">Germany<\/a> ($40.4 million). <a href=\"https:\/\/commodity.com\/data\/australia\/\">Australia<\/a> is emerging as one of the fastest-growing markets. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hard Liquor<\/h3>\n\n\n\n<p>Hard liquor exports and imports make up an important part of Latvia&#8217;s economy. Annual exports of $561 million make it the 12th biggest exporter of hard liquor, while imports of $486 million mean Latvia ranks 14th globally.<\/p>\n\n\n\n<p>Almost two-thirds of hard liquor from Latvia is destined for Russia. The biggest import market is the United Kingdom, with $153 million of Latvia&#8217;s hard liquor coming from there.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Broadcasting Equipment<\/h3>\n\n\n\n<p>Broadcasting equipment is the 2nd most exported and 3rd most imported product in Latvia. Annual exports amount to $703 million and imports to $689 million. <\/p>\n\n\n\n<p>Lithuania is Latvia&#8217;s top trading partner for this equipment, with $146 million destined for Latvia and $179 million originating from Latvia. The fastest-growing export markets are <a href=\"\/data\/germany\/\">Germany<\/a> and <a href=\"\/data\/estonia\/\">Estonia<\/a>, while Vietnam and <a href=\"https:\/\/commodity.com\/data\/china\/\">China<\/a> are the fastest-growing import markets.<\/p>\n\n\n\n<p><strong><em>All figures based on OEC\/IMF 2018 calculations and projections unless otherwise stated.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"brokers\">Regulated Brokers: Where Can I Trade Commodities?<\/h2>\n\n\n\n<p>Start your research with reviews of these regulated brokers available in <span class=\"ctamanager-country-name ctamanager-country-name-inline\"><\/span>.<\/p>\n\n\n\n<p><div class=\"tablepress-ajax-table\" data-table-id=\"all-brokers-thin-etorocfddisclaimer\">\n<div class=\"table-wrapper\"><table id=\"tablepress-all-brokers-thin-etorocfddisclaimer\" class=\"tablepress tablepress-id-all-brokers-thin-etorocfddisclaimer ajax-table filter-brokers-asset max-rows-8\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Broker<\/th><th class=\"column-2\">Details<\/th><th class=\"column-3\">Sign up<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/plus500\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2017\/11\/plus500_logo.jpg\" alt=\"plus500logo\" width=\"125\" height=\"50\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"5 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9733;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/plus500\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.plus500.com<\/a><\/p><\/td><td class=\"column-2\">User friendly platform and leading risk management tools.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/plus500\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/plus500-review\/\">Plus500 Review<\/a><br \/><br \/><span class=\"ctamanager-riskwarning\" data-style=\"short\" data-broker=\"plus500\"><\/span><\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/etoro\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2017\/11\/etoro-logo.png\" alt=\"\" width=\"125\" height=\"47\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/etoro\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.etoro.com<\/a><\/p><\/td><td class=\"column-2\">Social trading to copy leading traders.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/etoro\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/etoro-review\/\">eToro Review<\/a> <br \/>\n<br \/><b>61% of retail CFD accounts lose money. You should consider whether you can afford to take the high risk of losing your money.<\/b><\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/xtb\/\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2020\/09\/xtb-logo.png\" alt=\"xtbLogo\" width=\"150\" \/ loading=\"lazy\" height=\"400\"><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/xtb\/\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.xtb.com<\/a><\/p><\/td><td class=\"column-2\">Multiple trading platforms and over 1,700 stocks.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/xtb\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/xtb-review\/\">XTB Review<\/a><\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/easymarkets\" target=\"blank\" rel=\"noopener noreferrer sponsored nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2018\/03\/download-9-e1521572481817.png\" alt=\"easyMarkets Logo\" width=\"150\" height=\"24\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/easymarkets\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.easymarkets.com<\/a><\/p><\/td><td class=\"column-2\">Reverse trades up to 1 hour with dealCancellation.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/easymarkets\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/easymarkets-review\/\">easyMarkets Review<\/a><\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/pepperstone\" rel=\"sponsored nofollow noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2022\/08\/pepperstone-logo-new.png\" alt=\"Pepperstone Logo\" width=\"151\" height=\"34\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/pepperstone\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.pepperstone.com<\/a><\/p><\/td><td class=\"column-2\">Up to 400:1 leverage for retail traders, share CFDs on stocks with no mark-up.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/pepperstone\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/pepperstone-review\/\">Pepperstone Review<\/a><br \/><br \/><span class=\"ctamanager-riskwarning\" data-style=\"short\" data-broker=\"pepperstone\"><\/span><\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/markets\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2021\/09\/markets-com-logo-200x80-1.png\" alt=\"markets.com logo\" width=\"151\" height=\"76\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/markets\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.markets.com<\/a><\/p><\/td><td class=\"column-2\">Proprietary technical analysis features.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/markets\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/markets-review\/\">Markets.com Review<\/a><\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/avatrade\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2018\/04\/download-e1522755182959.png\" alt=\"AvaTrade Logo\" width=\"151\" height=\"31\" \/><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"3 out of 5 stars\">&#9733;&#9733;&#9733;&#9734;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/avatrade\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.avatrade.com<\/a><\/p><\/td><td class=\"column-2\">Up to 400:1 leverage available for professional traders.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/avatrade\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/avatrade-review\/\">AvaTrade Review<\/a><\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\"><a href=\"https:\/\/commodity.com\/go\/robinhood\" rel=\"noopener noreferrer sponsored nofollow\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/2020\/07\/robinhood-new.png\" alt=\"\" width=\"150\" \/ loading=\"lazy\" height=\"132\"><\/a><br \/>\n<span class=\"star-rating\" aria-label=\"4 out of 5 stars\">&#9733;&#9733;&#9733;&#9733;&#9734;<\/span><br \/>\n<p><a class=\"target-link\" href=\"\/go\/robinhood\" target=\"_blank\" rel=\"noopener noreferrer sponsored nofollow\">www.robinhood.com<\/a><\/p><\/td><td class=\"column-2\">No minimum deposit mobile platform with stocks and options.<\/td><td class=\"column-3\"><a class=\"wpcmsdev-button color-green\" href=\"\/go\/robinhood\" target=\"_blank\" rel=\"sponsored nofollow noopener\"><span>Open Account Now<\/span><\/a><br \/>\n<a href=\"\/brokers\/robinhood-review\/\">Robinhood Review<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div><p class=\"tablepress-updated\" aria-label=\"Data freshness\">Data last reviewed: <time datetime=\"2026-04-15\">15\/04\/2026<\/time><\/p><br><p class=\"ctamanager-riskwarning\" data-style=\"group\" data-brokers=\"all\">CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. <b>Between 50.00%-86.00% of retail investor accounts lose money when trading CFDs.<\/b> You should consider whether you can afford to take the high risk of losing your money.<\/p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Further Reading<\/h2>\n\n\n\n<ul id=\"block-e71d45f1-dc82-4f5f-8024-4eeb1d0c66e6\" class=\"wp-block-list\">\n<li><a href=\"https:\/\/commodity.com\/brokers\/\">Commodity.com Guide to Commodity Brokers<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/commodity.com\/brokers\/cfd\/\">Commodity.com Guide to CFD Brokers<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/commodity.com\/soft-agricultural\/trading\/\">Guide to Trading Soft Agricultural Commodities<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/commodity.com\/energy\/oil\/trading\/\">Crude Oil Trading Guide<\/a><\/li>\n<\/ul>\n    <!-- Commodity Newsletter v20260322f -->\n    <style>\n    .cmm-nl{position:relative;background:#313236;border-radius:15px;padding:36px 32px;margin:48px 0 0;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;overflow:hidden}\n    .cmm-nl::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,rgba(255,255,255,.04) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}\n    .cmm-nl__accent{position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,#8abc00,#109bf8)}\n    .cmm-nl__inner{position:relative;display:flex;flex-direction:column;gap:28px}\n    .cmm-nl__label{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2.5px;color:#8abc00;margin:0 0 10px}\n    .cmm-nl__title{font-size:26px;font-weight:700;color:#fff;margin:0 0 10px;line-height:1.2}\n    .cmm-nl__subtitle{font-size:16px;line-height:1.5;color:rgba(255,255,255,.7);margin:0 0 14px}\n    .cmm-nl__topics{display:flex;gap:20px;margin:0;padding:0;list-style:none}\n    .cmm-nl__topic{display:flex!important;align-items:center!important;gap:8px!important;font-size:15px!important;color:#fff!important;font-weight:700!important;opacity:1!important}\n    .cmm-nl__topic svg{width:22px!important;height:22px!important;flex-shrink:0!important;opacity:1!important}\n    .cmm-nl__fields{display:flex;flex-direction:column;gap:10px}\n    .cmm-nl__input{font-family:inherit!important;font-size:18px!important;padding:20px 22px!important;border:2px solid rgba(255,255,255,.4)!important;border-radius:8px!important;width:100%!important;box-sizing:border-box!important;background:rgba(255,255,255,.15)!important;color:#fff!important;transition:border-color .2s,box-shadow .2s,background .2s;-webkit-appearance:none!important;appearance:none!important;min-height:60px!important}\n    .cmm-nl__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl__input:focus{outline:none;border-color:#109bf8;background:rgba(255,255,255,.12);box-shadow:0 0 0 3px rgba(16,155,248,.2)}\n    .cmm-nl__input--error{border-color:#ea580c!important;box-shadow:0 0 0 3px rgba(234,88,12,.15)!important}\n    .cmm-nl__btn{font-family:inherit;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:4.2px;color:#fff;background:#0286e0;border:none;border-radius:24px;padding:16px 32px;cursor:pointer;transition:background .2s,transform .1s;width:100%;-webkit-appearance:none;appearance:none}\n    .cmm-nl__btn:hover{background:#109bf8;transform:translateY(-1px)}\n    .cmm-nl__btn:active{transform:translateY(0)}\n    .cmm-nl__btn:disabled{opacity:.65;cursor:not-allowed;transform:none}\n    .cmm-nl__btn--loading{position:relative;color:transparent}\n    .cmm-nl__btn--loading::after{content:'';position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:cmm-nl-spin .6s linear infinite}\n    .cmm-nl__btn--pulse{animation:cmm-nl-pulse 2s ease-in-out 1}\n    @keyframes cmm-nl-spin{to{transform:rotate(360deg)}}\n    @keyframes cmm-nl-pulse{0%,100%{box-shadow:0 0 0 0 rgba(2,134,224,0)}50%{box-shadow:0 0 0 12px rgba(2,134,224,.3)}}\n    .cmm-nl__msg{font-size:14px;margin:6px 0 0;min-height:20px}\n    .cmm-nl__msg--success{color:#8abc00}\n    .cmm-nl__msg--error{color:#ea580c}\n    .cmm-nl__meta{font-size:13px;color:rgba(255,255,255,.45);margin:10px 0 0;line-height:1.5}\n    .cmm-nl__meta a{color:rgba(255,255,255,.55);text-decoration:underline;text-underline-offset:2px}\n    .cmm-nl__meta a:hover{color:rgba(255,255,255,.8)}\n    .cmm-nl__success{text-align:center;padding:24px 0}\n    .cmm-nl__success-icon{display:inline-block;width:48px;height:48px;margin-bottom:12px}\n    .cmm-nl__success-text{font-size:18px;font-weight:600;color:#fff;margin:0 0 8px}\n    .cmm-nl__success-sub{font-size:14px;color:rgba(255,255,255,.55);margin:0 0 16px}\n    .cmm-nl__success-share{display:flex;justify-content:center;gap:12px}\n    .cmm-nl__success-share a{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:20px;font-size:13px;font-weight:600;text-decoration:none;transition:opacity .2s}\n    .cmm-nl__success-share a:hover{opacity:.85}\n    .cmm-nl__share-x{background:#000;color:#fff}\n    .cmm-nl__share-li{background:#0a66c2;color:#fff}\n    .cmm-nl__hp{position:absolute;left:-9999px;opacity:0;height:0;width:0;overflow:hidden}\n    \/* Sticky mobile bar *\/\n    .cmm-nl-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:9999;background:#313236;border-top:2px solid #8abc00;padding:12px 16px;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;transform:translateY(100%);transition:transform .3s ease}\n    .cmm-nl-bar--visible{transform:translateY(0)}\n    .cmm-nl-bar__inner{display:flex;gap:8px;align-items:center;max-width:600px;margin:0 auto}\n    .cmm-nl-bar__input{flex:1;font-family:inherit;font-size:16px;padding:10px 14px;border:2px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;-webkit-appearance:none;appearance:none;min-width:0}\n    .cmm-nl-bar__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl-bar__input:focus{outline:none;border-color:#109bf8}\n    .cmm-nl-bar__btn{font-family:inherit;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:#fff;background:#0286e0;border:none;border-radius:20px;padding:12px 20px;cursor:pointer;white-space:nowrap;-webkit-appearance:none;appearance:none}\n    .cmm-nl-bar__close{background:none;border:none;color:rgba(255,255,255,.5);font-size:20px;cursor:pointer;padding:4px 8px;line-height:1}\n    .cmm-nl-bar__close:hover{color:#fff}\n    .cmm-nl-bar__msg{color:#ea580c;font-size:12px;text-align:center;margin:4px 0 0;display:none}\n    \/* Exit intent slide-up *\/\n    .cmm-nl-exit{display:none;position:fixed;bottom:0;left:0;right:0;z-index:10000;background:#313236;border-top:3px solid #8abc00;padding:20px;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;transform:translateY(100%);transition:transform .4s ease}\n    .cmm-nl-exit--visible{transform:translateY(0)}\n    .cmm-nl-exit__inner{max-width:700px;margin:0 auto;display:flex;align-items:center;gap:20px}\n    .cmm-nl-exit__text{flex:1}\n    .cmm-nl-exit__title{font-size:18px;font-weight:700;color:#fff;margin:0 0 4px}\n    .cmm-nl-exit__sub{font-size:14px;color:rgba(255,255,255,.6);margin:0}\n    .cmm-nl-exit__form{display:flex;gap:8px;flex:1}\n    .cmm-nl-exit__input{flex:1;font-family:inherit;font-size:16px;padding:10px 14px;border:2px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;-webkit-appearance:none;appearance:none;min-width:0}\n    .cmm-nl-exit__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl-exit__input:focus{outline:none;border-color:#109bf8}\n    .cmm-nl-exit__btn{font-family:inherit;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:#fff;background:#0286e0;border:none;border-radius:20px;padding:12px 24px;cursor:pointer;white-space:nowrap}\n    .cmm-nl-exit__close{position:absolute;top:8px;right:12px;background:none;border:none;color:rgba(255,255,255,.5);font-size:22px;cursor:pointer;line-height:1}\n    .cmm-nl-exit__close:hover{color:#fff}\n    @media(min-width:768px){\n        .cmm-nl{padding:44px 52px}\n        .cmm-nl__inner{flex-direction:row;align-items:center;gap:48px}\n        .cmm-nl__content{flex:1 1 45%}\n        .cmm-nl__form-wrap{flex:1 1 55%}\n        .cmm-nl__title{font-size:30px}\n        .cmm-nl__subtitle{font-size:17px}\n        .cmm-nl-bar{display:none!important}\n    }\n    @media(max-width:767px){\n        .cmm-nl-bar{display:block}\n        .cmm-nl__topics{flex-wrap:wrap;gap:12px}\n        .cmm-nl-exit__inner{flex-direction:column;gap:12px}\n        .cmm-nl-exit__form{width:100%}\n    }\n    @media(prefers-reduced-motion:reduce){\n        .cmm-nl__btn--loading::after{animation:none}\n        .cmm-nl__btn:hover{transform:none}\n        .cmm-nl__btn--pulse{animation:none}\n        .cmm-nl-bar,.cmm-nl-exit{transition:none}\n    }\n    <\/style>\n\n        <section class=\"cmm-nl\" aria-labelledby=\"cmm-nl-heading\" id=\"newsletter\" data-nl-placement=\"main\">\n        <div class=\"cmm-nl__accent\"><\/div>\n        <div class=\"cmm-nl__inner\" id=\"cmm-nl-inner\">\n            <div class=\"cmm-nl__content\">\n                <span class=\"cmm-nl__label\">Free daily newsletter<\/span>\n                <h3 id=\"cmm-nl-heading\" class=\"cmm-nl__title\">The Commodity Briefing<\/h3>\n                <p class=\"cmm-nl__subtitle\">The stories behind the prices. Surprising, useful, occasionally weird - in your inbox every weekday.<\/p>\n                <ul class=\"cmm-nl__topics\" aria-label=\"What we cover\">\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M2 12l3-4 3 2 4-6\" stroke=\"#8abc00\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><rect x=\"1\" y=\"1\" width=\"14\" height=\"14\" rx=\"2\" stroke=\"rgba(255,255,255,.3)\" stroke-width=\"1\"\/><\/svg>\n                        Price moves\n                    <\/li>\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 2v6M8 12v2M5 5l3 3 3-3\" stroke=\"#ea580c\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n                        Supply shocks\n                    <\/li>\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"#109bf8\" stroke-width=\"1.5\"\/><path d=\"M2 8h12M8 2c2 2 3 4 3 6s-1 4-3 6M8 2c-2 2-3 4-3 6s1 4 3 6\" stroke=\"#109bf8\" stroke-width=\"1\"\/><\/svg>\n                        Macro drivers\n                    <\/li>\n                <\/ul>\n                <p class=\"cmm-nl__meta\" style=\"margin-top:14px;font-size:12px;\">Every weekday. 2-minute read.<\/p>\n            <\/div>\n            <div class=\"cmm-nl__form-wrap\">\n                <form class=\"cmm-nl__form\" id=\"cmm-nl-form\" method=\"post\" novalidate>\n                    <input type=\"hidden\" name=\"action\" value=\"cmm_nl_subscribe\">\n                    <input type=\"hidden\" name=\"nonce\" value=\"e74f7f6ab2\">\n                    <input type=\"hidden\" name=\"ts\" value=\"\">\n                    <div class=\"cmm-nl__hp\" aria-hidden=\"true\">\n                        <label>Leave blank <input type=\"text\" name=\"b_hp\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n                    <\/div>\n                    <div class=\"cmm-nl__fields\">\n                        <input type=\"email\" name=\"email\" placeholder=\"Your email address\" class=\"cmm-nl__input\" autocomplete=\"email\" required aria-label=\"Email address\" id=\"cmm-nl-email\">\n                        <button type=\"submit\" class=\"cmm-nl__btn\" id=\"cmm-nl-btn\">Get the briefing<\/button>\n                    <\/div>\n                    <div class=\"cmm-nl__msg\" id=\"cmm-nl-msg\" role=\"alert\" aria-live=\"polite\"><\/div>\n                    <p class=\"cmm-nl__meta\">Join 11,000+ readers. Unsubscribe anytime. <a href=\"https:\/\/commodity.com\/privacy\/\">Privacy policy<\/a><\/p>\n                <\/form>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Sticky mobile bottom bar -->\n    <div class=\"cmm-nl-bar\" id=\"cmm-nl-bar\" aria-label=\"Newsletter signup\" data-nl-placement=\"bar\">\n        <div class=\"cmm-nl-bar__inner\">\n            <input type=\"email\" class=\"cmm-nl-bar__input\" id=\"cmm-nl-bar-email\" placeholder=\"Email for daily briefing\" aria-label=\"Email address\" autocomplete=\"email\">\n            <button class=\"cmm-nl-bar__btn\" id=\"cmm-nl-bar-btn\">Join<\/button>\n            <button class=\"cmm-nl-bar__close\" id=\"cmm-nl-bar-close\" aria-label=\"Dismiss\">&times;<\/button>\n        <\/div>\n        <div class=\"cmm-nl-bar__msg\" id=\"cmm-nl-bar-msg\"><\/div>\n    <\/div>\n\n    <!-- Exit-intent slide-up -->\n    <div class=\"cmm-nl-exit\" id=\"cmm-nl-exit\" role=\"dialog\" aria-label=\"Newsletter signup\" data-nl-placement=\"exit\">\n        <button class=\"cmm-nl-exit__close\" id=\"cmm-nl-exit-close\" aria-label=\"Close\">&times;<\/button>\n        <div class=\"cmm-nl-exit__inner\">\n            <div class=\"cmm-nl-exit__text\">\n                <p class=\"cmm-nl-exit__title\">Before you go<\/p>\n                <p class=\"cmm-nl-exit__sub\">Get The Commodity Briefing - free, 2 minutes.<\/p>\n            <\/div>\n            <form class=\"cmm-nl-exit__form\" id=\"cmm-nl-exit-form\" novalidate>\n                <input type=\"email\" class=\"cmm-nl-exit__input\" id=\"cmm-nl-exit-email\" placeholder=\"Email address\" aria-label=\"Email address\" autocomplete=\"email\">\n                <button type=\"submit\" class=\"cmm-nl-exit__btn\">Subscribe<\/button>\n            <\/form>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function(){\n        var ajaxUrl = 'https:\/\/commodity.com\/wp-admin\/admin-ajax.php';\n        var nonce = 'e74f7f6ab2';\n        var shareUrl = 'https:\/\/commodity.com\/newsletter';\n        var form = document.getElementById('cmm-nl-form');\n        if (!form) return;\n\n        \/* Timestamp for timing check *\/\n        form.querySelector('[name=\"ts\"]').value = Date.now();\n\n        \/* Already subscribed? *\/\n        var subscribed = false;\n        try { subscribed = !!localStorage.getItem('cmm_nl_subscribed'); } catch(e){}\n        if (subscribed) { showSuccess(); return; }\n\n        \/* Pulse animation when button scrolls into view *\/\n        var btn = document.getElementById('cmm-nl-btn');\n        if ('IntersectionObserver' in window && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n            var pulseObs = new IntersectionObserver(function(entries) {\n                entries.forEach(function(e) {\n                    if (e.isIntersecting) {\n                        btn.classList.add('cmm-nl__btn--pulse');\n                        pulseObs.disconnect();\n                    }\n                });\n            }, {threshold: 0.5});\n            pulseObs.observe(btn);\n        }\n\n        \/* Main form submit *\/\n        form.addEventListener('submit', function(e) {\n            e.preventDefault();\n            submitEmail(\n                document.getElementById('cmm-nl-email'),\n                btn,\n                document.getElementById('cmm-nl-msg')\n            );\n        });\n\n        \/* Sticky mobile bar *\/\n        var bar = document.getElementById('cmm-nl-bar');\n        var barDismissed = false;\n        try { barDismissed = !!sessionStorage.getItem('cmm_nl_bar_dismissed'); } catch(e){}\n\n        if (bar && !barDismissed && window.innerWidth < 768) {\n            var barShown = false;\n            window.addEventListener('scroll', function() {\n                if (barShown || barDismissed) return;\n                var scrollPct = window.scrollY \/ (document.body.scrollHeight - window.innerHeight);\n                if (scrollPct > 0.3) {\n                    bar.classList.add('cmm-nl-bar--visible');\n                    barShown = true;\n                }\n            }, {passive: true});\n\n            document.getElementById('cmm-nl-bar-close').addEventListener('click', function() {\n                bar.classList.remove('cmm-nl-bar--visible');\n                barDismissed = true;\n                try { sessionStorage.setItem('cmm_nl_bar_dismissed', '1'); } catch(e){}\n            });\n\n            document.getElementById('cmm-nl-bar-btn').addEventListener('click', function() {\n                var input = document.getElementById('cmm-nl-bar-email');\n                var msgEl = document.getElementById('cmm-nl-bar-msg');\n                var email = input.value.trim();\n                if (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n                    msgEl.textContent = 'Enter a valid email';\n                    msgEl.style.display = 'block';\n                    return;\n                }\n                msgEl.style.display = 'none';\n                submitEmailSimple(email, function() {\n                    if (typeof window.nlTrack === 'function') window.nlTrack('submit', 'bar', 'control', '');\n                    bar.innerHTML = '<div style=\"text-align:center;color:#8abc00;padding:8px;font-weight:600;\">You\\'re in!<\/div>';\n                    setTimeout(function() { bar.classList.remove('cmm-nl-bar--visible'); }, 2000);\n                }, function(err) {\n                    msgEl.textContent = err;\n                    msgEl.style.display = 'block';\n                });\n            });\n        }\n\n        \/* Exit-intent slide-up *\/\n        var exitEl = document.getElementById('cmm-nl-exit');\n        var exitShown = false;\n        try { exitShown = !!sessionStorage.getItem('cmm_nl_exit_shown'); } catch(e){}\n\n        if (exitEl && !exitShown) {\n            \/* Desktop: mouse leaves viewport top. Mobile: 80% scroll depth *\/\n            if (window.innerWidth >= 768) {\n                document.addEventListener('mouseout', function(e) {\n                    if (exitShown) return;\n                    if (e.clientY < 5 && e.relatedTarget === null) {\n                        showExit();\n                    }\n                });\n            } else {\n                window.addEventListener('scroll', function() {\n                    if (exitShown) return;\n                    var scrollPct = window.scrollY \/ (document.body.scrollHeight - window.innerHeight);\n                    if (scrollPct > 0.8) showExit();\n                }, {passive: true});\n            }\n\n            function showExit() {\n                if (exitShown) return;\n                try { if (localStorage.getItem('cmm_nl_subscribed')) return; } catch(e){}\n                exitShown = true;\n                try { sessionStorage.setItem('cmm_nl_exit_shown', '1'); } catch(e){}\n                exitEl.style.display = 'block';\n                requestAnimationFrame(function() {\n                    requestAnimationFrame(function() {\n                        exitEl.classList.add('cmm-nl-exit--visible');\n                    });\n                });\n            }\n\n            document.getElementById('cmm-nl-exit-close').addEventListener('click', function() {\n                exitEl.classList.remove('cmm-nl-exit--visible');\n                setTimeout(function() { exitEl.style.display = 'none'; }, 400);\n            });\n\n            document.getElementById('cmm-nl-exit-form').addEventListener('submit', function(e) {\n                e.preventDefault();\n                var input = document.getElementById('cmm-nl-exit-email');\n                var email = input.value.trim();\n                if (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n                    input.style.borderColor = '#ea580c';\n                    return;\n                }\n                submitEmailSimple(email, function() {\n                    if (typeof window.nlTrack === 'function') window.nlTrack('submit', 'exit', 'control', '');\n                    exitEl.querySelector('.cmm-nl-exit__inner').innerHTML = '<p style=\"text-align:center;color:#8abc00;font-weight:600;font-size:18px;margin:0;\">You\\'re in! Check your inbox.<\/p>';\n                    setTimeout(function() {\n                        exitEl.classList.remove('cmm-nl-exit--visible');\n                        setTimeout(function() { exitEl.style.display = 'none'; }, 400);\n                    }, 2500);\n                }, function(err) {\n                    input.style.borderColor = '#ea580c';\n                });\n            });\n        }\n\n        \/* Shared submit helpers *\/\n        function submitEmail(emailInput, btnEl, msgEl) {\n            var email = emailInput.value.trim();\n            msgEl.textContent = '';\n            msgEl.className = 'cmm-nl__msg';\n            emailInput.classList.remove('cmm-nl__input--error');\n\n            if (!email) { showError('Please enter your email address.', emailInput, msgEl); return; }\n            if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { showError('That doesn\\'t look like a valid email.', emailInput, msgEl); return; }\n\n            btnEl.disabled = true;\n            btnEl.classList.add('cmm-nl__btn--loading');\n\n            var fd = new FormData();\n            fd.append('action', 'cmm_nl_subscribe');\n            fd.append('nonce', nonce);\n            fd.append('email', email);\n            fd.append('ts', form.querySelector('[name=\"ts\"]').value);\n\n            fetch(ajaxUrl, {method:'POST', body:fd})\n            .then(function(r){return r.json();})\n            .then(function(res){\n                btnEl.disabled = false;\n                btnEl.classList.remove('cmm-nl__btn--loading');\n                if (res.success) {\n                    try{localStorage.setItem('cmm_nl_subscribed','1');}catch(e){}\n                    if (typeof window.nlTrack === 'function') { window.nlTrack('submit', 'main', form.closest('[data-nl-placement]')?.getAttribute('data-nl-variant') || 'control', form.closest('[data-nl-placement]')?.getAttribute('data-nl-test') || ''); }\n                    showSuccess();\n                } else {\n                    var err = (res.data && res.data.message) || 'Something went wrong.';\n                    msgEl.textContent = err;\n                    msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n                }\n            })\n            .catch(function(){\n                btnEl.disabled = false;\n                btnEl.classList.remove('cmm-nl__btn--loading');\n                msgEl.textContent = 'Something went wrong. Please try again.';\n                msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n            });\n        }\n\n        function submitEmailSimple(email, onSuccess, onError) {\n            var fd = new FormData();\n            fd.append('action', 'cmm_nl_subscribe');\n            fd.append('nonce', nonce);\n            fd.append('email', email);\n            fd.append('ts', String(Date.now() - 5000));\n\n            fetch(ajaxUrl, {method:'POST', body:fd})\n            .then(function(r){return r.json();})\n            .then(function(res){\n                if (res.success) {\n                    try{localStorage.setItem('cmm_nl_subscribed','1');}catch(e){}\n                    onSuccess();\n                } else {\n                    onError((res.data && res.data.message) || 'Something went wrong.');\n                }\n            })\n            .catch(function(){ onError('Network error. Try again.'); });\n        }\n\n        function showError(text, input, msgEl) {\n            msgEl.textContent = text;\n            msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n            if (input) { input.classList.add('cmm-nl__input--error'); input.focus(); }\n        }\n\n        function showSuccess() {\n            var inner = document.getElementById('cmm-nl-inner');\n            var motionOk = !window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n            if (motionOk) {\n                inner.style.transition = 'opacity .3s ease';\n                inner.style.opacity = '0';\n                setTimeout(function(){ replaceWithSuccess(inner); }, 300);\n            } else {\n                replaceWithSuccess(inner);\n            }\n            \/* Hide bar and exit intent too *\/\n            var bar = document.getElementById('cmm-nl-bar');\n            if (bar) bar.style.display = 'none';\n            var exit = document.getElementById('cmm-nl-exit');\n            if (exit) exit.style.display = 'none';\n        }\n\n        function nextBriefing() {\n            var d = new Date();\n            var day = d.getDay(); \/* 0=Sun, 5=Fri, 6=Sat *\/\n            \/* If Thu after send time, Fri before send, or Sat\/Sun -> Monday *\/\n            if (day === 5 || day === 6 || day === 0) return 'Monday morning';\n            return 'tomorrow morning';\n        }\n\n        function replaceWithSuccess(inner) {\n            inner.innerHTML = '<div class=\"cmm-nl__success\">' +\n                '<svg class=\"cmm-nl__success-icon\" viewBox=\"0 0 48 48\" fill=\"none\" aria-hidden=\"true\">' +\n                '<circle cx=\"24\" cy=\"24\" r=\"22\" stroke=\"#8abc00\" stroke-width=\"3\" fill=\"none\"\/>' +\n                '<path d=\"M14 24l7 7 13-13\" stroke=\"#8abc00\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>' +\n                '<\/svg>' +\n                '<p class=\"cmm-nl__success-text\">You\\'re in. Your first briefing arrives ' + nextBriefing() + '.<\/p>' +\n                '<p class=\"cmm-nl__success-sub\">Know someone who\\'d enjoy this?<\/p>' +\n                '<div class=\"cmm-nl__success-share\">' +\n                '<a class=\"cmm-nl__share-x\" href=\"https:\/\/twitter.com\/intent\/tweet?text=' + encodeURIComponent('The Commodity Briefing - free daily newsletter worth reading. ') + '&url=' + encodeURIComponent(shareUrl) + '\" target=\"_blank\" rel=\"noopener\">Share on X<\/a>' +\n                '<a class=\"cmm-nl__share-li\" href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=' + encodeURIComponent(shareUrl) + '\" target=\"_blank\" rel=\"noopener\">Share on LinkedIn<\/a>' +\n                '<\/div>' +\n                '<\/div>';\n            inner.style.opacity = '1';\n        }\n    })();\n    <\/script>\n        <script>\n    (function(){\n        \/* \u2500\u2500 Newsletter Analytics v20260322 \u2500\u2500 *\/\n        var ajaxUrl = \"https:\\\/\\\/commodity.com\\\/wp-admin\\\/admin-ajax.php\";\n        var nlTests = [];\n\n        \/* Deterministic visitor hash for variant assignment *\/\n        function getVisitorId() {\n            var vid = '';\n            try {\n                vid = localStorage.getItem('nl_vid');\n                if (!vid) {\n                    vid = Math.random().toString(36).substr(2) + Date.now().toString(36);\n                    localStorage.setItem('nl_vid', vid);\n                }\n            } catch(e) {\n                vid = 'anon_' + Math.random().toString(36).substr(2);\n            }\n            return vid;\n        }\n\n        function hashCode(str) {\n            var hash = 0;\n            for (var i = 0; i < str.length; i++) {\n                hash = ((hash << 5) - hash) + str.charCodeAt(i);\n                hash |= 0;\n            }\n            return Math.abs(hash);\n        }\n\n        \/* Assign variant for a placement *\/\n        function assignVariant(placement) {\n            var test = nlTests[placement];\n            if (!test) return {testId: '', variant: 'control', config: {}};\n\n            var vid = getVisitorId();\n            var hash = hashCode(vid + test.id);\n\n            \/* Traffic inclusion *\/\n            if ((hash % 100) >= test.traffic_pct) {\n                return {testId: test.id, variant: 'control', config: {}};\n            }\n\n            var bucket = hash % 100;\n            var cumulative = 0;\n            for (var i = 0; i < test.variants.length; i++) {\n                cumulative += test.variants[i].weight;\n                if (bucket < cumulative) {\n                    return {\n                        testId: test.id,\n                        variant: test.variants[i].key,\n                        config: test.variants[i].config || {}\n                    };\n                }\n            }\n            return {testId: test.id, variant: 'control', config: {}};\n        }\n\n        \/* Apply variant text swaps *\/\n        function applyVariant(formEl, assignment) {\n            if (assignment.variant === 'control' || !assignment.config) return;\n            var cfg = assignment.config;\n            var section = formEl.closest('.cmm-nl, .cmm-nl-inline, .cmm-nl-bar, .cmm-nl-exit');\n            if (!section) return;\n\n            if (cfg.cta_text) {\n                var btn = section.querySelector('[type=\"submit\"]');\n                if (btn) btn.textContent = cfg.cta_text;\n            }\n            if (cfg.title) {\n                var title = section.querySelector('[class*=\"title\"]');\n                if (title) title.textContent = cfg.title;\n            }\n            if (cfg.subtitle) {\n                var sub = section.querySelector('[class*=\"subtitle\"], [class*=\"sub\"]');\n                if (sub) sub.textContent = cfg.subtitle;\n            }\n        }\n\n        \/* Send tracking event to 3 destinations *\/\n        function nlTrack(eventType, placement, variant, testId) {\n            \/* 1. Server-side log *\/\n            var fd = new FormData();\n            fd.append('action', 'nl_track');\n            fd.append('event_type', eventType);\n            fd.append('placement', placement);\n            fd.append('variant', variant);\n            fd.append('test_id', testId);\n            fd.append('page_url', location.pathname);\n\n            if (navigator.sendBeacon) {\n                navigator.sendBeacon(ajaxUrl, fd);\n            } else {\n                fetch(ajaxUrl, {method: 'POST', body: fd});\n            }\n\n            \/* 2. GA4 *\/\n            if (typeof gtag === 'function') {\n                gtag('event', 'newsletter_' + eventType, {\n                    nl_placement: placement,\n                    nl_variant: variant,\n                    nl_test: testId\n                });\n            }\n\n            \/* 3. Matomo *\/\n            if (typeof _paq !== 'undefined') {\n                _paq.push(['trackEvent', 'Newsletter',\n                    eventType.charAt(0).toUpperCase() + eventType.slice(1),\n                    placement + (variant !== 'control' ? ' | ' + variant : '')\n                ]);\n            }\n        }\n\n        \/* Attach tracking to a form element *\/\n        function trackForm(formEl) {\n            var placement = formEl.getAttribute('data-nl-placement');\n            if (!placement) return;\n\n            var assignment = assignVariant(placement);\n\n            \/* Set data attributes for reference *\/\n            formEl.setAttribute('data-nl-variant', assignment.variant);\n            formEl.setAttribute('data-nl-test', assignment.testId);\n\n            \/* Apply variant text swaps *\/\n            applyVariant(formEl, assignment);\n\n            \/* Impression: 50% visible for 1 second *\/\n            if ('IntersectionObserver' in window) {\n                var impTimer = null;\n                var impObs = new IntersectionObserver(function(entries) {\n                    entries.forEach(function(e) {\n                        if (e.isIntersecting) {\n                            impTimer = setTimeout(function() {\n                                nlTrack('impression', placement, assignment.variant, assignment.testId);\n                                impObs.disconnect();\n                            }, 1000);\n                        } else if (impTimer) {\n                            clearTimeout(impTimer);\n                        }\n                    });\n                }, {threshold: 0.5});\n                impObs.observe(formEl);\n            }\n\n            \/* Interaction: first focus on email input *\/\n            var emailInput = formEl.querySelector('input[type=\"email\"]');\n            if (emailInput) {\n                emailInput.addEventListener('focus', function handler() {\n                    nlTrack('interact', placement, assignment.variant, assignment.testId);\n                    emailInput.removeEventListener('focus', handler);\n                });\n            }\n        }\n\n        \/* Initialize all forms on page *\/\n        function initTracking() {\n            var forms = document.querySelectorAll('[data-nl-placement]');\n            forms.forEach(trackForm);\n        }\n\n        \/* Run on DOM ready *\/\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initTracking);\n        } else {\n            initTracking();\n        }\n\n        \/* Expose nlTrack globally so parent plugin can call it on submit *\/\n        window.nlTrack = nlTrack;\n        window.nlGetAssignment = assignVariant;\n    })();\n    <\/script>\n    ","protected":false},"excerpt":{"rendered":"<p>In this economic guide to Latvia, we&#8217;ll give you an overview of the Latvian economy, including its primary imports and exports of goods and services. Latvia Economy Overview A GDP of $34.4 billion makes Latvia the world&#8217;s 99th largest economy. Based on the diversity and complexity of its exports, the country ranks 36th on the [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":20652,"parent":19119,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-19803","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/19803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/comments?post=19803"}],"version-history":[{"count":0,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/19803\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/19119"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/media\/20652"}],"wp:attachment":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/media?parent=19803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}