Observations, Problems & Suggestions:
Observations:
increased entrenchment makes the game slower, increasing importance of artillery, which in turn increases the importance of winning the war in the skies. I absolutely love this interaction pattern.
Neutrality Violated, Austrian Howitzers & Austrian defense plans are among the key events in the game, sending them or missing them, will define the game going forward.
With all Neutrality & Howitzers, Germany should get to the gates of Paris, if not take it. With only Howitzers, they should get to Paris probably, but taking it seems unlikely. With just Neutrality Violated, the German advance will likely end sooner, but still taking Rheims, Calais and Amiens is not out of the realm of possiblity. Without those 3 cards though, Germany will struggle to advance on the Western front while also keeping the Russians at bay. They have to decide where to send reinforcements, and if Russia attacks, they'll be needed there.
France has a good shot at defending vs the Schlieffenplan if they manage to get British Warning in time and BEF on turn 3. Without that, a turn 1 army of Africa is the next best thing.
1914 and 1915 seem pretty balanced and historically accurate. Serbia will start to crumble around 1915, but won't be pushed back all the way to the Macedonian mountains until 1916. Western front should usually end in stalemate. Russia will make gains in Galicia at the start of the game, but usually won't get very far in Eastern Prussia. In 1915, they start to collapse and losing Poland usually takes the better part of 1915, sometimes even part of 1916.
However, in 1916, things might need a little bit of balancing to make the game fair and enjoyable going forwad. This is in part due to certain events on the CP side seeming a bit stronger, they seem to suffer less collapse points early on, and the morale calculations favor them, which I'll get back to later.
Currently, the blockade still feels like Germany can kinda just ignore it. Germany was really stretched to the max for a bit, but they're able to continue the fight. they do have to carry the other nations though, and this is where things get tough. I find myself shipping a lot of PP from germany to weaker alliances to keep them in the war.
Italy is vulnerable when they join the war, but you already made some changes. So let's see how things work out. I had already written this, so I'll just put it here anyway:
Compared to history, Italy usually joins later than they should, Bulgaria usually joins earlier or around the same time, while Romania usually joins a bit too early (due to them coming quite soon after Bulgaria joins), However, in terms of the game, it feels pretty balanced (though it does feel a bit weird to usually see Bulgaria join before Italy does). Serbia surrendered just before Italy was about to join.
However, due to the later than historical entry, Italy is often a sitting duck, because by the time they join, most fronts have stabilized or are collapsing in favor of the CP, and so the CP player, when they see Italy is about to join the war, can just send units to the border. Even if Italy declares next turn, they aren't ready fast enough to protect Trento (if they got it) or Udine.
Problems & Suggestions:
I suggest that the blockade, when it worsens, increases the cost of every repair/upgrade Germany makes on a unit. maybe even training new units, if possible. This should make the effect of the blockade feel like something serious. I'm honestly not sure what it currently does, except drain morale. The shortage usually starts somewhere in 1916. It could get progressively worse, upgrading costing only a bit more in 1916, a lot more in 1917, and also starting to cost morale in 1918. That should also drop manpower quality, which should be felt in the efficiency of new German units.
Although germany is strong, they cant really fight on sea and air both, they have to choose. I do like that it gives a strategical dilemma, but germans were kinda the powerhouse able to fight on land sea and air, just like the british were. currently the brits can do all 3, but germans can't. I propose lowering submarine upkeep to 1. This will not affect most nations, but gives Germany a little bit more chance to fight on all fronts and theatres of war. Also maybe make it cost less PP and/or manpower to build subs. Build time should stay as is.
Offensive in the east is still a good event, but the attack buff is now so small it's hardly noticable. I'd still send the event, but mainly for the 60 PP which is nothing to scoff at. I'm not sure if it needs any fixing though, I'd need to see it from the Russian perspective to see if it feels balanced or not. A little buff could be to have it unlock Mackensen if he hasn't been unlocked yet.
Crown prince assumes command is a bit awkward now, perhaps it can also give 1 experience level to the army the Crown Prince joins?
Ottomans seem to strong on the offensive, though this is largely due to the Jihad attack bonus, which is one of the strongest if not the strongest event in the mid-late game. I'll deal with both issues seperately. The first issue, I think is elegantly solved already by Ottoman Mass Desertions event, it just needs some tweaking. I propose that attacking lowers the value by 3 or 4 instead of 2. This should give ottomans more incentive to stay on the defensive, as attacking will quickly have very negative consequences. It could be progressive. Like 2 in 1914, 3 in 1915, 4 in 1916 onwards.
Another solution could be to give the British increased presence in the Iran region, by allowing them to ship units directly into Abadan after the oilfields event, though only if naval capacity is available. I prefer the Mass Desertions route though.
Jihad seems like it's still too strong. I suggest changing the attack bonus for a defense bonus if possible.
Fires in the desert is also too strong, partially because of Jihad. Might need a little bit fewer troops spawned in MP?
Austria seems like they're a bit too strong/capable compared to history. Partially because of Russia's weakness, partially because of other things. I think there might be a simple fix, delay the time at which industrial warfare unlocks for austria, by maybe like 5 (currently it unlocks on turn 10 or 11, it should be like 15-16, just a little bit before Serbia), this will set them back in the tech race, making their units worse than Russian ones (rather than better as is now). This will incentivize Russia to attack the Austrian front with their offensive cards as well and might make it necessary for Germany to Aid austria more than it needs to do now.
Entente needs more persia related events. now I feel persia usually goes CP in mp or stays neutral, as they have more events to influence Persia it seems.
Similarly, the CP have a lot more events to influence Greece compared to Entente, and they can send all of them in 1 turn if they have enough diplo points saved. Maybe add some delay between these events showing up in the pool so they Entente also gets a chance to respond with their own events.
I've mentioned it before, but I think it's a good change, so I'll say it again

Artillery for small powers should be looked at. Imo, all small powers should get the Sweden treatment (can build artillery, but have no tech). Ottomans should get their artillery tech massively delayed to the point where they don't really unlock any of the techs past the first hydropneumatic howitzer upgrade. Specialized shells should be unlocked with Trains to Constantinople event, and Gas should unlock only with Kaiser visiting Istanbul (or maybe also Army Group Yildirim, as Kaiser visits is quite rare). In my current game, Ottoman tech on gas is only 6 turns behind that of Germany on unlocking mustard gas, which is a bit ridiculous imo.
Also, small nations shell production should be capped at 5. That of Ottomans at 5 or 10. Otherwise you can use them just as artillery production facilities for the great powers, which I do a lot now already anyway. I upgraded sweden and bulgaria to 10 artillery, and just siphon that off to Germany so I can maintain 5 batteries while only producing 20 ammo per turn. Since Germany already has a cap at 12, that code could be used to cap small powers at 5, right?
Entente seems like they should have more PP production than they do compared to history. But I'd have to play a longer game from Entente side to be more certain. However, after 1915, the war kinda turns into a war of attrition on all fronts due to the higher entrenchment making dislodging even reserve corps very hard. But for a strange reason (or maybe not so strange, I guess the reason is mainly technology) the Entente is losing the war of attrition in the long run. Historically it was the other way around, though all nations suffered a lot of course. Still, I'd like to maybe see convoys for entente give a bit more manpower from the colonies (maybe only after 1916?). Also possible would be to give Entente a higher cap for 100% war effort, but have this unlock later in the game, like around 1916 as well. This would simulate how Germany was the first nation to really adapt to a fully efficient wartime economy, while France and England lagged behind on this, and Russia never really made it to that point. Another option would be to have USA somehow give more resources by convoy or whatever in 1916, contingent on how much they like the Entente.
Russia collapses as it should in our game, but it kinda collapses 1 year too early. Wolf suggested that a possible solution would be to have the Russian offensives (Brussilov, Kerenski & Lake Naroch, are there more?) trigger automatically under certain conditions. Or possibly make the randomness of their spawns a bit less random, sometimes you can get like all cavalry units on the lake naroch one. I don't know how the others ones are. I know you said offensives are a pain in the ass to code. So maybe give Russia a few extra army corps with the Stavka Reorganization and other recovery from Supply Crisis events. (I think currently 1 stavka already gives an elite army corps near Riga, but the Brussilove one might be bugged).
Also, not sure if this is possible, but to give a bit more accurate portrayal of how big Russia is, would it be possible to cut movement points of troops in half when on Russian hexes?
After almost a year of Italy in the war, I don't think failed offensive triggered even once. Though Italy hasn't been attacking overly much, I don't think it needs to be reduced even further.
Bugs:
BEF spawns at 10 strength when it hits land in France, no matter what strength they have in the harbor (already mentioned it, but just in case you missed it.)
Brussilov spawning on a homeguard in Kiev, rather than spawning with Infantry for Stavka reorganization
Conclusion:
This leaves me with the final discussion of morale and collapse point calculations. While in our game, you're right as to what caused the low morale of Entente nations (bad army kill/death ratio + loss of production sites) but I think it's important to look at what it doesn't show as well.
In the game vs Wolf, my year in 1914 was maybe one of the worst I've ever had in a game. I don't think I ever had German invasion repelled unless I went east with Moltke. France only lost 1 city and a few hexes along the border, and they should be in a very good state morale wise imo, instead they're at multiple collapse points and quite low morale.
This is because the calculations favor the attacking player imo, as well as the player with the tech advantage, which is the CP player. Initiative matters so much in this game. If you can dictate what and where to attack, you can kinda dictate how many losses you will inflict and will take. Entente is on the defense for almost the whole game, usually at least until 1917, except on the Ottoman fronts where they can be the attacker sometimes. Because from the start, the Entente has to defend, they usually have to train more reserve corps, which have a worse kill death ratio, leading to lower morale. I think Wolf trained too many reserve corps, I told him that already, but especially in the beginning, it's needed to throw those in front of German advance just to stop them. And the calculation doesn't account for that. 1 infantry killed is the same as 1 reserve killed. Because of the low morale and the collapse points, England and France are already suffering anti-war protests as early as 1915 and 1916, even though the war is actually going pretty decently for them, even though they are indeed taking more losses than they are inflicting, they are keeping Germany from reaching any of their war goals and keep them contained. This should be fine as Entente historically had the manpower advantage and could afford to lose more men than the Central Powers. I don't think it's necessary to change the calculation, even if you can. But maybe it would be good to try to compensate for this a bit by giving Entente nations a bit more morale through events or something else.
The same is kinda true for the loss of production calculation. Because the Entente are on the defense and the war is mainly fought on their turf, they lose more production site and thus lose more morale. I know this might mess with the annual morale check stuff, and I don't want Entente morale to be higher than CP morale, but I think historically, losing ground at the start of the war did not lower French or Russian morale that much, quite the opposite, people were so angry about it they were willing to fight on. The loss of production sites calculation again favors the attacker because the attacker isn't going to lose their own sites. France will lose a few guaranteed, and it was quite a big blow, as it was where a lot of industry was situated. But for Russia, the territory they lost even to Brest-Litovsk treaty was really only a small part of their empire. The game doesn't accurately portray how fucking huge Russia really is, so losing a few hexes disproportionally lowers their morale. This calculation could potentially be amended if it matters, so that it's less punishign for all nations, but otherwise again, it can be compensated through events.
Sorry if things aren't as clear, I'm a bit tired and can't turn it all into one cohesive post as I had planned. Let me know if anything needs further explanation.