diff --git a/core/.eslintignore b/core/.eslintignore
index 655ca871470f5d9431dcd4007ae7e64cadcef8a6..7f26db1ea68baffe399c961f72f7db8ca687d0ba 100644
--- a/core/.eslintignore
+++ b/core/.eslintignore
@@ -6,9 +6,6 @@ node_modules/**/*
 !modules/ckeditor5/js/ckeditor5_plugins/**/*.js
 modules/locale/tests/locale_test.es6.js
 !tests/Drupal/Nightwatch/**/*.js
-misc/polyfills/array.find.es6.js
-misc/polyfills/element.closest.es6.js
-misc/polyfills/object.assign.es6.js
 
 # Ignore deliberately malformed YAML files.
 modules/system/tests/fixtures/HtaccessTest/access_test.yml
diff --git a/core/assets/vendor/css-escape/css.escape.js b/core/assets/vendor/css-escape/css.escape.js
deleted file mode 100644
index 397cf88d318d7201bd282c5427253c418708ced8..0000000000000000000000000000000000000000
--- a/core/assets/vendor/css-escape/css.escape.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */
-;(function(root, factory) {
-	// https://github.com/umdjs/umd/blob/master/returnExports.js
-	if (typeof exports == 'object') {
-		// For Node.js.
-		module.exports = factory(root);
-	} else if (typeof define == 'function' && define.amd) {
-		// For AMD. Register as an anonymous module.
-		define([], factory.bind(root, root));
-	} else {
-		// For browser globals (not exposing the function separately).
-		factory(root);
-	}
-}(typeof global != 'undefined' ? global : this, function(root) {
-
-	if (root.CSS && root.CSS.escape) {
-		return root.CSS.escape;
-	}
-
-	// https://drafts.csswg.org/cssom/#serialize-an-identifier
-	var cssEscape = function(value) {
-		if (arguments.length == 0) {
-			throw new TypeError('`CSS.escape` requires an argument.');
-		}
-		var string = String(value);
-		var length = string.length;
-		var index = -1;
-		var codeUnit;
-		var result = '';
-		var firstCodeUnit = string.charCodeAt(0);
-		while (++index < length) {
-			codeUnit = string.charCodeAt(index);
-			// Note: there’s no need to special-case astral symbols, surrogate
-			// pairs, or lone surrogates.
-
-			// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER
-			// (U+FFFD).
-			if (codeUnit == 0x0000) {
-				result += '\uFFFD';
-				continue;
-			}
-
-			if (
-				// If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
-				// U+007F, […]
-				(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
-				// If the character is the first character and is in the range [0-9]
-				// (U+0030 to U+0039), […]
-				(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
-				// If the character is the second character and is in the range [0-9]
-				// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
-				(
-					index == 1 &&
-					codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
-					firstCodeUnit == 0x002D
-				)
-			) {
-				// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point
-				result += '\\' + codeUnit.toString(16) + ' ';
-				continue;
-			}
-
-			if (
-				// If the character is the first character and is a `-` (U+002D), and
-				// there is no second character, […]
-				index == 0 &&
-				length == 1 &&
-				codeUnit == 0x002D
-			) {
-				result += '\\' + string.charAt(index);
-				continue;
-			}
-
-			// If the character is not handled by one of the above rules and is
-			// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
-			// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
-			// U+005A), or [a-z] (U+0061 to U+007A), […]
-			if (
-				codeUnit >= 0x0080 ||
-				codeUnit == 0x002D ||
-				codeUnit == 0x005F ||
-				codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
-				codeUnit >= 0x0041 && codeUnit <= 0x005A ||
-				codeUnit >= 0x0061 && codeUnit <= 0x007A
-			) {
-				// the character itself
-				result += string.charAt(index);
-				continue;
-			}
-
-			// Otherwise, the escaped character.
-			// https://drafts.csswg.org/cssom/#escape-a-character
-			result += '\\' + string.charAt(index);
-
-		}
-		return result;
-	};
-
-	if (!root.CSS) {
-		root.CSS = {};
-	}
-
-	root.CSS.escape = cssEscape;
-	return cssEscape;
-
-}));
diff --git a/core/assets/vendor/es6-promise/es6-promise.auto.min.js b/core/assets/vendor/es6-promise/es6-promise.auto.min.js
deleted file mode 100644
index 5a44a3b086e844a7602e099cc008e75f1f49279c..0000000000000000000000000000000000000000
--- a/core/assets/vendor/es6-promise/es6-promise.auto.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){W=t}function r(t){z=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof U?function(){U(a)}:c()}function s(){var t=0,e=new H(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<N;t+=2){var e=Q[t],n=Q[t+1];e(n),Q[t]=void 0,Q[t+1]=void 0}N=0}function f(){try{var t=Function("return this")().require("vertx");return U=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[V]&&x(r);var o=n._state;if(o){var i=arguments[o-1];z(function(){return T(o,r,i,n._result)})}else j(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return w(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function y(t,e,n){z(function(t){var r=!1,o=_(n,e,function(n){r||(r=!0,e!==n?w(t,n):A(t,n))},function(e){r||(r=!0,S(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,S(t,o))},t)}function m(t,e){e._state===Z?A(t,e._result):e._state===$?S(t,e._result):j(e,void 0,function(e){return w(t,e)},function(e){return S(t,e)})}function b(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?m(t,n):void 0===r?A(t,n):e(r)?y(t,n,r):A(t,n)}function w(e,n){if(e===n)S(e,v());else if(t(n)){var r=void 0;try{r=n.then}catch(o){return void S(e,o)}b(e,n,r)}else A(e,n)}function g(t){t._onerror&&t._onerror(t._result),E(t)}function A(t,e){t._state===X&&(t._result=e,t._state=Z,0!==t._subscribers.length&&z(E,t))}function S(t,e){t._state===X&&(t._state=$,t._result=e,z(g,t))}function j(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+Z]=n,o[i+$]=r,0===i&&t._state&&z(E,t)}function E(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?T(n,r,o,i):o(i);t._subscribers.length=0}}function T(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=!0;if(i){try{s=r(o)}catch(a){c=!1,u=a}if(n===s)return void S(n,d())}else s=o;n._state!==X||(i&&c?w(n,s):c===!1?S(n,u):t===Z?A(n,s):t===$&&S(n,s))}function M(t,e){try{e(function(e){w(t,e)},function(e){S(t,e)})}catch(n){S(t,n)}}function P(){return tt++}function x(t){t[V]=tt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function C(){return new Error("Array Methods must be provided an Array")}function O(t){return new et(this,t).promise}function k(t){var e=this;return new e(L(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function F(t){var e=this,n=new e(p);return S(n,t),n}function Y(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function q(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function D(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=nt}var K=void 0;K=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var L=K,N=0,U=void 0,W=void 0,z=function(t,e){Q[N]=t,Q[N+1]=e,N+=2,2===N&&(W?W(a):R())},B="undefined"!=typeof window?window:void 0,G=B||{},H=G.MutationObserver||G.WebKitMutationObserver,I="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),J="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Q=new Array(1e3),R=void 0;R=I?o():H?s():J?u():void 0===B&&"function"==typeof require?f():c();var V=Math.random().toString(36).substring(2),X=void 0,Z=1,$=2,tt=0,et=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[V]||x(this.promise),L(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?A(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&A(this.promise,this._result))):S(this.promise,C())}return t.prototype._enumerate=function(t){for(var e=0;this._state===X&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=void 0,i=void 0,s=!1;try{o=t.then}catch(u){s=!0,i=u}if(o===l&&t._state!==X)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===nt){var c=new n(p);s?S(c,i):b(c,t,o),this._willSettleAt(c,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===X&&(this._remaining--,t===$?S(r,n):this._result[e]=n),0===this._remaining&&A(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;j(t,void 0,function(t){return n._settledAt(Z,e,t)},function(t){return n._settledAt($,e,t)})},t}(),nt=function(){function t(e){this[V]=P(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&Y(),this instanceof t?M(this,e):q())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var n=this,r=n.constructor;return e(t)?n.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})}):n.then(t,t)},t}();return nt.prototype.then=l,nt.all=O,nt.race=k,nt.resolve=h,nt.reject=F,nt._setScheduler=n,nt._setAsap=r,nt._asap=z,nt.polyfill=D,nt.Promise=nt,nt.polyfill(),nt});
\ No newline at end of file
diff --git a/core/assets/vendor/es6-promise/es6-promise.auto.min.map b/core/assets/vendor/es6-promise/es6-promise.auto.min.map
deleted file mode 100644
index 1d2a119dad9c47b7f6c0a452f99e53d9944df152..0000000000000000000000000000000000000000
--- a/core/assets/vendor/es6-promise/es6-promise.auto.min.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.8+1e68dce6\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    var then = void 0;\n    try {\n      then = value.then;\n    } catch (error) {\n      reject(promise, error);\n      return;\n    }\n    handleMaybeThenable(promise, value, then);\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = true;\n\n  if (hasCallback) {\n    try {\n      value = callback(detail);\n    } catch (e) {\n      succeeded = false;\n      error = e;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (succeeded === false) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = void 0;\n      var error = void 0;\n      var didError = false;\n      try {\n        _then = entry.then;\n      } catch (e) {\n        didError = true;\n        error = e;\n      }\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        if (didError) {\n          reject(promise, error);\n        } else {\n          handleMaybeThenable(promise, entry, _then);\n        }\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (isFunction(callback)) {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.auto.min.js"}
\ No newline at end of file
diff --git a/core/assets/vendor/picturefill/picturefill.min.js b/core/assets/vendor/picturefill/picturefill.min.js
deleted file mode 100644
index 9df7198d30480847153bf2a4cd693ea59a75c991..0000000000000000000000000000000000000000
--- a/core/assets/vendor/picturefill/picturefill.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! picturefill - v3.0.2 - 2016-02-12
- * https://scottjehl.github.io/picturefill/
- * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT
- */
-!function(a){var b=navigator.userAgent;a.HTMLPictureElement&&/ecko/.test(b)&&b.match(/rv\:(\d+)/)&&RegExp.$1<45&&addEventListener("resize",function(){var b,c=document.createElement("source"),d=function(a){var b,d,e=a.parentNode;"PICTURE"===e.nodeName.toUpperCase()?(b=c.cloneNode(),e.insertBefore(b,e.firstElementChild),setTimeout(function(){e.removeChild(b)})):(!a._pfLastSize||a.offsetWidth>a._pfLastSize)&&(a._pfLastSize=a.offsetWidth,d=a.sizes,a.sizes+=",100vw",setTimeout(function(){a.sizes=d}))},e=function(){var a,b=document.querySelectorAll("picture > img, img[srcset][sizes]");for(a=0;a<b.length;a++)d(b[a])},f=function(){clearTimeout(b),b=setTimeout(e,99)},g=a.matchMedia&&matchMedia("(orientation: landscape)"),h=function(){f(),g&&g.addListener&&g.addListener(f)};return c.srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",/^[c|i]|d$/.test(document.readyState||"")?h():document.addEventListener("DOMContentLoaded",h),f}())}(window),function(a,b,c){"use strict";function d(a){return" "===a||"	"===a||"\n"===a||"\f"===a||"\r"===a}function e(b,c){var d=new a.Image;return d.onerror=function(){A[b]=!1,ba()},d.onload=function(){A[b]=1===d.width,ba()},d.src=c,"pending"}function f(){M=!1,P=a.devicePixelRatio,N={},O={},s.DPR=P||1,Q.width=Math.max(a.innerWidth||0,z.clientWidth),Q.height=Math.max(a.innerHeight||0,z.clientHeight),Q.vw=Q.width/100,Q.vh=Q.height/100,r=[Q.height,Q.width,P].join("-"),Q.em=s.getEmValue(),Q.rem=Q.em}function g(a,b,c,d){var e,f,g,h;return"saveData"===B.algorithm?a>2.7?h=c+1:(f=b-c,e=Math.pow(a-.6,1.5),g=f*e,d&&(g+=.1*e),h=a+g):h=c>1?Math.sqrt(a*b):a,h>c}function h(a){var b,c=s.getSet(a),d=!1;"pending"!==c&&(d=r,c&&(b=s.setRes(c),s.applySetCandidate(b,a))),a[s.ns].evaled=d}function i(a,b){return a.res-b.res}function j(a,b,c){var d;return!c&&b&&(c=a[s.ns].sets,c=c&&c[c.length-1]),d=k(b,c),d&&(b=s.makeUrl(b),a[s.ns].curSrc=b,a[s.ns].curCan=d,d.res||aa(d,d.set.sizes)),d}function k(a,b){var c,d,e;if(a&&b)for(e=s.parseSet(b),a=s.makeUrl(a),c=0;c<e.length;c++)if(a===s.makeUrl(e[c].url)){d=e[c];break}return d}function l(a,b){var c,d,e,f,g=a.getElementsByTagName("source");for(c=0,d=g.length;d>c;c++)e=g[c],e[s.ns]=!0,f=e.getAttribute("srcset"),f&&b.push({srcset:f,media:e.getAttribute("media"),type:e.getAttribute("type"),sizes:e.getAttribute("sizes")})}function m(a,b){function c(b){var c,d=b.exec(a.substring(m));return d?(c=d[0],m+=c.length,c):void 0}function e(){var a,c,d,e,f,i,j,k,l,m=!1,o={};for(e=0;e<h.length;e++)f=h[e],i=f[f.length-1],j=f.substring(0,f.length-1),k=parseInt(j,10),l=parseFloat(j),X.test(j)&&"w"===i?((a||c)&&(m=!0),0===k?m=!0:a=k):Y.test(j)&&"x"===i?((a||c||d)&&(m=!0),0>l?m=!0:c=l):X.test(j)&&"h"===i?((d||c)&&(m=!0),0===k?m=!0:d=k):m=!0;m||(o.url=g,a&&(o.w=a),c&&(o.d=c),d&&(o.h=d),d||c||a||(o.d=1),1===o.d&&(b.has1x=!0),o.set=b,n.push(o))}function f(){for(c(T),i="",j="in descriptor";;){if(k=a.charAt(m),"in descriptor"===j)if(d(k))i&&(h.push(i),i="",j="after descriptor");else{if(","===k)return m+=1,i&&h.push(i),void e();if("("===k)i+=k,j="in parens";else{if(""===k)return i&&h.push(i),void e();i+=k}}else if("in parens"===j)if(")"===k)i+=k,j="in descriptor";else{if(""===k)return h.push(i),void e();i+=k}else if("after descriptor"===j)if(d(k));else{if(""===k)return void e();j="in descriptor",m-=1}m+=1}}for(var g,h,i,j,k,l=a.length,m=0,n=[];;){if(c(U),m>=l)return n;g=c(V),h=[],","===g.slice(-1)?(g=g.replace(W,""),e()):f()}}function n(a){function b(a){function b(){f&&(g.push(f),f="")}function c(){g[0]&&(h.push(g),g=[])}for(var e,f="",g=[],h=[],i=0,j=0,k=!1;;){if(e=a.charAt(j),""===e)return b(),c(),h;if(k){if("*"===e&&"/"===a[j+1]){k=!1,j+=2,b();continue}j+=1}else{if(d(e)){if(a.charAt(j-1)&&d(a.charAt(j-1))||!f){j+=1;continue}if(0===i){b(),j+=1;continue}e=" "}else if("("===e)i+=1;else if(")"===e)i-=1;else{if(","===e){b(),c(),j+=1;continue}if("/"===e&&"*"===a.charAt(j+1)){k=!0,j+=2;continue}}f+=e,j+=1}}}function c(a){return k.test(a)&&parseFloat(a)>=0?!0:l.test(a)?!0:"0"===a||"-0"===a||"+0"===a?!0:!1}var e,f,g,h,i,j,k=/^(?:[+-]?[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i,l=/^calc\((?:[0-9a-z \.\+\-\*\/\(\)]+)\)$/i;for(f=b(a),g=f.length,e=0;g>e;e++)if(h=f[e],i=h[h.length-1],c(i)){if(j=i,h.pop(),0===h.length)return j;if(h=h.join(" "),s.matchesMedia(h))return j}return"100vw"}b.createElement("picture");var o,p,q,r,s={},t=!1,u=function(){},v=b.createElement("img"),w=v.getAttribute,x=v.setAttribute,y=v.removeAttribute,z=b.documentElement,A={},B={algorithm:""},C="data-pfsrc",D=C+"set",E=navigator.userAgent,F=/rident/.test(E)||/ecko/.test(E)&&E.match(/rv\:(\d+)/)&&RegExp.$1>35,G="currentSrc",H=/\s+\+?\d+(e\d+)?w/,I=/(\([^)]+\))?\s*(.+)/,J=a.picturefillCFG,K="position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)",L="font-size:100%!important;",M=!0,N={},O={},P=a.devicePixelRatio,Q={px:1,"in":96},R=b.createElement("a"),S=!1,T=/^[ \t\n\r\u000c]+/,U=/^[, \t\n\r\u000c]+/,V=/^[^ \t\n\r\u000c]+/,W=/[,]+$/,X=/^\d+$/,Y=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,Z=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)},$=function(a){var b={};return function(c){return c in b||(b[c]=a(c)),b[c]}},_=function(){var a=/^([\d\.]+)(em|vw|px)$/,b=function(){for(var a=arguments,b=0,c=a[0];++b in a;)c=c.replace(a[b],a[++b]);return c},c=$(function(a){return"return "+b((a||"").toLowerCase(),/\band\b/g,"&&",/,/g,"||",/min-([a-z-\s]+):/g,"e.$1>=",/max-([a-z-\s]+):/g,"e.$1<=",/calc([^)]+)/g,"($1)",/(\d+[\.]*[\d]*)([a-z]+)/g,"($1 * e.$2)",/^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi,"")+";"});return function(b,d){var e;if(!(b in N))if(N[b]=!1,d&&(e=b.match(a)))N[b]=e[1]*Q[e[2]];else try{N[b]=new Function("e",c(b))(Q)}catch(f){}return N[b]}}(),aa=function(a,b){return a.w?(a.cWidth=s.calcListLength(b||"100vw"),a.res=a.w/a.cWidth):a.res=a.d,a},ba=function(a){if(t){var c,d,e,f=a||{};if(f.elements&&1===f.elements.nodeType&&("IMG"===f.elements.nodeName.toUpperCase()?f.elements=[f.elements]:(f.context=f.elements,f.elements=null)),c=f.elements||s.qsa(f.context||b,f.reevaluate||f.reselect?s.sel:s.selShort),e=c.length){for(s.setupRun(f),S=!0,d=0;e>d;d++)s.fillImg(c[d],f);s.teardownRun(f)}}};o=a.console&&console.warn?function(a){console.warn(a)}:u,G in v||(G="src"),A["image/jpeg"]=!0,A["image/gif"]=!0,A["image/png"]=!0,A["image/svg+xml"]=b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"),s.ns=("pf"+(new Date).getTime()).substr(0,9),s.supSrcset="srcset"in v,s.supSizes="sizes"in v,s.supPicture=!!a.HTMLPictureElement,s.supSrcset&&s.supPicture&&!s.supSizes&&!function(a){v.srcset="data:,a",a.src="data:,a",s.supSrcset=v.complete===a.complete,s.supPicture=s.supSrcset&&s.supPicture}(b.createElement("img")),s.supSrcset&&!s.supSizes?!function(){var a="data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==",c="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",d=b.createElement("img"),e=function(){var a=d.width;2===a&&(s.supSizes=!0),q=s.supSrcset&&!s.supSizes,t=!0,setTimeout(ba)};d.onload=e,d.onerror=e,d.setAttribute("sizes","9px"),d.srcset=c+" 1w,"+a+" 9w",d.src=c}():t=!0,s.selShort="picture>img,img[srcset]",s.sel=s.selShort,s.cfg=B,s.DPR=P||1,s.u=Q,s.types=A,s.setSize=u,s.makeUrl=$(function(a){return R.href=a,R.href}),s.qsa=function(a,b){return"querySelector"in a?a.querySelectorAll(b):[]},s.matchesMedia=function(){return a.matchMedia&&(matchMedia("(min-width: 0.1em)")||{}).matches?s.matchesMedia=function(a){return!a||matchMedia(a).matches}:s.matchesMedia=s.mMQ,s.matchesMedia.apply(this,arguments)},s.mMQ=function(a){return a?_(a):!0},s.calcLength=function(a){var b=_(a,!0)||!1;return 0>b&&(b=!1),b},s.supportsType=function(a){return a?A[a]:!0},s.parseSize=$(function(a){var b=(a||"").match(I);return{media:b&&b[1],length:b&&b[2]}}),s.parseSet=function(a){return a.cands||(a.cands=m(a.srcset,a)),a.cands},s.getEmValue=function(){var a;if(!p&&(a=b.body)){var c=b.createElement("div"),d=z.style.cssText,e=a.style.cssText;c.style.cssText=K,z.style.cssText=L,a.style.cssText=L,a.appendChild(c),p=c.offsetWidth,a.removeChild(c),p=parseFloat(p,10),z.style.cssText=d,a.style.cssText=e}return p||16},s.calcListLength=function(a){if(!(a in O)||B.uT){var b=s.calcLength(n(a));O[a]=b?b:Q.width}return O[a]},s.setRes=function(a){var b;if(a){b=s.parseSet(a);for(var c=0,d=b.length;d>c;c++)aa(b[c],a.sizes)}return b},s.setRes.res=aa,s.applySetCandidate=function(a,b){if(a.length){var c,d,e,f,h,k,l,m,n,o=b[s.ns],p=s.DPR;if(k=o.curSrc||b[G],l=o.curCan||j(b,k,a[0].set),l&&l.set===a[0].set&&(n=F&&!b.complete&&l.res-.1>p,n||(l.cached=!0,l.res>=p&&(h=l))),!h)for(a.sort(i),f=a.length,h=a[f-1],d=0;f>d;d++)if(c=a[d],c.res>=p){e=d-1,h=a[e]&&(n||k!==s.makeUrl(c.url))&&g(a[e].res,c.res,p,a[e].cached)?a[e]:c;break}h&&(m=s.makeUrl(h.url),o.curSrc=m,o.curCan=h,m!==k&&s.setSrc(b,h),s.setSize(b))}},s.setSrc=function(a,b){var c;a.src=b.url,"image/svg+xml"===b.set.type&&(c=a.style.width,a.style.width=a.offsetWidth+1+"px",a.offsetWidth+1&&(a.style.width=c))},s.getSet=function(a){var b,c,d,e=!1,f=a[s.ns].sets;for(b=0;b<f.length&&!e;b++)if(c=f[b],c.srcset&&s.matchesMedia(c.media)&&(d=s.supportsType(c.type))){"pending"===d&&(c=d),e=c;break}return e},s.parseSets=function(a,b,d){var e,f,g,h,i=b&&"PICTURE"===b.nodeName.toUpperCase(),j=a[s.ns];(j.src===c||d.src)&&(j.src=w.call(a,"src"),j.src?x.call(a,C,j.src):y.call(a,C)),(j.srcset===c||d.srcset||!s.supSrcset||a.srcset)&&(e=w.call(a,"srcset"),j.srcset=e,h=!0),j.sets=[],i&&(j.pic=!0,l(b,j.sets)),j.srcset?(f={srcset:j.srcset,sizes:w.call(a,"sizes")},j.sets.push(f),g=(q||j.src)&&H.test(j.srcset||""),g||!j.src||k(j.src,f)||f.has1x||(f.srcset+=", "+j.src,f.cands.push({url:j.src,d:1,set:f}))):j.src&&j.sets.push({srcset:j.src,sizes:null}),j.curCan=null,j.curSrc=c,j.supported=!(i||f&&!s.supSrcset||g&&!s.supSizes),h&&s.supSrcset&&!j.supported&&(e?(x.call(a,D,e),a.srcset=""):y.call(a,D)),j.supported&&!j.srcset&&(!j.src&&a.src||a.src!==s.makeUrl(j.src))&&(null===j.src?a.removeAttribute("src"):a.src=j.src),j.parsed=!0},s.fillImg=function(a,b){var c,d=b.reselect||b.reevaluate;a[s.ns]||(a[s.ns]={}),c=a[s.ns],(d||c.evaled!==r)&&((!c.parsed||b.reevaluate)&&s.parseSets(a,a.parentNode,b),c.supported?c.evaled=r:h(a))},s.setupRun=function(){(!S||M||P!==a.devicePixelRatio)&&f()},s.supPicture?(ba=u,s.fillImg=u):!function(){var c,d=a.attachEvent?/d$|^c/:/d$|^c|^i/,e=function(){var a=b.readyState||"";f=setTimeout(e,"loading"===a?200:999),b.body&&(s.fillImgs(),c=c||d.test(a),c&&clearTimeout(f))},f=setTimeout(e,b.body?9:99),g=function(a,b){var c,d,e=function(){var f=new Date-d;b>f?c=setTimeout(e,b-f):(c=null,a())};return function(){d=new Date,c||(c=setTimeout(e,b))}},h=z.clientHeight,i=function(){M=Math.max(a.innerWidth||0,z.clientWidth)!==Q.width||z.clientHeight!==h,h=z.clientHeight,M&&s.fillImgs()};Z(a,"resize",g(i,99)),Z(b,"readystatechange",e)}(),s.picturefill=ba,s.fillImgs=ba,s.teardownRun=u,ba._=s,a.picturefillCFG={pf:s,push:function(a){var b=a.shift();"function"==typeof s[b]?s[b].apply(s,a):(B[b]=a[0],S&&s.fillImgs({reselect:!0}))}};for(;J&&J.length;)a.picturefillCFG.push(J.shift());a.picturefill=ba,"object"==typeof module&&"object"==typeof module.exports?module.exports=ba:"function"==typeof define&&define.amd&&define("picturefill",function(){return ba}),s.supPicture||(A["image/webp"]=e("image/webp","data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="))}(window,document);
\ No newline at end of file
diff --git a/core/core.libraries.yml b/core/core.libraries.yml
index 88f64c5e9554be401b67eceea645f72cda665c2f..ef0fcd3d85f9b9c9e19f82ade0949cf10e5ced38 100644
--- a/core/core.libraries.yml
+++ b/core/core.libraries.yml
@@ -311,16 +311,6 @@ ckeditor5.translations:
     # are not allowed.
     assets/vendor/ckeditor5/translation.js: {}
 
-css.escape:
-  remote: https://github.com/mathiasbynens/CSS.escape
-  version: "1.5.1"
-  license:
-    name: MIT
-    url: https://raw.githubusercontent.com/mathiasbynens/CSS.escape/v1.5.1/LICENSE-MIT.txt
-    gpl-compatible: true
-  js:
-    assets/vendor/css-escape/css.escape.js: { weight: -20 }
-
 drupal:
   version: VERSION
   js:
@@ -372,7 +362,6 @@ drupal.ajax:
     - core/jquery
     - core/drupal
     - core/drupalSettings
-    - core/drupal.nodelist.foreach
     - core/drupal.progress
     - core/once
     - core/tabbable
@@ -437,17 +426,6 @@ drupal.autocomplete:
     - core/tabbable.jquery.shim
     - core/drupal.jquery.position
 
-
-drupal.array.find:
-  version: VERSION
-  js:
-    misc/polyfills/array.find.js: { weight: -20 }
-
-drupal.array.includes:
-  version: VERSION
-  js:
-    misc/polyfills/array.includes.js: { weight: -20 }
-
 drupal.batch:
   version: VERSION
   js:
@@ -480,11 +458,6 @@ drupal.collapse:
     - core/drupal.form
     - core/once
 
-drupal.customevent:
-  version: VERSION
-  js:
-    misc/polyfills/customevent.js: { weight: -20 }
-
 drupal.debounce:
   version: VERSION
   js:
@@ -581,18 +554,6 @@ drupal.dropbutton:
     - core/drupalSettings
     - core/once
 
-drupal.element.closest:
-  version: VERSION
-  js:
-    misc/polyfills/element.closest.js: { weight: -20 }
-  dependencies:
-    - core/drupal.element.matches
-
-drupal.element.matches:
-  version: VERSION
-  js:
-    misc/polyfills/element.matches.js: { weight: -20 }
-
 drupal.entity-form:
   version: VERSION
   js:
@@ -629,16 +590,6 @@ drupal.message:
     - core/drupal
     - core/drupal.announce
 
-drupal.nodelist.foreach:
-  version: VERSION
-  js:
-    misc/polyfills/nodelist.foreach.js: { weight: -20 }
-
-drupal.object.assign:
-  version: VERSION
-  js:
-    misc/polyfills/object.assign.js: { weight: -20 }
-
 drupal.progress:
   version: VERSION
   js:
@@ -658,11 +609,6 @@ drupal.states:
     - core/drupalSettings
     - core/once
 
-drupal.string.includes:
-  version: VERSION
-  js:
-    misc/polyfills/string.includes.js: { weight: -20 }
-
 drupal.tabbingmanager:
   version: VERSION
   js:
@@ -718,7 +664,6 @@ drupal.timezone:
   js:
     misc/timezone.js: {}
   dependencies:
-    - core/drupal.nodelist.foreach
     - core/jquery
     - core/once
     - core/drupal
@@ -746,15 +691,6 @@ drupal.vertical-tabs:
     - core/drupalSettings
     - core/drupal.form
 
-es6-promise:
-  version: "4.2.8"
-  license:
-    name: MIT
-    url: https://raw.githubusercontent.com/stefanpenner/es6-promise/v4.2.8/LICENSE
-    gpl-compatible: true
-  js:
-    assets/vendor/es6-promise/es6-promise.auto.min.js: { weight: -20, minified: true }
-
 jquery:
   remote: https://github.com/jquery/jquery
   version: "3.6.0"
@@ -849,18 +785,6 @@ once:
     gpl-compatible: true
   js:
     assets/vendor/once/once.min.js: { weight: -19, minified: true }
-  dependencies:
-    - core/drupal.element.matches
-
-picturefill:
-  remote: https://github.com/scottjehl/picturefill
-  version: "3.0.3"
-  license:
-    name: MIT
-    url: https://raw.githubusercontent.com/scottjehl/picturefill/3.0.3/LICENSE
-    gpl-compatible: true
-  js:
-    assets/vendor/picturefill/picturefill.min.js: { weight: -10, minified: true }
 
 popperjs:
   version: "2.11.5"
@@ -870,10 +794,6 @@ popperjs:
     gpl-compatible: true
   js:
     assets/vendor/popperjs/popper.min.js: { minified: true }
-  dependencies:
-    - core/drupal.array.find
-    - core/es6-promise
-    - core/drupal.object.assign
 
 sortable:
   remote: https://github.com/SortableJS/Sortable
@@ -894,8 +814,6 @@ tabbable:
     gpl-compatible: true
   js:
     assets/vendor/tabbable/index.umd.min.js: { weight: -1, minified: true }
-  dependencies:
-    - core/css.escape
 
 tabbable.jquery.shim:
   version: VERSION
diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt
index 73100397aeffe4acd2ccafef90910bef45a23274..a604621068cef7a2aec71746ede7438e59268cbb 100644
--- a/core/misc/cspell/dictionary.txt
+++ b/core/misc/cspell/dictionary.txt
@@ -270,7 +270,6 @@ ctund
 cucurbitaceae
 curle
 curlopt
-customevent
 customly
 customrequest
 cweagans
@@ -292,6 +291,7 @@ dblog
 dbtng
 dburl
 ddev
+dealerdirect
 deckard
 deconstructor
 deduplicated
@@ -486,7 +486,6 @@ fixnull
 flickr
 flipfit
 floatingspace
-fmod
 foaf
 foat
 focusring
@@ -561,7 +560,6 @@ hasher
 hashmarks
 hateoas
 hbox
-heartz
 heke
 heroless
 herpderp
@@ -584,6 +582,7 @@ hostnames
 hreflang
 hreflangs
 hrefs
+htdocs
 htkey
 htmlcorrector
 htmlto
@@ -770,7 +769,7 @@ metapackage
 metapackages
 metatag
 metatags
-meφω
+meΦΩ
 mglaman
 miaus
 middlewares
@@ -966,6 +965,7 @@ permissionless
 persistable
 phpass
 phpcbf
+phpcodesniffer
 phpcs
 phpdocumentor
 phpfile
@@ -976,7 +976,6 @@ phpunit
 phpunit's
 pianura
 pickable
-picturefill
 pingback
 pioggia
 pjpeg
@@ -1198,6 +1197,7 @@ skiptags
 skos
 skynet
 slatkin
+slevomat
 sloopal
 smacss
 smalldatetime
@@ -1414,8 +1414,6 @@ toplevel
 topop
 torder
 totalcount
-totranslate
-touchevent
 touchevents
 tparams
 trackback
@@ -1648,7 +1646,8 @@ zwei
 zwjhek
 zxvf
 zzgroup
+Èxample
+Ãœber
 åwesome
-èxample
 über
-ȅchȏ
+Ȅchȏ
diff --git a/core/misc/polyfills/array.find.es6.js b/core/misc/polyfills/array.find.es6.js
deleted file mode 100644
index e24f3a3c6898fbac8c96d95423dfe91d650d3d63..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/array.find.es6.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * @file
- * Provides a polyfill for Array.find().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (!Array.prototype.find) {
-  Object.defineProperty(Array.prototype, 'find', {
-    value: function (predicate) {
-      // 1. Let O be ? ToObject(this value).
-      if (this == null) {
-        throw TypeError('"this" is null or not defined');
-      }
-
-      var o = Object(this);
-
-      // 2. Let len be ? ToLength(? Get(O, "length")).
-      var len = o.length >>> 0;
-
-      // 3. If IsCallable(predicate) is false, throw a TypeError
-      // exception.
-      if (typeof predicate !== 'function') {
-        throw TypeError('predicate must be a function');
-      }
-
-      // 4. If thisArg was supplied, let T be thisArg; else let T be
-      // undefined.
-      var thisArg = arguments[1];
-
-      // 5. Let k be 0.
-      var k = 0;
-
-      // 6. Repeat, while k < len
-      while (k < len) {
-        // a. Let Pk be ! ToString(k).
-        // b. Let kValue be ? Get(O, Pk).
-        // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue,
-        //    k, O »)).
-        // d. If testResult is true, return kValue.
-        var kValue = o[k];
-        if (predicate.call(thisArg, kValue, k, o)) {
-          return kValue;
-        }
-        // e. Increase k by 1.
-        k++;
-      }
-
-      // 7. Return undefined.
-      return undefined;
-    },
-    configurable: true,
-    writable: true,
-  });
-}
diff --git a/core/misc/polyfills/array.find.js b/core/misc/polyfills/array.find.js
deleted file mode 100644
index e2b9706c718f2017dc794966903f88ccf093cc32..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/array.find.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (!Array.prototype.find) {
-  Object.defineProperty(Array.prototype, 'find', {
-    value: function (predicate) {
-      if (this == null) {
-        throw TypeError('"this" is null or not defined');
-      }
-
-      var o = Object(this);
-      var len = o.length >>> 0;
-
-      if (typeof predicate !== 'function') {
-        throw TypeError('predicate must be a function');
-      }
-
-      var thisArg = arguments[1];
-      var k = 0;
-
-      while (k < len) {
-        var kValue = o[k];
-
-        if (predicate.call(thisArg, kValue, k, o)) {
-          return kValue;
-        }
-
-        k++;
-      }
-
-      return undefined;
-    },
-    configurable: true,
-    writable: true
-  });
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/array.includes.es6.js b/core/misc/polyfills/array.includes.es6.js
deleted file mode 100644
index afb64f16fa883e3b9bd9736d1b593ce241ec8fcc..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/array.includes.es6.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file
- * Provides a polyfill for Array.includes().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has based on MDN Web Docs code samples. Code samples in the MDN Web Docs
- * are licensed under CC0.
- *
- * @see https://web.archive.org/web/20161012020930/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (!Array.prototype.includes) {
-  // eslint-disable-next-line no-extend-native
-  Array.prototype.includes = function (searchElement) {
-    if (this == null) {
-      throw new TypeError(
-        'Array.prototype.includes called on null or undefined',
-      );
-    }
-
-    const O = Object(this);
-    const len = parseInt(O.length, 10) || 0;
-    if (len === 0) {
-      return false;
-    }
-    // eslint-disable-next-line prefer-rest-params
-    const n = parseInt(arguments[1], 10) || 0;
-    let k;
-    if (n >= 0) {
-      k = n;
-    } else {
-      k = len + n;
-      if (k < 0) {
-        k = 0;
-      }
-    }
-    let currentElement;
-    while (k < len) {
-      currentElement = O[k];
-      if (
-        searchElement === currentElement ||
-        // eslint-disable-next-line no-self-compare
-        (searchElement !== searchElement && currentElement !== currentElement)
-      ) {
-        // NaN !== NaN
-        return true;
-      }
-      k += 1;
-    }
-    return false;
-  };
-}
diff --git a/core/misc/polyfills/array.includes.js b/core/misc/polyfills/array.includes.js
deleted file mode 100644
index 5943b58c83212c0a5f5a1ee8811cab3582324c3e..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/array.includes.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (!Array.prototype.includes) {
-  Array.prototype.includes = function (searchElement) {
-    if (this == null) {
-      throw new TypeError('Array.prototype.includes called on null or undefined');
-    }
-
-    const O = Object(this);
-    const len = parseInt(O.length, 10) || 0;
-
-    if (len === 0) {
-      return false;
-    }
-
-    const n = parseInt(arguments[1], 10) || 0;
-    let k;
-
-    if (n >= 0) {
-      k = n;
-    } else {
-      k = len + n;
-
-      if (k < 0) {
-        k = 0;
-      }
-    }
-
-    let currentElement;
-
-    while (k < len) {
-      currentElement = O[k];
-
-      if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {
-        return true;
-      }
-
-      k += 1;
-    }
-
-    return false;
-  };
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/customevent.es6.js b/core/misc/polyfills/customevent.es6.js
deleted file mode 100644
index be85a56cb83392f7bd2fdcaa6ad9c8ef0d2d06b1..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/customevent.es6.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * @file
- * Provides a polyfill for CustomEvent.
- *
- * This is needed for Internet Explorer 11.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-// eslint-disable-next-line func-names
-(function () {
-  if (typeof window.CustomEvent === 'function') return false;
-
-  function CustomEvent(event, params) {
-    params = params || { bubbles: false, cancelable: false, detail: null };
-    const evt = document.createEvent('CustomEvent');
-    evt.initCustomEvent(
-      event,
-      params.bubbles,
-      params.cancelable,
-      params.detail,
-    );
-    return evt;
-  }
-
-  window.CustomEvent = CustomEvent;
-})();
diff --git a/core/misc/polyfills/customevent.js b/core/misc/polyfills/customevent.js
deleted file mode 100644
index 0e2910a4f4e2cca6913c49966a528c75f6c63778..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/customevent.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-(function () {
-  if (typeof window.CustomEvent === 'function') return false;
-
-  function CustomEvent(event, params) {
-    params = params || {
-      bubbles: false,
-      cancelable: false,
-      detail: null
-    };
-    const evt = document.createEvent('CustomEvent');
-    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-    return evt;
-  }
-
-  window.CustomEvent = CustomEvent;
-})();
\ No newline at end of file
diff --git a/core/misc/polyfills/element.closest.es6.js b/core/misc/polyfills/element.closest.es6.js
deleted file mode 100644
index d183b83393c728d37cf90d7e8fed688123fa3969..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/element.closest.es6.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * @file
- * Provides a polyfill for Element.prototype.closest().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (!Element.prototype.closest) {
-  Element.prototype.closest = function (s) {
-    var el = this;
-
-    do {
-      if (Element.prototype.matches.call(el, s)) return el;
-      el = el.parentElement || el.parentNode;
-    } while (el !== null && el.nodeType === 1);
-    return null;
-  };
-}
diff --git a/core/misc/polyfills/element.closest.js b/core/misc/polyfills/element.closest.js
deleted file mode 100644
index 3b4c0335032bb6690c18b83fe037d5af8a94cb23..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/element.closest.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (!Element.prototype.closest) {
-  Element.prototype.closest = function (s) {
-    var el = this;
-
-    do {
-      if (Element.prototype.matches.call(el, s)) return el;
-      el = el.parentElement || el.parentNode;
-    } while (el !== null && el.nodeType === 1);
-
-    return null;
-  };
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/element.matches.es6.js b/core/misc/polyfills/element.matches.es6.js
deleted file mode 100644
index 0b456325a737b15e7bb0016d866263f313652be6..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/element.matches.es6.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @file
- * Provides a polyfill for Element.prototype.matches().
- *
- * This is needed for Internet Explorer 9+
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (!Element.prototype.matches) {
-  Element.prototype.matches =
-    Element.prototype.msMatchesSelector ||
-    Element.prototype.webkitMatchesSelector;
-}
diff --git a/core/misc/polyfills/element.matches.js b/core/misc/polyfills/element.matches.js
deleted file mode 100644
index 8fc544b4b647310501654ee301d049ebd0a374a7..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/element.matches.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (!Element.prototype.matches) {
-  Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/nodelist.foreach.es6.js b/core/misc/polyfills/nodelist.foreach.es6.js
deleted file mode 100644
index 12ddc0d44f238d9fee28efc252a16b5aa9f91f30..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/nodelist.foreach.es6.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @file
- * Provides a polyfill for NodeList.forEach().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (window.NodeList && !NodeList.prototype.forEach) {
-  NodeList.prototype.forEach = Array.prototype.forEach;
-}
diff --git a/core/misc/polyfills/nodelist.foreach.js b/core/misc/polyfills/nodelist.foreach.js
deleted file mode 100644
index a0ecf7bbcdcc86e241c9e04a40383f146b6903b8..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/nodelist.foreach.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (window.NodeList && !NodeList.prototype.forEach) {
-  NodeList.prototype.forEach = Array.prototype.forEach;
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/object.assign.es6.js b/core/misc/polyfills/object.assign.es6.js
deleted file mode 100644
index 1dbb8bb5e9d1492b6c867550664153c57ba3fd8a..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/object.assign.es6.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file
- * Provides a polyfill for Object.assign().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-if (typeof Object.assign !== 'function') {
-  // Must be writable: true, enumerable: false, configurable: true
-  Object.defineProperty(Object, 'assign', {
-    value: function assign(target, varArgs) {
-      // .length of function is 2
-      'use strict';
-      if (target === null || target === undefined) {
-        throw new TypeError('Cannot convert undefined or null to object');
-      }
-
-      var to = Object(target);
-
-      for (var index = 1; index < arguments.length; index++) {
-        var nextSource = arguments[index];
-
-        if (nextSource !== null && nextSource !== undefined) {
-          for (var nextKey in nextSource) {
-            // Avoid bugs when hasOwnProperty is shadowed
-            if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-              to[nextKey] = nextSource[nextKey];
-            }
-          }
-        }
-      }
-      return to;
-    },
-    writable: true,
-    configurable: true,
-  });
-}
diff --git a/core/misc/polyfills/object.assign.js b/core/misc/polyfills/object.assign.js
deleted file mode 100644
index 265eb629a38c29703247a72d1127f518c11fc806..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/object.assign.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (typeof Object.assign !== 'function') {
-  Object.defineProperty(Object, 'assign', {
-    value: function assign(target, varArgs) {
-      'use strict';
-
-      if (target === null || target === undefined) {
-        throw new TypeError('Cannot convert undefined or null to object');
-      }
-
-      var to = Object(target);
-
-      for (var index = 1; index < arguments.length; index++) {
-        var nextSource = arguments[index];
-
-        if (nextSource !== null && nextSource !== undefined) {
-          for (var nextKey in nextSource) {
-            if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-              to[nextKey] = nextSource[nextKey];
-            }
-          }
-        }
-      }
-
-      return to;
-    },
-    writable: true,
-    configurable: true
-  });
-}
\ No newline at end of file
diff --git a/core/misc/polyfills/string.includes.es6.js b/core/misc/polyfills/string.includes.es6.js
deleted file mode 100644
index 25eebd8d126c5d4ceea7a1167e84a2cf024a39c9..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/string.includes.es6.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @file
- * Provides a polyfill for String.includes().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://web.archive.org/web/20210916035058/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
-/* eslint-disable strict, lines-around-directive, no-extend-native */
-if (!String.prototype.includes) {
-  String.prototype.includes = function (search, start) {
-    'use strict';
-
-    if (search instanceof RegExp) {
-      throw TypeError('first argument must not be a RegExp');
-    }
-    if (start === undefined) {
-      start = 0;
-    }
-    return this.indexOf(search, start) !== -1;
-  };
-}
diff --git a/core/misc/polyfills/string.includes.js b/core/misc/polyfills/string.includes.js
deleted file mode 100644
index 1a1ea7cd04cb75fb2bff35e8c5bafaf13bfd2524..0000000000000000000000000000000000000000
--- a/core/misc/polyfills/string.includes.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-if (!String.prototype.includes) {
-  String.prototype.includes = function (search, start) {
-    'use strict';
-
-    if (search instanceof RegExp) {
-      throw TypeError('first argument must not be a RegExp');
-    }
-
-    if (start === undefined) {
-      start = 0;
-    }
-
-    return this.indexOf(search, start) !== -1;
-  };
-}
\ No newline at end of file
diff --git a/core/modules/block/block.libraries.yml b/core/modules/block/block.libraries.yml
index ad6f33b105672974b62b74a1831d99e8a397a109..ab7026fcd599b45dd267c57bc77db0a16c478223 100644
--- a/core/modules/block/block.libraries.yml
+++ b/core/modules/block/block.libraries.yml
@@ -20,5 +20,4 @@ drupal.block.admin:
     - core/drupal.announce
     - core/drupal.debounce
     - core/drupal.dialog.ajax
-    - core/drupal.string.includes
     - core/once
diff --git a/core/modules/media_library/media_library.libraries.yml b/core/modules/media_library/media_library.libraries.yml
index 6fd4144e6cb8e61bce7f9da5d4670fec34380ad6..83dbdc8f9c3d8a3cb75babd9e25d0baffbad22bd 100644
--- a/core/modules/media_library/media_library.libraries.yml
+++ b/core/modules/media_library/media_library.libraries.yml
@@ -23,7 +23,6 @@ widget:
     - core/drupal.dialog.ajax
     - core/once
     - core/sortable
-    - core/drupal.nodelist.foreach
 
 ui:
   version: VERSION
diff --git a/core/modules/responsive_image/js/responsive_image.ajax.es6.js b/core/modules/responsive_image/js/responsive_image.ajax.es6.js
deleted file mode 100644
index 2cf6a3808789ef860ec396453bc8e8895c29ec1f..0000000000000000000000000000000000000000
--- a/core/modules/responsive_image/js/responsive_image.ajax.es6.js
+++ /dev/null
@@ -1,12 +0,0 @@
-(function (Drupal) {
-  /**
-   * Call picturefill so newly added responsive images are processed.
-   */
-  Drupal.behaviors.responsiveImageAJAX = {
-    attach() {
-      if (window.picturefill) {
-        window.picturefill();
-      }
-    },
-  };
-})(Drupal);
diff --git a/core/modules/responsive_image/js/responsive_image.ajax.js b/core/modules/responsive_image/js/responsive_image.ajax.js
deleted file mode 100644
index 35ffd8455730c4cfb69b4bfa9c5d622ec3c7cca7..0000000000000000000000000000000000000000
--- a/core/modules/responsive_image/js/responsive_image.ajax.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
-
-(function (Drupal) {
-  Drupal.behaviors.responsiveImageAJAX = {
-    attach() {
-      if (window.picturefill) {
-        window.picturefill();
-      }
-    }
-
-  };
-})(Drupal);
\ No newline at end of file
diff --git a/core/modules/responsive_image/responsive_image.libraries.yml b/core/modules/responsive_image/responsive_image.libraries.yml
deleted file mode 100644
index d7f0e2ea4363baf0b022e4842214b6609f50001d..0000000000000000000000000000000000000000
--- a/core/modules/responsive_image/responsive_image.libraries.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-ajax:
-  version: VERSION
-  js:
-    js/responsive_image.ajax.js: {}
diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module
index 7899c7e5b8e066ac615995e1f18b97f4afd521eb..eab182dc6219dd6fe76ee0fdb4f943cf2647fc3c 100644
--- a/core/modules/responsive_image/responsive_image.module
+++ b/core/modules/responsive_image/responsive_image.module
@@ -29,7 +29,7 @@ function responsive_image_help($route_name, RouteMatchInterface $route_match) {
       $output .= '<dd>' . t('By creating responsive image styles you define which options the browser has in selecting which image file to display. In most cases this means providing different image sizes based on the viewport size. On the <a href=":responsive_image_style">Responsive image styles</a> page, click <em>Add responsive image style</em> to create a new style. First choose a label, a fallback image style and a breakpoint group and click Save.', [':responsive_image_style' => Url::fromRoute('entity.responsive_image_style.collection')->toString()]) . '</dd>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Fallback image style') . '</dt>';
-      $output .= '<dd>' . t('The fallback image style is typically the smallest size image you expect to appear in this space. Because the responsive images module uses the Picturefill library so that responsive images can work in older browsers, the fallback image should only appear on a site if an error occurs.') . '</dd>';
+      $output .= '<dd>' . t('The fallback image style is typically the smallest size image you expect to appear in this space. The fallback image should only appear on a site if an error occurs.') . '</dd>';
       $output .= '<dt>' . t('Breakpoint groups: viewport sizing vs art direction') . '</dt>';
       $output .= '<dd>' . t('The breakpoint group typically only needs a single breakpoint with an empty media query in order to do <em>viewport sizing.</em> Multiple breakpoints are used for changing the crop or aspect ratio of images at different viewport sizes, which is often referred to as <em>art direction.</em> Once you select a breakpoint group, you can choose which breakpoints to use for the responsive image style. By default, the option <em>do not use this breakpoint</em> is selected for each breakpoint. See the <a href=":breakpoint_help">help page of the Breakpoint module</a> for more information.', [':breakpoint_help' => Url::fromRoute('help.page', ['name' => 'breakpoint'])->toString()]) . '</dd>';
       $output .= '<dt>' . t('Breakpoint settings: sizes vs image styles') . '</dt>';
@@ -191,9 +191,7 @@ function template_preprocess_responsive_image(&$variables) {
   else {
     $variables['output_image_tag'] = FALSE;
     // Prepare the fallback image. We use the src attribute, which might cause
-    // double downloads in browsers that don't support the picture tag (might,
-    // because when picturefill kicks in, it cancels the download and triggers
-    // the download for the correct image).
+    // double downloads in browsers that don't support the picture tag.
     $variables['img_element'] = [
       '#theme' => 'image',
       '#uri' => _responsive_image_image_style_url($responsive_image_style->getFallbackImageStyle(), $variables['uri']),
diff --git a/core/modules/responsive_image/src/Element/ResponsiveImage.php b/core/modules/responsive_image/src/Element/ResponsiveImage.php
index 2c6f677a0cb934a7697b97b9f093fd87ecaea29b..a8f1029d8e19d635ebecddc8705175f411ae2a89 100644
--- a/core/modules/responsive_image/src/Element/ResponsiveImage.php
+++ b/core/modules/responsive_image/src/Element/ResponsiveImage.php
@@ -17,9 +17,6 @@ class ResponsiveImage extends RenderElement {
   public function getInfo() {
     return [
       '#theme' => 'responsive_image',
-      '#attached' => [
-        'library' => ['core/picturefill'],
-      ],
     ];
   }
 
diff --git a/core/modules/views_ui/views_ui.libraries.yml b/core/modules/views_ui/views_ui.libraries.yml
index be90bc91c94a011cc2ed5e2a0f83b451f8a99b3d..9649e568c434580abc35aedaccd5fc6410470575 100644
--- a/core/modules/views_ui/views_ui.libraries.yml
+++ b/core/modules/views_ui/views_ui.libraries.yml
@@ -24,7 +24,6 @@ views_ui.listing:
   dependencies:
     - core/jquery
     - core/drupal
-    - core/drupal.string.includes
     - core/once
     - views_ui/admin.styling
 
diff --git a/core/package.json b/core/package.json
index 53deb6b475eea1b062a1091ea5a4e4f281f75319..7d0187d5aa86feb7667ad992768141a01dbceb83 100644
--- a/core/package.json
+++ b/core/package.json
@@ -70,9 +70,7 @@
     "ckeditor5": "34.1.x",
     "cross-env": "^7.0.2",
     "cspell": "^5.0.0",
-    "css.escape": "1.5.x",
     "dotenv-safe": "^8.2.0",
-    "es6-promise": "4.2.x",
     "eslint": "^8.9.0",
     "eslint-config-airbnb-base": "^15.0.0",
     "eslint-config-prettier": "^8.4.0",
@@ -92,9 +90,7 @@
     "mkdirp": "^1.0.4",
     "nightwatch": "^2.1.3",
     "normalize.css": "8.0.x",
-    "picturefill": "3.0.x",
     "postcss": "^7.0.18",
-    "postcss-calc": "^7.0.1",
     "postcss-header": "^2.0.0",
     "postcss-import": "^12.0.1",
     "postcss-preset-env": "^6.7.0",
diff --git a/core/postcss.config.js b/core/postcss.config.js
index 1c61d3b312b8666db5f014f86edfff20024ce5a8..c105eb2abdaf50efd4e9c7afb8732c6c05a6adca 100644
--- a/core/postcss.config.js
+++ b/core/postcss.config.js
@@ -9,7 +9,6 @@ module.exports = ctx => ({
         './themes/claro/css/src/base/variables.css'
       ]
     }),
-    require("postcss-calc"),
     require('autoprefixer')({
       cascade: false
     }),
diff --git a/core/scripts/css/compile.js b/core/scripts/css/compile.js
index 810e3ea38b8aa719e0013181270d553e4d9c0966..e50d3701daa39a43a4646709305885c3186e9119 100644
--- a/core/scripts/css/compile.js
+++ b/core/scripts/css/compile.js
@@ -2,7 +2,6 @@ const chalk = require('chalk');
 const log = require('./log');
 const fs = require('fs');
 const postcss = require('postcss');
-const postcssCalc = require("postcss-calc");
 const postcssImport = require('postcss-import');
 const postcssHeader = require('postcss-header');
 const postcssUrl = require('postcss-url');
@@ -48,7 +47,6 @@ module.exports = (filePath, callback) => {
           'prefers-color-scheme-query': false,
         }
       }),
-      postcssCalc,
       postcssPixelsToRem({
           propList: [
             '*',
diff --git a/core/scripts/js/vendor-update.js b/core/scripts/js/vendor-update.js
index 2dfbdb2cc712697a03247e280bf65f1fca1befd7..cc37343638eeb7a504c2c1d13f05f33d516da2cc 100644
--- a/core/scripts/js/vendor-update.js
+++ b/core/scripts/js/vendor-update.js
@@ -79,22 +79,6 @@ const assetsFolder = `${coreFolder}/assets/vendor`;
       library: 'internal.backbone',
       files: ['backbone.js', 'backbone-min.js', 'backbone-min.map'],
     },
-    {
-      pack: 'css.escape',
-      folder: 'css-escape',
-      library: 'css.escape',
-      files: ['css.escape.js'],
-    },
-    {
-      pack: 'es6-promise',
-      files: [
-        { from: 'dist/es6-promise.auto.min.js', to: 'es6-promise.auto.min.js' },
-        {
-          from: 'dist/es6-promise.auto.min.map',
-          to: 'es6-promise.auto.min.map',
-        },
-      ],
-    },
     {
       pack: 'farbtastic',
       library: 'jquery.farbtastic',
@@ -142,10 +126,6 @@ const assetsFolder = `${coreFolder}/assets/vendor`;
         { from: 'dist/once.min.js.map', to: 'once.min.js.map' },
       ],
     },
-    {
-      pack: 'picturefill',
-      files: [{ from: 'dist/picturefill.min.js', to: 'picturefill.min.js' }],
-    },
     {
       pack: '@popperjs/core',
       folder: 'popperjs',
diff --git a/core/themes/claro/claro.libraries.yml b/core/themes/claro/claro.libraries.yml
index 0f57051b98790a833968720f8dcb44029b67993f..dbeb894762ade1f76ff4d2eac9c8ea7006804dd4 100644
--- a/core/themes/claro/claro.libraries.yml
+++ b/core/themes/claro/claro.libraries.yml
@@ -242,7 +242,6 @@ form.password-confirm:
   js:
     js/user.theme.js: {}
   dependencies:
-    - core/drupal.object.assign
     - core/drupal
     - claro/global-styling
 
diff --git a/core/themes/claro/css/base/variables.css b/core/themes/claro/css/base/variables.css
index 876695fb55b357e11d5416525bdaf9c6f881bc36..74128d431cf59e91974b62e449c5334d6df4e95a 100644
--- a/core/themes/claro/css/base/variables.css
+++ b/core/themes/claro/css/base/variables.css
@@ -88,7 +88,7 @@
   --font-family-serif: "Times New Roman", times, serif;
   --line-height: 1.5;
   --line-height-heading: 1.3;
-  --line-height-form-label: 1.125rem; /* 18px */
+  --line-height-form-label: calc(18rem / 16); /* 18px */
   --font-size-base: 1rem; /* 1rem = 16px if font root is 100% ands browser defaults are used. */
   --font-size-h1: 2.027rem; /* ~32px */
   --font-size-h2: 1.802rem; /* ~29px */
@@ -148,7 +148,7 @@
   --input-padding-horizontal: calc(var(--space-m) - var(--input-border-size));
   --input-font-size: var(--font-size-base);
   --input-line-height: var(--space-l);
-  --input-padding-vertical--small: calc(var(--space-xs) - var(--input-border-size)*2);
+  --input-padding-vertical--small: calc(var(--space-xs) - (var(--input-border-size) * 2));
   --input-padding-horizontal--small: calc(var(--space-m) - var(--input-border-size));
   --input-font-size--small: var(--font-size-xs);
   --input-line-height--small: 1.3125rem;
@@ -212,12 +212,12 @@
   --jui-dialog-title-color: var(--color-white);
   --jui-dialog-title-bg-color: var(--color-text);
   --jui-dialog-title-font-size: var(--font-size-h4);
-  --jui-dialog-close-button-size: calc(var(--space-m)*2);
+  --jui-dialog-close-button-size: calc(var(--space-m) * 2);
   --jui-dialog-close-button-border-radius: 50%;
-  --jui-dialog-close-button-reserved-space: calc(var(--space-m)*4);
-  --jui-dialog-off-canvas-close-button-reserved-space: calc(var(--space-m)*3);
+  --jui-dialog-close-button-reserved-space: calc(var(--space-m) * 4);
+  --jui-dialog-off-canvas-close-button-reserved-space: calc(var(--space-m) * 3);
   --jui-dialog-border-radius: 0.25rem;
-  --jui-dialog-box-shadow: 0 0 var(--space-m) calc(var(--space-m)/-4) var(--color-text);
+  --jui-dialog-box-shadow: 0 0 var(--space-m) calc(var(--space-m) / -4) var(--color-text);
   --jui-dialog--focus-outline: 2px dotted transparent;
   --jui-dialog--focus-box-shadow: 0 0 0 0.1875rem var(--color-focus);
   --jui-dialog-z-index: 1260;
@@ -226,7 +226,7 @@
    * Progress bar.
    */
   --progress-bar-border-size: 1px;
-  --progress-bar-small-size: calc(var(--space-xs) - var(--progress-bar-border-size)*2);
+  --progress-bar-small-size: calc(var(--space-xs) - (2 * var(--progress-bar-border-size)));
   --progress-bar-small-size-radius: var(--space-xs);
   --progress-bar-spacing-size: var(--space-xs);
   --progress-bar-transition: width 0.5s ease-out;
@@ -238,7 +238,7 @@
   /**
    * Tabledrag icon size.
    */
-  --tabledrag-handle-icon-size: 1.0625rem; /* 17px */
+  --tabledrag-handle-icon-size: calc(17rem / 16); /* 17px */
   /**
    * Ajax progress.
    */
@@ -257,10 +257,10 @@
   --vertical-tabs-border-size: 1px;
   --vertical-tabs-border: var(--vertical-tabs-border-size) solid var(--vertical-tabs-border-color);
   --vertical-tabs-menu-item-shadow-extraspace: 0.5rem;
-  --vertical-tabs-menu-item--top-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace)*-2);
-  --vertical-tabs-menu-item--right-margin: calc(var(--vertical-tabs-border-size)*-1);
-  --vertical-tabs-menu-item--bottom-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace)*-1);
-  --vertical-tabs-menu-item--left-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace)*-1);
+  --vertical-tabs-menu-item--top-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace) * -2);
+  --vertical-tabs-menu-item--right-margin: calc(var(--vertical-tabs-border-size) * -1);
+  --vertical-tabs-menu-item--bottom-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace) * -1);
+  --vertical-tabs-menu-item--left-margin: calc(var(--vertical-tabs-menu-item-shadow-extraspace) * -1);
   --vertical-tabs-menu-separator-color: var(--color-gray-200);
   --vertical-tabs-menu-separator-size: 1px;
   --vertical-tabs-menu-width: 20em;
diff --git a/core/themes/claro/css/components/action-link.css b/core/themes/claro/css/components/action-link.css
index 251d737068628f8099bd5b38dee0dd5b928f52ee..f66bbc3d0d8a9217a021658cf050ecafb979eb29 100644
--- a/core/themes/claro/css/components/action-link.css
+++ b/core/themes/claro/css/components/action-link.css
@@ -50,7 +50,7 @@
 
 .action-link {
   display: inline-block;
-  padding: calc(var(--space-m) - var(--space-l)/2 + var(--space-m)/2) var(--space-m);
+  padding: calc(var(--space-m) - ((var(--space-l) - var(--space-m)) / 2)) var(--space-m);
   cursor: pointer;
   text-decoration: none;
   color: var(--color-gray-800);
@@ -65,7 +65,7 @@
 /* Small variant. */
 
 .no-touchevents .action-link--small {
-  padding: calc(var(--space-s) - var(--space-l)/2 + var(--space-s)/2) var(--space-s);
+  padding: calc(var(--space-s) - ((var(--space-l) - var(--space-s)) / 2)) var(--space-s);
   font-size: var(--font-size-s);
 }
 
diff --git a/core/themes/claro/css/components/autocomplete-loading.module.css b/core/themes/claro/css/components/autocomplete-loading.module.css
index 51eec25e1e328651b07ab67d4b520e69b8f47f53..a77c1d0e481a2740e604084ed53bee3399e72353 100644
--- a/core/themes/claro/css/components/autocomplete-loading.module.css
+++ b/core/themes/claro/css/components/autocomplete-loading.module.css
@@ -90,7 +90,7 @@ _:-ms-fullscreen,
   color: var(--color-link);
   font-size: var(--font-size-xxs); /* ~11px */
   font-weight: bold;
-  line-height: 1.125rem; /* 18px */
+  line-height: calc(18rem / 16); /* 18px */
 }
 
 [dir="rtl"] .claro-autocomplete__message {
diff --git a/core/themes/claro/css/components/button.css b/core/themes/claro/css/components/button.css
index 27eafc2a861800559d19383f4c1df894fa155c1b..656266af8afa56b02036ddc593c94b4811d59009 100644
--- a/core/themes/claro/css/components/button.css
+++ b/core/themes/claro/css/components/button.css
@@ -87,7 +87,7 @@
 
 .no-touchevents .button--extrasmall {
   margin: var(--space-xs) var(--space-xs) var(--space-xs) 0; /* LTR */
-  padding: calc(var(--space-xs)/2 - 1px) calc(var(--space-s) - 1px); /* 1 */
+  padding: calc(calc(var(--space-xs) / 2) - 1px) calc(var(--space-s) - 1px); /* 1 */
   font-size: var(--font-size-xs);
 }
 
diff --git a/core/themes/claro/css/components/details.css b/core/themes/claro/css/components/details.css
index 3eba252410225471bfbed18c81c420fc434f6cc3..6bcc296bf5e577405a162df85ebb9ffd0f22be7d 100644
--- a/core/themes/claro/css/components/details.css
+++ b/core/themes/claro/css/components/details.css
@@ -37,7 +37,7 @@
 
 :root {
   --size-summary-border-radius: calc(var(--details-border-size-radius) - var(--details-border-size));
-  --summary-accordion-padding-vertical: calc(var(--space-l) + var(--space-m)/2 - var(--space-l)/2);
+  --summary-accordion-padding-vertical: calc(var(--space-l) + ((var(--space-m) - var(--space-l)) / 2));
   --summary-accordion-line-height: var(--space-l);
 }
 
@@ -148,7 +148,7 @@
   display: inline-block;
   width: var(--space-m);
   height: var(--space-m);
-  margin-top: calc(var(--space-m)/-2);
+  margin-top: calc(var(--space-m) / -2);
   content: "";
   transition: transform var(--details-transform-transition-duration) ease-in 0s;
   transform: rotate(90deg); /* LTR */
@@ -298,7 +298,7 @@
 
   .claro-details[open] > .claro-details__summary::before,
   [dir="rtl"] .claro-details[open] > .claro-details__summary::before {
-    margin-top: -0.0625rem;
+    margin-top: calc(0.125rem / -2);
     margin-right: 0.125rem;
     transform: rotate(-45deg); /* for LTR and RTL */
     background: none;
@@ -451,7 +451,7 @@
   margin-bottom: var(--space-m);
   color: var(--input-fg-color--description);
   font-size: var(--font-size-xs); /* ~13px */
-  line-height: 1.0625rem; /* 17px */
+  line-height: calc(17rem / 16); /* 17px */
 }
 
 .claro-details__description.is-disabled {
diff --git a/core/themes/claro/css/components/dialog.css b/core/themes/claro/css/components/dialog.css
index 4f37e16bd869f99f4ba13957d4cb038c939f6f93..932f38d4c522779bd9f97c70d2c86fbe0f962fa2 100644
--- a/core/themes/claro/css/components/dialog.css
+++ b/core/themes/claro/css/components/dialog.css
@@ -41,7 +41,7 @@
   border-top-left-radius: var(--jui-dialog-border-radius);
   border-top-right-radius: var(--jui-dialog-border-radius);
   background: var(--jui-dialog-title-bg-color);
-  line-height: calc(var(--space-m)*2);
+  line-height: calc(var(--space-m) * 2);
 }
 
 [dir="rtl"] .ui-dialog .ui-dialog-titlebar {
diff --git a/core/themes/claro/css/components/dropbutton.css b/core/themes/claro/css/components/dropbutton.css
index c5a8e23888ee1073f0777bf88ed96df38a4860a0..1bbf5429c90636cef79ceeadc0edfb9a194e32b1 100644
--- a/core/themes/claro/css/components/dropbutton.css
+++ b/core/themes/claro/css/components/dropbutton.css
@@ -30,12 +30,12 @@
   --dropbutton-small-spacing-size: 0.625rem;
   --dropbutton-small-font-size: var(--font-size-xs);
   --dropbutton-small-line-height: 0.75rem;
-  --dropbutton-small-toggle-size: calc(var(--dropbutton-small-spacing-size)*2 + var(--dropbutton-small-line-height));
+  --dropbutton-small-toggle-size: calc((2 * var(--dropbutton-small-spacing-size)) + var(--dropbutton-small-line-height));
   /* Variant variables: extra small. */
   --dropbutton-extrasmall-spacing-size: 0.375rem;
   --dropbutton-extrasmall-font-size: var(--font-size-xs);
   --dropbutton-extrasmall-line-height: 0.75rem;
-  --dropbutton-extrasmall-toggle-size: calc(var(--dropbutton-extrasmall-spacing-size)*2 + var(--dropbutton-extrasmall-line-height));
+  --dropbutton-extrasmall-toggle-size: calc((2 * var(--dropbutton-extrasmall-spacing-size)) + var(--dropbutton-extrasmall-line-height));
 }
 
 .dropbutton-wrapper {
@@ -212,7 +212,7 @@
   .dropbutton__toggle::before {
     width: 0.5625rem;
     height: 0.5625rem;
-    margin-top: -0.19886rem;
+    margin-top: calc(0.5625rem / (2 * -1.41429));
     transform: translate(50%, -50%) rotate(135deg); /* LTR */
     border: 0.125rem solid;
     border-width: 0.125rem 0.125rem 0 0;
@@ -220,7 +220,7 @@
   }
 
   .dropbutton-wrapper.open .dropbutton__toggle::before {
-    margin-top: 0.19886rem;
+    margin-top: calc(0.5625rem / (2 * 1.41429));
     transform: translate(50%, -50%) rotate(315deg);
   }
   [dir="rtl"] .dropbutton-wrapper.open .dropbutton__toggle::before {
@@ -233,11 +233,11 @@
   .no-touchevents .dropbutton--extrasmall .dropbutton__toggle::before {
     width: 0.4375rem;
     height: 0.4375rem;
-    margin-top: -0.15467rem;
+    margin-top: calc(0.4375rem / (2 * -1.41429));
   }
 
   .dropbutton-wrapper.open .dropbutton__toggle::before {
-    margin-top: 0.15467rem;
+    margin-top: calc(0.4375rem / (2 * 1.41429));
   }
 }
 
diff --git a/core/themes/claro/css/components/fieldset.css b/core/themes/claro/css/components/fieldset.css
index 03f1036616083675c988f6c75e3a58b3cfec7a39..ff193c92650155d8caaf637f7389f01fa727dffa 100644
--- a/core/themes/claro/css/components/fieldset.css
+++ b/core/themes/claro/css/components/fieldset.css
@@ -63,10 +63,10 @@ _:-ms-fullscreen,
   float: none;
   width: auto;
   margin-top: 0; /* IE11 and Edge do not collapse this margin. Ideally this would be 4px */
-  margin-bottom: calc(var(--space-xs)/2); /* 4px */
+  margin-bottom: calc(var(--space-xs) / 2); /* 4px */
   color: inherit;
   font-size: var(--font-size-s); /* 14px */
-  line-height: 1.125rem; /* 18px */
+  line-height: calc(18rem / 16); /* 18px */
 }
 
 /* This is used only on install configure form. */
@@ -103,11 +103,11 @@ _:-ms-fullscreen,
 }
 
 .fieldset__description {
-  margin-top: 0.375rem; /* 6px */
-  margin-bottom: 0.375rem; /* 6px */
+  margin-top: calc(6rem / 16); /* 6px */
+  margin-bottom: calc(6rem / 16); /* 6px */
   color: var(--input-fg-color--description);
   font-size: var(--font-size-xs); /* ~13px */
-  line-height: 1.0625rem; /* 17px */
+  line-height: calc(17rem / 16); /* 17px */
 }
 
 .fieldset__description.is-disabled {
@@ -117,12 +117,12 @@ _:-ms-fullscreen,
 /* Error message (Inline form errors). */
 
 .fieldset__error-message {
-  margin-top: 0.375rem; /* 6px */
-  margin-bottom: 0.375rem; /* 6px */
+  margin-top: calc(6rem / 16); /* 6px */
+  margin-bottom: calc(6rem / 16); /* 6px */
   color: var(--input--error-color);
   font-size: var(--font-size-xs); /* ~13px */
   font-weight: normal;
-  line-height: 1.0625rem; /* 17px */
+  line-height: calc(17rem / 16); /* 17px */
 }
 
 .fieldset__wrapper {
diff --git a/core/themes/claro/css/components/file.css b/core/themes/claro/css/components/file.css
index 94923d6bd33de48474d19a813a9a9f347f2ad0d5..e42fbead763777d990b015c06a71be01c5cae2b3 100644
--- a/core/themes/claro/css/components/file.css
+++ b/core/themes/claro/css/components/file.css
@@ -16,7 +16,7 @@
   background-position: left 0.0625rem;
   background-size: var(--space-m) var(--space-m);
   font-size: var(--font-size-s);
-  line-height: 1.125rem;
+  line-height: calc(18rem / 16);
 }
 
 [dir="rtl"] .file {
diff --git a/core/themes/claro/css/components/form--checkbox-radio.css b/core/themes/claro/css/components/form--checkbox-radio.css
index 24820f7d3818266857d4dbfd61b5812395800ecf..4ae3f10176536b788c2874a9ce4f33bbfa53aa35 100644
--- a/core/themes/claro/css/components/form--checkbox-radio.css
+++ b/core/themes/claro/css/components/form--checkbox-radio.css
@@ -30,15 +30,15 @@
 
 .form-type--boolean .form-boolean {
   position: relative;
-  top: calc(var(--space-l)/2);
+  top: calc(var(--space-l) / 2);
   float: left; /* LTR */
-  margin-left: calc(var(--input--label-spacing)*-1); /* LTR */
+  margin-left: calc(var(--input--label-spacing) * -1); /* LTR */
   transform: translateY(-50%);
 }
 
 [dir="rtl"] .form-type--boolean .form-boolean {
   float: right;
-  margin-right: calc(var(--input--label-spacing)*-1);
+  margin-right: calc(var(--input--label-spacing) * -1);
   margin-left: 0;
 }
 
diff --git a/core/themes/claro/css/components/form--password-confirm.css b/core/themes/claro/css/components/form--password-confirm.css
index eaf289d4c9eddc0c772423735ce4a91474518d1b..bb62ecb9eea159bb6cddc7b06ca13d56a161da18 100644
--- a/core/themes/claro/css/components/form--password-confirm.css
+++ b/core/themes/claro/css/components/form--password-confirm.css
@@ -93,7 +93,7 @@
 .password-strength__bar {
   min-width: var(--progress-bar-small-size);
   height: var(--progress-bar-small-size);
-  margin: calc(var(--progress-bar-border-size)*-1);
+  margin: calc(var(--progress-bar-border-size) * -1);
   transition: var(--progress-bar-transition);
   border: var(--progress-bar-border-size) solid transparent;
   border-radius: var(--progress-bar-small-size-radius);
diff --git a/core/themes/claro/css/components/form--text.css b/core/themes/claro/css/components/form--text.css
index 5656dd60078819aa0c454292e6256b3e22e5150b..561880ef4524db1b8798139159ed24806052fb3d 100644
--- a/core/themes/claro/css/components/form--text.css
+++ b/core/themes/claro/css/components/form--text.css
@@ -13,7 +13,7 @@
 .form-element {
   box-sizing: border-box;
   max-width: 100%;
-  min-height: calc(var(--input-padding-vertical)*2 + var(--input-border-size)*2 + var(--input-line-height)); /* iOS. */
+  min-height: calc(((var(--input-padding-vertical) + var(--input-border-size)) * 2) + var(--input-line-height)); /* iOS. */
   padding: var(--input-padding-vertical) var(--input-padding-horizontal);
   color: var(--input-fg-color);
   border: var(--input-border-size) solid var(--input-border-color);
@@ -27,7 +27,7 @@
 
 .no-touchevents .form-element--extrasmall,
 .no-touchevents .form-element[name$="][_weight]"] {
-  min-height: calc(var(--input--extrasmall-padding-vertical)*2 + var(--input-border-size)*2 + var(--input--extrasmall-line-height)); /* iOS. */
+  min-height: calc(((var(--input--extrasmall-padding-vertical) + var(--input-border-size)) * 2) + var(--input--extrasmall-line-height)); /* iOS. */
   padding: var(--input--extrasmall-padding-vertical) var(--input--extrasmall-padding-horizontal);
   font-size: var(--input--extrasmall-font-size);
   line-height: var(--input--extrasmall-line-height);
diff --git a/core/themes/claro/css/components/form.css b/core/themes/claro/css/components/form.css
index b0bb8b9f9b5ee6a96cc3c9bb9eab46e2482ed560..cb818001cf76c8aa32c7097feaf01ff0b47759be 100644
--- a/core/themes/claro/css/components/form.css
+++ b/core/themes/claro/css/components/form.css
@@ -48,8 +48,8 @@ tr .form-item,
 
 .form-item__label {
   display: table;
-  margin-top: calc(var(--space-xs)/2); /* 4px */
-  margin-bottom: calc(var(--space-xs)/2); /* 4px */
+  margin-top: calc(var(--space-xs) / 2); /* 4px */
+  margin-bottom: calc(var(--space-xs) / 2); /* 4px */
   font-size: var(--font-size-s); /* ~14px */
   font-weight: bold;
   line-height: var(--line-height-form-label);
@@ -102,11 +102,11 @@ tr .form-item,
  */
 
 .form-item__description {
-  margin-top: 0.375rem; /* 6px */
-  margin-bottom: 0.375rem; /* 6px */
+  margin-top: calc(6rem / 16); /* 6px */
+  margin-bottom: calc(6rem / 16); /* 6px */
   color: var(--input-fg-color--description);
   font-size: var(--font-size-xs); /* ~13px */
-  line-height: 1.0625rem; /* 17px */
+  line-height: calc(17rem / 16); /* 17px */
 }
 
 /* Description states. */
@@ -120,12 +120,12 @@ tr .form-item,
  */
 
 .form-item__error-message {
-  margin-top: 0.375rem; /* 6px */
-  margin-bottom: 0.375rem; /* 6px */
+  margin-top: calc(6rem / 16); /* 6px */
+  margin-bottom: calc(6rem / 16); /* 6px */
   color: var(--input--error-color);
   font-size: var(--font-size-xs); /* ~13px */
   font-weight: normal;
-  line-height: 1.0625rem; /* 17px */
+  line-height: calc(17rem / 16); /* 17px */
 }
 
 .form-item__prefix.is-disabled,
diff --git a/core/themes/claro/css/components/image-preview.css b/core/themes/claro/css/components/image-preview.css
index b5c4f7dd25745a44c0ae72dfbfb5f3076836548f..fac026cc5a38bfead8560cd4e76be7f051dc309c 100644
--- a/core/themes/claro/css/components/image-preview.css
+++ b/core/themes/claro/css/components/image-preview.css
@@ -12,7 +12,7 @@
 
 :root {
   --color-pattern: var(--color-gray-200);
-  --size-pattern-square: 0.4375rem;
+  --size-pattern-square: calc(7rem / 16);
 }
 
 /**
@@ -41,7 +41,7 @@
     var(--size-pattern-square) var(--size-pattern-square),
     var(--size-pattern-square) var(--size-pattern-square),
     0 0;
-  background-size: calc(var(--size-pattern-square)*2) calc(var(--size-pattern-square)*2);
+  background-size: calc(var(--size-pattern-square) * 2) calc(var(--size-pattern-square) * 2);
 }
 
 @media screen and (-ms-high-contrast: active) {
diff --git a/core/themes/claro/css/components/pager.css b/core/themes/claro/css/components/pager.css
index 2db59a28ee16f4a51cb2affce1bb51fa0c7ded36..e04b83fa8ad0f4d64fbab17d3779687a07eb3bfa 100644
--- a/core/themes/claro/css/components/pager.css
+++ b/core/themes/claro/css/components/pager.css
@@ -47,8 +47,8 @@
 
 .pager__item {
   display: inline-block;
-  margin-right: calc(var(--space-xs)/2);
-  margin-left: calc(var(--space-xs)/2);
+  margin-right: calc(var(--space-xs) / 2);
+  margin-left: calc(var(--space-xs) / 2);
   vertical-align: top;
 }
 
@@ -161,8 +161,8 @@
 }
 
 .pager__item--mini {
-  margin-right: calc(var(--space-m)/2);
-  margin-left: calc(var(--space-m)/2);
+  margin-right: calc(var(--space-m) / 2);
+  margin-left: calc(var(--space-m) / 2);
 }
 
 .pager__link--mini {
diff --git a/core/themes/claro/css/components/progress.css b/core/themes/claro/css/components/progress.css
index 5340247aebd2f39d6fa7e9c0660100084214a935..9dcbe24b63db04174f3bb24084452f1d3665d092 100644
--- a/core/themes/claro/css/components/progress.css
+++ b/core/themes/claro/css/components/progress.css
@@ -17,7 +17,7 @@
   --progress-bar-border-color: var(--color-absolutezero);
   --progress-bar-label-font-size: var(--font-size-base);
   --progress-bar-small-label-font-size: var(--font-size-label);
-  --progress-bar-default-size: calc(var(--space-m) - var(--progress-bar-border-size)*2);
+  --progress-bar-default-size: calc(var(--space-m) - (2 * var(--progress-bar-border-size)));
   --progress-bar-default-size-radius: var(--space-m);
 }
 
@@ -53,8 +53,8 @@
   width: var(--progress-bar-default-size);
   min-width: var(--progress-bar-default-size);
   height: var(--progress-bar-default-size);
-  margin-top: calc(var(--progress-bar-border-size)*-1);
-  margin-left: calc(var(--progress-bar-border-size)*-1); /* LTR */
+  margin-top: calc(var(--progress-bar-border-size) * -1);
+  margin-left: calc(var(--progress-bar-border-size) * -1); /* LTR */
   transition: var(--progress-bar-transition);
   border: var(--progress-bar-border-size) var(--progress-bar-border-color) solid;
   border-radius: var(--progress-bar-default-size-radius);
@@ -62,7 +62,7 @@
 }
 
 [dir="rtl"] .progress__bar {
-  margin-right: calc(var(--progress-bar-border-size)*-1);
+  margin-right: calc(var(--progress-bar-border-size) * -1);
   margin-left: 0;
 }
 
diff --git a/core/themes/claro/css/components/shortcut.css b/core/themes/claro/css/components/shortcut.css
index 8883d980a1dcd26cc7185dd9f96b9c35782a2a57..ccebf30f93ceddbc535f6586e919ab84ea54970b 100644
--- a/core/themes/claro/css/components/shortcut.css
+++ b/core/themes/claro/css/components/shortcut.css
@@ -16,7 +16,7 @@
   */
   --shortcut-bg-color: var(--color-gray-800);
   --shortcut-border-radius-size: var(--base-border-radius);
-  --shortcut-padding-size: calc(var(--space-xs)*0.5) var(--space-m);
+  --shortcut-padding-size: calc(0.5 * var(--space-xs)) var(--space-m);
   --shortcut-icon-size: var(--space-l);
 }
 
@@ -38,7 +38,7 @@
   margin-left: var(--space-s); /* LTR */
   padding: var(--shortcut-padding-size);
   transition: var(--transition);
-  transform: translateY(calc(var(--space-xs)*-1));
+  transform: translateY(calc(-1 * var(--space-xs)));
   vertical-align: top;
   opacity: 0;
   color: var(--color-white);
@@ -65,7 +65,7 @@
   width: var(--shortcut-icon-size);
   height: var(--shortcut-icon-size);
   vertical-align: -0.0625rem;
-  background: transparent url("data:image/svg+xml,%3csvg height='24' width='96' xmlns='http://www.w3.org/2000/svg'%3e%3cg stroke='%238e929c'%3e%3cpath d='m94.46 9.667h-7.937l-2.523-8.007-2.523 8.007h-7.937l6.768 4.926-3.076 8.007 6.768-4.927 6.768 4.927-3.076-8.007zm-24 0h-7.937l-2.523-8.007-2.523 8.007h-7.937l6.768 4.926-3.076 8.007 6.768-4.927 6.768 4.927-3.076-8.007z' fill='%23ffd23f'/%3e%3cg fill='none'%3e%3cpath d='m38.42 9.327.11.35h7.934l-6.521 4.742-.31.225.138.358 2.922 7.599-6.397-4.653-.294-.214-.294.214-6.397 4.653 2.923-7.599.137-.358-.31-.225-6.521-4.742h7.934l.11-.35 2.418-7.665zm-24.002 0 .11.35h7.934l-6.521 4.742-.31.225.138.358 2.922 7.599-6.397-4.653-.294-.214-.294.214-6.397 4.653 2.923-7.599.137-.358-.31-.225-6.521-4.742h7.934l.11-.35 2.418-7.665z'/%3e%3cpath d='m42.5 1v7m-3.5-3.5h7m42 2.5 6-6m0 6-6-6' stroke-linecap='square' stroke-miterlimit='3'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e") left top / calc(var(--shortcut-icon-size)*4) var(--shortcut-icon-size) no-repeat;
+  background: transparent url("data:image/svg+xml,%3csvg height='24' width='96' xmlns='http://www.w3.org/2000/svg'%3e%3cg stroke='%238e929c'%3e%3cpath d='m94.46 9.667h-7.937l-2.523-8.007-2.523 8.007h-7.937l6.768 4.926-3.076 8.007 6.768-4.927 6.768 4.927-3.076-8.007zm-24 0h-7.937l-2.523-8.007-2.523 8.007h-7.937l6.768 4.926-3.076 8.007 6.768-4.927 6.768 4.927-3.076-8.007z' fill='%23ffd23f'/%3e%3cg fill='none'%3e%3cpath d='m38.42 9.327.11.35h7.934l-6.521 4.742-.31.225.138.358 2.922 7.599-6.397-4.653-.294-.214-.294.214-6.397 4.653 2.923-7.599.137-.358-.31-.225-6.521-4.742h7.934l.11-.35 2.418-7.665zm-24.002 0 .11.35h7.934l-6.521 4.742-.31.225.138.358 2.922 7.599-6.397-4.653-.294-.214-.294.214-6.397 4.653 2.923-7.599.137-.358-.31-.225-6.521-4.742h7.934l.11-.35 2.418-7.665z'/%3e%3cpath d='m42.5 1v7m-3.5-3.5h7m42 2.5 6-6m0 6-6-6' stroke-linecap='square' stroke-miterlimit='3'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e") left top / calc(var(--shortcut-icon-size) * 4) var(--shortcut-icon-size) no-repeat;
 }
 
 [dir="rtl"] .shortcut-action__icon {
@@ -74,14 +74,14 @@
 
 .shortcut-action--add:hover .shortcut-action__icon,
 .shortcut-action--add:focus .shortcut-action__icon {
-  background-position: calc(var(--shortcut-icon-size)*-1) top;
+  background-position: calc(-1 * var(--shortcut-icon-size)) top;
 }
 
 .shortcut-action--remove .shortcut-action__icon {
-  background-position: calc(var(--shortcut-icon-size)*-2) top;
+  background-position: calc(-2 * var(--shortcut-icon-size)) top;
 }
 
 .shortcut-action--remove:focus .shortcut-action__icon,
 .shortcut-action--remove:hover .shortcut-action__icon {
-  background-position: calc(var(--shortcut-icon-size)*-3) top;
+  background-position: calc(-3 * var(--shortcut-icon-size)) top;
 }
diff --git a/core/themes/claro/css/components/system-admin--admin-list.css b/core/themes/claro/css/components/system-admin--admin-list.css
index 524f1b691ef6ef5bd0c4c3d14daf3084a72db414..d356792b0d849f078e586ee08f6ab578df2ea834 100644
--- a/core/themes/claro/css/components/system-admin--admin-list.css
+++ b/core/themes/claro/css/components/system-admin--admin-list.css
@@ -38,7 +38,7 @@
 }
 
 .admin-item:not(:last-child) {
-  border-bottom: 0.0625em solid var(--color-gray-200);
+  border-bottom: calc(1em / 16) solid var(--color-gray-200);
 }
 
 .admin-item__title {
diff --git a/core/themes/claro/css/components/system-admin--modules.css b/core/themes/claro/css/components/system-admin--modules.css
index 73df3d81f5b3c7f1f6ef0e6d960bff2635356696..1f8805afe7889d61abfc379c38860ea2a84a2cff 100644
--- a/core/themes/claro/css/components/system-admin--modules.css
+++ b/core/themes/claro/css/components/system-admin--modules.css
@@ -12,7 +12,7 @@
 
 :root {
   --module-table-cell-padding-vertical: var(--space-m);
-  --module-table-cell-padding-horizontal: calc(var(--space-m) - var(--input-border-size)*2);
+  --module-table-cell-padding-horizontal: calc(var(--space-m) - (var(--input-border-size) * 2));
 }
 
 .modules-table-filter {
@@ -147,7 +147,7 @@ td.module-list__description {
 .module-details__links {
   position: relative;
   /* Negative margin matches the value of action link's top padding. */
-  margin-top: calc(var(--space-s)*-1 - var(--space-l)/2*-1 + var(--space-s)/2*-1);
+  margin-top: calc((var(--space-s) - ((var(--space-l) - var(--space-s)) / 2)) * -1);
   margin-bottom: var(--space-m);
 }
 
@@ -169,7 +169,7 @@ td.module-list__description {
   position: relative;
   top: -1px;
   display: inline-block;
-  width: calc(var(--space-m)*2);
+  width: calc(var(--space-m) * 2);
   height: 1.25rem;
   content: "";
   cursor: pointer;
diff --git a/core/themes/claro/css/components/system-admin--panel.css b/core/themes/claro/css/components/system-admin--panel.css
index dffa67a7f5b1f800e97a5521ff8132efcd56db78..653553115c68c598bdd02b37685b5b35d4dc792f 100644
--- a/core/themes/claro/css/components/system-admin--panel.css
+++ b/core/themes/claro/css/components/system-admin--panel.css
@@ -14,15 +14,15 @@
   margin-top: 1em;
   margin-bottom: 3em;
   padding: 0;
-  border-bottom: 0.0625em solid var(--color-gray-200);
+  border-bottom: calc(1em / 16) solid var(--color-gray-200);
 }
 
 .panel__title {
   margin: 0;
-  padding: 0.66667em 1.33333em;
+  padding: calc(12em / 18) calc(24em / 18);
   background: var(--color-gray-050);
-  font-size: 1.125em;
-  line-height: 1.33333em;
+  font-size: calc(18em / 16);
+  line-height: calc(24em / 18);
 }
 
 .panel__content,
diff --git a/core/themes/claro/css/components/table--file-multiple-widget.css b/core/themes/claro/css/components/table--file-multiple-widget.css
index abf6c4637a628f98ac965fbc35b123ab67da3f99..93824c8419b989a879de1b483daccd2310b10f83 100644
--- a/core/themes/claro/css/components/table--file-multiple-widget.css
+++ b/core/themes/claro/css/components/table--file-multiple-widget.css
@@ -38,7 +38,7 @@
 
 .table-file-multiple-widget .tabledrag-changed {
   float: left; /* LTR */
-  line-height: calc(var(--tabledrag-handle-icon-size) + var(--space-xs)*2);
+  line-height: calc(var(--tabledrag-handle-icon-size) + calc(var(--space-xs) * 2));
 }
 
 [dir="rtl"] .table-file-multiple-widget .tabledrag-changed {
@@ -46,7 +46,7 @@
 }
 
 .table-file-multiple-widget td {
-  height: calc(var(--space-m)*3);
+  height: calc(var(--space-m) * 3);
 }
 
 .table-file-multiple-widget td > :first-child {
@@ -62,7 +62,7 @@
 }
 
 .table-file-multiple-widget th {
-  height: calc(var(--space-m)*2);
+  height: calc(var(--space-m) * 2);
   color: var(--color-gray-800);
   background: var(--color-gray-050);
   font-size: var(--font-size-s);
@@ -79,7 +79,7 @@
 }
 
 .table-file-multiple-widget .checkbox .form-type--boolean {
-  line-height: calc(var(--space-m)*3);
+  line-height: calc(var(--space-m) * 3);
 }
 
 .no-touchevents .table-file-multiple-widget .checkbox .form-type--boolean {
@@ -110,8 +110,8 @@
 
 @media screen and (max-width: 37.5em) {
   .claro-details__wrapper .file-widget-multiple__table-wrapper {
-    margin-right: calc(var(--space-m)*-1);
-    margin-left: calc(var(--space-m)*-1);
+    margin-right: calc(var(--space-m) * -1);
+    margin-left: calc(var(--space-m) * -1);
   }
 
   .claro-details__wrapper .file-widget-multiple__table-wrapper > :not(table) {
diff --git a/core/themes/claro/css/components/tabledrag.css b/core/themes/claro/css/components/tabledrag.css
index 52609d767a6edb2d23fb394ca2bc988556615ece..3ba613ae02b70da5cdf0aa918ba35cdb81096769 100644
--- a/core/themes/claro/css/components/tabledrag.css
+++ b/core/themes/claro/css/components/tabledrag.css
@@ -58,11 +58,11 @@ body.drag {
 
 .draggable .tabledrag-changed {
   position: relative;
-  left: calc(var(--space-xs)*-1); /* LTR */
+  left: calc(var(--space-xs) * -1); /* LTR */
 }
 
 [dir="rtl"] .draggable .tabledrag-changed {
-  right: calc(var(--space-xs)*-1); /* LTR */
+  right: calc(var(--space-xs) * -1); /* LTR */
   left: auto;
 }
 
@@ -124,7 +124,7 @@ body.drag {
   display: inline-block;
   width: var(--tabledrag-handle-icon-size);
   height: var(--tabledrag-handle-icon-size);
-  margin-left: calc(var(--space-m)*-1); /* LTR */
+  margin-left: calc(var(--space-m) * -1); /* LTR */
   padding: var(--space-xs) var(--space-m);
   content: "";
   transition: transform 0.1s ease-in-out 0s;
@@ -132,7 +132,7 @@ body.drag {
 }
 
 [dir="rtl"] .tabledrag-handle::after {
-  margin-right: calc(var(--space-m)*-1);
+  margin-right: calc(var(--space-m) * -1);
   margin-left: 0;
 }
 
@@ -174,9 +174,9 @@ body.drag {
 
 .tabledrag-handle:focus::before {
   display: block;
-  width: calc(var(--space-m) + var(--space-xs)*2); /* Same as height. */
-  height: calc(var(--space-m) + var(--space-xs)*2); /* Hande svg height + its vertical padding */
-  margin: 0 calc(var(--space-xs)*-1) calc(var(--space-m)*-1 + var(--space-xs)*2*-1); /* Bottom: handle height as negative value. */
+  width: calc(var(--space-m) + (var(--space-xs) * 2)); /* Same as height. */
+  height: calc(var(--space-m) + (var(--space-xs) * 2)); /* Hande svg height + its vertical padding */
+  margin: 0 calc(var(--space-xs) * -1) calc((var(--space-m) + (var(--space-xs) * 2)) * -1); /* Bottom: handle height as negative value. */
   content: "";
   border-radius: var(--base-border-radius);
   outline: var(--outline-size) dotted transparent;
@@ -317,16 +317,16 @@ body.drag {
 
 .indentation {
   position: relative;
-  left: calc(var(--space-xs)*-0.5); /* LTR */
+  left: calc(var(--space-xs) * -0.5); /* LTR */
   float: left; /* LTR */
-  width: 1.5625rem; /* 25px */
-  height: 1.5625rem; /* 25px */
+  width: calc(25rem / 16); /* 25px */
+  height: calc(25rem / 16); /* 25px */
   background: none !important;
   line-height: 0;
 }
 
 [dir="rtl"] .indentation {
-  right: calc(var(--space-xs)*-0.5);
+  right: calc(var(--space-xs) * -0.5);
   left: auto;
   float: right;
 }
@@ -340,8 +340,8 @@ body.drag {
  */
 
 .tree {
-  width: 1.5625rem; /* 25px */
-  height: 1.5625rem; /* 25px */
+  width: calc(25rem / 16); /* 25px */
+  height: calc(25rem / 16); /* 25px */
 }
 
 .tree__item {
diff --git a/core/themes/claro/css/components/tables.css b/core/themes/claro/css/components/tables.css
index de912499c2bfc72df8d21f7d0ef11e89164b873b..744114f78638b7ae3bf7eada8d2648d763bc73d4 100644
--- a/core/themes/claro/css/components/tables.css
+++ b/core/themes/claro/css/components/tables.css
@@ -302,7 +302,7 @@ td.priority-medium {
 
 .tabledrag-toggle-weight-wrapper {
   margin-top: var(--space-l);
-  line-height: 1.75rem;
+  line-height: calc(28rem / 16);
 }
 
 .tabledrag-toggle-weight-wrapper + table,
diff --git a/core/themes/claro/css/components/tabs.css b/core/themes/claro/css/components/tabs.css
index 9a77fd2a37f17fb6afac2c4d58c6b54fed4dc11b..0eb2c5f7a2ae54c6bf92493e5e7d1ac29874cf4c 100644
--- a/core/themes/claro/css/components/tabs.css
+++ b/core/themes/claro/css/components/tabs.css
@@ -161,7 +161,7 @@
 }
 
 .tabs__tab.is-active:focus::before {
-  top: calc(var(--tabs--focus-height)*-1);
+  top: calc(var(--tabs--focus-height) * -1);
   height: calc(var(--tabs-link-height) + 2px);
 }
 
@@ -219,7 +219,7 @@
 
   .is-horizontal .tabs--secondary {
     overflow: hidden;
-    margin: calc(var(--tabs--focus-height)*-1 + -0.1875rem) calc(var(--tabs--focus-height)*-1 + -0.1875rem) 0;
+    margin: calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) calc(calc(var(--tabs--focus-height) + 0.1875rem) * -1) 0;
     padding: calc(var(--tabs--focus-height) + 0.1875rem) calc(var(--tabs--focus-height) + 0.1875rem) 0;
     border-radius: 0;
   }
diff --git a/core/themes/claro/css/components/vertical-tabs.css b/core/themes/claro/css/components/vertical-tabs.css
index b262da08d2167955806d4678d11916b8d088506c..6c86da87ea25f6417bc2f530505c35877a9530aa 100644
--- a/core/themes/claro/css/components/vertical-tabs.css
+++ b/core/themes/claro/css/components/vertical-tabs.css
@@ -77,7 +77,7 @@
   z-index: 1; /* The line should be kept above the vertical tabs menu link to keep it visible even if the link is hovered and gets the 'hover' background color. */
   display: block;
   width: 100%;
-  margin-top: calc(var(--vertical-tabs-menu-separator-size)*-1);
+  margin-top: calc(var(--vertical-tabs-menu-separator-size) * -1);
   border-top: var(--vertical-tabs-menu-separator-size) solid var(--vertical-tabs-menu-separator-color);
 }
 
@@ -129,7 +129,7 @@
 .vertical-tabs__menu-link {
   position: relative;
   display: block;
-  margin-top: calc(var(--vertical-tabs-border-size)*-1);
+  margin-top: calc(var(--vertical-tabs-border-size) * -1);
   padding: var(--space-s) var(--space-s) var(--space-s) calc(var(--space-l) - var(--vertical-tabs-menu-link--active-border-size)); /* LTR */
   text-decoration: none;
   word-wrap: break-word;
@@ -172,17 +172,17 @@
 .vertical-tabs__menu-link::before {
   position: absolute;
   z-index: 0; /* This should be on a lower level than the menu-item separator lines. */
-  top: calc(var(--vertical-tabs-border-size)*-1);
+  top: calc(var(--vertical-tabs-border-size) * -1);
   right: 0; /* LTR */
-  bottom: calc(var(--vertical-tabs-border-size)*-1);
-  left: calc(var(--vertical-tabs-menu-link--active-border-size)*-1); /* LTR */
+  bottom: calc(var(--vertical-tabs-border-size) * -1);
+  left: calc(var(--vertical-tabs-menu-link--active-border-size) * -1); /* LTR */
   content: "";
   pointer-events: none;
   background-clip: padding-box;
 }
 
 [dir="rtl"] .vertical-tabs__menu-link::before {
-  right: calc(var(--vertical-tabs-menu-link--active-border-size)*-1);
+  right: calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
   left: 0;
 }
 
@@ -196,7 +196,7 @@
   right: 0;
   bottom: 0;
   left: 0;
-  margin: calc(var(--vertical-tabs-border-size)*-1) calc(var(--vertical-tabs-menu-link--active-border-size)*-1);
+  margin: calc(var(--vertical-tabs-border-size) * -1) calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
   content: "";
   pointer-events: none;
   border: var(--vertical-tabs-menu-link-focus-border-size) solid var(--color-focus);
@@ -316,7 +316,7 @@
 
 .vertical-tabs__item {
   /* Render on top of the border of vertical-tabs__items. */
-  margin: calc(var(--vertical-tabs-border-size)*-1) calc(var(--vertical-tabs-border-size)*-1) 0;
+  margin: calc(var(--vertical-tabs-border-size) * -1) calc(var(--vertical-tabs-border-size) * -1) 0;
   border-radius: 0;
 }
 
@@ -326,7 +326,7 @@
 }
 
 .vertical-tabs__item.last {
-  margin-bottom: calc(var(--vertical-tabs-border-size)*-1);
+  margin-bottom: calc(var(--vertical-tabs-border-size) * -1);
   border-bottom-right-radius: var(--details-accordion-border-size-radius);
   border-bottom-left-radius: var(--details-accordion-border-size-radius);
 }
diff --git a/core/themes/claro/css/components/views-ui.css b/core/themes/claro/css/components/views-ui.css
index 5e1dc6f97c94d852dd5cb7476bb4945a16aca67d..de3925d6a9c4144959e1f3289bb1b8921d273c54 100644
--- a/core/themes/claro/css/components/views-ui.css
+++ b/core/themes/claro/css/components/views-ui.css
@@ -99,14 +99,14 @@ details.fieldset-no-legend {
 }
 
 .views-ui-dialog .form-element {
-  min-height: calc(var(--input-padding-vertical--small)*2 + var(--input-border-size)*2 + var(--input-line-height--small)); /* iOS. */
+  min-height: calc(((var(--input-padding-vertical--small) + var(--input-border-size)) * 2) + var(--input-line-height--small)); /* iOS. */
   padding: var(--input-padding-vertical--small) var(--input-padding-horizontal--small);
   font-size: var(--input-font-size--small);
   line-height: var(--input-line-height--small);
 }
 
 .views-ui-dialog .form-element--type-select {
-  padding-right: calc(var(--space-m)*2 + var(--input-border-size)*2);
+  padding-right: calc((var(--space-m) * 2) + var(--input-border-size) * 2);
   background-position: 100% 56%;
 }
 
@@ -184,7 +184,7 @@ details.fieldset-no-legend {
 }
 
 .views-display-top__extra-actions-wrapper {
-  margin: calc(var(--space-xs)/2) var(--space-xs) var(--space-xs);
+  margin: calc(var(--space-xs) / 2) var(--space-xs) var(--space-xs);
 }
 
 /* @end */
@@ -320,7 +320,7 @@ details.fieldset-no-legend {
 .views-tabs .add a::before {
   display: inline-block;
   width: 1em;
-  height: calc(1em - var(--input-border-size)*2);
+  height: calc(1em - (var(--input-border-size) * 2));
   content: "";
   /* Copy of icon from .action-link--icon-plus */
   background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' stroke-width='2' stroke='%23545560'%3E%3Cpath d='m3 8h10'/%3E%3Cpath d='m8 3v10'/%3E%3C/svg%3E");
@@ -686,6 +686,6 @@ details.fieldset-no-legend {
   }
   [dir="rtl"] .views-display-top__extra-actions-wrapper {
     margin-right: auto;
-    margin-left: calc(var(--space-xs)/2);
+    margin-left: calc(var(--space-xs) / 2);
   }
 }
diff --git a/core/themes/claro/css/layout/card-list.css b/core/themes/claro/css/layout/card-list.css
index a2e62741bd27c2bac24b08b23cf4f751e0c3b4c8..50ed09626669d6caeb50e1b2516391007413aac7 100644
--- a/core/themes/claro/css/layout/card-list.css
+++ b/core/themes/claro/css/layout/card-list.css
@@ -13,9 +13,9 @@
 :root {
   --card-list-spacing: var(--space-m);
   /* Using 100% as base causes issues in IE11. */
-  --cards-two-cols-width: calc(49.95% + var(--card-list-spacing)/2 - var(--card-list-spacing));
-  --cards-three-cols-width: calc(33.3% + var(--card-list-spacing)/3 - var(--card-list-spacing));
-  --cards-four-cols-width: calc(24.975% + var(--card-list-spacing)/4 - var(--card-list-spacing));
+  --cards-two-cols-width: calc(((99.9% + var(--card-list-spacing)) / 2) - var(--card-list-spacing));
+  --cards-three-cols-width: calc(((99.9% + var(--card-list-spacing)) / 3) - var(--card-list-spacing));
+  --cards-four-cols-width: calc(((99.9% + var(--card-list-spacing)) / 4) - var(--card-list-spacing));
 }
 
 .card-list {
diff --git a/core/themes/claro/css/layout/local-actions.css b/core/themes/claro/css/layout/local-actions.css
index b1970d6a873ee2217e5abe9c7e4c1ea66a70c3f7..f637bc563889d77e1eb6c8e90b13bb27a0892975 100644
--- a/core/themes/claro/css/layout/local-actions.css
+++ b/core/themes/claro/css/layout/local-actions.css
@@ -28,7 +28,7 @@
 
 .local-actions__item {
   display: inline-block;
-  margin: 0 calc(var(--space-xs)/2);
+  margin: 0 calc(var(--space-xs) / 2);
 }
 
 .local-actions__item:first-child {
@@ -37,7 +37,7 @@
 
 [dir="rtl"] .local-actions__item:first-child {
   margin-right: 0;
-  margin-left: calc(var(--space-xs)/2);
+  margin-left: calc(var(--space-xs) / 2);
 }
 
 .local-actions__item:last-child {
@@ -45,7 +45,7 @@
 }
 
 [dir="rtl"] .local-actions__item:last-child {
-  margin-right: calc(var(--space-xs)/2);
+  margin-right: calc(var(--space-xs) / 2);
   margin-left: 0;
 }
 
diff --git a/core/themes/claro/css/theme/media-library.css b/core/themes/claro/css/theme/media-library.css
index af3d302112612fc05ef128833d91100f6e291786..cbcf6b6b47c76f0851b13e64c6a2fcb34ca56dd7 100644
--- a/core/themes/claro/css/theme/media-library.css
+++ b/core/themes/claro/css/theme/media-library.css
@@ -61,7 +61,7 @@
   z-index: var(--vertical-tabs-menu--z-index); /* The line should be kept above the vertical tabs menu link to keep it visible even if the link is hovered and gets the 'hover' background color. */
   display: block;
   width: 100%;
-  margin-top: calc(var(--vertical-tabs-menu-separator-size)*-1);
+  margin-top: calc(var(--vertical-tabs-menu-separator-size) * -1);
   content: "";
   border-top: var(--vertical-tabs-menu-separator-size) solid var(--vertical-tabs-menu-separator-color);
 }
@@ -69,7 +69,7 @@
 .media-library-menu__link {
   position: relative;
   display: block;
-  margin-top: calc(var(--vertical-tabs-border-size)*-1);
+  margin-top: calc(var(--vertical-tabs-border-size) * -1);
   padding: var(--space-s) var(--space-s) var(--space-s) calc(var(--space-l) - var(--vertical-tabs-menu-link--active-border-size)); /* LTR */
   text-decoration: none;
   word-wrap: break-word;
@@ -116,17 +116,17 @@
 .media-library-menu__link::before {
   position: absolute;
   z-index: calc(var(--vertical-tabs-menu--z-index) - 1); /* This should be on a lower level than the menu-item separator lines. */
-  top: calc(var(--vertical-tabs-border-size)*-1);
+  top: calc(var(--vertical-tabs-border-size) * -1);
   right: 0; /* LTR */
-  bottom: calc(var(--vertical-tabs-border-size)*-1);
-  left: calc(var(--vertical-tabs-menu-link--active-border-size)*-1); /* LTR */
+  bottom: calc(var(--vertical-tabs-border-size) * -1);
+  left: calc(var(--vertical-tabs-menu-link--active-border-size) * -1); /* LTR */
   content: "";
   pointer-events: none;
   background-clip: padding-box;
 }
 
 [dir="rtl"] .media-library-menu__link::before {
-  right: calc(var(--vertical-tabs-menu-link--active-border-size)*-1);
+  right: calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
   left: 0;
 }
 
@@ -136,7 +136,7 @@
   right: 0;
   bottom: 0;
   left: 0;
-  margin: calc(var(--vertical-tabs-border-size)*-1) calc(var(--vertical-tabs-menu-link--active-border-size)*-1);
+  margin: calc(var(--vertical-tabs-border-size) * -1) calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
   content: "";
   pointer-events: none;
   border: var(--vertical-tabs-menu-link-focus-border-size) solid var(--color-focus);
@@ -217,7 +217,7 @@
 .media-library-add-form__added-media .media-library-add-form__remove-button.button--extrasmall {
   margin: var(--space-xs) 0; /* LTR */
   /* Left padding is double the background size of the button icon. */
-  padding: calc(var(--space-xs)/2 - 1px) calc(var(--space-s) - 1px) calc(var(--space-xs)/2 - 1px) calc(var(--space-s)*2);
+  padding: calc(calc(var(--space-xs) / 2) - 1px) calc(var(--space-s) - 1px) calc(calc(var(--space-xs) / 2) - 1px) calc(var(--space-s) * 2);
 }
 
 /* This is needed to override the default extrasmall button left margin. */
@@ -259,10 +259,10 @@
 
 @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
   .ui-dialog > .ui-dialog-content {
-    padding-right: calc(var(--space-s) - var(--focus-border-size) - var(--focus-border-offset-size) - 2px);
+    padding-right: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
   }
   [dir="rtl"] .ui-dialog > .ui-dialog-content {
-    padding-left: calc(var(--space-s) - var(--focus-border-size) - var(--focus-border-offset-size) - 2px);
+    padding-left: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
   }
 }
 
@@ -702,7 +702,7 @@
 .media-library-item__name {
   display: block;
   overflow: hidden;
-  margin: calc(var(--space-xs)/2) var(--space-xs);
+  margin: calc(var(--space-xs) / 2) var(--space-xs);
   white-space: nowrap;
   text-overflow: ellipsis;
   font-size: 0.875rem;
diff --git a/core/themes/olivero/css/base/variables.css b/core/themes/olivero/css/base/variables.css
index 7f6506009f154813c02f6d5ea993b4714308aba2..5bff906d94b6ff16940078bb8eb18450435c905a 100644
--- a/core/themes/olivero/css/base/variables.css
+++ b/core/themes/olivero/css/base/variables.css
@@ -71,7 +71,7 @@
   --grid-gap: var(--sp);
   --grid-gap-count: calc(var(--grid-col-count) - 1); /* Count of grid-gaps. */
   --grid-full-width: calc(100vw - var(--sp2) - var(--scrollbar-width)); /* Width of the entire grid. */
-  --grid-col-width: calc((var(--grid-full-width) - var(--grid-gap-count)*var(--grid-gap))/var(--grid-col-count)); /* Width of a grid column. */
+  --grid-col-width: calc((var(--grid-full-width) - (var(--grid-gap-count) * var(--grid-gap))) / var(--grid-col-count)); /* Width of a grid column. */
 }
 
 @media (min-width: 43.75rem) {
@@ -106,23 +106,23 @@
 :root {
 
   /* Layout helpers */
-  --sp0-25: calc(var(--sp)*0.25);
-  --sp0-5: calc(var(--sp)*0.5);
-  --sp0-75: calc(var(--sp)*0.75);
-  --sp1: calc(var(--sp)*1);
-  --sp1-5: calc(var(--sp)*1.5);
-  --sp2: calc(var(--sp)*2);
-  --sp2-5: calc(var(--sp)*2.5);
-  --sp3: calc(var(--sp)*3);
-  --sp4: calc(var(--sp)*4);
-  --sp5: calc(var(--sp)*5);
-  --sp6: calc(var(--sp)*6);
-  --sp7: calc(var(--sp)*7);
-  --sp8: calc(var(--sp)*8);
-  --sp9: calc(var(--sp)*9);
-  --sp10: calc(var(--sp)*10);
-  --sp11: calc(var(--sp)*11);
-  --sp12: calc(var(--sp)*12);
+  --sp0-25: calc(0.25 * var(--sp));
+  --sp0-5: calc(0.5 * var(--sp));
+  --sp0-75: calc(0.75 * var(--sp));
+  --sp1: calc(1 * var(--sp));
+  --sp1-5: calc(1.5 * var(--sp));
+  --sp2: calc(2 * var(--sp));
+  --sp2-5: calc(2.5 * var(--sp));
+  --sp3: calc(3 * var(--sp));
+  --sp4: calc(4 * var(--sp));
+  --sp5: calc(5 * var(--sp));
+  --sp6: calc(6 * var(--sp));
+  --sp7: calc(7 * var(--sp));
+  --sp8: calc(8 * var(--sp));
+  --sp9: calc(9 * var(--sp));
+  --sp10: calc(10 * var(--sp));
+  --sp11: calc(11 * var(--sp));
+  --sp12: calc(12 * var(--sp));
 
   /**
    * Gray colors.
@@ -150,10 +150,10 @@
   --color--primary-hue: 202;
   --color--primary-saturation: 79%;
   --color--primary-lightness: 50;
-  --color--primary-30: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1%*(var(--color--primary-lightness) - var(--color--primary-lightness)*0.36)));
-  --color--primary-40: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1%*(var(--color--primary-lightness) - var(--color--primary-lightness)*0.24))); /* Blue dark */
-  --color--primary-50: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1%*var(--color--primary-lightness))); /* Blue medium */
-  --color--primary-60: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1%*(var(--color--primary-lightness) + 24 - var(--color--primary-lightness)*0.24))); /* Blue bright */
+  --color--primary-30: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.36 * var(--color--primary-lightness)))));
+  --color--primary-40: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.24 * var(--color--primary-lightness))))); /* Blue dark */
+  --color--primary-50: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * var(--color--primary-lightness))); /* Blue medium */
+  --color--primary-60: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.24 * (100 - var(--color--primary-lightness)))))); /* Blue bright */
 
   /**
    * Named Colors.
@@ -165,7 +165,7 @@
   --color--green: #3fa21c; /* Green */
 
   /* Header */
-  --header-height-wide-when-fixed: calc(var(--sp)*6);
+  --header-height-wide-when-fixed: calc(6 * var(--sp));
 
   /* Width of slide out navigation */
   --mobile-nav-width: 31.25rem;
diff --git a/core/themes/olivero/css/components/breadcrumb.css b/core/themes/olivero/css/components/breadcrumb.css
index 4261d7f52498fa5ab0a2de8e43e62ce5dba04b6d..400ed1b653cbfc283958d6b1e469ac6f6f8795cb 100644
--- a/core/themes/olivero/css/components/breadcrumb.css
+++ b/core/themes/olivero/css/components/breadcrumb.css
@@ -33,11 +33,11 @@
 }
 
 [dir="ltr"] .breadcrumb:after {
-    right: calc(var(--sp1)*-1)
+    right: calc(var(--sp1) * -1)
 }
 
 [dir="rtl"] .breadcrumb:after {
-    left: calc(var(--sp1)*-1)
+    left: calc(var(--sp1) * -1)
 }
 
 .breadcrumb:after {
@@ -68,19 +68,19 @@
 }
 
 [dir="ltr"] .breadcrumb__content {
-  margin-left: calc(var(--sp0-5)*-1)
+  margin-left: calc(var(--sp0-5) * -1)
 }
 
 [dir="rtl"] .breadcrumb__content {
-  margin-right: calc(var(--sp0-5)*-1)
+  margin-right: calc(var(--sp0-5) * -1)
 }
 
 [dir="ltr"] .breadcrumb__content {
-  margin-right: calc(var(--sp1)*-1)
+  margin-right: calc(var(--sp1) * -1)
 }
 
 [dir="rtl"] .breadcrumb__content {
-  margin-left: calc(var(--sp1)*-1)
+  margin-left: calc(var(--sp1) * -1)
 }
 
 [dir="ltr"] .breadcrumb__content {
@@ -93,8 +93,8 @@
 
 .breadcrumb__content {
   overflow: auto;
-  margin-top: calc(var(--sp0-5)*-1);
-  margin-bottom: calc(var(--sp0-5)*-1);
+  margin-top: calc(var(--sp0-5) * -1);
+  margin-bottom: calc(var(--sp0-5) * -1);
   padding-top: var(--sp0-5);
   padding-bottom: var(--sp0-5);
   -webkit-overflow-scrolling: touch
@@ -112,19 +112,19 @@
   }
 
 [dir="ltr"] .breadcrumb__list {
-  margin-left: calc(var(--sp1)*-1)
+  margin-left: calc(var(--sp1) * -1)
 }
 
 [dir="rtl"] .breadcrumb__list {
-  margin-right: calc(var(--sp1)*-1)
+  margin-right: calc(var(--sp1) * -1)
 }
 
 [dir="ltr"] .breadcrumb__list {
-  margin-right: calc(var(--sp1)*-1)
+  margin-right: calc(var(--sp1) * -1)
 }
 
 [dir="rtl"] .breadcrumb__list {
-  margin-left: calc(var(--sp1)*-1)
+  margin-left: calc(var(--sp1) * -1)
 }
 
 [dir="ltr"] .breadcrumb__list {
diff --git a/core/themes/olivero/css/components/button.css b/core/themes/olivero/css/components/button.css
index 0ee98940c439bf4ab0e418fcb4b5eb82cf6bdf03..7122cc4d85bc9c1c046f8942a43b43b91ae47fbb 100644
--- a/core/themes/olivero/css/components/button.css
+++ b/core/themes/olivero/css/components/button.css
@@ -44,8 +44,8 @@
   height: var(--sp3);
   margin-top: var(--sp1);
   margin-bottom: var(--sp1);
-  padding-top: calc(var(--sp3)/2 - var(--line-height-s)/2);
-  padding-bottom: calc(var(--sp3)/2 - var(--line-height-s)/2);
+  padding-top: calc((var(--sp3) - var(--line-height-s)) / 2);
+  padding-bottom: calc((var(--sp3) - var(--line-height-s)) / 2);
   padding-left: var(--sp1-5);
   padding-right: var(--sp1-5);
   cursor: pointer;
@@ -137,8 +137,8 @@
 
 .button--small {
   height: var(--sp2-5);
-  padding-top: calc(var(--sp2-5)/2 - var(--line-height-s)/2);
-  padding-bottom: calc(var(--sp2-5)/2 - var(--line-height-s)/2);
+  padding-top: calc((var(--sp2-5) - var(--line-height-s)) / 2);
+  padding-bottom: calc((var(--sp2-5) - var(--line-height-s)) / 2);
   padding-left: var(--sp);
   padding-right: var(--sp);
   font-size: var(--font-size-base);
diff --git a/core/themes/olivero/css/components/comments.css b/core/themes/olivero/css/components/comments.css
index a7dbf0b3c98deb18b8a15c4587c6820c35ef6ab6..66a8e418bdb6bcbdaad121c6c4004d42e5d55b81 100644
--- a/core/themes/olivero/css/components/comments.css
+++ b/core/themes/olivero/css/components/comments.css
@@ -241,12 +241,12 @@
 
 [dir="ltr"] .add-comment__picture,[dir="ltr"] 
 .comment__picture {
-    left: calc(var(--sp5)*-1);
+    left: calc(-1 * var(--sp5));
   }
 
 [dir="rtl"] .add-comment__picture,[dir="rtl"] 
 .comment__picture {
-    right: calc(var(--sp5)*-1);
+    right: calc(-1 * var(--sp5));
   }
 
 .add-comment__picture,
@@ -259,11 +259,11 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .indented .comment__picture {
-    left: calc(var(--sp4)*-1);
+    left: calc(-1 * var(--sp4));
   }
 
 [dir="rtl"] .indented .comment__picture {
-    right: calc(var(--sp4)*-1);
+    right: calc(-1 * var(--sp4));
   }
 
 .indented .comment__picture {
@@ -312,11 +312,11 @@
 }
 
 [dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
-    left: calc(var(--comment-indentation)*-1 - var(--sp));
+    left: calc(-1 * var(--comment-indentation) - var(--sp));
 }
 
 [dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before {
-    right: calc(var(--comment-indentation)*-1 - var(--sp));
+    right: calc(-1 * var(--comment-indentation) - var(--sp));
 }
 
 [dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
@@ -338,11 +338,11 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
-      left: calc(var(--comment-indentation--md)*-1 + var(--sp));
+      left: calc(-1 * var(--comment-indentation--md) + var(--sp));
   }
 
 [dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before {
-      right: calc(var(--comment-indentation--md)*-1 + var(--sp));
+      right: calc(-1 * var(--comment-indentation--md) + var(--sp));
   }
     }
 
diff --git a/core/themes/olivero/css/components/content-moderation.css b/core/themes/olivero/css/components/content-moderation.css
index e633431a363ff1b9af1492cdf198beea77c4facb..b2df805ea7258a01c828295ddfe5dc5c30b53ff9 100644
--- a/core/themes/olivero/css/components/content-moderation.css
+++ b/core/themes/olivero/css/components/content-moderation.css
@@ -110,15 +110,15 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-left: calc(var(--grid-col-width)*-2 + var(--grid-gap)*-2)
+      margin-left: calc(-2 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-right: calc(var(--grid-col-width)*-2 + var(--grid-gap)*-2)
+      margin-right: calc(-2 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 .layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(var(--grid-col-count)*var(--grid-col-width) + var(--grid-gap-count)*var(--grid-gap));
+      width: calc(var(--grid-col-count) * var(--grid-col-width) + var(--grid-gap-count) * var(--grid-gap));
       margin-top: var(--sp2);
       margin-bottom: var(--sp4)
   }
@@ -127,15 +127,15 @@
 @media (min-width: 62.5rem) {
 
 [dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+      margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+      margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 .layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(var(--grid-col-width)*12 + var(--grid-gap)*11)
+      width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap))
   }
     }
 
@@ -150,6 +150,6 @@
   }
 
 .layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(var(--grid-col-width)*10 + var(--grid-gap)*11)
+      width: calc(10 * var(--grid-col-width) + 11 * var(--grid-gap))
   }
     }
diff --git a/core/themes/olivero/css/components/details.css b/core/themes/olivero/css/components/details.css
index 857ef6ef7781624800631441db44518199539767..e899d4e27377e11a35394b67eb0582e36cff9e4f 100644
--- a/core/themes/olivero/css/components/details.css
+++ b/core/themes/olivero/css/components/details.css
@@ -108,10 +108,10 @@
 .olivero-details__summary:after,
 .collapse-processed > .olivero-details__summary .details-title:after {
   position: absolute;
-  top: calc(var(--details-border-width)*-1);
-  right: calc(var(--details-border-width)*-1);
-  bottom: calc(var(--details-border-width)*-1);
-  left: calc(var(--details-border-width)*-1);
+  top: calc(var(--details-border-width) * -1);
+  right: calc(var(--details-border-width) * -1);
+  bottom: calc(var(--details-border-width) * -1);
+  left: calc(var(--details-border-width) * -1);
   content: "";
   pointer-events: none;
   opacity: 0;
diff --git a/core/themes/olivero/css/components/embedded-media.css b/core/themes/olivero/css/components/embedded-media.css
index d08bc3d75a7614f3aa804bea81fc1f2c8119cfb6..cf7c5648cbd44f1b977202d5e3b3b54474c29fa6 100644
--- a/core/themes/olivero/css/components/embedded-media.css
+++ b/core/themes/olivero/css/components/embedded-media.css
@@ -145,12 +145,12 @@ figcaption {
 
 [dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1);
+    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
 
 [dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1);
+    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
   }
 
@@ -158,12 +158,12 @@ figcaption {
 
 [dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(var(--grid-col-width)*-2 + var(--grid-gap)*-2);
+    margin-right: calc(-2 * ((var(--grid-col-width) + var(--grid-gap))));
   }
 
 [dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-left: calc(var(--grid-col-width)*-2 + var(--grid-gap)*-2);
+    margin-left: calc(-2 * ((var(--grid-col-width) + var(--grid-gap))));
   }
   }
 
@@ -171,12 +171,12 @@ figcaption {
 
 [dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(var(--grid-col-width)*-3 + var(--grid-gap)*-3);
+    margin-right: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
 
 [dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-left: calc(var(--grid-col-width)*-3 + var(--grid-gap)*-3);
+    margin-left: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
   }
 
@@ -184,12 +184,12 @@ figcaption {
 
 [dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(var(--grid-col-width)*-3 + var(--grid-gap)*-3);
+    margin-right: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
 
 [dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
 .layout--pass--content-narrow > * .align-right {
-    margin-left: calc(var(--grid-col-width)*-3 + var(--grid-gap)*-3);
+    margin-left: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
   }
 
@@ -255,12 +255,12 @@ figcaption {
 
 [dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
 .layout--pass--content-narrow > * .align-left {
-    margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1);
+    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
 
 [dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
 .layout--pass--content-narrow > * .align-left {
-    margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1);
+    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
   }
 
diff --git a/core/themes/olivero/css/components/header-navigation.css b/core/themes/olivero/css/components/header-navigation.css
index a8cfdd83bb503bb9307bbe95593550822832749a..42c18c406b6e26d49b27b576042a38e3604a1368 100644
--- a/core/themes/olivero/css/components/header-navigation.css
+++ b/core/themes/olivero/css/components/header-navigation.css
@@ -246,7 +246,7 @@ body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .he
 
 body.is-always-mobile-nav .header-nav {
       overflow: auto;
-      max-width: calc(var(--grid-col-width)*7 + var(--grid-gap)*7);
+      max-width: calc((7 * (var(--grid-col-width) + var(--grid-gap))));
       transition: transform 0.2s, visibility 0.2s;
       border-top-width: var(--sp11)
   }
@@ -255,15 +255,15 @@ body.is-always-mobile-nav .header-nav {
 @media (min-width: 90rem) {
 
 [dir="ltr"] body.is-always-mobile-nav .header-nav {
-      padding-right: calc(100vw - var(--max-width) - var(--content-left) + var(--sp))
+      padding-right: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)))
   }
 
 [dir="rtl"] body.is-always-mobile-nav .header-nav {
-      padding-left: calc(100vw - var(--max-width) - var(--content-left) + var(--sp))
+      padding-left: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)))
   }
 
 body.is-always-mobile-nav .header-nav {
-      max-width: calc(100vw - var(--max-width) - var(--content-left) + var(--grid-col-width)*7 + var(--grid-gap)*7)
+      max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width) + var(--grid-gap)))))
   }
     }
 
diff --git a/core/themes/olivero/css/components/header-search-narrow.css b/core/themes/olivero/css/components/header-search-narrow.css
index ecd8a7b8f58dd57357a88f35d3a4a7a3e674c8c7..37e66901067f03b15b060794461ffa0962e2f56f 100644
--- a/core/themes/olivero/css/components/header-search-narrow.css
+++ b/core/themes/olivero/css/components/header-search-narrow.css
@@ -24,8 +24,8 @@
 /* Width of the entire grid maxes out. */
 
 .block-search-narrow {
-  margin-left: calc(var(--sp)*-1);
-  margin-right: calc(var(--sp)*-1);
+  margin-left: calc(-1 * var(--sp));
+  margin-right: calc(-1 * var(--sp));
   margin-bottom: var(--sp2);
   background: var(--color--black)
 }
@@ -61,7 +61,7 @@
 
 .block-search-narrow input[type="search"] {
     width: calc(100% + var(--sp2));
-    height: calc(var(--sp)*3);
+    height: calc(3 * var(--sp));
     padding-top: 0;
     padding-bottom: 0;
     transition: background-size 0.4s;
@@ -120,7 +120,7 @@
   }
 
 .block-search-narrow input[type="search"] {
-      height: calc(var(--sp)*4)
+      height: calc(4 * var(--sp))
   }
     }
 
diff --git a/core/themes/olivero/css/components/header-site-branding.css b/core/themes/olivero/css/components/header-site-branding.css
index 29094e934c0ecba1849b345d00b1366a927ae163..53e0971aeb2403be5024d24b0db360b01b9f1de2 100644
--- a/core/themes/olivero/css/components/header-site-branding.css
+++ b/core/themes/olivero/css/components/header-site-branding.css
@@ -24,12 +24,12 @@
 /* Width of the entire grid maxes out. */
 
 [dir="ltr"] .site-branding {
-  margin-left: calc(var(--container-padding)*-1);
+  margin-left: calc(-1 * var(--container-padding));
   margin-right: var(--sp)
 }
 
 [dir="rtl"] .site-branding {
-  margin-right: calc(var(--container-padding)*-1);
+  margin-right: calc(-1 * var(--container-padding));
   margin-left: var(--sp)
 }
 
@@ -53,7 +53,7 @@
   display: flex;
   flex-shrink: 1;
   align-items: flex-end;
-  min-width: calc(var(--grid-col-width)*2 + var(--grid-gap)*2 + var(--container-padding)); /* Span minimum of 2 column widths. */
+  min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding)); /* Span minimum of 2 column widths. */
   min-height: var(--sp3); /* Negative margin to break out of .container element. */
   padding-top: 0;
   padding-bottom: var(--sp0-5);
@@ -70,7 +70,7 @@
 @media (min-width: 43.75rem) {
 
 .site-branding {
-    min-width: calc(var(--grid-col-width)*4 + var(--grid-gap)*4 + var(--container-padding)); /* Span minimum of 4 column widths. */
+    min-width: calc((4 * var(--grid-col-width)) + (4 * var(--grid-gap)) + var(--container-padding)); /* Span minimum of 4 column widths. */
     min-height: var(--sp6);
     padding-bottom: var(--sp)
 }
@@ -79,18 +79,18 @@
 @media (min-width: 62.5rem) {
 
 .site-branding {
-    min-width: calc(var(--grid-col-width)*2 + var(--grid-gap)*2 + var(--container-padding)) /* Span minimum of 2 column widths. */
+    min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding)) /* Span minimum of 2 column widths. */
 }
   }
 
 @media (min-width: 75rem) {
 
 [dir="ltr"] .site-branding {
-    margin-left: calc(var(--container-padding)*-1)
+    margin-left: calc(-1 * var(--container-padding))
   }
 
 [dir="rtl"] .site-branding {
-    margin-right: calc(var(--container-padding)*-1)
+    margin-right: calc(-1 * var(--container-padding))
   }
 
 .site-branding {
diff --git a/core/themes/olivero/css/components/messages.css b/core/themes/olivero/css/components/messages.css
index 4ae935945b2a8c4ceaf2044e41edfd7d02844162..402ed0318cab8df50a50219bdf480524cf080980 100644
--- a/core/themes/olivero/css/components/messages.css
+++ b/core/themes/olivero/css/components/messages.css
@@ -68,7 +68,7 @@
 }
 
 .messages {
-  min-height: calc(var(--messages-icon-size) + var(--sp1)*2);
+  min-height: calc(var(--messages-icon-size) + 2 * var(--sp1));
   padding-top: var(--sp1);
   padding-bottom: var(--sp1);
   color: var(--color--white);
diff --git a/core/themes/olivero/css/components/navigation/nav-primary-button.css b/core/themes/olivero/css/components/navigation/nav-primary-button.css
index 3001a4daf8461fd398104afa5f09acfc2dc8c92c..8f541d1a33f940e589a3b29ff77517a376c859f4 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary-button.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary-button.css
@@ -109,10 +109,10 @@
 
 @media (min-width: 75rem) {
     [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      margin-right: calc(var(--sp2)*-1)
+      margin-right: calc(-1 * var(--sp2))
   }
     [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      margin-left: calc(var(--sp2)*-1)
+      margin-left: calc(-1 * var(--sp2))
   }
     body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
       flex-shrink: 0;
diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.css
index a2fe41788487c085252ce1d8030d4dc5f0397ac0..0a7893585f81cdcae5baf5ebf0e4754dadaeb905 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary-wide.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.css
@@ -207,7 +207,7 @@
     body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
       position: absolute;
       z-index: 105; /* Appear above search container. */
-      top: calc(100% - var(--sp)*0.5);
+      top: calc(100% - (0.5 * var(--sp)));
       left: 50%;
       visibility: hidden;
       overflow: auto;
@@ -218,8 +218,8 @@
        */
       max-height: calc(100vh - var(--site-header-height-wide) - var(--sp));
       margin-top: 0;
-      padding-top: calc(var(--sp)*3);
-      padding-bottom: calc(var(--sp)*3);
+      padding-top: calc(3 * var(--sp));
+      padding-bottom: calc(3 * var(--sp));
       transition: none;
       transform: translate(-50%, -1.25rem);
       opacity: 0;
@@ -246,7 +246,7 @@
 
       body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2:focus:before {
         top: 0;
-        left: calc(var(--sp0-5)*-1);
+        left: calc(var(--sp0-5) * -1);
         height: 100%;
         transform: none;
       }
diff --git a/core/themes/olivero/css/components/navigation/nav-primary.css b/core/themes/olivero/css/components/navigation/nav-primary.css
index ebe39d6482b177d84aaae6e28c45b0dc6de1e9bd..e3a1e8e4ad184319a278e44b336462a3a9bdc17e 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary.css
@@ -268,11 +268,11 @@
 */
 
 [dir="ltr"] .primary-nav__menu--level-2 {
-  margin-left: calc(var(--sp)*-1);
+  margin-left: calc(-1 * var(--sp));
 }
 
 [dir="rtl"] .primary-nav__menu--level-2 {
-  margin-right: calc(var(--sp)*-1);
+  margin-right: calc(-1 * var(--sp));
 }
 
 [dir="ltr"] .primary-nav__menu--level-2 {
@@ -312,11 +312,11 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .primary-nav__menu--level-2 {
-    margin-left: calc(var(--sp3)*-1);
+    margin-left: calc(-1 * var(--sp3));
   }
 
 [dir="rtl"] .primary-nav__menu--level-2 {
-    margin-right: calc(var(--sp3)*-1);
+    margin-right: calc(-1 * var(--sp3));
   }
 
 [dir="ltr"] .primary-nav__menu--level-2 {
diff --git a/core/themes/olivero/css/components/node-teaser.css b/core/themes/olivero/css/components/node-teaser.css
index f7a27e08fef86c3bfd340427a38ac93b5726b64e..2aff68a8016e7efe41d444e0efc75a3d3121c21a 100644
--- a/core/themes/olivero/css/components/node-teaser.css
+++ b/core/themes/olivero/css/components/node-teaser.css
@@ -78,7 +78,7 @@
   }
 
 .node--view-mode-teaser .primary-image + .node__title {
-      flex-basis: calc(100% - var(--sp)*4.5)
+      flex-basis: calc(100% - calc(4.5 * var(--sp)))
     }
 
 @media (min-width: 62.5rem) {
@@ -93,8 +93,8 @@
     }
 
 .node--view-mode-teaser .primary-image img {
-      width: calc(var(--sp)*3.5);
-      height: calc(var(--sp)*3.5);
+      width: calc(3.5 * var(--sp));
+      height: calc(3.5 * var(--sp));
       object-fit: cover;
       border-radius: 50%
     }
@@ -110,11 +110,11 @@
 @media (min-width: 62.5rem) {
 
 [dir="ltr"] .node--view-mode-teaser .primary-image {
-      left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+      left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))))
   }
 
 [dir="rtl"] .node--view-mode-teaser .primary-image {
-      right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+      right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))))
   }
 
 .node--view-mode-teaser .primary-image {
diff --git a/core/themes/olivero/css/components/powered-by-block.css b/core/themes/olivero/css/components/powered-by-block.css
index a312435f18ee632d8e6847555ada531bafd1c488..0c5af952ddc89b2b61365d2cf20d25b97995757e 100644
--- a/core/themes/olivero/css/components/powered-by-block.css
+++ b/core/themes/olivero/css/components/powered-by-block.css
@@ -39,16 +39,16 @@
     }
 
 [dir="ltr"] .block-system-powered-by-block .drupal-logo {
-    margin-left: calc(var(--sp)/4)
+    margin-left: calc(var(--sp) / 4)
 }
 
 [dir="rtl"] .block-system-powered-by-block .drupal-logo {
-    margin-right: calc(var(--sp)/4)
+    margin-right: calc(var(--sp) / 4)
 }
 
 .block-system-powered-by-block .drupal-logo {
     display: inline-block;
-    margin-top: calc(var(--sp)*-1/4);
+    margin-top: calc(-1 * var(--sp) / 4);
   }
 
 .block-system-powered-by-block svg {
diff --git a/core/themes/olivero/css/components/tabs.css b/core/themes/olivero/css/components/tabs.css
index c983740e922f4869431f4961e6d41e4fbfc4e8fe..89a5635e896ad209c8d74576e9fcd565f8726099 100644
--- a/core/themes/olivero/css/components/tabs.css
+++ b/core/themes/olivero/css/components/tabs.css
@@ -62,7 +62,7 @@
 .tabs__tab {
   display: none;
   margin: 0;
-  margin-bottom: calc(var(--tabs-border-width)*-1)
+  margin-bottom: calc(-1 * var(--tabs-border-width))
 }
 
 .tabs__tab.is-active {
@@ -72,11 +72,11 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .tabs__tab {
-    margin-left: calc(var(--tabs-border-width)*-1)
+    margin-left: calc(-1 * var(--tabs-border-width))
   }
 
 [dir="rtl"] .tabs__tab {
-    margin-right: calc(var(--tabs-border-width)*-1)
+    margin-right: calc(-1 * var(--tabs-border-width))
   }
 
 .tabs__tab {
@@ -160,11 +160,11 @@ html:not(.js) .tabs__tab {
   }
 
 [dir="ltr"] .tabs__link.is-active:after {
-      left: calc(var(--tabs-border-width)*-1)
+      left: calc(-1 * var(--tabs-border-width))
 }
 
 [dir="rtl"] .tabs__link.is-active:after {
-      right: calc(var(--tabs-border-width)*-1)
+      right: calc(-1 * var(--tabs-border-width))
 }
 
 [dir="ltr"] .tabs__link.is-active:after {
@@ -177,8 +177,8 @@ html:not(.js) .tabs__tab {
 
 .tabs__link.is-active:after {
       position: absolute;
-      top: calc(var(--tabs-border-width)*-1);
-      height: calc(100% + var(--tabs-border-width)*2);
+      top: calc(-1 * var(--tabs-border-width));
+      height: calc(100% + var(--tabs-border-width) * 2);
       content: ""
     }
 
@@ -194,8 +194,8 @@ html:not(.js) .tabs__tab {
 
 .tabs__link.is-active:after {
         top: auto;
-        bottom: calc(var(--tabs-border-width)*-1);
-        width: calc(100% + var(--tabs-border-width)*2);
+        bottom: calc(-1 * var(--tabs-border-width));
+        width: calc(100% + 2 * var(--tabs-border-width));
         height: 0;
         border-top: var(--tabs-active-border-size) solid var(--tabs-highlight-color)
     }
@@ -217,12 +217,12 @@ html:not(.js) .tabs__tab {
 /* Button that opens and closes primary tabs at narrow viewports. */
 
 [dir="ltr"] .tabs__trigger {
-  margin-left: calc(var(--tabs-border-width)*-1);
+  margin-left: calc(-1 * var(--tabs-border-width));
   margin-right: 0
 }
 
 [dir="rtl"] .tabs__trigger {
-  margin-right: calc(var(--tabs-border-width)*-1);
+  margin-right: calc(-1 * var(--tabs-border-width));
   margin-left: 0
 }
 
@@ -269,7 +269,7 @@ html:not(.js) .tabs__trigger {
   display: block;
   width: var(--sp);
   height: 0.625rem;
-  margin-top: calc(var(--tabs-border-width)*-2)
+  margin-top: calc(-2 * var(--tabs-border-width))
 }
 
 [dir="ltr"] .tabs__trigger-icon > span {
diff --git a/core/themes/olivero/css/components/tags.css b/core/themes/olivero/css/components/tags.css
index d8e25a7901e539fc21f848bb06fd19e3653185cc..445e5994ea68b5366d66765c0bee3eefb80baa3f 100644
--- a/core/themes/olivero/css/components/tags.css
+++ b/core/themes/olivero/css/components/tags.css
@@ -29,11 +29,11 @@
 }
 
 [dir="ltr"] .field--tags__label {
-  margin-right: calc(var(--sp1-5) - var(--sp0-5)/2);
+  margin-right: calc(var(--sp1-5) - (var(--sp0-5) / 2));
 }
 
 [dir="rtl"] .field--tags__label {
-  margin-left: calc(var(--sp1-5) - var(--sp0-5)/2);
+  margin-left: calc(var(--sp1-5) - (var(--sp0-5) / 2));
 }
 
 .field--tags__label {
@@ -78,19 +78,19 @@
 }
 
 [dir="ltr"] .field--tags__items {
-  margin-left: calc(var(--sp0-5)/2*-1);
+  margin-left: calc((var(--sp0-5) / 2) * -1);
 }
 
 [dir="rtl"] .field--tags__items {
-  margin-right: calc(var(--sp0-5)/2*-1);
+  margin-right: calc((var(--sp0-5) / 2) * -1);
 }
 
 [dir="ltr"] .field--tags__items {
-  margin-right: calc(var(--sp0-5)/2*-1);
+  margin-right: calc((var(--sp0-5) / 2) * -1);
 }
 
 [dir="rtl"] .field--tags__items {
-  margin-left: calc(var(--sp0-5)/2*-1);
+  margin-left: calc((var(--sp0-5) / 2) * -1);
 }
 
 [dir="ltr"] .field--tags__items {
@@ -112,33 +112,33 @@
 .field--tags__items {
   display: flex;
   flex-wrap: wrap;
-  margin-top: calc(var(--sp0-5)/2*-1);
-  margin-bottom: calc(var(--sp0-5)/2*-1);
+  margin-top: calc((var(--sp0-5) / 2) * -1);
+  margin-bottom: calc((var(--sp0-5) / 2) * -1);
   padding-top: 0;
   padding-bottom: 0;
   list-style: none;
 }
 
 [dir="ltr"] .field--tags__item {
-  margin-left: calc(var(--sp0-5)/2);
+  margin-left: calc(var(--sp0-5) / 2);
 }
 
 [dir="rtl"] .field--tags__item {
-  margin-right: calc(var(--sp0-5)/2);
+  margin-right: calc(var(--sp0-5) / 2);
 }
 
 [dir="ltr"] .field--tags__item {
-  margin-right: calc(var(--sp0-5)/2);
+  margin-right: calc(var(--sp0-5) / 2);
 }
 
 [dir="rtl"] .field--tags__item {
-  margin-left: calc(var(--sp0-5)/2);
+  margin-left: calc(var(--sp0-5) / 2);
 }
 
 .field--tags__item {
   display: flex;
-  margin-top: calc(var(--sp0-5)/2);
-  margin-bottom: calc(var(--sp0-5)/2);
+  margin-top: calc(var(--sp0-5) / 2);
+  margin-bottom: calc(var(--sp0-5) / 2);
 }
 
 .field--tags__item:nth-last-child(n+2):after {
diff --git a/core/themes/olivero/css/components/text-content.css b/core/themes/olivero/css/components/text-content.css
index dcf573a36d55a6778841bfadb5b5f66699d34faa..c187b924fb65e95bd06f3f03a4c2365edd5d2d7c 100644
--- a/core/themes/olivero/css/components/text-content.css
+++ b/core/themes/olivero/css/components/text-content.css
@@ -202,7 +202,7 @@
 
 .text-content blockquote, .cke_editable blockquote {
       font-size: 2.5rem;
-      line-height: calc(var(--sp)*3.5)
+      line-height: calc(3.5 * var(--sp))
   }
     }
 
diff --git a/core/themes/olivero/css/components/vertical-tabs.css b/core/themes/olivero/css/components/vertical-tabs.css
index f813dc50175181592fb9c25fd63b5dd3a1f300e5..53ba0d794cf2fd693da4191a3061e951c0de3b5f 100644
--- a/core/themes/olivero/css/components/vertical-tabs.css
+++ b/core/themes/olivero/css/components/vertical-tabs.css
@@ -70,7 +70,7 @@
   }
 
 .vertical-tabs__panes {
-  margin-top: calc(var(--vertical-tabs-menu-border-width)*-1)
+  margin-top: calc(var(--vertical-tabs-menu-border-width) * -1)
 }
 
 @media (min-width: 62.5rem) {
@@ -140,11 +140,11 @@
 @media (min-width: 62.5rem) {
 
 [dir="ltr"] .vertical-tabs__menu-item.is-selected {
-    margin-right: calc(var(--vertical-tabs-menu-border-width)*-1);
+    margin-right: calc(var(--vertical-tabs-menu-border-width) * -1);
   }
 
 [dir="rtl"] .vertical-tabs__menu-item.is-selected {
-    margin-left: calc(var(--vertical-tabs-menu-border-width)*-1);
+    margin-left: calc(var(--vertical-tabs-menu-border-width) * -1);
   }
 
 [dir="ltr"] .vertical-tabs__menu-item.is-selected {
diff --git a/core/themes/olivero/css/components/wide-image.css b/core/themes/olivero/css/components/wide-image.css
index 1652d64bf8fd17bcf8081d9a91adf28f51f32a87..ff67e2dd24f9d2421c7109afabaadba079650d4a 100644
--- a/core/themes/olivero/css/components/wide-image.css
+++ b/core/themes/olivero/css/components/wide-image.css
@@ -47,15 +47,15 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .wide-image {
-    margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))))
   }
 
 [dir="rtl"] .wide-image {
-    margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))))
   }
 
 .wide-image {
-    width: calc(var(--grid-col-count)*var(--grid-col-width) + var(--grid-gap-count)*var(--grid-gap));
+    width: calc(var(--grid-col-count) * var(--grid-col-width) + var(--grid-gap-count) * var(--grid-gap));
     margin-top: var(--sp2);
     margin-bottom: var(--sp4)
 }
@@ -64,15 +64,15 @@
 @media (min-width: 62.5rem) {
 
 [dir="ltr"] .wide-image {
-    margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+    margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .wide-image {
-    margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+    margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 .wide-image {
-    width: calc(var(--grid-col-width)*12 + var(--grid-gap)*11)
+    width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap))
 }
   }
 
@@ -81,14 +81,14 @@
 @media (min-width: 62.5rem) {
 
 .sidebar-grid .wide-image {
-    width: calc(var(--grid-col-width)*9 + var(--grid-gap)*8)
+    width: calc(9 * var(--grid-col-width) + 8 * var(--grid-gap))
 }
   }
 
 @media (min-width: 81.25rem) {
 
 .sidebar-grid .wide-image {
-    width: calc(var(--grid-col-width)*10 + var(--grid-gap)*9)
+    width: calc(10 * var(--grid-col-width) + 9 * var(--grid-gap))
 }
   }
 
diff --git a/core/themes/olivero/css/layout/layout-builder-fourcol-section.css b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
index 9ddc38d98b5f1bbd2e295fd0d99fa627b7f33338..57399aadbb6a3c37afb4723cfb3a0dd9ec0e1e46 100644
--- a/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
@@ -36,7 +36,7 @@
 @media (min-width: 43.75rem) {
 
 .layout--fourcol-section > .layout__region {
-      flex-basis: calc(50% - var(--grid-gap)*0.5);
+      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
       flex-grow: 0;
       flex-shrink: 0;
       margin-bottom: 0
@@ -56,22 +56,22 @@
 
     [dir="ltr"] .layout--fourcol-section > .layout__region--first,[dir="ltr"] 
     .layout--fourcol-section > .layout__region--third {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--fourcol-section > .layout__region--first,[dir="rtl"] 
     .layout--fourcol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="ltr"] .layout--fourcol-section > .layout__region--second,[dir="ltr"] 
     .layout--fourcol-section > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--fourcol-section > .layout__region--second,[dir="rtl"] 
     .layout--fourcol-section > .layout__region--fourth {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
   }
 
@@ -82,7 +82,7 @@
 
 @media (min-width: 62.5rem) {
     .layout--fourcol-section > .layout__region {
-      flex-basis: calc(25% - var(--grid-gap)*0.75);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.75));
     }
 
     .layout--fourcol-section > .layout__region--first,
@@ -91,24 +91,24 @@
     }
 
     [dir="ltr"] .layout--fourcol-section > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--fourcol-section > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     .layout--fourcol-section > .layout__region--second,
     .layout--fourcol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap)*0.5);
-      margin-right: calc(var(--grid-gap)*0.5);
+      margin-left: calc(var(--grid-gap) * 0.5);
+      margin-right: calc(var(--grid-gap) * 0.5);
     }
 
     [dir="ltr"] .layout--fourcol-section > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--fourcol-section > .layout__region--fourth {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
   }
diff --git a/core/themes/olivero/css/layout/layout-builder-threecol-section.css b/core/themes/olivero/css/layout/layout-builder-threecol-section.css
index 9caf4ff712f47b253e60a461c1eee778016ac5bb..d864f9ea17a1aabc6fa36d20b72c020db5fd8ce2 100644
--- a/core/themes/olivero/css/layout/layout-builder-threecol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-threecol-section.css
@@ -44,27 +44,27 @@
 
 @media (min-width: 62.5rem) {
     [dir="ltr"] .layout--threecol-section > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
     [dir="rtl"] .layout--threecol-section > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     .layout--threecol-section > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.5);
-      margin-right: calc(var(--grid-gap)*0.5);
+      margin-left: calc(var(--grid-gap) * 0.5);
+      margin-right: calc(var(--grid-gap) * 0.5);
     }
 
     [dir="ltr"] .layout--threecol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--threecol-section > .layout__region--third {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
     .layout--threecol-section--25-50-25 > .layout__region--first,
     .layout--threecol-section--25-50-25 > .layout__region--third {
-      flex-basis: calc(25% - var(--grid-gap)*0.5);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
     }
 
     .layout--threecol-section--25-50-25 > .layout__region--second {
@@ -72,7 +72,7 @@
     }
     .layout--threecol-section--25-25-50 > .layout__region--first,
     .layout--threecol-section--25-25-50 > .layout__region--second {
-      flex-basis: calc(25% - var(--grid-gap)*0.5);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
     }
 
     .layout--threecol-section--25-25-50 > .layout__region--third {
@@ -84,11 +84,11 @@
 
     .layout--threecol-section--50-25-25 > .layout__region--second,
     .layout--threecol-section--50-25-25 > .layout__region--third {
-      flex-basis: calc(25% - var(--grid-gap)*0.5);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
     }
     .layout--threecol-section--33-34-33 > .layout__region--first,
     .layout--threecol-section--33-34-33 > .layout__region--second,
     .layout--threecol-section--33-34-33 > .layout__region--third {
-      flex-basis: calc(33.33% - var(--grid-gap)*0.667);
+      flex-basis: calc(33.33% - (var(--grid-gap) * 0.667));
     }
 }
diff --git a/core/themes/olivero/css/layout/layout-builder-twocol-section.css b/core/themes/olivero/css/layout/layout-builder-twocol-section.css
index 1f3d68644dc71d98fe627a013f3ada65aa27e879..3c030079b50330182f4cf236bb4618c1d2f4ff5c 100644
--- a/core/themes/olivero/css/layout/layout-builder-twocol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-twocol-section.css
@@ -44,108 +44,108 @@
 
 @media (min-width: 43.75rem) {
     [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
     [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
     .layout--twocol-section--50-50 > .layout__region--first {
-      flex-basis: calc(50% - var(--grid-gap)*0.5);
+      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
     }
 
     [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.5)
+      margin-left: calc(var(--grid-gap) * 0.5)
   }
 
     [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--second {
-      margin-right: calc(var(--grid-gap)*0.5)
+      margin-right: calc(var(--grid-gap) * 0.5)
   }
 
     .layout--twocol-section--50-50 > .layout__region--second {
-      flex-basis: calc(50% - var(--grid-gap)*0.5);
+      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
     }
     [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.3333)
+      margin-right: calc(var(--grid-gap) * 0.3333)
   }
     [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.3333)
+      margin-left: calc(var(--grid-gap) * 0.3333)
   }
     .layout--twocol-section--33-67 > .layout__region--first {
-      flex-basis: calc(33.33% - var(--grid-gap)*0.3333);
+      flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
     }
 
     [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.6666)
+      margin-left: calc(var(--grid-gap) * 0.6666)
   }
 
     [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--second {
-      margin-right: calc(var(--grid-gap)*0.6666)
+      margin-right: calc(var(--grid-gap) * 0.6666)
   }
 
     .layout--twocol-section--33-67 > .layout__region--second {
-      flex-basis: calc(66.66% - var(--grid-gap)*0.6666);
+      flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
     }
     [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.6666)
+      margin-right: calc(var(--grid-gap) * 0.6666)
   }
     [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.6666)
+      margin-left: calc(var(--grid-gap) * 0.6666)
   }
     .layout--twocol-section--67-33 > .layout__region--first {
-      flex-basis: calc(66.66% - var(--grid-gap)*0.6666);
+      flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
     }
 
     [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.3333)
+      margin-left: calc(var(--grid-gap) * 0.3333)
   }
 
     [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--second {
-      margin-right: calc(var(--grid-gap)*0.3333)
+      margin-right: calc(var(--grid-gap) * 0.3333)
   }
 
     .layout--twocol-section--67-33 > .layout__region--second {
-      flex-basis: calc(33.33% - var(--grid-gap)*0.3333);
+      flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
     }
     [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.25)
+      margin-right: calc(var(--grid-gap) * 0.25)
   }
     [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.25)
+      margin-left: calc(var(--grid-gap) * 0.25)
   }
     .layout--twocol-section--25-75 > .layout__region--first {
-      flex-basis: calc(25% - var(--grid-gap)*0.25);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.25));
     }
 
     [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.75)
+      margin-left: calc(var(--grid-gap) * 0.75)
   }
 
     [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--second {
-      margin-right: calc(var(--grid-gap)*0.75)
+      margin-right: calc(var(--grid-gap) * 0.75)
   }
 
     .layout--twocol-section--25-75 > .layout__region--second {
-      flex-basis: calc(75% - var(--grid-gap)*0.75);
+      flex-basis: calc(75% - (var(--grid-gap) * 0.75));
     }
     [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--first {
-      margin-right: calc(var(--grid-gap)*0.75)
+      margin-right: calc(var(--grid-gap) * 0.75)
   }
     [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--first {
-      margin-left: calc(var(--grid-gap)*0.75)
+      margin-left: calc(var(--grid-gap) * 0.75)
   }
     .layout--twocol-section--75-25 > .layout__region--first {
-      flex-basis: calc(75% - var(--grid-gap)*0.75);
+      flex-basis: calc(75% - (var(--grid-gap) * 0.75));
     }
 
     [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--second {
-      margin-left: calc(var(--grid-gap)*0.25)
+      margin-left: calc(var(--grid-gap) * 0.25)
   }
 
     [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--second {
-      margin-right: calc(var(--grid-gap)*0.25)
+      margin-right: calc(var(--grid-gap) * 0.25)
   }
 
     .layout--twocol-section--75-25 > .layout__region--second {
-      flex-basis: calc(25% - var(--grid-gap)*0.25);
+      flex-basis: calc(25% - (var(--grid-gap) * 0.25));
     }
 }
diff --git a/core/themes/olivero/css/layout/layout-content-narrow.css b/core/themes/olivero/css/layout/layout-content-narrow.css
index 2ea0719b72aaaf80c18d0f8759999d1573b44b27..96cee2dedce694318145cccd49456040afb282a1 100644
--- a/core/themes/olivero/css/layout/layout-content-narrow.css
+++ b/core/themes/olivero/css/layout/layout-content-narrow.css
@@ -90,22 +90,22 @@
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
-          left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+          left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+          right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
         }
 
 @media (min-width: 43.75rem) {
 
 [dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+          left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+          right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
@@ -133,7 +133,7 @@
   }
 
 .layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote {
-        width: calc(var(--grid-col-width)*10 + var(--grid-gap)*9);
+        width: calc(10 * var(--grid-col-width) + 9 * var(--grid-gap));
         margin-top: var(--sp3);
         margin-bottom: var(--sp3)
     }
@@ -150,15 +150,15 @@
 @media (min-width: 62.5rem) {
 
 [dir="ltr"] .layout--content-narrow.text-content pre,[dir="ltr"]  .layout--content-narrow .text-content pre,[dir="ltr"]  .layout--pass--content-narrow > *.text-content pre,[dir="ltr"]  .layout--pass--content-narrow > * .text-content pre {
-        margin-left: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+        margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 [dir="rtl"] .layout--content-narrow.text-content pre,[dir="rtl"]  .layout--content-narrow .text-content pre,[dir="rtl"]  .layout--pass--content-narrow > *.text-content pre,[dir="rtl"]  .layout--pass--content-narrow > * .text-content pre {
-        margin-right: calc(var(--grid-col-width)*-1 + var(--grid-gap)*-1)
+        margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)))
   }
 
 .layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre {
-        width: calc(var(--grid-col-width)*12 + var(--grid-gap)*11)
+        width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap))
     }
       }
 
diff --git a/core/themes/olivero/css/layout/layout-footer.css b/core/themes/olivero/css/layout/layout-footer.css
index 45bae863ed1b85e6f09a8462e3198d1a5e7703ec..8aa5c822327bea812d1a1f400a4306e36027b41f 100644
--- a/core/themes/olivero/css/layout/layout-footer.css
+++ b/core/themes/olivero/css/layout/layout-footer.css
@@ -42,7 +42,7 @@
 
 .site-footer__inner {
     padding-top: var(--sp4);
-    padding-bottom: calc(var(--sp)*13)
+    padding-bottom: calc(13 * var(--sp))
 }
   }
 
diff --git a/core/themes/olivero/css/layout/layout-views-grid.css b/core/themes/olivero/css/layout/layout-views-grid.css
index dedd5828dbbf576ba67c6d78ab89e9454b51f471..376665d748983f890a41b0503666f56ed320b6b1 100644
--- a/core/themes/olivero/css/layout/layout-views-grid.css
+++ b/core/themes/olivero/css/layout/layout-views-grid.css
@@ -38,8 +38,8 @@
    * Calculated values.
    */
   --views-grid--gap-count: calc(var(--views-grid--column-count) - 1);
-  --views-grid--total-gap-width: calc(var(--views-grid--gap-count)*var(--views-grid--layout-gap));
-  --views-grid-item--max-width: calc((100% - var(--views-grid--total-gap-width))/var(--views-grid--column-count));
+  --views-grid--total-gap-width: calc(var(--views-grid--gap-count) * var(--views-grid--layout-gap));
+  --views-grid-item--max-width: calc((100% - var(--views-grid--total-gap-width)) / var(--views-grid--column-count));
 
   display: grid;
   grid-template-columns: repeat(auto-fill, minmax(max(var(--views-grid-item--min-width), var(--views-grid-item--max-width)), 1fr));
@@ -47,7 +47,7 @@
 }
 
 .views-view-grid--vertical {
-  margin-bottom: calc(var(--views-grid--layout-gap)*-1); /* Offset the bottom row's padding. */
+  margin-bottom: calc(-1 * var(--views-grid--layout-gap)); /* Offset the bottom row's padding. */
   column-width: var(--views-grid-item--min-width);
   column-count: var(--views-grid--column-count);
   grid-column-gap: var(--views-grid--layout-gap)
diff --git a/core/themes/olivero/css/layout/region-content-below.css b/core/themes/olivero/css/layout/region-content-below.css
index 096f8c5774794bf66d55789d33acb8788224d154..fb5e28118b46f73bcef53a4a588b20b22b930de8 100644
--- a/core/themes/olivero/css/layout/region-content-below.css
+++ b/core/themes/olivero/css/layout/region-content-below.css
@@ -39,7 +39,7 @@
 }
 
     .region--content-below > * {
-      flex-basis: calc(50% - var(--grid-gap)/2);
+      flex-basis: calc(50% - (var(--grid-gap) / 2));
       flex-grow: 1;
       flex-shrink: 0
     }
@@ -57,7 +57,7 @@
 
 @media (min-width: 43.75rem) {
     .region--content-below > * {
-      flex-basis: calc(33.33% - var(--grid-gap)*0.667)
+      flex-basis: calc(33.33% - (var(--grid-gap) * 0.667))
     }
 
       [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] 
diff --git a/core/themes/olivero/css/layout/social-bar.css b/core/themes/olivero/css/layout/social-bar.css
index a8b47c11d0c6185ae4a5abcf58f71a50fd0991c1..a73a1dc6a1ea0206f44d399340a201061ebb6299 100644
--- a/core/themes/olivero/css/layout/social-bar.css
+++ b/core/themes/olivero/css/layout/social-bar.css
@@ -76,8 +76,8 @@
 .social-bar__inner {
     position: relative;
     width: var(--content-left);
-    padding-top: calc(var(--sp)*5);
-    padding-bottom: calc(var(--sp)*5)
+    padding-top: calc(5 * var(--sp));
+    padding-bottom: calc(5 * var(--sp))
 }
 
     [dir="ltr"] .social-bar__inner.is-fixed {
@@ -91,7 +91,7 @@
     .social-bar__inner.is-fixed {
       position: fixed;
       top: var(--sp6);
-      height: calc(100vh - var(--sp)*6);
+      height: calc(100vh - 6 * var(--sp));
     }
   }
 
diff --git a/core/themes/olivero/olivero.libraries.yml b/core/themes/olivero/olivero.libraries.yml
index cc81e03f4d2b6206482f4fc9677deb47245f1956..68a1fc056e2b54e3a451b18b719e6e8e88d626fd 100644
--- a/core/themes/olivero/olivero.libraries.yml
+++ b/core/themes/olivero/olivero.libraries.yml
@@ -56,9 +56,6 @@ global-styling:
     js/navigation-utils.js: {}
 
   dependencies:
-    - core/drupal.element.closest
-    - core/drupal.element.matches
-    - core/drupal.nodelist.foreach
     - core/drupal
     - core/once
     - core/tabbable
@@ -220,8 +217,6 @@ messages:
   version: VERSION
   js:
     js/messages.js: {}
-  dependencies:
-    - core/drupal.array.includes
 
 navigation-primary:
   version: VERSION
diff --git a/core/yarn.lock b/core/yarn.lock
index e302d12ce30650b9926f5ffad9ea251170ca4f4c..0e433e506b32829e7d7b84119d089f43825ba21f 100644
--- a/core/yarn.lock
+++ b/core/yarn.lock
@@ -2714,11 +2714,6 @@ css-what@^6.0.1:
   resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
   integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
 
-css.escape@1.5.x:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
-  integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
-
 cssdb@^4.4.0:
   version "4.4.0"
   resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
@@ -3130,11 +3125,6 @@ es-to-primitive@^1.2.1:
     is-date-object "^1.0.1"
     is-symbol "^1.0.2"
 
-es6-promise@4.2.x:
-  version "4.2.8"
-  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
-  integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
-
 escalade@^3.1.1:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -5221,11 +5211,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
-picturefill@3.0.x:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/picturefill/-/picturefill-3.0.3.tgz#a5c38eeb02d74def38e1790ff61e166166b4f224"
-  integrity sha512-JDdx+3i4fs2pkqwWZJgGEM2vFWsq+01YsQFT9CKPGuv2Q0xSdrQZoxi9XwyNARTgxiOdgoAwWQRluLRe/JQX2g==
-
 pify@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -5268,15 +5253,6 @@ postcss-attribute-case-insensitive@^4.0.1:
     postcss "^7.0.2"
     postcss-selector-parser "^6.0.2"
 
-postcss-calc@^7.0.1:
-  version "7.0.5"
-  resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
-  integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
-  dependencies:
-    postcss "^7.0.27"
-    postcss-selector-parser "^6.0.2"
-    postcss-value-parser "^4.0.2"
-
 postcss-calc@^8.2.3:
   version "8.2.4"
   resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
@@ -5858,7 +5834,7 @@ postcss-value-parser@^3.2.3:
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
   integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
 
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==