{"version":3,"file":"static/js/PublicRegister.9b2c9b1f27169a96be49.js","mappings":"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","sources":["../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/css-loader/dist/runtime/api.js","../node_modules/css-loader/dist/runtime/getUrl.js","../node_modules/css-loader/dist/runtime/sourceMaps.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/web-vitals/dist/web-vitals.js","../node_modules/@scottish-government/design-system/dist/css/design-system.css","App.css","../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","../node_modules/style-loader/dist/runtime/insertBySelector.js","../node_modules/style-loader/dist/runtime/insertStyleElement.js","../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","../node_modules/style-loader/dist/runtime/styleDomAPI.js","../node_modules/style-loader/dist/runtime/styleTagTransform.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","webpack://@ePassTech/epass-public-tobacco/./src/App.css?fcd7","webpack://@ePassTech/epass-public-tobacco/./node_modules/@scottish-government/design-system/dist/css/design-system.css?ed87","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","api/axiosInstance.js","contexts/AppProvider.js","api/index.js","components/Premises/PremisesItem.js","components/Premises/PremisesList.js","components/Premises/PremisesHeader.js","components/Premises/PremisesStatusItem.js","pages/Premises.js","components/Search/SearchForm.js","../node_modules/@scottish-government/design-system/src/components/accordion/accordion.js","../node_modules/@scottish-government/design-system/src/base/tools/id-modifier/id-modifier.js","components/Accordion/Accordion.jsx","components/Common/HintText.jsx","components/Checkbox/Checkbox.jsx","components/Search/SearchFilters.js","components/Paginator/Paginator.js","components/Search/SearchResultsTitle.js","components/Filter/FilterItem.js","components/Filter/FilterList.js","components/Search/SearchControls.js","components/Search/SearchResultItem.js","components/Search/SearchResults.js","components/Header/index.js","pages/PublicRegister.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var e,t,n,i,r=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:\"v2-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)}},a=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if(\"first-input\"===e&&!(\"PerformanceEventTiming\"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},o=function(e,t){var n=function n(i){\"pagehide\"!==i.type&&\"hidden\"!==document.visibilityState||(e(i),t&&(removeEventListener(\"visibilitychange\",n,!0),removeEventListener(\"pagehide\",n,!0)))};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},u=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&e(t)}),!0)},c=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},f=-1,s=function(){return\"hidden\"===document.visibilityState?0:1/0},m=function(){o((function(e){var t=e.timeStamp;f=t}),!0)},v=function(){return f<0&&(f=s(),m(),u((function(){setTimeout((function(){f=s(),m()}),0)}))),{get firstHiddenTime(){return f}}},d=function(e,t){var n,i=v(),o=r(\"FCP\"),f=function(e){\"first-contentful-paint\"===e.name&&(m&&m.disconnect(),e.startTime-1&&e(t)},f=r(\"CLS\",0),s=0,m=[],v=function(e){if(!e.hadRecentInput){var t=m[0],i=m[m.length-1];s&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(s+=e.value,m.push(e)):(s=e.value,m=[e]),s>f.value&&(f.value=s,f.entries=m,n())}},h=a(\"layout-shift\",v);h&&(n=c(i,f,t),o((function(){h.takeRecords().map(v),n(!0)})),u((function(){s=0,l=-1,f=r(\"CLS\",0),n=c(i,f,t)})))},T={passive:!0,capture:!0},y=new Date,g=function(i,r){e||(e=r,t=i,n=new Date,w(removeEventListener),E())},E=function(){if(t>=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){g(e,t),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",n,T),removeEventListener(\"pointercancel\",i,T)};addEventListener(\"pointerup\",n,T),addEventListener(\"pointercancel\",i,T)}(t,e):g(t,e)}},w=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,S,T)}))},L=function(n,f){var s,m=v(),d=r(\"FID\"),p=function(e){e.startTimeperformance.now())return;n.entries=[t],e(n)}catch(e){}},\"complete\"===document.readyState?setTimeout(t,0):addEventListener(\"load\",(function(){return setTimeout(t,0)}))};export{h as getCLS,d as getFCP,L as getFID,F as getLCP,P as getTTFB};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 height=%2724%27 viewBox=%270 -960 960 960%27 width=%2724%27%3E%3Cpath d=%27M480-360 280-560h400L480-360Z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/*------------------------------------*\\\\\n FOCUS\n Default focus indicator\n\\\\*------------------------------------*/\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct \\`block\\` display not defined for any HTML5 element in IE 8/9.\n * Correct \\`block\\` display not defined for \\`details\\` or \\`summary\\` in IE 10/11\n * and Firefox.\n * Correct \\`block\\` display not defined for \\`main\\` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct \\`inline-block\\` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of \\`progress\\` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying \\`audio\\` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address \\`[hidden]\\` styling not present in IE 8/9/10.\n * Hide the \\`template\\` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr {\n text-decoration: none;\n}\n\n/**\n * Address style set to \\`bolder\\` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable \\`h1\\` font-size and margin within \\`section\\` and \\`article\\`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent \\`sub\\` and \\`sup\\` affecting \\`line-height\\` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside \\`a\\` element in IE 8/9/10.\n */\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto;\n}\n\n/**\n * Address odd \\`em\\`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of \\`select\\`, unless a \\`border\\` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address \\`overflow\\` set to \\`hidden\\` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent \\`text-transform\\` inheritance for \\`button\\` and \\`select\\`.\n * All other form control elements do not inherit \\`text-transform\\` values.\n * Correct \\`button\\` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct \\`select\\` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native \\`audio\\`\n * and \\`video\\` controls.\n * 2. Correct inability to style clickable \\`input\\` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * \\`input\\` and others.\n */\nbutton,\nhtml input[type=button],\ninput[type=reset],\ninput[type=submit] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting \\`line-height\\` on \\`input\\` using \\`!important\\` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to \\`content-box\\` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=checkbox],\ninput[type=radio] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * \\`font-size\\` values of the \\`input\\`, it causes the cursor style of the\n * decrement button to change from \\`default\\` to \\`text\\`.\n */\ninput[type=number]::-webkit-inner-spin-button,\ninput[type=number]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct \\`color\\` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the \\`font-weight\\` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\n/*------------------------------------*\\\\\n RESET (INUITCSS)\n\\\\*------------------------------------*/\n/**\n * As well as using normalize.css, it is often advantageous to remove all\n * margins from certain elements.\n */\nbody,\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\ndl, dd, ol, ul,\nform, fieldset, legend,\nfigure,\ntable, th, td, caption,\nhr {\n margin: 0;\n padding: 0;\n}\n\n/**\n * Give a help cursor to elements that give extra info on \\`:hover\\`.\n */\nabbr[title],\ndfn[title] {\n cursor: help;\n}\n\n/**\n * Remove underlines from potentially troublesome elements.\n */\nu,\nins {\n text-decoration: none;\n}\n\n/**\n * Apply faux underlines to inserted text via \\`border-bottom\\`.\n */\nins {\n border-bottom: 1px solid;\n}\n\n/*------------------------------------*\\\\\n BASIC MARGINS\n\\\\*------------------------------------*/\nh1, h2, h3, h4, h5, h6,\nul, ol, dl,\nblockquote, p, address,\ntable, figure,\npre {\n margin-bottom: 1rem;\n}\n@media (min-width: 768px) {\n h1, h2, h3, h4, h5, h6,\n ul, ol, dl,\n blockquote, p, address,\n table, figure,\n pre {\n margin-bottom: 1rem;\n }\n}\n\n/*------------------------------------*\\\\\n ABBREVIATIONS\n Improved display of abbreviation styling with better readability than browser default\n\\\\*------------------------------------*/\nabbr[title], acronym[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n text-decoration-thickness: 1px;\n text-underline-offset: 1px;\n}\n\n/*------------------------------------*\\\\\n ADDRESS\n\\\\*------------------------------------*/\naddress {\n font-style: normal;\n}\n\n/*------------------------------------*\\\\\n BODY\n\\\\*------------------------------------*/\nbody {\n background: #ffffff;\n color: #333333;\n font-family: Roboto, \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 1rem;\n font-style: normal;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n line-height: 1.5;\n margin: 0;\n text-rendering: optimizeLegibility;\n}\n\n@media (min-width: 768px) {\n body {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n/*------------------------------------*\\\\\n BOX-SIZING (INUITCSS)\n\\\\*------------------------------------*/\n/**\n * Set the global \\`box-sizing\\` state to \\`border-box\\`.\n *\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\n * paulirish.com/2012/box-sizing-border-box-ftw\n */\nhtml {\n box-sizing: border-box;\n}\n\n*, *::before, *::after {\n box-sizing: inherit;\n}\n\n/*------------------------------------*\\\\\n HEADINGS\n\\\\*------------------------------------*/\nh1, .ds_h1, .alpha {\n font-size: 1.875rem;\n line-height: 1.3333333333;\n margin-bottom: 1.5rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n h1, .ds_h1, .alpha {\n font-size: 2.75rem;\n line-height: 1.2727272727;\n }\n}\n@media (min-width: 768px) {\n h1, .ds_h1, .alpha {\n margin-bottom: 2rem;\n }\n}\n\nh2, .ds_h2, .beta {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n margin-bottom: 1rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n h2, .ds_h2, .beta {\n font-size: 1.875rem;\n line-height: 1.3333333333;\n }\n}\n@media (min-width: 768px) {\n h2, .ds_h2, .beta {\n margin-bottom: 1rem;\n }\n}\nh2:not(:first-child), .ds_h2:not(:first-child), .beta:not(:first-child) {\n margin-top: 2rem;\n}\n@media (min-width: 768px) {\n h2:not(:first-child), .ds_h2:not(:first-child), .beta:not(:first-child) {\n margin-top: 2.5rem;\n }\n}\n\nh3, .ds_h3, .gamma {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin-bottom: 1rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n h3, .ds_h3, .gamma {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n h3, .ds_h3, .gamma {\n margin-bottom: 1rem;\n }\n}\nh3:not(:first-child), .ds_h3:not(:first-child), .gamma:not(:first-child) {\n margin-top: 1.5rem;\n}\n@media (min-width: 768px) {\n h3:not(:first-child), .ds_h3:not(:first-child), .gamma:not(:first-child) {\n margin-top: 1.5rem;\n }\n}\n\nh4, .ds_h4, .delta {\n font-size: 1rem;\n line-height: 1.5;\n margin-bottom: 1rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n h4, .ds_h4, .delta {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (min-width: 768px) {\n h4, .ds_h4, .delta {\n margin-bottom: 1rem;\n }\n}\n\nh5, .ds_h5, .epsilon {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin-bottom: 0.5rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n h5, .ds_h5, .epsilon {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n h5, .ds_h5, .epsilon {\n margin-bottom: 0.5rem;\n }\n}\n\n/*------------------------------------*\\\\\n HORIZONTAL RULE\n\\\\*------------------------------------*/\nhr {\n border: none;\n border-top: 1px solid #b3b3b3;\n margin-top: 1.5rem;\n margin-bottom: calc(1.5rem + -1px);\n}\n@media (min-width: 768px) {\n hr {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n hr {\n margin-bottom: calc(2rem + -1px);\n }\n}\n\n/*------------------------------------*\\\\\n LEADER\n\\\\*------------------------------------*/\n.ds_leader,\n.ds_leader-first-paragraph > p:first-child {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n margin-bottom: 2rem;\n font-weight: 300;\n line-height: 32px;\n}\n@media (min-width: 768px) {\n .ds_leader,\n .ds_leader-first-paragraph > p:first-child {\n font-size: 1.5rem;\n line-height: 1.6666666667;\n }\n}\n@media (min-width: 768px) {\n .ds_leader,\n .ds_leader-first-paragraph > p:first-child {\n margin-bottom: 2.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_leader,\n .ds_leader-first-paragraph > p:first-child {\n line-height: 40px;\n }\n}\n\n/*------------------------------------*\\\\\n LINKS\n\\\\*------------------------------------*/\na,\n.ds_link {\n color: #0065bd;\n text-decoration: underline;\n outline: 0px solid transparent;\n text-underline-offset: 1px;\n transition: color 0.2s, background-color 0.2s, outline-color 0.2s;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n a,\n .ds_link {\n color: LinkText;\n }\n a:hover, a:focus,\n .ds_link:hover,\n .ds_link:focus {\n color: LinkText;\n }\n}\na:hover,\n.ds_link:hover {\n background-color: #d9eeff;\n color: #00437d;\n outline: 2px solid #d9eeff;\n transition-duration: 0.2s;\n}\na:focus,\n.ds_link:focus {\n outline: 2px solid #fdd522;\n outline-offset: 0;\n background-color: #fdd522;\n box-shadow: -2px 5px #333333, 2px 5px #333333;\n color: #333333;\n text-decoration: none;\n transition-duration: 0s;\n}\na > svg,\n.ds_link > svg {\n fill: currentColor;\n}\n\n.ds_link {\n background: transparent;\n border: 0;\n display: inline;\n font-size: inherit;\n font-weight: inherit;\n line-height: normal;\n line-height: initial;\n margin: 0;\n min-height: 0;\n min-width: 0;\n padding: 0;\n text-align: left;\n}\n\n.ds_reversed a,\n.ds_reversed .ds_link {\n color: currentColor;\n}\n.ds_reversed a:focus,\n.ds_reversed .ds_link:focus {\n color: #333333;\n}\n.ds_reversed a:hover:not(:focus),\n.ds_reversed .ds_link:hover:not(:focus) {\n background-color: transparent;\n color: currentColor;\n outline-color: transparent;\n}\n\na[disabled] {\n pointer-events: none;\n}\n\nh1 a, h2 a, h3 a, h4 a {\n text-decoration: none;\n}\nh1 a:hover:not(:focus), h2 a:hover:not(:focus), h3 a:hover:not(:focus), h4 a:hover:not(:focus) {\n text-decoration: underline;\n}\n\n/*------------------------------------*\\\\\n LISTS\n\\\\*------------------------------------*/\nul,\nol,\ndd {\n margin-left: 1.25rem;\n}\nul > :last-child,\nol > :last-child,\ndd > :last-child {\n margin-bottom: 0;\n}\n\ndd,\nul ul,\nol ol,\nol ul,\nul ol {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n dd,\n ul ul,\n ol ol,\n ol ul,\n ul ol {\n margin-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n dd,\n ul ul,\n ol ol,\n ol ul,\n ul ol {\n margin-bottom: 0.5rem;\n }\n}\n\nli {\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n li {\n margin-bottom: 0.5rem;\n }\n}\n\ndt {\n font-weight: 700;\n}\n\nul {\n list-style-type: disc;\n}\n\nol {\n list-style-type: numeric;\n margin-left: 1.5rem;\n}\n\n/*------------------------------------*\\\\\n MARKED TEXT\n\\\\*------------------------------------*/\nmark {\n background-color: inherit;\n color: inherit;\n font-weight: 700;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n mark {\n background-color: Mark;\n }\n}\n\n/*------------------------------------*\\\\\n PLACEHOLDER TEXT\n\\\\*------------------------------------*/\n::-moz-placeholder {\n color: #727272;\n}\n::placeholder {\n color: #727272;\n}\n\n/*------------------------------------*\\\\\n SCROLL BEHAVIOUR\n\\\\*------------------------------------*/\nhtml,\nbody {\n scroll-behavior: smooth;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html,\n body {\n scroll-behavior: auto;\n }\n}\n/*------------------------------------*\\\\\n SMALL\n\\\\*------------------------------------*/\nsmall,\n.ds_small {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n}\n@media (min-width: 768px) {\n small,\n .ds_small {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n\n.ds_tiny {\n font-size: 0.75rem;\n line-height: 1.3333333333;\n}\n@media (min-width: 768px) {\n .ds_tiny {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n\n/*------------------------------------*\\\\\n BREAK WORD\n\\\\*------------------------------------*/\n.ds_break-word {\n overflow-wrap: break-word;\n}\n\n/*------------------------------------*\\\\\n LAYOUT\n\\\\*------------------------------------*/\n.ds_layout {\n margin-right: -32px;\n overflow: hidden;\n margin-bottom: 96px;\n}\n.ds_layout > * {\n margin-right: 32px;\n}\n@supports (display: grid) {\n .ds_layout {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_layout > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n.ds_layout__content img, .ds_layout__partner img {\n max-width: 100%;\n}\n\n@media (min-width: 768px) {\n .ds_layout__header {\n clear: left;\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout__partner {\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_layout__navigation {\n clear: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout__sidebar {\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_layout__content {\n clear: left;\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout__list {\n clear: left;\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout__footer {\n clear: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout__feedback {\n clear: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout--category-list .ds_layout__grid {\n clear: left;\n float: left;\n width: calc(100% - 32px);\n }\n .ds_layout--search-results--filters .ds_layout__sidebar {\n clear: left;\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_layout--search-results--filters .ds_layout__list {\n clear: none;\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout--search-results--filters .ds_layout__feedback {\n clear: left;\n margin-left: 33.3333333333%;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout--search-results-with-sidebar .ds_layout__sidebar {\n clear: left;\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_layout--search-results-with-sidebar .ds_layout__content {\n clear: none;\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_layout--search-results-with-sidebar .ds_layout__feedback {\n clear: left;\n margin-left: 33.3333333333%;\n width: calc(66.6666666667% - 32px);\n }\n}\n@media (min-width: 992px) {\n .ds_layout--article .ds_layout__partner {\n float: left;\n margin-left: 8.3333333333%;\n width: calc(25% - 32px);\n }\n .ds_layout--article .ds_layout__sidebar {\n float: left;\n margin-left: 8.3333333333%;\n width: calc(25% - 32px);\n }\n .ds_layout--guide .ds_layout__partner {\n float: left;\n margin-left: 8.3333333333%;\n width: calc(25% - 32px);\n }\n .ds_layout--guide .ds_layout__sidebar {\n float: left;\n margin-left: 8.3333333333%;\n width: calc(25% - 32px);\n }\n}\n@supports (display: grid) {\n /**\n * GRID KEY\n * c: content\n * f: feedback\n * h: header\n * l: list (e.g. category items, search results)\n * g: grid\n * n: navigation (e.g. subpages of a publication or guide)\n * p: partner branding\n * s: sidebar\n */\n body .ds_layout > *[class] {\n margin-left: 0;\n margin-right: 0;\n width: auto;\n }\n .ds_layout {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: auto 1fr;\n grid-template-areas: \"h h\" \"p p\" \"n n\" \"c c\" \"s s\" \"f f\";\n margin-right: 0;\n margin-bottom: 0;\n }\n .ds_layout__content {\n grid-area: c;\n }\n .ds_layout__footer {\n grid-area: z;\n }\n .ds_layout__feedback {\n grid-area: f;\n }\n .ds_layout__header {\n grid-area: h;\n }\n .ds_layout__list {\n grid-area: l;\n }\n .ds_layout__grid {\n grid-area: g;\n }\n .ds_layout__navigation {\n grid-area: n;\n }\n .ds_layout__partner {\n grid-area: p;\n align-self: start;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n }\n @media (min-width: 768px) {\n .ds_layout__partner {\n margin-top: 2rem;\n }\n }\n @media (min-width: 768px) {\n .ds_layout__partner {\n margin-bottom: 2rem;\n }\n }\n .ds_layout__sidebar {\n grid-area: s;\n }\n .ds_layout--category-list {\n grid-template-areas: \"h h\" \"c c\" \"l l\" \"g g\" \"f f\";\n }\n .ds_layout--guide {\n grid-template-areas: \"h h\" \"p p\" \"n n\" \"c c\" \"s s\" \"f f\";\n }\n .ds_layout--search-results {\n grid-template-areas: \"h h\" \"n n\" \"c c\" \"l l\" \"f f\";\n }\n .ds_layout--search-results--filters {\n grid-template-areas: \"h h\" \"c c\" \"s s\" \"l l\" \"f f\";\n }\n .ds_layout--search-results-with-sidebar {\n grid-template-areas: \"h h\" \"n n\" \"s s\" \"c c\" \"f f\";\n }\n .ds_layout--question-page {\n grid-template-areas: \"h h\" \"p p\" \"n n\" \"c c\" \"z z\" \"s s\" \"f f\";\n }\n @media (min-width: 480px) {\n .ds_layout {\n grid-template-columns: repeat(6, 1fr);\n grid-template-areas: \"h h h h h h\" \"p p p p p p\" \"n n n n n n\" \"c c c c c c\" \"s s s s s s\" \"f f f f f f\";\n }\n .ds_layout--category-list {\n grid-template-areas: \"h h h h h h\" \"c c c c c c\" \"l l l l l l\" \"g g g g g g\" \"f f f f f f\";\n }\n .ds_layout--guide {\n grid-template-areas: \"h h h h h h\" \"p p p p p p\" \"n n n n n n\" \"c c c c c c\" \"s s s s s s\" \"f f f f f f\";\n }\n .ds_layout--search-results {\n grid-template-areas: \"h h h h h h\" \"n n n n n n\" \"c c c c c c\" \"l l l l l l\" \"f f f f f f\";\n }\n .ds_layout--search-results--filters {\n grid-template-areas: \"h h h h h h\" \"c c c c c c\" \"s s s s s s\" \"l l l l l l\" \"f f f f f f\";\n }\n .ds_layout--search-results-with-sidebar {\n grid-template-areas: \"h h h h h h\" \"n n n n n n\" \"s s s s s s\" \"c c c c c c\" \"f f f f f f\";\n }\n .ds_layout--question-page {\n grid-template-areas: \"h h h h h h\" \"p p p p p p\" \"n n n n n n\" \"c c c c c c\" \"z z z z z z\" \"s s s s s s\" \"f f f f f f\";\n }\n }\n @media (min-width: 768px) {\n .ds_layout {\n grid-template-areas: \"h h h h h h h h p p p p\" \"n n n n n n n n . . . .\" \"c c c c c c c c s s s s\" \"f f f f f f f f . . . .\";\n grid-template-columns: repeat(12, 1fr);\n }\n .ds_layout--article {\n grid-template-areas: \"h h h h h h h h p p p p\" \"c c c c c c c c s s s s\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--guide {\n grid-template-areas: \"h h h h h h h h p p p p\" \"n n n n n n n n . . . .\" \"c c c c c c c c s s s s\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--category-list {\n grid-template-areas: \"h h h h h h h h h h h h\" \"c c c c c c c c c c c c\" \"l l l l l l l l . . . .\" \"g g g g g g g g g g g g\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--search-results {\n grid-template-areas: \"h h h h h h h h . . . .\" \"n n n n n n n n . . . .\" \"c c c c c c c c . . . .\" \"l l l l l l l l . . . .\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--search-results--filters {\n grid-template-areas: \"h h h h h h h h . . . .\" \"c c c c c c c c . . . .\" \"s s s s l l l l l l l l\" \". . . . f f f f f f f f\";\n }\n .ds_layout--search-results-with-sidebar {\n grid-template-areas: \"h h h h h h h h . . . .\" \"n n n n n n n n . . . .\" \"s s s s c c c c c c c c\" \". . . . f f f f f f f f\";\n }\n .ds_layout--question-page {\n grid-template-areas: \"h h h h h h h h p p p p\" \"n n n n n n n n . . . .\" \"c c c c c c c c s s s s\" \"z z z z z z z z s s s s\" \"f f f f f f f f . . . .\";\n }\n }\n @media (min-width: 992px) {\n .ds_layout--article {\n grid-template-areas: \"h h h h h h h h . p p p\" \"c c c c c c c c . s s s\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--guide {\n grid-template-areas: \"h h h h h h h h . p p p\" \"n n n n n n n n . . . .\" \"c c c c c c c c . s s s\" \"f f f f f f f f . . . .\";\n }\n .ds_layout--question-page {\n grid-template-areas: \"h h h h h h h h . p p p\" \"n n n n n n n n . . . .\" \"c c c c c c c c . s s s\" \"z z z z z z z z . s s s\" \"f f f f f f f f . . . .\";\n }\n }\n}\n/*------------------------------------*\\\\\n PAGE SETUP\n anchor footer to bottom of the viewport on short pages\n\\\\*------------------------------------*/\nhtml {\n min-height: 100%;\n position: relative;\n}\n\n.ds_page {\n min-height: calc(100vh - 360px);\n margin-bottom: 360px;\n}\n\n.ds_site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n@supports (display: grid) {\n .ds_page {\n display: grid;\n margin-bottom: 0;\n min-height: 100vh;\n grid-template: \"page-top\" auto \"page-middle\" 1fr \"page-bottom\" auto;\n }\n .ds_page__top {\n grid-area: page-top;\n }\n .ds_page__middle {\n grid-area: page-middle;\n }\n .ds_page__bottom {\n grid-area: page-bottom;\n }\n .ds_site-footer {\n position: static;\n }\n}\n.ds_page__middle {\n display: grid;\n grid-template-rows: auto 1fr;\n padding-bottom: 4rem;\n position: relative;\n}\n\n/*------------------------------------*\\\\\n PRE FOOTER BACKGROUND\n for when a block immediately preceding the footer has a non-white background\n\\\\*------------------------------------*/\n.ds_page__middle:has(.ds_pre-footer-background) {\n padding-bottom: 0;\n}\n\n.ds_page__middle.js-pre-footer-background {\n padding-bottom: 0;\n}\n\n.ds_pre-footer-background {\n padding-bottom: 4rem;\n}\n\n/*------------------------------------*\\\\\n CATEGORY PAGE LAYOUT\n\\\\*------------------------------------*/\n.category-lower,\n.ds_category-lower {\n background: #f8f8f8;\n border-top: 1px solid #ebebeb;\n margin-top: -1px;\n}\n\n/*------------------------------------*\\\\\n STACK\n Your classic lobotomised owl https://alistapart.com/article/axiomatic-css-and-lobotomized-owls/\n\\\\*------------------------------------*/\n.ds_stack > * {\n margin-bottom: 0;\n}\n.ds_stack > * + * {\n margin-bottom: 0;\n margin-top: 16px;\n}\n\n/*------------------------------------*\\\\\n WRAPPERS\n\\\\*------------------------------------*/\n.ds_wrapper {\n margin: 0 auto;\n padding: 0 16px;\n width: 100%;\n}\n.ds_wrapper--no-overflow {\n overflow: hidden;\n}\n\n@media (min-width: 768px) {\n .ds_wrapper {\n width: 768px;\n }\n}\n@media (min-width: 992px) {\n .ds_wrapper {\n width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .ds_wrapper {\n width: 1152px;\n }\n}\n/*------------------------------------*\\\\\n BREAKPOINT CHECK\n\\\\*------------------------------------*/\n.ds_breakpoint-check {\n display: none;\n}\n@media (min-width: 480px) {\n .ds_breakpoint-check.ds_breakpoint-check--small {\n display: block;\n }\n}\n@media (min-width: 768px) {\n .ds_breakpoint-check.ds_breakpoint-check--medium {\n display: block;\n }\n}\n@media (min-width: 992px) {\n .ds_breakpoint-check.ds_breakpoint-check--large {\n display: block;\n }\n}\n@media (min-width: 1200px) {\n .ds_breakpoint-check.ds_breakpoint-check--xlarge {\n display: block;\n }\n}\n\n/*------------------------------------*\\\\\n VISIBILITY\n\\\\*------------------------------------*/\n.visually-hidden {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n}\n\n.fully-hidden {\n display: none !important;\n}\n\n/*------------------------------------*\\\\\n LISTS\n\\\\*------------------------------------*/\n.ds_no-bullets {\n list-style-type: none;\n margin-left: 0;\n}\n\n/*------------------------------------*\\\\\n MARGIN MODIFIERS\n Deprecated, prefer use of margin override classes e.g. ds_!_margin--0, ds_!_margin-bottom--0\n\\\\*------------------------------------*/\n.ds_block-margins {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_block-margins {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_block-margins {\n margin-bottom: 2rem;\n }\n}\n\n.ds_no-margin {\n margin: 0 !important;\n}\n\n.ds_no-margin--top {\n margin-top: 0 !important;\n}\n\n.ds_no-margin--right {\n margin-right: 0 !important;\n}\n\n.ds_no-margin--bottom {\n margin-bottom: 0 !important;\n}\n\n.ds_no-margin--left {\n margin-left: 0 !important;\n}\n\n.ds_no-margin--vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.ds_no-margin--horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/*------------------------------------*\\\\\n PADDING MODIFIERS\n Deprecated, prefer use of padding override classes e.g. ds_!_padding--0, ds_!_padding-bottom--0\n\\\\*------------------------------------*/\n.ds_no-padding {\n padding: 0 !important;\n}\n\n.ds_no-padding--top {\n padding-top: 0 !important;\n}\n\n.ds_no-padding--right {\n padding-right: 0 !important;\n}\n\n.ds_no-padding--bottom {\n padding-bottom: 0 !important;\n}\n\n.ds_no-padding--left {\n padding-left: 0 !important;\n}\n\n.ds_no-padding--vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.ds_no-padding--horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.ds_\\\\!_margin--0 {\n margin: 0 !important;\n}\n\n.ds_\\\\!_margin-left--0 {\n margin-left: 0 !important;\n}\n\n.ds_\\\\!_margin-right--0 {\n margin-right: 0 !important;\n}\n\n.ds_\\\\!_margin-top--0 {\n margin-top: 0 !important;\n}\n\n.ds_\\\\!_margin-bottom--0 {\n margin-bottom: 0 !important;\n}\n\n.ds_\\\\!_margin--1 {\n margin: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--1 {\n margin: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--1 {\n margin-left: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--1 {\n margin-left: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--1 {\n margin-right: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--1 {\n margin-right: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--1 {\n margin-top: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--1 {\n margin-top: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--1 {\n margin-bottom: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--1 {\n margin-bottom: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_margin--2 {\n margin: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--2 {\n margin: 1rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--2 {\n margin-left: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--2 {\n margin-left: 1rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--2 {\n margin-right: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--2 {\n margin-right: 1rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--2 {\n margin-top: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--2 {\n margin-top: 1rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--2 {\n margin-bottom: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--2 {\n margin-bottom: 1rem !important;\n }\n}\n\n.ds_\\\\!_margin--3 {\n margin: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--3 {\n margin: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--3 {\n margin-left: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--3 {\n margin-left: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--3 {\n margin-right: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--3 {\n margin-right: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--3 {\n margin-top: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--3 {\n margin-top: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--3 {\n margin-bottom: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--3 {\n margin-bottom: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_margin--4 {\n margin: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--4 {\n margin: 2rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--4 {\n margin-left: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--4 {\n margin-left: 2rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--4 {\n margin-right: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--4 {\n margin-right: 2rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--4 {\n margin-top: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--4 {\n margin-top: 2rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--4 {\n margin-bottom: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--4 {\n margin-bottom: 2rem !important;\n }\n}\n\n.ds_\\\\!_margin--5 {\n margin: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--5 {\n margin: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--5 {\n margin-left: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--5 {\n margin-left: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--5 {\n margin-right: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--5 {\n margin-right: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--5 {\n margin-top: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--5 {\n margin-top: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--5 {\n margin-bottom: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--5 {\n margin-bottom: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_margin--6 {\n margin: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--6 {\n margin: 3rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--6 {\n margin-left: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--6 {\n margin-left: 3rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--6 {\n margin-right: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--6 {\n margin-right: 3rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--6 {\n margin-top: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--6 {\n margin-top: 3rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--6 {\n margin-bottom: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--6 {\n margin-bottom: 3rem !important;\n }\n}\n\n.ds_\\\\!_margin--7 {\n margin: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--7 {\n margin: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--7 {\n margin-left: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--7 {\n margin-left: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--7 {\n margin-right: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--7 {\n margin-right: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--7 {\n margin-top: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--7 {\n margin-top: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--7 {\n margin-bottom: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--7 {\n margin-bottom: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_margin--8 {\n margin: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--8 {\n margin: 4rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--8 {\n margin-left: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--8 {\n margin-left: 4rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--8 {\n margin-right: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--8 {\n margin-right: 4rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--8 {\n margin-top: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--8 {\n margin-top: 4rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--8 {\n margin-bottom: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--8 {\n margin-bottom: 4rem !important;\n }\n}\n\n.ds_\\\\!_margin--9 {\n margin: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin--9 {\n margin: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-left--9 {\n margin-left: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-left--9 {\n margin-left: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-right--9 {\n margin-right: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-right--9 {\n margin-right: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-top--9 {\n margin-top: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-top--9 {\n margin-top: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_margin-bottom--9 {\n margin-bottom: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_margin-bottom--9 {\n margin-bottom: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_padding--0 {\n padding: 0 !important;\n}\n\n.ds_\\\\!_padding-left--0 {\n padding-left: 0 !important;\n}\n\n.ds_\\\\!_padding-right--0 {\n padding-right: 0 !important;\n}\n\n.ds_\\\\!_padding-top--0 {\n padding-top: 0 !important;\n}\n\n.ds_\\\\!_padding-bottom--0 {\n padding-bottom: 0 !important;\n}\n\n.ds_\\\\!_padding--1 {\n padding: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--1 {\n padding: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--1 {\n padding-left: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--1 {\n padding-left: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--1 {\n padding-right: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--1 {\n padding-right: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--1 {\n padding-top: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--1 {\n padding-top: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--1 {\n padding-bottom: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--1 {\n padding-bottom: 0.5rem !important;\n }\n}\n\n.ds_\\\\!_padding--2 {\n padding: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--2 {\n padding: 1rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--2 {\n padding-left: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--2 {\n padding-left: 1rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--2 {\n padding-right: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--2 {\n padding-right: 1rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--2 {\n padding-top: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--2 {\n padding-top: 1rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--2 {\n padding-bottom: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--2 {\n padding-bottom: 1rem !important;\n }\n}\n\n.ds_\\\\!_padding--3 {\n padding: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--3 {\n padding: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--3 {\n padding-left: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--3 {\n padding-left: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--3 {\n padding-right: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--3 {\n padding-right: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--3 {\n padding-top: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--3 {\n padding-top: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--3 {\n padding-bottom: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--3 {\n padding-bottom: 1.5rem !important;\n }\n}\n\n.ds_\\\\!_padding--4 {\n padding: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--4 {\n padding: 2rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--4 {\n padding-left: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--4 {\n padding-left: 2rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--4 {\n padding-right: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--4 {\n padding-right: 2rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--4 {\n padding-top: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--4 {\n padding-top: 2rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--4 {\n padding-bottom: 1.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--4 {\n padding-bottom: 2rem !important;\n }\n}\n\n.ds_\\\\!_padding--5 {\n padding: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--5 {\n padding: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--5 {\n padding-left: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--5 {\n padding-left: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--5 {\n padding-right: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--5 {\n padding-right: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--5 {\n padding-top: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--5 {\n padding-top: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--5 {\n padding-bottom: 2rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--5 {\n padding-bottom: 2.5rem !important;\n }\n}\n\n.ds_\\\\!_padding--6 {\n padding: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--6 {\n padding: 3rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--6 {\n padding-left: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--6 {\n padding-left: 3rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--6 {\n padding-right: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--6 {\n padding-right: 3rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--6 {\n padding-top: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--6 {\n padding-top: 3rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--6 {\n padding-bottom: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--6 {\n padding-bottom: 3rem !important;\n }\n}\n\n.ds_\\\\!_padding--7 {\n padding: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--7 {\n padding: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--7 {\n padding-left: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--7 {\n padding-left: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--7 {\n padding-right: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--7 {\n padding-right: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--7 {\n padding-top: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--7 {\n padding-top: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--7 {\n padding-bottom: 2.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--7 {\n padding-bottom: 3.5rem !important;\n }\n}\n\n.ds_\\\\!_padding--8 {\n padding: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--8 {\n padding: 4rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--8 {\n padding-left: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--8 {\n padding-left: 4rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--8 {\n padding-right: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--8 {\n padding-right: 4rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--8 {\n padding-top: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--8 {\n padding-top: 4rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--8 {\n padding-bottom: 3rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--8 {\n padding-bottom: 4rem !important;\n }\n}\n\n.ds_\\\\!_padding--9 {\n padding: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding--9 {\n padding: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-left--9 {\n padding-left: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-left--9 {\n padding-left: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-right--9 {\n padding-right: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-right--9 {\n padding-right: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-top--9 {\n padding-top: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-top--9 {\n padding-top: 4.5rem !important;\n }\n}\n\n.ds_\\\\!_padding-bottom--9 {\n padding-bottom: 3.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_\\\\!_padding-bottom--9 {\n padding-bottom: 4.5rem !important;\n }\n}\n\n/*------------------------------------*\\\\\n DESIGN SYSTEM FORMS\n\\\\*------------------------------------*/\n/*------------------------------------*\\\\\n FORM VARIABLES\n\\\\*------------------------------------*/\n/*------------------------------------*\\\\\n FORM MIXINS\n\\\\*------------------------------------*/\n/*------------------------------------*\\\\\n FORM ELEMENTS (base)\n\\\\*------------------------------------*/\nlegend {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n font-weight: 700;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n legend {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n\nfieldset {\n border: 0;\n}\n\n.ds_form {\n display: flex;\n flex-direction: column;\n}\n.ds_form__content .ds_question:has(.ds_page-header) {\n margin-top: 1rem;\n}\n@media (min-width: 768px) {\n .ds_form__content .ds_question:has(.ds_page-header) {\n margin-top: 2rem;\n }\n}\n.ds_form__content .ds_question .ds_page-header {\n margin-top: 0;\n}\n.ds_form__actions .ds_button {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_form__actions .ds_button {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_form__actions .ds_button {\n margin-bottom: 2rem;\n }\n}\n\n/*------------------------------------*\\\\\n CHARACTER COUNT\n\\\\*------------------------------------*/\n.ds_character-count {\n margin-top: -16px;\n}\n\n/*------------------------------------*\\\\\n CHECKBOXES\n\\\\*------------------------------------*/\n.ds_checkbox {\n margin-bottom: 24px;\n padding-left: 40px;\n position: relative;\n}\n.ds_checkbox__input {\n height: 2.5rem;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 2.5rem;\n}\n.ds_checkbox__label {\n display: inline-block;\n padding: 4px 32px 4px 16px;\n}\n.ds_checkbox__label::before {\n background-color: #ffffff;\n border: 2px solid #333333;\n content: \"\";\n height: 40px;\n left: 0;\n position: absolute;\n width: 40px;\n}\n.ds_checkbox__label::after {\n content: \"\";\n position: absolute;\n bottom: calc(100% - 40px);\n left: 0;\n right: calc(100% - 40px);\n opacity: 0;\n}\n.ds_checkbox__label::before, .ds_checkbox__label::after {\n top: -4px;\n}\n@media (min-width: 768px) {\n .ds_checkbox__label::before, .ds_checkbox__label::after {\n top: 0;\n }\n}\n.ds_checkbox__input:focus + .ds_checkbox__label::before {\n background-color: #fdd522;\n border-color: #333333;\n border-width: 4px;\n box-shadow: 0 0 0 3px #fdd522;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_checkbox__input:focus + .ds_checkbox__label::before {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 4px !important;\n outline-offset: -4px;\n }\n}\n.ds_checkbox__input:checked + .ds_checkbox__label::after {\n opacity: 1;\n}\n.ds_checkbox--small {\n margin-bottom: 16px;\n margin-left: -8px;\n}\n.ds_checkbox--small .ds_checkbox__input {\n height: 1.5rem;\n left: 0.5rem;\n top: 0.5rem;\n width: 1.5rem;\n}\n.ds_checkbox--small .ds_checkbox__label::before {\n height: 1.5rem;\n left: 8px;\n top: 4px;\n width: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_checkbox--small .ds_checkbox__label::before {\n top: 8px;\n }\n}\n.ds_checkbox > .ds_hint-text {\n padding-left: 16px;\n}\n.ds_checkbox__label::after {\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0 5px 5px;\n border-top-color: transparent;\n left: 7px;\n height: 14px;\n top: 6px;\n width: 26px;\n transform: rotate(-45deg);\n}\n.ds_checkbox__input:checked + .ds_checkbox__label::before {\n background-color: currentColor;\n}\n.ds_checkbox__input:not(:focus):checked + .ds_checkbox__label::after {\n border-color: #ffffff;\n}\n.ds_checkbox__input:focus:checked + .ds_checkbox__label::before {\n background-color: #fdd522;\n}\n.ds_checkbox--small .ds_checkbox__label::after {\n border-width: 6px;\n left: 14px;\n top: 14px;\n}\n.ds_checkbox--small .ds_checkbox__label::after {\n width: 13px;\n height: 7px;\n left: 13px;\n top: 11px;\n border-width: 0 0 3px 3px;\n}\n.ds_checkbox .ds_question__error-message {\n margin-left: 16px;\n}\n\n.ds_checkboxes > .ds_checkbox:last-child {\n margin-bottom: 4px;\n}\n\n.ds_checkbox-separator {\n font-weight: 700;\n margin: 24px 0;\n text-align: center;\n width: 40px;\n}\n\n@media (min-width: 768px) {\n .ds_checkbox__label::after {\n top: 10px;\n }\n .ds_checkbox--small .ds_checkbox__label::after {\n top: 15px;\n }\n}\n/*------------------------------------*\\\\\n CURRENCY WRAPPER\n\\\\*------------------------------------*/\n.ds_currency-wrapper {\n position: relative;\n}\n.ds_currency-wrapper::before {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n content: \"£\";\n height: 48px;\n font-weight: 700;\n line-height: 48px !important;\n pointer-events: none;\n position: absolute;\n text-align: center;\n top: 0;\n width: 48px;\n}\n@media (min-width: 768px) {\n .ds_currency-wrapper::before {\n font-size: 1.5rem;\n line-height: 1.6666666667;\n }\n}\n.ds_currency-wrapper[data-symbol]::before {\n content: attr(data-symbol);\n}\n.ds_currency-wrapper > .ds_input {\n padding-left: 40px;\n}\n.ds_currency-wrapper > .ds_input:focus {\n padding-left: 39px;\n}\n\n/*------------------------------------*\\\\\n ERROR SUMMARY\n\\\\*------------------------------------*/\n.ds_error-summary {\n border: 0.25rem solid #d32205;\n padding: 1.25rem 1.75rem;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_error-summary {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_error-summary {\n margin-bottom: 2rem;\n }\n}\n.ds_error-summary > :last-child {\n margin-bottom: 0;\n}\n.ds_error-summary__title {\n margin-top: 0;\n}\n.ds_error-summary__list {\n color: #d32205;\n font-weight: 700;\n list-style-type: none;\n margin-left: 0;\n}\n.ds_error-summary__list a {\n color: #d32205;\n}\n.ds_error-summary__list a:hover:not(:focus) {\n background-color: #fee6e1;\n color: #951804;\n outline-color: #fee6e1;\n}\n.ds_error-summary__list a:focus {\n color: #333333;\n}\n.ds_error-summary__list li {\n margin-left: 0;\n}\n\n/*------------------------------------*\\\\\n FIELD GROUP\n\\\\*------------------------------------*/\n.ds_field-group > div:last-child {\n margin-bottom: 0;\n}\n.ds_field-group > div:last-child .ds_input {\n margin-bottom: 0;\n}\n.ds_field-group--inline {\n display: flex;\n flex-direction: row;\n gap: 1rem;\n}\n.ds_field-group--inline > div {\n margin-bottom: 0;\n}\n.ds_field-group--inline > div > :last-child {\n margin-bottom: 0;\n}\n\n/*------------------------------------*\\\\\n HINT TEXT\n\\\\*------------------------------------*/\n.ds_hint-text {\n color: #727272;\n margin-bottom: 16px;\n}\n.ds_hint-text > * {\n margin-bottom: 8px;\n}\n\n/*------------------------------------*\\\\\n LABEL\n\\\\*------------------------------------*/\n.ds_label {\n color: #333333;\n display: inline-block;\n font-weight: 700;\n margin-bottom: 8px;\n}\n\n/*------------------------------------*\\\\\n PREFILLED VALUE LIST\n\\\\*------------------------------------*/\n.ds_prefilled-value-list__key {\n margin: 0;\n margin-bottom: 0.5rem;\n padding: 0;\n}\n@media (min-width: 768px) {\n .ds_prefilled-value-list__key {\n margin-bottom: 0.5rem;\n }\n}\n.ds_prefilled-value-list__value {\n margin: 0;\n margin-bottom: 1.5rem;\n padding: 0;\n}\n@media (min-width: 768px) {\n .ds_prefilled-value-list__value {\n margin-bottom: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_prefilled-value-list__value {\n display: flex;\n }\n .ds_prefilled-value-list__value-actions {\n margin-left: 1.5rem;\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_prefilled-value-list__value-actions {\n margin-left: 1.5rem;\n }\n}\n\n/*------------------------------------*\\\\\n QUESTION\n\\\\*------------------------------------*/\n.ds_question {\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_question {\n margin-bottom: 1.5rem;\n }\n}\n.ds_question--error {\n border-left: 0.25rem solid #d32205;\n padding-left: 1.25rem;\n}\n.ds_question__message, .ds_question__error-message {\n margin-bottom: 1rem;\n}\n@media (min-width: 768px) {\n .ds_question__message, .ds_question__error-message {\n margin-bottom: 1rem;\n }\n}\n.ds_question__error-message {\n color: #d32205;\n font-weight: 700;\n}\n.ds_question > fieldset > :last-child {\n margin-bottom: 0;\n}\n\n/*------------------------------------*\\\\\n RADIO BUTTONS\n\\\\*------------------------------------*/\n.ds_radio {\n margin-bottom: 24px;\n padding-left: 40px;\n position: relative;\n}\n.ds_radio__input {\n height: 2.5rem;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 2.5rem;\n}\n.ds_radio__label {\n display: inline-block;\n padding: 4px 32px 4px 16px;\n}\n.ds_radio__label::before {\n background-color: #ffffff;\n border: 2px solid #333333;\n content: \"\";\n height: 40px;\n left: 0;\n position: absolute;\n width: 40px;\n}\n.ds_radio__label::after {\n content: \"\";\n position: absolute;\n bottom: calc(100% - 40px);\n left: 0;\n right: calc(100% - 40px);\n opacity: 0;\n}\n.ds_radio__label::before, .ds_radio__label::after {\n top: -4px;\n border-radius: 50%;\n}\n@media (min-width: 768px) {\n .ds_radio__label::before, .ds_radio__label::after {\n top: 0;\n }\n}\n.ds_radio__input:focus + .ds_radio__label::before {\n background-color: #fdd522;\n border-color: #333333;\n border-width: 4px;\n box-shadow: 0 0 0 3px #fdd522;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_radio__input:focus + .ds_radio__label::before {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 4px !important;\n outline-offset: -4px;\n }\n}\n.ds_radio__input:checked + .ds_radio__label::after {\n opacity: 1;\n}\n.ds_radio--small {\n margin-bottom: 16px;\n margin-left: -8px;\n}\n.ds_radio--small .ds_radio__input {\n height: 1.5rem;\n left: 0.5rem;\n top: 0.5rem;\n width: 1.5rem;\n}\n.ds_radio--small .ds_radio__label::before {\n height: 1.5rem;\n left: 8px;\n top: 4px;\n width: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_radio--small .ds_radio__label::before {\n top: 8px;\n }\n}\n.ds_radio > .ds_hint-text {\n padding-left: 16px;\n}\n.ds_radio__label::after {\n top: 6px;\n left: 10px;\n width: 0;\n height: 0;\n border: 10px solid currentColor;\n border-radius: 50%;\n background: currentColor;\n}\n.ds_radio__input:focus + .ds_radio__label::after {\n color: #333333;\n}\n.ds_radio--small .ds_radio__label::after {\n border-width: 6px;\n left: 14px;\n top: 10px;\n}\n\n@media (min-width: 768px) {\n .ds_radio__label::after {\n top: 10px;\n }\n .ds_radio--small .ds_radio__label::after {\n top: 14px;\n }\n}\n/*------------------------------------*\\\\\n REVEAL CONTENT\n\\\\*------------------------------------*/\n.ds_reveal-content {\n display: none;\n margin-top: 16px;\n padding-left: 16px;\n position: relative;\n}\n.ds_reveal-content > :last-child {\n margin-bottom: 0;\n}\n.ds_reveal-content::before {\n background-color: #b3b3b3;\n bottom: 0;\n content: \"\";\n left: -22px;\n position: absolute;\n top: 0;\n width: 4px;\n}\n\n:checked ~ .ds_reveal-content {\n display: block;\n}\n\n/*------------------------------------*\\\\\n SELECT\n\\\\*------------------------------------*/\n.ds_select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n background-position: center right 10px;\n background-repeat: no-repeat;\n border-radius: 0;\n border: 0;\n box-shadow: inset 0 0 0 2px currentColor;\n min-height: 3rem;\n outline: 2px solid transparent;\n outline-offset: -2px;\n padding: 0.5rem 3rem 0.5rem 0.75rem;\n}\n.ds_select:focus {\n outline: 2px solid #fdd522;\n outline-offset: 0;\n box-shadow: inset 0 0 0 4px currentColor;\n}\n.ds_select::-ms-expand {\n display: none;\n}\n\n.ds_select-arrow {\n background: #0065bd;\n display: none;\n width: 3rem;\n outline: 2px solid transparent;\n outline-offset: -2px;\n pointer-events: none;\n position: relative;\n}\n@supports ((-webkit-appearance: none) or (-moz-appearance: none) or (appearance: none)) or (-webkit-appearance: none) {\n .ds_select-arrow {\n display: block;\n }\n}\n.ds_select-arrow::before {\n bottom: 0;\n color: #ffffff;\n font-size: 1rem;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.1875em 0.1875em;\n border-top-color: transparent;\n display: inline-block;\n height: 0.75em;\n width: 0.75em;\n transform: rotate(-45deg);\n right: calc(50% - 0.375em);\n top: calc(50% - 0.5625em);\n}\n\n.ds_select:focus + .ds_select-arrow {\n background-color: #fdd522;\n}\n.ds_select:focus + .ds_select-arrow::before {\n color: #333333;\n}\n\n.ds_select-wrapper {\n margin-bottom: 1.5rem;\n max-width: -moz-max-content;\n max-width: max-content;\n min-width: 10em;\n}\n@media (min-width: 768px) {\n .ds_select-wrapper {\n margin-bottom: 1.5rem;\n }\n}\n\n.ds_select-wrapper.ds_input--error .ds_select,\n.ds_select-wrapper .ds_select--error,\n.ds_select-wrapper .ds_input--error {\n box-shadow: inset 0 0 0 4px #d32205;\n}\n.ds_select-wrapper.ds_input--error .ds_select:focus,\n.ds_select-wrapper .ds_select--error:focus,\n.ds_select-wrapper .ds_input--error:focus {\n box-shadow: inset 0 0 0 4px currentColor;\n}\n\n.ds_select-wrapper.ds_input--error {\n padding: 0;\n}\n\n@supports (display: grid) {\n .ds_select-wrapper {\n display: grid;\n grid-template-columns: 1fr auto;\n }\n .ds_select {\n background-image: none;\n grid-area: 1/1/1/3;\n }\n .ds_select-arrow {\n grid-area: 1/2/1/2;\n }\n}\n/*------------------------------------*\\\\\n TEXT INPUTS\n Covers text-based INPUT elements and TEXTAREA elements\n\\\\*------------------------------------*/\n.ds_input {\n margin-bottom: 1.5rem;\n background-color: #ffffff;\n border: 2px solid currentColor;\n border-radius: 0;\n display: block;\n line-height: 2rem;\n min-height: 3rem;\n padding: 0.375rem 0.625rem;\n width: 100%;\n}\n@media (min-width: 768px) {\n .ds_input {\n margin-bottom: 1.5rem;\n }\n}\n.ds_input:focus {\n outline: 2px solid #fdd522;\n outline-offset: 0;\n box-shadow: inset 0 0 0 2px;\n}\n.ds_input--error {\n border-color: #d32205;\n border-width: 4px;\n padding: 0.25rem 0.5rem;\n}\n.ds_input--error:focus {\n border-color: currentColor;\n box-shadow: none;\n}\n.ds_input + .ds_input__message {\n margin-top: -1rem;\n}\n.ds_input__message--error {\n color: #d32205;\n font-weight: 700;\n}\n\n.ds_input--fixed-2 {\n max-width: calc(16px + 2em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-2 {\n max-width: calc(48px + 2em);\n}\n\n.ds_input--fixed-3 {\n max-width: calc(16px + 3em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-3 {\n max-width: calc(48px + 3em);\n}\n\n.ds_input--fixed-4 {\n max-width: calc(16px + 4em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-4 {\n max-width: calc(48px + 4em);\n}\n\n.ds_input--fixed-5 {\n max-width: calc(16px + 5em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-5 {\n max-width: calc(48px + 5em);\n}\n\n.ds_input--fixed-10 {\n max-width: calc(16px + 10em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-10 {\n max-width: calc(48px + 10em);\n}\n\n.ds_input--fixed-20 {\n max-width: calc(16px + 20em);\n}\n\n.ds_currency-wrapper .ds_input--fixed-20 {\n max-width: calc(48px + 20em);\n}\n\n.ds_input--fluid-one-quarter {\n max-width: 25%;\n}\n\n.ds_input--fluid-one-third {\n max-width: 33.333333%;\n}\n\n.ds_input--fluid-half {\n max-width: 50%;\n}\n\n.ds_input--fluid-two-thirds {\n max-width: 67.666667%;\n}\n\n.ds_input--fluid-three-quarters {\n max-width: 75%;\n}\n\n.ds_input__wrapper {\n display: block;\n margin-bottom: 1.5rem;\n overflow: auto;\n}\n.ds_input__wrapper .ds_input {\n float: left;\n margin-bottom: 0;\n margin-right: -3rem;\n padding-right: 3.5rem;\n}\n.ds_input__wrapper .ds_icon {\n height: 2rem;\n padding: 0.5rem;\n width: 2rem;\n}\n.ds_input__wrapper > .ds_button {\n margin: 0;\n min-height: 48px;\n min-width: 48px;\n padding-top: 12px;\n padding-bottom: 12px;\n}\n.ds_input__wrapper > .ds_button > .ds_icon {\n height: 32px;\n padding: 8px;\n width: 32px;\n}\n\n@supports (display: flex) {\n .ds_input__wrapper {\n display: flex;\n overflow: visible;\n }\n}\n/*------------------------------------*\\\\\n ACCORDION\n\\\\*------------------------------------*/\n.ds_accordion {\n margin-bottom: calc(1.5rem + -1px);\n margin-top: 1.5rem;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_accordion {\n margin-bottom: calc(2rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_accordion {\n margin-top: 2rem;\n }\n}\n.ds_accordion__open-all {\n display: none;\n float: right;\n line-height: 1.5;\n margin-bottom: 0.5rem;\n position: relative;\n text-decoration: none;\n}\n@media (min-width: 768px) {\n .ds_accordion__open-all {\n line-height: 1.6842105263;\n }\n}\n.ds_accordion__open-all + * {\n clear: both;\n}\n\nh1 + .ds_accordion, h2 + .ds_accordion, h3 + .ds_accordion {\n margin-top: 0;\n}\n\n.ds_accordion.js-initialised .ds_accordion__open-all {\n display: block;\n}\n\n.ds_accordion-item {\n border-bottom: 1px solid #ebebeb;\n border-top: 1px solid #ebebeb;\n}\n.ds_accordion-item__header {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n font-size: 1rem;\n line-height: 1.5;\n background-color: #ffffff;\n border-width: 0;\n color: #0065bd;\n font-weight: 700;\n margin: 0;\n position: relative;\n text-align: left;\n width: 100%;\n}\n.ds_accordion-item__header:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_accordion-item__header:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_accordion-item__header:hover:not(:focus) {\n background-color: #d9eeff;\n}\n@media (min-width: 768px) {\n .ds_accordion-item__header {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n.ds_accordion-item__header:hover:not(:focus) {\n color: #00437d;\n}\n.ds_accordion-item__title {\n font-size: 1rem;\n line-height: 1.5;\n margin-bottom: 0;\n padding: 1rem 3rem calc(1rem - 1px) 1rem;\n}\n@media (min-width: 768px) {\n .ds_accordion-item__title {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n.ds_accordion-item__title--button {\n padding: 0;\n}\n.ds_accordion-item__button {\n -webkit-appearance: initial;\n -moz-appearance: initial;\n appearance: initial;\n background: transparent;\n border: 0;\n padding: 1rem 3rem calc(1rem - 1px) 1rem;\n text-align: left;\n width: 100%;\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n}\n.ds_accordion-item__button:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_accordion-item__button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_accordion-item__button:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_accordion-item__label {\n cursor: pointer;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n.ds_accordion-item__title--button .ds_accordion-item__label {\n z-index: -1;\n}\n.ds_accordion-item__indicator {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.1875em 0.1875em;\n border-top-color: transparent;\n display: inline-block;\n height: 0.75em;\n width: 0.75em;\n transform: rotate(-45deg);\n position: absolute;\n right: 1.5rem;\n top: 1.125rem;\n transition: transform 0.2s, top 0.2s;\n pointer-events: none;\n}\n@media (min-width: 768px) {\n .ds_accordion-item__indicator {\n top: 1.3125rem;\n right: 1.625rem;\n }\n}\n.ds_accordion-item__body {\n display: none;\n padding: 1.5rem 2.5rem 2rem 1rem;\n}\n.ds_accordion-item__body > :last-child {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_accordion-item__body {\n padding-right: 6.25rem;\n }\n}\n.ds_accordion-item__control:checked ~ .ds_accordion-item__body {\n display: block;\n}\n.ds_accordion-item__control:checked ~ .ds_accordion-item__header {\n background-color: #f8f8f8;\n color: #333333;\n}\n.ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\n top: 1.375rem;\n transform: rotate(-225deg);\n}\n@media (min-width: 768px) {\n .ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\n top: 1.6875rem;\n right: 1.625rem;\n }\n}\n.ds_accordion-item__control:focus ~ .ds_accordion-item__header, .ds_accordion-item__control:focus:hover ~ .ds_accordion-item__header {\n background: #fdd522;\n box-shadow: 0 3px #333333;\n color: #333333;\n z-index: 2;\n}\n.ds_accordion-item + .ds_accordion-item {\n margin-top: -1px;\n}\n\n/* SMALL VARIANT */\n.ds_accordion--small .ds_accordion-item__header,\n.ds_accordion--small .ds_accordion-item__title,\n.ds_accordion--small .ds_accordion-item__button,\n.ds_accordion--small .ds_accordion-item__body,\n.ds_accordion--small .ds_accordion__open-all {\n font-size: 1rem;\n line-height: 1.5;\n}\n.ds_accordion--small .ds_accordion-item__body {\n padding-right: 1rem;\n}\n.ds_accordion--small .ds_accordion-item__body h3, .ds_accordion--small .ds_accordion-item__body h4 {\n font-size: 1em;\n line-height: 1.5;\n}\n.ds_accordion--small .ds_accordion-item__indicator {\n margin-top: 0;\n right: 1.5rem;\n top: 1.125rem;\n}\n.ds_accordion--small .ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\n right: 1.5rem;\n top: 1.5rem;\n}\n\n@media (min-width: 768px) {\n .ds_accordion--small .ds_accordion-item__indicator {\n top: 1.125rem;\n }\n}\n/*------------------------------------*\\\\\n ARTICLE ASIDE\n\\\\*------------------------------------*/\n.ds_article-aside {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n font-size: 0.875rem;\n line-height: 1.7142857143;\n padding-top: 1.5rem;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_article-aside {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_article-aside {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_article-aside {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_article-aside {\n padding-top: 2rem;\n }\n}\n.ds_article-aside:first-child {\n margin-top: 0;\n}\n.ds_article-aside::before {\n border-top: 2px solid #0065bd;\n content: \"\";\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.ds_aspect-box {\n overflow: hidden;\n position: relative;\n padding-bottom: 56.25%;\n}\n.ds_aspect-box--square {\n padding-bottom: 100%;\n}\n.ds_aspect-box--43 {\n padding-bottom: 75%;\n}\n.ds_aspect-box--235 {\n padding-bottom: 42.5531914894%;\n}\n.ds_aspect-box--219 {\n padding-bottom: 42.8571428571%;\n}\n.ds_aspect-box--fallback {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.ds_aspect-box--fallback .ds_aspect-box__inner {\n display: none;\n}\n.ds_aspect-box__inner {\n height: 100%;\n left: 0;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n position: absolute;\n right: 0;\n}\n\n/*------------------------------------*\\\\\n AUTOCOMPLETE\n\\\\*------------------------------------*/\n.ds_autocomplete {\n position: relative;\n /*\n [1] 10px = 12px (associated site search input) minus 2px (suggestions border), 11px = 12px vertical padding minus 2px (suggestions border) split evenly between top and bottom padding\n */\n}\n.ds_autocomplete__suggestions {\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\n border: 2px solid #727272;\n display: none;\n left: 0;\n position: absolute;\n right: 0;\n top: 100%;\n z-index: 10;\n}\n.ds_autocomplete__suggestions-list {\n list-style-type: none;\n margin: 0;\n}\n.ds_autocomplete__suggestion {\n background-color: #ffffff;\n color: #727272;\n cursor: pointer;\n font-style: italic;\n margin-bottom: 0;\n padding: 11px 10px; /* [1] */\n transition: background-color 0.2s;\n}\n.ds_autocomplete__suggestion:hover {\n background-color: #d9eeff;\n}\n.ds_autocomplete__suggestion:not(:last-child) {\n border-bottom: 2px solid #727272;\n}\n.ds_autocomplete__suggestion__text {\n font-style: normal;\n color: #333333;\n}\n.ds_autocomplete__suggestion__category {\n color: #0065bd;\n}\n.ds_autocomplete__suggestion.active {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_autocomplete__suggestion.active {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n outline-offset: -2px;\n }\n}\n.ds_autocomplete__suggestion.active .ds_autocomplete__suggestion__text {\n color: #333333;\n}\n\n.js-autocomplete-input.js-has-suggestions ~ .ds_autocomplete__suggestions {\n display: block;\n}\n\n@media (min-width: 768px) {\n .ds_autocomplete__suggestions {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n/*------------------------------------*\\\\\n BACK LINK\n\\\\*------------------------------------*/\n.ds_back-link {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n align-items: center;\n display: inline-flex;\n margin: 16px 0 16px 16px;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_back-link {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_back-link::before {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.125em 0.125em;\n border-top-color: transparent;\n display: inline-block;\n height: 0.5em;\n width: 0.5em;\n transform: rotate(-315deg);\n border-width: 0 0 2px 2px;\n left: -14px;\n position: absolute;\n}\n\n/*------------------------------------*\\\\\n \\$BACK TO TOP\n\\\\*------------------------------------*/\n.ds_back-to-top {\n display: none;\n}\n\n@media only screen {\n .ds_back-to-top {\n bottom: 3.5rem;\n display: block;\n pointer-events: none;\n position: absolute;\n right: 0.5rem;\n top: calc(100vh - 1px);\n z-index: 1;\n }\n @supports (bottom: var(--ds-back-to-top-offset)) {\n .ds_back-to-top {\n bottom: 0;\n bottom: var(--ds-back-to-top-offset, 0);\n }\n }\n .ds_back-to-top__button {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n font-size: 0.875rem;\n line-height: 1.7142857143;\n background-color: rgba(255, 255, 255, 0.4);\n font-weight: 700;\n margin: 0;\n min-width: 7.5rem;\n pointer-events: all;\n padding: 0.5rem 2.125rem 0.5rem 1.125rem;\n position: fixed;\n position: sticky;\n right: 0.5rem;\n top: calc(100vh - 3.5rem);\n }\n .ds_back-to-top__button:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n }\n}\n@media only screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_back-to-top__button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n@media only screen {\n .ds_back-to-top__button:hover:not(:focus) {\n background-color: #d9eeff;\n }\n}\n@media only screen and (min-width: 768px) {\n .ds_back-to-top__button {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media only screen {\n .ds_back-to-top__button::before {\n content: \"\";\n position: absolute;\n left: 1rem;\n right: 2rem;\n top: 0.5rem;\n bottom: 0.5rem;\n z-index: -1;\n }\n .ds_back-to-top__icon {\n height: 1.5rem;\n min-height: 1.5rem;\n position: absolute;\n right: 0.5rem;\n top: 0.5rem;\n }\n .ds_back-to-top__button::before, .ds_back-to-top__icon {\n background-color: #ffffff;\n transition: background-color 0.2s;\n }\n}\n@media only screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_back-to-top__button::before, .ds_back-to-top__icon {\n background-color: transparent;\n }\n}\n@media only screen {\n .ds_back-to-top__button:hover::before, .ds_back-to-top__button:hover .ds_back-to-top__icon, .ds_back-to-top__button:focus::before, .ds_back-to-top__button:focus .ds_back-to-top__icon {\n background-color: transparent;\n }\n}\n/*------------------------------------*\\\\\n \\$BREADCRUMBS\n\\\\*------------------------------------*/\n.ds_breadcrumbs {\n color: #727272;\n font-size: 14px;\n line-height: 24px;\n padding-left: 0;\n margin: 24px 0 16px;\n}\n.ds_breadcrumbs__item {\n display: inline-block;\n margin: 0;\n padding: 0;\n}\n.ds_breadcrumbs__item:not(:first-child) .ds_breadcrumbs__link {\n margin-left: -2px;\n}\n.ds_breadcrumbs__item:not(:first-child)::before {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.08333325em 0.08333325em;\n border-top-color: transparent;\n display: inline-block;\n height: 0.333333em;\n width: 0.333333em;\n transform: rotate(-135deg);\n margin: 0 8px 0 6px;\n position: relative;\n top: -1px;\n}\n.ds_breadcrumbs__container {\n padding-top: 16px;\n}\n@media (min-width: 768px) {\n .ds_breadcrumbs__container {\n padding-top: 24px;\n }\n}\n@supports (display: flex) {\n .ds_breadcrumbs {\n display: flex;\n flex-wrap: wrap;\n }\n}\n\n.ds_reversed .ds_breadcrumbs {\n color: #ffffff;\n}\n\n/*------------------------------------*\\\\\n BUTTONS\n\\\\*------------------------------------*/\n.ds_button {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n min-height: 56px;\n min-width: 56px;\n padding: 16px;\n background: #0065bd;\n border: 0;\n border-radius: 0;\n color: #ffffff;\n cursor: pointer;\n display: inline-block;\n font-weight: 700;\n line-height: 1.5rem;\n outline: 2px solid transparent;\n outline-offset: -2px;\n position: relative;\n text-align: center;\n text-decoration: none;\n transition: background-color 0.2s;\n margin-bottom: 1.5rem;\n margin-top: 0;\n}\n@media (min-width: 768px) {\n .ds_button {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_button > .ds_icon {\n height: 40px;\n padding: 8px;\n width: 40px;\n}\n@media (min-width: 768px) {\n .ds_button {\n margin-bottom: 2rem;\n }\n}\n.ds_button:hover {\n background-color: #00437d;\n color: #ffffff;\n outline-color: transparent;\n transition-duration: 0.2s;\n}\n.ds_button:focus {\n background-color: #fdd522;\n box-shadow: 0 3px #333333;\n color: #333333;\n outline: 0;\n transition-duration: 0s;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 4px !important;\n }\n}\n.ds_button .ds_icon {\n pointer-events: none;\n}\n.ds_button[disabled] {\n background-color: #727272;\n box-shadow: none;\n color: #ffffff;\n font-weight: 400;\n outline: none;\n pointer-events: none;\n}\n\n.ds_reversed .ds_button {\n background-color: #ffffff;\n color: #0065bd;\n}\n.ds_reversed .ds_button:focus, .ds_reversed .ds_button:hover:focus {\n background-color: #fdd522;\n}\n.ds_reversed .ds_button:hover {\n background-color: #d9eeff;\n}\n.ds_reversed .ds_button--secondary {\n background-color: transparent;\n border-color: currentColor;\n color: #ffffff;\n}\n.ds_reversed .ds_button--secondary:hover:not(:focus) {\n background-color: rgba(0, 0, 0, 0.3);\n color: #ffffff;\n outline-color: currentColor;\n}\n\n.ds_button--secondary {\n background-color: transparent;\n color: #0065bd;\n outline: 2px solid currentColor;\n outline-offset: -2px;\n}\n.ds_button--secondary:hover:not(:focus) {\n background-color: #d9eeff;\n color: #00437d;\n outline: 2px solid currentColor;\n outline-offset: -2px;\n}\n.ds_button--cancel {\n background-color: transparent;\n color: #333333;\n outline: 2px solid currentColor;\n outline-offset: -2px;\n}\n.ds_button--cancel:hover:not(:focus) {\n background-color: #ebebeb;\n color: #333333;\n outline: 2px solid currentColor;\n outline-offset: -2px;\n}\n\n.ds_button--small {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n min-height: 48px;\n min-width: 48px;\n padding-top: 12px;\n padding-bottom: 12px;\n}\n@media (min-width: 768px) {\n .ds_button--small {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_button--small > .ds_icon {\n height: 32px;\n padding: 8px;\n width: 32px;\n}\n\n.ds_button--fixed {\n width: 12.5rem;\n}\n.ds_button--fixed.ds_button--small {\n width: 10rem;\n}\n.ds_button--max {\n max-width: 30rem;\n width: 100%;\n}\n\n.ds_button .ds_icon {\n bottom: 0;\n box-sizing: content-box;\n pointer-events: none;\n position: absolute;\n right: 0;\n top: 0;\n}\n.ds_button--has-icon {\n padding-right: calc(56px + 16px);\n}\n.ds_button--has-icon--left {\n padding-left: calc(56px + 16px);\n padding-right: 16px;\n}\n.ds_button--has-icon--left .ds_icon {\n left: 0;\n right: auto;\n}\n\n/*------------------------------------*\\\\\n BUTTON GROUP\n\\\\*------------------------------------*/\n.ds_button-group {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n gap: 1rem;\n display: flex;\n flex-wrap: wrap;\n}\n@media (min-width: 768px) {\n .ds_button-group {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_button-group {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_button-group {\n gap: 1rem;\n }\n}\n.ds_button-group .ds_button {\n align-content: center;\n margin: 0;\n}\n.ds_button-group a:not(.ds_button),\n.ds_button-group .ds_link {\n align-self: center;\n}\n@media (max-width: 479px) {\n .ds_button-group {\n flex-direction: column;\n }\n .ds_button-group .ds_button {\n width: 100%;\n }\n .ds_button-group--inline {\n flex-direction: row;\n flex-wrap: nowrap;\n }\n .ds_button-group--inline .ds_button {\n flex-grow: 1;\n width: auto;\n }\n .ds_button-group--inline .ds_link {\n min-width: -moz-fit-content;\n min-width: fit-content;\n }\n .ds_button-group:not(.ds_button-group--inline) .ds_button--has-icon {\n padding-right: 56px;\n padding-left: 56px;\n }\n}\n\n/*------------------------------------*\\\\\n COOKIE BANNER\n Modifications to the notification banner component for this particular use case\n\\\\*------------------------------------*/\n.ds_notification.ds_notification--cookie {\n background: #ebebeb;\n color: #333333;\n}\n.ds_notification.ds_notification--cookie .ds_notification__content {\n padding-top: 24px;\n padding-bottom: 32px;\n}\n\n.ds_notification.ds_notification--cookie-success {\n background: #428542;\n}\n\n/*------------------------------------*\\\\\n CALLOUT\n Deprecated. Consider 'Inset text' or 'Notification message' instead.\n\\\\*------------------------------------*/\n.ds_callout {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n background: #f8f8f8;\n border-left: 4px solid #0065bd;\n}\n@media (min-width: 768px) {\n .ds_callout {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_callout {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_callout {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_callout {\n padding-bottom: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_callout {\n padding-left: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_callout {\n padding-right: 1.5rem;\n }\n}\n.ds_callout > :last-child {\n margin-bottom: 0;\n}\n.ds_callout--no-border {\n border: none;\n}\n.ds_callout__label.ds_content-label {\n color: #0065bd;\n font-size: 14px;\n}\n.ds_callout__label + .ds_callout__title {\n margin-top: 0;\n}\n\n/*------------------------------------*\\\\\n CARD\n\\\\*------------------------------------*/\n.ds_card {\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\n font-size: 0.875rem;\n line-height: 1.7142857143;\n background-color: #ffffff;\n display: grid;\n grid-template-rows: auto 1fr;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_card {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_card {\n outline: 2px solid currentColor !important;\n outline-offset: -2px !important;\n }\n}\n.ds_card--grey {\n background-color: #f8f8f8;\n color: #333333;\n}\n.ds_card--grey:focus-within {\n color: #333333;\n}\n.ds_card--hover:hover, .ds_card--has-hover:hover {\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);\n}\n.ds_card--hover:hover:not(:focus), .ds_card--has-hover:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_card--hover:hover:not(:focus) .ds_metadata, .ds_card--has-hover:hover:not(:focus) .ds_metadata {\n color: inherit;\n}\n.ds_card--hover:focus-within, .ds_card--has-hover:focus-within {\n background-color: #fdd522 !important;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n transition-duration: 0s;\n}\n.ds_card--hover:focus-within .ds_card__link--cover, .ds_card--has-hover:focus-within .ds_card__link--cover {\n background-color: transparent;\n box-shadow: none;\n outline: none;\n}\n.ds_card--hover:focus-within .ds_metadata, .ds_card--has-hover:focus-within .ds_metadata {\n color: inherit;\n}\n@media (max-width: 767px) {\n .ds_card__media--small-mobile {\n margin: 1rem 1rem 0;\n max-width: 384px;\n }\n}\n.ds_card__content {\n display: grid;\n grid-template-rows: auto auto 1fr;\n height: 100%;\n padding-top: 1rem;\n padding-right: 1rem;\n padding-bottom: 1.5rem;\n padding-left: 1rem;\n}\n.ds_card__content > :last-child {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_card__content {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_card__content {\n padding-right: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_card__content {\n padding-bottom: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_card__content {\n padding-left: 1rem;\n }\n}\n.ds_card__content-footer {\n align-self: end;\n}\n.ds_card__content-footer > :last-child {\n margin-bottom: 0;\n}\n.ds_card__title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin-bottom: 1rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n margin-top: 0 !important;\n}\n@media (min-width: 768px) {\n .ds_card__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_card__title {\n margin-bottom: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_card__title {\n margin-bottom: 0.5rem;\n }\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_card__link--cover:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_card__link--cover:after {\n content: \"\";\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n width: 100%;\n z-index: 1;\n}\n\n/* Support for old markup */\n.ds_card .ds_category-item__link:hover:before {\n display: none;\n}\n\n/*------------------------------------*\\\\\n CATEGORY HEADER\n\\\\*------------------------------------*/\n.ds_category-header {\n padding-top: 16px;\n padding-bottom: 32px;\n}\n.ds_category-header__header {\n margin-bottom: 32px;\n}\n.ds_category-header__title {\n color: #333333;\n font-weight: 300;\n margin-bottom: 8px;\n}\n.ds_category-header__summary {\n line-height: 24px;\n}\n.ds_category-header__summary > :last-child {\n margin-bottom: 8px;\n}\n.ds_category-header__media {\n display: block;\n margin: 0 auto;\n height: auto;\n max-height: 360px;\n max-width: 320px;\n}\n@media (min-width: 768px) {\n .ds_category-header__media {\n max-width: 100%;\n }\n}\n\n.ds_reversed .ds_category-header {\n color: #ffffff;\n}\n.ds_reversed .ds_category-header__title {\n color: #ffffff;\n}\n\n.ds_category-header {\n margin-right: -32px;\n overflow: hidden;\n}\n.ds_category-header > * {\n margin-right: 32px;\n}\n@supports (display: grid) {\n .ds_category-header {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_category-header > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n\n.ds_category-header {\n grid-gap: 32px 32px;\n}\n\n@media (min-width: 768px) {\n .ds_category-header__header {\n float: left;\n width: calc(66.6666666667% - 32px);\n margin: 40px 0;\n }\n .ds_category-header__media-container {\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_category-header__summary {\n line-height: 32px;\n }\n}\n@supports (display: grid) {\n .ds_category-header__header {\n margin-bottom: 0;\n }\n @media (min-width: 768px) {\n .ds_category-header {\n align-items: center;\n grid-template-columns: repeat(12, 1fr);\n }\n .ds_category-header__header {\n float: none;\n grid-column: 1/span 8;\n margin: 40px 0;\n }\n .ds_category-header__media-container {\n float: none;\n grid-column: 9/span 4;\n margin-right: 0;\n }\n }\n}\n/*------------------------------------*\\\\\n CATEGORY ITEM\n Navigation elements for different levels of category navigation. Includes classes for layout of these elements in a list.\n\\\\*------------------------------------*/\n.ds_category-item {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n /*\n supports grid is a hack as a proxy for supports :focus-within\n */\n padding: 12px 16px 12px;\n text-decoration: none;\n transition: background-color 0.2s, border-color 0.2s;\n width: 100%;\n}\n.ds_category-item:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_category-item:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_category-item:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_category-item .ds_category-item__link:focus:hover {\n text-decoration: none;\n}\n@supports (display: grid) {\n .ds_category-item .ds_category-item__link {\n background-color: transparent;\n outline: none;\n }\n .ds_category-item .ds_category-item__link::after {\n content: \"\";\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n width: 100%;\n z-index: 0;\n }\n @media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_category-item .ds_category-item__link::after {\n content: none;\n }\n }\n .ds_category-item .ds_category-item__link:focus::after {\n transition-duration: 0s;\n }\n .ds_category-item:focus-within {\n background-color: #fdd522 !important;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n transition-duration: 0s;\n }\n .ds_category-item:focus-within .ds_category-item__link:focus {\n box-shadow: none;\n background-color: transparent;\n }\n @media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_category-item:focus-within .ds_category-item__link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n }\n}\n.ds_category-item > :last-child {\n margin-bottom: 0;\n}\n.ds_category-item__title {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n line-height: 28px;\n margin: 0 0 16px;\n}\n@media (min-width: 768px) {\n .ds_category-item__title {\n font-size: 1.5rem;\n line-height: 1.6666666667;\n }\n}\n.ds_category-item .ds_category-item__link::after {\n left: -4px;\n}\n.ds_category-item__link {\n color: #0065bd;\n}\n.ds_category-item__link::before {\n border-left: 4px solid #0065bd;\n bottom: 0;\n content: \"\";\n left: -4px;\n opacity: 0.3;\n position: absolute;\n top: 0;\n width: 4px;\n}\n.ds_category-item__link:focus::before {\n content: none;\n}\n.ds_category-item__link:hover::before {\n border-color: #00437d;\n opacity: 1;\n}\n.ds_category-item__link::after {\n background: transparent;\n bottom: 0;\n content: \"\";\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.ds_category-item__summary {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n color: #727272;\n line-height: 24px;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_category-item__summary {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_category-item:hover .ds_category-item__summary, .ds_category-item:focus-within .ds_category-item__summary {\n color: #333333;\n}\n\n.ds_card > .ds_category-item {\n padding-top: 24px;\n padding-bottom: 24px;\n position: static;\n}\n.ds_card .ds_category-item__link::before {\n border-width: 0;\n}\n\n@media (min-width: 768px) {\n .ds_category-item__title {\n line-height: 32px;\n }\n .ds_card > .ds_category-item {\n min-height: 200px;\n }\n}\n/*------------------------------------*\\\\\n CATEGORY LIST\n\\\\*------------------------------------*/\n.ds_category-list-container {\n margin: 32px 0;\n}\n\n.ds_category-list {\n margin-right: -32px;\n overflow: hidden;\n list-style-type: none;\n margin-bottom: 32px;\n margin-left: -8px;\n margin-top: -8px;\n padding: 8px;\n}\n.ds_category-list > * {\n margin-right: 32px;\n}\n@supports (display: grid) {\n .ds_category-list {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_category-list > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n.ds_category-list > * {\n display: flex;\n flex-direction: column;\n margin: 0 0 32px;\n width: 100%;\n}\n.ds_category-list--narrow > * {\n margin-bottom: 12px;\n}\n\n.ds_category-list--narrow {\n margin-right: -12px;\n overflow: hidden;\n}\n.ds_category-list--narrow > * {\n margin-right: 12px;\n}\n@supports (display: grid) {\n .ds_category-list--narrow {\n display: grid;\n grid-gap: 0 12px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_category-list--narrow > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n\n@media (max-width: 767px) {\n .ds_category-list--grid > * {\n min-height: 0;\n }\n}\n@media (min-width: 768px) {\n .ds_category-list--grid > * {\n float: left;\n width: calc(50% - 32px);\n }\n .ds_category-list--grid > *:nth-child(2n+1) {\n clear: left;\n }\n .ds_category-list--grid.ds_category-list--narrow > * {\n width: calc(50% - 12px);\n }\n}\n@media (min-width: 992px) {\n .ds_category-list--grid > * {\n width: calc(33.3333333333% - 32px);\n }\n .ds_category-list--grid > *:nth-child(n) {\n clear: none;\n }\n .ds_category-list--grid > *:nth-child(3n+1) {\n clear: left;\n margin-left: 0;\n }\n .ds_category-list--grid.ds_category-list--narrow > * {\n width: calc(33.3333333333% - 12px);\n }\n}\n@supports (display: grid) {\n .ds_category-list {\n grid-row-gap: 32px;\n margin-left: 0;\n margin-top: 0;\n padding: 0;\n }\n .ds_category-list--narrow {\n grid-gap: 12px 12px;\n }\n .ds_category-list > *[class] {\n margin-bottom: 0;\n }\n @media (min-width: 768px) {\n .ds_category-list--grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n }\n @media (min-width: 992px) {\n .ds_category-list--grid {\n grid-template-columns: 1fr 1fr 1fr;\n }\n }\n}\n/*------------------------------------*\\\\\n CONFIRMATION MESSAGE\n\\\\*------------------------------------*/\n.ds_confirmation-message {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n padding-right: 1rem;\n background-color: #f8f8f8;\n border-left: 0.25rem solid #428542;\n padding-left: 2.75rem;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_confirmation-message {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_confirmation-message {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_confirmation-message {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_confirmation-message {\n padding-bottom: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_confirmation-message {\n padding-right: 1rem;\n }\n}\n.ds_confirmation-message__icon {\n color: #428542;\n left: 0.75rem;\n position: absolute;\n top: 1.25rem;\n}\n@media (min-width: 768px) {\n .ds_confirmation-message__icon {\n top: 1.5rem;\n }\n}\n.ds_confirmation-message__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_confirmation-message__title {\n font-size: 1.875rem;\n line-height: 1.3333333333;\n }\n}\n.ds_confirmation-message__title:not(:first-child) {\n margin-top: 0;\n}\n.ds_confirmation-message__body {\n margin-top: 0.5rem;\n}\n.ds_confirmation-message__body > :last-child {\n margin-bottom: 0;\n}\n.ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__icon {\n top: 1rem;\n}\n@media (min-width: 768px) {\n .ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__icon {\n top: 1.25rem;\n }\n}\n.ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__body {\n margin-top: 0;\n}\n\n/*------------------------------------*\\\\\n CONTACT DETAILS\n\\\\*------------------------------------*/\n.ds_contact-details__title {\n padding-top: 0.5rem;\n display: inline-block;\n margin-bottom: 0;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_contact-details__title {\n padding-top: 0.5rem;\n }\n}\n.ds_contact-details__title::after {\n border-top: 4px solid #0065bd;\n content: \"\";\n height: 4px;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.ds_contact-details__item {\n margin-top: 1rem;\n}\n@media (min-width: 768px) {\n .ds_contact-details__item {\n margin-top: 1rem;\n }\n}\n.ds_contact-details__item dd {\n margin-top: 0;\n margin-left: 0;\n}\n.ds_contact-details__item dt:not(.visually-hidden) + .ds_contact-details__social-item {\n margin-top: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_contact-details__item dt:not(.visually-hidden) + .ds_contact-details__social-item {\n margin-top: 0.5rem;\n }\n}\n.ds_contact-details__social-item {\n margin-bottom: 0.5rem;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_contact-details__social-item {\n margin-bottom: 0.5rem;\n }\n}\n.ds_contact-details__social-item:has(.ds_contact-details__social-icon):not(:first-of-type) {\n margin-top: 1rem;\n}\n@media (min-width: 768px) {\n .ds_contact-details__social-item:has(.ds_contact-details__social-icon):not(:first-of-type) {\n margin-top: 1rem;\n }\n}\n.ds_contact-details__social-link {\n margin-left: 2rem;\n}\n.ds_contact-details__social-icon {\n height: 1.5rem !important;\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 1.5rem !important;\n}\n\n@media (min-width: 768px) {\n .ds_contact-details__social-icon {\n top: 0.25rem;\n }\n .ds_contact-details-grid {\n margin-right: -32px;\n overflow: hidden;\n }\n .ds_contact-details-grid > * {\n margin-right: 32px;\n }\n @supports (display: grid) {\n .ds_contact-details-grid {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_contact-details-grid > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n }\n .ds_contact-details-grid .ds_contact-details__list {\n float: left;\n width: calc(50% - 32px);\n }\n @supports (display: grid) {\n .ds_contact-details-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n .ds_contact-details-grid .ds_contact-details__list {\n width: auto;\n }\n }\n}\n@media (min-width: 992px) {\n .ds_contact-details-grid {\n margin-right: -32px;\n overflow: hidden;\n }\n .ds_contact-details-grid > * {\n margin-right: 32px;\n }\n @supports (display: grid) {\n .ds_contact-details-grid {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_contact-details-grid > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n }\n .ds_contact-details-grid .ds_contact-details__list {\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n @supports (display: grid) {\n .ds_contact-details-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n .ds_contact-details-grid .ds_contact-details__list {\n width: auto;\n }\n }\n}\n/*------------------------------------*\\\\\n CONTENT LABEL\n\\\\*------------------------------------*/\n.ds_content-label {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n font-weight: 400;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_content-label {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n\n/*------------------------------------*\\\\\n CONTENTS NAV\n\\\\*------------------------------------*/\n.ds_contents-nav__title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin: 0;\n padding: 0;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_contents-nav__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_contents-nav__title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_contents-nav__list {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin-bottom: 2.5rem;\n list-style: none;\n margin-left: 0;\n padding-left: 32px;\n}\n@media (min-width: 768px) {\n .ds_contents-nav__list {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_contents-nav__list {\n margin-bottom: 3rem;\n }\n}\n.ds_contents-nav__item {\n position: relative;\n}\n.ds_contents-nav__item::before {\n border-top: 1px solid currentColor;\n content: \"\";\n height: 1px;\n left: -32px;\n overflow: hidden;\n position: absolute;\n top: 12px;\n width: 20px;\n}\n.ds_contents-nav__link.ds_current {\n font-weight: 700;\n}\n\n/*------------------------------------*\\\\\n DATE PICKER\n\\\\*------------------------------------*/\n.ds_datepicker {\n position: relative;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_datepicker {\n margin-bottom: 1.5rem;\n }\n}\n.ds_datepicker .ds_input {\n margin-bottom: 0;\n}\n.ds_datepicker__input-wrapper {\n display: flex;\n gap: 1rem;\n margin-bottom: 1.5rem;\n}\n.ds_datepicker__dialog {\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\n background-color: #ffffff;\n clear: both;\n display: none;\n padding: 8px;\n outline: 1px solid #b3b3b3;\n outline-offset: -1px;\n position: static;\n top: 0;\n transition: background-color 0.2s, outline-color 0.2s;\n width: 296px;\n z-index: 2;\n}\n.ds_datepicker__dialog--open {\n display: block;\n}\n@supports (left: var(--ds-date-picker-left-offset)) {\n .ds_datepicker__dialog--open {\n left: var(--ds-date-picker-left-offset);\n }\n}\n.ds_datepicker__dialog__header {\n position: relative;\n text-align: center;\n}\n.ds_datepicker__dialog__header > :nth-child(1) {\n position: absolute;\n left: 0;\n top: -2px;\n}\n.ds_datepicker__dialog__header > :nth-child(3) {\n position: absolute;\n right: 0;\n top: -2px;\n}\n.ds_datepicker__dialog__title {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n line-height: 2.2857142857;\n margin: 0 !important;\n text-transform: uppercase;\n}\n@media (min-width: 768px) {\n .ds_datepicker__dialog__title {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_datepicker__dialog__navbuttons button {\n background-color: transparent;\n color: #333333;\n font-weight: 400;\n min-height: 40px;\n margin: 0;\n padding: 4px;\n min-width: 32px;\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n display: inline-block;\n}\n.ds_datepicker__dialog__navbuttons button:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_datepicker__dialog__navbuttons button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_datepicker__dialog__navbuttons button:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_datepicker__dialog__navbuttons button:hover {\n color: currentColor;\n}\n.ds_datepicker__dialog__navbuttons button .ds_icon {\n height: 32px;\n padding: 0;\n position: static;\n width: 24px;\n}\n.ds_datepicker__dialog__table tbody:focus-within {\n outline: 2px solid #fdd522;\n}\n.ds_datepicker__dialog__table td {\n border: 0;\n margin: 0;\n outline: 0;\n padding: 0;\n}\n.ds_datepicker__dialog__table th {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n color: #727272;\n font-weight: 400;\n}\n@media (min-width: 768px) {\n .ds_datepicker__dialog__table th {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_datepicker__dialog__table button {\n background-color: transparent;\n border-width: 0;\n color: #333333;\n font-weight: 400;\n min-height: 40px;\n margin: 0;\n padding: 0;\n min-width: 40px;\n font-size: 0.875rem;\n line-height: 1.7142857143;\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n /*\n * helps with focus in windows high contrast\n */\n}\n@media (min-width: 768px) {\n .ds_datepicker__dialog__table button {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_datepicker__dialog__table button:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_datepicker__dialog__table button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_datepicker__dialog__table button:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_datepicker__dialog__table button:focus {\n transition-duration: 0s;\n}\n.ds_datepicker__dialog__table button[disabled=true], .ds_datepicker__dialog__table button[aria-disabled=true] {\n background-color: #ebebeb;\n color: #333333;\n pointer-events: none;\n}\n.ds_datepicker__dialog__table button[disabled=true]:focus, .ds_datepicker__dialog__table button[aria-disabled=true]:focus {\n box-shadow: inset 0 -3px #333333, inset 0 2px #fdd522, inset -2px 0 #fdd522, inset 0 -5px #fdd522, inset 2px 0 #fdd522;\n}\n.ds_datepicker__dialog__table button.ds_datepicker__current {\n outline: 2px solid #333333 !important;\n outline-offset: -2px;\n}\n.ds_datepicker__dialog__table button.ds_datepicker__current[tabindex=\"-1\"] {\n background: #f8f8f8;\n color: currentColor;\n}\n.ds_datepicker__dialog__table button.ds_datepicker__today {\n font-weight: 700;\n}\n.ds_datepicker__dialog__table button.ds_datepicker__today::after {\n background-color: currentColor;\n border-radius: 4px;\n bottom: 6px;\n content: \"\";\n height: 4px;\n left: 50%;\n margin-left: -2px;\n position: absolute;\n width: 4px;\n}\n.ds_datepicker__dialog__table button.ds_selected:not(:focus) {\n background-color: #333333;\n color: #ffffff;\n}\n.ds_datepicker__dialog__table button:focus {\n color: #333333;\n position: relative;\n z-index: 2;\n}\n.ds_datepicker__dialog__table-caption {\n font-size: 0.75rem;\n line-height: 1.3333333333;\n caption-side: bottom;\n line-height: 2;\n margin-top: 8px;\n}\n@media (min-width: 768px) {\n .ds_datepicker__dialog__table-caption {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n.ds_datepicker__dialog__buttongroup {\n margin-right: -8px;\n overflow: hidden;\n overflow: visible;\n}\n.ds_datepicker__dialog__buttongroup > * {\n margin-right: 8px;\n}\n@supports (display: grid) {\n .ds_datepicker__dialog__buttongroup {\n display: grid;\n grid-gap: 0 8px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_datepicker__dialog__buttongroup > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n.ds_datepicker__dialog__buttongroup button {\n width: calc(50% - 8px);\n display: block;\n float: left;\n margin: 0;\n}\n@supports (display: grid) {\n .ds_datepicker__dialog__buttongroup {\n grid-template-columns: 1fr 1fr;\n }\n}\n.ds_datepicker__button {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n min-height: 48px;\n min-width: 48px;\n padding-top: 12px;\n padding-bottom: 12px;\n align-self: end;\n}\n@media (min-width: 768px) {\n .ds_datepicker__button {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_datepicker__button > .ds_icon {\n height: 32px;\n padding: 8px;\n width: 32px;\n}\n\n@media (min-width: 768px) {\n .ds_datepicker__dialog {\n position: absolute;\n }\n .ds_datepicker__dialog__title {\n line-height: 1.5;\n padding: 8px 0;\n }\n .ds_datepicker__dialog__header > :nth-child(1) {\n top: 0;\n }\n .ds_datepicker__dialog__header > :nth-child(3) {\n top: 0;\n }\n .ds_datepicker__dialog__table th {\n line-height: 2;\n }\n .ds_datepicker__dialog__table-caption {\n line-height: 2.2857142857;\n }\n}\n/*------------------------------------*\\\\\n DETAILS\n\\\\*------------------------------------*/\n.ds_details {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_details {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_details {\n margin-bottom: 2rem;\n }\n}\n\n.ds_details__summary {\n color: #0065bd;\n text-decoration: underline;\n outline: 0px solid transparent;\n text-underline-offset: 1px;\n transition: color 0.2s, background-color 0.2s, outline-color 0.2s;\n margin-bottom: 1rem;\n padding-left: 1.5rem;\n cursor: pointer;\n display: inline-block;\n position: relative;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_details__summary {\n color: LinkText;\n }\n .ds_details__summary:hover, .ds_details__summary:focus {\n color: LinkText;\n }\n}\n.ds_details__summary:hover {\n background-color: #d9eeff;\n color: #00437d;\n outline: 2px solid #d9eeff;\n transition-duration: 0.2s;\n}\n.ds_details__summary:focus {\n outline: 2px solid #fdd522;\n outline-offset: 0;\n background-color: #fdd522;\n box-shadow: -2px 5px #333333, 2px 5px #333333;\n color: #333333;\n text-decoration: none;\n transition-duration: 0s;\n}\n.ds_details__summary > svg {\n fill: currentColor;\n}\n@media (min-width: 768px) {\n .ds_details__summary {\n margin-bottom: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_details__summary {\n padding-left: 2rem;\n }\n}\n.ds_details__summary::-webkit-details-marker {\n display: none;\n}\n.ds_details__summary::before {\n background-color: currentColor;\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n content: \"\";\n display: block;\n height: calc(0.4210526316em * 2);\n left: 0.25em;\n position: absolute;\n top: calc(50% - 0.4210526316em + 1px);\n width: 0.4210526316em;\n}\n@media (prefers-reduced-motion: no-preference) {\n .ds_details__summary::before {\n transition: transform 0.2s;\n }\n}\n\n.ds_details__text {\n border-left: 4px solid #b3b3b3;\n box-sizing: border-box;\n display: none;\n padding: 0.5rem;\n padding-left: calc(1.5rem + calc(4px * -1));\n}\n.ds_details__text > :last-child {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_details__text {\n padding: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_details__text {\n padding-left: calc(2rem + calc(4px * -1));\n }\n}\n\n.ds_details[open] .ds_details__summary::before,\n.ds_details__toggle:checked ~ .ds_details__summary::before {\n transform: rotate(90deg);\n}\n.ds_details[open] .ds_details__text,\n.ds_details__toggle:checked ~ .ds_details__text {\n display: block;\n}\n\n.ds_details__toggle:focus ~ .ds_details__summary {\n outline: 2px solid #fdd522;\n outline-offset: 0;\n background-color: #fdd522;\n box-shadow: -2px 5px #333333, 2px 5px #333333;\n color: #333333;\n text-decoration: none;\n transition-duration: 0s;\n}\n\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_details__summary::before {\n background-color: LinkText;\n }\n}\n/*------------------------------------*\\\\\n FEATURE HEADER\n\\\\*------------------------------------*/\n.ds_feature-header {\n margin-bottom: 3rem;\n}\n@media (min-width: 768px) {\n .ds_feature-header {\n margin-bottom: 4rem;\n }\n}\n.ds_feature-header__title {\n font-size: 1.875rem;\n line-height: 1.3333333333;\n margin-bottom: 1.5rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n font-weight: 300;\n}\n@media (min-width: 768px) {\n .ds_feature-header__title {\n font-size: 2.75rem;\n line-height: 1.2727272727;\n }\n}\n@media (min-width: 768px) {\n .ds_feature-header__title {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_feature-header__title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_feature-header--background {\n background-color: #ebebeb;\n}\n.ds_feature-header__primary {\n padding: 1rem 0;\n position: relative;\n z-index: 2;\n}\n@media (min-width: 768px) {\n .ds_feature-header__primary {\n padding: 1.5rem 0;\n }\n}\n@media (min-width: 992px) {\n .ds_feature-header__primary {\n padding: 2.5rem 0;\n }\n}\n.ds_feature-header--background .ds_feature-header__primary {\n padding-left: 1rem;\n}\n@media (max-width: 767px) {\n .ds_feature-header--background .ds_feature-header__primary {\n padding-right: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_feature-header--background .ds_feature-header__primary {\n padding-left: 1.5rem;\n }\n}\n@media (min-width: 992px) {\n .ds_feature-header--background .ds_feature-header__primary {\n padding-left: 2.5rem;\n }\n}\n.ds_feature-header__secondary {\n position: relative;\n z-index: 1;\n}\n.ds_feature-header__image {\n display: block;\n height: auto;\n width: 100%;\n}\n@media (min-width: 768px) {\n .ds_feature-header {\n align-items: center;\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-gap: 32px;\n }\n .ds_feature-header__primary {\n grid-area: 1/1/2/7;\n margin-right: 0;\n }\n .ds_feature-header__primary > :last-child {\n margin-bottom: 0;\n }\n .ds_feature-header__secondary {\n grid-area: 1/7/2/13;\n }\n .ds_feature-header--wide .ds_feature-header__primary {\n grid-area: 1/1/2/9;\n margin-right: 0;\n }\n .ds_feature-header--wide .ds_feature-header__secondary {\n grid-area: 1/9/2/13;\n }\n}\n\n.ds_reversed .ds_feature-header__primary,\n.ds_reversed .ds_feature-header__primary a {\n color: #ffffff;\n}\n\n@media (min-width: 768px) {\n .ds_feature-header {\n display: -ms-grid;\n -ms-grid-columns: 1fr 32px 1fr;\n }\n .ds_feature-header--wide {\n -ms-grid-columns: 2fr 32px 1fr;\n }\n .ds_feature-header__primary {\n -ms-grid-column: 1;\n -ms-grid-row-align: center;\n }\n .ds_feature-header__secondary {\n -ms-grid-column: 3;\n }\n}\n\n/*------------------------------------*\\\\\n FILE DOWNLOAD\n\\\\*------------------------------------*/\n.ds_file-download {\n margin-bottom: 1.5rem;\n margin-top: 1.5rem;\n padding: 1rem;\n background-color: #f8f8f8;\n display: flex;\n}\n@media (min-width: 768px) {\n .ds_file-download {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_file-download {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_file-download {\n padding: 1rem;\n }\n}\n.ds_file-download--highlighted {\n padding-left: calc(1rem + -4px);\n border-left: 4px solid #0065bd;\n}\n@media (min-width: 768px) {\n .ds_file-download--highlighted {\n padding-left: calc(1rem + -4px);\n }\n}\n.ds_file-download__thumbnail {\n margin-right: 1rem;\n}\n@media (min-width: 768px) {\n .ds_file-download__thumbnail {\n margin-right: 1rem;\n }\n}\n.ds_file-download__thumbnail-image {\n display: block;\n max-width: 100%;\n outline: 1px solid #b3b3b3;\n outline-offset: -1px;\n}\n.ds_file-download__thumbnail-image[src*=\".svg\"] {\n outline: none;\n}\n.ds_file-download__thumbnail-link {\n display: block;\n width: 4rem;\n}\n.ds_file-download__content {\n flex-grow: 1;\n}\n.ds_file-download__title {\n display: inline-block;\n font-weight: 700;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_file-download__title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_file-download .ds_metadata {\n line-height: 1.5rem;\n}\n\n@media (min-width: 768px) {\n .ds_file-download__thumbnail-link {\n width: 5rem;\n }\n}\n/*------------------------------------*\\\\\n HIDE THIS PAGE\n\\\\*------------------------------------*/\n@media (max-width: 767px) {\n .ds_has-hide-page .ds_page,\n .ds_page:has(.ds_hide-page) {\n margin-top: 56px;\n }\n}\n.ds_hide-page {\n background-color: #ebebeb;\n left: 0;\n position: fixed;\n right: 0;\n text-align: center;\n top: 0;\n z-index: 1000;\n}\n.ds_hide-page__button {\n background-color: #d32205;\n margin: 0;\n width: 100%;\n}\n.ds_hide-page__button:hover:not(:focus) {\n background-color: #881603;\n}\n.ds_hide-page__text {\n font-size: 0.75rem;\n line-height: 1.3333333333;\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_hide-page__text {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n.ds_hide-page .js-enabled-text {\n display: none;\n}\n\n@media only screen and (hover: hover) {\n .js-enabled .js-enabled-text {\n display: block;\n }\n .ds_has-hide-page .ds_page {\n margin-top: 80px;\n }\n}\n@media (min-width: 768px) {\n .ds_hide-page {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n background-color: rgba(255, 255, 255, 0.9);\n left: auto;\n outline: 1px solid #ebebeb;\n outline-offset: -1px;\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_hide-page {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_hide-page {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n @supports (position: sticky) and (display: grid) {\n .ds_hide-page {\n bottom: 8px;\n position: sticky;\n }\n }\n .ds_hide-page__text {\n margin: 8px 0;\n }\n .ds_has-hide-page .ds_page {\n margin-top: 0;\n }\n}\n@supports (display: grid) {\n .ds_hide-page {\n width: 100%;\n }\n @media (min-width: 768px) {\n .ds_hide-page {\n align-self: start;\n grid-area: 1/9/3/13;\n right: 8px;\n top: 8px;\n }\n }\n @media (min-width: 992px) {\n .ds_hide-page {\n grid-area: 1/10/3/13;\n }\n }\n}\n/**\n This \"reverse\" order follows GOV UK reasoning, where it assumed that it's better to have scroll\n padding unnecessarily than risking not having it when it's needed.\n*/\n@supports (position: sticky) {\n html {\n scroll-padding-top: 6.5rem;\n }\n html:not(:has(.ds_hide-page)) {\n scroll-padding-top: 0;\n }\n}\n/*------------------------------------*\\\\\n ICON\n\\\\*------------------------------------*/\n.ds_icon {\n fill: currentColor;\n height: 1.5em;\n vertical-align: middle;\n width: 1.5em;\n}\n\n.ds_icon--16 {\n width: 1rem;\n height: 1rem;\n}\n\n.ds_icon--20 {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n.ds_icon--24 {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.ds_icon--28 {\n width: 1.75rem;\n height: 1.75rem;\n}\n\n.ds_icon--32 {\n width: 2rem;\n height: 2rem;\n}\n\n.ds_icon--36 {\n width: 2.25rem;\n height: 2.25rem;\n}\n\n.ds_icon--40 {\n width: 2.5rem;\n height: 2.5rem;\n}\n\n.ds_icon--44 {\n width: 2.75rem;\n height: 2.75rem;\n}\n\n.ds_icon--48 {\n width: 3rem;\n height: 3rem;\n}\n\n.ds_icon--12 {\n width: 0.75rem;\n height: 0.75rem;\n}\n\n.ds_icon--52 {\n width: 3.25rem;\n height: 3.25rem;\n}\n\n.ds_icon--56 {\n width: 3.5rem;\n height: 3.5rem;\n}\n\n.ds_icon--60 {\n width: 3.75rem;\n height: 3.75rem;\n}\n\n.ds_icon--64 {\n width: 4rem;\n height: 4rem;\n}\n\n.ds_icon--68 {\n width: 4.25rem;\n height: 4.25rem;\n}\n\n.ds_icon--72 {\n width: 4.5rem;\n height: 4.5rem;\n}\n\n.ds_icon--76 {\n width: 4.75rem;\n height: 4.75rem;\n}\n\n.ds_icon--80 {\n width: 5rem;\n height: 5rem;\n}\n\n.ds_icon--fill {\n width: 100%;\n height: 100%;\n}\n\n/*------------------------------------*\\\\\n #INSET TEXT\n\\\\*------------------------------------*/\n.ds_inset-text {\n border-left: 0.5rem solid #b3b3b3;\n padding: 1rem;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_inset-text {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_inset-text {\n margin-bottom: 2rem;\n }\n}\n.ds_inset-text > :last-child {\n margin-bottom: 0;\n}\n\n.ds_inset-text__text > :last-child {\n margin-bottom: 0;\n}\n\n.ds_inset-text .ds_tag {\n margin-bottom: 0.5rem;\n}\n\n@media (min-width: 768px) {\n .ds_inset-text {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n}\n/*------------------------------------*\\\\\n LINK ITEM\n Navigation element for a simple link with supporting metadata\n\\\\*------------------------------------*/\n.ds_link-item {\n padding-bottom: calc(1.5rem + -2px);\n border-bottom: 2px #ebebeb solid;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_link-item {\n padding-bottom: calc(1.5rem + -2px);\n }\n}\n.ds_link-item__title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin: 0 !important;\n}\n@media (min-width: 768px) {\n .ds_link-item__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n.ds_link-item__summary {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin: 0;\n margin-top: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_link-item__summary {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_link-item__summary {\n margin-top: 0.5rem;\n }\n}\n\n/*------------------------------------*\\\\\n LINK LIST\n\\\\*------------------------------------*/\n.ds_link-list {\n margin-right: -32px;\n overflow: hidden;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ds_link-list > * {\n margin-right: 32px;\n}\n@supports (display: grid) {\n .ds_link-list {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_link-list > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n}\n@media (max-width: 767px) {\n .ds_link-list .ds_link-item + .ds_link-item {\n margin-top: 1.5rem;\n }\n}\n@media (max-width: 767px) and (min-width: 768px) {\n .ds_link-list .ds_link-item + .ds_link-item {\n margin-top: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_link-list .ds_link-item {\n float: left;\n width: calc(33.3333333333% - 32px);\n }\n .ds_link-list .ds_link-item:nth-child(3n+1) {\n clear: left;\n margin-left: 0;\n }\n @supports (display: grid) {\n .ds_link-list {\n display: grid;\n grid-row-gap: 1.5rem;\n row-gap: 1.5rem;\n grid-template-columns: 1fr 1fr 1fr;\n }\n }\n}\n\n/*------------------------------------*\\\\\n PAGE METADATA\n\\\\*------------------------------------*/\n.ds_metadata {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin: 0;\n overflow: hidden;\n}\n.ds_metadata__key {\n display: inline;\n font-weight: normal;\n}\n.ds_metadata__key::after {\n content: \":\";\n}\n.ds_metadata__value {\n display: inline;\n font-weight: 700;\n margin-left: 0;\n}\n.ds_metadata__value a {\n font-weight: 400;\n}\n\n/**\n * Alternative display collapsing the metadata into a single line\n */\n.ds_metadata--inline {\n font-size: 0.75rem;\n line-height: 1.3333333333;\n color: #727272;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_metadata--inline {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n.ds_metadata--inline .ds_metadata__item {\n display: inline;\n position: relative;\n}\n.ds_metadata--inline .ds_metadata__item:not(:first-child) {\n margin-left: 0.25em;\n padding-left: calc(0.5em + 1px);\n}\n.ds_metadata--inline .ds_metadata__item:not(:first-child)::before {\n background: currentColor;\n content: \"\";\n height: calc(1em - 1px);\n left: 0;\n position: absolute;\n top: 2px;\n width: 1px;\n}\n.ds_metadata--inline .ds_metadata__key {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n}\n.ds_metadata--inline .ds_metadata__value {\n font-weight: 400;\n}\n\n/*------------------------------------*\\\\\n NOTIFICATION BANNER\n\\\\*------------------------------------*/\n.ds_notification {\n background: #333333;\n border-bottom: 1px solid #ffffff;\n color: #ffffff;\n}\n.ds_notification--success {\n background-color: #428542;\n color: #ffffff;\n}\n.ds_notification__content {\n padding: 16px 0 15px;\n position: relative;\n}\n.ds_notification__content > :last-child {\n margin-bottom: 0;\n}\n.ds_notification__content--has-close {\n padding-right: 40px;\n}\n.ds_notification__text {\n display: inline-block;\n margin-right: 16px;\n}\n.ds_notification__text > :last-child {\n margin-bottom: 0;\n}\n.ds_notification__actions {\n margin-top: 32px;\n text-align: center;\n}\n.ds_notification__actions > * {\n margin-bottom: 16px;\n margin-top: 0;\n white-space: nowrap;\n width: 100%;\n}\n.ds_notification .ds_notification__actions {\n margin-bottom: -16px;\n}\n.ds_notification__icon {\n display: block;\n position: absolute;\n height: 32px;\n line-height: 0;\n margin-left: -4px;\n margin-top: -4px;\n padding: 2px;\n width: 32px;\n}\n.ds_notification__icon + .ds_notification__text {\n margin-left: 40px;\n}\n@media (min-width: 768px) {\n .ds_notification__icon + .ds_notification__text {\n margin-left: 64px;\n }\n}\n.ds_notification__icon--colour {\n color: #fdd522;\n}\n.ds_notification__icon--inverse {\n background-color: #ffffff;\n border-radius: 100px;\n color: #333333;\n}\n.ds_notification__icon--inverse.ds_notification__icon--colour {\n background-color: #fdd522;\n}\n.ds_notification__close {\n background: transparent;\n border-width: 0;\n box-sizing: content-box;\n color: currentColor;\n display: none;\n font-size: 14px;\n height: 40px;\n margin: 0;\n padding: 0;\n position: absolute;\n right: -8px;\n top: 8px;\n width: 40px;\n min-height: 0;\n min-width: 0;\n}\n.ds_notification__close:focus {\n background-color: #fdd522;\n box-shadow: 0 3px #333333;\n color: #333333;\n outline: 0;\n transition-duration: 0s;\n}\n.ds_notification__close:hover:not(:focus) {\n background-color: transparent;\n color: currentColor;\n outline: 2px solid currentColor;\n}\n.ds_notification__close > * {\n pointer-events: none;\n}\n.ds_notification .ds_button-group {\n margin-top: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_notification .ds_button-group {\n margin-top: 2rem;\n }\n}\n\n@media (min-width: 768px) {\n .ds_notification__close {\n top: 12px;\n }\n .ds_notification__icon {\n margin-top: 0;\n }\n .ds_notification__actions {\n text-align: left;\n }\n .ds_notification__actions > * {\n width: auto;\n }\n .ds_notification__actions > *:not(last-child) {\n margin-right: 16px;\n }\n}\n@supports (display: flex) {\n @media (min-width: 768px) {\n .ds_notification__actions {\n align-items: center;\n display: inline-flex;\n flex-wrap: wrap;\n width: auto;\n }\n .ds_notification__actions > * {\n flex-basis: auto;\n flex-grow: initial;\n }\n }\n}\n.js-initialised .ds_notification__close {\n display: block;\n}\n\n/*------------------------------------*\\\\\n NOTIFICATION PANEL\n\\\\*------------------------------------*/\n.ds_notification-panel {\n margin-bottom: 1.5rem;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n background: #428542;\n color: #ffffff;\n text-align: center;\n}\n@media (min-width: 768px) {\n .ds_notification-panel {\n margin-bottom: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel {\n padding-top: 3rem;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel {\n padding-bottom: 3rem;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel {\n padding-left: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel {\n padding-right: 2rem;\n }\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_notification-panel {\n outline: 4px solid currentColor !important;\n outline-offset: -4px !important;\n }\n}\n.ds_notification-panel:not(:first-child) {\n margin-top: 2.5rem;\n}\n@media (min-width: 768px) {\n .ds_notification-panel:not(:first-child) {\n margin-top: 3rem;\n }\n}\n.ds_notification-panel--neutral {\n background: #f8f8f8;\n color: #333333;\n}\n.ds_notification-panel__title {\n font-size: 1.875rem;\n line-height: 1.3333333333;\n margin-bottom: 1.5rem;\n font-weight: 700;\n margin-bottom: 1rem;\n}\n@media (min-width: 768px) {\n .ds_notification-panel__title {\n font-size: 2.75rem;\n line-height: 1.2727272727;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel__title {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_notification-panel__title {\n margin-bottom: 1rem;\n }\n}\n.ds_notification-panel__content > :last-child {\n margin-bottom: 0;\n}\n.ds_notification-panel__reference {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n}\n@media (min-width: 768px) {\n .ds_notification-panel__reference {\n font-size: 1.5rem;\n line-height: 1.6666666667;\n }\n}\n\n/*------------------------------------*\\\\\n ARTICLE HEADER\n title block for articles\n\\\\*------------------------------------*/\n.ds_page-header {\n margin: 1rem 0 2rem;\n}\n.ds_page-header__title {\n margin-bottom: 0;\n}\n.ds_page-header__metadata {\n margin-top: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_page-header {\n margin-top: 2rem;\n }\n .ds_page-header__label + .ds_page-header__title {\n margin-top: -0.5rem;\n }\n}\n\n.ds_error-summary + .ds_page-header {\n margin-top: 2.5rem;\n}\n@media (min-width: 768px) {\n .ds_error-summary + .ds_page-header {\n margin-top: 4rem;\n }\n}\n\n/*------------------------------------*\\\\\n PAGINATION\n\\\\*------------------------------------*/\n.ds_pagination {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n text-align: center;\n}\n@media (min-width: 768px) {\n .ds_pagination {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_pagination__list {\n list-style-type: none;\n margin: 0;\n}\n.ds_pagination__load-more + .ds_pagination__list {\n display: none;\n}\n.ds_pagination__item {\n display: inline-block;\n margin-bottom: 0.25rem;\n}\n.ds_pagination__link {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n line-height: 2.5rem;\n min-height: 2.5rem;\n min-width: 2.5rem;\n padding: 0 0.5rem;\n text-decoration: none;\n}\n.ds_pagination__link:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_pagination__link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_pagination__link:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_pagination__link.ds_current {\n color: currentColor;\n position: relative;\n}\n.ds_pagination__link.ds_current::before {\n border-bottom: 3px solid currentColor;\n bottom: 0;\n content: \"\";\n left: 0;\n position: absolute;\n right: 0;\n}\n.ds_pagination__link.ds_current:not(:focus) {\n background-color: #f8f8f8;\n}\n.ds_pagination__link--text:not(.ds_pagination__link--icon) {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n width: auto;\n}\n.ds_pagination__link--ellipsis {\n min-width: 0;\n pointer-events: none;\n}\n.ds_pagination__link--ellipsis, .ds_pagination__link--icon {\n padding: 0;\n}\n.ds_pagination__link .ds_icon {\n height: 2em;\n width: 2em;\n}\n.ds_pagination__link > * {\n pointer-events: none;\n}\n\na.ds_pagination__link:not(.ds_current):not(:focus) {\n text-decoration: underline;\n text-underline-offset: 1px;\n}\n\n@media (min-width: 768px) {\n .ds_pagination__load-more + .ds_pagination__list {\n display: block;\n }\n .ds_pagination__load-more {\n display: none;\n }\n .ds_pagination__link--icon {\n padding-left: 0px;\n padding-right: 0px;\n width: auto;\n }\n .ds_pagination__link--icon .ds_pagination__link-label {\n padding-left: 1rem;\n }\n .ds_pagination__link--icon .ds_icon + .ds_pagination__link-label {\n padding-right: 1rem;\n padding-left: 0;\n }\n .ds_pagination .ds_icon {\n margin: 0 0.25rem;\n }\n}\n@media (max-width: 767px) {\n .ds_pagination__link--icon .ds_pagination__link-label {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n }\n}\n@supports (display: flex) {\n .ds_pagination__item {\n margin-bottom: 0;\n }\n .ds_pagination__list {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n justify-content: center;\n }\n .ds_pagination__link {\n align-items: center;\n display: flex;\n justify-content: center;\n }\n}\n/*------------------------------------*\\\\\n PHASE BANNER\n\\\\*------------------------------------*/\n.ds_phase-banner {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n padding-top: calc(1rem + -1px);\n padding-bottom: 1rem;\n background: #ebebeb;\n border-top: 1px solid transparent;\n clear: both;\n}\n@media (min-width: 768px) {\n .ds_phase-banner {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_phase-banner {\n padding-top: calc(1rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_phase-banner {\n padding-bottom: 1rem;\n }\n}\n.ds_phase-banner.no-bottom-margin {\n margin-bottom: 0;\n}\n.ds_phase-banner__content {\n display: table;\n margin-bottom: 0;\n}\n.ds_phase-banner__tag.ds_tag {\n margin-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.7142857143;\n}\n@media (min-width: 768px) {\n .ds_phase-banner__tag.ds_tag {\n margin-right: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_phase-banner__tag.ds_tag {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_phase-banner__text {\n display: table-cell;\n}\n\n@supports (display: flex) {\n .ds_phase-banner__content {\n align-items: baseline;\n display: flex;\n }\n .ds_phase-banner__content--stacked {\n flex-direction: column;\n }\n .ds_phase-banner__content--stacked > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n @media (min-width: 768px) {\n .ds_phase-banner__content--stacked > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n }\n}\n/*------------------------------------*\\\\\n SEARCH FACETS\n\\\\*------------------------------------*/\n.ds_facets {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n}\n@media (min-width: 768px) {\n .ds_facets {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_facets__list {\n margin-bottom: 1.5rem;\n}\n.ds_facets__clear-button {\n margin: 0 0 1.5rem;\n min-height: 2.5rem;\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\n position: relative;\n}\n.ds_facets__clear-button .ds_facet__button-icon {\n color: currentColor;\n position: absolute;\n}\n\n.ds_facet-group {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: 1rem 0.5rem;\n padding: 1rem;\n}\n.ds_facet-group:nth-child(odd) {\n background: rgba(0, 0, 0, 0.028);\n}\n.ds_facet-group:nth-child(even):last-child {\n padding-bottom: 0;\n}\n\n.ds_facet-wrapper {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: 1rem 0.5rem;\n margin: 0;\n}\n\n.ds_facet {\n line-height: 1.5rem;\n min-height: 2.5rem;\n outline: 2px solid currentColor;\n outline-offset: -2px;\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\n position: relative;\n text-align: center;\n transition: background-color 0.2s;\n margin: 0 0.5rem;\n}\n@supports (gap: 0) {\n .ds_facet {\n margin: 0;\n }\n}\n.ds_facet:hover {\n background: #ebebeb;\n}\n.ds_facet:focus-within {\n background-color: #fdd522;\n box-shadow: 0 3px #333333;\n color: #333333;\n outline: 0;\n transition-duration: 0s;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_facet:focus-within {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_facet:focus-within .ds_facet__button-icon {\n color: currentColor;\n}\n.ds_facet__button {\n background-color: transparent;\n border: none;\n bottom: 0;\n left: 0;\n outline: none;\n padding: 0.4375rem 0.75rem 0.4375rem 0;\n position: absolute;\n right: 0;\n text-align: right;\n top: 0;\n}\n.ds_facet__button:focus {\n background-color: #fdd522;\n z-index: -1;\n}\n.ds_facet__button:hover:not(:focus) {\n background-color: transparent;\n color: inherit;\n outline: 0;\n}\n.ds_facet__button-icon {\n color: #727272;\n fill: currentColor;\n height: 1.5rem;\n margin-left: 0.5rem;\n min-width: 1.5rem;\n pointer-events: none;\n vertical-align: middle;\n width: 1.5rem;\n}\n\n@supports selector(:focus-within) {\n .ds_facet__button:focus {\n background-color: transparent;\n z-index: auto;\n }\n}\n/*------------------------------------*\\\\\n SEARCH FILTERS\n\\\\*------------------------------------*/\n.ds_search-filters {\n margin-bottom: 0.5rem;\n /**\n [1] provides room for yellow focus outline on checkboxes\n */\n}\n.ds_search-filters__title {\n padding-bottom: calc(0.5rem + -1px);\n padding-top: 0.5rem;\n margin-bottom: 1rem;\n border-bottom: 1px solid #b3b3b3;\n margin-top: 0;\n}\n@media (min-width: 768px) {\n .ds_search-filters__title {\n padding-bottom: calc(0.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_search-filters__title {\n padding-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-filters__title {\n margin-bottom: 1rem;\n }\n}\n.ds_search-filters__title:not(:first-child) {\n margin-top: 0;\n}\n.ds_search-filters__scrollable {\n margin-left: -0.25rem; /* [1] */\n max-height: 33.333333vh;\n padding-left: 0.25rem; /* [1] */\n padding-right: 0.5rem;\n overflow-y: auto;\n}\n.ds_search-filters__scrollable::-webkit-scrollbar {\n -webkit-appearance: none;\n background-color: rgba(0, 0, 0, 0.1);\n border-radius: 0.25rem;\n width: 0.5rem;\n}\n.ds_search-filters__scrollable::-webkit-scrollbar-thumb {\n border-radius: 0.25rem;\n background-color: rgba(0, 0, 0, 0.5);\n}\n.ds_search-filters__filter-count {\n color: #333333;\n font-weight: normal;\n}\n.ds_search-filters__checkboxes {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n}\n@media (min-width: 768px) {\n .ds_search-filters__checkboxes {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_search-filters__checkboxes .ds_checkbox__input {\n top: 0.25rem;\n}\n.ds_search-filters__checkboxes .ds_checkbox__label {\n padding-right: 0;\n}\n.ds_search-filters__checkboxes .ds_checkbox--small {\n margin-bottom: 0;\n}\n.ds_search-filters .ds_accordion-item:first-child {\n border-top-color: transparent;\n}\n.ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\n padding-right: 1rem;\n padding-bottom: 2rem;\n}\n@media (min-width: 768px) {\n .ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\n padding-right: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\n padding-bottom: 2.5rem;\n }\n}\n.ds_search-filters .ds_accordion-item__body .ds_question:last-child .ds_datepicker,\n.ds_search-filters .ds_accordion-item__body .ds_question:last-child .ds_input__wrapper {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_search-filters.js-initialised .js-apply-filter {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .ds_search-filters__title {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n }\n}\n@media (min-width: 768px) {\n .ds_search-filters__title {\n display: block;\n }\n .ds_search-filters .ds_details__summary,\n .ds_search-filters #filters-toggle {\n display: none;\n }\n .ds_search-filters .ds_details__text {\n display: block;\n border-left: none;\n margin: 0;\n padding: 0;\n }\n .ds_search-filters .ds_checkbox--small .ds_checkbox__label::before {\n top: 0.25rem;\n }\n .ds_search-filters .ds_checkbox--small .ds_checkbox__label::after {\n top: 0.6875rem;\n }\n}\n/*------------------------------------*\\\\\n SEARCH RESULT\n\\\\*------------------------------------*/\n.ds_search-result {\n margin: 0;\n padding: 0;\n padding-top: 1rem;\n padding-bottom: calc(1.5rem + -1px);\n}\n@media (min-width: 768px) {\n .ds_search-result {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result {\n padding-bottom: calc(1.5rem + -1px);\n }\n}\n.ds_search-result:first-child {\n padding-top: 0;\n}\n.ds_search-result + .ds_search-result:not(.ds_search-result--promoted) {\n border-top: 1px #b3b3b3 solid;\n}\n.ds_search-result--promoted + .ds_search-result:not(.ds_search-result--promoted) {\n margin-top: -1px;\n}\n.ds_search-result--promoted {\n padding-bottom: 1.5rem;\n padding-top: 0;\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted {\n padding-bottom: 1.5rem;\n }\n}\n.ds_search-result--promoted-content {\n background: #f8f8f8;\n border-left: 4px solid #0065bd;\n padding-top: 0.5rem;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-bottom: 1rem;\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-content {\n padding-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-content {\n padding-left: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-content {\n padding-right: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-content {\n padding-bottom: 1rem;\n }\n}\n.ds_search-result--promoted-title {\n margin-bottom: 0.5rem;\n font-size: 0.75rem;\n line-height: 1.3333333333;\n color: #727272;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-title {\n margin-bottom: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result--promoted-title {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n.ds_search-result__title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin: 0 !important;\n margin-bottom: 0.5rem !important;\n}\n@media (min-width: 768px) {\n .ds_search-result__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result__title {\n margin-bottom: 0.5rem !important;\n }\n}\n.ds_search-result__title:last-child {\n margin-bottom: 0 !important;\n}\n.ds_search-result__sub-title {\n font-size: 1rem;\n line-height: 1.5;\n margin: 0;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_search-result__sub-title {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result__sub-title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_search-result__summary {\n font-size: 1rem;\n line-height: 1.5;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_search-result__summary {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n.ds_search-result__metadata {\n margin-top: 0.5rem;\n font-size: 0.75rem;\n line-height: 1.3333333333;\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_search-result__metadata {\n margin-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result__metadata {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n }\n}\n.ds_search-result__has-media {\n display: flex;\n}\n.ds_search-result__media-wrapper {\n padding-right: 1rem;\n}\n@media (min-width: 768px) {\n .ds_search-result__media-wrapper {\n padding-right: 1rem;\n }\n}\n.ds_search-result__media {\n width: 96px;\n}\n@media (min-width: 480px) {\n .ds_search-result__media {\n width: 128px;\n }\n}\n.ds_search-result__context {\n margin: 0;\n padding: 0;\n margin-top: 1rem;\n padding-left: 1rem;\n font-size: 0.875rem;\n line-height: 1.4285714286;\n}\n@media (min-width: 768px) {\n .ds_search-result__context {\n margin-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result__context {\n padding-left: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-result__context {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_search-result__context-key {\n color: #727272;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.ds_search-result__context-key:before {\n border-left: 4px solid #0065bd;\n bottom: 0;\n content: \"\";\n left: -1rem;\n position: absolute;\n top: 0;\n}\n.ds_search-result__context-value {\n margin: 0;\n padding: 0;\n margin-top: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_search-result__context-value {\n margin-top: 0.5rem;\n }\n}\n.ds_search-result__sublinks {\n margin-bottom: 0;\n margin-top: 1rem;\n}\n@media (min-width: 768px) {\n .ds_search-result__sublinks {\n margin-top: 1rem;\n }\n}\n.ds_search-result__sublinks-title {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n}\n\n/*------------------------------------*\\\\\n SEARCH RESULTS\n\\\\*------------------------------------*/\n.ds_search-results {\n margin-top: 0.5rem;\n}\n.ds_search-results__title {\n font-size: 1rem;\n line-height: 1.5;\n margin-bottom: 0.5rem;\n font-weight: 400;\n margin-top: 0 !important;\n}\n@media (min-width: 768px) {\n .ds_search-results__title {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (min-width: 768px) {\n .ds_search-results__title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_search-results__title-query {\n font-weight: 700;\n}\n.ds_search-results__suggestions + .ds_search-results__title {\n margin-top: 1rem !important;\n}\n@media (min-width: 768px) {\n .ds_search-results__suggestions + .ds_search-results__title {\n margin-top: 1rem !important;\n }\n}\n.ds_search-results__list {\n border-bottom: 1px #b3b3b3 solid;\n list-style-type: none;\n margin: 0;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_search-results__list {\n margin-bottom: 2rem;\n }\n}\n.ds_search-results__related {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n padding: 1rem;\n background: #f8f8f8;\n}\n@media (min-width: 768px) {\n .ds_search-results__related {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_search-results__related {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_search-results__related {\n margin-bottom: 2rem;\n }\n}\n.ds_search-results__related > :last-child {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_search-results__related {\n padding: 1rem;\n }\n}\n.ds_search-results__related-title {\n font-size: 1rem;\n line-height: 1.5;\n margin: 0;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_search-results__related-title {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (min-width: 768px) {\n .ds_search-results__related-title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_search-results__divider {\n margin-top: -1px;\n margin-bottom: 1.5rem;\n}\n\n.ds_search-results.js-initialised .js-apply-sort {\n display: none;\n}\n\n/*------------------------------------*\\\\\n #SEQUENTIAL NAVIGATION\n previous and next buttons\n\\\\*------------------------------------*/\n.ds_sequential-nav {\n margin-bottom: 56px;\n margin-top: 56px;\n overflow: hidden;\n}\n\n@supports (display: grid) {\n .ds_sequential-nav {\n overflow: visible;\n overflow: initial;\n }\n}\n.ds_sequential-nav__button {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n background: transparent;\n display: inline-block;\n line-height: 24px;\n padding: 12px 4px;\n position: relative;\n text-decoration: none;\n width: 100%;\n}\n.ds_sequential-nav__button:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_sequential-nav__button:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_sequential-nav__button:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_sequential-nav__button:not([href]) {\n display: none;\n}\n.ds_sequential-nav__button > * {\n pointer-events: none;\n}\n.ds_sequential-nav__button--left::before, .ds_sequential-nav__button--right::before {\n content: \"\";\n height: 56px;\n width: 56px;\n background-color: #0065bd;\n background-position: center;\n border-radius: 56px;\n border: 2px solid #0065bd;\n display: inline-block;\n position: absolute;\n top: 8px;\n transition: background-color 0.2s;\n}\n.ds_sequential-nav__button--left::after, .ds_sequential-nav__button--right::after {\n color: #ffffff;\n position: absolute;\n top: 25px;\n}\n.ds_sequential-nav__button--left {\n padding-left: 73px;\n text-align: left;\n}\n.ds_sequential-nav__button--left::before {\n left: 4px;\n}\n.ds_sequential-nav__button--left::after {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 5.5px 5.5px;\n border-top-color: transparent;\n display: inline-block;\n height: 22px;\n width: 22px;\n transform: rotate(-315deg);\n left: 24px;\n}\n.ds_sequential-nav__button--right {\n text-align: right;\n float: right;\n padding-right: 73px;\n text-align: right;\n}\n.ds_sequential-nav__button--right::before {\n right: 4px;\n}\n.ds_sequential-nav__button--right::after {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 5.5px 5.5px;\n border-top-color: transparent;\n display: inline-block;\n height: 22px;\n width: 22px;\n transform: rotate(-135deg);\n right: 24px;\n}\n\n.ds_sequential-nav__button:hover::before {\n background-color: #00437d;\n border-color: #00437d;\n}\n\n.ds_sequential-nav__button:focus::before {\n background-color: #333333;\n border-color: #333333;\n}\n\n.ds_sequential-nav__text {\n display: inline-block;\n padding-top: 24px;\n position: relative;\n width: 100%;\n}\n.ds_sequential-nav__text::before {\n color: #333333;\n content: attr(data-label);\n font-size: 1rem;\n font-weight: 700;\n left: 0;\n position: absolute;\n right: 0;\n text-transform: uppercase;\n top: 0;\n}\n@media (min-width: 768px) {\n .ds_sequential-nav__text::before {\n font-size: 1rem;\n }\n}\n\n.ds_sequential-nav__button:not(:focus) .ds_sequential-nav__text {\n text-decoration: underline;\n text-underline-offset: 1px;\n}\n\n@media (min-width: 480px) {\n .ds_sequential-nav__item {\n width: calc(50% - 16px);\n }\n .ds_sequential-nav__item--prev {\n float: left;\n }\n .ds_sequential-nav__item--next {\n float: right;\n }\n}\n@supports (display: grid) {\n .ds_sequential-nav {\n display: grid;\n grid-gap: 32px 32px;\n grid-template-areas: \"next\" \"prev\";\n }\n .ds_sequential-nav__item {\n float: none;\n width: 100%;\n }\n .ds_sequential-nav__item--prev {\n grid-area: prev;\n }\n .ds_sequential-nav__item--next {\n grid-area: next;\n }\n @media (min-width: 480px) {\n .ds_sequential-nav {\n grid-template-columns: 1fr 1fr;\n grid-template-areas: \"prev next\";\n }\n }\n}\n/*------------------------------------*\\\\\n SIDE NAVIGATION\n\\\\*------------------------------------*/\n.ds_side-navigation {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n font-size: 0.875rem;\n line-height: 1.7142857143;\n border: 1px solid #b3b3b3;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_side-navigation {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_side-navigation {\n margin-bottom: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_side-navigation {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_side-navigation__expand {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n background-color: #ffffff;\n color: #0065bd;\n cursor: pointer;\n font-weight: 700;\n line-height: inherit;\n margin: 0;\n padding: 15px 47px 15px 15px;\n position: sticky;\n text-align: left;\n text-decoration: none;\n top: 0;\n transition: background-color 0.2s, box-shadow 0.2s;\n width: 100%;\n z-index: 2;\n}\n.ds_side-navigation__expand:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_side-navigation__expand:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_side-navigation__expand:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_side-navigation__expand--shadow {\n box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.15);\n}\n.ds_side-navigation__expand:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_side-navigation__expand:hover .side-navigation__expand-indicator {\n color: #00437d;\n}\n.ds_side-navigation__expand--shadow:focus {\n box-shadow: 0 3px #333333, 0px 8px 5px rgba(0, 0, 0, 0.15);\n}\n.ds_side-navigation__expand-indicator {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.1875rem 0.1875rem;\n border-top-color: transparent;\n display: inline-block;\n height: 0.75rem;\n width: 0.75rem;\n transform: rotate(-45deg);\n border-width: 0px 0px 3px 3px;\n position: absolute;\n right: 23px;\n top: 17px;\n transition: transform 0.2s, top 0.2s;\n pointer-events: none;\n}\n.ds_side-navigation #show-side-navigation:focus ~ .ds_side-navigation__expand {\n background: #fdd522;\n box-shadow: 0 3px #333333;\n color: #333333;\n transition-duration: 0s;\n}\n.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__expand .ds_side-navigation__expand-indicator {\n top: 23px;\n transform: rotate(-225deg);\n}\n.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__expand:not(:focus):not(:hover) {\n background-color: #f8f8f8;\n color: #333333;\n}\n#show-side-navigation:checked ~ .ds_side-navigation__list, #show-side-navigation:checked ~ .ds_side-navigation__list .ds_side-navigation__list {\n display: block;\n}\n.ds_side-navigation__list {\n display: none;\n list-style-type: none;\n margin: 8px 16px;\n}\n.ds_side-navigation__list .ds_side-navigation__list {\n margin: 0 0 0 16px;\n}\n.ds_side-navigation__item {\n position: relative;\n margin-bottom: 0;\n}\n.ds_side-navigation__item--disabled {\n text-decoration: line-through;\n}\n.ds_side-navigation__link {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n margin-bottom: 2px;\n padding: 12px 40px 10px 16px;\n position: relative;\n text-decoration: none;\n}\n.ds_side-navigation__link:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_side-navigation__link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_side-navigation__link:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_side-navigation__link:not([href]) {\n pointer-events: none;\n}\n.ds_side-navigation__link:hover, .ds_side-navigation__link.ds_current {\n position: relative;\n}\n.ds_side-navigation__link:hover::before, .ds_side-navigation__link.ds_current::before {\n border-left: 2px solid #0065bd;\n bottom: 0;\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n}\n.ds_side-navigation__link:focus {\n box-shadow: 0 3px #333333;\n z-index: 2;\n}\n.ds_side-navigation__link:focus::before {\n content: none;\n}\n.ds_side-navigation__link.ds_current:not(:focus) {\n background-color: #f8f8f8;\n}\n.ds_side-navigation__link.ds_current:not(:focus):hover {\n background-color: #f8f8f8;\n}\n.ds_side-navigation__link--inactive {\n pointer-events: none;\n background-color: #ebebeb;\n}\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link {\n padding-left: 24px;\n}\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link::before {\n border-left: 4px solid #b3b3b3;\n bottom: 12px;\n content: \"\";\n left: 12px;\n opacity: 0.26;\n position: absolute;\n right: 100%;\n top: 12px;\n}\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link:hover::before, .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link.ds_current::before {\n border-color: #0065bd;\n opacity: 1;\n}\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link:focus::before {\n border-color: #333333;\n opacity: 1;\n}\n\n@media (max-width: 767px) {\n .js-initialised.ds_side-navigation .ds_side-navigation__list {\n display: block;\n }\n .js-initialised.ds_side-navigation > .ds_side-navigation__list {\n margin: 0 15px;\n max-height: var(--ds-side-nav-max-height);\n overflow: hidden;\n }\n}\n@media (max-width: 767px) and (prefers-reduced-motion: no-preference) {\n .js-initialised.ds_side-navigation > .ds_side-navigation__list {\n transition: max-height 0.2s, padding 0.2s;\n }\n}\n@media (max-width: 767px) {\n .js-initialised.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__list {\n padding-bottom: 8px;\n padding-top: 8px;\n }\n}\n@media (min-width: 768px) {\n .ds_side-navigation {\n border-width: 0;\n line-height: 24px;\n }\n .ds_side-navigation__expand {\n display: none;\n }\n .ds_side-navigation__list {\n display: block !important;\n margin: 0;\n max-height: none !important;\n }\n .ds_side-navigation #show-side-navigation {\n display: none;\n }\n}\n/*\n SITE NAVIGATION\n containing site-navigation and mobile equivalent\n*/\n.ds_site-navigation {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n display: none;\n}\n@media (min-width: 768px) {\n .ds_site-navigation {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_site-navigation__toggle {\n display: none;\n}\n.ds_site-navigation__list {\n display: block;\n list-style-type: none;\n margin: 0;\n}\n.ds_site-navigation__item {\n margin-bottom: 0;\n}\n.ds_site-navigation__link {\n color: currentColor;\n display: block;\n padding: 8px 16px;\n text-decoration: none;\n white-space: nowrap;\n}\n.ds_site-navigation__link:focus {\n position: relative;\n z-index: 1;\n}\n\n@media (max-width: 767px) {\n .ds_site-navigation {\n background-color: #f8f8f8;\n margin: 0 -16px;\n }\n .ds_site-navigation--mobile {\n overflow: hidden;\n }\n .ds_site-navigation__list {\n padding: 16px;\n }\n .ds_site-navigation__item:not(:last-child) {\n border-bottom: 1px solid #b3b3b3;\n }\n .ds_site-navigation__link {\n padding-bottom: 16px;\n padding-top: 16px;\n }\n .ds_site-navigation__link:hover:not(:focus), .ds_site-navigation__link.ds_current {\n border-left: 4px solid #0065bd;\n padding-left: 12px;\n }\n .ds_site-navigation__toggle:checked ~ .ds_site-navigation,\n .ds_site-navigation--open {\n border-top: 1px solid #ebebeb;\n display: block;\n }\n}\n@media (min-width: 768px) {\n .ds_site-navigation {\n line-height: 2;\n }\n .ds_site-navigation:not(.ds_site-navigation--mobile) {\n display: block;\n }\n .ds_site-navigation__item {\n display: inline-block;\n }\n .ds_site-navigation__list {\n display: flex;\n flex-wrap: wrap;\n margin: 0 0 0 -16px;\n }\n .ds_site-navigation .ds_site-navigation__link {\n position: relative;\n transition-duration: 0s !important;\n }\n .ds_site-navigation .ds_site-navigation__link:hover:not(:focus) {\n background: transparent;\n outline-color: transparent;\n }\n .ds_site-navigation .ds_site-navigation__link::after {\n background-color: currentColor;\n bottom: -5px;\n content: \"\";\n height: 1px;\n left: 50%;\n opacity: 0;\n position: absolute;\n right: 50%;\n transition: left 0.2s, right 0.2s, opacity 0.2s;\n }\n .ds_site-navigation .ds_site-navigation__link:hover::after {\n left: 0;\n opacity: 1;\n right: 0;\n }\n .ds_site-navigation .ds_site-navigation__link::after {\n bottom: 0;\n height: 3px;\n }\n .ds_site-navigation .ds_site-navigation__link.ds_current:not(:focus) {\n background-color: #f8f8f8;\n color: #333333;\n }\n .ds_site-navigation .ds_site-navigation__link.ds_current:not(:focus):after {\n border-bottom: 3px solid transparent;\n left: 0;\n opacity: 1;\n right: 0;\n }\n .ds_site-navigation a.ds_site-navigation__link:focus {\n box-shadow: 0 3px #333333;\n outline: none;\n padding-bottom: 5px;\n }\n}\n@media screen and (min-width: 768px) and (forced-colors: active) and (prefers-contrast: more) {\n .ds_site-navigation a.ds_site-navigation__link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n@media (min-width: 768px) {\n .ds_site-navigation a.ds_site-navigation__link:focus::after {\n content: none;\n }\n .ds_site-navigation a.ds_site-navigation__link:hover:not(:focus) {\n background-color: #d9eeff;\n }\n}\n/*------------------------------------*\\\\\n BRANDING\n\\\\*------------------------------------*/\n.ds_site-branding {\n overflow: hidden;\n padding: 12px 0;\n position: relative;\n}\n.ds_site-branding__logo {\n height: 32px;\n margin-right: 1.5rem;\n}\n.ds_site-branding__logo-image {\n height: 32px;\n pointer-events: none;\n width: auto;\n}\n.ds_site-branding__link {\n color: currentColor;\n display: inline-block;\n position: relative;\n text-decoration: none;\n position: relative;\n transition-duration: 0s !important;\n}\n.ds_site-branding__link:hover:not(:focus) {\n background: transparent;\n outline-color: transparent;\n}\n.ds_site-branding__link::after {\n background-color: currentColor;\n bottom: -5px;\n content: \"\";\n height: 2px;\n left: 50%;\n opacity: 0;\n position: absolute;\n right: 50%;\n transition: left 0.2s, right 0.2s, opacity 0.2s;\n}\n.ds_site-branding__link:hover::after {\n left: 0;\n opacity: 1;\n right: 0;\n}\n.ds_site-branding__title {\n font-weight: 300;\n line-height: 1.5rem;\n}\n.ds_site-branding__title::before {\n background: #0065bd;\n bottom: 12px;\n content: \"\";\n position: absolute;\n margin-left: -0.75rem;\n top: 12px;\n width: 1px;\n}\n.ds_site-branding__logo, .ds_site-branding__title {\n float: left;\n}\n\n@media (min-width: 768px) {\n .ds_site-branding__link {\n margin-bottom: 0;\n }\n .ds_site-branding__logo {\n height: 40px;\n margin-right: 3rem;\n }\n .ds_site-branding__logo-image {\n height: 40px;\n }\n .ds_site-branding__title::before {\n margin-left: -1.5rem;\n }\n}\n@supports (display: flex) {\n .ds_site-branding {\n align-items: center;\n display: flex;\n flex-flow: wrap;\n gap: 1rem 0;\n }\n .ds_site-branding__logo, .ds_site-branding__title {\n float: none;\n }\n}\n/*------------------------------------*\\\\\n SITE FOOTER\n\\\\*------------------------------------*/\n.ds_site-footer {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n background-color: #ebebeb;\n border-top: 1px solid #b3b3b3;\n}\n@media (min-width: 768px) {\n .ds_site-footer {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n.ds_site-footer__content {\n padding-top: 1.4375rem;\n padding-bottom: 2rem;\n}\n.ds_site-footer__site-items {\n border-bottom: 1px solid #b3b3b3;\n font-size: 14px;\n line-height: 1.7142857143;\n list-style-type: none;\n margin: -0.5rem 0 1.4375rem;\n}\n.ds_site-footer__copyright-logo {\n display: block;\n margin-bottom: 8px;\n width: 32px;\n position: relative;\n transition-duration: 0s !important;\n}\n.ds_site-footer__copyright-logo:hover:not(:focus) {\n background: transparent;\n outline-color: transparent;\n}\n.ds_site-footer__copyright-logo::after {\n background-color: currentColor;\n bottom: -5px;\n content: \"\";\n height: 1px;\n left: 50%;\n opacity: 0;\n position: absolute;\n right: 50%;\n transition: left 0.2s, right 0.2s, opacity 0.2s;\n}\n.ds_site-footer__copyright-logo:hover::after {\n left: 0;\n opacity: 1;\n right: 0;\n}\n.ds_site-footer__copyright-logo img {\n height: auto;\n width: 100%;\n}\n@media (min-width: 768px) {\n .ds_site-footer__copyright > :last-child {\n margin-bottom: 0;\n }\n}\n.ds_site-footer__org {\n max-width: 160px;\n position: relative;\n}\n.ds_site-footer__org-logo {\n display: block;\n height: auto;\n width: 100%;\n}\n.ds_site-footer__org-link {\n display: block;\n position: relative;\n transition-duration: 0s !important;\n}\n.ds_site-footer__org-link:hover:not(:focus) {\n background: transparent;\n outline-color: transparent;\n}\n.ds_site-footer__org-link::after {\n background-color: currentColor;\n bottom: -5px;\n content: \"\";\n height: 1px;\n left: 50%;\n opacity: 0;\n position: absolute;\n right: 50%;\n transition: left 0.2s, right 0.2s, opacity 0.2s;\n}\n.ds_site-footer__org-link:hover::after {\n left: 0;\n opacity: 1;\n right: 0;\n}\n.ds_site-footer .ds_site-footer__org-link,\n.ds_site-footer .ds_site-footer__copyright-logo {\n color: currentColor !important;\n}\n\n.ds_site-items__item, .ds_site-items__item:last-child {\n display: inline-block;\n margin-bottom: 1rem;\n}\n.ds_site-items__item:not(:last-child), .ds_site-items__item:last-child:not(:last-child) {\n margin-right: 1.5rem;\n}\n\n@media (min-width: 768px) {\n .ds_site-footer__copyright {\n padding-left: 48px;\n position: relative;\n }\n .ds_site-footer__copyright-logo {\n position: absolute;\n left: 0;\n top: 2px;\n }\n .ds_site-footer__content {\n margin-right: -32px;\n overflow: hidden;\n }\n .ds_site-footer__content > * {\n margin-right: 32px;\n }\n @supports (display: grid) {\n .ds_site-footer__content {\n display: grid;\n grid-gap: 0 32px;\n margin-right: 0;\n overflow: visible;\n }\n .ds_site-footer__content > * {\n margin-left: 0;\n margin-right: 0;\n width: auto !important;\n }\n }\n .ds_site-footer__copyright {\n float: left;\n width: calc(66.6666666667% - 32px);\n }\n .ds_site-footer__org {\n float: right;\n width: calc(25% - 32px);\n }\n @supports (display: grid) {\n .ds_site-footer__content {\n display: grid;\n grid-gap: 0 32px;\n grid-template-columns: repeat(12, 1fr);\n grid-template-areas: \"a a a a a a a a a a a a\" \"b b b b b b b b . c c c\";\n }\n .ds_site-footer__site-items {\n grid-area: a;\n }\n .ds_site-footer__copyright {\n grid-area: b;\n }\n .ds_site-footer__org {\n grid-area: c;\n justify-self: right;\n width: 100% !important;\n }\n }\n}\n/*------------------------------------*\\\\\n SITE HEADER\n\\\\*------------------------------------*/\n.ds_site-header {\n background-color: #ffffff;\n border-bottom: 1px solid #ebebeb;\n margin-bottom: -1px;\n position: relative;\n}\n.ds_site-header::before {\n border-top: 4px solid #0065bd;\n content: \"\";\n display: block;\n}\n.ds_site-header--gradient::before {\n border-image-slice: 1;\n border-image-source: linear-gradient(to right, #0065bd, #002d54);\n}\n.ds_site-header__content {\n overflow: auto;\n}\n.ds_site-header .ds_site-branding {\n float: left;\n}\n.ds_site-header .ds_site-header__controls {\n float: right;\n height: calc(100% + 1px);\n margin-bottom: -1px;\n}\n.ds_site-header .ds_site-navigation {\n clear: both;\n}\n.ds_site-header__search {\n float: right;\n margin: 8px 0;\n}\n.ds_site-header__search .ds_input__wrapper {\n margin: 0;\n}\n.ds_site-header__control {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n color: inherit;\n cursor: pointer;\n font-size: 1rem;\n font-weight: 400;\n min-height: 48px;\n margin: 0 -16px -1px 0;\n padding: 16px;\n text-decoration: none;\n}\n.ds_site-header__control:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_site-header__control:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n.ds_site-header__control:hover:not(:focus) {\n background-color: #d9eeff;\n}\n.ds_site-header__control--active {\n background-color: #f8f8f8;\n box-shadow: -1px -1px 0px rgba(0, 0, 0, 0.08);\n}\n.ds_site-header__control--active .ds_site-header__control-icon {\n display: none;\n}\n.ds_site-header__control--active .ds_site-header__control-icon--active-icon {\n display: block;\n}\n.ds_site-header__control-icon {\n height: 24px;\n width: 24px;\n}\n.ds_site-header__control-icon--active-icon {\n display: none;\n}\n.ds_site-header__control-text {\n float: left;\n margin-right: 8px;\n pointer-events: none;\n}\n@media (min-width: 768px) {\n .ds_site-header__navigation {\n border-top: 1px solid #ebebeb;\n margin-top: -1px;\n }\n}\n\n@supports (display: grid) {\n .ds_site-header__content {\n align-items: center;\n display: grid;\n grid-template-columns: 1fr auto;\n grid-template-areas: \"branding controls\" \"nav nav\" \"search search\";\n overflow: visible;\n overflow: initial;\n }\n .ds_site-header .ds_site-branding {\n grid-area: branding;\n }\n .ds_site-header__controls {\n grid-area: controls;\n }\n .ds_site-header__search {\n grid-area: search;\n }\n .ds_site-header .ds_site-navigation--mobile {\n grid-area: nav;\n }\n @media (min-width: 768px) {\n .ds_site-header__content {\n grid-template-columns: auto max-content;\n grid-template-areas: \"branding search\";\n }\n }\n}\n@supports (display: flex) {\n .ds_site-header__control {\n align-items: center;\n display: flex;\n height: 100%;\n }\n}\n@media (min-width: 768px) {\n .ds_site-header__controls {\n display: none;\n }\n}\n/*------------------------------------*\\\\\n SEARCH BOX\n\\\\*------------------------------------*/\n.ds_site-search {\n box-sizing: border-box;\n color: #333333;\n min-height: 48px;\n}\n.ds_site-search__input[type=text], .ds_site-search__input[type=search] {\n background: #f8f8f8;\n border-color: #727272;\n margin-bottom: 0;\n min-height: 48px;\n}\n.ds_site-search__input[type=text]:focus, .ds_site-search__input[type=search]:focus {\n border-color: currentColor;\n}\n.ds_site-search--large {\n margin-bottom: 48px;\n}\n\n@media (min-width: 768px) {\n .ds_site-search {\n min-height: 48px;\n }\n .ds_site-search__button {\n height: 48px;\n width: 48px;\n }\n}\n/*------------------------------------*\\\\\n #SKIP LINKS\n\\\\*------------------------------------*/\n.ds_skip-links {\n height: 0;\n position: relative;\n z-index: 1;\n}\n@supports selector(:focus-within) {\n .ds_skip-links {\n height: auto;\n }\n}\n\n.ds_skip-links__list {\n list-style-type: none;\n margin: 0;\n}\n\n.ds_skip-links__item {\n margin: 0;\n}\n\n.ds_skip-links__link {\n clip: rect(1px 1px 1px 1px);\n display: inline-block;\n height: 1px;\n left: 10px;\n margin-bottom: 1rem;\n overflow: hidden;\n position: absolute;\n top: 10px;\n width: 1px;\n}\n.ds_skip-links__link:focus {\n clip: auto;\n height: auto;\n overflow: visible;\n padding: 0.5rem 0.375rem;\n width: auto;\n z-index: 10000;\n}\n@media (min-width: 768px) {\n .ds_skip-links__link:focus {\n padding: 0.5rem 1rem;\n }\n}\n\n.ds_skip-links--static .ds_skip-links__link {\n position: static;\n}\n\n.ds_skip-links:not(:focus-within) {\n position: absolute;\n}\n\n/*------------------------------------*\\\\\n SORT OPTIONS\n\\\\*------------------------------------*/\n.ds_sort-options {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin-bottom: 1.5rem;\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 8px 24px;\n}\n@media (min-width: 768px) {\n .ds_sort-options {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_sort-options {\n margin-bottom: 2rem;\n }\n}\n.ds_sort-options .ds_button,\n.ds_sort-options .ds_label,\n.ds_sort-options .ds_select-wrapper {\n margin: 0 0.5rem;\n}\n@supports (gap: 0) {\n .ds_sort-options .ds_button,\n .ds_sort-options .ds_label,\n .ds_sort-options .ds_select-wrapper {\n margin: 0;\n }\n .ds_sort-options .ds_label {\n margin-right: -1rem;\n }\n}\n.ds_sort-options .ds_button {\n min-height: 2.5rem;\n padding: 0.5rem 0.75rem;\n}\n.ds_sort-options .ds_label {\n font-weight: normal;\n}\n.ds_sort-options .ds_select {\n min-height: 2.5rem;\n}\n.ds_sort-options .ds_select-arrow {\n width: 2.5rem;\n}\n.ds_sort-options .ds_select-wrapper {\n display: inline-grid;\n}\n\n@media (min-width: 768px) {\n .ds_sort-options .ds_select {\n min-height: 2.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n }\n}\n/*------------------------------------*\\\\\n #STEP NAVIGATION\n Step navigation is an enhancement to the DS accordion\n\\\\*------------------------------------*/\n.ds_step-navigation {\n counter-reset: section;\n}\n.ds_step-navigation__list {\n list-style-type: none;\n margin: 0;\n}\n.ds_step-navigation__list li {\n margin-bottom: 0;\n}\n.ds_step-navigation__title {\n font-size: 19px;\n line-height: 1.5rem;\n}\n.ds_step-navigation__title-link {\n display: block;\n margin-bottom: 1.5rem;\n margin-top: 0.5rem;\n text-decoration: underline;\n}\n@media (min-width: 768px) {\n .ds_step-navigation__title-link {\n margin-bottom: 1.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_step-navigation__title-link {\n margin-top: 0.5rem;\n }\n}\n.ds_step-navigation__current-link::before {\n content: \"\";\n position: absolute;\n left: -24px;\n right: 100%;\n height: 1px;\n background: #333333;\n margin-top: 12px;\n}\n.ds_step-navigation__count {\n background-color: #ffffff;\n border: 1px solid currentColor;\n border-radius: 20px;\n color: #333333;\n content: counter(section);\n counter-increment: section;\n display: block;\n font-size: 16px;\n font-weight: 700;\n height: 32px;\n left: -40px;\n line-height: 30px;\n position: absolute;\n text-align: center;\n top: 0.75rem;\n width: 32px;\n}\n.ds_current .ds_step-navigation__count {\n background-color: #f8f8f8;\n border: 2px solid #0065bd;\n line-height: 28px;\n}\n.ds_step-navigation .ds_accordion {\n margin-left: 40px;\n}\n.ds_step-navigation .ds_accordion-item {\n position: relative;\n}\n.ds_step-navigation .ds_accordion-item::before {\n background: #333333;\n bottom: -1.0625rem;\n content: \"\";\n display: block;\n left: -24px;\n position: absolute;\n top: 2.4375rem;\n width: 1px;\n}\n.ds_step-navigation .ds_accordion-item:last-child::before {\n bottom: 0 !important;\n}\n.ds_step-navigation .ds_accordion-item:last-child::after {\n background: #333333;\n bottom: -1px;\n content: \"\";\n display: block;\n height: 1px;\n left: -30px;\n position: absolute;\n width: 13px;\n}\n.ds_step-navigation__or, .ds_step-navigation__and {\n counter-increment: section -1;\n}\n.ds_step-navigation__or .ds_step-navigation__count, .ds_step-navigation__and .ds_step-navigation__count {\n background-color: transparent;\n border: none;\n}\n\n@media (min-width: 768px) {\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_step-navigation__count {\n font-size: 19px;\n height: 40px;\n left: -48px;\n line-height: 38px;\n width: 40px;\n }\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_current .ds_step-navigation__count {\n line-height: 36px;\n }\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_step-navigation__current-link::before {\n left: -28px;\n margin-top: 16px;\n }\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion {\n margin-left: 48px;\n }\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion-item::before {\n bottom: -1.0625rem;\n left: -28px;\n top: 3.0625rem;\n }\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion-item:last-child::after {\n left: -34px;\n }\n}\n/*------------------------------------*\\\\\n #SUMMARY LIST\n\\\\*------------------------------------*/\n.ds_summary-list {\n margin-bottom: 1.5rem;\n list-style-type: none;\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .ds_summary-list {\n margin-bottom: 2rem;\n }\n}\n.ds_summary-list__key {\n font-weight: 700;\n}\n.ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\n margin-bottom: 0.5rem;\n display: block;\n overflow-wrap: break-word;\n}\n@media (min-width: 768px) {\n .ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\n margin-bottom: 0.5rem;\n }\n}\n.ds_summary-list__item {\n padding-top: 1rem;\n padding-bottom: calc(0.5rem + -1px);\n border-bottom: 1px solid #b3b3b3;\n margin: 0;\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_summary-list__item {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_summary-list__item {\n padding-bottom: calc(0.5rem + -1px);\n }\n}\n.ds_summary-list--no-border .ds_summary-list__item {\n padding-bottom: 0.5rem;\n border-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_summary-list--no-border .ds_summary-list__item {\n padding-bottom: 0.5rem;\n }\n}\n.ds_summary-list__value > :first-child {\n margin-top: 0;\n}\n.ds_summary-list__value > :last-child {\n margin-bottom: 0;\n}\n.ds_summary-list__value .visually-hidden:first-child + * {\n margin-top: 0;\n}\n.ds_summary-list__answer::before, .ds_summary-list__answer::after {\n content: \"\";\n}\n.ds_summary-list__actions-list {\n display: flex;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ds_summary-list__actions-list-item {\n margin: 0;\n padding: 0;\n}\n.ds_summary-list__actions-list-item:not(:first-child) {\n margin-left: 0.5rem;\n padding-left: calc(0.5rem + 1px);\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_summary-list__actions-list-item:not(:first-child) {\n margin-left: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_summary-list__actions-list-item:not(:first-child) {\n padding-left: calc(0.5rem + 1px);\n }\n}\n.ds_summary-list__actions-list-item:not(:first-child)::before {\n background: #727272;\n content: \"\";\n height: calc(1em - 2px);\n left: 0;\n position: absolute;\n top: calc(50% - (1em - 2px) / 2);\n width: 1px;\n}\n\n@media (min-width: 768px) {\n .ds_summary-list {\n border-collapse: collapse;\n display: table;\n width: 100%;\n }\n .ds_summary-list__item {\n display: table-row;\n padding: 0;\n }\n .ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\n display: table-cell;\n padding: 1rem 1rem 0.9375rem 1rem;\n }\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__key,\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__value,\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__action {\n padding-bottom: 1rem;\n }\n .ds_summary-list__key {\n padding-left: 0;\n width: 50%;\n }\n .ds_summary-list__value {\n width: 50%;\n }\n .ds_summary-list__actions-list {\n justify-content: flex-end;\n }\n .ds_summary-list__actions {\n padding-right: 0;\n text-align: right;\n }\n}\n@media (min-width: 992px) {\n .ds_summary-list--short-keys .ds_summary-list__key {\n width: 30%;\n }\n .ds_summary-list--short-keys .ds_summary-list__value {\n width: 70%;\n }\n}\n.ds_summary-card {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n border: 1px solid #b3b3b3;\n}\n@media (min-width: 768px) {\n .ds_summary-card {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card {\n margin-bottom: 2rem;\n }\n}\n.ds_summary-card__header {\n padding-top: calc(1.5rem + -1px);\n padding-right: calc(1.5rem + -1px);\n padding-bottom: calc(1.5rem + -1px);\n padding-left: calc(1.5rem + -1px);\n align-items: flex-start;\n border-bottom: 1px solid #f8f8f8;\n background: #f8f8f8;\n display: flex;\n justify-content: space-between;\n}\n@media (min-width: 768px) {\n .ds_summary-card__header {\n padding-top: calc(1.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__header {\n padding-right: calc(1.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__header {\n padding-bottom: calc(1.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__header {\n padding-left: calc(1.5rem + -1px);\n }\n}\n@media (max-width: 767px) {\n .ds_summary-card__header {\n flex-direction: column;\n }\n}\n.ds_summary-card__header-title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n font-weight: 700;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_summary-card__header-title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n.ds_summary-card__header .ds_link {\n font-weight: 700;\n}\n.ds_summary-card__actions-list {\n display: flex;\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: 2rem;\n}\n@media (max-width: 767px) {\n .ds_summary-card__actions-list {\n padding-left: 0;\n padding-top: 0.5rem;\n }\n}\n.ds_summary-card__actions-list-item {\n margin: 0;\n padding: 0;\n}\n.ds_summary-card__actions-list-item:not(:first-child) {\n margin-left: 0.5rem;\n padding-left: calc(0.5rem + 1px);\n position: relative;\n}\n@media (min-width: 768px) {\n .ds_summary-card__actions-list-item:not(:first-child) {\n margin-left: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__actions-list-item:not(:first-child) {\n padding-left: calc(0.5rem + 1px);\n }\n}\n.ds_summary-card__actions-list-item:not(:first-child)::before {\n background: #727272;\n content: \"\";\n height: calc(1em - 2px);\n left: 0;\n position: absolute;\n top: calc(50% - (1em - 2px) / 2);\n width: 1px;\n}\n.ds_summary-card__content {\n padding-top: 0.5rem;\n padding-right: calc(1.5rem + -1px);\n padding-bottom: calc(0.5rem + -1px);\n padding-left: calc(1.5rem + -1px);\n}\n@media (min-width: 768px) {\n .ds_summary-card__content {\n padding-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__content {\n padding-right: calc(1.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__content {\n padding-bottom: calc(0.5rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_summary-card__content {\n padding-left: calc(1.5rem + -1px);\n }\n}\n.ds_summary-card .ds_summary-list {\n margin-bottom: 0;\n}\n.ds_summary-card .ds_summary-list__item:last-child {\n border-color: transparent;\n}\n\n/*------------------------------------*\\\\\n TABLES\n\\\\*------------------------------------*/\n.ds_table {\n width: 100%;\n margin-bottom: 1rem;\n}\n@media (min-width: 768px) {\n .ds_table {\n margin-bottom: 1rem;\n }\n}\n.ds_table caption {\n margin-bottom: 1rem;\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.5;\n text-align: left;\n}\n@media (min-width: 768px) {\n .ds_table caption {\n margin-bottom: 1rem;\n }\n}\n.ds_table tbody,\n.ds_table thead,\n.ds_table tfoot {\n border: 1px solid #b3b3b3;\n}\n.ds_table tr {\n border-bottom: 1px solid #ebebeb;\n}\n.ds_table tr > * {\n padding: 0.5rem 1rem 0.4375rem 0.5rem;\n}\n.ds_table tr:last-child {\n border-bottom: 0;\n}\n.ds_table th {\n background-color: #ebebeb;\n font-weight: 700;\n position: relative;\n text-align: left;\n}\n.ds_table th,\n.ds_table td {\n vertical-align: top;\n}\n.ds_table th[colspan] {\n border: 1px solid #b3b3b3;\n}\n.ds_table th:not(:first-child)::before {\n border-left: 1px solid #b3b3b3;\n bottom: 8px;\n content: \"\";\n left: -1px;\n position: absolute;\n top: 8px;\n}\n.ds_table thead > tr:last-child {\n border-bottom: 0;\n}\n.ds_table tbody > tr > td {\n background-color: #ffffff;\n}\n.ds_table tbody > tr:nth-child(even) > td {\n background-color: #f8f8f8;\n}\n\n@media (max-width: 767px) {\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] {\n display: block;\n max-width: 100%;\n overflow-x: auto;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child {\n left: 0;\n position: sticky;\n z-index: 1;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] caption {\n display: block;\n left: 0;\n position: sticky;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child::after {\n background: linear-gradient(90deg, rgba(0, 0, 0, 0.07), rgba(0, 0, 0, 0));\n content: \"\";\n height: 100%;\n position: absolute;\n right: -10px;\n top: 0;\n width: 10px;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child::before {\n background: #b3b3b3;\n content: \"\";\n height: 100%;\n left: -1px;\n position: absolute;\n top: 0;\n width: 1px;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > th:first-child {\n background: #ebebeb;\n }\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > td:first-child {\n border-right: 1px solid #ebebeb;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] {\n border: 0;\n margin-bottom: 0;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] thead {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tbody {\n border: none;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr {\n border: 0;\n display: block;\n margin-bottom: 16px;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > * {\n border: 1px solid #b3b3b3;\n display: block;\n overflow: auto;\n padding-left: calc(50% - 8px);\n position: relative;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:not(:last-child) {\n border-bottom-color: #ebebeb;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > th:last-child {\n border-width: 0;\n margin-top: 32px;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:not(:first-child) {\n border-top-width: 0;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td::before {\n content: attr(data-heading);\n display: block;\n position: absolute;\n font-weight: 700;\n left: 0;\n margin-left: 16px;\n margin-right: 16px;\n text-align: left;\n width: calc(50% - 16px);\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:first-child {\n box-shadow: inset 0 4px 0 #ebebeb;\n padding-top: 11px;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:nth-child(odd) {\n background-color: #ffffff;\n }\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:nth-child(even) {\n background-color: #f8f8f8;\n }\n}\n/*------------------------------------*\\\\\n TABS\n\\\\*------------------------------------*/\n.ds_tabs {\n margin-bottom: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_tabs {\n margin-bottom: 2rem;\n }\n}\n.ds_tabs__title {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin: 0;\n padding: 0;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_tabs__title {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs__title {\n margin-bottom: 0.5rem;\n }\n}\n.ds_tabs__list {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n margin-bottom: 2.5rem;\n list-style: none;\n margin-left: 0;\n padding-left: 32px;\n}\n@media (min-width: 768px) {\n .ds_tabs__list {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs__list {\n margin-bottom: 3rem;\n }\n}\n.ds_tabs__tab {\n position: relative;\n}\n.ds_tabs__tab::before {\n background: currentColor;\n content: \"—\";\n height: 1px;\n left: -32px;\n overflow: hidden;\n position: absolute;\n top: 12px;\n width: 20px;\n}\n.ds_tabs__tab.ds_current {\n font-weight: 700;\n}\n.ds_tabs__content + .ds_tabs__content {\n margin-top: 1.5rem;\n}\n@media (min-width: 768px) {\n .ds_tabs__content + .ds_tabs__content {\n margin-top: 1.5rem;\n }\n}\n@media (max-width: 767px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised {\n margin-bottom: 1.5rem;\n }\n}\n@media (max-width: 767px) and (min-width: 768px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised {\n margin-bottom: 2rem;\n }\n}\n@media (max-width: 767px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n background-color: #ffffff;\n border: 2px solid #ebebeb;\n color: #0065bd;\n font-weight: 700;\n margin: 0;\n padding: 14px 38px 14px 14px;\n text-align: left;\n text-decoration: none;\n width: 100%;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n }\n}\n@media screen and (max-width: 767px) and (forced-colors: active) and (prefers-contrast: more) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n@media (max-width: 767px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:hover:not(:focus) {\n background-color: #d9eeff;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:hover:not(:focus) {\n color: #00437d;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle::after {\n content: \"\";\n background-color: transparent;\n border-style: solid;\n border-width: 0px 0px 0.1875em 0.1875em;\n border-top-color: transparent;\n display: inline-block;\n height: 0.75em;\n width: 0.75em;\n transform: rotate(-45deg);\n border-width: 0px 0px 3px 3px;\n position: absolute;\n right: 16px;\n top: 17px;\n transition: transform 0.2s;\n pointer-events: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\n border: 0;\n padding: 16px 40px 16px 16px;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus::after {\n right: 18px;\n top: 19px;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle + .ds_tabs__list {\n display: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true] {\n border-bottom: 0;\n color: #333333;\n padding-bottom: 16px;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:not(:focus) {\n background-color: #f8f8f8;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:hover:not(:focus) {\n background-color: #d9eeff;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]::after {\n top: 23px;\n transform: rotate(-225deg);\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:focus::after {\n top: 25px;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true] + .ds_tabs__list {\n display: block;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__list {\n font-size: 1rem;\n line-height: 1.5;\n border: 2px solid #ebebeb;\n border-top: 0;\n margin: 0;\n padding: 8px 6px 6px 6px;\n }\n}\n@media (max-width: 767px) and (min-width: 768px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__list {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (max-width: 767px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab {\n margin: 0 0 2px 0;\n padding: 0;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab::before {\n display: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n padding: 11px 16px;\n text-decoration: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n }\n}\n@media screen and (max-width: 767px) and (forced-colors: active) and (prefers-contrast: more) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n@media (max-width: 767px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:hover:not(:focus) {\n background-color: #d9eeff;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab.ds_current {\n font-weight: 400;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link:not(:focus) {\n background-color: #f8f8f8;\n border-left: 2px solid #0065bd;\n color: #333333;\n padding-left: 14px;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__title {\n display: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__current {\n margin-top: 0.5rem;\n }\n}\n@media (max-width: 767px) and (min-width: 768px) {\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__current {\n margin-top: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.ds_tabs--links .ds_tabs__toggle {\n display: none;\n }\n .ds_tabs.ds_tabs--links .ds_tabs__current {\n display: none;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__list, .ds_tabs.ds_tabs--links .ds_tabs__list {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin: 0;\n padding: 0;\n }\n .ds_tabs.js-initialised .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab-link {\n display: block;\n position: relative;\n transition: background-color 0.2s, outline-color 0.2s;\n z-index: 1;\n outline: 0 !important;\n color: #333333;\n display: inline-block;\n padding: 12px 16px;\n }\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\n background-color: #fdd522;\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\n color: #333333;\n }\n}\n@media screen and (min-width: 768px) and (forced-colors: active) and (prefers-contrast: more) {\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\n outline-color: highlight !important;\n outline-style: solid !important;\n outline-width: 2px !important;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__tab-link:hover:not(:focus), .ds_tabs.ds_tabs--links .ds_tabs__tab-link:hover:not(:focus) {\n background-color: #d9eeff;\n }\n .ds_tabs.js-initialised .ds_tabs__tab-link:hover, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:hover {\n color: #00437d;\n }\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\n color: #333333;\n }\n .ds_tabs.js-initialised .ds_tabs__tab, .ds_tabs.ds_tabs--links .ds_tabs__tab {\n background-color: #f8f8f8;\n margin: 0;\n }\n .ds_tabs.js-initialised .ds_tabs__tab::before, .ds_tabs.ds_tabs--links .ds_tabs__tab::before {\n display: none;\n }\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current {\n background-color: #ffffff;\n font-weight: 400;\n margin-bottom: -2px !important;\n }\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link {\n border-top: 3px solid #0065bd;\n border-left: 2px solid #b3b3b3;\n border-right: 2px solid #b3b3b3;\n border-bottom: 0;\n color: #333333;\n padding: calc(12px - 3px) calc(16px - 2px) calc(12px + 2px);\n text-decoration: none;\n }\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link:focus {\n border: 0;\n color: #333333;\n padding: 12px 16px calc(12px + 2px);\n }\n .ds_tabs.js-initialised .ds_tabs__tab:focus-within, .ds_tabs.ds_tabs--links .ds_tabs__tab:focus-within {\n margin-bottom: -2px !important;\n }\n .ds_tabs.js-initialised .ds_tabs__tab:focus-within .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab:focus-within .ds_tabs__tab-link {\n padding: 12px 16px calc(12px + 2px);\n }\n .ds_tabs.js-initialised .ds_tabs__title, .ds_tabs.ds_tabs--links .ds_tabs__title {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n }\n .ds_tabs.js-initialised .ds_tabs__content, .ds_tabs.ds_tabs--links .ds_tabs__content {\n border-top: 2px solid #b3b3b3;\n margin: 0;\n padding-top: calc(1.5rem + -2px);\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content, .ds_tabs.ds_tabs--links .ds_tabs__content {\n padding-top: calc(1.5rem + -2px);\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\n border: 2px solid #b3b3b3;\n padding-top: calc(1.5rem + -2px);\n padding-right: calc(1rem + -2px);\n padding-bottom: calc(1.5rem + -2px);\n padding-left: calc(1rem + -2px);\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\n padding-top: calc(1.5rem + -2px);\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\n padding-right: calc(1rem + -2px);\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\n padding-bottom: calc(1.5rem + -2px);\n }\n}\n@media (min-width: 768px) and (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\n padding-left: calc(1rem + -2px);\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.js-initialised .ds_tabs__content--bordered > :last-child, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered > :last-child {\n margin-bottom: 0;\n }\n .ds_tabs.js-initialised .ds_tabs__content--hidden, .ds_tabs.ds_tabs--links .ds_tabs__content--hidden {\n display: none;\n }\n}\n@media (min-width: 768px) {\n .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link:hover {\n background-color: inherit;\n color: inherit;\n }\n}\n\n/*------------------------------------*\\\\\n TAG\n\\\\*------------------------------------*/\n.ds_tag {\n font-size: 1rem;\n line-height: 1.5;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n background: #d9eeff;\n color: #00437d;\n display: inline-block;\n font-weight: 400;\n outline: 1px solid rgba(0, 101, 189, 0.8);\n outline-offset: -1px;\n white-space: nowrap;\n}\n@media (min-width: 768px) {\n .ds_tag {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n@media (min-width: 768px) {\n .ds_tag {\n padding-left: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n .ds_tag {\n padding-right: 0.5rem;\n }\n}\n.ds_tag--grey {\n background-color: #ebebeb;\n color: #525252;\n outline-color: rgba(82, 82, 82, 0.8);\n}\n.ds_tag--green {\n background-color: #e0f0e0;\n color: #2d5a2d;\n outline-color: rgba(45, 90, 45, 0.8);\n}\n.ds_tag--teal {\n background-color: #cdf3ef;\n color: #1b6e67;\n outline-color: rgba(27, 110, 103, 0.8);\n}\n.ds_tag--darkblue {\n background-color: #d9eeff;\n color: #000b14;\n outline-color: rgba(0, 11, 20, 0.8);\n}\n.ds_tag--blue {\n background-color: #d9eeff;\n color: #00437d;\n outline-color: rgba(0, 67, 125, 0.8);\n}\n.ds_tag--purple {\n background-color: #f8e6f7;\n color: #5e1959;\n outline-color: rgba(94, 25, 89, 0.8);\n}\n.ds_tag--pink {\n background-color: #ffe4f3;\n color: #a5005b;\n outline-color: rgba(165, 0, 91, 0.8);\n}\n.ds_tag--red {\n background-color: #fee6e1;\n color: #951804;\n outline-color: rgba(149, 24, 4, 0.8);\n}\n.ds_tag--orange {\n background-color: #fde7db;\n color: #b8440a;\n outline-color: rgba(184, 68, 10, 0.8);\n}\n.ds_tag--yellow {\n background-color: #feec98;\n color: #7f6801;\n outline-color: rgba(127, 104, 1, 0.8);\n}\n\n/*------------------------------------*\\\\\n TASK LIST\n\\\\*------------------------------------*/\n.ds_task-list {\n list-style-type: none;\n margin: -2px 0 0 0;\n padding: 0;\n}\n.ds_task-list__task {\n align-items: center;\n border-top: 2px #ebebeb solid;\n display: flex;\n gap: 0.5rem 2rem;\n justify-content: space-between;\n margin: 0;\n padding-top: 1rem;\n padding-bottom: calc(1rem + -2px);\n}\n@media (min-width: 768px) {\n .ds_task-list__task {\n padding-top: 1rem;\n }\n}\n@media (min-width: 768px) {\n .ds_task-list__task {\n padding-bottom: calc(1rem + -2px);\n }\n}\n.ds_task-list__task:last-child {\n border-bottom: 2px #ebebeb solid;\n}\n@media (max-width: 479px) {\n .ds_task-list__task {\n padding-bottom: calc(1.5rem + -2px);\n align-items: flex-start;\n flex-direction: column;\n }\n}\n@media (max-width: 479px) and (min-width: 768px) {\n .ds_task-list__task {\n padding-bottom: calc(1.5rem + -2px);\n }\n}\n.ds_task-list__task-details {\n max-width: 100%;\n}\n.ds_task-list__task-heading {\n font-size: 1rem;\n line-height: 1.5;\n font-weight: 400;\n margin: 0;\n}\n@media (min-width: 768px) {\n .ds_task-list__task-heading {\n font-size: 1.1875rem;\n line-height: 1.6842105263;\n }\n}\n.ds_task-list__task-link {\n text-decoration: underline;\n}\n.ds_task-list__task-summary {\n margin: 0;\n margin-top: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_task-list__task-summary {\n margin-top: 0.5rem;\n }\n}\n.ds_task-list__task-status {\n font-size: 0.875rem;\n line-height: 1.7142857143;\n background-color: #ebebeb;\n font-weight: 700;\n padding: 0.25rem 1rem;\n white-space: nowrap;\n}\n@media (min-width: 768px) {\n .ds_task-list__task-status {\n font-size: 1rem;\n line-height: 1.5;\n }\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_task-list__task-status {\n outline: 2px solid currentColor !important;\n outline-offset: -2px !important;\n }\n}\n.ds_task-list__task-status--complete {\n background: #ffffff;\n color: #428542;\n border: 2px #428542 solid;\n padding: 0.125rem 1rem;\n}\n.ds_task-list-heading {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin-bottom: 1rem;\n font-weight: 700;\n display: inline-block;\n}\n@media (min-width: 768px) {\n .ds_task-list-heading {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_task-list-heading {\n margin-bottom: 1rem;\n }\n}\n.ds_task-list-intro {\n margin-bottom: 1rem;\n}\n@media (min-width: 768px) {\n .ds_task-list-intro {\n margin-bottom: 1rem;\n }\n}\n.ds_task-list-heading + .ds_task-list {\n margin-top: calc(0.5rem + -2px);\n}\n@media (min-width: 768px) {\n .ds_task-list-heading + .ds_task-list {\n margin-top: calc(0.5rem + -2px);\n }\n}\n\n.ds_task-list-group {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.ds_task-list-group__section, .ds_task-list-group__section:last-child {\n margin: 0;\n padding: 0;\n margin-bottom: 2rem;\n}\n@media (min-width: 768px) {\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\n margin-bottom: 2.5rem;\n }\n}\n@media (max-width: 479px) {\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\n margin-bottom: 2.5rem;\n }\n}\n@media (max-width: 479px) and (min-width: 768px) {\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\n margin-bottom: 3rem;\n }\n}\n.ds_task-list-group--ordered {\n list-style-position: inside;\n list-style-type: decimal;\n}\n.ds_task-list-group--ordered .ds_task-list-group__section::marker {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n .ds_task-list-group--ordered .ds_task-list-group__section::marker {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n\n.ds_task-list-status {\n margin-bottom: 2rem;\n}\n@media (min-width: 768px) {\n .ds_task-list-status {\n margin-bottom: 2.5rem;\n }\n}\n@media (max-width: 479px) {\n .ds_task-list-status {\n margin-bottom: 2.5rem;\n }\n}\n@media (max-width: 479px) and (min-width: 768px) {\n .ds_task-list-status {\n margin-bottom: 3rem;\n }\n}\n.ds_task-list-status > p {\n margin-bottom: 0.5rem;\n}\n@media (min-width: 768px) {\n .ds_task-list-status > p {\n margin-bottom: 0.5rem;\n }\n}\n.ds_task-list-status-heading {\n font-size: 1.1875rem;\n line-height: 1.2631578947;\n margin-bottom: 1rem;\n font-weight: 700;\n}\n@media (min-width: 768px) {\n .ds_task-list-status-heading {\n font-size: 1.375rem;\n line-height: 1.4545454545;\n }\n}\n@media (min-width: 768px) {\n .ds_task-list-status-heading {\n margin-bottom: 1rem;\n }\n}\n\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n /*\n * [1] This is a little hacky but it does serve to differentiate the \"complete\" status.\n * And happens to be green by default.\n */\n .ds_task-list__task-status--complete {\n color: GrayText;\n }\n}\n/*------------------------------------*\\\\\n #WARNING TEXT\n\\\\*------------------------------------*/\n.ds_warning-text {\n border: 1px solid currentColor;\n border-width: 1px 0;\n font-weight: 700;\n padding-left: 72px;\n padding-right: 16px;\n position: relative;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n padding-top: calc(1.5rem + -1px);\n padding-bottom: calc(1.5rem + -1px);\n}\n@media (min-width: 768px) {\n .ds_warning-text {\n margin-top: 2rem;\n }\n}\n@media (min-width: 768px) {\n .ds_warning-text {\n margin-bottom: 2rem;\n }\n}\n.ds_warning-text > :last-child {\n margin-bottom: 0;\n}\n@media (min-width: 768px) {\n .ds_warning-text {\n padding-top: calc(2rem + -1px);\n }\n}\n@media (min-width: 768px) {\n .ds_warning-text {\n padding-bottom: calc(2rem + -1px);\n }\n}\n.ds_warning-text:first-child {\n margin-top: 0;\n}\n\n.ds_warning-text__icon {\n background: #333333;\n border-radius: 50%;\n color: #ffffff;\n display: inline-block;\n height: 32px;\n font-size: 32px;\n font-weight: 700;\n left: 24px;\n line-height: 32px;\n position: absolute;\n text-align: center;\n top: 20px;\n width: 32px;\n}\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\n .ds_warning-text__icon {\n outline: 2px solid currentColor !important;\n outline-offset: -2px !important;\n }\n}\n.ds_warning-text__icon::before {\n content: \"!\";\n display: block;\n height: 28px;\n}\n\n.ds_warning-text__text > :last-child {\n margin-bottom: 0;\n}\n\n@media (min-width: 768px) {\n .ds_warning-text {\n padding-right: 72px;\n }\n .ds_warning-text__icon {\n top: 31px;\n }\n}\n\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@scottish-government/design-system/dist/css/design-system.css\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/focus/_focus.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/initial/normalize/_normalize.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/initial/reset/_reset.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/margins/_margins.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/spacing/_spacing.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/media-query/_media-query.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/abbr/_abbr.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/address/_address.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/body/_body.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/settings/colours/_colours.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/settings/type/_type.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/box-sizing/_box-sizing.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/headings/_headings.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/headings/_headings.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/hr/_hr.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/leader/_leader.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/links/_links.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/links/_links.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/high-contrast/_high-contrast.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/settings/transition/_transition.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/lists/_lists.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/last-child-no-margin/_last-child-no-margin.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/mark/_mark.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/placeholder/_placeholder.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/scrolling/_scrolling.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/core/small/_small.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/objects/break-word/_break-word.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/objects/layout/_layout.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/layout/_layout.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/settings/grid/_grid.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/objects/page/_page.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/objects/stack/_stack.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/objects/wrapper/_wrapper.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/utilities/breakpoint-check/_breakpoint-check.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/utilities/visibility/_visibility.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/visibility/_visibility.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/overrides/lists/_lists.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/overrides/margin/_margin.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/overrides/padding/_padding.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/overrides/spacing/_spacing.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/_all-forms.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/_form.settings.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/_form.mixins.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/_form.base.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/character-count/_character-count.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/checkbox/_checkbox.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/currency/_currency.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/error-summary/_error-summary.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/field-group/_field-group.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/hint-text/_hint-text.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/label/_label.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/prefilled-value-list/_prefilled-value-list.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/question/_question.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/radio/_radio.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/reveal-content/_reveal-content.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/select/_select.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/icons/_icons.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/forms/text-input/_text-input.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/button-sizing/_button-sizing.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/accordion/_accordion.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/article-aside/_article-aside.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/aspect-box/_aspect-box.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/autocomplete/_autocomplete.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/box-shadow/_box-shadow.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/back-link/_back-link.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/back-to-top/_back-to-top.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/breadcrumbs/_breadcrumbs.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/button/_button.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/button/_button-group.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/cookie-notification/_cookie-notification.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/callout/_callout.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/card/_card.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/category-header/_category-header.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/category-item/_category-item.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/category-lists/_category-lists.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/confirmation-message/_confirmation-message.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/contact-details/_contact-details.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/content-label/_content-label.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/contents-nav/_contents-nav.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/date-picker/_date-picker.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/details/_details.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/feature-header/_feature-header.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/file-download/_file-download.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/hide-this-page/_hide-this-page.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/icon/_icon.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/inset-text/_inset-text.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/link-item/_link-item.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/link-list/_link-list.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/metadata/_metadata.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/notification-banner/_notification-banner.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/notification-panel/_notification-panel.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/page-header/_page-header.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/pagination/_pagination.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/phase-banner/_phase-banner.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/search-results/_search-facets.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/search-results/_search-filters.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/search-results/_search-result.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/search-results/_search-results.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/sequential-navigation/_sequential-navigation.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/side-navigation/_side-navigation.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/site-navigation/_site-navigation.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/fancy-underscore/_fancy-underscore.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/site-branding/_site-branding.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/site-footer/_site-footer.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/site-header/_site-header.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/site-search/_site-search.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/skip-links/_skip-links.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/sort-options/_sort-options.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/step-navigation/_step-navigation.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/summary-list/_summary-list.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/base/helpers/first-child-no-margin/_first-child-no-margin.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/table/_table.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/tabs/_tabs.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/tag/_tag.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/task-list/_task-list.scss\",\"webpack://./node_modules/@scottish-government/design-system/src/components/warning-text/_warning-text.scss\"],\"names\":[],\"mappings\":\"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8DY,qBAAA;ESwCZ,gBH3EG;AXkcP;AM7cI;EObJ;ICAQ,kBAAA;IACA,yBAAA;Ed8dN;AACF;AMndI;EObJ;IRkEoB,mBAAA;ELkalB;AACF;;AajeA;ECEI,mBAAA;EACA,yBAAA;EToDY,mBAAA;ES8CZ,gBHjFG;AXodP;AM/dI;EOTJ;ICMQ,mBAAA;IACA,yBAAA;EdseN;AACF;AMreI;EOTJ;IR8DoB,mBAAA;ELoblB;AACF;AahfI;ERoDY,gBAAA;AL+bhB;AM7eI;EONA;IR2DgB,kBAAA;EL4blB;AACF;;AanfA;ECII,oBAAA;EACA,yBAAA;ET0CY,mBAAA;ESoDZ,gBHvFG;AX8eP;AMzfI;EODJ;ICQQ,mBAAA;IACA,yBAAA;EdsfN;AACF;AM/fI;EODJ;IRsDoB,mBAAA;EL8clB;AACF;AalgBI;ER4CY,kBAAA;ALydhB;AMvgBI;EOEA;IRmDgB,kBAAA;ELsdlB;AACF;;AargBA;ECMI,eAAA;EACA,gBAAA;ETgCY,mBAAA;ES0DZ,gBH7FG;AXwgBP;AMnhBI;EOOJ;ICUQ,oBAAA;IACA,yBAAA;EdsgBN;AACF;AMzhBI;EOOJ;IR8CoB,mBAAA;ELwelB;AACF;;AanhBA;ECYI,mBAAA;EACA,yBAAA;ETsBY,qBAAA;ESgEZ,gBHnGG;AX0hBP;AMriBI;EOWJ;ICgBQ,eAAA;IACA,gBAAA;Ed8gBN;AACF;AM3iBI;EOWJ;IR0CoB,qBAAA;EL0flB;AACF;;AetkBA;;uCAAA;AAKA;EACI,YAAA;EACA,6BAAA;EV6DY,kBAAA;EAAA,kCAAA;AL4gBhB;AM1jBI;ESjBJ;IVsEoB,gBAAA;ELygBlB;AACF;AM/jBI;ESjBJ;IVsEoB,gCAAA;EL8gBlB;AACF;;AgB1lBA;;uCAAA;AAIA;;EF4EI,oBAAA;EACA,yBAAA;ETbY,mBAAA;EW3DZ,gBLsBI;EKrBJ,iBAAA;AhB4lBJ;AMhlBI;EUlBJ;;IFgFQ,iBAAA;IACA,yBAAA;EduhBN;AACF;AMvlBI;EUlBJ;;IXuEoB,qBAAA;ELuiBlB;AACF;AM7lBI;EUlBJ;;IASQ,iBAAA;EhB2mBN;AACF;;AiBznBA;;uCAAA;AAIA;;ECUI,cRIwB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I,cAAA;ElC8sCV;AACF;AMxsCI;E4BFI;IACI,cAAA;ElC6sCV;AACF;AM7sCI;E4BII;IACI,cAAA;ElC4sCV;AACF;;AmCxuCA;;uCAAA;AAIA;ECDI,8BAAA;EACA,WAAA;EACA,gBAAA;EACA,6BAAA;EACA,UAAA;ApC4uCJ;;AmC3uCA;EACI,wBAAA;AnC8uCJ;;AqCvvCA;;uCAAA;AAIA;EACI,qBAAA;EACA,cAAA;ArCyvCJ;;AsC/vCA;;;uCAAA;AAKA;EjC+DgB,kBAAA;EAAA,qBAAA;ALosChB;AMlvCI;EgCjBJ;IjCsEoB,gBAAA;ELisClB;AACF;AMvvCI;EgCjBJ;IjCsEoB,mBAAA;ELssClB;AACF;;AsCzwCA;EjCyDgB,oBAAA;ALotChB;;AsCzwCA;EjCuDgB,wBAAA;ALstChB;;AsCzwCA;EjCmDgB,0BAAA;AL0tChB;;AsCzwCA;EjC+CgB,2BAAA;AL8tChB;;AsCzwCA;EjC2CgB,yBAAA;ALkuChB;;AsCzwCA;EjCuCgB,wBAAA;EAAA,2BAAA;ALuuChB;;AsCzwCA;EjCkCgB,yBAAA;EAAA,0BAAA;AL4uChB;;AuChzCA;;;uCAAA;AAKA;ElC6DgB,qBAAA;ALsvChB;;AuC/yCA;ElC2DgB,yBAAA;ALwvChB;;AuC/yCA;ElCuDgB,2BAAA;AL4vChB;;AuC/yCA;ElCmDgB,4BAAA;ALgwChB;;AuC/yCA;ElC+CgB,0BAAA;ALowChB;;AuC/yCA;ElC2CgB,yBAAA;EAAA,4BAAA;ALywChB;;AuC/yCA;ElCsCgB,0BAAA;EAAA,2BAAA;AL8wChB;;AwCt0CQ;EnCsDQ,oBAAA;ALoxChB;;AwCr0CY;EnCmDI,yBAAA;ALsxChB;;AwCz0CY;EnCmDI,0BAAA;AL0xChB;;AwC70CY;EnCmDI,wBAAA;AL8xChB;;AwCj1CY;EnCmDI,2BAAA;ALkyChB;;AwC11CQ;EnCsDQ,yBAAA;ALwyChB;AMp1CI;EkCVI;InC6DY,yBAAA;ELqyClB;AACF;;AwC91CY;EnCmDI,8BAAA;AL+yChB;AM71CI;EkCLQ;InC0DQ,8BAAA;EL4yClB;AACF;;AwCv2CY;EnCmDI,+BAAA;ALwzChB;AMt2CI;EkCLQ;InC0DQ,+BAAA;ELqzClB;AACF;;AwCh3CY;EnCmDI,6BAAA;ALi0ChB;AM/2CI;EkCLQ;InC0DQ,6BAAA;EL8zClB;AACF;;AwCz3CY;EnCmDI,gCAAA;AL00ChB;AMx3CI;EkCLQ;InC0DQ,gCAAA;ELu0ClB;AACF;;AwCv4CQ;EnCsDQ,uBAAA;ALq1ChB;AMj4CI;EkCVI;InC6DY,uBAAA;ELk1ClB;AACF;;AwC34CY;EnCmDI,4BAAA;AL41ChB;AM14CI;EkCLQ;InC0DQ,4BAAA;ELy1ClB;AACF;;AwCp5CY;EnCmDI,6BAAA;ALq2ChB;AMn5CI;EkCLQ;InC0DQ,6BAAA;ELk2ClB;AACF;;AwC75CY;EnCmDI,2BAAA;AL82ChB;AM55CI;EkCLQ;InC0DQ,2BAAA;EL22ClB;AACF;;AwCt6CY;EnCmDI,8BAAA;ALu3ChB;AMr6CI;EkCLQ;InC0DQ,8BAAA;ELo3ClB;AACF;;AwCp7CQ;EnCsDQ,yBAAA;ALk4ChB;AM96CI;EkCVI;InC6DY,yBAAA;EL+3ClB;AACF;;AwCx7CY;EnCmDI,8BAAA;ALy4ChB;AMv7CI;EkCLQ;InC0DQ,8BAAA;ELs4ClB;AACF;;AwCj8CY;EnCmDI,+BAAA;ALk5ChB;AMh8CI;EkCLQ;InC0DQ,+BAAA;EL+4ClB;AACF;;AwC18CY;EnCmDI,6BAAA;AL25ChB;AMz8CI;EkCLQ;InC0DQ,6BAAA;ELw5ClB;AACF;;AwCn9CY;EnCmDI,gCAAA;ALo6ChB;AMl9CI;EkCLQ;InC0DQ,gCAAA;ELi6ClB;AACF;;AwCj+CQ;EnCsDQ,yBAAA;AL+6ChB;AM39CI;EkCVI;InC6DY,uBAAA;EL46ClB;AACF;;AwCr+CY;EnCmDI,8BAAA;ALs7ChB;AMp+CI;EkCLQ;InC0DQ,4BAAA;ELm7ClB;AACF;;AwC9+CY;EnCmDI,+BAAA;AL+7ChB;AM7+CI;EkCLQ;InC0DQ,6BAAA;EL47ClB;AACF;;AwCv/CY;EnCmDI,6BAAA;ALw8ChB;AMt/CI;EkCLQ;InC0DQ,2BAAA;ELq8ClB;AACF;;AwChgDY;EnCmDI,gCAAA;ALi9ChB;AM//CI;EkCLQ;InC0DQ,8BAAA;EL88ClB;AACF;;AwC9gDQ;EnCsDQ,uBAAA;AL49ChB;AMxgDI;EkCVI;InC6DY,yBAAA;ELy9ClB;AACF;;AwClhDY;EnCmDI,4BAAA;ALm+ChB;AMjhDI;EkCLQ;InC0DQ,8BAAA;ELg+ClB;AACF;;AwC3hDY;EnCmDI,6BAAA;AL4+ChB;AM1hDI;EkCLQ;InC0DQ,+BAAA;ELy+ClB;AACF;;AwCpiDY;EnCmDI,2BAAA;ALq/ChB;AMniDI;EkCLQ;InC0DQ,6BAAA;ELk/ClB;AACF;;AwC7iDY;EnCmDI,8BAAA;AL8/ChB;AM5iDI;EkCLQ;InC0DQ,gCAAA;EL2/ClB;AACF;;AwC3jDQ;EnCsDQ,yBAAA;ALygDhB;AMrjDI;EkCVI;InC6DY,uBAAA;ELsgDlB;AACF;;AwC/jDY;EnCmDI,8BAAA;ALghDhB;AM9jDI;EkCLQ;InC0DQ,4BAAA;EL6gDlB;AACF;;AwCxkDY;EnCmDI,+BAAA;ALyhDhB;AMvkDI;EkCLQ;InC0DQ,6BAAA;ELshDlB;AACF;;AwCjlDY;EnCmDI,6BAAA;ALkiDhB;AMhlDI;EkCLQ;InC0DQ,2BAAA;EL+hDlB;AACF;;AwC1lDY;EnCmDI,gCAAA;AL2iDhB;AMzlDI;EkCLQ;InC0DQ,8BAAA;ELwiDlB;AACF;;AwCxmDQ;EnCsDQ,yBAAA;ALsjDhB;AMlmDI;EkCVI;InC6DY,yBAAA;ELmjDlB;AACF;;AwC5mDY;EnCmDI,8BAAA;AL6jDhB;AM3mDI;EkCLQ;InC0DQ,8BAAA;EL0jDlB;AACF;;AwCrnDY;EnCmDI,+BAAA;ALskDhB;AMpnDI;EkCLQ;InC0DQ,+BAAA;ELmkDlB;AACF;;AwC9nDY;EnCmDI,6BAAA;AL+kDhB;AM7nDI;EkCLQ;InC0DQ,6BAAA;EL4kDlB;AACF;;AwCvoDY;EnCmDI,gCAAA;ALwlDhB;AMtoDI;EkCLQ;InC0DQ,gCAAA;ELqlDlB;AACF;;AwCrpDQ;EnCsDQ,uBAAA;ALmmDhB;AM/oDI;EkCVI;InC6DY,uBAAA;ELgmDlB;AACF;;AwCzpDY;EnCmDI,4BAAA;AL0mDhB;AMxpDI;EkCLQ;InC0DQ,4BAAA;ELumDlB;AACF;;AwClqDY;EnCmDI,6BAAA;ALmnDhB;AMjqDI;EkCLQ;InC0DQ,6BAAA;ELgnDlB;AACF;;AwC3qDY;EnCmDI,2BAAA;AL4nDhB;AM1qDI;EkCLQ;InC0DQ,2BAAA;ELynDlB;AACF;;AwCprDY;EnCmDI,8BAAA;ALqoDhB;AMnrDI;EkCLQ;InC0DQ,8BAAA;ELkoDlB;AACF;;AwClsDQ;EnCsDQ,yBAAA;ALgpDhB;AM5rDI;EkCVI;InC6DY,yBAAA;EL6oDlB;AACF;;AwCtsDY;EnCmDI,8BAAA;ALupDhB;AMrsDI;EkCLQ;InC0DQ,8BAAA;ELopDlB;AACF;;AwC/sDY;EnCmDI,+BAAA;ALgqDhB;AM9sDI;EkCLQ;InC0DQ,+BAAA;EL6pDlB;AACF;;AwCxtDY;EnCmDI,6BAAA;ALyqDhB;AMvtDI;EkCLQ;InC0DQ,6BAAA;ELsqDlB;AACF;;AwCjuDY;EnCmDI,gCAAA;ALkrDhB;AMhuDI;EkCLQ;InC0DQ,gCAAA;EL+qDlB;AACF;;AwC/uDQ;EnCsDQ,qBAAA;AL6rDhB;;AwC9uDY;EnCmDI,0BAAA;AL+rDhB;;AwClvDY;EnCmDI,2BAAA;ALmsDhB;;AwCtvDY;EnCmDI,yBAAA;ALusDhB;;AwC1vDY;EnCmDI,4BAAA;AL2sDhB;;AwCnwDQ;EnCsDQ,0BAAA;ALitDhB;AM7vDI;EkCVI;InC6DY,0BAAA;EL8sDlB;AACF;;AwCvwDY;EnCmDI,+BAAA;ALwtDhB;AMtwDI;EkCLQ;InC0DQ,+BAAA;ELqtDlB;AACF;;AwChxDY;EnCmDI,gCAAA;ALiuDhB;AM/wDI;EkCLQ;InC0DQ,gCAAA;EL8tDlB;AACF;;AwCzxDY;EnCmDI,8BAAA;AL0uDhB;AMxxDI;EkCLQ;InC0DQ,8BAAA;ELuuDlB;AACF;;AwClyDY;EnCmDI,iCAAA;ALmvDhB;AMjyDI;EkCLQ;InC0DQ,iCAAA;ELgvDlB;AACF;;AwChzDQ;EnCsDQ,wBAAA;AL8vDhB;AM1yDI;EkCVI;InC6DY,wBAAA;EL2vDlB;AACF;;AwCpzDY;EnCmDI,6BAAA;ALqwDhB;AMnzDI;EkCLQ;InC0DQ,6BAAA;ELkwDlB;AACF;;AwC7zDY;EnCmDI,8BAAA;AL8wDhB;AM5zDI;EkCLQ;InC0DQ,8BAAA;EL2wDlB;AACF;;AwCt0DY;EnCmDI,4BAAA;ALuxDhB;AMr0DI;EkCLQ;InC0DQ,4BAAA;ELoxDlB;AACF;;AwC/0DY;EnCmDI,+BAAA;ALgyDhB;AM90DI;EkCLQ;InC0DQ,+BAAA;EL6xDlB;AACF;;AwC71DQ;EnCsDQ,0BAAA;AL2yDhB;AMv1DI;EkCVI;InC6DY,0BAAA;ELwyDlB;AACF;;AwCj2DY;EnCmDI,+BAAA;ALkzDhB;AMh2DI;EkCLQ;InC0DQ,+BAAA;EL+yDlB;AACF;;AwC12DY;EnCmDI,gCAAA;AL2zDhB;AMz2DI;EkCLQ;InC0DQ,gCAAA;ELwzDlB;AACF;;AwCn3DY;EnCmDI,8BAAA;ALo0DhB;AMl3DI;EkCLQ;InC0DQ,8BAAA;ELi0DlB;AACF;;AwC53DY;EnCmDI,iCAAA;AL60DhB;AM33DI;EkCLQ;InC0DQ,iCAAA;EL00DlB;AACF;;AwC14DQ;EnCsDQ,0BAAA;ALw1DhB;AMp4DI;EkCVI;InC6DY,wBAAA;ELq1DlB;AACF;;AwC94DY;EnCmDI,+BAAA;AL+1DhB;AM74DI;EkCLQ;InC0DQ,6BAAA;EL41DlB;AACF;;AwCv5DY;EnCmDI,gCAAA;ALw2DhB;AMt5DI;EkCLQ;InC0DQ,8BAAA;ELq2DlB;AACF;;AwCh6DY;EnCmDI,8BAAA;ALi3DhB;AM/5DI;EkCLQ;InC0DQ,4BAAA;EL82DlB;AACF;;AwCz6DY;EnCmDI,iCAAA;AL03DhB;AMx6DI;EkCLQ;InC0DQ,+BAAA;ELu3DlB;AACF;;AwCv7DQ;EnCsDQ,wBAAA;ALq4DhB;AMj7DI;EkCVI;InC6DY,0BAAA;ELk4DlB;AACF;;AwC37DY;EnCmDI,6BAAA;AL44DhB;AM17DI;EkCLQ;InC0DQ,+BAAA;ELy4DlB;AACF;;AwCp8DY;EnCmDI,8BAAA;ALq5DhB;AMn8DI;EkCLQ;InC0DQ,gCAAA;ELk5DlB;AACF;;AwC78DY;EnCmDI,4BAAA;AL85DhB;AM58DI;EkCLQ;InC0DQ,8BAAA;EL25DlB;AACF;;AwCt9DY;EnCmDI,+BAAA;ALu6DhB;AMr9DI;EkCLQ;InC0DQ,iCAAA;ELo6DlB;AACF;;AwCp+DQ;EnCsDQ,0BAAA;ALk7DhB;AM99DI;EkCVI;InC6DY,wBAAA;EL+6DlB;AACF;;AwCx+DY;EnCmDI,+BAAA;ALy7DhB;AMv+DI;EkCLQ;InC0DQ,6BAAA;ELs7DlB;AACF;;AwCj/DY;EnCmDI,gCAAA;ALk8DhB;AMh/DI;EkCLQ;InC0DQ,8BAAA;EL+7DlB;AACF;;AwC1/DY;EnCmDI,8BAAA;AL28DhB;AMz/DI;EkCLQ;InC0DQ,4BAAA;ELw8DlB;AACF;;AwCngEY;EnCmDI,iCAAA;ALo9DhB;AMlgEI;EkCLQ;InC0DQ,+BAAA;ELi9DlB;AACF;;AwCjhEQ;EnCsDQ,0BAAA;AL+9DhB;AM3gEI;EkCVI;InC6DY,0BAAA;EL49DlB;AACF;;AwCrhEY;EnCmDI,+BAAA;ALs+DhB;AMphEI;EkCLQ;InC0DQ,+BAAA;ELm+DlB;AACF;;AwC9hEY;EnCmDI,gCAAA;AL++DhB;AM7hEI;EkCLQ;InC0DQ,gCAAA;EL4+DlB;AACF;;AwCviEY;EnCmDI,8BAAA;ALw/DhB;AMtiEI;EkCLQ;InC0DQ,8BAAA;ELq/DlB;AACF;;AwChjEY;EnCmDI,iCAAA;ALigEhB;AM/iEI;EkCLQ;InC0DQ,iCAAA;EL8/DlB;AACF;;AwC9jEQ;EnCsDQ,wBAAA;AL4gEhB;AMxjEI;EkCVI;InC6DY,wBAAA;ELygElB;AACF;;AwClkEY;EnCmDI,6BAAA;ALmhEhB;AMjkEI;EkCLQ;InC0DQ,6BAAA;ELghElB;AACF;;AwC3kEY;EnCmDI,8BAAA;AL4hEhB;AM1kEI;EkCLQ;InC0DQ,8BAAA;ELyhElB;AACF;;AwCplEY;EnCmDI,4BAAA;ALqiEhB;AMnlEI;EkCLQ;InC0DQ,4BAAA;ELkiElB;AACF;;AwC7lEY;EnCmDI,+BAAA;AL8iEhB;AM5lEI;EkCLQ;InC0DQ,+BAAA;EL2iElB;AACF;;AwC3mEQ;EnCsDQ,0BAAA;ALyjEhB;AMrmEI;EkCVI;InC6DY,0BAAA;ELsjElB;AACF;;AwC/mEY;EnCmDI,+BAAA;ALgkEhB;AM9mEI;EkCLQ;InC0DQ,+BAAA;EL6jElB;AACF;;AwCxnEY;EnCmDI,g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0CZJ;I3CiEoB,mBAAA;EL81ElB;AACF;AsBz6EI;EACI,gBAAA;AtB26ER;AgD75EI;EACI,aAAA;AhD+5ER;AgD55EI;EACI,ctCkBgB;EsCjBhB,gBrCWD;EqCVC,qBAAA;EACA,cAAA;AhD85ER;AgD55EQ;EACI,ctCYY;AVk5ExB;AgD55EY;EACI,yBAxBe;EAyBf,cAxBI;EAyBJ,sBA1Be;AhDw7E/B;AgD35EY;EACI,ctCVY;AVu6E5B;AgDz5EQ;EACI,cAAA;AhD25EZ;;AiDp8EA;;uCAAA;AAOI;EACI,gBAAA;AjDm8ER;AiDj8EQ;EACI,gBAAA;AjDm8EZ;AiD/7EI;EACI,aAAA;EACA,mBAAA;EACA,SAAA;AjDi8ER;AiD97EQ;EACI,gBAAA;AjDg8EZ;AsBr9EI;EACI,gBAAA;AtBu9ER;;AkDz9EA;;uCAAA;AAIA;EACI,cxCoBwB;EwCnBxB,mBAAA;AlD29EJ;AkDz9EI;EACI,kBAAA;AlD29ER;;AmDp+EA;;uCAAA;AAIA;EACI,czCqBwB;EyCpBxB,qBAAA;EACA,gBxC0BG;EwCzBH,kBAAA;AnDs+EJ;;AoD9+EA;;uCAAA;AAMI;EACI,SAAA;E/C6DQ,qBAAA;E+C3DR,UAAA;ApD8+ER;AMj+EI;E8ChBA;I/CqEgB,qBAAA;ELg7ElB;AACF;AoDh/EI;EACI,SAAA;E/CuDQ,qBAAA;E+CrDR,UAAA;ApDk/ER;AM3+EI;E8CVA;I/C+DgB,qBAAA;EL07ElB;AACF;AMh/EI;E8CVA;IAMQ,aAAA;EpDw/EV;EoDt/EU;I/CgDI,mBAAA;ELy8Ed;AACF;AMx/EI;E8CFQ;I/CuDQ,mBAAA;ELu8ElB;AACF;;AqDnhFA;;uCAAA;AAIA;EhDgEgB,qBAAA;ALs9EhB;AMpgFI;E+ClBJ;IhDuEoB,qBAAA;ELm9ElB;AACF;AqDvhFI;EACI,kCAAA;EACA,qBAAA;ArDyhFR;AqDthFI;EhDuDY,mBAAA;ALk+EhB;AMhhFI;E+CTA;IhD8DgB,mBAAA;EL+9ElB;AACF;AqDzhFI;EACI,c3CoBgB;E2CnBhB,gB1CaD;AX8gFP;AsB9iFI;EACI,gBAAA;AtBgjFR;;AsDljFA;;uCAAA;AAIA;E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;EoFsHA;IACI,SAAA;E1FqlLN;E0FllLE;IACI,aAAA;E1FolLN;E0FhlLE;IACI,gBAAA;E1FklLN;E0FhlLM;IACI,WAAA;E1FklLV;E0F/kLM;IACI,kBAAA;E1FilLV;AACF;A0F7kLA;EpF5II;IoF+II;MACI,mBAAA;MACA,oBAAA;MACA,eAAA;MACA,WAAA;I1F8kLR;I0F5kLQ;MACI,gBAAA;MACA,kBAAA;I1F8kLZ;EACF;AACF;A0FzkLI;EACI,cAAA;A1F2kLR;;A2FhwLA;;uCAAA;AAIA;EtFgEgB,qBAAA;EAAA,mBAAA;EAAA,sBAAA;EAAA,oBAAA;EAAA,qBAAA;EsF1DZ,mBjF0BoB;EiFzBpB,cjFEwB;EiFDxB,kBAAA;A3FkwLJ;AMxvLI;EqFlBJ;ItFuEoB,qBAAA;ELusLlB;AACF;AM7vLI;EqFlBJ;ItFuEoB,iBAAA;EL4sLlB;AACF;AMlwLI;EqFlBJ;ItFuEoB,oBAAA;ELitLlB;AACF;AMvwLI;EqFlBJ;ItFuEoB,kBAAA;ELstLlB;AACF;AM5wLI;EqFlBJ;ItFuEoB,mBAAA;EL2tLlB;AACF;AMhwLI;EqFnCJ;IxEYQ,0CAAA;IACA,+BAAA;EnB2xLN;AACF;A2F5xLI;EtFmDY,kBAAA;AL4uLhB;AM1xLI;EqFLA;ItF0DgB,gBAAA;ELyuLlB;AACF;A2FhyLI;EACI,mBAAA;EACA,cjFGoB;AV+xL5B;A2F/xLI;E7ErBA,mBAAA;EACA,yBAAA;ET8DY,qBAAA;ESwCZ,gBH3EG;ENmCS,mBAAA;AL4vLhB;AM1yLI;EqFIA;I7EjBI,kBAAA;IACA,yBAAA;Ed2zLN;AACF;AMhzLI;EqFIA;ItFiDgB,mBAAA;EL+vLlB;AACF;AMrzLI;EqFIA;ItFiDgB,mBAAA;ELowLlB;AACF;AsB/0LI;EACI,gBAAA;AtBi1LR;A2F7yLI;E7E0CA,oBAAA;EACA,yBAAA;AdswLJ;AMj0LI;EqFgBA;I7E8CI,iBAAA;IACA,yBAAA;EduwLN;AACF;;A4F71LA;;;uCAAA;AAKA;EACI,mBAAA;A5F+1LJ;A4F71LI;EACI,gBAAA;A5F+1LR;A4F51LI;EACI,kBAAA;A5F81LR;AMr1LI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;AMr3MI;E2FII;I5FiDY,oBAAA;ELo0MlB;AACF;AiG72MQ;E5FiCQ,qBAAA;ESbZ,kBAAA;EACA,yBAAA;EmFlBQ,cvFbgB;EuFchB,gBtFNL;AXs3MP;AMj4MI;E2FaI;I5FwCY,qBAAA;ELg1MlB;AACF;AMt4MI;E2FaI;InFwBA,mBAAA;IACA,yBAAA;Edq2MN;AACF;AiGr3MI;EnFpBA,oBAAA;EACA,yBAAA;EmFqBI,oBAAA;E5FqBQ,gCAAA;ALo2MhB;AMl5MI;E2FuBA;InFhBI,mBAAA;IACA,yBAAA;Ed+4MN;AACF;AMx5MI;E2FuBA;I5F8BgB,gCAAA;ELu2MlB;AACF;AiGj4MQ;EACI,2BAAA;AjGm4MZ;AiG/3MI;EnFpBA,eAAA;EACA,gBAAA;EmFqBI,SAAA;E5FWQ,qBAAA;ALw3MhB;AMt6MI;E2FiCA;InFhBI,oBAAA;IACA,yBAAA;Edy5MN;AACF;AM56MI;E2FiCA;I5FoBgB,qBAAA;EL23MlB;AACF;AiG14MI;EnF6BA,eAAA;EACA,gBAAA;EmF5BI,SAAA;AjG64MR;AMt7MI;E2FuCA;InFiCI,oBAAA;IACA,yBAAA;Edk3MN;AACF;AiGh5MI;E5FEY,kBAAA;ESbZ,kBAAA;EACA,yBAAA;EmFaI,gBAAA;AjGm5MR;AMl8MI;E2F4CA;I5FSgB,kBAAA;ELi5MlB;AACF;AMv8MI;E2F4CA;InFPI,mBAAA;IACA,yBAAA;Eds6MN;AACF;AiG35MI;EACI,aAAA;AjG65MR;AiG15MI;E5FRY,mBAAA;ALq6MhB;AMn9MI;E2FsDA;I5FDgB,mBAAA;ELk6MlB;AACF;AiG95MI;EACI,WAAA;AjGg6MR;AM39MI;E2F0DA;IAIQ,YAAA;EjGi6MV;AACF;AiG95MI;EACI,SAAA;EACA,UAAA;E5FtBQ,gBAAA;EAAA,kBAAA;ESHZ,mBAAA;EACA,yBAAA;Ad47MJ;AMx+MI;E2FkEA;I5FbgB,gBAAA;ELu7MlB;AACF;AM7+MI;E2FkEA;I5FbgB,kBAAA;EL47MlB;AACF;AMl/MI;E2FkEA;InFnBI,eAAA;IACA,gBAAA;Edu8MN;AACF;AiG/6MQ;EACI,cvFvEgB;EuFwEhB,SAAA;EAC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;EACI,SAAA;E9GsBI,kBAAA;AL4vRhB;AM1yRI;E6GuBI;I9G8BY,kBAAA;ELyvRlB;AACF;AmHlxRQ;ErGcJ,mBAAA;EACA,yBAAA;EqGZQ,yBzG/BgB;EyGgChB,gBxGtBL;EwGuBK,qBAAA;EACA,mBAAA;AnHoxRZ;AMvzRI;E6G6BI;IrGkBA,eAAA;IACA,gBAAA;Ed4wRN;AACF;AM5yRI;E6GYI;IhGnCA,0CAAA;IACA,+BAAA;EnBu0RN;AACF;AmH9xRY;EACI,mBzG/CY;EyGgDZ,czGzBQ;EyG0BR,yBAAA;EACA,sBAAA;AnHgyRhB;AmH3xRI;ErG3CA,oBAAA;EACA,yBAAA;ET0CY,mBAAA;ESoDZ,gBHvFG;EwGqCC,qBAAA;AnHgyRR;AMh1RI;E6G8CA;IrGvCI,mBAAA;IACA,yBAAA;Ed60RN;AACF;AMt1RI;E6G8CA;I9GOgB,mBAAA;ELqyRlB;AACF;AmHxyRI;E9GLY,mBAAA;ALgzRhB;AM91RI;E6GmDA;I9GEgB,mBAAA;EL6yRlB;AACF;AmHvyRI;E9GdY,+BAAA;ALwzRhB;AMt2RI;E6G4DA;I9GPgB,+BAAA;ELqzRlB;AACF;;AmH1yRA;EACI,qBAAA;EACA,SAAA;EACA,UAAA;AnH6yRJ;AmH3yRI;EAEI,SAAA;EACA,UAAA;E9G3BQ,mBAAA;ALw0RhB;AMt3RI;E6GsEA;I9GjBgB,qBAAA;ELq0RlB;AACF;AM33RI;E6GsEA;I9GxBY,qBAAA;ELi1Rd;AACF;AMh4RI;E6GsEA;I9GjBgB,mBAAA;EL+0RlB;AACF;AmHpzRI;EACI,2BAAA;EACA,wBAAA;AnHszRR;AmHpzRQ;ErGlFJ,oBAAA;EACA,yBAAA;EqGmFQ,gBxG5EL;AXm4RP;AM94RI;E6GqFI;IrG9EA,mBAAA;IACA,yBAAA;Ed24RN;AACF;;AmHxzRA;E9G9CgB,mBAAA;AL02RhB;AMx5RI;E6G4FJ;I9GvCoB,qBAAA;ELu2RlB;AACF;AM75RI;E6G4FJ;I9G9CgB,qBAAA;ELm3Rd;AACF;AMl6RI;E6G4FJ;I9GvCoB,mBAAA;ELi3RlB;AACF;AmHp0RI;E9GrDY,qBAAA;AL43RhB;AM16RI;E6GmGA;I9G9CgB,qBAAA;ELy3RlB;AACF;AmHx0RI;ErGpGA,oBAAA;EACA,yBAAA;ET0CY,mBAAA;ESoDZ,gBHvFG;AX06RP;AMr7RI;E6GuGA;IrGhGI,mBAAA;IACA,yBAAA;Edk7RN;AACF;AM37RI;E6GuGA;I9GlDgB,mBAAA;EL04RlB;AACF;;AM/6RI;E6G8FA;;;IAAA;EAIA;IACI,eAAA;EnHq1RN;AACF;AoHh+RA;;uCAAA;AAKA;EACI,8BAAA;EACA,mBAAA;EACA,gBzGyBG;EyGxBH,kBAAA;EACA,mBAAA;EACA,kBAAA;E/GyDY,kBAAA;EAAA,qBAAA;EAAA,gCAAA;EAAA,mCAAA;AL26RhB;AMz9RI;E8GjBJ;I/GsEoB,gBAAA;ELw6RlB;AACF;AM99RI;E8GjBJ;I/GsEoB,mBAAA;EL66RlB;AACF;AsBx/RI;EACI,gBAAA;AtB0/RR;AMt+RI;E8GjBJ;I/GsEoB,8BAAA;ELq7RlB;AACF;AM3+RI;E8GjBJ;I/GsEoB,iCAAA;EL07RlB;AACF;AoHp/RI;EACI,aAAA;ApHs/RR;;AoHl/RA;EAII,mB1GDwB;E0GExB,kBAAA;EACA,c1GhBwB;E0GiBxB,qBAAA;EACA,YAPyB;EAQzB,eARyB;EASzB,gBAAA;EACA,UAAA;EACA,iBAXyB;EAYzB,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,WAfyB;ApHigS7B;AMl/RI;E8GhBJ;IjGPQ,0CAAA;IACA,+BAAA;EnB6gSN;AACF;AoHt/RI;EACI,YAAA;EACA,cAAA;EACA,YAAA;ApHw/RR;;AsBniSI;EACI,gBAAA;AtBsiSR;;AMlhSI;E8G+BA;IACI,mBAAA;EpHu/RN;EoHp/RE;IACI,SAAA;EpHs/RN;AACF\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/*------------------------------------*\\\\\\n FOCUS\\n Default focus indicator\\n\\\\*------------------------------------*/\\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\\n/**\\n * 1. Set default font family to sans-serif.\\n * 2. Prevent iOS and IE text size adjust after device orientation change,\\n * without disabling user zoom.\\n */\\nhtml {\\n font-family: sans-serif; /* 1 */\\n -ms-text-size-adjust: 100%; /* 2 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/**\\n * Remove default margin.\\n */\\nbody {\\n margin: 0;\\n}\\n\\n/* HTML5 display definitions\\n ========================================================================== */\\n/**\\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\\n * and Firefox.\\n * Correct `block` display not defined for `main` in IE 11.\\n */\\narticle,\\naside,\\ndetails,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nmenu,\\nnav,\\nsection,\\nsummary {\\n display: block;\\n}\\n\\n/**\\n * 1. Correct `inline-block` display not defined in IE 8/9.\\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\\n */\\naudio,\\ncanvas,\\nprogress,\\nvideo {\\n display: inline-block; /* 1 */\\n vertical-align: baseline; /* 2 */\\n}\\n\\n/**\\n * Prevent modern browsers from displaying `audio` without controls.\\n * Remove excess height in iOS 5 devices.\\n */\\naudio:not([controls]) {\\n display: none;\\n height: 0;\\n}\\n\\n/**\\n * Address `[hidden]` styling not present in IE 8/9/10.\\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\\n */\\n[hidden],\\ntemplate {\\n display: none;\\n}\\n\\n/* Links\\n ========================================================================== */\\n/**\\n * Remove the gray background color from active links in IE 10.\\n */\\na {\\n background-color: transparent;\\n}\\n\\n/**\\n * Improve readability of focused elements when they are also in an\\n * active/hover state.\\n */\\na:active,\\na:hover {\\n outline: 0;\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n/**\\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\\n */\\nabbr {\\n text-decoration: none;\\n}\\n\\n/**\\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\\n */\\nb,\\nstrong {\\n font-weight: bold;\\n}\\n\\n/**\\n * Address styling not present in Safari and Chrome.\\n */\\ndfn {\\n font-style: italic;\\n}\\n\\n/**\\n * Address variable `h1` font-size and margin within `section` and `article`\\n * contexts in Firefox 4+, Safari, and Chrome.\\n */\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/**\\n * Address inconsistent and variable font size in all browsers.\\n */\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\\n */\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n/**\\n * Remove border when inside `a` element in IE 8/9/10.\\n */\\nimg {\\n border: 0;\\n}\\n\\n/**\\n * Correct overflow not hidden in IE 9/10/11.\\n */\\nsvg:not(:root) {\\n overflow: hidden;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n/**\\n * Address margin not present in IE 8/9 and Safari.\\n */\\nfigure {\\n margin: 1em 40px;\\n}\\n\\n/**\\n * Address differences between Firefox and other browsers.\\n */\\nhr {\\n box-sizing: content-box;\\n height: 0;\\n}\\n\\n/**\\n * Contain overflow in all browsers.\\n */\\npre {\\n overflow: auto;\\n}\\n\\n/**\\n * Address odd `em`-unit font size rendering in all browsers.\\n */\\ncode,\\nkbd,\\npre,\\nsamp {\\n font-family: monospace, monospace;\\n font-size: 1em;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n/**\\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\\n * styling of `select`, unless a `border` property is set.\\n */\\n/**\\n * 1. Correct color not being inherited.\\n * Known issue: affects color of disabled elements.\\n * 2. Correct font properties not being inherited.\\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\\n */\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n color: inherit; /* 1 */\\n font: inherit; /* 2 */\\n margin: 0; /* 3 */\\n}\\n\\n/**\\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\\n */\\nbutton {\\n overflow: visible;\\n}\\n\\n/**\\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\\n * All other form control elements do not inherit `text-transform` values.\\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\\n * Correct `select` style inheritance in Firefox.\\n */\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\n/**\\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\\n * and `video` controls.\\n * 2. Correct inability to style clickable `input` types in iOS.\\n * 3. Improve usability and consistency of cursor style between image-type\\n * `input` and others.\\n */\\nbutton,\\nhtml input[type=button],\\ninput[type=reset],\\ninput[type=submit] {\\n -webkit-appearance: button; /* 2 */\\n cursor: pointer; /* 3 */\\n}\\n\\n/**\\n * Re-set default cursor for disabled elements.\\n */\\nbutton[disabled],\\nhtml input[disabled] {\\n cursor: default;\\n}\\n\\n/**\\n * Remove inner padding and border in Firefox 4+.\\n */\\nbutton::-moz-focus-inner,\\ninput::-moz-focus-inner {\\n border: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\\n * the UA stylesheet.\\n */\\ninput {\\n line-height: normal;\\n}\\n\\n/**\\n * It's recommended that you don't attempt to style these elements.\\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\\n *\\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\\n * 2. Remove excess padding in IE 8/9/10.\\n */\\ninput[type=checkbox],\\ninput[type=radio] {\\n box-sizing: border-box; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\\n * `font-size` values of the `input`, it causes the cursor style of the\\n * decrement button to change from `default` to `text`.\\n */\\ninput[type=number]::-webkit-inner-spin-button,\\ninput[type=number]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * Define consistent border, margin, and padding.\\n */\\nfieldset {\\n border: 1px solid #c0c0c0;\\n margin: 0 2px;\\n padding: 0.35em 0.625em 0.75em;\\n}\\n\\n/**\\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\\n */\\nlegend {\\n border: 0; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Remove default vertical scrollbar in IE 8/9/10/11.\\n */\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * Don't inherit the `font-weight` (applied by a rule above).\\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\\n */\\noptgroup {\\n font-weight: bold;\\n}\\n\\n/* Tables\\n ========================================================================== */\\n/**\\n * Remove most spacing between table cells.\\n */\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\ntd,\\nth {\\n padding: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n RESET (INUITCSS)\\n\\\\*------------------------------------*/\\n/**\\n * As well as using normalize.css, it is often advantageous to remove all\\n * margins from certain elements.\\n */\\nbody,\\nh1, h2, h3, h4, h5, h6,\\np, blockquote, pre,\\ndl, dd, ol, ul,\\nform, fieldset, legend,\\nfigure,\\ntable, th, td, caption,\\nhr {\\n margin: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Give a help cursor to elements that give extra info on `:hover`.\\n */\\nabbr[title],\\ndfn[title] {\\n cursor: help;\\n}\\n\\n/**\\n * Remove underlines from potentially troublesome elements.\\n */\\nu,\\nins {\\n text-decoration: none;\\n}\\n\\n/**\\n * Apply faux underlines to inserted text via `border-bottom`.\\n */\\nins {\\n border-bottom: 1px solid;\\n}\\n\\n/*------------------------------------*\\\\\\n BASIC MARGINS\\n\\\\*------------------------------------*/\\nh1, h2, h3, h4, h5, h6,\\nul, ol, dl,\\nblockquote, p, address,\\ntable, figure,\\npre {\\n margin-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n h1, h2, h3, h4, h5, h6,\\n ul, ol, dl,\\n blockquote, p, address,\\n table, figure,\\n pre {\\n margin-bottom: 1rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n ABBREVIATIONS\\n Improved display of abbreviation styling with better readability than browser default\\n\\\\*------------------------------------*/\\nabbr[title], acronym[title] {\\n text-decoration: underline dotted;\\n text-decoration-thickness: 1px;\\n text-underline-offset: 1px;\\n}\\n\\n/*------------------------------------*\\\\\\n ADDRESS\\n\\\\*------------------------------------*/\\naddress {\\n font-style: normal;\\n}\\n\\n/*------------------------------------*\\\\\\n BODY\\n\\\\*------------------------------------*/\\nbody {\\n background: #ffffff;\\n color: #333333;\\n font-family: Roboto, \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n font-size: 1rem;\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n line-height: 1.5;\\n margin: 0;\\n text-rendering: optimizeLegibility;\\n}\\n\\n@media (min-width: 768px) {\\n body {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n/*------------------------------------*\\\\\\n BOX-SIZING (INUITCSS)\\n\\\\*------------------------------------*/\\n/**\\n * Set the global `box-sizing` state to `border-box`.\\n *\\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\\n * paulirish.com/2012/box-sizing-border-box-ftw\\n */\\nhtml {\\n box-sizing: border-box;\\n}\\n\\n*, *::before, *::after {\\n box-sizing: inherit;\\n}\\n\\n/*------------------------------------*\\\\\\n HEADINGS\\n\\\\*------------------------------------*/\\nh1, .ds_h1, .alpha {\\n font-size: 1.875rem;\\n line-height: 1.3333333333;\\n margin-bottom: 1.5rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n h1, .ds_h1, .alpha {\\n font-size: 2.75rem;\\n line-height: 1.2727272727;\\n }\\n}\\n@media (min-width: 768px) {\\n h1, .ds_h1, .alpha {\\n margin-bottom: 2rem;\\n }\\n}\\n\\nh2, .ds_h2, .beta {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n h2, .ds_h2, .beta {\\n font-size: 1.875rem;\\n line-height: 1.3333333333;\\n }\\n}\\n@media (min-width: 768px) {\\n h2, .ds_h2, .beta {\\n margin-bottom: 1rem;\\n }\\n}\\nh2:not(:first-child), .ds_h2:not(:first-child), .beta:not(:first-child) {\\n margin-top: 2rem;\\n}\\n@media (min-width: 768px) {\\n h2:not(:first-child), .ds_h2:not(:first-child), .beta:not(:first-child) {\\n margin-top: 2.5rem;\\n }\\n}\\n\\nh3, .ds_h3, .gamma {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n h3, .ds_h3, .gamma {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n h3, .ds_h3, .gamma {\\n margin-bottom: 1rem;\\n }\\n}\\nh3:not(:first-child), .ds_h3:not(:first-child), .gamma:not(:first-child) {\\n margin-top: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n h3:not(:first-child), .ds_h3:not(:first-child), .gamma:not(:first-child) {\\n margin-top: 1.5rem;\\n }\\n}\\n\\nh4, .ds_h4, .delta {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n h4, .ds_h4, .delta {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (min-width: 768px) {\\n h4, .ds_h4, .delta {\\n margin-bottom: 1rem;\\n }\\n}\\n\\nh5, .ds_h5, .epsilon {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin-bottom: 0.5rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n h5, .ds_h5, .epsilon {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n h5, .ds_h5, .epsilon {\\n margin-bottom: 0.5rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n HORIZONTAL RULE\\n\\\\*------------------------------------*/\\nhr {\\n border: none;\\n border-top: 1px solid #b3b3b3;\\n margin-top: 1.5rem;\\n margin-bottom: calc(1.5rem + -1px);\\n}\\n@media (min-width: 768px) {\\n hr {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n hr {\\n margin-bottom: calc(2rem + -1px);\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n LEADER\\n\\\\*------------------------------------*/\\n.ds_leader,\\n.ds_leader-first-paragraph > p:first-child {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n margin-bottom: 2rem;\\n font-weight: 300;\\n line-height: 32px;\\n}\\n@media (min-width: 768px) {\\n .ds_leader,\\n .ds_leader-first-paragraph > p:first-child {\\n font-size: 1.5rem;\\n line-height: 1.6666666667;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_leader,\\n .ds_leader-first-paragraph > p:first-child {\\n margin-bottom: 2.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_leader,\\n .ds_leader-first-paragraph > p:first-child {\\n line-height: 40px;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n LINKS\\n\\\\*------------------------------------*/\\na,\\n.ds_link {\\n color: #0065bd;\\n text-decoration: underline;\\n outline: 0px solid transparent;\\n text-underline-offset: 1px;\\n transition: color 0.2s, background-color 0.2s, outline-color 0.2s;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n a,\\n .ds_link {\\n color: LinkText;\\n }\\n a:hover, a:focus,\\n .ds_link:hover,\\n .ds_link:focus {\\n color: LinkText;\\n }\\n}\\na:hover,\\n.ds_link:hover {\\n background-color: #d9eeff;\\n color: #00437d;\\n outline: 2px solid #d9eeff;\\n transition-duration: 0.2s;\\n}\\na:focus,\\n.ds_link:focus {\\n outline: 2px solid #fdd522;\\n outline-offset: 0;\\n background-color: #fdd522;\\n box-shadow: -2px 5px #333333, 2px 5px #333333;\\n color: #333333;\\n text-decoration: none;\\n transition-duration: 0s;\\n}\\na > svg,\\n.ds_link > svg {\\n fill: currentColor;\\n}\\n\\n.ds_link {\\n background: transparent;\\n border: 0;\\n display: inline;\\n font-size: inherit;\\n font-weight: inherit;\\n line-height: initial;\\n margin: 0;\\n min-height: 0;\\n min-width: 0;\\n padding: 0;\\n text-align: left;\\n}\\n\\n.ds_reversed a,\\n.ds_reversed .ds_link {\\n color: currentColor;\\n}\\n.ds_reversed a:focus,\\n.ds_reversed .ds_link:focus {\\n color: #333333;\\n}\\n.ds_reversed a:hover:not(:focus),\\n.ds_reversed .ds_link:hover:not(:focus) {\\n background-color: transparent;\\n color: currentColor;\\n outline-color: transparent;\\n}\\n\\na[disabled] {\\n pointer-events: none;\\n}\\n\\nh1 a, h2 a, h3 a, h4 a {\\n text-decoration: none;\\n}\\nh1 a:hover:not(:focus), h2 a:hover:not(:focus), h3 a:hover:not(:focus), h4 a:hover:not(:focus) {\\n text-decoration: underline;\\n}\\n\\n/*------------------------------------*\\\\\\n LISTS\\n\\\\*------------------------------------*/\\nul,\\nol,\\ndd {\\n margin-left: 1.25rem;\\n}\\nul > :last-child,\\nol > :last-child,\\ndd > :last-child {\\n margin-bottom: 0;\\n}\\n\\ndd,\\nul ul,\\nol ol,\\nol ul,\\nul ol {\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n dd,\\n ul ul,\\n ol ol,\\n ol ul,\\n ul ol {\\n margin-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n dd,\\n ul ul,\\n ol ol,\\n ol ul,\\n ul ol {\\n margin-bottom: 0.5rem;\\n }\\n}\\n\\nli {\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n li {\\n margin-bottom: 0.5rem;\\n }\\n}\\n\\ndt {\\n font-weight: 700;\\n}\\n\\nul {\\n list-style-type: disc;\\n}\\n\\nol {\\n list-style-type: numeric;\\n margin-left: 1.5rem;\\n}\\n\\n/*------------------------------------*\\\\\\n MARKED TEXT\\n\\\\*------------------------------------*/\\nmark {\\n background-color: inherit;\\n color: inherit;\\n font-weight: 700;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n mark {\\n background-color: Mark;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n PLACEHOLDER TEXT\\n\\\\*------------------------------------*/\\n::placeholder {\\n color: #727272;\\n}\\n\\n/*------------------------------------*\\\\\\n SCROLL BEHAVIOUR\\n\\\\*------------------------------------*/\\nhtml,\\nbody {\\n scroll-behavior: smooth;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n html,\\n body {\\n scroll-behavior: auto;\\n }\\n}\\n/*------------------------------------*\\\\\\n SMALL\\n\\\\*------------------------------------*/\\nsmall,\\n.ds_small {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n}\\n@media (min-width: 768px) {\\n small,\\n .ds_small {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n\\n.ds_tiny {\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n}\\n@media (min-width: 768px) {\\n .ds_tiny {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n BREAK WORD\\n\\\\*------------------------------------*/\\n.ds_break-word {\\n overflow-wrap: break-word;\\n}\\n\\n/*------------------------------------*\\\\\\n LAYOUT\\n\\\\*------------------------------------*/\\n.ds_layout {\\n margin-right: -32px;\\n overflow: hidden;\\n margin-bottom: 96px;\\n}\\n.ds_layout > * {\\n margin-right: 32px;\\n}\\n@supports (display: grid) {\\n .ds_layout {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_layout > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n.ds_layout__content img, .ds_layout__partner img {\\n max-width: 100%;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_layout__header {\\n clear: left;\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout__partner {\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_layout__navigation {\\n clear: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout__sidebar {\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_layout__content {\\n clear: left;\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout__list {\\n clear: left;\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout__footer {\\n clear: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout__feedback {\\n clear: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout--category-list .ds_layout__grid {\\n clear: left;\\n float: left;\\n width: calc(100% - 32px);\\n }\\n .ds_layout--search-results--filters .ds_layout__sidebar {\\n clear: left;\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_layout--search-results--filters .ds_layout__list {\\n clear: none;\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout--search-results--filters .ds_layout__feedback {\\n clear: left;\\n margin-left: 33.3333333333%;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout--search-results-with-sidebar .ds_layout__sidebar {\\n clear: left;\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_layout--search-results-with-sidebar .ds_layout__content {\\n clear: none;\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_layout--search-results-with-sidebar .ds_layout__feedback {\\n clear: left;\\n margin-left: 33.3333333333%;\\n width: calc(66.6666666667% - 32px);\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_layout--article .ds_layout__partner {\\n float: left;\\n margin-left: 8.3333333333%;\\n width: calc(25% - 32px);\\n }\\n .ds_layout--article .ds_layout__sidebar {\\n float: left;\\n margin-left: 8.3333333333%;\\n width: calc(25% - 32px);\\n }\\n .ds_layout--guide .ds_layout__partner {\\n float: left;\\n margin-left: 8.3333333333%;\\n width: calc(25% - 32px);\\n }\\n .ds_layout--guide .ds_layout__sidebar {\\n float: left;\\n margin-left: 8.3333333333%;\\n width: calc(25% - 32px);\\n }\\n}\\n@supports (display: grid) {\\n /**\\n * GRID KEY\\n * c: content\\n * f: feedback\\n * h: header\\n * l: list (e.g. category items, search results)\\n * g: grid\\n * n: navigation (e.g. subpages of a publication or guide)\\n * p: partner branding\\n * s: sidebar\\n */\\n body .ds_layout > *[class] {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto;\\n }\\n .ds_layout {\\n grid-template-columns: repeat(2, 1fr);\\n grid-template-rows: auto 1fr;\\n grid-template-areas: \\\"h h\\\" \\\"p p\\\" \\\"n n\\\" \\\"c c\\\" \\\"s s\\\" \\\"f f\\\";\\n margin-right: 0;\\n margin-bottom: 0;\\n }\\n .ds_layout__content {\\n grid-area: c;\\n }\\n .ds_layout__footer {\\n grid-area: z;\\n }\\n .ds_layout__feedback {\\n grid-area: f;\\n }\\n .ds_layout__header {\\n grid-area: h;\\n }\\n .ds_layout__list {\\n grid-area: l;\\n }\\n .ds_layout__grid {\\n grid-area: g;\\n }\\n .ds_layout__navigation {\\n grid-area: n;\\n }\\n .ds_layout__partner {\\n grid-area: p;\\n align-self: start;\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n }\\n @media (min-width: 768px) {\\n .ds_layout__partner {\\n margin-top: 2rem;\\n }\\n }\\n @media (min-width: 768px) {\\n .ds_layout__partner {\\n margin-bottom: 2rem;\\n }\\n }\\n .ds_layout__sidebar {\\n grid-area: s;\\n }\\n .ds_layout--category-list {\\n grid-template-areas: \\\"h h\\\" \\\"c c\\\" \\\"l l\\\" \\\"g g\\\" \\\"f f\\\";\\n }\\n .ds_layout--guide {\\n grid-template-areas: \\\"h h\\\" \\\"p p\\\" \\\"n n\\\" \\\"c c\\\" \\\"s s\\\" \\\"f f\\\";\\n }\\n .ds_layout--search-results {\\n grid-template-areas: \\\"h h\\\" \\\"n n\\\" \\\"c c\\\" \\\"l l\\\" \\\"f f\\\";\\n }\\n .ds_layout--search-results--filters {\\n grid-template-areas: \\\"h h\\\" \\\"c c\\\" \\\"s s\\\" \\\"l l\\\" \\\"f f\\\";\\n }\\n .ds_layout--search-results-with-sidebar {\\n grid-template-areas: \\\"h h\\\" \\\"n n\\\" \\\"s s\\\" \\\"c c\\\" \\\"f f\\\";\\n }\\n .ds_layout--question-page {\\n grid-template-areas: \\\"h h\\\" \\\"p p\\\" \\\"n n\\\" \\\"c c\\\" \\\"z z\\\" \\\"s s\\\" \\\"f f\\\";\\n }\\n @media (min-width: 480px) {\\n .ds_layout {\\n grid-template-columns: repeat(6, 1fr);\\n grid-template-areas: \\\"h h h h h h\\\" \\\"p p p p p p\\\" \\\"n n n n n n\\\" \\\"c c c c c c\\\" \\\"s s s s s s\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--category-list {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"c c c c c c\\\" \\\"l l l l l l\\\" \\\"g g g g g g\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--guide {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"p p p p p p\\\" \\\"n n n n n n\\\" \\\"c c c c c c\\\" \\\"s s s s s s\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--search-results {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"n n n n n n\\\" \\\"c c c c c c\\\" \\\"l l l l l l\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--search-results--filters {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"c c c c c c\\\" \\\"s s s s s s\\\" \\\"l l l l l l\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--search-results-with-sidebar {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"n n n n n n\\\" \\\"s s s s s s\\\" \\\"c c c c c c\\\" \\\"f f f f f f\\\";\\n }\\n .ds_layout--question-page {\\n grid-template-areas: \\\"h h h h h h\\\" \\\"p p p p p p\\\" \\\"n n n n n n\\\" \\\"c c c c c c\\\" \\\"z z z z z z\\\" \\\"s s s s s s\\\" \\\"f f f f f f\\\";\\n }\\n }\\n @media (min-width: 768px) {\\n .ds_layout {\\n grid-template-areas: \\\"h h h h h h h h p p p p\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c s s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n grid-template-columns: repeat(12, 1fr);\\n }\\n .ds_layout--article {\\n grid-template-areas: \\\"h h h h h h h h p p p p\\\" \\\"c c c c c c c c s s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--guide {\\n grid-template-areas: \\\"h h h h h h h h p p p p\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c s s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--category-list {\\n grid-template-areas: \\\"h h h h h h h h h h h h\\\" \\\"c c c c c c c c c c c c\\\" \\\"l l l l l l l l . . . .\\\" \\\"g g g g g g g g g g g g\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--search-results {\\n grid-template-areas: \\\"h h h h h h h h . . . .\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c . . . .\\\" \\\"l l l l l l l l . . . .\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--search-results--filters {\\n grid-template-areas: \\\"h h h h h h h h . . . .\\\" \\\"c c c c c c c c . . . .\\\" \\\"s s s s l l l l l l l l\\\" \\\". . . . f f f f f f f f\\\";\\n }\\n .ds_layout--search-results-with-sidebar {\\n grid-template-areas: \\\"h h h h h h h h . . . .\\\" \\\"n n n n n n n n . . . .\\\" \\\"s s s s c c c c c c c c\\\" \\\". . . . f f f f f f f f\\\";\\n }\\n .ds_layout--question-page {\\n grid-template-areas: \\\"h h h h h h h h p p p p\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c s s s s\\\" \\\"z z z z z z z z s s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n }\\n @media (min-width: 992px) {\\n .ds_layout--article {\\n grid-template-areas: \\\"h h h h h h h h . p p p\\\" \\\"c c c c c c c c . s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--guide {\\n grid-template-areas: \\\"h h h h h h h h . p p p\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c . s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n .ds_layout--question-page {\\n grid-template-areas: \\\"h h h h h h h h . p p p\\\" \\\"n n n n n n n n . . . .\\\" \\\"c c c c c c c c . s s s\\\" \\\"z z z z z z z z . s s s\\\" \\\"f f f f f f f f . . . .\\\";\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n PAGE SETUP\\n anchor footer to bottom of the viewport on short pages\\n\\\\*------------------------------------*/\\nhtml {\\n min-height: 100%;\\n position: relative;\\n}\\n\\n.ds_page {\\n min-height: calc(100vh - 360px);\\n margin-bottom: 360px;\\n}\\n\\n.ds_site-footer {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n@supports (display: grid) {\\n .ds_page {\\n display: grid;\\n margin-bottom: 0;\\n min-height: 100vh;\\n grid-template: \\\"page-top\\\" auto \\\"page-middle\\\" 1fr \\\"page-bottom\\\" auto;\\n }\\n .ds_page__top {\\n grid-area: page-top;\\n }\\n .ds_page__middle {\\n grid-area: page-middle;\\n }\\n .ds_page__bottom {\\n grid-area: page-bottom;\\n }\\n .ds_site-footer {\\n position: static;\\n }\\n}\\n.ds_page__middle {\\n display: grid;\\n grid-template-rows: auto 1fr;\\n padding-bottom: 4rem;\\n position: relative;\\n}\\n\\n/*------------------------------------*\\\\\\n PRE FOOTER BACKGROUND\\n for when a block immediately preceding the footer has a non-white background\\n\\\\*------------------------------------*/\\n.ds_page__middle:has(.ds_pre-footer-background) {\\n padding-bottom: 0;\\n}\\n\\n.ds_page__middle.js-pre-footer-background {\\n padding-bottom: 0;\\n}\\n\\n.ds_pre-footer-background {\\n padding-bottom: 4rem;\\n}\\n\\n/*------------------------------------*\\\\\\n CATEGORY PAGE LAYOUT\\n\\\\*------------------------------------*/\\n.category-lower,\\n.ds_category-lower {\\n background: #f8f8f8;\\n border-top: 1px solid #ebebeb;\\n margin-top: -1px;\\n}\\n\\n/*------------------------------------*\\\\\\n STACK\\n Your classic lobotomised owl https://alistapart.com/article/axiomatic-css-and-lobotomized-owls/\\n\\\\*------------------------------------*/\\n.ds_stack > * {\\n margin-bottom: 0;\\n}\\n.ds_stack > * + * {\\n margin-bottom: 0;\\n margin-top: 16px;\\n}\\n\\n/*------------------------------------*\\\\\\n WRAPPERS\\n\\\\*------------------------------------*/\\n.ds_wrapper {\\n margin: 0 auto;\\n padding: 0 16px;\\n width: 100%;\\n}\\n.ds_wrapper--no-overflow {\\n overflow: hidden;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_wrapper {\\n width: 768px;\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_wrapper {\\n width: 960px;\\n }\\n}\\n@media (min-width: 1200px) {\\n .ds_wrapper {\\n width: 1152px;\\n }\\n}\\n/*------------------------------------*\\\\\\n BREAKPOINT CHECK\\n\\\\*------------------------------------*/\\n.ds_breakpoint-check {\\n display: none;\\n}\\n@media (min-width: 480px) {\\n .ds_breakpoint-check.ds_breakpoint-check--small {\\n display: block;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_breakpoint-check.ds_breakpoint-check--medium {\\n display: block;\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_breakpoint-check.ds_breakpoint-check--large {\\n display: block;\\n }\\n}\\n@media (min-width: 1200px) {\\n .ds_breakpoint-check.ds_breakpoint-check--xlarge {\\n display: block;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n VISIBILITY\\n\\\\*------------------------------------*/\\n.visually-hidden {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n}\\n\\n.fully-hidden {\\n display: none !important;\\n}\\n\\n/*------------------------------------*\\\\\\n LISTS\\n\\\\*------------------------------------*/\\n.ds_no-bullets {\\n list-style-type: none;\\n margin-left: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n MARGIN MODIFIERS\\n Deprecated, prefer use of margin override classes e.g. ds_!_margin--0, ds_!_margin-bottom--0\\n\\\\*------------------------------------*/\\n.ds_block-margins {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_block-margins {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_block-margins {\\n margin-bottom: 2rem;\\n }\\n}\\n\\n.ds_no-margin {\\n margin: 0 !important;\\n}\\n\\n.ds_no-margin--top {\\n margin-top: 0 !important;\\n}\\n\\n.ds_no-margin--right {\\n margin-right: 0 !important;\\n}\\n\\n.ds_no-margin--bottom {\\n margin-bottom: 0 !important;\\n}\\n\\n.ds_no-margin--left {\\n margin-left: 0 !important;\\n}\\n\\n.ds_no-margin--vertical {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n}\\n\\n.ds_no-margin--horizontal {\\n margin-left: 0 !important;\\n margin-right: 0 !important;\\n}\\n\\n/*------------------------------------*\\\\\\n PADDING MODIFIERS\\n Deprecated, prefer use of padding override classes e.g. ds_!_padding--0, ds_!_padding-bottom--0\\n\\\\*------------------------------------*/\\n.ds_no-padding {\\n padding: 0 !important;\\n}\\n\\n.ds_no-padding--top {\\n padding-top: 0 !important;\\n}\\n\\n.ds_no-padding--right {\\n padding-right: 0 !important;\\n}\\n\\n.ds_no-padding--bottom {\\n padding-bottom: 0 !important;\\n}\\n\\n.ds_no-padding--left {\\n padding-left: 0 !important;\\n}\\n\\n.ds_no-padding--vertical {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n}\\n\\n.ds_no-padding--horizontal {\\n padding-left: 0 !important;\\n padding-right: 0 !important;\\n}\\n\\n.ds_\\\\!_margin--0 {\\n margin: 0 !important;\\n}\\n\\n.ds_\\\\!_margin-left--0 {\\n margin-left: 0 !important;\\n}\\n\\n.ds_\\\\!_margin-right--0 {\\n margin-right: 0 !important;\\n}\\n\\n.ds_\\\\!_margin-top--0 {\\n margin-top: 0 !important;\\n}\\n\\n.ds_\\\\!_margin-bottom--0 {\\n margin-bottom: 0 !important;\\n}\\n\\n.ds_\\\\!_margin--1 {\\n margin: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--1 {\\n margin: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--1 {\\n margin-left: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--1 {\\n margin-left: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--1 {\\n margin-right: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--1 {\\n margin-right: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--1 {\\n margin-top: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--1 {\\n margin-top: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--1 {\\n margin-bottom: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--1 {\\n margin-bottom: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--2 {\\n margin: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--2 {\\n margin: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--2 {\\n margin-left: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--2 {\\n margin-left: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--2 {\\n margin-right: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--2 {\\n margin-right: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--2 {\\n margin-top: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--2 {\\n margin-top: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--2 {\\n margin-bottom: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--2 {\\n margin-bottom: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--3 {\\n margin: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--3 {\\n margin: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--3 {\\n margin-left: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--3 {\\n margin-left: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--3 {\\n margin-right: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--3 {\\n margin-right: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--3 {\\n margin-top: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--3 {\\n margin-top: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--3 {\\n margin-bottom: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--3 {\\n margin-bottom: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--4 {\\n margin: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--4 {\\n margin: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--4 {\\n margin-left: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--4 {\\n margin-left: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--4 {\\n margin-right: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--4 {\\n margin-right: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--4 {\\n margin-top: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--4 {\\n margin-top: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--4 {\\n margin-bottom: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--4 {\\n margin-bottom: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--5 {\\n margin: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--5 {\\n margin: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--5 {\\n margin-left: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--5 {\\n margin-left: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--5 {\\n margin-right: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--5 {\\n margin-right: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--5 {\\n margin-top: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--5 {\\n margin-top: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--5 {\\n margin-bottom: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--5 {\\n margin-bottom: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--6 {\\n margin: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--6 {\\n margin: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--6 {\\n margin-left: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--6 {\\n margin-left: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--6 {\\n margin-right: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--6 {\\n margin-right: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--6 {\\n margin-top: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--6 {\\n margin-top: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--6 {\\n margin-bottom: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--6 {\\n margin-bottom: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--7 {\\n margin: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--7 {\\n margin: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--7 {\\n margin-left: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--7 {\\n margin-left: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--7 {\\n margin-right: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--7 {\\n margin-right: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--7 {\\n margin-top: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--7 {\\n margin-top: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--7 {\\n margin-bottom: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--7 {\\n margin-bottom: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--8 {\\n margin: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--8 {\\n margin: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--8 {\\n margin-left: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--8 {\\n margin-left: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--8 {\\n margin-right: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--8 {\\n margin-right: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--8 {\\n margin-top: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--8 {\\n margin-top: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--8 {\\n margin-bottom: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--8 {\\n margin-bottom: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin--9 {\\n margin: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin--9 {\\n margin: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-left--9 {\\n margin-left: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-left--9 {\\n margin-left: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-right--9 {\\n margin-right: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-right--9 {\\n margin-right: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-top--9 {\\n margin-top: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-top--9 {\\n margin-top: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_margin-bottom--9 {\\n margin-bottom: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_margin-bottom--9 {\\n margin-bottom: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--0 {\\n padding: 0 !important;\\n}\\n\\n.ds_\\\\!_padding-left--0 {\\n padding-left: 0 !important;\\n}\\n\\n.ds_\\\\!_padding-right--0 {\\n padding-right: 0 !important;\\n}\\n\\n.ds_\\\\!_padding-top--0 {\\n padding-top: 0 !important;\\n}\\n\\n.ds_\\\\!_padding-bottom--0 {\\n padding-bottom: 0 !important;\\n}\\n\\n.ds_\\\\!_padding--1 {\\n padding: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--1 {\\n padding: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--1 {\\n padding-left: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--1 {\\n padding-left: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--1 {\\n padding-right: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--1 {\\n padding-right: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--1 {\\n padding-top: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--1 {\\n padding-top: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--1 {\\n padding-bottom: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--1 {\\n padding-bottom: 0.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--2 {\\n padding: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--2 {\\n padding: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--2 {\\n padding-left: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--2 {\\n padding-left: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--2 {\\n padding-right: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--2 {\\n padding-right: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--2 {\\n padding-top: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--2 {\\n padding-top: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--2 {\\n padding-bottom: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--2 {\\n padding-bottom: 1rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--3 {\\n padding: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--3 {\\n padding: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--3 {\\n padding-left: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--3 {\\n padding-left: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--3 {\\n padding-right: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--3 {\\n padding-right: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--3 {\\n padding-top: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--3 {\\n padding-top: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--3 {\\n padding-bottom: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--3 {\\n padding-bottom: 1.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--4 {\\n padding: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--4 {\\n padding: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--4 {\\n padding-left: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--4 {\\n padding-left: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--4 {\\n padding-right: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--4 {\\n padding-right: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--4 {\\n padding-top: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--4 {\\n padding-top: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--4 {\\n padding-bottom: 1.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--4 {\\n padding-bottom: 2rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--5 {\\n padding: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--5 {\\n padding: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--5 {\\n padding-left: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--5 {\\n padding-left: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--5 {\\n padding-right: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--5 {\\n padding-right: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--5 {\\n padding-top: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--5 {\\n padding-top: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--5 {\\n padding-bottom: 2rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--5 {\\n padding-bottom: 2.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--6 {\\n padding: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--6 {\\n padding: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--6 {\\n padding-left: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--6 {\\n padding-left: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--6 {\\n padding-right: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--6 {\\n padding-right: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--6 {\\n padding-top: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--6 {\\n padding-top: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--6 {\\n padding-bottom: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--6 {\\n padding-bottom: 3rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--7 {\\n padding: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--7 {\\n padding: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--7 {\\n padding-left: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--7 {\\n padding-left: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--7 {\\n padding-right: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--7 {\\n padding-right: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--7 {\\n padding-top: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--7 {\\n padding-top: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--7 {\\n padding-bottom: 2.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--7 {\\n padding-bottom: 3.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--8 {\\n padding: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--8 {\\n padding: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--8 {\\n padding-left: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--8 {\\n padding-left: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--8 {\\n padding-right: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--8 {\\n padding-right: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--8 {\\n padding-top: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--8 {\\n padding-top: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--8 {\\n padding-bottom: 3rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--8 {\\n padding-bottom: 4rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding--9 {\\n padding: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding--9 {\\n padding: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-left--9 {\\n padding-left: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-left--9 {\\n padding-left: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-right--9 {\\n padding-right: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-right--9 {\\n padding-right: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-top--9 {\\n padding-top: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-top--9 {\\n padding-top: 4.5rem !important;\\n }\\n}\\n\\n.ds_\\\\!_padding-bottom--9 {\\n padding-bottom: 3.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_\\\\!_padding-bottom--9 {\\n padding-bottom: 4.5rem !important;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n DESIGN SYSTEM FORMS\\n\\\\*------------------------------------*/\\n/*------------------------------------*\\\\\\n FORM VARIABLES\\n\\\\*------------------------------------*/\\n/*------------------------------------*\\\\\\n FORM MIXINS\\n\\\\*------------------------------------*/\\n/*------------------------------------*\\\\\\n FORM ELEMENTS (base)\\n\\\\*------------------------------------*/\\nlegend {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n font-weight: 700;\\n margin-bottom: 8px;\\n}\\n@media (min-width: 768px) {\\n legend {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n\\nfieldset {\\n border: 0;\\n}\\n\\n.ds_form {\\n display: flex;\\n flex-direction: column;\\n}\\n.ds_form__content .ds_question:has(.ds_page-header) {\\n margin-top: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_form__content .ds_question:has(.ds_page-header) {\\n margin-top: 2rem;\\n }\\n}\\n.ds_form__content .ds_question .ds_page-header {\\n margin-top: 0;\\n}\\n.ds_form__actions .ds_button {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_form__actions .ds_button {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_form__actions .ds_button {\\n margin-bottom: 2rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n CHARACTER COUNT\\n\\\\*------------------------------------*/\\n.ds_character-count {\\n margin-top: -16px;\\n}\\n\\n/*------------------------------------*\\\\\\n CHECKBOXES\\n\\\\*------------------------------------*/\\n.ds_checkbox {\\n margin-bottom: 24px;\\n padding-left: 40px;\\n position: relative;\\n}\\n.ds_checkbox__input {\\n height: 2.5rem;\\n left: 0;\\n opacity: 0;\\n position: absolute;\\n top: 0;\\n width: 2.5rem;\\n}\\n.ds_checkbox__label {\\n display: inline-block;\\n padding: 4px 32px 4px 16px;\\n}\\n.ds_checkbox__label::before {\\n background-color: #ffffff;\\n border: 2px solid #333333;\\n content: \\\"\\\";\\n height: 40px;\\n left: 0;\\n position: absolute;\\n width: 40px;\\n}\\n.ds_checkbox__label::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: calc(100% - 40px);\\n left: 0;\\n right: calc(100% - 40px);\\n opacity: 0;\\n}\\n.ds_checkbox__label::before, .ds_checkbox__label::after {\\n top: -4px;\\n}\\n@media (min-width: 768px) {\\n .ds_checkbox__label::before, .ds_checkbox__label::after {\\n top: 0;\\n }\\n}\\n.ds_checkbox__input:focus + .ds_checkbox__label::before {\\n background-color: #fdd522;\\n border-color: #333333;\\n border-width: 4px;\\n box-shadow: 0 0 0 3px #fdd522;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_checkbox__input:focus + .ds_checkbox__label::before {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 4px !important;\\n outline-offset: -4px;\\n }\\n}\\n.ds_checkbox__input:checked + .ds_checkbox__label::after {\\n opacity: 1;\\n}\\n.ds_checkbox--small {\\n margin-bottom: 16px;\\n margin-left: -8px;\\n}\\n.ds_checkbox--small .ds_checkbox__input {\\n height: 1.5rem;\\n left: 0.5rem;\\n top: 0.5rem;\\n width: 1.5rem;\\n}\\n.ds_checkbox--small .ds_checkbox__label::before {\\n height: 1.5rem;\\n left: 8px;\\n top: 4px;\\n width: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_checkbox--small .ds_checkbox__label::before {\\n top: 8px;\\n }\\n}\\n.ds_checkbox > .ds_hint-text {\\n padding-left: 16px;\\n}\\n.ds_checkbox__label::after {\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0 5px 5px;\\n border-top-color: transparent;\\n left: 7px;\\n height: 14px;\\n top: 6px;\\n width: 26px;\\n transform: rotate(-45deg);\\n}\\n.ds_checkbox__input:checked + .ds_checkbox__label::before {\\n background-color: currentColor;\\n}\\n.ds_checkbox__input:not(:focus):checked + .ds_checkbox__label::after {\\n border-color: #ffffff;\\n}\\n.ds_checkbox__input:focus:checked + .ds_checkbox__label::before {\\n background-color: #fdd522;\\n}\\n.ds_checkbox--small .ds_checkbox__label::after {\\n border-width: 6px;\\n left: 14px;\\n top: 14px;\\n}\\n.ds_checkbox--small .ds_checkbox__label::after {\\n width: 13px;\\n height: 7px;\\n left: 13px;\\n top: 11px;\\n border-width: 0 0 3px 3px;\\n}\\n.ds_checkbox .ds_question__error-message {\\n margin-left: 16px;\\n}\\n\\n.ds_checkboxes > .ds_checkbox:last-child {\\n margin-bottom: 4px;\\n}\\n\\n.ds_checkbox-separator {\\n font-weight: 700;\\n margin: 24px 0;\\n text-align: center;\\n width: 40px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_checkbox__label::after {\\n top: 10px;\\n }\\n .ds_checkbox--small .ds_checkbox__label::after {\\n top: 15px;\\n }\\n}\\n/*------------------------------------*\\\\\\n CURRENCY WRAPPER\\n\\\\*------------------------------------*/\\n.ds_currency-wrapper {\\n position: relative;\\n}\\n.ds_currency-wrapper::before {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n content: \\\"£\\\";\\n height: 48px;\\n font-weight: 700;\\n line-height: 48px !important;\\n pointer-events: none;\\n position: absolute;\\n text-align: center;\\n top: 0;\\n width: 48px;\\n}\\n@media (min-width: 768px) {\\n .ds_currency-wrapper::before {\\n font-size: 1.5rem;\\n line-height: 1.6666666667;\\n }\\n}\\n.ds_currency-wrapper[data-symbol]::before {\\n content: attr(data-symbol);\\n}\\n.ds_currency-wrapper > .ds_input {\\n padding-left: 40px;\\n}\\n.ds_currency-wrapper > .ds_input:focus {\\n padding-left: 39px;\\n}\\n\\n/*------------------------------------*\\\\\\n ERROR SUMMARY\\n\\\\*------------------------------------*/\\n.ds_error-summary {\\n border: 0.25rem solid #d32205;\\n padding: 1.25rem 1.75rem;\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_error-summary {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_error-summary {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_error-summary > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_error-summary__title {\\n margin-top: 0;\\n}\\n.ds_error-summary__list {\\n color: #d32205;\\n font-weight: 700;\\n list-style-type: none;\\n margin-left: 0;\\n}\\n.ds_error-summary__list a {\\n color: #d32205;\\n}\\n.ds_error-summary__list a:hover:not(:focus) {\\n background-color: #fee6e1;\\n color: #951804;\\n outline-color: #fee6e1;\\n}\\n.ds_error-summary__list a:focus {\\n color: #333333;\\n}\\n.ds_error-summary__list li {\\n margin-left: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n FIELD GROUP\\n\\\\*------------------------------------*/\\n.ds_field-group > div:last-child {\\n margin-bottom: 0;\\n}\\n.ds_field-group > div:last-child .ds_input {\\n margin-bottom: 0;\\n}\\n.ds_field-group--inline {\\n display: flex;\\n flex-direction: row;\\n gap: 1rem;\\n}\\n.ds_field-group--inline > div {\\n margin-bottom: 0;\\n}\\n.ds_field-group--inline > div > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n HINT TEXT\\n\\\\*------------------------------------*/\\n.ds_hint-text {\\n color: #727272;\\n margin-bottom: 16px;\\n}\\n.ds_hint-text > * {\\n margin-bottom: 8px;\\n}\\n\\n/*------------------------------------*\\\\\\n LABEL\\n\\\\*------------------------------------*/\\n.ds_label {\\n color: #333333;\\n display: inline-block;\\n font-weight: 700;\\n margin-bottom: 8px;\\n}\\n\\n/*------------------------------------*\\\\\\n PREFILLED VALUE LIST\\n\\\\*------------------------------------*/\\n.ds_prefilled-value-list__key {\\n margin: 0;\\n margin-bottom: 0.5rem;\\n padding: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_prefilled-value-list__key {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_prefilled-value-list__value {\\n margin: 0;\\n margin-bottom: 1.5rem;\\n padding: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_prefilled-value-list__value {\\n margin-bottom: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_prefilled-value-list__value {\\n display: flex;\\n }\\n .ds_prefilled-value-list__value-actions {\\n margin-left: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_prefilled-value-list__value-actions {\\n margin-left: 1.5rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n QUESTION\\n\\\\*------------------------------------*/\\n.ds_question {\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_question {\\n margin-bottom: 1.5rem;\\n }\\n}\\n.ds_question--error {\\n border-left: 0.25rem solid #d32205;\\n padding-left: 1.25rem;\\n}\\n.ds_question__message, .ds_question__error-message {\\n margin-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_question__message, .ds_question__error-message {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_question__error-message {\\n color: #d32205;\\n font-weight: 700;\\n}\\n.ds_question > fieldset > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n RADIO BUTTONS\\n\\\\*------------------------------------*/\\n.ds_radio {\\n margin-bottom: 24px;\\n padding-left: 40px;\\n position: relative;\\n}\\n.ds_radio__input {\\n height: 2.5rem;\\n left: 0;\\n opacity: 0;\\n position: absolute;\\n top: 0;\\n width: 2.5rem;\\n}\\n.ds_radio__label {\\n display: inline-block;\\n padding: 4px 32px 4px 16px;\\n}\\n.ds_radio__label::before {\\n background-color: #ffffff;\\n border: 2px solid #333333;\\n content: \\\"\\\";\\n height: 40px;\\n left: 0;\\n position: absolute;\\n width: 40px;\\n}\\n.ds_radio__label::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: calc(100% - 40px);\\n left: 0;\\n right: calc(100% - 40px);\\n opacity: 0;\\n}\\n.ds_radio__label::before, .ds_radio__label::after {\\n top: -4px;\\n border-radius: 50%;\\n}\\n@media (min-width: 768px) {\\n .ds_radio__label::before, .ds_radio__label::after {\\n top: 0;\\n }\\n}\\n.ds_radio__input:focus + .ds_radio__label::before {\\n background-color: #fdd522;\\n border-color: #333333;\\n border-width: 4px;\\n box-shadow: 0 0 0 3px #fdd522;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_radio__input:focus + .ds_radio__label::before {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 4px !important;\\n outline-offset: -4px;\\n }\\n}\\n.ds_radio__input:checked + .ds_radio__label::after {\\n opacity: 1;\\n}\\n.ds_radio--small {\\n margin-bottom: 16px;\\n margin-left: -8px;\\n}\\n.ds_radio--small .ds_radio__input {\\n height: 1.5rem;\\n left: 0.5rem;\\n top: 0.5rem;\\n width: 1.5rem;\\n}\\n.ds_radio--small .ds_radio__label::before {\\n height: 1.5rem;\\n left: 8px;\\n top: 4px;\\n width: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_radio--small .ds_radio__label::before {\\n top: 8px;\\n }\\n}\\n.ds_radio > .ds_hint-text {\\n padding-left: 16px;\\n}\\n.ds_radio__label::after {\\n top: 6px;\\n left: 10px;\\n width: 0;\\n height: 0;\\n border: 10px solid currentColor;\\n border-radius: 50%;\\n background: currentColor;\\n}\\n.ds_radio__input:focus + .ds_radio__label::after {\\n color: #333333;\\n}\\n.ds_radio--small .ds_radio__label::after {\\n border-width: 6px;\\n left: 14px;\\n top: 10px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_radio__label::after {\\n top: 10px;\\n }\\n .ds_radio--small .ds_radio__label::after {\\n top: 14px;\\n }\\n}\\n/*------------------------------------*\\\\\\n REVEAL CONTENT\\n\\\\*------------------------------------*/\\n.ds_reveal-content {\\n display: none;\\n margin-top: 16px;\\n padding-left: 16px;\\n position: relative;\\n}\\n.ds_reveal-content > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_reveal-content::before {\\n background-color: #b3b3b3;\\n bottom: 0;\\n content: \\\"\\\";\\n left: -22px;\\n position: absolute;\\n top: 0;\\n width: 4px;\\n}\\n\\n:checked ~ .ds_reveal-content {\\n display: block;\\n}\\n\\n/*------------------------------------*\\\\\\n SELECT\\n\\\\*------------------------------------*/\\n.ds_select {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n background-color: transparent;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M480-360 280-560h400L480-360Z'/%3E%3C/svg%3E\\\");\\n background-position: center right 10px;\\n background-repeat: no-repeat;\\n border-radius: 0;\\n border: 0;\\n box-shadow: inset 0 0 0 2px currentColor;\\n min-height: 3rem;\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n padding: 0.5rem 3rem 0.5rem 0.75rem;\\n}\\n.ds_select:focus {\\n outline: 2px solid #fdd522;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 4px currentColor;\\n}\\n.ds_select::-ms-expand {\\n display: none;\\n}\\n\\n.ds_select-arrow {\\n background: #0065bd;\\n display: none;\\n width: 3rem;\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n pointer-events: none;\\n position: relative;\\n}\\n@supports (appearance: none) or (-webkit-appearance: none) {\\n .ds_select-arrow {\\n display: block;\\n }\\n}\\n.ds_select-arrow::before {\\n bottom: 0;\\n color: #ffffff;\\n font-size: 1rem;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: 1;\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.1875em 0.1875em;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.75em;\\n width: 0.75em;\\n transform: rotate(-45deg);\\n right: calc(50% - 0.375em);\\n top: calc(50% - 0.5625em);\\n}\\n\\n.ds_select:focus + .ds_select-arrow {\\n background-color: #fdd522;\\n}\\n.ds_select:focus + .ds_select-arrow::before {\\n color: #333333;\\n}\\n\\n.ds_select-wrapper {\\n margin-bottom: 1.5rem;\\n max-width: max-content;\\n min-width: 10em;\\n}\\n@media (min-width: 768px) {\\n .ds_select-wrapper {\\n margin-bottom: 1.5rem;\\n }\\n}\\n\\n.ds_select-wrapper.ds_input--error .ds_select,\\n.ds_select-wrapper .ds_select--error,\\n.ds_select-wrapper .ds_input--error {\\n box-shadow: inset 0 0 0 4px #d32205;\\n}\\n.ds_select-wrapper.ds_input--error .ds_select:focus,\\n.ds_select-wrapper .ds_select--error:focus,\\n.ds_select-wrapper .ds_input--error:focus {\\n box-shadow: inset 0 0 0 4px currentColor;\\n}\\n\\n.ds_select-wrapper.ds_input--error {\\n padding: 0;\\n}\\n\\n@supports (display: grid) {\\n .ds_select-wrapper {\\n display: grid;\\n grid-template-columns: 1fr auto;\\n }\\n .ds_select {\\n background-image: none;\\n grid-area: 1/1/1/3;\\n }\\n .ds_select-arrow {\\n grid-area: 1/2/1/2;\\n }\\n}\\n/*------------------------------------*\\\\\\n TEXT INPUTS\\n Covers text-based INPUT elements and TEXTAREA elements\\n\\\\*------------------------------------*/\\n.ds_input {\\n margin-bottom: 1.5rem;\\n background-color: #ffffff;\\n border: 2px solid currentColor;\\n border-radius: 0;\\n display: block;\\n line-height: 2rem;\\n min-height: 3rem;\\n padding: 0.375rem 0.625rem;\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .ds_input {\\n margin-bottom: 1.5rem;\\n }\\n}\\n.ds_input:focus {\\n outline: 2px solid #fdd522;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 2px;\\n}\\n.ds_input--error {\\n border-color: #d32205;\\n border-width: 4px;\\n padding: 0.25rem 0.5rem;\\n}\\n.ds_input--error:focus {\\n border-color: currentColor;\\n box-shadow: none;\\n}\\n.ds_input + .ds_input__message {\\n margin-top: -1rem;\\n}\\n.ds_input__message--error {\\n color: #d32205;\\n font-weight: 700;\\n}\\n\\n.ds_input--fixed-2 {\\n max-width: calc(16px + 2em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-2 {\\n max-width: calc(48px + 2em);\\n}\\n\\n.ds_input--fixed-3 {\\n max-width: calc(16px + 3em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-3 {\\n max-width: calc(48px + 3em);\\n}\\n\\n.ds_input--fixed-4 {\\n max-width: calc(16px + 4em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-4 {\\n max-width: calc(48px + 4em);\\n}\\n\\n.ds_input--fixed-5 {\\n max-width: calc(16px + 5em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-5 {\\n max-width: calc(48px + 5em);\\n}\\n\\n.ds_input--fixed-10 {\\n max-width: calc(16px + 10em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-10 {\\n max-width: calc(48px + 10em);\\n}\\n\\n.ds_input--fixed-20 {\\n max-width: calc(16px + 20em);\\n}\\n\\n.ds_currency-wrapper .ds_input--fixed-20 {\\n max-width: calc(48px + 20em);\\n}\\n\\n.ds_input--fluid-one-quarter {\\n max-width: 25%;\\n}\\n\\n.ds_input--fluid-one-third {\\n max-width: 33.333333%;\\n}\\n\\n.ds_input--fluid-half {\\n max-width: 50%;\\n}\\n\\n.ds_input--fluid-two-thirds {\\n max-width: 67.666667%;\\n}\\n\\n.ds_input--fluid-three-quarters {\\n max-width: 75%;\\n}\\n\\n.ds_input__wrapper {\\n display: block;\\n margin-bottom: 1.5rem;\\n overflow: auto;\\n}\\n.ds_input__wrapper .ds_input {\\n float: left;\\n margin-bottom: 0;\\n margin-right: -3rem;\\n padding-right: 3.5rem;\\n}\\n.ds_input__wrapper .ds_icon {\\n height: 2rem;\\n padding: 0.5rem;\\n width: 2rem;\\n}\\n.ds_input__wrapper > .ds_button {\\n margin: 0;\\n min-height: 48px;\\n min-width: 48px;\\n padding-top: 12px;\\n padding-bottom: 12px;\\n}\\n.ds_input__wrapper > .ds_button > .ds_icon {\\n height: 32px;\\n padding: 8px;\\n width: 32px;\\n}\\n\\n@supports (display: flex) {\\n .ds_input__wrapper {\\n display: flex;\\n overflow: visible;\\n }\\n}\\n/*------------------------------------*\\\\\\n ACCORDION\\n\\\\*------------------------------------*/\\n.ds_accordion {\\n margin-bottom: calc(1.5rem + -1px);\\n margin-top: 1.5rem;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion {\\n margin-bottom: calc(2rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_accordion {\\n margin-top: 2rem;\\n }\\n}\\n.ds_accordion__open-all {\\n display: none;\\n float: right;\\n line-height: 1.5;\\n margin-bottom: 0.5rem;\\n position: relative;\\n text-decoration: none;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion__open-all {\\n line-height: 1.6842105263;\\n }\\n}\\n.ds_accordion__open-all + * {\\n clear: both;\\n}\\n\\nh1 + .ds_accordion, h2 + .ds_accordion, h3 + .ds_accordion {\\n margin-top: 0;\\n}\\n\\n.ds_accordion.js-initialised .ds_accordion__open-all {\\n display: block;\\n}\\n\\n.ds_accordion-item {\\n border-bottom: 1px solid #ebebeb;\\n border-top: 1px solid #ebebeb;\\n}\\n.ds_accordion-item__header {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n font-size: 1rem;\\n line-height: 1.5;\\n background-color: #ffffff;\\n border-width: 0;\\n color: #0065bd;\\n font-weight: 700;\\n margin: 0;\\n position: relative;\\n text-align: left;\\n width: 100%;\\n}\\n.ds_accordion-item__header:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_accordion-item__header:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_accordion-item__header:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion-item__header {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n.ds_accordion-item__header:hover:not(:focus) {\\n color: #00437d;\\n}\\n.ds_accordion-item__title {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin-bottom: 0;\\n padding: 1rem 3rem calc(1rem - 1px) 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion-item__title {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n.ds_accordion-item__title--button {\\n padding: 0;\\n}\\n.ds_accordion-item__button {\\n appearance: unset;\\n background: transparent;\\n border: 0;\\n padding: 1rem 3rem calc(1rem - 1px) 1rem;\\n text-align: left;\\n width: 100%;\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n}\\n.ds_accordion-item__button:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_accordion-item__button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_accordion-item__button:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_accordion-item__label {\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n}\\n.ds_accordion-item__title--button .ds_accordion-item__label {\\n z-index: -1;\\n}\\n.ds_accordion-item__indicator {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.1875em 0.1875em;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.75em;\\n width: 0.75em;\\n transform: rotate(-45deg);\\n position: absolute;\\n right: 1.5rem;\\n top: 1.125rem;\\n transition: transform 0.2s, top 0.2s;\\n pointer-events: none;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion-item__indicator {\\n top: 1.3125rem;\\n right: 1.625rem;\\n }\\n}\\n.ds_accordion-item__body {\\n display: none;\\n padding: 1.5rem 2.5rem 2rem 1rem;\\n}\\n.ds_accordion-item__body > :last-child {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_accordion-item__body {\\n padding-right: 6.25rem;\\n }\\n}\\n.ds_accordion-item__control:checked ~ .ds_accordion-item__body {\\n display: block;\\n}\\n.ds_accordion-item__control:checked ~ .ds_accordion-item__header {\\n background-color: #f8f8f8;\\n color: #333333;\\n}\\n.ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\\n top: 1.375rem;\\n transform: rotate(-225deg);\\n}\\n@media (min-width: 768px) {\\n .ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\\n top: 1.6875rem;\\n right: 1.625rem;\\n }\\n}\\n.ds_accordion-item__control:focus ~ .ds_accordion-item__header, .ds_accordion-item__control:focus:hover ~ .ds_accordion-item__header {\\n background: #fdd522;\\n box-shadow: 0 3px #333333;\\n color: #333333;\\n z-index: 2;\\n}\\n.ds_accordion-item + .ds_accordion-item {\\n margin-top: -1px;\\n}\\n\\n/* SMALL VARIANT */\\n.ds_accordion--small .ds_accordion-item__header,\\n.ds_accordion--small .ds_accordion-item__title,\\n.ds_accordion--small .ds_accordion-item__button,\\n.ds_accordion--small .ds_accordion-item__body,\\n.ds_accordion--small .ds_accordion__open-all {\\n font-size: 1rem;\\n line-height: 1.5;\\n}\\n.ds_accordion--small .ds_accordion-item__body {\\n padding-right: 1rem;\\n}\\n.ds_accordion--small .ds_accordion-item__body h3, .ds_accordion--small .ds_accordion-item__body h4 {\\n font-size: 1em;\\n line-height: 1.5;\\n}\\n.ds_accordion--small .ds_accordion-item__indicator {\\n margin-top: 0;\\n right: 1.5rem;\\n top: 1.125rem;\\n}\\n.ds_accordion--small .ds_accordion-item__control:checked ~ .ds_accordion-item__header .ds_accordion-item__indicator {\\n right: 1.5rem;\\n top: 1.5rem;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_accordion--small .ds_accordion-item__indicator {\\n top: 1.125rem;\\n }\\n}\\n/*------------------------------------*\\\\\\n ARTICLE ASIDE\\n\\\\*------------------------------------*/\\n.ds_article-aside {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n padding-top: 1.5rem;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_article-aside {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_article-aside {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_article-aside {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_article-aside {\\n padding-top: 2rem;\\n }\\n}\\n.ds_article-aside:first-child {\\n margin-top: 0;\\n}\\n.ds_article-aside::before {\\n border-top: 2px solid #0065bd;\\n content: \\\"\\\";\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.ds_aspect-box {\\n overflow: hidden;\\n position: relative;\\n padding-bottom: 56.25%;\\n}\\n.ds_aspect-box--square {\\n padding-bottom: 100%;\\n}\\n.ds_aspect-box--43 {\\n padding-bottom: 75%;\\n}\\n.ds_aspect-box--235 {\\n padding-bottom: 42.5531914894%;\\n}\\n.ds_aspect-box--219 {\\n padding-bottom: 42.8571428571%;\\n}\\n.ds_aspect-box--fallback {\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: cover;\\n}\\n.ds_aspect-box--fallback .ds_aspect-box__inner {\\n display: none;\\n}\\n.ds_aspect-box__inner {\\n height: 100%;\\n left: 0;\\n width: 100%;\\n object-fit: cover;\\n position: absolute;\\n right: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n AUTOCOMPLETE\\n\\\\*------------------------------------*/\\n.ds_autocomplete {\\n position: relative;\\n /*\\n [1] 10px = 12px (associated site search input) minus 2px (suggestions border), 11px = 12px vertical padding minus 2px (suggestions border) split evenly between top and bottom padding\\n */\\n}\\n.ds_autocomplete__suggestions {\\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\\n border: 2px solid #727272;\\n display: none;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 100%;\\n z-index: 10;\\n}\\n.ds_autocomplete__suggestions-list {\\n list-style-type: none;\\n margin: 0;\\n}\\n.ds_autocomplete__suggestion {\\n background-color: #ffffff;\\n color: #727272;\\n cursor: pointer;\\n font-style: italic;\\n margin-bottom: 0;\\n padding: 11px 10px; /* [1] */\\n transition: background-color 0.2s;\\n}\\n.ds_autocomplete__suggestion:hover {\\n background-color: #d9eeff;\\n}\\n.ds_autocomplete__suggestion:not(:last-child) {\\n border-bottom: 2px solid #727272;\\n}\\n.ds_autocomplete__suggestion__text {\\n font-style: normal;\\n color: #333333;\\n}\\n.ds_autocomplete__suggestion__category {\\n color: #0065bd;\\n}\\n.ds_autocomplete__suggestion.active {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_autocomplete__suggestion.active {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n outline-offset: -2px;\\n }\\n}\\n.ds_autocomplete__suggestion.active .ds_autocomplete__suggestion__text {\\n color: #333333;\\n}\\n\\n.js-autocomplete-input.js-has-suggestions ~ .ds_autocomplete__suggestions {\\n display: block;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_autocomplete__suggestions {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n/*------------------------------------*\\\\\\n BACK LINK\\n\\\\*------------------------------------*/\\n.ds_back-link {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n align-items: center;\\n display: inline-flex;\\n margin: 16px 0 16px 16px;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_back-link {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_back-link::before {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.125em 0.125em;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.5em;\\n width: 0.5em;\\n transform: rotate(-315deg);\\n border-width: 0 0 2px 2px;\\n left: -14px;\\n position: absolute;\\n}\\n\\n/*------------------------------------*\\\\\\n $BACK TO TOP\\n\\\\*------------------------------------*/\\n.ds_back-to-top {\\n display: none;\\n}\\n\\n@media only screen {\\n .ds_back-to-top {\\n bottom: 3.5rem;\\n display: block;\\n pointer-events: none;\\n position: absolute;\\n right: 0.5rem;\\n top: calc(100vh - 1px);\\n z-index: 1;\\n }\\n @supports (bottom: var(--ds-back-to-top-offset)) {\\n .ds_back-to-top {\\n bottom: var(--ds-back-to-top-offset, 0);\\n }\\n }\\n .ds_back-to-top__button {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n background-color: rgba(255, 255, 255, 0.4);\\n font-weight: 700;\\n margin: 0;\\n min-width: 7.5rem;\\n pointer-events: all;\\n padding: 0.5rem 2.125rem 0.5rem 1.125rem;\\n position: fixed;\\n position: sticky;\\n right: 0.5rem;\\n top: calc(100vh - 3.5rem);\\n }\\n .ds_back-to-top__button:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n }\\n}\\n@media only screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_back-to-top__button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n@media only screen {\\n .ds_back-to-top__button:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n}\\n@media only screen and (min-width: 768px) {\\n .ds_back-to-top__button {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media only screen {\\n .ds_back-to-top__button::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 1rem;\\n right: 2rem;\\n top: 0.5rem;\\n bottom: 0.5rem;\\n z-index: -1;\\n }\\n .ds_back-to-top__icon {\\n height: 1.5rem;\\n min-height: 1.5rem;\\n position: absolute;\\n right: 0.5rem;\\n top: 0.5rem;\\n }\\n .ds_back-to-top__button::before, .ds_back-to-top__icon {\\n background-color: #ffffff;\\n transition: background-color 0.2s;\\n }\\n}\\n@media only screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_back-to-top__button::before, .ds_back-to-top__icon {\\n background-color: transparent;\\n }\\n}\\n@media only screen {\\n .ds_back-to-top__button:hover::before, .ds_back-to-top__button:hover .ds_back-to-top__icon, .ds_back-to-top__button:focus::before, .ds_back-to-top__button:focus .ds_back-to-top__icon {\\n background-color: transparent;\\n }\\n}\\n/*------------------------------------*\\\\\\n $BREADCRUMBS\\n\\\\*------------------------------------*/\\n.ds_breadcrumbs {\\n color: #727272;\\n font-size: 14px;\\n line-height: 24px;\\n padding-left: 0;\\n margin: 24px 0 16px;\\n}\\n.ds_breadcrumbs__item {\\n display: inline-block;\\n margin: 0;\\n padding: 0;\\n}\\n.ds_breadcrumbs__item:not(:first-child) .ds_breadcrumbs__link {\\n margin-left: -2px;\\n}\\n.ds_breadcrumbs__item:not(:first-child)::before {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.08333325em 0.08333325em;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.333333em;\\n width: 0.333333em;\\n transform: rotate(-135deg);\\n margin: 0 8px 0 6px;\\n position: relative;\\n top: -1px;\\n}\\n.ds_breadcrumbs__container {\\n padding-top: 16px;\\n}\\n@media (min-width: 768px) {\\n .ds_breadcrumbs__container {\\n padding-top: 24px;\\n }\\n}\\n@supports (display: flex) {\\n .ds_breadcrumbs {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n}\\n\\n.ds_reversed .ds_breadcrumbs {\\n color: #ffffff;\\n}\\n\\n/*------------------------------------*\\\\\\n BUTTONS\\n\\\\*------------------------------------*/\\n.ds_button {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n min-height: 56px;\\n min-width: 56px;\\n padding: 16px;\\n background: #0065bd;\\n border: 0;\\n border-radius: 0;\\n color: #ffffff;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: 700;\\n line-height: 1.5rem;\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n position: relative;\\n text-align: center;\\n text-decoration: none;\\n transition: background-color 0.2s;\\n margin-bottom: 1.5rem;\\n margin-top: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_button {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_button > .ds_icon {\\n height: 40px;\\n padding: 8px;\\n width: 40px;\\n}\\n@media (min-width: 768px) {\\n .ds_button {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_button:hover {\\n background-color: #00437d;\\n color: #ffffff;\\n outline-color: transparent;\\n transition-duration: 0.2s;\\n}\\n.ds_button:focus {\\n background-color: #fdd522;\\n box-shadow: 0 3px #333333;\\n color: #333333;\\n outline: 0;\\n transition-duration: 0s;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 4px !important;\\n }\\n}\\n.ds_button .ds_icon {\\n pointer-events: none;\\n}\\n.ds_button[disabled] {\\n background-color: #727272;\\n box-shadow: none;\\n color: #ffffff;\\n font-weight: 400;\\n outline: none;\\n pointer-events: none;\\n}\\n\\n.ds_reversed .ds_button {\\n background-color: #ffffff;\\n color: #0065bd;\\n}\\n.ds_reversed .ds_button:focus, .ds_reversed .ds_button:hover:focus {\\n background-color: #fdd522;\\n}\\n.ds_reversed .ds_button:hover {\\n background-color: #d9eeff;\\n}\\n.ds_reversed .ds_button--secondary {\\n background-color: transparent;\\n border-color: currentColor;\\n color: #ffffff;\\n}\\n.ds_reversed .ds_button--secondary:hover:not(:focus) {\\n background-color: rgba(0, 0, 0, 0.3);\\n color: #ffffff;\\n outline-color: currentColor;\\n}\\n\\n.ds_button--secondary {\\n background-color: transparent;\\n color: #0065bd;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n}\\n.ds_button--secondary:hover:not(:focus) {\\n background-color: #d9eeff;\\n color: #00437d;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n}\\n.ds_button--cancel {\\n background-color: transparent;\\n color: #333333;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n}\\n.ds_button--cancel:hover:not(:focus) {\\n background-color: #ebebeb;\\n color: #333333;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n}\\n\\n.ds_button--small {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n min-height: 48px;\\n min-width: 48px;\\n padding-top: 12px;\\n padding-bottom: 12px;\\n}\\n@media (min-width: 768px) {\\n .ds_button--small {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_button--small > .ds_icon {\\n height: 32px;\\n padding: 8px;\\n width: 32px;\\n}\\n\\n.ds_button--fixed {\\n width: 12.5rem;\\n}\\n.ds_button--fixed.ds_button--small {\\n width: 10rem;\\n}\\n.ds_button--max {\\n max-width: 30rem;\\n width: 100%;\\n}\\n\\n.ds_button .ds_icon {\\n bottom: 0;\\n box-sizing: content-box;\\n pointer-events: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.ds_button--has-icon {\\n padding-right: calc(56px + 16px);\\n}\\n.ds_button--has-icon--left {\\n padding-left: calc(56px + 16px);\\n padding-right: 16px;\\n}\\n.ds_button--has-icon--left .ds_icon {\\n left: 0;\\n right: auto;\\n}\\n\\n/*------------------------------------*\\\\\\n BUTTON GROUP\\n\\\\*------------------------------------*/\\n.ds_button-group {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n gap: 1rem;\\n display: flex;\\n flex-wrap: wrap;\\n}\\n@media (min-width: 768px) {\\n .ds_button-group {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_button-group {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_button-group {\\n gap: 1rem;\\n }\\n}\\n.ds_button-group .ds_button {\\n align-content: center;\\n margin: 0;\\n}\\n.ds_button-group a:not(.ds_button),\\n.ds_button-group .ds_link {\\n align-self: center;\\n}\\n@media (max-width: 479px) {\\n .ds_button-group {\\n flex-direction: column;\\n }\\n .ds_button-group .ds_button {\\n width: 100%;\\n }\\n .ds_button-group--inline {\\n flex-direction: row;\\n flex-wrap: nowrap;\\n }\\n .ds_button-group--inline .ds_button {\\n flex-grow: 1;\\n width: auto;\\n }\\n .ds_button-group--inline .ds_link {\\n min-width: fit-content;\\n }\\n .ds_button-group:not(.ds_button-group--inline) .ds_button--has-icon {\\n padding-right: 56px;\\n padding-left: 56px;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n COOKIE BANNER\\n Modifications to the notification banner component for this particular use case\\n\\\\*------------------------------------*/\\n.ds_notification.ds_notification--cookie {\\n background: #ebebeb;\\n color: #333333;\\n}\\n.ds_notification.ds_notification--cookie .ds_notification__content {\\n padding-top: 24px;\\n padding-bottom: 32px;\\n}\\n\\n.ds_notification.ds_notification--cookie-success {\\n background: #428542;\\n}\\n\\n/*------------------------------------*\\\\\\n CALLOUT\\n Deprecated. Consider 'Inset text' or 'Notification message' instead.\\n\\\\*------------------------------------*/\\n.ds_callout {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n background: #f8f8f8;\\n border-left: 4px solid #0065bd;\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n padding-bottom: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n padding-left: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_callout {\\n padding-right: 1.5rem;\\n }\\n}\\n.ds_callout > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_callout--no-border {\\n border: none;\\n}\\n.ds_callout__label.ds_content-label {\\n color: #0065bd;\\n font-size: 14px;\\n}\\n.ds_callout__label + .ds_callout__title {\\n margin-top: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n CARD\\n\\\\*------------------------------------*/\\n.ds_card {\\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n background-color: #ffffff;\\n display: grid;\\n grid-template-rows: auto 1fr;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_card {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_card {\\n outline: 2px solid currentColor !important;\\n outline-offset: -2px !important;\\n }\\n}\\n.ds_card--grey {\\n background-color: #f8f8f8;\\n color: #333333;\\n}\\n.ds_card--grey:focus-within {\\n color: #333333;\\n}\\n.ds_card--hover:hover, .ds_card--has-hover:hover {\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);\\n}\\n.ds_card--hover:hover:not(:focus), .ds_card--has-hover:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_card--hover:hover:not(:focus) .ds_metadata, .ds_card--has-hover:hover:not(:focus) .ds_metadata {\\n color: inherit;\\n}\\n.ds_card--hover:focus-within, .ds_card--has-hover:focus-within {\\n background-color: #fdd522 !important;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n transition-duration: 0s;\\n}\\n.ds_card--hover:focus-within .ds_card__link--cover, .ds_card--has-hover:focus-within .ds_card__link--cover {\\n background-color: transparent;\\n box-shadow: none;\\n outline: none;\\n}\\n.ds_card--hover:focus-within .ds_metadata, .ds_card--has-hover:focus-within .ds_metadata {\\n color: inherit;\\n}\\n@media (max-width: 767px) {\\n .ds_card__media--small-mobile {\\n margin: 1rem 1rem 0;\\n max-width: 384px;\\n }\\n}\\n.ds_card__content {\\n display: grid;\\n grid-template-rows: auto auto 1fr;\\n height: 100%;\\n padding-top: 1rem;\\n padding-right: 1rem;\\n padding-bottom: 1.5rem;\\n padding-left: 1rem;\\n}\\n.ds_card__content > :last-child {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_card__content {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_card__content {\\n padding-right: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_card__content {\\n padding-bottom: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_card__content {\\n padding-left: 1rem;\\n }\\n}\\n.ds_card__content-footer {\\n align-self: end;\\n}\\n.ds_card__content-footer > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_card__title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n margin-bottom: 0.5rem;\\n margin-top: 0 !important;\\n}\\n@media (min-width: 768px) {\\n .ds_card__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_card__title {\\n margin-bottom: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_card__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_card__link--cover:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_card__link--cover:after {\\n content: \\\"\\\";\\n height: 100%;\\n left: 0px;\\n position: absolute;\\n top: 0px;\\n width: 100%;\\n z-index: 1;\\n}\\n\\n/* Support for old markup */\\n.ds_card .ds_category-item__link:hover:before {\\n display: none;\\n}\\n\\n/*------------------------------------*\\\\\\n CATEGORY HEADER\\n\\\\*------------------------------------*/\\n.ds_category-header {\\n padding-top: 16px;\\n padding-bottom: 32px;\\n}\\n.ds_category-header__header {\\n margin-bottom: 32px;\\n}\\n.ds_category-header__title {\\n color: #333333;\\n font-weight: 300;\\n margin-bottom: 8px;\\n}\\n.ds_category-header__summary {\\n line-height: 24px;\\n}\\n.ds_category-header__summary > :last-child {\\n margin-bottom: 8px;\\n}\\n.ds_category-header__media {\\n display: block;\\n margin: 0 auto;\\n height: auto;\\n max-height: 360px;\\n max-width: 320px;\\n}\\n@media (min-width: 768px) {\\n .ds_category-header__media {\\n max-width: 100%;\\n }\\n}\\n\\n.ds_reversed .ds_category-header {\\n color: #ffffff;\\n}\\n.ds_reversed .ds_category-header__title {\\n color: #ffffff;\\n}\\n\\n.ds_category-header {\\n margin-right: -32px;\\n overflow: hidden;\\n}\\n.ds_category-header > * {\\n margin-right: 32px;\\n}\\n@supports (display: grid) {\\n .ds_category-header {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_category-header > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n\\n.ds_category-header {\\n grid-gap: 32px 32px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_category-header__header {\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n margin: 40px 0;\\n }\\n .ds_category-header__media-container {\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_category-header__summary {\\n line-height: 32px;\\n }\\n}\\n@supports (display: grid) {\\n .ds_category-header__header {\\n margin-bottom: 0;\\n }\\n @media (min-width: 768px) {\\n .ds_category-header {\\n align-items: center;\\n grid-template-columns: repeat(12, 1fr);\\n }\\n .ds_category-header__header {\\n float: none;\\n grid-column: 1/span 8;\\n margin: 40px 0;\\n }\\n .ds_category-header__media-container {\\n float: none;\\n grid-column: 9/span 4;\\n margin-right: 0;\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n CATEGORY ITEM\\n Navigation elements for different levels of category navigation. Includes classes for layout of these elements in a list.\\n\\\\*------------------------------------*/\\n.ds_category-item {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n /*\\n supports grid is a hack as a proxy for supports :focus-within\\n */\\n padding: 12px 16px 12px;\\n text-decoration: none;\\n transition: background-color 0.2s, border-color 0.2s;\\n width: 100%;\\n}\\n.ds_category-item:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_category-item:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_category-item:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_category-item .ds_category-item__link:focus:hover {\\n text-decoration: none;\\n}\\n@supports (display: grid) {\\n .ds_category-item .ds_category-item__link {\\n background-color: transparent;\\n outline: none;\\n }\\n .ds_category-item .ds_category-item__link::after {\\n content: \\\"\\\";\\n height: 100%;\\n left: 0px;\\n position: absolute;\\n top: 0px;\\n width: 100%;\\n z-index: 0;\\n }\\n @media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_category-item .ds_category-item__link::after {\\n content: none;\\n }\\n }\\n .ds_category-item .ds_category-item__link:focus::after {\\n transition-duration: 0s;\\n }\\n .ds_category-item:focus-within {\\n background-color: #fdd522 !important;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n transition-duration: 0s;\\n }\\n .ds_category-item:focus-within .ds_category-item__link:focus {\\n box-shadow: none;\\n background-color: transparent;\\n }\\n @media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_category-item:focus-within .ds_category-item__link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n }\\n}\\n.ds_category-item > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_category-item__title {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n line-height: 28px;\\n margin: 0 0 16px;\\n}\\n@media (min-width: 768px) {\\n .ds_category-item__title {\\n font-size: 1.5rem;\\n line-height: 1.6666666667;\\n }\\n}\\n.ds_category-item .ds_category-item__link::after {\\n left: -4px;\\n}\\n.ds_category-item__link {\\n color: #0065bd;\\n}\\n.ds_category-item__link::before {\\n border-left: 4px solid #0065bd;\\n bottom: 0;\\n content: \\\"\\\";\\n left: -4px;\\n opacity: 0.3;\\n position: absolute;\\n top: 0;\\n width: 4px;\\n}\\n.ds_category-item__link:focus::before {\\n content: none;\\n}\\n.ds_category-item__link:hover::before {\\n border-color: #00437d;\\n opacity: 1;\\n}\\n.ds_category-item__link::after {\\n background: transparent;\\n bottom: 0;\\n content: \\\"\\\";\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.ds_category-item__summary {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n color: #727272;\\n line-height: 24px;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_category-item__summary {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_category-item:hover .ds_category-item__summary, .ds_category-item:focus-within .ds_category-item__summary {\\n color: #333333;\\n}\\n\\n.ds_card > .ds_category-item {\\n padding-top: 24px;\\n padding-bottom: 24px;\\n position: static;\\n}\\n.ds_card .ds_category-item__link::before {\\n border-width: 0;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_category-item__title {\\n line-height: 32px;\\n }\\n .ds_card > .ds_category-item {\\n min-height: 200px;\\n }\\n}\\n/*------------------------------------*\\\\\\n CATEGORY LIST\\n\\\\*------------------------------------*/\\n.ds_category-list-container {\\n margin: 32px 0;\\n}\\n\\n.ds_category-list {\\n margin-right: -32px;\\n overflow: hidden;\\n list-style-type: none;\\n margin-bottom: 32px;\\n margin-left: -8px;\\n margin-top: -8px;\\n padding: 8px;\\n}\\n.ds_category-list > * {\\n margin-right: 32px;\\n}\\n@supports (display: grid) {\\n .ds_category-list {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_category-list > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n.ds_category-list > * {\\n display: flex;\\n flex-direction: column;\\n margin: 0 0 32px;\\n width: 100%;\\n}\\n.ds_category-list--narrow > * {\\n margin-bottom: 12px;\\n}\\n\\n.ds_category-list--narrow {\\n margin-right: -12px;\\n overflow: hidden;\\n}\\n.ds_category-list--narrow > * {\\n margin-right: 12px;\\n}\\n@supports (display: grid) {\\n .ds_category-list--narrow {\\n display: grid;\\n grid-gap: 0 12px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_category-list--narrow > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n\\n@media (max-width: 767px) {\\n .ds_category-list--grid > * {\\n min-height: 0;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_category-list--grid > * {\\n float: left;\\n width: calc(50% - 32px);\\n }\\n .ds_category-list--grid > *:nth-child(2n+1) {\\n clear: left;\\n }\\n .ds_category-list--grid.ds_category-list--narrow > * {\\n width: calc(50% - 12px);\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_category-list--grid > * {\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_category-list--grid > *:nth-child(n) {\\n clear: none;\\n }\\n .ds_category-list--grid > *:nth-child(3n+1) {\\n clear: left;\\n margin-left: 0;\\n }\\n .ds_category-list--grid.ds_category-list--narrow > * {\\n width: calc(33.3333333333% - 12px);\\n }\\n}\\n@supports (display: grid) {\\n .ds_category-list {\\n grid-row-gap: 32px;\\n margin-left: 0;\\n margin-top: 0;\\n padding: 0;\\n }\\n .ds_category-list--narrow {\\n grid-gap: 12px 12px;\\n }\\n .ds_category-list > *[class] {\\n margin-bottom: 0;\\n }\\n @media (min-width: 768px) {\\n .ds_category-list--grid {\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n }\\n }\\n @media (min-width: 992px) {\\n .ds_category-list--grid {\\n grid-template-columns: 1fr 1fr 1fr;\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n CONFIRMATION MESSAGE\\n\\\\*------------------------------------*/\\n.ds_confirmation-message {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n padding-right: 1rem;\\n background-color: #f8f8f8;\\n border-left: 0.25rem solid #428542;\\n padding-left: 2.75rem;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message {\\n padding-bottom: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message {\\n padding-right: 1rem;\\n }\\n}\\n.ds_confirmation-message__icon {\\n color: #428542;\\n left: 0.75rem;\\n position: absolute;\\n top: 1.25rem;\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message__icon {\\n top: 1.5rem;\\n }\\n}\\n.ds_confirmation-message__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message__title {\\n font-size: 1.875rem;\\n line-height: 1.3333333333;\\n }\\n}\\n.ds_confirmation-message__title:not(:first-child) {\\n margin-top: 0;\\n}\\n.ds_confirmation-message__body {\\n margin-top: 0.5rem;\\n}\\n.ds_confirmation-message__body > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__icon {\\n top: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__icon {\\n top: 1.25rem;\\n }\\n}\\n.ds_confirmation-message:not(:has(.ds_confirmation-message__title)) .ds_confirmation-message__body {\\n margin-top: 0;\\n}\\n\\n/*------------------------------------*\\\\\\n CONTACT DETAILS\\n\\\\*------------------------------------*/\\n.ds_contact-details__title {\\n padding-top: 0.5rem;\\n display: inline-block;\\n margin-bottom: 0;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_contact-details__title {\\n padding-top: 0.5rem;\\n }\\n}\\n.ds_contact-details__title::after {\\n border-top: 4px solid #0065bd;\\n content: \\\"\\\";\\n height: 4px;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.ds_contact-details__item {\\n margin-top: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_contact-details__item {\\n margin-top: 1rem;\\n }\\n}\\n.ds_contact-details__item dd {\\n margin-top: 0;\\n margin-left: 0;\\n}\\n.ds_contact-details__item dt:not(.visually-hidden) + .ds_contact-details__social-item {\\n margin-top: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_contact-details__item dt:not(.visually-hidden) + .ds_contact-details__social-item {\\n margin-top: 0.5rem;\\n }\\n}\\n.ds_contact-details__social-item {\\n margin-bottom: 0.5rem;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_contact-details__social-item {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_contact-details__social-item:has(.ds_contact-details__social-icon):not(:first-of-type) {\\n margin-top: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_contact-details__social-item:has(.ds_contact-details__social-icon):not(:first-of-type) {\\n margin-top: 1rem;\\n }\\n}\\n.ds_contact-details__social-link {\\n margin-left: 2rem;\\n}\\n.ds_contact-details__social-icon {\\n height: 1.5rem !important;\\n pointer-events: none;\\n position: absolute;\\n left: 0;\\n width: 1.5rem !important;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_contact-details__social-icon {\\n top: 0.25rem;\\n }\\n .ds_contact-details-grid {\\n margin-right: -32px;\\n overflow: hidden;\\n }\\n .ds_contact-details-grid > * {\\n margin-right: 32px;\\n }\\n @supports (display: grid) {\\n .ds_contact-details-grid {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_contact-details-grid > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n }\\n .ds_contact-details-grid .ds_contact-details__list {\\n float: left;\\n width: calc(50% - 32px);\\n }\\n @supports (display: grid) {\\n .ds_contact-details-grid {\\n grid-template-columns: repeat(2, 1fr);\\n }\\n .ds_contact-details-grid .ds_contact-details__list {\\n width: auto;\\n }\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_contact-details-grid {\\n margin-right: -32px;\\n overflow: hidden;\\n }\\n .ds_contact-details-grid > * {\\n margin-right: 32px;\\n }\\n @supports (display: grid) {\\n .ds_contact-details-grid {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_contact-details-grid > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n }\\n .ds_contact-details-grid .ds_contact-details__list {\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n @supports (display: grid) {\\n .ds_contact-details-grid {\\n grid-template-columns: repeat(3, 1fr);\\n }\\n .ds_contact-details-grid .ds_contact-details__list {\\n width: auto;\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n CONTENT LABEL\\n\\\\*------------------------------------*/\\n.ds_content-label {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n font-weight: 400;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_content-label {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n CONTENTS NAV\\n\\\\*------------------------------------*/\\n.ds_contents-nav__title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin: 0;\\n padding: 0;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_contents-nav__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_contents-nav__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_contents-nav__list {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin-bottom: 2.5rem;\\n list-style: none;\\n margin-left: 0;\\n padding-left: 32px;\\n}\\n@media (min-width: 768px) {\\n .ds_contents-nav__list {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_contents-nav__list {\\n margin-bottom: 3rem;\\n }\\n}\\n.ds_contents-nav__item {\\n position: relative;\\n}\\n.ds_contents-nav__item::before {\\n border-top: 1px solid currentColor;\\n content: \\\"\\\";\\n height: 1px;\\n left: -32px;\\n overflow: hidden;\\n position: absolute;\\n top: 12px;\\n width: 20px;\\n}\\n.ds_contents-nav__link.ds_current {\\n font-weight: 700;\\n}\\n\\n/*------------------------------------*\\\\\\n DATE PICKER\\n\\\\*------------------------------------*/\\n.ds_datepicker {\\n position: relative;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker {\\n margin-bottom: 1.5rem;\\n }\\n}\\n.ds_datepicker .ds_input {\\n margin-bottom: 0;\\n}\\n.ds_datepicker__input-wrapper {\\n display: flex;\\n gap: 1rem;\\n margin-bottom: 1.5rem;\\n}\\n.ds_datepicker__dialog {\\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\\n background-color: #ffffff;\\n clear: both;\\n display: none;\\n padding: 8px;\\n outline: 1px solid #b3b3b3;\\n outline-offset: -1px;\\n position: static;\\n top: 0;\\n transition: background-color 0.2s, outline-color 0.2s;\\n width: 296px;\\n z-index: 2;\\n}\\n.ds_datepicker__dialog--open {\\n display: block;\\n}\\n@supports (left: var(--ds-date-picker-left-offset)) {\\n .ds_datepicker__dialog--open {\\n left: var(--ds-date-picker-left-offset);\\n }\\n}\\n.ds_datepicker__dialog__header {\\n position: relative;\\n text-align: center;\\n}\\n.ds_datepicker__dialog__header > :nth-child(1) {\\n position: absolute;\\n left: 0;\\n top: -2px;\\n}\\n.ds_datepicker__dialog__header > :nth-child(3) {\\n position: absolute;\\n right: 0;\\n top: -2px;\\n}\\n.ds_datepicker__dialog__title {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n line-height: 2.2857142857;\\n margin: 0 !important;\\n text-transform: uppercase;\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker__dialog__title {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_datepicker__dialog__navbuttons button {\\n background-color: transparent;\\n color: #333333;\\n font-weight: 400;\\n min-height: 40px;\\n margin: 0;\\n padding: 4px;\\n min-width: 32px;\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n display: inline-block;\\n}\\n.ds_datepicker__dialog__navbuttons button:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_datepicker__dialog__navbuttons button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_datepicker__dialog__navbuttons button:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_datepicker__dialog__navbuttons button:hover {\\n color: currentColor;\\n}\\n.ds_datepicker__dialog__navbuttons button .ds_icon {\\n height: 32px;\\n padding: 0;\\n position: static;\\n width: 24px;\\n}\\n.ds_datepicker__dialog__table tbody:focus-within {\\n outline: 2px solid #fdd522;\\n}\\n.ds_datepicker__dialog__table td {\\n border: 0;\\n margin: 0;\\n outline: 0;\\n padding: 0;\\n}\\n.ds_datepicker__dialog__table th {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n color: #727272;\\n font-weight: 400;\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker__dialog__table th {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_datepicker__dialog__table button {\\n background-color: transparent;\\n border-width: 0;\\n color: #333333;\\n font-weight: 400;\\n min-height: 40px;\\n margin: 0;\\n padding: 0;\\n min-width: 40px;\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n /*\\n * helps with focus in windows high contrast\\n */\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker__dialog__table button {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_datepicker__dialog__table button:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_datepicker__dialog__table button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_datepicker__dialog__table button:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_datepicker__dialog__table button:focus {\\n transition-duration: 0s;\\n}\\n.ds_datepicker__dialog__table button[disabled=true], .ds_datepicker__dialog__table button[aria-disabled=true] {\\n background-color: #ebebeb;\\n color: #333333;\\n pointer-events: none;\\n}\\n.ds_datepicker__dialog__table button[disabled=true]:focus, .ds_datepicker__dialog__table button[aria-disabled=true]:focus {\\n box-shadow: inset 0 -3px #333333, inset 0 2px #fdd522, inset -2px 0 #fdd522, inset 0 -5px #fdd522, inset 2px 0 #fdd522;\\n}\\n.ds_datepicker__dialog__table button.ds_datepicker__current {\\n outline: 2px solid #333333 !important;\\n outline-offset: -2px;\\n}\\n.ds_datepicker__dialog__table button.ds_datepicker__current[tabindex=\\\"-1\\\"] {\\n background: #f8f8f8;\\n color: currentColor;\\n}\\n.ds_datepicker__dialog__table button.ds_datepicker__today {\\n font-weight: 700;\\n}\\n.ds_datepicker__dialog__table button.ds_datepicker__today::after {\\n background-color: currentColor;\\n border-radius: 4px;\\n bottom: 6px;\\n content: \\\"\\\";\\n height: 4px;\\n left: 50%;\\n margin-left: -2px;\\n position: absolute;\\n width: 4px;\\n}\\n.ds_datepicker__dialog__table button.ds_selected:not(:focus) {\\n background-color: #333333;\\n color: #ffffff;\\n}\\n.ds_datepicker__dialog__table button:focus {\\n color: #333333;\\n position: relative;\\n z-index: 2;\\n}\\n.ds_datepicker__dialog__table-caption {\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n caption-side: bottom;\\n line-height: 2;\\n margin-top: 8px;\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker__dialog__table-caption {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n.ds_datepicker__dialog__buttongroup {\\n margin-right: -8px;\\n overflow: hidden;\\n overflow: visible;\\n}\\n.ds_datepicker__dialog__buttongroup > * {\\n margin-right: 8px;\\n}\\n@supports (display: grid) {\\n .ds_datepicker__dialog__buttongroup {\\n display: grid;\\n grid-gap: 0 8px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_datepicker__dialog__buttongroup > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n.ds_datepicker__dialog__buttongroup button {\\n width: calc(50% - 8px);\\n display: block;\\n float: left;\\n margin: 0;\\n}\\n@supports (display: grid) {\\n .ds_datepicker__dialog__buttongroup {\\n grid-template-columns: 1fr 1fr;\\n }\\n}\\n.ds_datepicker__button {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n min-height: 48px;\\n min-width: 48px;\\n padding-top: 12px;\\n padding-bottom: 12px;\\n align-self: end;\\n}\\n@media (min-width: 768px) {\\n .ds_datepicker__button {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_datepicker__button > .ds_icon {\\n height: 32px;\\n padding: 8px;\\n width: 32px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_datepicker__dialog {\\n position: absolute;\\n }\\n .ds_datepicker__dialog__title {\\n line-height: 1.5;\\n padding: 8px 0;\\n }\\n .ds_datepicker__dialog__header > :nth-child(1) {\\n top: 0;\\n }\\n .ds_datepicker__dialog__header > :nth-child(3) {\\n top: 0;\\n }\\n .ds_datepicker__dialog__table th {\\n line-height: 2;\\n }\\n .ds_datepicker__dialog__table-caption {\\n line-height: 2.2857142857;\\n }\\n}\\n/*------------------------------------*\\\\\\n DETAILS\\n\\\\*------------------------------------*/\\n.ds_details {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_details {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_details {\\n margin-bottom: 2rem;\\n }\\n}\\n\\n.ds_details__summary {\\n color: #0065bd;\\n text-decoration: underline;\\n outline: 0px solid transparent;\\n text-underline-offset: 1px;\\n transition: color 0.2s, background-color 0.2s, outline-color 0.2s;\\n margin-bottom: 1rem;\\n padding-left: 1.5rem;\\n cursor: pointer;\\n display: inline-block;\\n position: relative;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_details__summary {\\n color: LinkText;\\n }\\n .ds_details__summary:hover, .ds_details__summary:focus {\\n color: LinkText;\\n }\\n}\\n.ds_details__summary:hover {\\n background-color: #d9eeff;\\n color: #00437d;\\n outline: 2px solid #d9eeff;\\n transition-duration: 0.2s;\\n}\\n.ds_details__summary:focus {\\n outline: 2px solid #fdd522;\\n outline-offset: 0;\\n background-color: #fdd522;\\n box-shadow: -2px 5px #333333, 2px 5px #333333;\\n color: #333333;\\n text-decoration: none;\\n transition-duration: 0s;\\n}\\n.ds_details__summary > svg {\\n fill: currentColor;\\n}\\n@media (min-width: 768px) {\\n .ds_details__summary {\\n margin-bottom: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_details__summary {\\n padding-left: 2rem;\\n }\\n}\\n.ds_details__summary::-webkit-details-marker {\\n display: none;\\n}\\n.ds_details__summary::before {\\n background-color: currentColor;\\n clip-path: polygon(0 0, 100% 50%, 0 100%);\\n content: \\\"\\\";\\n display: block;\\n height: calc(0.4210526316em * 2);\\n left: 0.25em;\\n position: absolute;\\n top: calc(50% - 0.4210526316em + 1px);\\n width: 0.4210526316em;\\n}\\n@media (prefers-reduced-motion: no-preference) {\\n .ds_details__summary::before {\\n transition: transform 0.2s;\\n }\\n}\\n\\n.ds_details__text {\\n border-left: 4px solid #b3b3b3;\\n box-sizing: border-box;\\n display: none;\\n padding: 0.5rem;\\n padding-left: calc(1.5rem + calc(4px * -1));\\n}\\n.ds_details__text > :last-child {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_details__text {\\n padding: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_details__text {\\n padding-left: calc(2rem + calc(4px * -1));\\n }\\n}\\n\\n.ds_details[open] .ds_details__summary::before,\\n.ds_details__toggle:checked ~ .ds_details__summary::before {\\n transform: rotate(90deg);\\n}\\n.ds_details[open] .ds_details__text,\\n.ds_details__toggle:checked ~ .ds_details__text {\\n display: block;\\n}\\n\\n.ds_details__toggle:focus ~ .ds_details__summary {\\n outline: 2px solid #fdd522;\\n outline-offset: 0;\\n background-color: #fdd522;\\n box-shadow: -2px 5px #333333, 2px 5px #333333;\\n color: #333333;\\n text-decoration: none;\\n transition-duration: 0s;\\n}\\n\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_details__summary::before {\\n background-color: LinkText;\\n }\\n}\\n/*------------------------------------*\\\\\\n FEATURE HEADER\\n\\\\*------------------------------------*/\\n.ds_feature-header {\\n margin-bottom: 3rem;\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header {\\n margin-bottom: 4rem;\\n }\\n}\\n.ds_feature-header__title {\\n font-size: 1.875rem;\\n line-height: 1.3333333333;\\n margin-bottom: 1.5rem;\\n font-weight: 700;\\n margin-bottom: 0.5rem;\\n font-weight: 300;\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header__title {\\n font-size: 2.75rem;\\n line-height: 1.2727272727;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header__title {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_feature-header--background {\\n background-color: #ebebeb;\\n}\\n.ds_feature-header__primary {\\n padding: 1rem 0;\\n position: relative;\\n z-index: 2;\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header__primary {\\n padding: 1.5rem 0;\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_feature-header__primary {\\n padding: 2.5rem 0;\\n }\\n}\\n.ds_feature-header--background .ds_feature-header__primary {\\n padding-left: 1rem;\\n}\\n@media (max-width: 767px) {\\n .ds_feature-header--background .ds_feature-header__primary {\\n padding-right: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header--background .ds_feature-header__primary {\\n padding-left: 1.5rem;\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_feature-header--background .ds_feature-header__primary {\\n padding-left: 2.5rem;\\n }\\n}\\n.ds_feature-header__secondary {\\n position: relative;\\n z-index: 1;\\n}\\n.ds_feature-header__image {\\n display: block;\\n height: auto;\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .ds_feature-header {\\n align-items: center;\\n display: grid;\\n grid-template-columns: repeat(12, 1fr);\\n grid-gap: 32px;\\n }\\n .ds_feature-header__primary {\\n grid-area: 1/1/2/7;\\n margin-right: 0;\\n }\\n .ds_feature-header__primary > :last-child {\\n margin-bottom: 0;\\n }\\n .ds_feature-header__secondary {\\n grid-area: 1/7/2/13;\\n }\\n .ds_feature-header--wide .ds_feature-header__primary {\\n grid-area: 1/1/2/9;\\n margin-right: 0;\\n }\\n .ds_feature-header--wide .ds_feature-header__secondary {\\n grid-area: 1/9/2/13;\\n }\\n}\\n\\n.ds_reversed .ds_feature-header__primary,\\n.ds_reversed .ds_feature-header__primary a {\\n color: #ffffff;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_feature-header {\\n display: -ms-grid;\\n -ms-grid-columns: 1fr 32px 1fr;\\n }\\n .ds_feature-header--wide {\\n -ms-grid-columns: 2fr 32px 1fr;\\n }\\n .ds_feature-header__primary {\\n -ms-grid-column: 1;\\n -ms-grid-row-align: center;\\n }\\n .ds_feature-header__secondary {\\n -ms-grid-column: 3;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n FILE DOWNLOAD\\n\\\\*------------------------------------*/\\n.ds_file-download {\\n margin-bottom: 1.5rem;\\n margin-top: 1.5rem;\\n padding: 1rem;\\n background-color: #f8f8f8;\\n display: flex;\\n}\\n@media (min-width: 768px) {\\n .ds_file-download {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_file-download {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_file-download {\\n padding: 1rem;\\n }\\n}\\n.ds_file-download--highlighted {\\n padding-left: calc(1rem + -4px);\\n border-left: 4px solid #0065bd;\\n}\\n@media (min-width: 768px) {\\n .ds_file-download--highlighted {\\n padding-left: calc(1rem + -4px);\\n }\\n}\\n.ds_file-download__thumbnail {\\n margin-right: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_file-download__thumbnail {\\n margin-right: 1rem;\\n }\\n}\\n.ds_file-download__thumbnail-image {\\n display: block;\\n max-width: 100%;\\n outline: 1px solid #b3b3b3;\\n outline-offset: -1px;\\n}\\n.ds_file-download__thumbnail-image[src*=\\\".svg\\\"] {\\n outline: none;\\n}\\n.ds_file-download__thumbnail-link {\\n display: block;\\n width: 4rem;\\n}\\n.ds_file-download__content {\\n flex-grow: 1;\\n}\\n.ds_file-download__title {\\n display: inline-block;\\n font-weight: 700;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_file-download__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_file-download .ds_metadata {\\n line-height: 1.5rem;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_file-download__thumbnail-link {\\n width: 5rem;\\n }\\n}\\n/*------------------------------------*\\\\\\n HIDE THIS PAGE\\n\\\\*------------------------------------*/\\n@media (max-width: 767px) {\\n .ds_has-hide-page .ds_page,\\n .ds_page:has(.ds_hide-page) {\\n margin-top: 56px;\\n }\\n}\\n.ds_hide-page {\\n background-color: #ebebeb;\\n left: 0;\\n position: fixed;\\n right: 0;\\n text-align: center;\\n top: 0;\\n z-index: 1000;\\n}\\n.ds_hide-page__button {\\n background-color: #d32205;\\n margin: 0;\\n width: 100%;\\n}\\n.ds_hide-page__button:hover:not(:focus) {\\n background-color: #881603;\\n}\\n.ds_hide-page__text {\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_hide-page__text {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n.ds_hide-page .js-enabled-text {\\n display: none;\\n}\\n\\n@media only screen and (hover: hover) {\\n .js-enabled .js-enabled-text {\\n display: block;\\n }\\n .ds_has-hide-page .ds_page {\\n margin-top: 80px;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_hide-page {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n background-color: rgba(255, 255, 255, 0.9);\\n left: auto;\\n outline: 1px solid #ebebeb;\\n outline-offset: -1px;\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_hide-page {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_hide-page {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n @supports (position: sticky) and (display: grid) {\\n .ds_hide-page {\\n bottom: 8px;\\n position: sticky;\\n }\\n }\\n .ds_hide-page__text {\\n margin: 8px 0;\\n }\\n .ds_has-hide-page .ds_page {\\n margin-top: 0;\\n }\\n}\\n@supports (display: grid) {\\n .ds_hide-page {\\n width: 100%;\\n }\\n @media (min-width: 768px) {\\n .ds_hide-page {\\n align-self: start;\\n grid-area: 1/9/3/13;\\n right: 8px;\\n top: 8px;\\n }\\n }\\n @media (min-width: 992px) {\\n .ds_hide-page {\\n grid-area: 1/10/3/13;\\n }\\n }\\n}\\n/**\\n This \\\"reverse\\\" order follows GOV UK reasoning, where it assumed that it's better to have scroll\\n padding unnecessarily than risking not having it when it's needed.\\n*/\\n@supports (position: sticky) {\\n html {\\n scroll-padding-top: 6.5rem;\\n }\\n html:not(:has(.ds_hide-page)) {\\n scroll-padding-top: 0;\\n }\\n}\\n/*------------------------------------*\\\\\\n ICON\\n\\\\*------------------------------------*/\\n.ds_icon {\\n fill: currentColor;\\n height: 1.5em;\\n vertical-align: middle;\\n width: 1.5em;\\n}\\n\\n.ds_icon--16 {\\n width: 1rem;\\n height: 1rem;\\n}\\n\\n.ds_icon--20 {\\n width: 1.25rem;\\n height: 1.25rem;\\n}\\n\\n.ds_icon--24 {\\n width: 1.5rem;\\n height: 1.5rem;\\n}\\n\\n.ds_icon--28 {\\n width: 1.75rem;\\n height: 1.75rem;\\n}\\n\\n.ds_icon--32 {\\n width: 2rem;\\n height: 2rem;\\n}\\n\\n.ds_icon--36 {\\n width: 2.25rem;\\n height: 2.25rem;\\n}\\n\\n.ds_icon--40 {\\n width: 2.5rem;\\n height: 2.5rem;\\n}\\n\\n.ds_icon--44 {\\n width: 2.75rem;\\n height: 2.75rem;\\n}\\n\\n.ds_icon--48 {\\n width: 3rem;\\n height: 3rem;\\n}\\n\\n.ds_icon--12 {\\n width: 0.75rem;\\n height: 0.75rem;\\n}\\n\\n.ds_icon--52 {\\n width: 3.25rem;\\n height: 3.25rem;\\n}\\n\\n.ds_icon--56 {\\n width: 3.5rem;\\n height: 3.5rem;\\n}\\n\\n.ds_icon--60 {\\n width: 3.75rem;\\n height: 3.75rem;\\n}\\n\\n.ds_icon--64 {\\n width: 4rem;\\n height: 4rem;\\n}\\n\\n.ds_icon--68 {\\n width: 4.25rem;\\n height: 4.25rem;\\n}\\n\\n.ds_icon--72 {\\n width: 4.5rem;\\n height: 4.5rem;\\n}\\n\\n.ds_icon--76 {\\n width: 4.75rem;\\n height: 4.75rem;\\n}\\n\\n.ds_icon--80 {\\n width: 5rem;\\n height: 5rem;\\n}\\n\\n.ds_icon--fill {\\n width: 100%;\\n height: 100%;\\n}\\n\\n/*------------------------------------*\\\\\\n #INSET TEXT\\n\\\\*------------------------------------*/\\n.ds_inset-text {\\n border-left: 0.5rem solid #b3b3b3;\\n padding: 1rem;\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_inset-text {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_inset-text {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_inset-text > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.ds_inset-text__text > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.ds_inset-text .ds_tag {\\n margin-bottom: 0.5rem;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_inset-text {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n }\\n}\\n/*------------------------------------*\\\\\\n LINK ITEM\\n Navigation element for a simple link with supporting metadata\\n\\\\*------------------------------------*/\\n.ds_link-item {\\n padding-bottom: calc(1.5rem + -2px);\\n border-bottom: 2px #ebebeb solid;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_link-item {\\n padding-bottom: calc(1.5rem + -2px);\\n }\\n}\\n.ds_link-item__title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin: 0 !important;\\n}\\n@media (min-width: 768px) {\\n .ds_link-item__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n.ds_link-item__summary {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin: 0;\\n margin-top: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_link-item__summary {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_link-item__summary {\\n margin-top: 0.5rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n LINK LIST\\n\\\\*------------------------------------*/\\n.ds_link-list {\\n margin-right: -32px;\\n overflow: hidden;\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n.ds_link-list > * {\\n margin-right: 32px;\\n}\\n@supports (display: grid) {\\n .ds_link-list {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_link-list > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_link-list .ds_link-item + .ds_link-item {\\n margin-top: 1.5rem;\\n }\\n}\\n@media (max-width: 767px) and (min-width: 768px) {\\n .ds_link-list .ds_link-item + .ds_link-item {\\n margin-top: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_link-list .ds_link-item {\\n float: left;\\n width: calc(33.3333333333% - 32px);\\n }\\n .ds_link-list .ds_link-item:nth-child(3n+1) {\\n clear: left;\\n margin-left: 0;\\n }\\n @supports (display: grid) {\\n .ds_link-list {\\n display: grid;\\n row-gap: 1.5rem;\\n grid-template-columns: 1fr 1fr 1fr;\\n }\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n PAGE METADATA\\n\\\\*------------------------------------*/\\n.ds_metadata {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin: 0;\\n overflow: hidden;\\n}\\n.ds_metadata__key {\\n display: inline;\\n font-weight: normal;\\n}\\n.ds_metadata__key::after {\\n content: \\\":\\\";\\n}\\n.ds_metadata__value {\\n display: inline;\\n font-weight: 700;\\n margin-left: 0;\\n}\\n.ds_metadata__value a {\\n font-weight: 400;\\n}\\n\\n/**\\n * Alternative display collapsing the metadata into a single line\\n */\\n.ds_metadata--inline {\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n color: #727272;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_metadata--inline {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n.ds_metadata--inline .ds_metadata__item {\\n display: inline;\\n position: relative;\\n}\\n.ds_metadata--inline .ds_metadata__item:not(:first-child) {\\n margin-left: 0.25em;\\n padding-left: calc(0.5em + 1px);\\n}\\n.ds_metadata--inline .ds_metadata__item:not(:first-child)::before {\\n background: currentColor;\\n content: \\\"\\\";\\n height: calc(1em - 1px);\\n left: 0;\\n position: absolute;\\n top: 2px;\\n width: 1px;\\n}\\n.ds_metadata--inline .ds_metadata__key {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n}\\n.ds_metadata--inline .ds_metadata__value {\\n font-weight: 400;\\n}\\n\\n/*------------------------------------*\\\\\\n NOTIFICATION BANNER\\n\\\\*------------------------------------*/\\n.ds_notification {\\n background: #333333;\\n border-bottom: 1px solid #ffffff;\\n color: #ffffff;\\n}\\n.ds_notification--success {\\n background-color: #428542;\\n color: #ffffff;\\n}\\n.ds_notification__content {\\n padding: 16px 0 15px;\\n position: relative;\\n}\\n.ds_notification__content > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_notification__content--has-close {\\n padding-right: 40px;\\n}\\n.ds_notification__text {\\n display: inline-block;\\n margin-right: 16px;\\n}\\n.ds_notification__text > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_notification__actions {\\n margin-top: 32px;\\n text-align: center;\\n}\\n.ds_notification__actions > * {\\n margin-bottom: 16px;\\n margin-top: 0;\\n white-space: nowrap;\\n width: 100%;\\n}\\n.ds_notification .ds_notification__actions {\\n margin-bottom: -16px;\\n}\\n.ds_notification__icon {\\n display: block;\\n position: absolute;\\n height: 32px;\\n line-height: 0;\\n margin-left: -4px;\\n margin-top: -4px;\\n padding: 2px;\\n width: 32px;\\n}\\n.ds_notification__icon + .ds_notification__text {\\n margin-left: 40px;\\n}\\n@media (min-width: 768px) {\\n .ds_notification__icon + .ds_notification__text {\\n margin-left: 64px;\\n }\\n}\\n.ds_notification__icon--colour {\\n color: #fdd522;\\n}\\n.ds_notification__icon--inverse {\\n background-color: #ffffff;\\n border-radius: 100px;\\n color: #333333;\\n}\\n.ds_notification__icon--inverse.ds_notification__icon--colour {\\n background-color: #fdd522;\\n}\\n.ds_notification__close {\\n background: transparent;\\n border-width: 0;\\n box-sizing: content-box;\\n color: currentColor;\\n display: none;\\n font-size: 14px;\\n height: 40px;\\n margin: 0;\\n padding: 0;\\n position: absolute;\\n right: -8px;\\n top: 8px;\\n width: 40px;\\n min-height: 0;\\n min-width: 0;\\n}\\n.ds_notification__close:focus {\\n background-color: #fdd522;\\n box-shadow: 0 3px #333333;\\n color: #333333;\\n outline: 0;\\n transition-duration: 0s;\\n}\\n.ds_notification__close:hover:not(:focus) {\\n background-color: transparent;\\n color: currentColor;\\n outline: 2px solid currentColor;\\n}\\n.ds_notification__close > * {\\n pointer-events: none;\\n}\\n.ds_notification .ds_button-group {\\n margin-top: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_notification .ds_button-group {\\n margin-top: 2rem;\\n }\\n}\\n\\n@media (min-width: 768px) {\\n .ds_notification__close {\\n top: 12px;\\n }\\n .ds_notification__icon {\\n margin-top: 0;\\n }\\n .ds_notification__actions {\\n text-align: left;\\n }\\n .ds_notification__actions > * {\\n width: auto;\\n }\\n .ds_notification__actions > *:not(last-child) {\\n margin-right: 16px;\\n }\\n}\\n@supports (display: flex) {\\n @media (min-width: 768px) {\\n .ds_notification__actions {\\n align-items: center;\\n display: inline-flex;\\n flex-wrap: wrap;\\n width: auto;\\n }\\n .ds_notification__actions > * {\\n flex-basis: auto;\\n flex-grow: initial;\\n }\\n }\\n}\\n.js-initialised .ds_notification__close {\\n display: block;\\n}\\n\\n/*------------------------------------*\\\\\\n NOTIFICATION PANEL\\n\\\\*------------------------------------*/\\n.ds_notification-panel {\\n margin-bottom: 1.5rem;\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n background: #428542;\\n color: #ffffff;\\n text-align: center;\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel {\\n margin-bottom: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel {\\n padding-top: 3rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel {\\n padding-bottom: 3rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel {\\n padding-left: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel {\\n padding-right: 2rem;\\n }\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_notification-panel {\\n outline: 4px solid currentColor !important;\\n outline-offset: -4px !important;\\n }\\n}\\n.ds_notification-panel:not(:first-child) {\\n margin-top: 2.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel:not(:first-child) {\\n margin-top: 3rem;\\n }\\n}\\n.ds_notification-panel--neutral {\\n background: #f8f8f8;\\n color: #333333;\\n}\\n.ds_notification-panel__title {\\n font-size: 1.875rem;\\n line-height: 1.3333333333;\\n margin-bottom: 1.5rem;\\n font-weight: 700;\\n margin-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel__title {\\n font-size: 2.75rem;\\n line-height: 1.2727272727;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel__title {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel__title {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_notification-panel__content > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_notification-panel__reference {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n}\\n@media (min-width: 768px) {\\n .ds_notification-panel__reference {\\n font-size: 1.5rem;\\n line-height: 1.6666666667;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n ARTICLE HEADER\\n title block for articles\\n\\\\*------------------------------------*/\\n.ds_page-header {\\n margin: 1rem 0 2rem;\\n}\\n.ds_page-header__title {\\n margin-bottom: 0;\\n}\\n.ds_page-header__metadata {\\n margin-top: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_page-header {\\n margin-top: 2rem;\\n }\\n .ds_page-header__label + .ds_page-header__title {\\n margin-top: -0.5rem;\\n }\\n}\\n\\n.ds_error-summary + .ds_page-header {\\n margin-top: 2.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_error-summary + .ds_page-header {\\n margin-top: 4rem;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n PAGINATION\\n\\\\*------------------------------------*/\\n.ds_pagination {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n text-align: center;\\n}\\n@media (min-width: 768px) {\\n .ds_pagination {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_pagination__list {\\n list-style-type: none;\\n margin: 0;\\n}\\n.ds_pagination__load-more + .ds_pagination__list {\\n display: none;\\n}\\n.ds_pagination__item {\\n display: inline-block;\\n margin-bottom: 0.25rem;\\n}\\n.ds_pagination__link {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n line-height: 2.5rem;\\n min-height: 2.5rem;\\n min-width: 2.5rem;\\n padding: 0 0.5rem;\\n text-decoration: none;\\n}\\n.ds_pagination__link:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_pagination__link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_pagination__link:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_pagination__link.ds_current {\\n color: currentColor;\\n position: relative;\\n}\\n.ds_pagination__link.ds_current::before {\\n border-bottom: 3px solid currentColor;\\n bottom: 0;\\n content: \\\"\\\";\\n left: 0;\\n position: absolute;\\n right: 0;\\n}\\n.ds_pagination__link.ds_current:not(:focus) {\\n background-color: #f8f8f8;\\n}\\n.ds_pagination__link--text:not(.ds_pagination__link--icon) {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n width: auto;\\n}\\n.ds_pagination__link--ellipsis {\\n min-width: 0;\\n pointer-events: none;\\n}\\n.ds_pagination__link--ellipsis, .ds_pagination__link--icon {\\n padding: 0;\\n}\\n.ds_pagination__link .ds_icon {\\n height: 2em;\\n width: 2em;\\n}\\n.ds_pagination__link > * {\\n pointer-events: none;\\n}\\n\\na.ds_pagination__link:not(.ds_current):not(:focus) {\\n text-decoration: underline;\\n text-underline-offset: 1px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_pagination__load-more + .ds_pagination__list {\\n display: block;\\n }\\n .ds_pagination__load-more {\\n display: none;\\n }\\n .ds_pagination__link--icon {\\n padding-left: 0px;\\n padding-right: 0px;\\n width: auto;\\n }\\n .ds_pagination__link--icon .ds_pagination__link-label {\\n padding-left: 1rem;\\n }\\n .ds_pagination__link--icon .ds_icon + .ds_pagination__link-label {\\n padding-right: 1rem;\\n padding-left: 0;\\n }\\n .ds_pagination .ds_icon {\\n margin: 0 0.25rem;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_pagination__link--icon .ds_pagination__link-label {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n }\\n}\\n@supports (display: flex) {\\n .ds_pagination__item {\\n margin-bottom: 0;\\n }\\n .ds_pagination__list {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 0.25rem;\\n justify-content: center;\\n }\\n .ds_pagination__link {\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n }\\n}\\n/*------------------------------------*\\\\\\n PHASE BANNER\\n\\\\*------------------------------------*/\\n.ds_phase-banner {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n padding-top: calc(1rem + -1px);\\n padding-bottom: 1rem;\\n background: #ebebeb;\\n border-top: 1px solid transparent;\\n clear: both;\\n}\\n@media (min-width: 768px) {\\n .ds_phase-banner {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_phase-banner {\\n padding-top: calc(1rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_phase-banner {\\n padding-bottom: 1rem;\\n }\\n}\\n.ds_phase-banner.no-bottom-margin {\\n margin-bottom: 0;\\n}\\n.ds_phase-banner__content {\\n display: table;\\n margin-bottom: 0;\\n}\\n.ds_phase-banner__tag.ds_tag {\\n margin-right: 1rem;\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n}\\n@media (min-width: 768px) {\\n .ds_phase-banner__tag.ds_tag {\\n margin-right: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_phase-banner__tag.ds_tag {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_phase-banner__text {\\n display: table-cell;\\n}\\n\\n@supports (display: flex) {\\n .ds_phase-banner__content {\\n align-items: baseline;\\n display: flex;\\n }\\n .ds_phase-banner__content--stacked {\\n flex-direction: column;\\n }\\n .ds_phase-banner__content--stacked > *:not(:last-child) {\\n margin-bottom: 0.5rem;\\n }\\n @media (min-width: 768px) {\\n .ds_phase-banner__content--stacked > *:not(:last-child) {\\n margin-bottom: 0.5rem;\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n SEARCH FACETS\\n\\\\*------------------------------------*/\\n.ds_facets {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n}\\n@media (min-width: 768px) {\\n .ds_facets {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_facets__list {\\n margin-bottom: 1.5rem;\\n}\\n.ds_facets__clear-button {\\n margin: 0 0 1.5rem;\\n min-height: 2.5rem;\\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\\n position: relative;\\n}\\n.ds_facets__clear-button .ds_facet__button-icon {\\n color: currentColor;\\n position: absolute;\\n}\\n\\n.ds_facet-group {\\n align-items: baseline;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 1rem 0.5rem;\\n padding: 1rem;\\n}\\n.ds_facet-group:nth-child(odd) {\\n background: rgba(0, 0, 0, 0.028);\\n}\\n.ds_facet-group:nth-child(even):last-child {\\n padding-bottom: 0;\\n}\\n\\n.ds_facet-wrapper {\\n align-items: baseline;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 1rem 0.5rem;\\n margin: 0;\\n}\\n\\n.ds_facet {\\n line-height: 1.5rem;\\n min-height: 2.5rem;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\\n position: relative;\\n text-align: center;\\n transition: background-color 0.2s;\\n margin: 0 0.5rem;\\n}\\n@supports (gap: 0) {\\n .ds_facet {\\n margin: 0;\\n }\\n}\\n.ds_facet:hover {\\n background: #ebebeb;\\n}\\n.ds_facet:focus-within {\\n background-color: #fdd522;\\n box-shadow: 0 3px #333333;\\n color: #333333;\\n outline: 0;\\n transition-duration: 0s;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_facet:focus-within {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_facet:focus-within .ds_facet__button-icon {\\n color: currentColor;\\n}\\n.ds_facet__button {\\n background-color: transparent;\\n border: none;\\n bottom: 0;\\n left: 0;\\n outline: none;\\n padding: 0.4375rem 0.75rem 0.4375rem 0;\\n position: absolute;\\n right: 0;\\n text-align: right;\\n top: 0;\\n}\\n.ds_facet__button:focus {\\n background-color: #fdd522;\\n z-index: -1;\\n}\\n.ds_facet__button:hover:not(:focus) {\\n background-color: transparent;\\n color: inherit;\\n outline: 0;\\n}\\n.ds_facet__button-icon {\\n color: #727272;\\n fill: currentColor;\\n height: 1.5rem;\\n margin-left: 0.5rem;\\n min-width: 1.5rem;\\n pointer-events: none;\\n vertical-align: middle;\\n width: 1.5rem;\\n}\\n\\n@supports selector(:focus-within) {\\n .ds_facet__button:focus {\\n background-color: transparent;\\n z-index: auto;\\n }\\n}\\n/*------------------------------------*\\\\\\n SEARCH FILTERS\\n\\\\*------------------------------------*/\\n.ds_search-filters {\\n margin-bottom: 0.5rem;\\n /**\\n [1] provides room for yellow focus outline on checkboxes\\n */\\n}\\n.ds_search-filters__title {\\n padding-bottom: calc(0.5rem + -1px);\\n padding-top: 0.5rem;\\n margin-bottom: 1rem;\\n border-bottom: 1px solid #b3b3b3;\\n margin-top: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters__title {\\n padding-bottom: calc(0.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters__title {\\n padding-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters__title {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_search-filters__title:not(:first-child) {\\n margin-top: 0;\\n}\\n.ds_search-filters__scrollable {\\n margin-left: -0.25rem; /* [1] */\\n max-height: 33.333333vh;\\n padding-left: 0.25rem; /* [1] */\\n padding-right: 0.5rem;\\n overflow-y: auto;\\n}\\n.ds_search-filters__scrollable::-webkit-scrollbar {\\n -webkit-appearance: none;\\n background-color: rgba(0, 0, 0, 0.1);\\n border-radius: 0.25rem;\\n width: 0.5rem;\\n}\\n.ds_search-filters__scrollable::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n.ds_search-filters__filter-count {\\n color: #333333;\\n font-weight: normal;\\n}\\n.ds_search-filters__checkboxes {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters__checkboxes {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_search-filters__checkboxes .ds_checkbox__input {\\n top: 0.25rem;\\n}\\n.ds_search-filters__checkboxes .ds_checkbox__label {\\n padding-right: 0;\\n}\\n.ds_search-filters__checkboxes .ds_checkbox--small {\\n margin-bottom: 0;\\n}\\n.ds_search-filters .ds_accordion-item:first-child {\\n border-top-color: transparent;\\n}\\n.ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\\n padding-right: 1rem;\\n padding-bottom: 2rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\\n padding-right: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters .ds_accordion.js-initialised .ds_accordion-item__body {\\n padding-bottom: 2.5rem;\\n }\\n}\\n.ds_search-filters .ds_accordion-item__body .ds_question:last-child .ds_datepicker,\\n.ds_search-filters .ds_accordion-item__body .ds_question:last-child .ds_input__wrapper {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters.js-initialised .js-apply-filter {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 767px) {\\n .ds_search-filters__title {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-filters__title {\\n display: block;\\n }\\n .ds_search-filters .ds_details__summary,\\n .ds_search-filters #filters-toggle {\\n display: none;\\n }\\n .ds_search-filters .ds_details__text {\\n display: block;\\n border-left: none;\\n margin: 0;\\n padding: 0;\\n }\\n .ds_search-filters .ds_checkbox--small .ds_checkbox__label::before {\\n top: 0.25rem;\\n }\\n .ds_search-filters .ds_checkbox--small .ds_checkbox__label::after {\\n top: 0.6875rem;\\n }\\n}\\n/*------------------------------------*\\\\\\n SEARCH RESULT\\n\\\\*------------------------------------*/\\n.ds_search-result {\\n margin: 0;\\n padding: 0;\\n padding-top: 1rem;\\n padding-bottom: calc(1.5rem + -1px);\\n}\\n@media (min-width: 768px) {\\n .ds_search-result {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result {\\n padding-bottom: calc(1.5rem + -1px);\\n }\\n}\\n.ds_search-result:first-child {\\n padding-top: 0;\\n}\\n.ds_search-result + .ds_search-result:not(.ds_search-result--promoted) {\\n border-top: 1px #b3b3b3 solid;\\n}\\n.ds_search-result--promoted + .ds_search-result:not(.ds_search-result--promoted) {\\n margin-top: -1px;\\n}\\n.ds_search-result--promoted {\\n padding-bottom: 1.5rem;\\n padding-top: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted {\\n padding-bottom: 1.5rem;\\n }\\n}\\n.ds_search-result--promoted-content {\\n background: #f8f8f8;\\n border-left: 4px solid #0065bd;\\n padding-top: 0.5rem;\\n padding-left: 1rem;\\n padding-right: 1rem;\\n padding-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-content {\\n padding-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-content {\\n padding-left: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-content {\\n padding-right: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-content {\\n padding-bottom: 1rem;\\n }\\n}\\n.ds_search-result--promoted-title {\\n margin-bottom: 0.5rem;\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n color: #727272;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result--promoted-title {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n.ds_search-result__title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin: 0 !important;\\n margin-bottom: 0.5rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__title {\\n margin-bottom: 0.5rem !important;\\n }\\n}\\n.ds_search-result__title:last-child {\\n margin-bottom: 0 !important;\\n}\\n.ds_search-result__sub-title {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin: 0;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__sub-title {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__sub-title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_search-result__summary {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__summary {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n.ds_search-result__metadata {\\n margin-top: 0.5rem;\\n font-size: 0.75rem;\\n line-height: 1.3333333333;\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__metadata {\\n margin-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__metadata {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n }\\n}\\n.ds_search-result__has-media {\\n display: flex;\\n}\\n.ds_search-result__media-wrapper {\\n padding-right: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__media-wrapper {\\n padding-right: 1rem;\\n }\\n}\\n.ds_search-result__media {\\n width: 96px;\\n}\\n@media (min-width: 480px) {\\n .ds_search-result__media {\\n width: 128px;\\n }\\n}\\n.ds_search-result__context {\\n margin: 0;\\n padding: 0;\\n margin-top: 1rem;\\n padding-left: 1rem;\\n font-size: 0.875rem;\\n line-height: 1.4285714286;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__context {\\n margin-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__context {\\n padding-left: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__context {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_search-result__context-key {\\n color: #727272;\\n margin: 0;\\n padding: 0;\\n position: relative;\\n}\\n.ds_search-result__context-key:before {\\n border-left: 4px solid #0065bd;\\n bottom: 0;\\n content: \\\"\\\";\\n left: -1rem;\\n position: absolute;\\n top: 0;\\n}\\n.ds_search-result__context-value {\\n margin: 0;\\n padding: 0;\\n margin-top: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__context-value {\\n margin-top: 0.5rem;\\n }\\n}\\n.ds_search-result__sublinks {\\n margin-bottom: 0;\\n margin-top: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-result__sublinks {\\n margin-top: 1rem;\\n }\\n}\\n.ds_search-result__sublinks-title {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n}\\n\\n/*------------------------------------*\\\\\\n SEARCH RESULTS\\n\\\\*------------------------------------*/\\n.ds_search-results {\\n margin-top: 0.5rem;\\n}\\n.ds_search-results__title {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin-bottom: 0.5rem;\\n font-weight: 400;\\n margin-top: 0 !important;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__title {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_search-results__title-query {\\n font-weight: 700;\\n}\\n.ds_search-results__suggestions + .ds_search-results__title {\\n margin-top: 1rem !important;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__suggestions + .ds_search-results__title {\\n margin-top: 1rem !important;\\n }\\n}\\n.ds_search-results__list {\\n border-bottom: 1px #b3b3b3 solid;\\n list-style-type: none;\\n margin: 0;\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__list {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_search-results__related {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n padding: 1rem;\\n background: #f8f8f8;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_search-results__related > :last-child {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related {\\n padding: 1rem;\\n }\\n}\\n.ds_search-results__related-title {\\n font-size: 1rem;\\n line-height: 1.5;\\n margin: 0;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related-title {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_search-results__related-title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_search-results__divider {\\n margin-top: -1px;\\n margin-bottom: 1.5rem;\\n}\\n\\n.ds_search-results.js-initialised .js-apply-sort {\\n display: none;\\n}\\n\\n/*------------------------------------*\\\\\\n #SEQUENTIAL NAVIGATION\\n previous and next buttons\\n\\\\*------------------------------------*/\\n.ds_sequential-nav {\\n margin-bottom: 56px;\\n margin-top: 56px;\\n overflow: hidden;\\n}\\n\\n@supports (display: grid) {\\n .ds_sequential-nav {\\n overflow: initial;\\n }\\n}\\n.ds_sequential-nav__button {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n background: transparent;\\n display: inline-block;\\n line-height: 24px;\\n padding: 12px 4px;\\n position: relative;\\n text-decoration: none;\\n width: 100%;\\n}\\n.ds_sequential-nav__button:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_sequential-nav__button:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_sequential-nav__button:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_sequential-nav__button:not([href]) {\\n display: none;\\n}\\n.ds_sequential-nav__button > * {\\n pointer-events: none;\\n}\\n.ds_sequential-nav__button--left::before, .ds_sequential-nav__button--right::before {\\n content: \\\"\\\";\\n height: 56px;\\n width: 56px;\\n background-color: #0065bd;\\n background-position: center;\\n border-radius: 56px;\\n border: 2px solid #0065bd;\\n display: inline-block;\\n position: absolute;\\n top: 8px;\\n transition: background-color 0.2s;\\n}\\n.ds_sequential-nav__button--left::after, .ds_sequential-nav__button--right::after {\\n color: #ffffff;\\n position: absolute;\\n top: 25px;\\n}\\n.ds_sequential-nav__button--left {\\n padding-left: 73px;\\n text-align: left;\\n}\\n.ds_sequential-nav__button--left::before {\\n left: 4px;\\n}\\n.ds_sequential-nav__button--left::after {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 5.5px 5.5px;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 22px;\\n width: 22px;\\n transform: rotate(-315deg);\\n left: 24px;\\n}\\n.ds_sequential-nav__button--right {\\n text-align: right;\\n float: right;\\n padding-right: 73px;\\n text-align: right;\\n}\\n.ds_sequential-nav__button--right::before {\\n right: 4px;\\n}\\n.ds_sequential-nav__button--right::after {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 5.5px 5.5px;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 22px;\\n width: 22px;\\n transform: rotate(-135deg);\\n right: 24px;\\n}\\n\\n.ds_sequential-nav__button:hover::before {\\n background-color: #00437d;\\n border-color: #00437d;\\n}\\n\\n.ds_sequential-nav__button:focus::before {\\n background-color: #333333;\\n border-color: #333333;\\n}\\n\\n.ds_sequential-nav__text {\\n display: inline-block;\\n padding-top: 24px;\\n position: relative;\\n width: 100%;\\n}\\n.ds_sequential-nav__text::before {\\n color: #333333;\\n content: attr(data-label);\\n font-size: 1rem;\\n font-weight: 700;\\n left: 0;\\n position: absolute;\\n right: 0;\\n text-transform: uppercase;\\n top: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_sequential-nav__text::before {\\n font-size: 1rem;\\n }\\n}\\n\\n.ds_sequential-nav__button:not(:focus) .ds_sequential-nav__text {\\n text-decoration: underline;\\n text-underline-offset: 1px;\\n}\\n\\n@media (min-width: 480px) {\\n .ds_sequential-nav__item {\\n width: calc(50% - 16px);\\n }\\n .ds_sequential-nav__item--prev {\\n float: left;\\n }\\n .ds_sequential-nav__item--next {\\n float: right;\\n }\\n}\\n@supports (display: grid) {\\n .ds_sequential-nav {\\n display: grid;\\n grid-gap: 32px 32px;\\n grid-template-areas: \\\"next\\\" \\\"prev\\\";\\n }\\n .ds_sequential-nav__item {\\n float: none;\\n width: 100%;\\n }\\n .ds_sequential-nav__item--prev {\\n grid-area: prev;\\n }\\n .ds_sequential-nav__item--next {\\n grid-area: next;\\n }\\n @media (min-width: 480px) {\\n .ds_sequential-nav {\\n grid-template-columns: 1fr 1fr;\\n grid-template-areas: \\\"prev next\\\";\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n SIDE NAVIGATION\\n\\\\*------------------------------------*/\\n.ds_side-navigation {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n border: 1px solid #b3b3b3;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_side-navigation {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_side-navigation {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_side-navigation {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_side-navigation__expand {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n background-color: #ffffff;\\n color: #0065bd;\\n cursor: pointer;\\n font-weight: 700;\\n line-height: inherit;\\n margin: 0;\\n padding: 15px 47px 15px 15px;\\n position: sticky;\\n text-align: left;\\n text-decoration: none;\\n top: 0;\\n transition: background-color 0.2s, box-shadow 0.2s;\\n width: 100%;\\n z-index: 2;\\n}\\n.ds_side-navigation__expand:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_side-navigation__expand:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_side-navigation__expand:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_side-navigation__expand--shadow {\\n box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.15);\\n}\\n.ds_side-navigation__expand:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_side-navigation__expand:hover .side-navigation__expand-indicator {\\n color: #00437d;\\n}\\n.ds_side-navigation__expand--shadow:focus {\\n box-shadow: 0 3px #333333, 0px 8px 5px rgba(0, 0, 0, 0.15);\\n}\\n.ds_side-navigation__expand-indicator {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.1875rem 0.1875rem;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.75rem;\\n width: 0.75rem;\\n transform: rotate(-45deg);\\n border-width: 0px 0px 3px 3px;\\n position: absolute;\\n right: 23px;\\n top: 17px;\\n transition: transform 0.2s, top 0.2s;\\n pointer-events: none;\\n}\\n.ds_side-navigation #show-side-navigation:focus ~ .ds_side-navigation__expand {\\n background: #fdd522;\\n box-shadow: 0 3px #333333;\\n color: #333333;\\n transition-duration: 0s;\\n}\\n.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__expand .ds_side-navigation__expand-indicator {\\n top: 23px;\\n transform: rotate(-225deg);\\n}\\n.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__expand:not(:focus):not(:hover) {\\n background-color: #f8f8f8;\\n color: #333333;\\n}\\n#show-side-navigation:checked ~ .ds_side-navigation__list, #show-side-navigation:checked ~ .ds_side-navigation__list .ds_side-navigation__list {\\n display: block;\\n}\\n.ds_side-navigation__list {\\n display: none;\\n list-style-type: none;\\n margin: 8px 16px;\\n}\\n.ds_side-navigation__list .ds_side-navigation__list {\\n margin: 0 0 0 16px;\\n}\\n.ds_side-navigation__item {\\n position: relative;\\n margin-bottom: 0;\\n}\\n.ds_side-navigation__item--disabled {\\n text-decoration: line-through;\\n}\\n.ds_side-navigation__link {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n margin-bottom: 2px;\\n padding: 12px 40px 10px 16px;\\n position: relative;\\n text-decoration: none;\\n}\\n.ds_side-navigation__link:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_side-navigation__link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_side-navigation__link:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_side-navigation__link:not([href]) {\\n pointer-events: none;\\n}\\n.ds_side-navigation__link:hover, .ds_side-navigation__link.ds_current {\\n position: relative;\\n}\\n.ds_side-navigation__link:hover::before, .ds_side-navigation__link.ds_current::before {\\n border-left: 2px solid #0065bd;\\n bottom: 0;\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n.ds_side-navigation__link:focus {\\n box-shadow: 0 3px #333333;\\n z-index: 2;\\n}\\n.ds_side-navigation__link:focus::before {\\n content: none;\\n}\\n.ds_side-navigation__link.ds_current:not(:focus) {\\n background-color: #f8f8f8;\\n}\\n.ds_side-navigation__link.ds_current:not(:focus):hover {\\n background-color: #f8f8f8;\\n}\\n.ds_side-navigation__link--inactive {\\n pointer-events: none;\\n background-color: #ebebeb;\\n}\\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link {\\n padding-left: 24px;\\n}\\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link::before {\\n border-left: 4px solid #b3b3b3;\\n bottom: 12px;\\n content: \\\"\\\";\\n left: 12px;\\n opacity: 0.26;\\n position: absolute;\\n right: 100%;\\n top: 12px;\\n}\\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link:hover::before, .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link.ds_current::before {\\n border-color: #0065bd;\\n opacity: 1;\\n}\\n.ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__list .ds_side-navigation__link:focus::before {\\n border-color: #333333;\\n opacity: 1;\\n}\\n\\n@media (max-width: 767px) {\\n .js-initialised.ds_side-navigation .ds_side-navigation__list {\\n display: block;\\n }\\n .js-initialised.ds_side-navigation > .ds_side-navigation__list {\\n margin: 0 15px;\\n max-height: var(--ds-side-nav-max-height);\\n overflow: hidden;\\n }\\n}\\n@media (max-width: 767px) and (prefers-reduced-motion: no-preference) {\\n .js-initialised.ds_side-navigation > .ds_side-navigation__list {\\n transition: max-height 0.2s, padding 0.2s;\\n }\\n}\\n@media (max-width: 767px) {\\n .js-initialised.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__list {\\n padding-bottom: 8px;\\n padding-top: 8px;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_side-navigation {\\n border-width: 0;\\n line-height: 24px;\\n }\\n .ds_side-navigation__expand {\\n display: none;\\n }\\n .ds_side-navigation__list {\\n display: block !important;\\n margin: 0;\\n max-height: none !important;\\n }\\n .ds_side-navigation #show-side-navigation {\\n display: none;\\n }\\n}\\n/*\\n SITE NAVIGATION\\n containing site-navigation and mobile equivalent\\n*/\\n.ds_site-navigation {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n display: none;\\n}\\n@media (min-width: 768px) {\\n .ds_site-navigation {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_site-navigation__toggle {\\n display: none;\\n}\\n.ds_site-navigation__list {\\n display: block;\\n list-style-type: none;\\n margin: 0;\\n}\\n.ds_site-navigation__item {\\n margin-bottom: 0;\\n}\\n.ds_site-navigation__link {\\n color: currentColor;\\n display: block;\\n padding: 8px 16px;\\n text-decoration: none;\\n white-space: nowrap;\\n}\\n.ds_site-navigation__link:focus {\\n position: relative;\\n z-index: 1;\\n}\\n\\n@media (max-width: 767px) {\\n .ds_site-navigation {\\n background-color: #f8f8f8;\\n margin: 0 -16px;\\n }\\n .ds_site-navigation--mobile {\\n overflow: hidden;\\n }\\n .ds_site-navigation__list {\\n padding: 16px;\\n }\\n .ds_site-navigation__item:not(:last-child) {\\n border-bottom: 1px solid #b3b3b3;\\n }\\n .ds_site-navigation__link {\\n padding-bottom: 16px;\\n padding-top: 16px;\\n }\\n .ds_site-navigation__link:hover:not(:focus), .ds_site-navigation__link.ds_current {\\n border-left: 4px solid #0065bd;\\n padding-left: 12px;\\n }\\n .ds_site-navigation__toggle:checked ~ .ds_site-navigation,\\n .ds_site-navigation--open {\\n border-top: 1px solid #ebebeb;\\n display: block;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_site-navigation {\\n line-height: 2;\\n }\\n .ds_site-navigation:not(.ds_site-navigation--mobile) {\\n display: block;\\n }\\n .ds_site-navigation__item {\\n display: inline-block;\\n }\\n .ds_site-navigation__list {\\n display: flex;\\n flex-wrap: wrap;\\n margin: 0 0 0 -16px;\\n }\\n .ds_site-navigation .ds_site-navigation__link {\\n position: relative;\\n transition-duration: 0s !important;\\n }\\n .ds_site-navigation .ds_site-navigation__link:hover:not(:focus) {\\n background: transparent;\\n outline-color: transparent;\\n }\\n .ds_site-navigation .ds_site-navigation__link::after {\\n background-color: currentColor;\\n bottom: -5px;\\n content: \\\"\\\";\\n height: 1px;\\n left: 50%;\\n opacity: 0;\\n position: absolute;\\n right: 50%;\\n transition: left 0.2s, right 0.2s, opacity 0.2s;\\n }\\n .ds_site-navigation .ds_site-navigation__link:hover::after {\\n left: 0;\\n opacity: 1;\\n right: 0;\\n }\\n .ds_site-navigation .ds_site-navigation__link::after {\\n bottom: 0;\\n height: 3px;\\n }\\n .ds_site-navigation .ds_site-navigation__link.ds_current:not(:focus) {\\n background-color: #f8f8f8;\\n color: #333333;\\n }\\n .ds_site-navigation .ds_site-navigation__link.ds_current:not(:focus):after {\\n border-bottom: 3px solid transparent;\\n left: 0;\\n opacity: 1;\\n right: 0;\\n }\\n .ds_site-navigation a.ds_site-navigation__link:focus {\\n box-shadow: 0 3px #333333;\\n outline: none;\\n padding-bottom: 5px;\\n }\\n}\\n@media screen and (min-width: 768px) and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_site-navigation a.ds_site-navigation__link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_site-navigation a.ds_site-navigation__link:focus::after {\\n content: none;\\n }\\n .ds_site-navigation a.ds_site-navigation__link:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n}\\n/*------------------------------------*\\\\\\n BRANDING\\n\\\\*------------------------------------*/\\n.ds_site-branding {\\n overflow: hidden;\\n padding: 12px 0;\\n position: relative;\\n}\\n.ds_site-branding__logo {\\n height: 32px;\\n margin-right: 1.5rem;\\n}\\n.ds_site-branding__logo-image {\\n height: 32px;\\n pointer-events: none;\\n width: auto;\\n}\\n.ds_site-branding__link {\\n color: currentColor;\\n display: inline-block;\\n position: relative;\\n text-decoration: none;\\n position: relative;\\n transition-duration: 0s !important;\\n}\\n.ds_site-branding__link:hover:not(:focus) {\\n background: transparent;\\n outline-color: transparent;\\n}\\n.ds_site-branding__link::after {\\n background-color: currentColor;\\n bottom: -5px;\\n content: \\\"\\\";\\n height: 2px;\\n left: 50%;\\n opacity: 0;\\n position: absolute;\\n right: 50%;\\n transition: left 0.2s, right 0.2s, opacity 0.2s;\\n}\\n.ds_site-branding__link:hover::after {\\n left: 0;\\n opacity: 1;\\n right: 0;\\n}\\n.ds_site-branding__title {\\n font-weight: 300;\\n line-height: 1.5rem;\\n}\\n.ds_site-branding__title::before {\\n background: #0065bd;\\n bottom: 12px;\\n content: \\\"\\\";\\n position: absolute;\\n margin-left: -0.75rem;\\n top: 12px;\\n width: 1px;\\n}\\n.ds_site-branding__logo, .ds_site-branding__title {\\n float: left;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_site-branding__link {\\n margin-bottom: 0;\\n }\\n .ds_site-branding__logo {\\n height: 40px;\\n margin-right: 3rem;\\n }\\n .ds_site-branding__logo-image {\\n height: 40px;\\n }\\n .ds_site-branding__title::before {\\n margin-left: -1.5rem;\\n }\\n}\\n@supports (display: flex) {\\n .ds_site-branding {\\n align-items: center;\\n display: flex;\\n flex-flow: wrap;\\n gap: 1rem 0;\\n }\\n .ds_site-branding__logo, .ds_site-branding__title {\\n float: none;\\n }\\n}\\n/*------------------------------------*\\\\\\n SITE FOOTER\\n\\\\*------------------------------------*/\\n.ds_site-footer {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n background-color: #ebebeb;\\n border-top: 1px solid #b3b3b3;\\n}\\n@media (min-width: 768px) {\\n .ds_site-footer {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n.ds_site-footer__content {\\n padding-top: 1.4375rem;\\n padding-bottom: 2rem;\\n}\\n.ds_site-footer__site-items {\\n border-bottom: 1px solid #b3b3b3;\\n font-size: 14px;\\n line-height: 1.7142857143;\\n list-style-type: none;\\n margin: -0.5rem 0 1.4375rem;\\n}\\n.ds_site-footer__copyright-logo {\\n display: block;\\n margin-bottom: 8px;\\n width: 32px;\\n position: relative;\\n transition-duration: 0s !important;\\n}\\n.ds_site-footer__copyright-logo:hover:not(:focus) {\\n background: transparent;\\n outline-color: transparent;\\n}\\n.ds_site-footer__copyright-logo::after {\\n background-color: currentColor;\\n bottom: -5px;\\n content: \\\"\\\";\\n height: 1px;\\n left: 50%;\\n opacity: 0;\\n position: absolute;\\n right: 50%;\\n transition: left 0.2s, right 0.2s, opacity 0.2s;\\n}\\n.ds_site-footer__copyright-logo:hover::after {\\n left: 0;\\n opacity: 1;\\n right: 0;\\n}\\n.ds_site-footer__copyright-logo img {\\n height: auto;\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .ds_site-footer__copyright > :last-child {\\n margin-bottom: 0;\\n }\\n}\\n.ds_site-footer__org {\\n max-width: 160px;\\n position: relative;\\n}\\n.ds_site-footer__org-logo {\\n display: block;\\n height: auto;\\n width: 100%;\\n}\\n.ds_site-footer__org-link {\\n display: block;\\n position: relative;\\n transition-duration: 0s !important;\\n}\\n.ds_site-footer__org-link:hover:not(:focus) {\\n background: transparent;\\n outline-color: transparent;\\n}\\n.ds_site-footer__org-link::after {\\n background-color: currentColor;\\n bottom: -5px;\\n content: \\\"\\\";\\n height: 1px;\\n left: 50%;\\n opacity: 0;\\n position: absolute;\\n right: 50%;\\n transition: left 0.2s, right 0.2s, opacity 0.2s;\\n}\\n.ds_site-footer__org-link:hover::after {\\n left: 0;\\n opacity: 1;\\n right: 0;\\n}\\n.ds_site-footer .ds_site-footer__org-link,\\n.ds_site-footer .ds_site-footer__copyright-logo {\\n color: currentColor !important;\\n}\\n\\n.ds_site-items__item, .ds_site-items__item:last-child {\\n display: inline-block;\\n margin-bottom: 1rem;\\n}\\n.ds_site-items__item:not(:last-child), .ds_site-items__item:last-child:not(:last-child) {\\n margin-right: 1.5rem;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_site-footer__copyright {\\n padding-left: 48px;\\n position: relative;\\n }\\n .ds_site-footer__copyright-logo {\\n position: absolute;\\n left: 0;\\n top: 2px;\\n }\\n .ds_site-footer__content {\\n margin-right: -32px;\\n overflow: hidden;\\n }\\n .ds_site-footer__content > * {\\n margin-right: 32px;\\n }\\n @supports (display: grid) {\\n .ds_site-footer__content {\\n display: grid;\\n grid-gap: 0 32px;\\n margin-right: 0;\\n overflow: visible;\\n }\\n .ds_site-footer__content > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n }\\n .ds_site-footer__copyright {\\n float: left;\\n width: calc(66.6666666667% - 32px);\\n }\\n .ds_site-footer__org {\\n float: right;\\n width: calc(25% - 32px);\\n }\\n @supports (display: grid) {\\n .ds_site-footer__content {\\n display: grid;\\n grid-gap: 0 32px;\\n grid-template-columns: repeat(12, 1fr);\\n grid-template-areas: \\\"a a a a a a a a a a a a\\\" \\\"b b b b b b b b . c c c\\\";\\n }\\n .ds_site-footer__site-items {\\n grid-area: a;\\n }\\n .ds_site-footer__copyright {\\n grid-area: b;\\n }\\n .ds_site-footer__org {\\n grid-area: c;\\n justify-self: right;\\n width: 100% !important;\\n }\\n }\\n}\\n/*------------------------------------*\\\\\\n SITE HEADER\\n\\\\*------------------------------------*/\\n.ds_site-header {\\n background-color: #ffffff;\\n border-bottom: 1px solid #ebebeb;\\n margin-bottom: -1px;\\n position: relative;\\n}\\n.ds_site-header::before {\\n border-top: 4px solid #0065bd;\\n content: \\\"\\\";\\n display: block;\\n}\\n.ds_site-header--gradient::before {\\n border-image-slice: 1;\\n border-image-source: linear-gradient(to right, #0065bd, #002d54);\\n}\\n.ds_site-header__content {\\n overflow: auto;\\n}\\n.ds_site-header .ds_site-branding {\\n float: left;\\n}\\n.ds_site-header .ds_site-header__controls {\\n float: right;\\n height: calc(100% + 1px);\\n margin-bottom: -1px;\\n}\\n.ds_site-header .ds_site-navigation {\\n clear: both;\\n}\\n.ds_site-header__search {\\n float: right;\\n margin: 8px 0;\\n}\\n.ds_site-header__search .ds_input__wrapper {\\n margin: 0;\\n}\\n.ds_site-header__control {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n color: inherit;\\n cursor: pointer;\\n font-size: 1rem;\\n font-weight: 400;\\n min-height: 48px;\\n margin: 0 -16px -1px 0;\\n padding: 16px;\\n text-decoration: none;\\n}\\n.ds_site-header__control:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_site-header__control:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n.ds_site-header__control:hover:not(:focus) {\\n background-color: #d9eeff;\\n}\\n.ds_site-header__control--active {\\n background-color: #f8f8f8;\\n box-shadow: -1px -1px 0px rgba(0, 0, 0, 0.08);\\n}\\n.ds_site-header__control--active .ds_site-header__control-icon {\\n display: none;\\n}\\n.ds_site-header__control--active .ds_site-header__control-icon--active-icon {\\n display: block;\\n}\\n.ds_site-header__control-icon {\\n height: 24px;\\n width: 24px;\\n}\\n.ds_site-header__control-icon--active-icon {\\n display: none;\\n}\\n.ds_site-header__control-text {\\n float: left;\\n margin-right: 8px;\\n pointer-events: none;\\n}\\n@media (min-width: 768px) {\\n .ds_site-header__navigation {\\n border-top: 1px solid #ebebeb;\\n margin-top: -1px;\\n }\\n}\\n\\n@supports (display: grid) {\\n .ds_site-header__content {\\n align-items: center;\\n display: grid;\\n grid-template-columns: 1fr auto;\\n grid-template-areas: \\\"branding controls\\\" \\\"nav nav\\\" \\\"search search\\\";\\n overflow: initial;\\n }\\n .ds_site-header .ds_site-branding {\\n grid-area: branding;\\n }\\n .ds_site-header__controls {\\n grid-area: controls;\\n }\\n .ds_site-header__search {\\n grid-area: search;\\n }\\n .ds_site-header .ds_site-navigation--mobile {\\n grid-area: nav;\\n }\\n @media (min-width: 768px) {\\n .ds_site-header__content {\\n grid-template-columns: auto max-content;\\n grid-template-areas: \\\"branding search\\\";\\n }\\n }\\n}\\n@supports (display: flex) {\\n .ds_site-header__control {\\n align-items: center;\\n display: flex;\\n height: 100%;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_site-header__controls {\\n display: none;\\n }\\n}\\n/*------------------------------------*\\\\\\n SEARCH BOX\\n\\\\*------------------------------------*/\\n.ds_site-search {\\n box-sizing: border-box;\\n color: #333333;\\n min-height: 48px;\\n}\\n.ds_site-search__input[type=text], .ds_site-search__input[type=search] {\\n background: #f8f8f8;\\n border-color: #727272;\\n margin-bottom: 0;\\n min-height: 48px;\\n}\\n.ds_site-search__input[type=text]:focus, .ds_site-search__input[type=search]:focus {\\n border-color: currentColor;\\n}\\n.ds_site-search--large {\\n margin-bottom: 48px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_site-search {\\n min-height: 48px;\\n }\\n .ds_site-search__button {\\n height: 48px;\\n width: 48px;\\n }\\n}\\n/*------------------------------------*\\\\\\n #SKIP LINKS\\n\\\\*------------------------------------*/\\n.ds_skip-links {\\n height: 0;\\n position: relative;\\n z-index: 1;\\n}\\n@supports selector(:focus-within) {\\n .ds_skip-links {\\n height: auto;\\n }\\n}\\n\\n.ds_skip-links__list {\\n list-style-type: none;\\n margin: 0;\\n}\\n\\n.ds_skip-links__item {\\n margin: 0;\\n}\\n\\n.ds_skip-links__link {\\n clip: rect(1px 1px 1px 1px);\\n display: inline-block;\\n height: 1px;\\n left: 10px;\\n margin-bottom: 1rem;\\n overflow: hidden;\\n position: absolute;\\n top: 10px;\\n width: 1px;\\n}\\n.ds_skip-links__link:focus {\\n clip: auto;\\n height: auto;\\n overflow: visible;\\n padding: 0.5rem 0.375rem;\\n width: auto;\\n z-index: 10000;\\n}\\n@media (min-width: 768px) {\\n .ds_skip-links__link:focus {\\n padding: 0.5rem 1rem;\\n }\\n}\\n\\n.ds_skip-links--static .ds_skip-links__link {\\n position: static;\\n}\\n\\n.ds_skip-links:not(:focus-within) {\\n position: absolute;\\n}\\n\\n/*------------------------------------*\\\\\\n SORT OPTIONS\\n\\\\*------------------------------------*/\\n.ds_sort-options {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin-bottom: 1.5rem;\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 8px 24px;\\n}\\n@media (min-width: 768px) {\\n .ds_sort-options {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_sort-options {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_sort-options .ds_button,\\n.ds_sort-options .ds_label,\\n.ds_sort-options .ds_select-wrapper {\\n margin: 0 0.5rem;\\n}\\n@supports (gap: 0) {\\n .ds_sort-options .ds_button,\\n .ds_sort-options .ds_label,\\n .ds_sort-options .ds_select-wrapper {\\n margin: 0;\\n }\\n .ds_sort-options .ds_label {\\n margin-right: -1rem;\\n }\\n}\\n.ds_sort-options .ds_button {\\n min-height: 2.5rem;\\n padding: 0.5rem 0.75rem;\\n}\\n.ds_sort-options .ds_label {\\n font-weight: normal;\\n}\\n.ds_sort-options .ds_select {\\n min-height: 2.5rem;\\n}\\n.ds_sort-options .ds_select-arrow {\\n width: 2.5rem;\\n}\\n.ds_sort-options .ds_select-wrapper {\\n display: inline-grid;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_sort-options .ds_select {\\n min-height: 2.5rem;\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n }\\n}\\n/*------------------------------------*\\\\\\n #STEP NAVIGATION\\n Step navigation is an enhancement to the DS accordion\\n\\\\*------------------------------------*/\\n.ds_step-navigation {\\n counter-reset: section;\\n}\\n.ds_step-navigation__list {\\n list-style-type: none;\\n margin: 0;\\n}\\n.ds_step-navigation__list li {\\n margin-bottom: 0;\\n}\\n.ds_step-navigation__title {\\n font-size: 19px;\\n line-height: 1.5rem;\\n}\\n.ds_step-navigation__title-link {\\n display: block;\\n margin-bottom: 1.5rem;\\n margin-top: 0.5rem;\\n text-decoration: underline;\\n}\\n@media (min-width: 768px) {\\n .ds_step-navigation__title-link {\\n margin-bottom: 1.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_step-navigation__title-link {\\n margin-top: 0.5rem;\\n }\\n}\\n.ds_step-navigation__current-link::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: -24px;\\n right: 100%;\\n height: 1px;\\n background: #333333;\\n margin-top: 12px;\\n}\\n.ds_step-navigation__count {\\n background-color: #ffffff;\\n border: 1px solid currentColor;\\n border-radius: 20px;\\n color: #333333;\\n content: counter(section);\\n counter-increment: section;\\n display: block;\\n font-size: 16px;\\n font-weight: 700;\\n height: 32px;\\n left: -40px;\\n line-height: 30px;\\n position: absolute;\\n text-align: center;\\n top: 0.75rem;\\n width: 32px;\\n}\\n.ds_current .ds_step-navigation__count {\\n background-color: #f8f8f8;\\n border: 2px solid #0065bd;\\n line-height: 28px;\\n}\\n.ds_step-navigation .ds_accordion {\\n margin-left: 40px;\\n}\\n.ds_step-navigation .ds_accordion-item {\\n position: relative;\\n}\\n.ds_step-navigation .ds_accordion-item::before {\\n background: #333333;\\n bottom: -1.0625rem;\\n content: \\\"\\\";\\n display: block;\\n left: -24px;\\n position: absolute;\\n top: 2.4375rem;\\n width: 1px;\\n}\\n.ds_step-navigation .ds_accordion-item:last-child::before {\\n bottom: 0 !important;\\n}\\n.ds_step-navigation .ds_accordion-item:last-child::after {\\n background: #333333;\\n bottom: -1px;\\n content: \\\"\\\";\\n display: block;\\n height: 1px;\\n left: -30px;\\n position: absolute;\\n width: 13px;\\n}\\n.ds_step-navigation__or, .ds_step-navigation__and {\\n counter-increment: section -1;\\n}\\n.ds_step-navigation__or .ds_step-navigation__count, .ds_step-navigation__and .ds_step-navigation__count {\\n background-color: transparent;\\n border: none;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_step-navigation__count {\\n font-size: 19px;\\n height: 40px;\\n left: -48px;\\n line-height: 38px;\\n width: 40px;\\n }\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_current .ds_step-navigation__count {\\n line-height: 36px;\\n }\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_step-navigation__current-link::before {\\n left: -28px;\\n margin-top: 16px;\\n }\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion {\\n margin-left: 48px;\\n }\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion-item::before {\\n bottom: -1.0625rem;\\n left: -28px;\\n top: 3.0625rem;\\n }\\n .ds_step-navigation:not(.ds_step-navigation--small) .ds_accordion-item:last-child::after {\\n left: -34px;\\n }\\n}\\n/*------------------------------------*\\\\\\n #SUMMARY LIST\\n\\\\*------------------------------------*/\\n.ds_summary-list {\\n margin-bottom: 1.5rem;\\n list-style-type: none;\\n margin-left: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_summary-list__key {\\n font-weight: 700;\\n}\\n.ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\\n margin-bottom: 0.5rem;\\n display: block;\\n overflow-wrap: break-word;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_summary-list__item {\\n padding-top: 1rem;\\n padding-bottom: calc(0.5rem + -1px);\\n border-bottom: 1px solid #b3b3b3;\\n margin: 0;\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list__item {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list__item {\\n padding-bottom: calc(0.5rem + -1px);\\n }\\n}\\n.ds_summary-list--no-border .ds_summary-list__item {\\n padding-bottom: 0.5rem;\\n border-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list--no-border .ds_summary-list__item {\\n padding-bottom: 0.5rem;\\n }\\n}\\n.ds_summary-list__value > :first-child {\\n margin-top: 0;\\n}\\n.ds_summary-list__value > :last-child {\\n margin-bottom: 0;\\n}\\n.ds_summary-list__value .visually-hidden:first-child + * {\\n margin-top: 0;\\n}\\n.ds_summary-list__answer::before, .ds_summary-list__answer::after {\\n content: \\\"\\\";\\n}\\n.ds_summary-list__actions-list {\\n display: flex;\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n.ds_summary-list__actions-list-item {\\n margin: 0;\\n padding: 0;\\n}\\n.ds_summary-list__actions-list-item:not(:first-child) {\\n margin-left: 0.5rem;\\n padding-left: calc(0.5rem + 1px);\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list__actions-list-item:not(:first-child) {\\n margin-left: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-list__actions-list-item:not(:first-child) {\\n padding-left: calc(0.5rem + 1px);\\n }\\n}\\n.ds_summary-list__actions-list-item:not(:first-child)::before {\\n background: #727272;\\n content: \\\"\\\";\\n height: calc(1em - 2px);\\n left: 0;\\n position: absolute;\\n top: calc(50% - (1em - 2px) / 2);\\n width: 1px;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_summary-list {\\n border-collapse: collapse;\\n display: table;\\n width: 100%;\\n }\\n .ds_summary-list__item {\\n display: table-row;\\n padding: 0;\\n }\\n .ds_summary-list__key, .ds_summary-list__value, .ds_summary-list__actions {\\n display: table-cell;\\n padding: 1rem 1rem 0.9375rem 1rem;\\n }\\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__key,\\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__value,\\n .ds_summary-list--no-border .ds_summary-list__item .ds_summary-list__action {\\n padding-bottom: 1rem;\\n }\\n .ds_summary-list__key {\\n padding-left: 0;\\n width: 50%;\\n }\\n .ds_summary-list__value {\\n width: 50%;\\n }\\n .ds_summary-list__actions-list {\\n justify-content: flex-end;\\n }\\n .ds_summary-list__actions {\\n padding-right: 0;\\n text-align: right;\\n }\\n}\\n@media (min-width: 992px) {\\n .ds_summary-list--short-keys .ds_summary-list__key {\\n width: 30%;\\n }\\n .ds_summary-list--short-keys .ds_summary-list__value {\\n width: 70%;\\n }\\n}\\n.ds_summary-card {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n border: 1px solid #b3b3b3;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_summary-card__header {\\n padding-top: calc(1.5rem + -1px);\\n padding-right: calc(1.5rem + -1px);\\n padding-bottom: calc(1.5rem + -1px);\\n padding-left: calc(1.5rem + -1px);\\n align-items: flex-start;\\n border-bottom: 1px solid #f8f8f8;\\n background: #f8f8f8;\\n display: flex;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__header {\\n padding-top: calc(1.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__header {\\n padding-right: calc(1.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__header {\\n padding-bottom: calc(1.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__header {\\n padding-left: calc(1.5rem + -1px);\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_summary-card__header {\\n flex-direction: column;\\n }\\n}\\n.ds_summary-card__header-title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n font-weight: 700;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__header-title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n.ds_summary-card__header .ds_link {\\n font-weight: 700;\\n}\\n.ds_summary-card__actions-list {\\n display: flex;\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n padding-left: 2rem;\\n}\\n@media (max-width: 767px) {\\n .ds_summary-card__actions-list {\\n padding-left: 0;\\n padding-top: 0.5rem;\\n }\\n}\\n.ds_summary-card__actions-list-item {\\n margin: 0;\\n padding: 0;\\n}\\n.ds_summary-card__actions-list-item:not(:first-child) {\\n margin-left: 0.5rem;\\n padding-left: calc(0.5rem + 1px);\\n position: relative;\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__actions-list-item:not(:first-child) {\\n margin-left: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__actions-list-item:not(:first-child) {\\n padding-left: calc(0.5rem + 1px);\\n }\\n}\\n.ds_summary-card__actions-list-item:not(:first-child)::before {\\n background: #727272;\\n content: \\\"\\\";\\n height: calc(1em - 2px);\\n left: 0;\\n position: absolute;\\n top: calc(50% - (1em - 2px) / 2);\\n width: 1px;\\n}\\n.ds_summary-card__content {\\n padding-top: 0.5rem;\\n padding-right: calc(1.5rem + -1px);\\n padding-bottom: calc(0.5rem + -1px);\\n padding-left: calc(1.5rem + -1px);\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__content {\\n padding-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__content {\\n padding-right: calc(1.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__content {\\n padding-bottom: calc(0.5rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_summary-card__content {\\n padding-left: calc(1.5rem + -1px);\\n }\\n}\\n.ds_summary-card .ds_summary-list {\\n margin-bottom: 0;\\n}\\n.ds_summary-card .ds_summary-list__item:last-child {\\n border-color: transparent;\\n}\\n\\n/*------------------------------------*\\\\\\n TABLES\\n\\\\*------------------------------------*/\\n.ds_table {\\n width: 100%;\\n margin-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_table {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_table caption {\\n margin-bottom: 1rem;\\n font-size: 1rem;\\n font-weight: 700;\\n line-height: 1.5;\\n text-align: left;\\n}\\n@media (min-width: 768px) {\\n .ds_table caption {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_table tbody,\\n.ds_table thead,\\n.ds_table tfoot {\\n border: 1px solid #b3b3b3;\\n}\\n.ds_table tr {\\n border-bottom: 1px solid #ebebeb;\\n}\\n.ds_table tr > * {\\n padding: 0.5rem 1rem 0.4375rem 0.5rem;\\n}\\n.ds_table tr:last-child {\\n border-bottom: 0;\\n}\\n.ds_table th {\\n background-color: #ebebeb;\\n font-weight: 700;\\n position: relative;\\n text-align: left;\\n}\\n.ds_table th,\\n.ds_table td {\\n vertical-align: top;\\n}\\n.ds_table th[colspan] {\\n border: 1px solid #b3b3b3;\\n}\\n.ds_table th:not(:first-child)::before {\\n border-left: 1px solid #b3b3b3;\\n bottom: 8px;\\n content: \\\"\\\";\\n left: -1px;\\n position: absolute;\\n top: 8px;\\n}\\n.ds_table thead > tr:last-child {\\n border-bottom: 0;\\n}\\n.ds_table tbody > tr > td {\\n background-color: #ffffff;\\n}\\n.ds_table tbody > tr:nth-child(even) > td {\\n background-color: #f8f8f8;\\n}\\n\\n@media (max-width: 767px) {\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] {\\n display: block;\\n max-width: 100%;\\n overflow-x: auto;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child {\\n left: 0;\\n position: sticky;\\n z-index: 1;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] caption {\\n display: block;\\n left: 0;\\n position: sticky;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child::after {\\n background: linear-gradient(90deg, rgba(0, 0, 0, 0.07), rgba(0, 0, 0, 0));\\n content: \\\"\\\";\\n height: 100%;\\n position: absolute;\\n right: -10px;\\n top: 0;\\n width: 10px;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > :first-child::before {\\n background: #b3b3b3;\\n content: \\\"\\\";\\n height: 100%;\\n left: -1px;\\n position: absolute;\\n top: 0;\\n width: 1px;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > th:first-child {\\n background: #ebebeb;\\n }\\n .ds_table.js-is-scrolling[data-smallscreen=scrolling] tr > td:first-child {\\n border-right: 1px solid #ebebeb;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] {\\n border: 0;\\n margin-bottom: 0;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] thead {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tbody {\\n border: none;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr {\\n border: 0;\\n display: block;\\n margin-bottom: 16px;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > * {\\n border: 1px solid #b3b3b3;\\n display: block;\\n overflow: auto;\\n padding-left: calc(50% - 8px);\\n position: relative;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:not(:last-child) {\\n border-bottom-color: #ebebeb;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > th:last-child {\\n border-width: 0;\\n margin-top: 32px;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:not(:first-child) {\\n border-top-width: 0;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td::before {\\n content: attr(data-heading);\\n display: block;\\n position: absolute;\\n font-weight: 700;\\n left: 0;\\n margin-left: 16px;\\n margin-right: 16px;\\n text-align: left;\\n width: calc(50% - 16px);\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:first-child {\\n box-shadow: inset 0 4px 0 #ebebeb;\\n padding-top: 11px;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:nth-child(odd) {\\n background-color: #ffffff;\\n }\\n .js-enabled .ds_table[data-smallscreen=boxes] tr > td:nth-child(even) {\\n background-color: #f8f8f8;\\n }\\n}\\n/*------------------------------------*\\\\\\n TABS\\n\\\\*------------------------------------*/\\n.ds_tabs {\\n margin-bottom: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_tabs {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_tabs__title {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin: 0;\\n padding: 0;\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_tabs__title {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs__title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_tabs__list {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n margin-bottom: 2.5rem;\\n list-style: none;\\n margin-left: 0;\\n padding-left: 32px;\\n}\\n@media (min-width: 768px) {\\n .ds_tabs__list {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs__list {\\n margin-bottom: 3rem;\\n }\\n}\\n.ds_tabs__tab {\\n position: relative;\\n}\\n.ds_tabs__tab::before {\\n background: currentColor;\\n content: \\\"—\\\";\\n height: 1px;\\n left: -32px;\\n overflow: hidden;\\n position: absolute;\\n top: 12px;\\n width: 20px;\\n}\\n.ds_tabs__tab.ds_current {\\n font-weight: 700;\\n}\\n.ds_tabs__content + .ds_tabs__content {\\n margin-top: 1.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_tabs__content + .ds_tabs__content {\\n margin-top: 1.5rem;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised {\\n margin-bottom: 1.5rem;\\n }\\n}\\n@media (max-width: 767px) and (min-width: 768px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised {\\n margin-bottom: 2rem;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n background-color: #ffffff;\\n border: 2px solid #ebebeb;\\n color: #0065bd;\\n font-weight: 700;\\n margin: 0;\\n padding: 14px 38px 14px 14px;\\n text-align: left;\\n text-decoration: none;\\n width: 100%;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n }\\n}\\n@media screen and (max-width: 767px) and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:hover:not(:focus) {\\n color: #00437d;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle::after {\\n content: \\\"\\\";\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px 0.1875em 0.1875em;\\n border-top-color: transparent;\\n display: inline-block;\\n height: 0.75em;\\n width: 0.75em;\\n transform: rotate(-45deg);\\n border-width: 0px 0px 3px 3px;\\n position: absolute;\\n right: 16px;\\n top: 17px;\\n transition: transform 0.2s;\\n pointer-events: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus {\\n border: 0;\\n padding: 16px 40px 16px 16px;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle:focus::after {\\n right: 18px;\\n top: 19px;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle + .ds_tabs__list {\\n display: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true] {\\n border-bottom: 0;\\n color: #333333;\\n padding-bottom: 16px;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:not(:focus) {\\n background-color: #f8f8f8;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]::after {\\n top: 23px;\\n transform: rotate(-225deg);\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true]:focus::after {\\n top: 25px;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__toggle[aria-expanded=true] + .ds_tabs__list {\\n display: block;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__list {\\n font-size: 1rem;\\n line-height: 1.5;\\n border: 2px solid #ebebeb;\\n border-top: 0;\\n margin: 0;\\n padding: 8px 6px 6px 6px;\\n }\\n}\\n@media (max-width: 767px) and (min-width: 768px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__list {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab {\\n margin: 0 0 2px 0;\\n padding: 0;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab::before {\\n display: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n padding: 11px 16px;\\n text-decoration: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n }\\n}\\n@media screen and (max-width: 767px) and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n@media (max-width: 767px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab-link:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab.ds_current {\\n font-weight: 400;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link:not(:focus) {\\n background-color: #f8f8f8;\\n border-left: 2px solid #0065bd;\\n color: #333333;\\n padding-left: 14px;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__title {\\n display: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__current {\\n margin-top: 0.5rem;\\n }\\n}\\n@media (max-width: 767px) and (min-width: 768px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__navigation.js-initialised .ds_tabs__current {\\n margin-top: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__toggle {\\n display: none;\\n }\\n .ds_tabs.ds_tabs--links .ds_tabs__current {\\n display: none;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__list, .ds_tabs.ds_tabs--links .ds_tabs__list {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 8px;\\n margin: 0;\\n padding: 0;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab-link {\\n display: block;\\n position: relative;\\n transition: background-color 0.2s, outline-color 0.2s;\\n z-index: 1;\\n outline: 0 !important;\\n color: #333333;\\n display: inline-block;\\n padding: 12px 16px;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\\n background-color: #fdd522;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n color: #333333;\\n }\\n}\\n@media screen and (min-width: 768px) and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: 2px !important;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__tab-link:hover:not(:focus), .ds_tabs.ds_tabs--links .ds_tabs__tab-link:hover:not(:focus) {\\n background-color: #d9eeff;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab-link:hover, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:hover {\\n color: #00437d;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab-link:focus {\\n color: #333333;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab, .ds_tabs.ds_tabs--links .ds_tabs__tab {\\n background-color: #f8f8f8;\\n margin: 0;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab::before, .ds_tabs.ds_tabs--links .ds_tabs__tab::before {\\n display: none;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current {\\n background-color: #ffffff;\\n font-weight: 400;\\n margin-bottom: -2px !important;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link {\\n border-top: 3px solid #0065bd;\\n border-left: 2px solid #b3b3b3;\\n border-right: 2px solid #b3b3b3;\\n border-bottom: 0;\\n color: #333333;\\n padding: calc(12px - 3px) calc(16px - 2px) calc(12px + 2px);\\n text-decoration: none;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab.ds_current .ds_tabs__tab-link:focus, .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link:focus {\\n border: 0;\\n color: #333333;\\n padding: 12px 16px calc(12px + 2px);\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab:focus-within, .ds_tabs.ds_tabs--links .ds_tabs__tab:focus-within {\\n margin-bottom: -2px !important;\\n }\\n .ds_tabs.js-initialised .ds_tabs__tab:focus-within .ds_tabs__tab-link, .ds_tabs.ds_tabs--links .ds_tabs__tab:focus-within .ds_tabs__tab-link {\\n padding: 12px 16px calc(12px + 2px);\\n }\\n .ds_tabs.js-initialised .ds_tabs__title, .ds_tabs.ds_tabs--links .ds_tabs__title {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n }\\n .ds_tabs.js-initialised .ds_tabs__content, .ds_tabs.ds_tabs--links .ds_tabs__content {\\n border-top: 2px solid #b3b3b3;\\n margin: 0;\\n padding-top: calc(1.5rem + -2px);\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content, .ds_tabs.ds_tabs--links .ds_tabs__content {\\n padding-top: calc(1.5rem + -2px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\\n border: 2px solid #b3b3b3;\\n padding-top: calc(1.5rem + -2px);\\n padding-right: calc(1rem + -2px);\\n padding-bottom: calc(1.5rem + -2px);\\n padding-left: calc(1rem + -2px);\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\\n padding-top: calc(1.5rem + -2px);\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\\n padding-right: calc(1rem + -2px);\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\\n padding-bottom: calc(1.5rem + -2px);\\n }\\n}\\n@media (min-width: 768px) and (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered {\\n padding-left: calc(1rem + -2px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.js-initialised .ds_tabs__content--bordered > :last-child, .ds_tabs.ds_tabs--links .ds_tabs__content--bordered > :last-child {\\n margin-bottom: 0;\\n }\\n .ds_tabs.js-initialised .ds_tabs__content--hidden, .ds_tabs.ds_tabs--links .ds_tabs__content--hidden {\\n display: none;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tabs.ds_tabs--links .ds_tabs__tab.ds_current .ds_tabs__tab-link:hover {\\n background-color: inherit;\\n color: inherit;\\n }\\n}\\n\\n/*------------------------------------*\\\\\\n TAG\\n\\\\*------------------------------------*/\\n.ds_tag {\\n font-size: 1rem;\\n line-height: 1.5;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n background: #d9eeff;\\n color: #00437d;\\n display: inline-block;\\n font-weight: 400;\\n outline: 1px solid rgba(0, 101, 189, 0.8);\\n outline-offset: -1px;\\n white-space: nowrap;\\n}\\n@media (min-width: 768px) {\\n .ds_tag {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tag {\\n padding-left: 0.5rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_tag {\\n padding-right: 0.5rem;\\n }\\n}\\n.ds_tag--grey {\\n background-color: #ebebeb;\\n color: #525252;\\n outline-color: rgba(82, 82, 82, 0.8);\\n}\\n.ds_tag--green {\\n background-color: #e0f0e0;\\n color: #2d5a2d;\\n outline-color: rgba(45, 90, 45, 0.8);\\n}\\n.ds_tag--teal {\\n background-color: #cdf3ef;\\n color: #1b6e67;\\n outline-color: rgba(27, 110, 103, 0.8);\\n}\\n.ds_tag--darkblue {\\n background-color: #d9eeff;\\n color: #000b14;\\n outline-color: rgba(0, 11, 20, 0.8);\\n}\\n.ds_tag--blue {\\n background-color: #d9eeff;\\n color: #00437d;\\n outline-color: rgba(0, 67, 125, 0.8);\\n}\\n.ds_tag--purple {\\n background-color: #f8e6f7;\\n color: #5e1959;\\n outline-color: rgba(94, 25, 89, 0.8);\\n}\\n.ds_tag--pink {\\n background-color: #ffe4f3;\\n color: #a5005b;\\n outline-color: rgba(165, 0, 91, 0.8);\\n}\\n.ds_tag--red {\\n background-color: #fee6e1;\\n color: #951804;\\n outline-color: rgba(149, 24, 4, 0.8);\\n}\\n.ds_tag--orange {\\n background-color: #fde7db;\\n color: #b8440a;\\n outline-color: rgba(184, 68, 10, 0.8);\\n}\\n.ds_tag--yellow {\\n background-color: #feec98;\\n color: #7f6801;\\n outline-color: rgba(127, 104, 1, 0.8);\\n}\\n\\n/*------------------------------------*\\\\\\n TASK LIST\\n\\\\*------------------------------------*/\\n.ds_task-list {\\n list-style-type: none;\\n margin: -2px 0 0 0;\\n padding: 0;\\n}\\n.ds_task-list__task {\\n align-items: center;\\n border-top: 2px #ebebeb solid;\\n display: flex;\\n gap: 0.5rem 2rem;\\n justify-content: space-between;\\n margin: 0;\\n padding-top: 1rem;\\n padding-bottom: calc(1rem + -2px);\\n}\\n@media (min-width: 768px) {\\n .ds_task-list__task {\\n padding-top: 1rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_task-list__task {\\n padding-bottom: calc(1rem + -2px);\\n }\\n}\\n.ds_task-list__task:last-child {\\n border-bottom: 2px #ebebeb solid;\\n}\\n@media (max-width: 479px) {\\n .ds_task-list__task {\\n padding-bottom: calc(1.5rem + -2px);\\n align-items: flex-start;\\n flex-direction: column;\\n }\\n}\\n@media (max-width: 479px) and (min-width: 768px) {\\n .ds_task-list__task {\\n padding-bottom: calc(1.5rem + -2px);\\n }\\n}\\n.ds_task-list__task-details {\\n max-width: 100%;\\n}\\n.ds_task-list__task-heading {\\n font-size: 1rem;\\n line-height: 1.5;\\n font-weight: 400;\\n margin: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list__task-heading {\\n font-size: 1.1875rem;\\n line-height: 1.6842105263;\\n }\\n}\\n.ds_task-list__task-link {\\n text-decoration: underline;\\n}\\n.ds_task-list__task-summary {\\n margin: 0;\\n margin-top: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list__task-summary {\\n margin-top: 0.5rem;\\n }\\n}\\n.ds_task-list__task-status {\\n font-size: 0.875rem;\\n line-height: 1.7142857143;\\n background-color: #ebebeb;\\n font-weight: 700;\\n padding: 0.25rem 1rem;\\n white-space: nowrap;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list__task-status {\\n font-size: 1rem;\\n line-height: 1.5;\\n }\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_task-list__task-status {\\n outline: 2px solid currentColor !important;\\n outline-offset: -2px !important;\\n }\\n}\\n.ds_task-list__task-status--complete {\\n background: #ffffff;\\n color: #428542;\\n border: 2px #428542 solid;\\n padding: 0.125rem 1rem;\\n}\\n.ds_task-list-heading {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n display: inline-block;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-heading {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-heading {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_task-list-intro {\\n margin-bottom: 1rem;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-intro {\\n margin-bottom: 1rem;\\n }\\n}\\n.ds_task-list-heading + .ds_task-list {\\n margin-top: calc(0.5rem + -2px);\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-heading + .ds_task-list {\\n margin-top: calc(0.5rem + -2px);\\n }\\n}\\n\\n.ds_task-list-group {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.ds_task-list-group__section, .ds_task-list-group__section:last-child {\\n margin: 0;\\n padding: 0;\\n margin-bottom: 2rem;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\\n margin-bottom: 2.5rem;\\n }\\n}\\n@media (max-width: 479px) {\\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\\n margin-bottom: 2.5rem;\\n }\\n}\\n@media (max-width: 479px) and (min-width: 768px) {\\n .ds_task-list-group__section, .ds_task-list-group__section:last-child {\\n margin-bottom: 3rem;\\n }\\n}\\n.ds_task-list-group--ordered {\\n list-style-position: inside;\\n list-style-type: decimal;\\n}\\n.ds_task-list-group--ordered .ds_task-list-group__section::marker {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-group--ordered .ds_task-list-group__section::marker {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n\\n.ds_task-list-status {\\n margin-bottom: 2rem;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-status {\\n margin-bottom: 2.5rem;\\n }\\n}\\n@media (max-width: 479px) {\\n .ds_task-list-status {\\n margin-bottom: 2.5rem;\\n }\\n}\\n@media (max-width: 479px) and (min-width: 768px) {\\n .ds_task-list-status {\\n margin-bottom: 3rem;\\n }\\n}\\n.ds_task-list-status > p {\\n margin-bottom: 0.5rem;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-status > p {\\n margin-bottom: 0.5rem;\\n }\\n}\\n.ds_task-list-status-heading {\\n font-size: 1.1875rem;\\n line-height: 1.2631578947;\\n margin-bottom: 1rem;\\n font-weight: 700;\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-status-heading {\\n font-size: 1.375rem;\\n line-height: 1.4545454545;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_task-list-status-heading {\\n margin-bottom: 1rem;\\n }\\n}\\n\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n /*\\n * [1] This is a little hacky but it does serve to differentiate the \\\"complete\\\" status.\\n * And happens to be green by default.\\n */\\n .ds_task-list__task-status--complete {\\n color: GrayText;\\n }\\n}\\n/*------------------------------------*\\\\\\n #WARNING TEXT\\n\\\\*------------------------------------*/\\n.ds_warning-text {\\n border: 1px solid currentColor;\\n border-width: 1px 0;\\n font-weight: 700;\\n padding-left: 72px;\\n padding-right: 16px;\\n position: relative;\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n padding-top: calc(1.5rem + -1px);\\n padding-bottom: calc(1.5rem + -1px);\\n}\\n@media (min-width: 768px) {\\n .ds_warning-text {\\n margin-top: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_warning-text {\\n margin-bottom: 2rem;\\n }\\n}\\n.ds_warning-text > :last-child {\\n margin-bottom: 0;\\n}\\n@media (min-width: 768px) {\\n .ds_warning-text {\\n padding-top: calc(2rem + -1px);\\n }\\n}\\n@media (min-width: 768px) {\\n .ds_warning-text {\\n padding-bottom: calc(2rem + -1px);\\n }\\n}\\n.ds_warning-text:first-child {\\n margin-top: 0;\\n}\\n\\n.ds_warning-text__icon {\\n background: #333333;\\n border-radius: 50%;\\n color: #ffffff;\\n display: inline-block;\\n height: 32px;\\n font-size: 32px;\\n font-weight: 700;\\n left: 24px;\\n line-height: 32px;\\n position: absolute;\\n text-align: center;\\n top: 20px;\\n width: 32px;\\n}\\n@media screen and (forced-colors: active) and (prefers-contrast: more) {\\n .ds_warning-text__icon {\\n outline: 2px solid currentColor !important;\\n outline-offset: -2px !important;\\n }\\n}\\n.ds_warning-text__icon::before {\\n content: \\\"!\\\";\\n display: block;\\n height: 28px;\\n}\\n\\n.ds_warning-text__text > :last-child {\\n margin-bottom: 0;\\n}\\n\\n@media (min-width: 768px) {\\n .ds_warning-text {\\n padding-right: 72px;\\n }\\n .ds_warning-text__icon {\\n top: 31px;\\n }\\n}\\n\\n\",\"/*------------------------------------*\\\\\\n FOCUS\\n Default focus indicator\\n\\\\*------------------------------------*/\\n\\n$focus__outline-width: 2px !default;\\n\\n@mixin ds_focus-outline($width: $focus__outline-width) {\\n outline: $width solid $ds_colour__link--focus__background;\\n outline-offset: 0;\\n}\\n\\n@mixin focus-outline {\\n @include ds_focus-outline;\\n}\\n\",\"/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\\n\\n/**\\n * 1. Set default font family to sans-serif.\\n * 2. Prevent iOS and IE text size adjust after device orientation change,\\n * without disabling user zoom.\\n */\\n\\n html {\\n font-family: sans-serif; /* 1 */\\n -ms-text-size-adjust: 100%; /* 2 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n }\\n\\n /**\\n * Remove default margin.\\n */\\n\\n body {\\n margin: 0;\\n }\\n\\n /* HTML5 display definitions\\n ========================================================================== */\\n\\n /**\\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\\n * and Firefox.\\n * Correct `block` display not defined for `main` in IE 11.\\n */\\n\\n article,\\n aside,\\n details,\\n figcaption,\\n figure,\\n footer,\\n header,\\n hgroup,\\n main,\\n menu,\\n nav,\\n section,\\n summary {\\n display: block;\\n }\\n\\n /**\\n * 1. Correct `inline-block` display not defined in IE 8/9.\\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\\n */\\n\\n audio,\\n canvas,\\n progress,\\n video {\\n display: inline-block; /* 1 */\\n vertical-align: baseline; /* 2 */\\n }\\n\\n /**\\n * Prevent modern browsers from displaying `audio` without controls.\\n * Remove excess height in iOS 5 devices.\\n */\\n\\n audio:not([controls]) {\\n display: none;\\n height: 0;\\n }\\n\\n /**\\n * Address `[hidden]` styling not present in IE 8/9/10.\\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\\n */\\n\\n [hidden],\\n template {\\n display: none;\\n }\\n\\n /* Links\\n ========================================================================== */\\n\\n /**\\n * Remove the gray background color from active links in IE 10.\\n */\\n\\n a {\\n background-color: transparent;\\n }\\n\\n /**\\n * Improve readability of focused elements when they are also in an\\n * active/hover state.\\n */\\n\\n a:active,\\n a:hover {\\n outline: 0;\\n }\\n\\n /* Text-level semantics\\n ========================================================================== */\\n\\n /**\\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\\n */\\n\\n abbr {\\n text-decoration: none;\\n }\\n\\n /**\\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\\n */\\n\\n b,\\n strong {\\n font-weight: bold;\\n }\\n\\n /**\\n * Address styling not present in Safari and Chrome.\\n */\\n\\n dfn {\\n font-style: italic;\\n }\\n\\n /**\\n * Address variable `h1` font-size and margin within `section` and `article`\\n * contexts in Firefox 4+, Safari, and Chrome.\\n */\\n\\n h1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n }\\n\\n\\n /**\\n * Address inconsistent and variable font size in all browsers.\\n */\\n\\n small {\\n font-size: 80%;\\n }\\n\\n /**\\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\\n */\\n\\n sub,\\n sup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n }\\n\\n sup {\\n top: -0.5em;\\n }\\n\\n sub {\\n bottom: -0.25em;\\n }\\n\\n /* Embedded content\\n ========================================================================== */\\n\\n /**\\n * Remove border when inside `a` element in IE 8/9/10.\\n */\\n\\n img {\\n border: 0;\\n }\\n\\n /**\\n * Correct overflow not hidden in IE 9/10/11.\\n */\\n\\n svg:not(:root) {\\n overflow: hidden;\\n }\\n\\n /* Grouping content\\n ========================================================================== */\\n\\n /**\\n * Address margin not present in IE 8/9 and Safari.\\n */\\n\\n figure {\\n margin: 1em 40px;\\n }\\n\\n /**\\n * Address differences between Firefox and other browsers.\\n */\\n\\n hr {\\n box-sizing: content-box;\\n height: 0;\\n }\\n\\n /**\\n * Contain overflow in all browsers.\\n */\\n\\n pre {\\n overflow: auto;\\n }\\n\\n /**\\n * Address odd `em`-unit font size rendering in all browsers.\\n */\\n\\n code,\\n kbd,\\n pre,\\n samp {\\n font-family: monospace, monospace;\\n font-size: 1em;\\n }\\n\\n /* Forms\\n ========================================================================== */\\n\\n /**\\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\\n * styling of `select`, unless a `border` property is set.\\n */\\n\\n /**\\n * 1. Correct color not being inherited.\\n * Known issue: affects color of disabled elements.\\n * 2. Correct font properties not being inherited.\\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\\n */\\n\\n button,\\n input,\\n optgroup,\\n select,\\n textarea {\\n color: inherit; /* 1 */\\n font: inherit; /* 2 */\\n margin: 0; /* 3 */\\n }\\n\\n /**\\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\\n */\\n\\n button {\\n overflow: visible;\\n }\\n\\n /**\\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\\n * All other form control elements do not inherit `text-transform` values.\\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\\n * Correct `select` style inheritance in Firefox.\\n */\\n\\n button,\\n select {\\n text-transform: none;\\n }\\n\\n /**\\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\\n * and `video` controls.\\n * 2. Correct inability to style clickable `input` types in iOS.\\n * 3. Improve usability and consistency of cursor style between image-type\\n * `input` and others.\\n */\\n\\n button,\\n html input[type=\\\"button\\\"], /* 1 */\\n input[type=\\\"reset\\\"],\\n input[type=\\\"submit\\\"] {\\n -webkit-appearance: button; /* 2 */\\n cursor: pointer; /* 3 */\\n }\\n\\n /**\\n * Re-set default cursor for disabled elements.\\n */\\n\\n button[disabled],\\n html input[disabled] {\\n cursor: default;\\n }\\n\\n /**\\n * Remove inner padding and border in Firefox 4+.\\n */\\n\\n button::-moz-focus-inner,\\n input::-moz-focus-inner {\\n border: 0;\\n padding: 0;\\n }\\n\\n /**\\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\\n * the UA stylesheet.\\n */\\n\\n input {\\n line-height: normal;\\n }\\n\\n /**\\n * It's recommended that you don't attempt to style these elements.\\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\\n *\\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\\n * 2. Remove excess padding in IE 8/9/10.\\n */\\n\\n input[type=\\\"checkbox\\\"],\\n input[type=\\\"radio\\\"] {\\n box-sizing: border-box; /* 1 */\\n padding: 0; /* 2 */\\n }\\n\\n /**\\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\\n * `font-size` values of the `input`, it causes the cursor style of the\\n * decrement button to change from `default` to `text`.\\n */\\n\\n input[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n input[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n }\\n\\n /**\\n * Define consistent border, margin, and padding.\\n */\\n\\n fieldset {\\n border: 1px solid #c0c0c0;\\n margin: 0 2px;\\n padding: 0.35em 0.625em 0.75em;\\n }\\n\\n /**\\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\\n */\\n\\n legend {\\n border: 0; /* 1 */\\n padding: 0; /* 2 */\\n }\\n\\n /**\\n * Remove default vertical scrollbar in IE 8/9/10/11.\\n */\\n\\n textarea {\\n overflow: auto;\\n }\\n\\n /**\\n * Don't inherit the `font-weight` (applied by a rule above).\\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\\n */\\n\\n optgroup {\\n font-weight: bold;\\n }\\n\\n /* Tables\\n ========================================================================== */\\n\\n /**\\n * Remove most spacing between table cells.\\n */\\n\\n table {\\n border-collapse: collapse;\\n border-spacing: 0;\\n }\\n\\n td,\\n th {\\n padding: 0;\\n }\\n\",\"/*------------------------------------*\\\\\\n RESET (INUITCSS)\\n\\\\*------------------------------------*/\\n\\n/**\\n * As well as using normalize.css, it is often advantageous to remove all\\n * margins from certain elements.\\n */\\nbody,\\nh1, h2, h3, h4, h5, h6,\\np, blockquote, pre,\\ndl, dd, ol, ul,\\nform, fieldset, legend,\\nfigure,\\ntable, th, td, caption,\\nhr {\\n margin: 0;\\n padding: 0;\\n}\\n\\n\\n\\n\\n\\n/**\\n * Give a help cursor to elements that give extra info on `:hover`.\\n */\\nabbr[title],\\ndfn[title] {\\n cursor: help;\\n}\\n\\n\\n\\n\\n\\n/**\\n * Remove underlines from potentially troublesome elements.\\n */\\nu,\\nins {\\n text-decoration: none;\\n}\\n\\n\\n\\n\\n\\n/**\\n * Apply faux underlines to inserted text via `border-bottom`.\\n */\\nins {\\n border-bottom: 1px solid;\\n}\\n\",\"/*------------------------------------*\\\\\\n BASIC MARGINS\\n\\\\*------------------------------------*/\\n\\nh1, h2, h3, h4, h5, h6,\\nul, ol, dl,\\nblockquote, p, address,\\ntable, figure,\\npre {\\n @include ds_responsive-margin(2, bottom);\\n}\",\"/// Responsive spacing\\n///\\n/// Returns a spacing rule for a given property and direction at a given entry\\n/// in the spacing scale, for all relevant breakpoints.\\n///\\n/// Allows the addition of the !important flag.\\n/// Allows fine tuning by pixel amounts.\\n///\\n/// This low-level mixin sholuld rarely be used directly.\\n/// Use ds_responsive-margin and ds_responsive-padding instead.\\n///\\n/// @param {number} $spacing-unit - entry in the spacing scale to get values from\\n/// @param {string} $property - property to assign a value to\\n/// @param {string} $direction - direction to apply the value to (leave empty for all directions)\\n/// @param {boolean} $important - whether to include the !important flag\\n/// @param {string} $tuning - value to add to the output for fine tuning\\n/// @param {number} $collapse-spacing-unit - entry in the spacing scale to remove from output\\n///\\n/// @returns {string} CSS rule for spacing, e.g. padding-top: 8px\\n///\\n/// @example scss\\n/// .foo {\\n/// @include ds_responsive-spacing(2, 'padding', top);\\n/// }\\n\\n@mixin ds_responsive-spacing($spacing-unit, $property, $direction: false, $important: false, $tuning: false, $collapse-spacing-unit: false) {\\n // validate params\\n $spacing-unit-type: type-of($spacing-unit);\\n @if $spacing-unit-type != 'number' {\\n @error 'Expected an integer for spacing unit but got a #{$spacing-unit-type}';\\n }\\n\\n @if not map-has-key($ds_spacing-scale, $spacing-unit) {\\n @error 'Spacing unit \\\"#{$spacing-unit}\\\" not found in the spacing scale.';\\n }\\n\\n @if not map-has-key($ds_spacing-properties, $property) {\\n @error 'Spacing property \\\"#{$property}\\\" not allowed.';\\n }\\n\\n @if $direction {\\n @if not map-has-key($ds_spacing-directions, $direction) {\\n @error 'Invalid spacing direction specified: \\\"#{$direction}\\\"';\\n }\\n }\\n\\n $collapse-values: false;\\n @if $collapse-spacing-unit {\\n @if not map-has-key($ds_spacing-scale, $collapse-spacing-unit) {\\n @error 'Spacing unit \\\"#{$collapse-spacing-unit}\\\" not found in the spacing scale.';\\n }\\n $collapse-values: map-get($ds_spacing-scale, $collapse-spacing-unit);\\n }\\n\\n $scale-values: map-get($ds_spacing-scale, $spacing-unit);\\n\\n @each $breakpoint, $value in $scale-values {\\n @if ($tuning) {\\n $value: calc(#{$value} + #{$tuning});\\n }\\n @if ($collapse-values) {\\n $value: calc(#{$value} - #{map-get($ds_spacing-scale, $collapse-spacing-unit, $breakpoint)});\\n }\\n\\n @if $breakpoint == null {\\n @if not $direction {\\n #{$property}: $value if($important, !important, null);\\n } @else {\\n #{$property}-#{$direction}: $value if($important, !important, null);\\n }\\n } @else {\\n @include ds_media-query($breakpoint) {\\n @if not $direction {\\n #{$property}: $value if($important, !important, null);\\n } @else {\\n #{$property}-#{$direction}: $value if($important, !important, null);\\n }\\n }\\n }\\n }\\n}\\n\\n/// Responsive margin\\n///\\n/// Returns a spacing rule for margin at a given entry in the spacing scale,\\n/// for all relevant breakpoints.\\n///\\n/// Allows the addition of the !important flag.\\n/// Allows fine tuning by pixel amounts.\\n///\\n/// @param {number} $spacing-unit - entry in the spacing scale to get values from\\n/// @param {string} $direction - direction to apply the value to (leave empty for all directions)\\n/// @param {boolean} $important - whether to include the !important flag\\n/// @param {string} $tuning - value to add to the output for fine tuning\\n///\\n/// @returns {string} CSS rule for margin, e.g. margin-top: 8px\\n///\\n/// @example scss\\n/// .foo {\\n/// @include ds_responsive-margin(2, top);\\n/// }\\n\\n@mixin ds_responsive-margin($spacing-unit, $direction: false, $important: false, $tuning: false, $collapse-spacing-unit: false) {\\n @include ds_responsive-spacing($spacing-unit, 'margin', $direction, $important, $tuning, $collapse-spacing-unit);\\n}\\n\\n/// Responsive padding\\n///\\n/// Returns a spacing rule for padding at a given entry in the spacing scale,\\n/// for all relevant breakpoints.\\n///\\n/// Allows the addition of the !important flag.\\n/// Allows fine tuning by pixel amounts.\\n///\\n/// @param {number} $spacing-unit - entry in the spacing scale to get values from\\n/// @param {string} $direction - direction to apply the value to (leave empty for all directions)\\n/// @param {boolean} $important - whether to include the !important flag\\n/// @param {string} $tuning - value to add to the output for fine tuning\\n///\\n/// @returns {string} CSS rule for padding, e.g. padding-top: 8px\\n///\\n/// @example scss\\n/// .foo {\\n/// @include ds_responsive-padding(2, top);\\n/// }\\n\\n@mixin ds_responsive-padding($spacing-unit, $direction: false, $important: false, $tuning: false, $collapse-spacing-unit: false) {\\n @include ds_responsive-spacing($spacing-unit, 'padding', $direction, $important, $tuning, $collapse-spacing-unit);\\n}\\n\",\"/// Media query\\n///\\n/// Shorthand @media alias that keeps media query rules to a defined set of\\n/// breakpoints.\\n///\\n/// @param {string} $breakpoint - name of the breakpoint to use\\n///\\n/// @example scss\\n/// @include ds_media-query(medium) {\\n/// .my-element {\\n/// display: block;\\n/// }\\n/// }\\n\\n@mixin ds_media-query($breakpoint) {\\n // validate param\\n @if not map-has-key($ds_breakpoints, $breakpoint) {\\n @error 'Breakpoint \\\"#{$breakpoint}\\\" not defined.';\\n }\\n\\n $condition: map-get($ds_breakpoints, $breakpoint);\\n\\n @media #{$condition} {\\n @content;\\n }\\n}\\n\\n/// Media query: high contrast\\n///\\n/// Shorthand @media alias for \\\"forced colors\\\" and \\\"prefers contrast\\\"\\n///\\n/// @example scss\\n/// @include ds_media-query-high-contrast {\\n/// .my-element {\\n/// color: LinkText;\\n/// }\\n/// }\\n\\n@mixin ds_media-query-high-contrast {\\n @media screen and (forced-colors: active) and (prefers-contrast: more) {\\n @content;\\n }\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed name\\n@mixin media-query($breakpoint) {\\n // validate param\\n @if not map-has-key($ds_breakpoints, $breakpoint) {\\n @error 'Breakpoint \\\"#{$breakpoint}\\\" not defined.';\\n }\\n\\n $condition: map-get($ds_breakpoints, $breakpoint);\\n\\n @media #{$condition} {\\n @content;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n ABBREVIATIONS\\n Improved display of abbreviation styling with better readability than browser default\\n\\\\*------------------------------------*/\\n\\n/// [1] only apply this if there is a title attribute\\n\\nabbr, acronym {\\n &[title] { /// [1]\\n text-decoration: underline dotted;\\n text-decoration-thickness: 1px;\\n text-underline-offset: 1px;\\n }\\n}\",\"/*------------------------------------*\\\\\\n ADDRESS\\n\\\\*------------------------------------*/\\n\\naddress {\\n font-style: normal;\\n}\\n\",\"/*------------------------------------*\\\\\\n BODY\\n\\\\*------------------------------------*/\\n\\nbody {\\n background: $ds_colour__background--primary;\\n color: $ds_colour__text;\\n font-family: $base-font-family;\\n font-size: px-to-rem($root-font-size); // 1rem\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n line-height: line-height-on-grid($root-font-size);\\n margin: 0;\\n text-rendering: optimizeLegibility;\\n}\\n\\n@include ds_media-query(medium) {\\n body {\\n font-size: px-to-rem($root-font-size--medium);\\n line-height: line-height-on-grid($root-font-size--medium);\\n }\\n}\\n\",\"/// COLOUR DEFINITIONS\\n/// Using a BEM-like syntax for variable names.\\n///\\n/// Values used in calculations for hover background and foreground colours are derived from\\n/// previously hardcoded colours. Those colours are/were:\\n/// - link colour: ds_colour__blue (#0065bd)\\n/// - link hover background: ds_colour__blue--light (#d9effc)\\n/// - link hover colour: ds_colour__blue--darker (#002d64)\\n///\\n/// [1] 0.83: the luminance of ds_colour__blue--light\\n/// [2] 12.5%: the amount that ds_colour__blue--darker is darker than ds_colour__blue\\n\\n// Palette\\n$ds_colour__white: #ffffff;\\n$ds_colour__black: #000000;\\n\\n$ds_colour__blue--lighter: #e5f0f8;\\n$ds_colour__blue--light: #d9effc;\\n$ds_colour__blue: #0065bd;\\n$ds_colour__blue--dark: #00437e;\\n$ds_colour__blue--darker: #002d54;\\n\\n$ds_colour__grey--lighter: #f8f8f8;\\n$ds_colour__grey--light: #ebebeb;\\n$ds_colour__grey--medium: #b3b3b3;\\n$ds_colour__grey: #727272;\\n$ds_colour__grey--dark: #333333;\\n\\n\\n\\n\\n// extended palette\\n$ds_colour__dark-blue: $ds_colour__blue--darker;\\n$ds_colour__teal: #28a197;\\n$ds_colour__dark-teal: #017878;\\n$ds_colour__green: #5eb135;\\n$ds_colour__dark-green: #428542;\\n$ds_colour__yellow: #fdd522;\\n$ds_colour__orange: #f47738;\\n$ds_colour__red: #d32205;\\n$ds_colour__pink: #e5007e;\\n$ds_colour__purple: #912688;\\n$ds_colour__brown: #592c20;\\n\\n\\n\\n\\n// general backgrounds\\n$ds_colour__background--primary: $ds_colour__white !default;\\n$ds_colour__background--secondary: $ds_colour__grey--lighter !default;\\n$ds_colour__background--tertiary: $ds_colour__grey--light !default;\\n$ds_colour__background--primary--dim: $ds_colour__background--secondary !default;\\n\\n\\n\\n\\n// branding\\n$ds_colour__brand: $ds_colour__blue !default;\\n$ds_colour__brand--secondary: $ds_colour__blue--darker !default;\\n$ds_brand-gradient-direction: right !default;\\n\\n@if getContrastRatio(#ffffff, $ds_colour__brand) < 4.5 {\\n @warn 'Brand colour #{$ds_colour__brand} does not meet 4.5:1 contrast ratio against white.';\\n}\\n\\n\\n\\n\\n// type\\n$ds_colour__text: $ds_colour__grey--dark !default;\\n$ds_colour__text--secondary: $ds_colour__grey !default;\\n$ds_colour__text--reversed: $ds_colour__white !default;\\n$ds_colour__placeholder: $ds_colour__text--secondary !default;\\n\\n\\n\\n\\n// focus\\n$ds_colour__focus: $ds_colour__grey--dark !default;\\n$ds_colour__focus--background: $ds_colour__yellow !default;\\n\\n\\n\\n\\n// links\\n$ds_colour__link: $ds_colour__brand !default;\\n$ds_colour__link--hover__background: adjustLuminance($ds_colour__link, 0.83) !default; /// [1]\\n$ds_colour__link--hover: adjustForContrast(darken($ds_colour__link, 12.5%), $ds_colour__link--hover__background, 4.5) !default; /// [2]\\n$ds_colour__link--focus: $ds_colour__focus !default;\\n$ds_colour__link--focus__outline: $ds_colour__focus--background !default;\\n$ds_colour__link--focus__background: $ds_colour__focus--background !default;\\n$ds_colour__link--focus__shadow: $ds_colour__focus !default;\\n$ds_colour__link--current: $ds_colour__text !default;\\n$ds_colour__link--current__background: $ds_colour__background--primary--dim !default;\\n$ds_colour__link--disabled: $ds_colour__text !default;\\n$ds_colour__link--disabled__background: $ds_colour__background--tertiary !default;\\n$ds_colour__link--reversed: currentColor !default;\\n$ds_colour__link--reversed--hover: currentColor !default;\\n$ds_colour__link--reversed--focus: $ds_colour__link--focus !default;\\n\\n\\n\\n\\n// block links\\n$ds_colour__blocklink-bg: $ds_colour__white !default;\\n$ds_colour__blocklink-bg--hover: $ds_colour__link--hover__background !default;\\n$ds_colour__blocklink-bg--focus: $ds_colour__link--focus__background !default;\\n\\n\\n\\n\\n// buttons\\n$ds_colour__button: $ds_colour__white !default;\\n$ds_colour__button__background: $ds_colour__brand !default;\\n$ds_colour__button--hover__background: adjustForContrast(darken($ds_colour__button__background, 12.5%), $ds_colour__button, 4.5) !default; /// [1]\\n$ds_colour__button--focus: $ds_colour__link--focus !default;\\n$ds_colour__button--focus__background: $ds_colour__link--focus__background !default;\\n\\n\\n$ds_colour__button--secondary: $ds_colour__button__background !default;\\n$ds_colour__button--secondary__background: transparent !default;\\n$ds_colour__button--secondary--hover: $ds_colour__button--hover__background !default;\\n$ds_colour__button--secondary--hover__background: adjustLuminance($ds_colour__button--secondary, 0.83) !default; /// [2]\\n$ds_colour__button--secondary--focus: $ds_colour__button--focus !default;\\n$ds_colour__button--cancel: $ds_colour__text !default;\\n$ds_colour__button--cancel__background: $ds_colour__button--secondary__background !default;\\n$ds_colour__button--cancel--hover__background: adjustLuminance($ds_colour__button--cancel, 0.83) !default; /// [2]\\n$ds_colour__button--disabled__background: $ds_colour__grey !default;\\n\\n\\n\\n\\n// input\\n$ds_colour__input--hover__border: $ds_colour__grey--medium !default;\\n$ds_colour__input--focus__background: $ds_colour__white !default;\\n$ds_colour__input--focus__outline: $ds_colour__focus--background !default;\\n$ds_colour__input--spot: currentColor !default; // not currently used\\n\\n\\n\\n\\n// borders\\n$ds_colour__border: $ds_colour__grey--medium !default;\\n$ds_colour__border--strong: $ds_colour__grey--dark !default;\\n$ds_colour__border--faint: $ds_colour__grey--light !default;\\n$ds_colour__border--highlight: $ds_colour__brand !default;\\n\\n// deprecated border colour names\\n$ds_colour__border--dark: $ds_colour__border--strong !default;\\n$ds_colour__border--light: $ds_colour__border--faint !default;\\n\\n\\n\\n\\n// state\\n$ds_colour__state--negative: $ds_colour__red;\\n$ds_colour__state--positive: $ds_colour__dark-green;\\n\",\"/// TYPE\\n\\n$root-font-size: 16px !default;\\n$root-font-size--medium: 19px !default;\\n\\n// heading sizes\\n$h1-size: 30px !default;\\n$h2-size: 22px !default;\\n$h3-size: 19px !default;\\n$h4-size: 16px !default;\\n$h5-size: 14px !default;\\n\\n// heading sizes at medium breakpoint\\n$h1-size--medium: 44px !default;\\n$h2-size--medium: 30px !default;\\n$h3-size--medium: 22px !default;\\n$h4-size--medium: 19px !default;\\n$h5-size--medium: 16px !default;\\n\\n// size variants\\n$large-size: 19px !default;\\n$small-size: 14px !default;\\n$tiny-size: 12px !default;\\n\\n$large-size--medium: 24px !default;\\n$small-size--medium: 16px !default;\\n$tiny-size--medium: 14px !default;\\n\\n$small-size--fixed: 14px !default;\\n\\n// weights\\n$light: 300 !default;\\n$normal: 400 !default;\\n$bold: 700 !default;\\n\\n// font face\\n$base-font-family: Roboto, 'Helvetica Neue', Helvetica, Arial, sans-serif !default;\\n\",\"/*------------------------------------*\\\\\\n BOX-SIZING (INUITCSS)\\n\\\\*------------------------------------*/\\n\\n/**\\n * Set the global `box-sizing` state to `border-box`.\\n *\\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\\n * paulirish.com/2012/box-sizing-border-box-ftw\\n */\\nhtml {\\n box-sizing: border-box;\\n}\\n\\n* {\\n &,\\n &::before,\\n &::after {\\n box-sizing: inherit;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n HEADINGS\\n\\\\*------------------------------------*/\\n\\n$use-legacy-heading-styles: true !default;\\n\\n\\n\\n\\nh1, .ds_h1 {\\n @include ds_h1-style;\\n}\\n\\nh2, .ds_h2 {\\n @include ds_h2-style;\\n\\n &:not(:first-child) {\\n @include ds_responsive-margin(5, top);\\n }\\n}\\n\\nh3, .ds_h3 {\\n @include ds_h3-style;\\n\\n &:not(:first-child) {\\n @include ds_responsive-margin(3, top);\\n }\\n}\\n\\nh4, .ds_h4 {\\n @include ds_h4-style;\\n}\\n\\nh5, .ds_h5 {\\n @include ds_h5-style;\\n}\\n\\n\\n\\n\\n@if $use-legacy-heading-styles {\\n // legacy\\n .alpha {\\n @extend .ds_h1;\\n }\\n\\n .beta {\\n @extend .ds_h2;\\n }\\n\\n .gamma {\\n @extend .ds_h3;\\n }\\n\\n .delta {\\n @extend .ds_h4;\\n }\\n\\n .epsilon {\\n @extend .ds_h5;\\n }\\n}\\n\",\"///\\n/// Heading size mixins\\n///\\n\\n@mixin ds_h1-size($type-grid: 8px) {\\n font-size: px-to-rem($h1-size);\\n line-height: line-height-on-grid($h1-size, 1.3, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($h1-size--medium);\\n line-height: line-height-on-grid($h1-size--medium, 1.3, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_h2-size($type-grid: 8px) {\\n font-size: px-to-rem($h2-size);\\n line-height: line-height-on-grid($h2-size, 1.3, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($h2-size--medium);\\n line-height: line-height-on-grid($h2-size--medium, 1.3, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_h3-size($type-grid: 8px) {\\n font-size: px-to-rem($h3-size);\\n line-height: line-height-on-grid($h3-size, 1.3, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($h3-size--medium);\\n line-height: line-height-on-grid($h3-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_h4-size($type-grid: 8px) {\\n font-size: px-to-rem($h4-size);\\n line-height: line-height-on-grid($h4-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($h4-size--medium);\\n line-height: line-height-on-grid($h4-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_h5-size($type-grid: 8px) {\\n font-size: px-to-rem($h5-size);\\n line-height: line-height-on-grid($h5-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($h5-size--medium);\\n line-height: line-height-on-grid($h5-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_tiny-size($type-grid: 8px) {\\n font-size: px-to-rem($tiny-size);\\n line-height: line-height-on-grid($tiny-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($tiny-size--medium);\\n line-height: line-height-on-grid($tiny-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_small-size($type-grid: 8px) {\\n font-size: px-to-rem($small-size);\\n line-height: line-height-on-grid($small-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($small-size--medium);\\n line-height: line-height-on-grid($small-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_small-size--fixed($type-grid: 8px) {\\n font-size: px-to-rem($small-size--fixed);\\n line-height: line-height-on-grid($small-size--fixed, $grid: $type-grid);\\n}\\n\\n@mixin ds_large-size($type-grid: 8px) {\\n font-size: px-to-rem($large-size);\\n line-height: line-height-on-grid($large-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($large-size--medium);\\n line-height: line-height-on-grid($large-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n@mixin ds_root-size($type-grid: 8px) {\\n font-size: px-to-rem($root-font-size);\\n line-height: line-height-on-grid($root-font-size, $grid: $type-grid);\\n\\n @include ds_media-query(medium) {\\n font-size: px-to-rem($root-font-size--medium);\\n line-height: line-height-on-grid($root-font-size--medium, $grid: $type-grid);\\n }\\n}\\n\\n\\n\\n\\n///\\n/// Heading style mixins\\n///\\n@mixin ds_h1-style {\\n @include ds_h1-size;\\n @include ds_responsive-margin(4, bottom);\\n font-weight: $bold;\\n}\\n\\n@mixin ds_h2-style {\\n @include ds_h2-size;\\n @include ds_responsive-margin(2, bottom);\\n font-weight: $bold;\\n}\\n\\n@mixin ds_h3-style {\\n @include ds_h3-size;\\n @include ds_responsive-margin(2, bottom);\\n font-weight: $bold;\\n}\\n\\n@mixin ds_h4-style {\\n @include ds_h4-size;\\n @include ds_responsive-margin(2, bottom);\\n font-weight: $bold;\\n}\\n\\n@mixin ds_h5-style {\\n @include ds_h5-size;\\n @include ds_responsive-margin(1, bottom);\\n font-weight: $bold;\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin h1-size {\\n @include ds_h1-size;\\n}\\n\\n@mixin h2-size {\\n @include ds_h2-size;\\n}\\n\\n@mixin h3-size {\\n @include ds_h3-size;\\n}\\n\\n@mixin h4-size {\\n @include ds_h4-size;\\n}\\n\\n@mixin h5-size {\\n @include ds_h5-size;\\n}\\n\\n@mixin tiny-size {\\n @include ds_tiny-size;\\n}\\n\\n@mixin small-size {\\n @include ds_small-size;\\n}\\n\\n@mixin large-size {\\n @include ds_large-size;\\n}\\n\",\"/*------------------------------------*\\\\\\n HORIZONTAL RULE\\n\\\\*------------------------------------*/\\n\\n/// [1] compensate for border\\nhr {\\n border: none;\\n border-top: 1px solid $ds_colour__border;\\n\\n @include ds_responsive-margin(4, top);\\n @include ds_responsive-margin(4, bottom, false, -1px); /// [1]\\n}\\n\",\"/*------------------------------------*\\\\\\n LEADER\\n\\\\*------------------------------------*/\\n\\n.ds_leader,\\n.ds_leader-first-paragraph > p:first-child {\\n @include ds_large-size;\\n @include ds_responsive-margin(5, bottom);\\n\\n font-weight: $light;\\n line-height: 32px;\\n\\n @include ds_media-query(medium) {\\n line-height: 40px;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n LINKS\\n\\\\*------------------------------------*/\\n\\na,\\n.ds_link {\\n @include ds_link;\\n}\\n\\n.ds_link {\\n background: transparent;\\n border: 0;\\n display: inline;\\n font-size: inherit;\\n font-weight: inherit;\\n line-height: initial;\\n margin: 0;\\n min-height: 0;\\n min-width: 0;\\n padding: 0;\\n text-align: left; // .ds_link applied to a button would otherwise have centered text\\n}\\n\\n.ds_reversed {\\n a,\\n .ds_link {\\n color: $ds_colour__link--reversed;\\n\\n &:focus {\\n color: $ds_colour__link--reversed--focus;\\n }\\n\\n &:hover:not(:focus) {\\n background-color: transparent;\\n color: $ds_colour__link--reversed--hover;\\n outline-color: transparent;\\n }\\n }\\n}\\n\\na[disabled] {\\n pointer-events: none;\\n}\\n\\n// no underline on header links\\nh1, h2, h3, h4 {\\n a {\\n text-decoration: none;\\n\\n &:hover:not(:focus) {\\n text-decoration: underline;\\n }\\n }\\n}\\n\",\"$blocklink__outline-width: 0;\\n$link__outline-width: 2px;\\n$link__border-width: 3px;\\n\\n\\n\\n\\n/// Link\\n///\\n/// Single definition to enforce consistent display of links and elements that\\n/// look like links (e.g. buttons we want to have display with a link-like style)\\n\\n@mixin ds_link {\\n @include ds_high-contrast-link-style;\\n color: $ds_colour__link;\\n text-decoration: underline;\\n outline: 0px solid transparent;\\n text-underline-offset: 1px;\\n transition: color $transition-out-time, background-color $transition-out-time, outline-color $transition-out-time;\\n\\n &:hover {\\n background-color: $ds_colour__link--hover__background;\\n color: $ds_colour__link--hover;\\n outline: $link__outline-width solid $ds_colour__link--hover__background;\\n transition-duration: $transition-in-time;\\n }\\n\\n &:focus {\\n @include ds_focus-outline;\\n\\n background-color: $ds_colour__link--focus__background;\\n box-shadow: #{$link__outline-width * -1} #{$link__outline-width + $link__border-width} $ds_colour__link--focus__shadow, $link__outline-width #{$link__outline-width + $link__border-width} $ds_colour__link--focus__shadow;\\n color: $ds_colour__link--focus;\\n text-decoration: none;\\n transition-duration: 0s;\\n }\\n\\n > svg {\\n fill: currentColor;\\n }\\n}\\n\\n\\n\\n\\n/// Blocklink\\n///\\n/// Mixin to enforce consistency on block-style links, e.g. search results, category items, etc\\n///\\n/// @param {string} $link-selector - child element that is used as the link, optional\\n/// @param {boolean} $hover - whether to apply a hover state\\n\\n@mixin ds_blocklink ($link-selector: null, $hover: true) {\\n display: block;\\n position: relative;\\n transition: background-color $transition-out-time, outline-color $transition-out-time;\\n z-index: 1;\\n\\n outline: 0 !important;\\n\\n &:focus {\\n background-color: $ds_colour__blocklink-bg--focus;\\n box-shadow: inset #{$blocklink__outline-width * -1} #{$blocklink__outline-width + $link__border-width * -1} $ds_colour__link--focus__shadow, inset $blocklink__outline-width #{$blocklink__outline-width + $link__border-width * -1} $ds_colour__link--focus__shadow;\\n color: $ds_colour__link--focus;\\n\\n @include ds_high-contrast-focus;\\n }\\n\\n @if $hover {\\n &:hover:not(:focus) {\\n background-color: $ds_colour__blocklink-bg--hover;\\n }\\n }\\n\\n @if $link-selector {\\n #{$link-selector} {\\n &:focus:hover {\\n text-decoration: none;\\n }\\n }\\n\\n /*\\n supports grid is a hack as a proxy for supports :focus-within\\n */\\n @supports (display: grid) {\\n #{$link-selector} {\\n background-color: transparent;\\n outline: none;\\n\\n &::after {\\n content: \\\"\\\";\\n height: 100%;\\n left: 0px;\\n position: absolute;\\n top: 0px;\\n width: 100%;\\n z-index: 0;\\n\\n @include ds_media-query-high-contrast {\\n content: none;\\n }\\n }\\n\\n &:focus {\\n &::after {\\n transition-duration: 0s;\\n }\\n }\\n }\\n\\n &:focus-within {\\n background-color: $ds_colour__blocklink-bg--focus !important;\\n box-shadow: inset 0 -3px #333333, inset 0 -3px #333333;\\n transition-duration: 0s;\\n\\n #{$link-selector} {\\n &:focus {\\n box-shadow: none;\\n background-color: transparent;\\n\\n @include ds_high-contrast-focus;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n@mixin ds_blocklink--solid($link-selector: null) {\\n @include ds_blocklink($link-selector);\\n\\n background-color: $ds_colour__background--primary;\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin link {\\n @include ds_link;\\n}\\n\\n@mixin blocklink($link-selector: null, $hover: true) {\\n @include ds_blocklink($link-selector, hover);\\n}\\n\\n@mixin blocklink--solid($link-selector: null) {\\n @include ds_blocklink--solid($link-selector);\\n}\\n\",\"///\\n/// High contrast focus\\n///\\n\\n@mixin ds_high-contrast-focus($width: 2px) {\\n @include ds_media-query-high-contrast {\\n outline-color: highlight !important;\\n outline-style: solid !important;\\n outline-width: $width !important;\\n\\n @content;\\n }\\n}\\n\\n@mixin ds_high-contrast-outline($width: 2px) {\\n @include ds_media-query-high-contrast {\\n outline: $width solid currentColor !important;\\n outline-offset: #{$width * -1} !important;\\n }\\n}\\n\\n// Style to look like links\\n@mixin ds_high-contrast-link-style {\\n @include ds_media-query-high-contrast {\\n color: LinkText;\\n\\n &:hover,\\n &:focus {\\n color: LinkText;\\n }\\n }\\n}\\n\",\"/// TRANSITION\\n/// Variables for CSS transitions\\n\\n$transition-in-time: 0.2s !default;\\n$transition-out-time: $transition-in-time !default;\\n\",\"/*------------------------------------*\\\\\\n LISTS\\n\\\\*------------------------------------*/\\n\\nul,\\nol,\\ndd {\\n @include ds_last-child-no-margin;\\n margin-left: px-to-rem(20px);\\n}\\n\\ndd,\\nul ul,\\nol ol,\\nol ul,\\nul ol {\\n @include ds_responsive-margin(1, top);\\n @include ds_responsive-margin(1, bottom);\\n}\\n\\nli {\\n @include ds_responsive-margin(1, bottom);\\n}\\n\\ndt {\\n font-weight: $bold;\\n}\\n\\nul {\\n list-style-type: disc;\\n}\\n\\nol {\\n list-style-type: numeric;\\n margin-left: px-to-rem(24px);\\n}\\n\",\"@mixin ds_last-child-no-margin {\\n > :last-child {\\n margin-bottom: 0;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n MARKED TEXT\\n\\\\*------------------------------------*/\\n\\nmark {\\n background-color: inherit;\\n color: inherit;\\n font-weight: $bold;\\n\\n @include ds_media-query-high-contrast {\\n background-color: Mark;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n PLACEHOLDER TEXT\\n\\\\*------------------------------------*/\\n\\n::placeholder {\\n color: $ds_colour__placeholder;\\n}\\n\",\"/*------------------------------------*\\\\\\n SCROLL BEHAVIOUR\\n\\\\*------------------------------------*/\\n\\nhtml,\\nbody {\\n scroll-behavior: smooth;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n html,\\n body {\\n scroll-behavior: auto;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SMALL\\n\\\\*------------------------------------*/\\n\\nsmall,\\n.ds_small {\\n @include ds_small-size;\\n}\\n\\n.ds_tiny {\\n @include ds_tiny-size;\\n}\\n\",\"/*------------------------------------*\\\\\\n BREAK WORD\\n\\\\*------------------------------------*/\\n\\n.ds_break-word {\\n overflow-wrap: break-word;\\n}\\n\",\"/*------------------------------------*\\\\\\n LAYOUT\\n\\\\*------------------------------------*/\\n\\n.ds_layout {\\n @include ds_layout();\\n margin-bottom: 96px;\\n\\n &__content,\\n &__partner {\\n img {\\n max-width: 100%;\\n }\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_layout {\\n\\n // Defaults\\n &__header {\\n clear: left;\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__partner {\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n &__navigation {\\n clear: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__sidebar {\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n &__content {\\n clear: left;\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__list {\\n clear: left;\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__footer {\\n clear: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__feedback {\\n clear: left;\\n @include ds_colwidth(8);\\n }\\n\\n // Layout overrides\\n &--category-list {\\n .ds_layout {\\n\\n &__grid {\\n clear: left;\\n float: left;\\n @include ds_colwidth(12);\\n }\\n }\\n }\\n\\n &--search-results--filters {\\n .ds_layout {\\n\\n &__sidebar {\\n clear: left;\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n &__list {\\n clear: none;\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__feedback {\\n clear: left;\\n @include ds_colpush(4);\\n @include ds_colwidth(8);\\n }\\n }\\n }\\n\\n // .ds_layout--search-results-with-sidebar is deprecated - this will be removed in a future release\\n &--search-results-with-sidebar {\\n .ds_layout {\\n\\n &__sidebar {\\n clear: left;\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n &__content {\\n clear: none;\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__feedback {\\n clear: left;\\n @include ds_colpush(4);\\n @include ds_colwidth(8);\\n }\\n }\\n }\\n }\\n}\\n\\n\\n@include ds_media-query(large) {\\n .ds_layout {\\n &--article {\\n .ds_layout {\\n\\n &__partner {\\n float: left;\\n @include ds_colpush(1);\\n @include ds_colwidth(3);\\n }\\n\\n &__sidebar {\\n float: left;\\n @include ds_colpush(1);\\n @include ds_colwidth(3);\\n }\\n }\\n }\\n\\n &--guide {\\n .ds_layout {\\n\\n &__partner {\\n float: left;\\n @include ds_colpush(1);\\n @include ds_colwidth(3);\\n }\\n\\n &__sidebar {\\n float: left;\\n @include ds_colpush(1);\\n @include ds_colwidth(3);\\n }\\n\\n }\\n }\\n\\n }\\n}\\n\\n@supports(display: grid) {\\n /**\\n * GRID KEY\\n * c: content\\n * f: feedback\\n * h: header\\n * l: list (e.g. category items, search results)\\n * g: grid\\n * n: navigation (e.g. subpages of a publication or guide)\\n * p: partner branding\\n * s: sidebar\\n */\\n\\n // short abbreviations of grid area names so things are easy to read later on\\n $grid-area-content: c;\\n $grid-area-feedback: f;\\n $grid-area-footer: z;\\n $grid-area-header: h;\\n $grid-area-list: l;\\n $grid-area-grid: g;\\n $grid-area-navigation: n;\\n $grid-area-partner: p;\\n $grid-area-sidebar: s;\\n\\n // this includes body for increased specificity\\n body .ds_layout > *[class] {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto;\\n }\\n\\n .ds_layout {\\n grid-template-columns: repeat(2, 1fr);\\n grid-template-rows: auto 1fr;\\n\\n // default template areas definition based on guide,\\n // which is a relatively safe fallback\\n grid-template-areas:\\n 'h h'\\n 'p p'\\n 'n n'\\n 'c c'\\n 's s'\\n 'f f';\\n margin-right: 0;\\n margin-bottom: 0;\\n\\n &__content {\\n grid-area: $grid-area-content;\\n }\\n\\n &__footer {\\n grid-area: $grid-area-footer;\\n }\\n\\n &__feedback {\\n grid-area: $grid-area-feedback;\\n }\\n\\n &__header {\\n grid-area: $grid-area-header;\\n }\\n\\n &__list {\\n grid-area: $grid-area-list;\\n }\\n\\n &__grid {\\n grid-area: $grid-area-grid;\\n }\\n\\n &__navigation {\\n grid-area: $grid-area-navigation;\\n }\\n\\n &__partner {\\n grid-area: $grid-area-partner;\\n align-self: start;\\n @include ds_block-margins;\\n }\\n\\n &__sidebar {\\n grid-area: $grid-area-sidebar;\\n }\\n\\n &--category-list {\\n grid-template-areas:\\n 'h h'\\n 'c c'\\n 'l l'\\n 'g g'\\n 'f f';\\n }\\n\\n &--guide {\\n grid-template-areas:\\n 'h h'\\n 'p p'\\n 'n n'\\n 'c c'\\n 's s'\\n 'f f';\\n }\\n\\n // navigation grid area 'n' for search results is deprecated - this will be removed in a future release\\n &--search-results {\\n grid-template-areas:\\n 'h h'\\n 'n n'\\n 'c c'\\n 'l l'\\n 'f f';\\n }\\n\\n &--search-results--filters {\\n grid-template-areas:\\n 'h h'\\n 'c c'\\n 's s'\\n 'l l'\\n 'f f';\\n }\\n\\n // .ds_layout--search-results-with-sidebar is deprecated - this will be removed in a future release\\n &--search-results-with-sidebar {\\n grid-template-areas:\\n 'h h'\\n 'n n'\\n 's s'\\n 'c c'\\n 'f f';\\n }\\n\\n &--question-page {\\n grid-template-areas:\\n 'h h'\\n 'p p'\\n 'n n'\\n 'c c'\\n 'z z'\\n 's s'\\n 'f f';\\n }\\n }\\n\\n @include ds_media-query(small) {\\n .ds_layout {\\n grid-template-columns: repeat(6, 1fr);\\n\\n grid-template-areas:\\n 'h h h h h h'\\n 'p p p p p p'\\n 'n n n n n n'\\n 'c c c c c c'\\n 's s s s s s'\\n 'f f f f f f';\\n\\n &--category-list {\\n grid-template-areas:\\n 'h h h h h h'\\n 'c c c c c c'\\n 'l l l l l l'\\n 'g g g g g g'\\n 'f f f f f f';\\n }\\n\\n &--guide {\\n grid-template-areas:\\n 'h h h h h h'\\n 'p p p p p p'\\n 'n n n n n n'\\n 'c c c c c c'\\n 's s s s s s'\\n 'f f f f f f';\\n }\\n\\n // navigation grid area 'n' for search results is deprecated - this will be removed in a future release\\n &--search-results {\\n grid-template-areas:\\n 'h h h h h h'\\n 'n n n n n n'\\n 'c c c c c c'\\n 'l l l l l l'\\n 'f f f f f f';\\n }\\n\\n &--search-results--filters {\\n grid-template-areas:\\n 'h h h h h h'\\n 'c c c c c c'\\n 's s s s s s'\\n 'l l l l l l'\\n 'f f f f f f';\\n }\\n\\n // .ds_layout--search-results-with-sidebar is deprecated - this will be removed in a future release\\n &--search-results-with-sidebar {\\n grid-template-areas:\\n 'h h h h h h'\\n 'n n n n n n'\\n 's s s s s s'\\n 'c c c c c c'\\n 'f f f f f f';\\n }\\n\\n &--question-page {\\n grid-template-areas:\\n 'h h h h h h'\\n 'p p p p p p'\\n 'n n n n n n'\\n 'c c c c c c'\\n 'z z z z z z'\\n 's s s s s s'\\n 'f f f f f f';\\n }\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_layout {\\n grid-template-areas:\\n 'h h h h h h h h p p p p'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c s s s s'\\n 'f f f f f f f f . . . .';\\n\\n grid-template-columns: repeat(12, 1fr);\\n\\n &--article {\\n grid-template-areas:\\n 'h h h h h h h h p p p p'\\n 'c c c c c c c c s s s s'\\n 'f f f f f f f f . . . .';\\n }\\n\\n &--guide {\\n grid-template-areas:\\n 'h h h h h h h h p p p p'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c s s s s'\\n 'f f f f f f f f . . . .';\\n }\\n\\n &--category-list {\\n grid-template-areas:\\n 'h h h h h h h h h h h h'\\n 'c c c c c c c c c c c c'\\n 'l l l l l l l l . . . .'\\n 'g g g g g g g g g g g g'\\n 'f f f f f f f f . . . .';\\n }\\n\\n // navigation grid area 'n' for search results is deprecated - this will be removed in a future release\\n &--search-results {\\n grid-template-areas:\\n 'h h h h h h h h . . . .'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c . . . .'\\n 'l l l l l l l l . . . .'\\n 'f f f f f f f f . . . .';\\n }\\n\\n &--search-results--filters {\\n grid-template-areas:\\n 'h h h h h h h h . . . .'\\n 'c c c c c c c c . . . .'\\n 's s s s l l l l l l l l'\\n '. . . . f f f f f f f f';\\n }\\n\\n // .ds_layout--search-results-with-sidebar is deprecated - this will be removed in a future release\\n &--search-results-with-sidebar {\\n grid-template-areas:\\n 'h h h h h h h h . . . .'\\n 'n n n n n n n n . . . .'\\n 's s s s c c c c c c c c'\\n '. . . . f f f f f f f f';\\n }\\n\\n &--question-page {\\n grid-template-areas:\\n 'h h h h h h h h p p p p'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c s s s s'\\n 'z z z z z z z z s s s s'\\n 'f f f f f f f f . . . .';\\n }\\n }\\n }\\n\\n @include ds_media-query(large) {\\n .ds_layout {\\n &--article {\\n grid-template-areas:\\n 'h h h h h h h h . p p p'\\n 'c c c c c c c c . s s s'\\n 'f f f f f f f f . . . .';\\n }\\n\\n &--guide {\\n grid-template-areas:\\n 'h h h h h h h h . p p p'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c . s s s'\\n 'f f f f f f f f . . . .';\\n }\\n\\n &--question-page {\\n grid-template-areas:\\n 'h h h h h h h h . p p p'\\n 'n n n n n n n n . . . .'\\n 'c c c c c c c c . s s s'\\n 'z z z z z z z z . s s s'\\n 'f f f f f f f f . . . .';\\n }\\n }\\n }\\n}\\n\",\"@use \\\"sass:math\\\";\\n\\n@mixin ds_colwidth($columns: 1, $total: 12, $gutter: $grid-gap-x) {\\n width: calc(#{100% * math.div($columns, $total)} - #{$gutter});\\n}\\n\\n@mixin ds_colpush($columns: 1, $total: 12) {\\n margin-left: #{100% * math.div($columns, $total)};\\n}\\n\\n@mixin ds_colpull($columns: 1, $total: 12) {\\n margin-left: #{100% * math.div($columns, $total) * -1};\\n}\\n\\n@mixin ds_layout($gutter: $grid-gap-x, $sub: false) {\\n @if $sub {} @else {\\n margin-right: #{$gutter * -1};\\n }\\n overflow: hidden;\\n\\n > * {\\n margin-right: $gutter;\\n }\\n\\n @supports (display: grid) {\\n display: grid;\\n grid-gap: 0 $gutter;\\n margin-right: 0;\\n overflow: visible;\\n\\n > * {\\n margin-left: 0;\\n margin-right: 0;\\n width: auto !important;\\n }\\n }\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin colwidth($columns: 1, $total: 12, $gutter: $grid-gap-x) {\\n @include ds_colwidth($columns, $total, $gutter);\\n}\\n\\n@mixin colpush($columns: 1, $total: 12) {\\n @include ds_colpush($columns, $total);\\n}\\n\\n@mixin colpull($columns: 1, $total: 12) {\\n @include ds_colpull($columns, $total);\\n}\\n\\n@mixin layout($gutter: $grid-gap-x, $sub: false) {\\n @include ds_layout($gutter, $sub);\\n}\\n\",\"/// GRID SETTINGS\\n\\n$grid-gap-x: 32px;\\n$grid-gap-y: 32px;\\n$grid-gap-x--narrow: 12px;\\n$grid-gap-y--narrow: $grid-gap-x--narrow;\\n\",\"/*------------------------------------*\\\\\\n PAGE SETUP\\n anchor footer to bottom of the viewport on short pages\\n\\\\*------------------------------------*/\\n\\nhtml {\\n min-height: 100%;\\n position: relative;\\n}\\n\\n.ds_page {\\n min-height: calc(100vh - 360px);\\n margin-bottom: 360px;\\n}\\n\\n.ds_site-footer {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n@supports (display: grid) {\\n .ds_page {\\n display: grid;\\n margin-bottom: 0;\\n min-height: 100vh;\\n grid-template:\\n 'page-top' auto\\n 'page-middle' 1fr\\n 'page-bottom' auto;\\n\\n &__top {\\n grid-area: page-top;\\n }\\n\\n &__middle {\\n grid-area: page-middle;\\n }\\n\\n &__bottom {\\n grid-area: page-bottom;\\n }\\n }\\n\\n .ds_site-footer {\\n position: static;\\n }\\n}\\n\\n.ds_page__middle {\\n display: grid;\\n grid-template-rows: auto 1fr;\\n padding-bottom: 4rem;\\n position: relative;\\n}\\n\\n\\n\\n\\n/*------------------------------------*\\\\\\n PRE FOOTER BACKGROUND\\n for when a block immediately preceding the footer has a non-white background\\n\\\\*------------------------------------*/\\n\\n.ds_page__middle:has(.ds_pre-footer-background) {\\n padding-bottom: 0;\\n}\\n\\n.ds_page__middle.js-pre-footer-background {\\n padding-bottom: 0;\\n}\\n\\n.ds_pre-footer-background {\\n padding-bottom: 4rem;\\n}\\n\\n\\n\\n\\n/*------------------------------------*\\\\\\n CATEGORY PAGE LAYOUT\\n\\\\*------------------------------------*/\\n\\n// todo: Does this belong here? Feels like no.\\n.category-lower,\\n.ds_category-lower {\\n background: $ds_colour__background--primary--dim;\\n border-top: 1px solid $ds_colour__border--faint;\\n margin-top: -1px;\\n}\\n\",\"/*------------------------------------*\\\\\\n STACK\\n Your classic lobotomised owl https://alistapart.com/article/axiomatic-css-and-lobotomized-owls/\\n\\\\*------------------------------------*/\\n\\n$text-margin-vertical: 16px !default;\\n\\n.ds_stack {\\n > * {\\n margin-bottom: 0;\\n }\\n\\n > * + * {\\n margin-bottom: 0;\\n margin-top: $text-margin-vertical;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n WRAPPERS\\n\\\\*------------------------------------*/\\n\\n$wrapper__padding: 16px !default;\\n$wrapper__width--medium: 768px !default;\\n$wrapper__width--large: 960px !default;\\n$wrapper__width--xlarge: 1152px !default;\\n\\n\\n\\n\\n.ds_wrapper {\\n margin: 0 auto;\\n padding: 0 $wrapper__padding;\\n width: 100%;\\n\\n &--no-overflow {\\n overflow: hidden;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_wrapper {\\n width: $wrapper__width--medium;\\n }\\n}\\n\\n@include ds_media-query(large) {\\n .ds_wrapper {\\n width: $wrapper__width--large;\\n }\\n}\\n\\n@include ds_media-query(xlarge) {\\n .ds_wrapper {\\n width: $wrapper__width--xlarge;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n BREAKPOINT CHECK\\n\\\\*------------------------------------*/\\n\\n.ds_breakpoint-check {\\n display: none;\\n\\n @include ds_media-query(small) {\\n &.ds_breakpoint-check--small {\\n display: block;\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n &.ds_breakpoint-check--medium {\\n display: block;\\n }\\n }\\n\\n @include ds_media-query(large) {\\n &.ds_breakpoint-check--large {\\n display: block;\\n }\\n }\\n\\n @include ds_media-query(xlarge) {\\n &.ds_breakpoint-check--xlarge {\\n display: block;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n VISIBILITY\\n\\\\*------------------------------------*/\\n\\n.visually-hidden {\\n @include ds_visually-hidden;\\n}\\n\\n.fully-hidden {\\n display: none !important;\\n}\\n\",\"/// VISIBILITY\\n\\n@mixin ds_visually-hidden {\\n clip: rect(1px, 1px, 1px, 1px);\\n height: 1px;\\n overflow: hidden;\\n position: absolute !important;\\n width: 1px;\\n}\\n\\n@mixin visually-hidden {\\n @include ds_visually-hidden\\n}\\n\",\"/*------------------------------------*\\\\\\n LISTS\\n\\\\*------------------------------------*/\\n\\n.ds_no-bullets {\\n list-style-type: none;\\n margin-left: 0;\\n}\\n\",\"/*------------------------------------*\\\\\\n MARGIN MODIFIERS\\n Deprecated, prefer use of margin override classes e.g. ds_!_margin--0, ds_!_margin-bottom--0\\n\\\\*------------------------------------*/\\n\\n.ds_block-margins {\\n @include ds_block-margins;\\n}\\n\\n.ds_no-margin {\\n @include ds_responsive-margin(0, null, true);\\n}\\n\\n.ds_no-margin--top {\\n @include ds_responsive-margin(0, top, true);\\n}\\n\\n.ds_no-margin--right {\\n @include ds_responsive-margin(0, right, true);\\n}\\n\\n.ds_no-margin--bottom {\\n @include ds_responsive-margin(0, bottom, true);\\n}\\n\\n.ds_no-margin--left {\\n @include ds_responsive-margin(0, left, true);\\n}\\n\\n.ds_no-margin--vertical {\\n @include ds_responsive-margin(0, top, true);\\n @include ds_responsive-margin(0, bottom, true);\\n}\\n\\n.ds_no-margin--horizontal {\\n @include ds_responsive-margin(0, left, true);\\n @include ds_responsive-margin(0, right, true);\\n}\\n\",\"/*------------------------------------*\\\\\\n PADDING MODIFIERS\\n Deprecated, prefer use of padding override classes e.g. ds_!_padding--0, ds_!_padding-bottom--0\\n\\\\*------------------------------------*/\\n\\n.ds_no-padding {\\n @include ds_responsive-padding(0, null, true);\\n}\\n\\n.ds_no-padding--top {\\n @include ds_responsive-padding(0, top, true);\\n}\\n\\n.ds_no-padding--right {\\n @include ds_responsive-padding(0, right, true);\\n}\\n\\n.ds_no-padding--bottom {\\n @include ds_responsive-padding(0, bottom, true);\\n}\\n\\n.ds_no-padding--left {\\n @include ds_responsive-padding(0, left, true);\\n}\\n\\n.ds_no-padding--vertical {\\n @include ds_responsive-padding(0, top, true);\\n @include ds_responsive-padding(0, bottom, true);\\n}\\n\\n.ds_no-padding--horizontal {\\n @include ds_responsive-padding(0, left, true);\\n @include ds_responsive-padding(0, right, true);\\n}\\n\",\"/// Spacing override class generator\\n///\\n/// Generates override classes for a given property (margin, padding), in all\\n/// directions and individual directions (left, right, top, bottom), for each\\n/// entry in the spacing scale.\\n///\\n/// @param {string} $property - property to generate classes for (margin/padding)\\n///\\n/// @returns {string} a bunch of CSS rules\\n\\n@mixin ds_generate-spacing-overrides-for-property($property) {\\n @each $scale-unit, $scale-map in $ds_spacing-scale {\\n .ds_\\\\!_#{$property}--#{$scale-unit} {\\n @include ds_responsive-spacing($scale-unit, $property, null, true);\\n }\\n\\n @each $direction, $value in $ds_spacing-directions {\\n .ds_\\\\!_#{$property}-#{$direction}--#{$scale-unit} {\\n @include ds_responsive-spacing($scale-unit, $property, $direction, true);\\n }\\n }\\n }\\n}\\n\\n@include ds_generate-spacing-overrides-for-property('margin');\\n@include ds_generate-spacing-overrides-for-property('padding');\\n\",\"/*------------------------------------*\\\\\\n DESIGN SYSTEM FORMS\\n\\\\*------------------------------------*/\\n\\n@import \\\"form.settings\\\";\\n@import \\\"form.mixins\\\";\\n@import \\\"form.base\\\";\\n@import \\\"character-count/character-count\\\";\\n@import \\\"checkbox/checkbox\\\";\\n@import \\\"currency/currency\\\";\\n@import \\\"error-summary/error-summary\\\";\\n@import \\\"field-group/field-group\\\";\\n@import \\\"hint-text/hint-text\\\";\\n@import \\\"label/label\\\";\\n@import \\\"prefilled-value-list/prefilled-value-list\\\";\\n@import \\\"question/question\\\";\\n@import \\\"radio/radio\\\";\\n@import \\\"reveal-content/reveal-content\\\";\\n@import \\\"select/select\\\";\\n@import \\\"text-input/text-input\\\";\",\"/*------------------------------------*\\\\\\n FORM VARIABLES\\n\\\\*------------------------------------*/\\n\\n$field-glow-width: 3px;\\n$field-border-width: 2px;\\n$field-border-width--focus: 4px;\\n$field-border-width--error: 4px;\\n\\n$input-size: 40px !default;\\n$small-input-size: 24px !default;\\n$small-input-offset: 8px !default;\\n\",\"/*------------------------------------*\\\\\\n FORM MIXINS\\n\\\\*------------------------------------*/\\n\\n$small-focus-border-colour: $ds_colour__border !default;\\n\\n\\n\\n\\n@mixin ds_radiocheckboxstates ($round: false, $small-pip-padding: 2px, $active-shadow-colour: $ds_colour__input--focus__background) {\\n\\n margin-bottom: 24px;\\n padding-left: 40px;\\n position: relative;\\n\\n &__input {\\n height: 2.5rem;\\n left: 0;\\n opacity: 0;\\n position: absolute;\\n top: 0;\\n width: 2.5rem;\\n }\\n\\n &__label {\\n display: inline-block;\\n padding: 4px 32px 4px 16px;\\n }\\n\\n &__label::before {\\n background-color: $ds_colour__background--primary;\\n border: $field-border-width solid $ds_colour__text;\\n content: '';\\n height: $input-size;\\n left: 0;\\n position: absolute;\\n width: $input-size;\\n }\\n\\n &__label::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: calc(100% - #{$input-size});\\n left: 0;\\n right: calc(100% - #{$input-size});\\n opacity: 0;\\n }\\n\\n &__label::before,\\n &__label::after {\\n top: -4px;\\n\\n @include ds_media-query(medium) {\\n top: 0;\\n }\\n\\n @if $round {\\n border-radius: 50%;\\n }\\n\\n }\\n\\n /// focus\\n &__input:focus + &__label::before {\\n background-color: $ds_colour__link--focus__background;\\n border-color: $ds_colour__link--focus;\\n border-width: $field-border-width--focus;\\n box-shadow: 0 0 0 $field-glow-width $ds_colour__input--focus__outline;\\n\\n @include ds_high-contrast-focus(4px) {\\n outline-offset: -4px;\\n };\\n }\\n\\n &__input:checked + &__label::after {\\n opacity: 1;\\n }\\n\\n /// [1] this negative margin makes the small checkboxes/radios align left with content\\n &--small {\\n margin-bottom: 16px;\\n margin-left: -8px; /// [1]\\n }\\n\\n &--small &__input {\\n height: 1.5rem;\\n left: 0.5rem;\\n top: 0.5rem;\\n width: 1.5rem;\\n }\\n\\n &--small &__label::before {\\n height: px-to-rem(24px);\\n left: 8px;\\n top: 4px;\\n width: px-to-rem(24px);\\n\\n @include ds_media-query(medium) {\\n top: 8px;\\n }\\n }\\n\\n > .ds_hint-text {\\n padding-left: 16px;\\n }\\n}\\n\\n@mixin ds_field-error {\\n border-color: $ds_colour__state--negative;\\n border-width: $field-border-width--error;\\n padding: 4px;\\n\\n &:focus {\\n border-color: currentColor;\\n box-shadow: none;\\n }\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin radiocheckboxstates($round: false, $small-pip-padding: 2px, $active-shadow-colour: $ds_colour__input--focus__background) {\\n @include ds_radiocheckboxstates($round, $small-pip-padding, $active-shadow-colour);\\n}\\n\\n@mixin field-error {\\n @include ds_field-error;\\n}\\n\",\"/*------------------------------------*\\\\\\n FORM ELEMENTS (base)\\n\\\\*------------------------------------*/\\n\\nlegend {\\n @include ds_h3-size;\\n font-weight: $bold;\\n margin-bottom: 8px;\\n}\\n\\nfieldset {\\n border: 0;\\n}\\n\\n// Layout for standardised form\\n.ds_form {\\n display: flex;\\n flex-direction: column;\\n\\n &__content {\\n // Move top margin to ds_question to handle when it has error state left border and avoid problems with fieldset and legend negative margins\\n .ds_question:has(.ds_page-header) {\\n margin-top: 1rem;\\n @include ds_media-query(medium) {\\n margin-top: 2rem;\\n }\\n }\\n .ds_question {\\n .ds_page-header {\\n margin-top: 0;\\n }\\n }\\n }\\n\\n\\n &__actions {\\n // Add block margins to buttons if in actions slot of form layout\\n .ds_button {\\n @include ds_block-margins;\\n }\\n }\\n}\",\"/*------------------------------------*\\\\\\n CHARACTER COUNT\\n\\\\*------------------------------------*/\\n\\n.ds_character-count {\\n margin-top: -16px;\\n}\\n\",\"/*------------------------------------*\\\\\\n CHECKBOXES\\n\\\\*------------------------------------*/\\n\\n.ds_checkbox {\\n @include ds_radiocheckboxstates();\\n\\n &__label::after {\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0 5px 5px;\\n border-top-color: transparent;\\n left: 7px;\\n height: 14px;\\n top: 6px;\\n width: 26px;\\n transform: rotate(-45deg);\\n }\\n\\n /// checked\\n &__input:checked + &__label::before {\\n background-color: currentColor;\\n }\\n\\n &__input:not(:focus):checked + &__label::after {\\n border-color: $ds_colour__text--reversed;\\n }\\n\\n &__input:focus:checked + &__label::before {\\n background-color: $ds_colour__link--focus__background;\\n }\\n\\n &--small &__label::after {\\n border-width: 6px;\\n left: 14px;\\n top: 14px;\\n }\\n\\n &--small &__label::after {\\n width: 13px;\\n height: 7px;\\n left: 13px;\\n top: 11px;\\n border-width: 0 0 3px 3px;\\n }\\n\\n .ds_question__error-message {\\n margin-left: 16px;\\n }\\n}\\n\\n.ds_checkboxes > .ds_checkbox:last-child {\\n margin-bottom: 4px;\\n}\\n\\n.ds_checkbox-separator {\\n font-weight: 700;\\n margin: 24px 0;\\n text-align: center;\\n width: 40px;\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_checkbox {\\n &__label::after {\\n top: 10px;\\n }\\n\\n &--small &__label::after {\\n top: 15px;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CURRENCY WRAPPER\\n\\\\*------------------------------------*/\\n\\n$input-height: 48px;\\n\\n.ds_currency-wrapper {\\n position: relative;\\n\\n &::before {\\n @include ds_large-size;\\n content: '£';\\n height: $input-height;\\n font-weight: $bold;\\n line-height: $input-height !important;\\n pointer-events: none;\\n position: absolute;\\n text-align: center;\\n top: 0;\\n width: $input-height;\\n }\\n\\n &[data-symbol]::before {\\n content: attr(data-symbol);\\n }\\n\\n & > .ds_input {\\n padding-left: 40px;\\n }\\n\\n & > .ds_input:focus {\\n padding-left: 39px;\\n }\\n\\n\\n}\\n\",\"/*------------------------------------*\\\\\\n ERROR SUMMARY\\n\\\\*------------------------------------*/\\n\\n$foreground-colour: $ds_colour__state--negative !default;\\n$link-colour: $foreground-colour;\\n$link-hover-background-colour: adjustLuminance($link-colour, 0.83);\\n$link-hover-colour: adjustForContrast(darken($link-colour, 12.5%), $link-hover-background-colour, 4.5);\\n\\n/// [1] compensate for border\\n.ds_error-summary {\\n border: 0.25rem solid $foreground-colour;\\n padding: 1.25rem 1.75rem; /// [1]\\n @include ds_block-margins;\\n @include ds_last-child-no-margin;\\n\\n &__title {\\n margin-top: 0;\\n }\\n\\n &__list {\\n color: $foreground-colour;\\n font-weight: $bold;\\n list-style-type: none;\\n margin-left: 0;\\n\\n a {\\n color: $link-colour;\\n\\n &:hover:not(:focus) {\\n background-color: $link-hover-background-colour;\\n color: $link-hover-colour;\\n outline-color: $link-hover-background-colour;\\n }\\n\\n &:focus {\\n color: $ds_colour__link--focus;\\n }\\n }\\n\\n li {\\n margin-left: 0;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n FIELD GROUP\\n\\\\*------------------------------------*/\\n\\n.ds_field-group {\\n\\n // Remove bottom margin of last field\\n > div:last-child {\\n margin-bottom: 0;\\n\\n .ds_input {\\n margin-bottom: 0;\\n }\\n }\\n\\n &--inline {\\n display: flex;\\n flex-direction: row;\\n gap: 1rem;\\n\\n // Remove bottom margin of all fields\\n > div {\\n margin-bottom: 0;\\n\\n @include ds_last-child-no-margin;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n HINT TEXT\\n\\\\*------------------------------------*/\\n\\n.ds_hint-text {\\n color: $ds_colour__text--secondary;\\n margin-bottom: 16px;\\n\\n > * {\\n margin-bottom: 8px;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n LABEL\\n\\\\*------------------------------------*/\\n\\n.ds_label {\\n color: $ds_colour__text;\\n display: inline-block;\\n font-weight: $bold;\\n margin-bottom: 8px;\\n}\\n\",\"/*------------------------------------*\\\\\\n PREFILLED VALUE LIST\\n\\\\*------------------------------------*/\\n\\n.ds_prefilled-value-list {\\n\\n &__key {\\n margin: 0;\\n @include ds_responsive-margin(1, bottom);\\n padding: 0;\\n }\\n\\n &__value {\\n margin: 0;\\n @include ds_responsive-margin(3, bottom);\\n padding: 0;\\n\\n @include ds_media-query(medium) {\\n display: flex;\\n\\n &-actions {\\n @include ds_responsive-margin(3, left);\\n }\\n \\n }\\n\\n }\\n\\n}\",\"/*------------------------------------*\\\\\\n QUESTION\\n\\\\*------------------------------------*/\\n\\n.ds_question {\\n\\n @include ds_responsive-margin(3, bottom);\\n\\n &--error {\\n border-left: 0.25rem solid $ds_colour__state--negative;\\n padding-left: 1.25rem;\\n }\\n\\n &__message,\\n &__error-message {\\n @include ds_responsive-margin(2, bottom);\\n }\\n\\n &__error-message {\\n color: $ds_colour__state--negative;\\n font-weight: $bold;\\n }\\n\\n // Remove bottom margin from last element if within a fieldset to prevent double margin\\n & > fieldset {\\n @include ds_last-child-no-margin;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n RADIO BUTTONS\\n\\\\*------------------------------------*/\\n\\n.ds_radio {\\n @include ds_radiocheckboxstates(true, 1px);\\n\\n &__label::after {\\n top: 6px;\\n left: 10px;\\n width: 0;\\n height: 0;\\n border: 10px solid currentColor;\\n border-radius: 50%;\\n background: currentColor;\\n }\\n\\n &__input:focus + &__label::after {\\n color: $ds_colour__focus;\\n }\\n\\n &--small &__label::after {\\n border-width: 6px;\\n left: 14px;\\n top: 10px;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_radio {\\n &__label::after {\\n top: 10px;\\n }\\n\\n &--small &__label::after {\\n top: 14px;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n REVEAL CONTENT\\n\\\\*------------------------------------*/\\n\\n.ds_reveal-content {\\n display: none;\\n margin-top: 16px;\\n padding-left: 16px;\\n position: relative;\\n @include ds_last-child-no-margin;\\n\\n &::before {\\n background-color: $ds_colour__border;\\n bottom: 0;\\n content: '';\\n left: -22px;\\n position: absolute;\\n top: 0;\\n width: 4px;\\n }\\n}\\n\\n:checked ~ .ds_reveal-content {\\n display: block;\\n}\\n\",\"/*------------------------------------*\\\\\\n SELECT\\n\\\\*------------------------------------*/\\n\\n///\\n/// [1] renders an outline/border in windows high contrast mode\\n///\\n.ds_select {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n background-color: transparent;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M480-360 280-560h400L480-360Z'/%3E%3C/svg%3E\\\");\\n background-position: center right 10px;\\n background-repeat: no-repeat;\\n border-radius: 0;\\n border: 0;\\n box-shadow: inset 0 0 0 2px currentColor;\\n min-height: 3rem;\\n outline: 2px solid transparent; /// [1]\\n outline-offset: -2px; /// [1]\\n padding: 0.5rem 3rem 0.5rem 0.75rem;\\n\\n &:focus {\\n @include ds_focus-outline;\\n box-shadow: inset 0 0 0 4px currentColor;\\n }\\n\\n &::-ms-expand {\\n display: none;\\n }\\n}\\n\\n///\\n/// [1] renders an outline/border in windows high contrast mode\\n///\\n.ds_select-arrow {\\n background: $ds_colour__button__background;\\n display: none;\\n width: 3rem;\\n outline: 2px solid transparent; /// [1]\\n outline-offset: -2px; /// [1]\\n pointer-events: none;\\n position: relative;\\n\\n @supports (appearance: none) or (-webkit-appearance: none) {\\n display: block;\\n }\\n\\n &::before {\\n bottom: 0;\\n color: $ds_colour__button;\\n font-size: 1rem;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: 1;\\n\\n @include ds_chevron(down, 0.75em);\\n right: calc(50% - 0.375em);\\n top: calc(50% - 0.5625em);\\n }\\n}\\n\\n.ds_select:focus + .ds_select-arrow {\\n background-color: $ds_colour__button--focus__background;\\n\\n &::before {\\n color: $ds_colour__button--focus;\\n }\\n}\\n\\n.ds_select-wrapper {\\n @include ds_responsive-margin(3, bottom);\\n max-width: max-content;\\n min-width: 10em\\n}\\n\\n/// Error state\\n/// [1] legacy, former class name\\n.ds_select-wrapper {\\n &.ds_input--error .ds_select, /// [1]\\n .ds_select--error,\\n .ds_input--error {\\n box-shadow: inset 0 0 0 4px $ds_colour__state--negative;\\n\\n &:focus {\\n box-shadow: inset 0 0 0 4px currentColor;\\n }\\n }\\n}\\n\\n/// [1] legacy, former class name\\n.ds_select-wrapper.ds_input--error { /// [1]\\n padding: 0;\\n}\\n\\n@supports (display: grid) {\\n .ds_select-wrapper {\\n display: grid;\\n grid-template-columns: 1fr auto;\\n }\\n\\n .ds_select {\\n background-image: none;\\n grid-area: 1/1/1/3;\\n }\\n\\n .ds_select-arrow {\\n grid-area: 1/2/1/2;\\n }\\n}\\n\",\"@mixin ds_chevron($orientation: down, $size: 1em) {\\n $chevron-width: #{$size * 0.25};\\n\\n content: '';\\n background-color: transparent;\\n border-style: solid;\\n border-width: 0px 0px $chevron-width $chevron-width;\\n border-top-color: transparent;\\n display: inline-block;\\n height: $size;\\n width: $size;\\n\\n // $spritename: 'expand_more';\\n @if $orientation == down {\\n transform: rotate(-45deg);\\n } @else if $orientation == up {\\n transform: rotate(-225deg);\\n } @else if $orientation == left {\\n transform: rotate(-315deg);\\n } @else if $orientation == right {\\n transform: rotate(-135deg);\\n }\\n}\\n\\n\\n\\n\\n/// Icon mask\\n///\\n/// @deprecated icons displayed this way do not render in Windows\\n/// \\\"High Contrast\\\" mode\\n///\\n/// Adds mask-image properties for a provided image URL\\n///\\n/// @param {string} $url - url of the image to be masked\\n///\\n/// @example scss\\n/// .warning-icon {\\n/// @include ds_icon-mask('/path/to/my/icon')\\n/// }\\n\\n@mixin ds_icon-mask($url) {\\n /// for IE11 support, use image without clip path\\n background-image: url($url);\\n\\n @supports (-webkit-mask-image: url()) or (mask-image: url()) {\\n background-color: currentColor;\\n background-image: none;\\n -webkit-mask-image: url($url);\\n mask-image: url($url);\\n }\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin chevron($orientation: down, $size: 1em) {\\n @include ds_chevron($orientation, $size);\\n}\\n\\n@mixin icon-mask($url) {\\n @include ds_icon-mask($url);\\n}\\n\",\"/*------------------------------------*\\\\\\n TEXT INPUTS\\n Covers text-based INPUT elements and TEXTAREA elements\\n\\\\*------------------------------------*/\\n\\n.ds_input {\\n @include ds_responsive-margin (3, bottom);\\n background-color: $ds_colour__background--primary;\\n border: $field-border-width solid currentColor;\\n border-radius: 0;\\n display: block;\\n line-height: 2rem;\\n min-height: 3rem;\\n padding: px-to-rem(8px - $field-border-width) px-to-rem(12px - $field-border-width);\\n width: 100%;\\n\\n &:focus {\\n @include ds_focus-outline;\\n box-shadow: inset 0 0 0 #{$field-border-width--focus - $field-border-width};\\n }\\n\\n &--error {\\n border-color: $ds_colour__state--negative;\\n border-width: $field-border-width--error;\\n padding: px-to-rem(8px - $field-border-width--error) px-to-rem(12px - $field-border-width--error);\\n\\n &:focus {\\n border-color: currentColor;\\n box-shadow: none;\\n }\\n }\\n\\n & + &__message {\\n margin-top: -1rem;\\n }\\n\\n &__message--error {\\n color: $ds_colour__state--negative;\\n font-weight: $bold;\\n }\\n}\\n\\n// width variants: fixed\\n$text-input-fixed-widths: (2,3,4,5,10,20);\\n\\n/// [1] padding + n character widths\\n/// [2] additional currency padding + right padding + n character widths\\n@each $width in $text-input-fixed-widths {\\n .ds_input--fixed-#{$width} {\\n max-width: calc(16px + #{($width) * 1em}); /// [1]\\n }\\n\\n .ds_currency-wrapper .ds_input--fixed-#{$width} {\\n max-width: calc(40px + 8px + #{($width) * 1em}); /// [2]\\n }\\n}\\n\\n// width variants: fluid\\n$text-input-fluid-widths: (\\n 'one-quarter' 25,\\n 'one-third' 33.333333,\\n 'half' 50,\\n 'two-thirds' 67.666667,\\n 'three-quarters' 75\\n);\\n\\n@each $width in $text-input-fluid-widths {\\n $name: nth($width, 1);\\n $value: nth($width, 2);\\n\\n .ds_input--fluid-#{$name} {\\n max-width: #{($value) * 1%};\\n }\\n}\\n\\n.ds_input__wrapper {\\n display: block;\\n margin-bottom: 1.5rem;\\n overflow: auto;\\n\\n .ds_input {\\n float: left;\\n margin-bottom: 0;\\n margin-right: -3rem;\\n padding-right: 3.5rem;\\n }\\n\\n .ds_icon {\\n height: 2rem;\\n padding: 0.5rem;\\n width: 2rem;\\n }\\n\\n > .ds_button {\\n margin: 0;\\n @include ds_button-sizing--small;\\n }\\n}\\n\\n@supports (display: flex) {\\n .ds_input__wrapper {\\n display: flex;\\n overflow: visible;\\n }\\n}\\n\",\"/// Button sizing\\n///\\n/// Common definitions for consistent button sizing\\n\\n$button__height: 56px !default;\\n$button__height--small: 48px !default;\\n\\n@mixin ds_button-sizing ($icon: true) {\\n min-height: $button__height;\\n min-width: $button__height;\\n padding: 16px;\\n\\n @if $icon {\\n > .ds_icon {\\n height: 40px;\\n padding: 8px;\\n width: 40px;\\n }\\n }\\n}\\n\\n@mixin ds_button-sizing--small ($icon: true) {\\n min-height: $button__height--small;\\n min-width: $button__height--small;\\n padding-top: 12px;\\n padding-bottom: 12px;\\n\\n @if $icon {\\n > .ds_icon {\\n height: 32px;\\n padding: 8px;\\n width: 32px;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n ACCORDION\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$accordion__header-colour: $ds_colour__link !default;\\n\\n\\n\\n\\n.ds_accordion {\\n @include ds_responsive-margin (4, bottom, false, -1px);\\n @include ds_responsive-margin (4, top);\\n\\n position: relative;\\n\\n &__open-all {\\n display: none;\\n float: right;\\n line-height: line-height-on-grid($root-font-size);\\n margin-bottom: 0.5rem;\\n position: relative;\\n text-decoration: none;\\n\\n @include ds_media-query(medium) {\\n line-height: line-height-on-grid($root-font-size--medium);\\n }\\n\\n + * {\\n clear: both;\\n }\\n }\\n}\\n\\nh1,h2,h3 {\\n + .ds_accordion {\\n margin-top: 0\\n }\\n}\\n\\n// Open all button is shown after JavaScript is initialised\\n.ds_accordion.js-initialised {\\n .ds_accordion__open-all {\\n display: block;\\n }\\n}\\n\\n.ds_accordion-item {\\n border-bottom: 1px solid $ds_colour__border--faint;\\n border-top: 1px solid $ds_colour__border--faint;\\n\\n &__header {\\n @include ds_blocklink;\\n @include ds_h4-size;\\n\\n background-color: $ds_colour__background--primary;\\n border-width: 0;\\n color: $accordion__header-colour;\\n font-weight: $bold;\\n margin: 0;\\n position: relative;\\n text-align: left;\\n width: 100%;\\n\\n &:hover:not(:focus) {\\n color: $ds_colour__link--hover;\\n }\\n }\\n\\n /// [1] subtracting the accordion item's border width\\n &__title {\\n @include ds_h4-size;\\n margin-bottom: 0;\\n padding: 1rem 3rem calc(1rem - 1px) 1rem; /// [1]\\n\\n &--button {\\n padding: 0;\\n }\\n }\\n\\n /// [1] subtracting the accordion item's border width\\n &__button {\\n appearance: unset;\\n background: transparent;\\n border: 0;\\n padding: 1rem 3rem calc(1rem - 1px) 1rem; /// [1]\\n text-align: left;\\n width: 100%;\\n\\n @include ds_blocklink;\\n }\\n\\n &__label {\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n }\\n\\n &__title--button &__label {\\n z-index: -1;\\n }\\n\\n &__indicator {\\n @include ds_chevron(down, 0.75em);\\n position: absolute;\\n right: 1.5rem;\\n top: 1.125rem;\\n transition: transform 0.2s, top 0.2s;\\n pointer-events: none;\\n\\n @include ds_media-query(medium) {\\n top: px-to-rem(21px); // nudges indicator to remain inline with first line of title\\n right: px-to-rem(26px);\\n }\\n }\\n\\n &__body {\\n display: none;\\n padding: 1.5rem 2.5rem 2rem 1rem;\\n\\n @include ds_last-child-no-margin;\\n\\n @include ds_media-query(medium) {\\n padding-right: 6.25rem;\\n }\\n }\\n\\n &__control:checked ~ &__body {\\n display: block;\\n }\\n\\n &__control:checked ~ &__header {\\n background-color: $ds_colour__link--current__background;\\n color: $ds_colour__link--current;\\n }\\n\\n &__control:checked ~ &__header &__indicator {\\n top: 1.375rem;\\n transform: rotate(-225deg);\\n\\n @include ds_media-query(medium) {\\n top: px-to-rem(27px); // nudges indicator to remain inline with first line of title\\n right: px-to-rem(26px);\\n }\\n }\\n\\n &__control:focus ~ &__header,\\n &__control:focus:hover ~ &__header {\\n background: $ds_colour__blocklink-bg--focus;\\n box-shadow: 0 $link__border-width $ds_colour__link--focus;\\n color: $ds_colour__link--focus;\\n z-index: 2;\\n }\\n\\n + .ds_accordion-item {\\n margin-top: -1px;\\n }\\n}\\n\\n\\n\\n\\n/* SMALL VARIANT */\\n\\n.ds_accordion--small {\\n .ds_accordion-item__header,\\n .ds_accordion-item__title,\\n .ds_accordion-item__button,\\n .ds_accordion-item__body,\\n .ds_accordion__open-all {\\n font-size: px-to-rem($root-font-size); // 1rem\\n line-height: line-height-on-grid($root-font-size); //1.5\\n }\\n\\n .ds_accordion-item__body {\\n padding-right: 1rem;\\n\\n h3, h4 {\\n font-size: 1em; // 1rem\\n line-height: line-height-on-grid($root-font-size); //1.5\\n }\\n }\\n\\n .ds_accordion-item__indicator {\\n margin-top: 0;\\n right: 1.5rem;\\n top: 1.125rem;\\n }\\n\\n .ds_accordion-item__control:checked~.ds_accordion-item__header .ds_accordion-item__indicator {\\n right: 1.5rem;\\n top: 1.5rem;\\n }\\n}\\n\\n@include media-query(medium) {\\n .ds_accordion--small {\\n .ds_accordion-item__indicator {\\n top: 1.125rem;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n ARTICLE ASIDE\\n\\\\*------------------------------------*/\\n\\n.ds_article-aside {\\n @include ds_block-margins;\\n @include ds_small-size;\\n @include ds_responsive-padding(4, top);\\n position: relative;\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\\n &::before {\\n border-top: 2px solid $ds_colour__brand;\\n content: '';\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n }\\n}\\n\",\"/// [1] default aspect ratio is 16:9\\n.ds_aspect-box {\\n overflow: hidden;\\n position: relative;\\n padding-bottom: calc(900%/16); /// [1]\\n\\n // 1:1 aspect ratio\\n &--square {\\n padding-bottom: 100%;\\n }\\n\\n // 4:3 aspect ratio\\n &--43 {\\n padding-bottom: calc(300%/4);\\n }\\n\\n // 2.35:1 (anamorphic widescreen) aspect ratio, deprecated\\n &--235 {\\n padding-bottom: calc(10000%/235);\\n }\\n\\n // 21:9 (more accurate anamorphic widescreen) aspect ratio\\n &--219 {\\n padding-bottom: calc(900%/21);\\n }\\n\\n &--fallback {\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: cover;\\n }\\n\\n &--fallback &__inner {\\n display: none;\\n }\\n\\n &__inner {\\n height: 100%;\\n left: 0;\\n width: 100%;\\n object-fit: cover;\\n position: absolute;\\n right: 0;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n AUTOCOMPLETE\\n\\\\*------------------------------------*/\\n\\n$site-search__border-colour: $ds_colour__grey !default;\\n\\n\\n\\n\\n.ds_autocomplete {\\n position: relative;\\n\\n &__suggestions {\\n @include ds_box-shadow;\\n\\n border: 2px solid $site-search__border-colour;\\n display: none;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 100%;\\n z-index: 10;\\n }\\n\\n &__suggestions-list {\\n list-style-type: none;\\n margin: 0;\\n }\\n\\n /*\\n [1] 10px = 12px (associated site search input) minus 2px (suggestions border), 11px = 12px vertical padding minus 2px (suggestions border) split evenly between top and bottom padding\\n */\\n &__suggestion {\\n background-color: $ds_colour__background--primary;\\n color: $ds_colour__text--secondary;\\n cursor: pointer;\\n font-style: italic;\\n margin-bottom: 0;\\n padding: 11px 10px; /* [1] */\\n transition: background-color 0.2s;\\n\\n &:hover {\\n background-color: $ds_colour__link--hover__background;\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 2px solid $site-search__border-colour;\\n }\\n\\n &__text {\\n font-style: normal;\\n color: $ds_colour__text;\\n }\\n\\n &__category {\\n color: $ds_colour__brand;\\n }\\n\\n &.active {\\n @include ds_high-contrast-focus(2px){\\n outline-offset: -2px;\\n }\\n background-color: $ds_colour__link--focus__background;\\n box-shadow: inset 0 -3px $ds_colour__link--focus__shadow;\\n }\\n\\n &.active &__text {\\n color: $ds_colour__focus;\\n }\\n }\\n}\\n\\n.js-autocomplete-input.js-has-suggestions ~ .ds_autocomplete__suggestions {\\n display: block;\\n}\\n\\n@include media-query(medium) {\\n .ds_autocomplete__suggestions {\\n font-size: px-to-rem($root-font-size);\\n line-height: line-height-on-grid($root-font-size);\\n }\\n}\\n\",\"/// Box shadow\\n///\\n/// Single definition for consistent box shadows\\n\\n@mixin ds_box-shadow {\\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15);\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin box-shadow {\\n @include ds_box-shadow;\\n}\\n\",\"/*------------------------------------*\\\\\\n BACK LINK\\n\\\\*------------------------------------*/\\n\\n.ds_back-link {\\n @include ds_small-size;\\n align-items: center;\\n display: inline-flex;\\n margin: 16px 0 16px 16px;\\n position: relative;\\n\\n &::before {\\n @include ds_chevron(left, 0.5em);\\n border-width: 0 0 2px 2px;\\n left: -14px;\\n position: absolute;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n $BACK TO TOP\\n\\\\*------------------------------------*/\\n\\n.ds_back-to-top {\\n display: none;\\n}\\n\\n@media only screen {\\n /// [1] -1px compensates for the height of a visually-hidden element. This prevents the back\\n /// to top element causing the document to always be at least 1px taller than the viewport\\n /// and adding a scroll bar\\n /// [2] 0.125rem (2px) is additional padding between the solid background area and the link text\\n /// [3] fallback for older browsers\\n /// [4] this is the button's height plus 0.5rem spacing\\n .ds_back-to-top {\\n bottom: 3.5rem;\\n display: block;\\n pointer-events: none;\\n position: absolute;\\n right: 0.5rem;\\n top: calc(100vh - 1px); /// [1]\\n z-index: 1;\\n\\n @supports (bottom: var(--ds-back-to-top-offset)) {\\n bottom: var(--ds-back-to-top-offset, 0);\\n }\\n\\n &__button {\\n @include ds_blocklink;\\n @include ds_small-size;\\n\\n background-color: rgba(red($ds_colour__background--primary),green($ds_colour__background--primary),blue($ds_colour__background--primary),0.4);\\n font-weight: $bold;\\n margin: 0;\\n min-width: 7.5rem;\\n pointer-events: all;\\n padding: 0.5rem calc(2rem + 0.125rem) 0.5rem calc(1rem + 0.125rem); /// [2]\\n position: fixed; /// [3]\\n position: sticky;\\n right: 0.5rem;\\n top: calc(100vh - 3.5rem); /// [4]\\n\\n &::before {\\n content: '';\\n position: absolute;\\n left: 1rem;\\n right: 2rem;\\n top: 0.5rem;\\n bottom: 0.5rem;\\n z-index: -1;\\n }\\n }\\n\\n &__icon {\\n height: 1.5rem;\\n min-height: 1.5rem;\\n position: absolute;\\n right: 0.5rem;\\n top: 0.5rem;\\n }\\n\\n &__button::before,\\n &__icon {\\n background-color: $ds_colour__background--primary;\\n transition: background-color 0.2s;\\n\\n @include ds_media-query-high-contrast {\\n background-color: transparent;\\n }\\n }\\n\\n &__button:hover::before,\\n &__button:hover &__icon,\\n &__button:focus::before,\\n &__button:focus &__icon {\\n background-color: transparent;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n $BREADCRUMBS\\n\\\\*------------------------------------*/\\n\\n// fixed vars\\n$breadcrumbs__colour: $ds_colour__text--secondary;\\n$breadcrumbs__font-size: $small-size--fixed;\\n\\n\\n\\n\\n.ds_breadcrumbs {\\n color: $breadcrumbs__colour;\\n font-size: $breadcrumbs__font-size;\\n line-height: 24px;\\n padding-left: 0;\\n margin: 24px 0 16px;\\n\\n &__item {\\n display: inline-block;\\n margin: 0;\\n padding: 0;\\n }\\n\\n &__item:not(:first-child){\\n .ds_breadcrumbs__link {\\n margin-left: -2px; // Negative margin to offset the 2px outline on links\\n }\\n\\n &::before {\\n @include ds_chevron(right, 0.333333em);\\n margin: 0 8px 0 6px;\\n position: relative;\\n top: -1px;\\n }\\n }\\n\\n &__container {\\n padding-top: 16px;\\n }\\n\\n @include ds_media-query(medium) {\\n &__container {\\n padding-top: 24px;\\n }\\n }\\n\\n @supports (display: flex) {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n}\\n\\n.ds_reversed .ds_breadcrumbs {\\n color: $ds_colour__text--reversed;\\n}\\n\",\"/*------------------------------------*\\\\\\n BUTTONS\\n\\\\*------------------------------------*/\\n\\n$button__border-width: 2px !default;\\n$button__outline-width: 3px !default;\\n$button__padding--x: 16px !default;\\n$link__border-width: 3px;\\n\\n\\n\\n///\\n/// [1] renders an outline/border in windows high contrast mode\\n///\\n.ds_button {\\n @include ds_small-size;\\n @include ds_button-sizing;\\n\\n background: $ds_colour__button__background;\\n border: 0;\\n border-radius: 0;\\n color: $ds_colour__button;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: $bold;\\n line-height: 1.5rem;\\n outline: 2px solid transparent; /// [1]\\n outline-offset: -2px; /// [1]\\n position: relative;\\n text-align: center;\\n text-decoration: none;\\n transition: background-color $transition-out-time;\\n\\n @include ds_responsive-margin(4, bottom);\\n\\n // Margins wont collapse as inline-block.\\n // Assume block margins (step 4) on preceding element/component so no top margin is needed on ds_button\\n margin-top: 0;\\n \\n\\n &:hover {\\n background-color: $ds_colour__button--hover__background;\\n color: $ds_colour__button;\\n outline-color: transparent;\\n transition-duration: $transition-in-time;\\n }\\n\\n &:focus {\\n background-color: $ds_colour__button--focus__background;\\n box-shadow: 0 $link__border-width $ds_colour__link--focus__shadow;\\n color: $ds_colour__button--focus;\\n outline: 0;\\n transition-duration: 0s;\\n\\n @include ds_high-contrast-focus(4px);\\n }\\n\\n // ICONS ON BUTTONS\\n .ds_icon {\\n pointer-events: none;\\n }\\n\\n &[disabled] {\\n background-color: $ds_colour__button--disabled__background;\\n box-shadow: none;\\n color: $ds_colour__button;\\n font-weight: $normal;\\n outline: none;\\n pointer-events: none;\\n }\\n}\\n\\n.ds_reversed .ds_button {\\n background-color: $ds_colour__button;\\n color: $ds_colour__button__background;\\n\\n &:focus,\\n &:hover:focus {\\n background-color: $ds_colour__blocklink-bg--focus;\\n }\\n\\n &:hover {\\n background-color: $ds_colour__blocklink-bg--hover;\\n }\\n\\n &--secondary {\\n background-color: transparent;\\n border-color: currentColor;\\n color: $ds_colour__button;\\n\\n &:hover:not(:focus) {\\n background-color: rgba(0, 0, 0, 0.3);\\n color: $ds_colour__button;\\n outline-color: currentColor;\\n }\\n }\\n}\\n\\n.ds_button {\\n &--secondary {\\n background-color: $ds_colour__button--secondary__background;\\n color: $ds_colour__button--secondary;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n\\n &:hover:not(:focus) {\\n background-color: $ds_colour__button--secondary--hover__background;\\n color: $ds_colour__button--secondary--hover;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n }\\n }\\n\\n &--cancel {\\n background-color: $ds_colour__button--cancel__background;\\n color: $ds_colour__button--cancel;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n\\n &:hover:not(:focus) {\\n background-color: $ds_colour__button--cancel--hover__background;\\n color: $ds_colour__button--cancel;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n }\\n }\\n}\\n\\n\\n// SIZE VARIANTS\\n.ds_button {\\n &--small {\\n @include ds_small-size;\\n @include ds_button-sizing--small;\\n }\\n}\\n\\n// WIDTH VARIANTS\\n.ds_button {\\n &--fixed {\\n width: 12.5rem;\\n\\n &.ds_button--small {\\n width: 10rem;\\n }\\n }\\n\\n &--max {\\n max-width: 30rem;\\n width: 100%;\\n }\\n}\\n\\n// BUTTONS WITH ICONS\\n// n.b. icon sizing is included in the ds_button-sizing mixins\\n.ds_button {\\n .ds_icon {\\n bottom: 0;\\n box-sizing: content-box;\\n pointer-events: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n }\\n\\n &--has-icon {\\n padding-right: calc(#{$button__height} + #{$button__padding--x});\\n }\\n\\n &--has-icon--left {\\n padding-left: calc(#{$button__height} + #{$button__padding--x});\\n padding-right: #{$button__padding--x};\\n\\n .ds_icon {\\n left: 0;\\n right: auto;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n BUTTON GROUP\\n\\\\*------------------------------------*/\\n\\n.ds_button-group {\\n @include ds_block-margins;\\n @include ds_responsive-spacing(2, 'gap');\\n\\n display: flex;\\n flex-wrap: wrap;\\n\\n // Remove margins as the group handles the layout\\n .ds_button {\\n align-content: center;\\n margin: 0;\\n }\\n\\n // Links and text buttons are vertically centred but not stretched to match the height of all buttons\\n a:not(.ds_button),\\n .ds_link {\\n align-self: center;\\n }\\n\\n // Mobile size behaviour\\n @include ds_media-query(small-down) {\\n\\n // Default is to stack on mobile\\n flex-direction: column;\\n .ds_button {\\n width: 100%;\\n }\\n // Modifier to keep buttons in a row\\n &--inline {\\n flex-direction: row;\\n flex-wrap: nowrap;\\n\\n .ds_button {\\n flex-grow: 1;\\n width: auto;\\n }\\n\\n // Links and text buttons take up minimal space\\n .ds_link {\\n min-width: fit-content;\\n }\\n }\\n // Centre align icon button label text when stacked\\n &:not(.ds_button-group--inline){\\n .ds_button--has-icon {\\n padding-right: $button__height;\\n padding-left: $button__height;\\n }\\n }\\n }\\n}\",\"/*------------------------------------*\\\\\\n COOKIE BANNER\\n Modifications to the notification banner component for this particular use case\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$cookie-notification__background-colour: $ds_colour__background--tertiary !default;\\n$cookie-notification__background-colour--success: $ds_colour__state--positive !default;\\n\\n\\n\\n\\n.ds_notification.ds_notification--cookie {\\n background: $cookie-notification__background-colour;\\n color: $ds_colour__text;\\n\\n .ds_notification__content {\\n padding-top: 24px;\\n padding-bottom: 32px;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $cookie-notification__background-colour, 'cookie banner');\\n @include checkAndFixDescendantSecondaryButtonColour($ds_colour__button--secondary, $cookie-notification__background-colour, 'cookie banner');\\n}\\n\\n.ds_notification.ds_notification--cookie-success {\\n background: $cookie-notification__background-colour--success;\\n}\\n\",\"/*------------------------------------*\\\\\\n CALLOUT\\n Deprecated. Consider 'Inset text' or 'Notification message' instead.\\n\\\\*------------------------------------*/\\n\\n.ds_callout {\\n @include ds_block-margins;\\n @include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(2, bottom);\\n @include ds_responsive-padding(3, left);\\n @include ds_responsive-padding(3, right);\\n @include ds_last-child-no-margin;\\n\\n background: $ds_colour__background--secondary;\\n border-left: 4px solid $ds_colour__brand;\\n\\n &--no-border {\\n border: none;\\n }\\n\\n &__label.ds_content-label {\\n color: $ds_colour__brand;\\n font-size: $small-size--fixed;\\n }\\n\\n &__label + &__title {\\n margin-top: 0;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CARD\\n\\\\*------------------------------------*/\\n\\n$card-grey-background-color: $ds_colour__background--primary--dim !default;\\n\\n.ds_card {\\n @include ds_box-shadow;\\n @include ds_small-size;\\n @include ds_high-contrast-outline;\\n background-color: $ds_colour__background--primary;\\n display: grid;\\n grid-template-rows: auto 1fr;\\n position: relative;\\n\\n &--grey {\\n background-color: $card-grey-background-color;\\n color: $ds_colour__text;\\n\\n &:focus-within {\\n color: $ds_colour__link--focus;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $card-grey-background-color, 'grey card');\\n }\\n\\n &--hover,\\n &--has-hover {\\n &:hover {\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);\\n }\\n &:hover:not(:focus) {\\n background-color: $ds_colour__link--hover__background;\\n\\n // override metadata colour to meet contrast\\n .ds_metadata {\\n color: inherit;\\n }\\n }\\n\\n &:focus-within {\\n background-color: $ds_colour__link--focus__background !important;\\n box-shadow: inset 0 -3px $ds_colour__link--focus__shadow, inset 0 -3px $ds_colour__link--focus__shadow;\\n transition-duration: 0s;\\n\\n .ds_card__link--cover {\\n background-color: transparent;\\n box-shadow: none;\\n outline: none;\\n }\\n\\n // override metadata colour to meet contrast\\n .ds_metadata {\\n color: inherit;\\n }\\n }\\n }\\n\\n &__media {\\n @include ds_media-query (medium-down) {\\n &--small-mobile {\\n margin: px-to-rem(16px) px-to-rem(16px) 0;\\n max-width: 384px;\\n }\\n }\\n }\\n\\n &__content {\\n @include ds_last-child-no-margin;\\n display: grid;\\n grid-template-rows: auto auto 1fr;\\n height: 100%;\\n @include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(2, right);\\n @include ds_responsive-padding(3, bottom);\\n @include ds_responsive-padding(2, left);\\n\\n &-footer {\\n @include ds_last-child-no-margin;\\n align-self: end;\\n }\\n }\\n\\n &__title {\\n @include ds_h3-style;\\n @include ds_responsive-margin(1, bottom);\\n margin-top: 0 !important;\\n }\\n\\n &__link--cover:focus {\\n @include ds_high-contrast-focus;\\n }\\n\\n &__link--cover:after {\\n content: \\\"\\\";\\n height: 100%;\\n left: 0px;\\n position: absolute;\\n top: 0px;\\n width: 100%;\\n z-index: 1;\\n }\\n}\\n\\n/* Support for old markup */\\n.ds_card {\\n .ds_category-item__link {\\n &:hover {\\n &:before {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CATEGORY HEADER\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$category-header__title-colour: $ds_colour__text !default;\\n\\n\\n\\n\\n.ds_category-header {\\n padding-top: 16px;\\n padding-bottom: 32px;\\n\\n &__header {\\n margin-bottom: 32px;\\n }\\n\\n &__title {\\n color: $category-header__title-colour;\\n font-weight: $light;\\n margin-bottom: 8px;\\n }\\n\\n &__summary {\\n line-height: 24px;\\n\\n > :last-child {\\n margin-bottom: 8px;\\n }\\n }\\n\\n &__media {\\n display: block;\\n margin: 0 auto;\\n height: auto;\\n max-height: 360px;\\n max-width: 320px;\\n\\n @include ds_media-query(medium) {\\n max-width: 100%;\\n }\\n }\\n}\\n\\n.ds_reversed .ds_category-header {\\n color: $ds_colour__text--reversed;\\n\\n &__title {\\n color: $ds_colour__text--reversed;\\n }\\n}\\n\\n.ds_category-header {\\n @include ds_layout();\\n}\\n\\n.ds_category-header {\\n grid-gap: $grid-gap-y $grid-gap-x;\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_category-header {\\n &__header {\\n float: left;\\n @include ds_colwidth(8);\\n margin: 40px 0;\\n }\\n\\n &__media-container {\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n &__summary {\\n line-height: 32px;\\n }\\n }\\n}\\n\\n@supports(display: grid) {\\n .ds_category-header__header {\\n margin-bottom: 0;\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_category-header {\\n align-items: center;\\n grid-template-columns: repeat(12, 1fr);\\n\\n &__header {\\n float: none;\\n grid-column: 1 / span 8;\\n margin: 40px 0;\\n }\\n\\n &__media-container {\\n float: none;\\n grid-column: 9 / span 4;\\n margin-right: 0;\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CATEGORY ITEM\\n Navigation elements for different levels of category navigation. Includes classes for layout of these elements in a list.\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$category-item__border-colour--hover: $ds_colour__link--hover !default;\\n$category-item__link-colour: $ds_colour__link !default;\\n\\n$border-width-size: 4px;\\n\\n\\n\\n\\n.ds_category-item {\\n\\n @include ds_blocklink('.ds_category-item__link');\\n\\n padding: 12px 16px 12px;\\n text-decoration: none;\\n transition: background-color $transition-out-time, border-color $transition-out-time;\\n width: 100%;\\n\\n @include ds_last-child-no-margin;\\n\\n &__title {\\n @include ds_large-size;\\n line-height: 28px;\\n margin: 0 0 16px;\\n }\\n\\n .ds_category-item__link::after {\\n left: #{$border-width-size * -1};\\n }\\n\\n &__link {\\n color: $category-item__link-colour;\\n\\n &::before {\\n border-left: $border-width-size solid $ds_colour__border--highlight;\\n bottom: 0;\\n content: '';\\n left: #{$border-width-size * -1};\\n opacity: 0.3;\\n position: absolute;\\n top: 0;\\n width: $border-width-size;\\n }\\n\\n &:focus::before {\\n content: none;\\n }\\n\\n &:hover::before {\\n border-color: $category-item__border-colour--hover;\\n opacity: 1;\\n }\\n\\n &::after {\\n background: transparent;\\n bottom: 0;\\n content: '';\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n }\\n }\\n\\n &__summary {\\n @include ds_small-size;\\n color: $ds_colour__text--secondary;\\n line-height: 24px;\\n margin: 0;\\n }\\n\\n &:hover &__summary,\\n &:focus-within &__summary {\\n color: $ds_colour__text;\\n }\\n}\\n\\n.ds_card {\\n > .ds_category-item {\\n padding-top: 24px;\\n padding-bottom: 24px;\\n position: static;\\n }\\n\\n .ds_category-item__link::before {\\n border-width: 0;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_category-item {\\n &__title {\\n line-height: 32px;\\n }\\n }\\n\\n .ds_card {\\n > .ds_category-item {\\n min-height: 200px;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CATEGORY LIST\\n\\\\*------------------------------------*/\\n\\n.ds_category-list-container {\\n margin: 32px 0;\\n}\\n\\n\\n.ds_category-list {\\n @include ds_layout();\\n\\n list-style-type: none;\\n margin-bottom: 32px;\\n margin-left: -8px;\\n margin-top: -8px;\\n padding: 8px;\\n\\n > * {\\n display: flex;\\n flex-direction: column;\\n margin: 0 0 $grid-gap-y;\\n width: 100%;\\n }\\n\\n &--narrow > * {\\n margin-bottom: $grid-gap-y--narrow;\\n }\\n}\\n\\n.ds_category-list--narrow {\\n @include ds_layout($grid-gap-x--narrow)\\n}\\n\\n@include ds_media-query(medium-down) {\\n .ds_category-list--grid > * {\\n min-height: 0;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_category-list--grid {\\n > * {\\n float: left;\\n @include ds_colwidth(6);\\n\\n &:nth-child(2n+1) {\\n clear: left;\\n }\\n }\\n\\n &.ds_category-list--narrow > * {\\n @include ds_colwidth(6, 12, $grid-gap-x--narrow);\\n }\\n }\\n}\\n\\n@include ds_media-query(large) {\\n .ds_category-list--grid {\\n > * {\\n @include ds_colwidth(4);\\n\\n &:nth-child(n) {\\n clear: none;\\n }\\n\\n &:nth-child(3n+1) {\\n clear: left;\\n margin-left: 0;\\n }\\n }\\n\\n &.ds_category-list--narrow > * {\\n @include ds_colwidth(4, 12, $grid-gap-x--narrow);\\n }\\n }\\n}\\n\\n@supports(display: grid) {\\n .ds_category-list {\\n grid-row-gap: $grid-gap-y;\\n margin-left: 0;\\n margin-top: 0;\\n padding: 0;\\n\\n &--narrow {\\n grid-gap: $grid-gap-y--narrow $grid-gap-y--narrow;\\n }\\n\\n > *[class] {\\n margin-bottom: 0;\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_category-list--grid {\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n }\\n }\\n\\n @include ds_media-query(large) {\\n .ds_category-list--grid {\\n grid-template-columns: 1fr 1fr 1fr;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CONFIRMATION MESSAGE\\n\\\\*------------------------------------*/\\n\\n.ds_confirmation-message {\\n\\n\\t@include ds_block-margins;\\n\\t@include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(2, bottom);\\n @include ds_responsive-padding(2, right);\\n\\n background-color: $ds_colour__background--secondary;\\n border-left: 0.25rem solid $ds_colour__state--positive;\\n padding-left: 2.75rem;\\n position: relative;\\n\\n /// [1] ratio of icon height (24px) to .ds_confirmation-message__title line height\\n &__icon {\\n color: $ds_colour__state--positive;\\n left: 0.75rem;\\n position: absolute;\\n top: 1.25rem; /// [1]\\n\\n @include ds_media-query(medium) {\\n top: 1.5rem; /// [1]\\n }\\n }\\n\\n &__title {\\n @include ds_h2-size;\\n margin-bottom: 0;\\n }\\n\\n &__title:not(:first-child) {\\n margin-top: 0;\\n }\\n\\n &__body {\\n @include ds_last-child-no-margin;\\n margin-top: 0.5rem;\\n }\\n\\n /// [1] ratio of icon height (24px) to .ds_confirmation-message__body line height\\n &:not(:has(&__title)) &__icon {\\n top: 1rem; /// [2]\\n\\n @include ds_media-query(medium) {\\n top: 1.25rem; /// [2]\\n }\\n }\\n\\n &:not(:has(&__title)) &__body {\\n margin-top: 0;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--secondary, 'confirmation message');\\n}\\n\",\"/*------------------------------------*\\\\\\n CONTACT DETAILS\\n\\\\*------------------------------------*/\\n\\n// fixed vars\\n$contact-details__border-colour: $ds_colour__border--highlight;\\n\\n\\n\\n\\n.ds_contact-details {\\n $social-icon-size: px-to-rem(24px);\\n\\n &__title {\\n @include ds_responsive-padding(1, top);\\n display: inline-block;\\n margin-bottom: 0;\\n position: relative;\\n\\n &::after {\\n border-top: 4px solid $contact-details__border-colour;\\n content: '';\\n height: 4px;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n }\\n }\\n\\n &__item {\\n @include ds_responsive-margin(2, top);\\n\\n dd {\\n margin-top: 0;\\n margin-left: 0;\\n }\\n\\n dt:not(.visually-hidden) + .ds_contact-details__social-item {\\n @include ds_responsive-margin(1, top);\\n }\\n }\\n\\n &__social-item {\\n @include ds_responsive-margin(1, bottom);\\n position: relative;\\n\\n &:has(.ds_contact-details__social-icon):not(:first-of-type) {\\n @include ds_responsive-margin(2, top);\\n }\\n }\\n\\n &__social-link {\\n margin-left: #{$social-icon-size + px-to-rem(8px)};\\n }\\n\\n &__social-icon {\\n height: $social-icon-size !important;\\n pointer-events: none;\\n position: absolute;\\n left: 0;\\n width: $social-icon-size !important;\\n }\\n\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_contact-details {\\n &__social-icon {\\n top: px-to-rem(4px);\\n }\\n\\n // 2 Column layout\\n &-grid {\\n @include ds_layout();\\n\\n .ds_contact-details__list {\\n float: left;\\n @include ds_colwidth(6);\\n }\\n\\n @supports(display: grid) {\\n grid-template-columns: repeat(2, 1fr);\\n\\n .ds_contact-details__list {\\n width: auto;\\n }\\n }\\n }\\n }\\n}\\n\\n@include ds_media-query(large) {\\n .ds_contact-details {\\n // 3 Column layout\\n &-grid {\\n @include ds_layout();\\n\\n .ds_contact-details__list {\\n float: left;\\n @include ds_colwidth(4);\\n }\\n\\n @supports(display: grid) {\\n grid-template-columns: repeat(3, 1fr);\\n\\n .ds_contact-details__list {\\n width: auto;\\n }\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n CONTENT LABEL\\n\\\\*------------------------------------*/\\n\\n.ds_content-label {\\n @include ds_small-size;\\n font-weight: $normal;\\n margin: 0;\\n}\\n\",\"/*------------------------------------*\\\\\\n CONTENTS NAV\\n\\\\*------------------------------------*/\\n\\n\\n\\n\\n.ds_contents-nav {\\n\\n &__title {\\n @include ds_h3-size;\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n &__list {\\n @include ds_small-size;\\n @include ds_responsive-margin(6, bottom);\\n list-style: none;\\n margin-left: 0;\\n padding-left: 32px;\\n }\\n\\n &__item {\\n position: relative;\\n\\n &::before {\\n border-top: 1px solid currentColor;\\n content: \\\"\\\";\\n height: 1px;\\n left: -32px;\\n overflow: hidden;\\n position: absolute;\\n top: 12px;\\n width: 20px;\\n }\\n }\\n\\n &__link.ds_current {\\n font-weight: $bold;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n DATE PICKER\\n\\\\*------------------------------------*/\\n\\n$date-picker-focus-outline-width: 2px;\\n$date-picker-focus-border-width: 3px;\\n\\n.ds_datepicker {\\n position: relative;\\n @include ds_responsive-margin(3, bottom);\\n\\n .ds_input {\\n margin-bottom: 0;\\n }\\n\\n &__input-wrapper {\\n display: flex;\\n gap: 1rem;\\n margin-bottom: 1.5rem;\\n }\\n\\n &__dialog {\\n @include ds_box-shadow;\\n\\n background-color: $ds_colour__background--primary;\\n clear: both;\\n display: none;\\n padding: 8px;\\n outline: 1px solid $ds_colour__border;\\n outline-offset: -1px;\\n position: static;\\n top: 0;\\n transition: background-color 0.2s, outline-color 0.2s;\\n width: 296px;\\n z-index: 2;\\n\\n &--open {\\n display: block;\\n\\n @supports (left: var(--ds-date-picker-left-offset)) {\\n left: var(--ds-date-picker-left-offset);\\n }\\n }\\n\\n &__header {\\n position: relative;\\n text-align: center;\\n\\n > :nth-child(1) {\\n position: absolute;\\n left: 0;\\n top: -2px;\\n }\\n\\n > :nth-child(3) {\\n position: absolute;\\n right: 0;\\n top: -2px;\\n }\\n }\\n\\n &__title {\\n @include ds_small-size;\\n line-height: line-height-on-grid($small-size, 2);\\n margin: 0 !important;\\n text-transform: uppercase;\\n }\\n\\n &__navbuttons {\\n button {\\n background-color: transparent;\\n color: $ds_colour__text;\\n font-weight: $normal;\\n min-height: 40px;\\n margin: 0;\\n padding: 4px;\\n min-width: 32px;\\n\\n @include ds_blocklink;\\n display: inline-block;\\n\\n &:hover {\\n color: currentColor;\\n }\\n\\n .ds_icon {\\n height: 32px;\\n padding: 0;\\n position: static;\\n width: 24px;\\n }\\n }\\n }\\n\\n &__table {\\n\\n tbody:focus-within {\\n outline: $date-picker-focus-outline-width solid $ds_colour__link--focus__background;\\n }\\n\\n td {\\n border: 0;\\n margin: 0;\\n outline: 0;\\n padding: 0;\\n }\\n\\n th {\\n @include ds_small-size;\\n color: $ds_colour__text--secondary;\\n font-weight: $normal;\\n }\\n\\n button {\\n background-color: transparent;\\n border-width: 0;\\n color: $ds_colour__text;\\n font-weight: $normal;\\n min-height: 40px;\\n margin: 0;\\n padding: 0;\\n min-width: 40px;\\n\\n @include ds_small-size;\\n @include ds_blocklink;\\n\\n &:focus {\\n transition-duration: 0s;\\n }\\n\\n &[disabled=\\\"true\\\"],\\n &[aria-disabled=\\\"true\\\"] {\\n background-color: $ds_colour__link--disabled__background;\\n color: $ds_colour__link--disabled;\\n pointer-events: none;\\n\\n &:focus {\\n box-shadow:\\n inset 0 #{$date-picker-focus-border-width * -1} $ds_colour__focus, // bottom shadow\\n inset 0 $date-picker-focus-outline-width $ds_colour__focus--background, // top\\n inset #{$date-picker-focus-outline-width * -1} 0 $ds_colour__focus--background, // right\\n inset 0 #{($date-picker-focus-outline-width + $date-picker-focus-border-width) * -1} $ds_colour__focus--background, // bottom\\n inset $date-picker-focus-outline-width 0 $ds_colour__focus--background; // left\\n }\\n }\\n\\n &.ds_datepicker__current {\\n $dp-current-outline-width: 2px;\\n outline: $dp-current-outline-width solid $ds_colour__border--strong !important;\\n outline-offset: #{$dp-current-outline-width * -1};\\n }\\n\\n &.ds_datepicker__current[tabindex=\\\"-1\\\"] {\\n background: $ds_colour__link--current__background;\\n color: currentColor;\\n }\\n\\n &.ds_datepicker__today {\\n font-weight: $bold;\\n\\n &::after {\\n background-color: currentColor;\\n border-radius: 4px;\\n bottom: 6px;\\n content: '';\\n height: 4px;\\n left: 50%;\\n margin-left: -2px;\\n position: absolute;\\n width: 4px;\\n }\\n }\\n\\n &.ds_selected:not(:focus) {\\n background-color: $ds_colour__text;\\n color: $ds_colour__text--reversed;\\n }\\n\\n /*\\n * helps with focus in windows high contrast\\n */\\n &:focus {\\n color: $ds_colour__focus;\\n position: relative;\\n z-index: 2; // [1]\\n }\\n }\\n }\\n\\n &__table-caption {\\n @include ds_tiny-size;\\n caption-side: bottom;\\n line-height: 2;\\n margin-top: 8px;\\n }\\n\\n &__buttongroup {\\n @include ds_layout(8px);\\n overflow: visible;\\n\\n // non-grid\\n button {\\n @include ds_colwidth(1,2,8px);\\n display: block;\\n float: left;\\n margin: 0;\\n }\\n\\n @supports (display: grid) {\\n grid-template-columns: 1fr 1fr;\\n }\\n }\\n }\\n\\n &__button {\\n @include ds_small-size;\\n @include ds_button-sizing--small;\\n\\n align-self: end;\\n }\\n}\\n\\n@include ds_media-query (medium) {\\n .ds_datepicker {\\n &__dialog {\\n position: absolute;\\n\\n &__title {\\n line-height: line-height-on-grid($small-size--medium, 1.5);\\n padding: 8px 0;\\n }\\n\\n &__header {\\n > :nth-child(1) {\\n // left: 8px;\\n top: 0;\\n }\\n\\n > :nth-child(3) {\\n // right: 8px;\\n top: 0;\\n }\\n }\\n\\n &__table th {\\n line-height: line-height-on-grid($small-size--medium, 2);\\n }\\n\\n &__table-caption {\\n line-height: line-height-on-grid($tiny-size--medium, 2);\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n DETAILS\\n\\\\*------------------------------------*/\\n@use \\\"sass:math\\\";\\n\\n$details-border-width: 4px;\\n$details-icon-size: math.div((1em * 8px), $root-font-size--medium);\\n\\n.ds_details {\\n @include ds_block-margins;\\n}\\n\\n.ds_details__summary {\\n @include ds_link;\\n @include ds_responsive-margin(2, bottom);\\n @include ds_responsive-padding(4, left);\\n cursor: pointer;\\n display: inline-block;\\n position: relative;\\n\\n &::-webkit-details-marker {\\n display: none;\\n }\\n\\n &::before {\\n background-color: currentColor;\\n clip-path: polygon(0 0, 100% 50%, 0 100%);\\n content: '';\\n display: block;\\n height: calc(#{$details-icon-size} * 2);\\n left: 0.25em;\\n position: absolute;\\n top: calc(50% - #{$details-icon-size} + 1px); // 1px magic number for optical alignment in preference to mathematic alignment\\n width: $details-icon-size;\\n\\n @media (prefers-reduced-motion: no-preference) {\\n transition: transform $transition-in-time;\\n }\\n }\\n}\\n\\n.ds_details__text {\\n @include ds_last-child-no-margin;\\n border-left: $details-border-width solid #b3b3b3;\\n box-sizing: border-box;\\n display: none;\\n @include ds_responsive-padding(1);\\n @include ds_responsive-padding(4, left, false, calc(#{$details-border-width} * -1));\\n}\\n\\n.ds_details[open],\\n.ds_details__toggle:checked ~ {\\n .ds_details__summary::before {\\n transform: rotate(90deg);\\n }\\n\\n .ds_details__text {\\n display: block;\\n }\\n}\\n\\n.ds_details__toggle:focus ~ .ds_details__summary {\\n @include ds_focus-outline;\\n\\n background-color: $ds_colour__link--focus__background;\\n box-shadow: #{$link__outline-width * -1} #{$link__outline-width + $link__border-width} $ds_colour__link--focus__shadow, $link__outline-width #{$link__outline-width + $link__border-width} $ds_colour__link--focus__shadow;\\n color: $ds_colour__link--focus;\\n text-decoration: none;\\n transition-duration: 0s;\\n}\\n\\n@include ds_media-query-high-contrast {\\n .ds_details__summary::before {\\n background-color: LinkText;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n FEATURE HEADER\\n\\\\*------------------------------------*/\\n\\n.ds_feature-header {\\n @include ds_responsive-margin(8, bottom);\\n\\n &__title {\\n @include ds_h1-style;\\n @include ds_responsive-margin(1, bottom);\\n\\n font-weight: $light;\\n }\\n\\n &--background {\\n background-color: $ds_colour__background--tertiary;\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--tertiary, 'feature header');\\n @include checkAndFixDescendantSecondaryButtonColour($ds_colour__button--secondary, $ds_colour__background--tertiary, 'feature header');\\n }\\n\\n &__primary {\\n padding: px-to-rem(16px) 0;\\n position: relative;\\n z-index: 2;\\n\\n @include media-query(medium) {\\n padding: px-to-rem(24px) 0;\\n }\\n\\n @include media-query(large) {\\n padding: px-to-rem(40px) 0;\\n }\\n }\\n\\n &--background &__primary {\\n padding-left: px-to-rem(16px);\\n\\n @include media-query(medium-down) {\\n padding-right: px-to-rem(16px);\\n }\\n\\n @include media-query(medium) {\\n padding-left: px-to-rem(24px);\\n }\\n\\n @include media-query(large) {\\n padding-left: px-to-rem(40px);\\n }\\n }\\n\\n &__secondary {\\n position: relative;\\n z-index: 1;\\n }\\n\\n &__image {\\n display: block;\\n height: auto;\\n width: 100%;\\n }\\n\\n @include media-query(medium) {\\n align-items: center;\\n display: grid;\\n grid-template-columns: repeat(12, 1fr);\\n grid-gap: 32px;\\n\\n &__primary {\\n grid-area: 1/1/2/7;\\n margin-right: 0;\\n\\n > :last-child {\\n margin-bottom: 0;\\n }\\n }\\n\\n &__secondary {\\n grid-area: 1/7/2/13;\\n }\\n\\n &--wide {\\n .ds_feature-header__primary {\\n grid-area: 1/1/2/9;\\n margin-right: 0;\\n }\\n\\n .ds_feature-header__secondary {\\n grid-area: 1/9/2/13;\\n }\\n }\\n }\\n}\\n\\n.ds_reversed .ds_feature-header__primary,\\n.ds_reversed .ds_feature-header__primary a {\\n color: $ds_colour__text--reversed;\\n}\\n\\n\\n// ie\\n.ds_feature-header {\\n @include media-query(medium) {\\n display: -ms-grid;\\n -ms-grid-columns: 1fr 32px 1fr;\\n\\n &--wide {\\n -ms-grid-columns: 2fr 32px 1fr;\\n }\\n\\n &__primary {\\n -ms-grid-column: 1;\\n -ms-grid-row-align: center;\\n }\\n\\n &__secondary {\\n -ms-grid-column: 3;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n FILE DOWNLOAD\\n\\\\*------------------------------------*/\\n\\n$file-download-background-colour: $ds_colour__background--secondary !default;\\n\\n.ds_file-download {\\n @include ds_responsive-margin(4, bottom);\\n @include ds_responsive-margin(4, top);\\n @include ds_responsive-padding(2);\\n background-color: $file-download-background-colour;\\n display: flex;\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $file-download-background-colour, 'file download');\\n\\n &--highlighted {\\n @include ds_responsive-padding(2, left, $tuning: -4px);\\n border-left: 4px solid $ds_colour__brand;\\n }\\n\\n &__thumbnail {\\n @include ds_responsive-margin(2, right);\\n }\\n\\n &__thumbnail-image {\\n display: block;\\n max-width: 100%;\\n outline: 1px solid $ds_colour__border;\\n outline-offset: -1px;\\n }\\n\\n &__thumbnail-image[src*=\\\".svg\\\"] {\\n outline: none;\\n }\\n\\n &__thumbnail-link {\\n display: block;\\n width: px-to-rem(64px);\\n }\\n\\n &__content {\\n flex-grow: 1;\\n }\\n\\n &__title {\\n display: inline-block;\\n font-weight: $bold;\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n .ds_metadata {\\n line-height: px-to-rem(24px);\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_file-download {\\n\\n &__thumbnail-link {\\n width: px-to-rem(80px);\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n HIDE THIS PAGE\\n\\\\*------------------------------------*/\\n\\n@include ds_media-query(medium-down) {\\n .ds_has-hide-page .ds_page,\\n .ds_page:has(.ds_hide-page) {\\n margin-top: 56px;\\n }\\n}\\n\\n.ds_hide-page {\\n background-color: $ds_colour__background--tertiary;\\n left: 0;\\n position: fixed;\\n right: 0;\\n text-align: center;\\n top: 0;\\n z-index: 1000;\\n\\n &__button {\\n background-color: $ds_colour__red;\\n margin: 0;\\n width: 100%;\\n\\n &:hover:not(:focus) {\\n background-color: darken($ds_colour__red, 15%);\\n }\\n }\\n\\n &__text {\\n @include ds_tiny-size;\\n margin-bottom: 0;\\n }\\n\\n .js-enabled-text {\\n display: none;\\n }\\n}\\n\\n@media only screen and (hover: hover) {\\n .js-enabled .js-enabled-text {\\n display: block;\\n }\\n\\n .ds_has-hide-page .ds_page {\\n margin-top: 80px;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_hide-page {\\n @include ds_block-margins;\\n background-color: rgba(255, 255, 255, 0.9);\\n left: auto;\\n outline: 1px solid #ebebeb;\\n outline-offset: -1px;\\n\\n @supports (position: sticky) and (display: grid) {\\n bottom: 8px;\\n position: sticky;\\n }\\n\\n &__text {\\n margin: 8px 0;\\n }\\n }\\n\\n .ds_has-hide-page .ds_page {\\n margin-top: 0;\\n }\\n}\\n\\n@supports (display: grid) {\\n .ds_hide-page {\\n width: 100%;\\n\\n @include ds_media-query(medium) {\\n align-self: start;\\n grid-area: 1/9/3/13;\\n right: 8px;\\n top: 8px;\\n }\\n\\n @include ds_media-query(large) {\\n grid-area: 1/10/3/13;\\n }\\n }\\n}\\n\\n/**\\n This \\\"reverse\\\" order follows GOV UK reasoning, where it assumed that it's better to have scroll\\n padding unnecessarily than risking not having it when it's needed.\\n*/\\n@supports (position: sticky) {\\n html {\\n scroll-padding-top: 6.5rem;\\n\\n &:not(:has(.ds_hide-page)) {\\n scroll-padding-top: 0;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n ICON\\n\\\\*------------------------------------*/\\n@use \\\"sass:math\\\";\\n\\n.ds_icon {\\n fill: currentColor;\\n height: 1.5em;\\n vertical-align: middle;\\n width: 1.5em;\\n}\\n\\n$icon-sizes: 16, 20, 24, 28, 32, 36, 40, 44, 48;\\n@each $icon-size in $icon-sizes {\\n .ds_icon--#{$icon-size} {\\n width: math.div($icon-size, 16) * 1rem;\\n height: math.div($icon-size, 16) * 1rem;\\n }\\n}\\n\\n// icon sizes 12px and 52px to 80px are deprecated -- these will be removed in a future release\\n$deprecated-icon-sizes: 12, 52, 56, 60, 64, 68, 72, 76, 80;\\n@each $icon-size in $deprecated-icon-sizes {\\n .ds_icon--#{$icon-size} {\\n width: math.div($icon-size, 16) * 1rem;\\n height: math.div($icon-size, 16) * 1rem;\\n }\\n}\\n\\n.ds_icon--fill {\\n width: 100%;\\n height: 100%;\\n}\\n\",\"/*------------------------------------*\\\\\\n #INSET TEXT\\n\\\\*------------------------------------*/\\n\\n.ds_inset-text {\\n border-left: 0.5rem solid $ds_colour__border;\\n padding: 1rem;\\n\\n @include ds_block-margins;\\n @include ds_last-child-no-margin;\\n}\\n\\n.ds_inset-text__text {\\n @include ds_last-child-no-margin;\\n}\\n\\n.ds_inset-text .ds_tag {\\n margin-bottom: 0.5rem;\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_inset-text {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n LINK ITEM\\n Navigation element for a simple link with supporting metadata\\n\\\\*------------------------------------*/\\n\\n.ds_link-item {\\n\\n @include ds_responsive-padding (3, bottom, $tuning: -2px);\\n border-bottom: 2px $ds_colour__border--faint solid;\\n margin: 0;\\n\\n &__title {\\n @include ds_h3-size();\\n margin: 0 !important;\\n }\\n\\n &__summary {\\n @include ds_small-size();\\n margin: 0;\\n @include ds_responsive-margin (1, top);\\n }\\n\\n}\\n\",\"/*------------------------------------*\\\\\\n LINK LIST\\n\\\\*------------------------------------*/\\n\\n.ds_link-list {\\n @include ds_layout();\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n\\n @include ds_media-query(medium-down) {\\n .ds_link-item + .ds_link-item {\\n @include ds_responsive-margin(3, top);\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_link-item {\\n float: left;\\n @include ds_colwidth(4);\\n\\n &:nth-child(3n+1) {\\n clear: left;\\n margin-left: 0;\\n }\\n }\\n\\n @supports(display: grid) {\\n display: grid;\\n row-gap: px-to-rem(24px);\\n grid-template-columns: 1fr 1fr 1fr;\\n }\\n }\\n}\",\"/*------------------------------------*\\\\\\n PAGE METADATA\\n\\\\*------------------------------------*/\\n\\n.ds_metadata {\\n @include ds_small-size--fixed;\\n margin: 0;\\n overflow: hidden;\\n\\n &__key {\\n display: inline;\\n font-weight: normal;\\n\\n &::after {\\n content: ':';\\n }\\n }\\n\\n &__value {\\n display: inline;\\n font-weight: $bold;\\n margin-left: 0;\\n\\n a {\\n font-weight: $normal;\\n }\\n }\\n}\\n\\n/**\\n * Alternative display collapsing the metadata into a single line\\n */\\n.ds_metadata--inline {\\n @include ds_tiny-size;\\n\\n color: $ds_colour__text--secondary;\\n margin-bottom: px-to-rem(8px);\\n\\n .ds_metadata__item {\\n display: inline;\\n position: relative;\\n }\\n\\n .ds_metadata__item:not(:first-child) {\\n margin-left: 0.25em;\\n padding-left: calc(0.5em + 1px);\\n\\n &::before {\\n background: currentColor;\\n content: '';\\n height: calc(1em - 1px);\\n left: 0;\\n position: absolute;\\n top: 2px;\\n width: 1px;\\n }\\n }\\n\\n .ds_metadata__key {\\n @include ds_visually-hidden;\\n }\\n\\n .ds_metadata__value {\\n font-weight: $normal;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n NOTIFICATION BANNER\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$notification-banner__background-colour: $ds_colour__text !default;\\n$notification-banner__background-colour--success: $ds_colour__state--positive !default;\\n$notification-banner__colour-icon-colour: $ds_colour__yellow !default;\\n$notification-banner__foreground-colour: $ds_colour__white !default;\\n\\n// fixed vars\\n$notification-banner__close-padding: 4px;\\n$notification-banner__icon-padding: $notification-banner__close-padding;\\n\\n.ds_notification {\\n background: $notification-banner__background-colour;\\n border-bottom: 1px solid $notification-banner__foreground-colour;\\n color: $ds_colour__text--reversed;\\n\\n &--success {\\n background-color: $notification-banner__background-colour--success;\\n color: $notification-banner__foreground-colour;\\n }\\n\\n /// [1] compensate for bottom margin on parent\\n &__content {\\n padding: 16px 0 15px; /// [1]\\n position: relative;\\n\\n @include ds_last-child-no-margin;\\n\\n &--has-close {\\n padding-right: 40px;\\n }\\n }\\n\\n &__text {\\n display: inline-block;\\n margin-right: 16px;\\n\\n @include ds_last-child-no-margin;\\n }\\n\\n &__actions {\\n margin-top: 32px;\\n text-align: center;\\n\\n > * {\\n margin-bottom: 16px;\\n margin-top: 0;\\n white-space: nowrap;\\n width: 100%;\\n }\\n }\\n\\n // specificity hack\\n // deprecated - ds_notification__actions - use ds_button-group instead\\n .ds_notification__actions {\\n margin-bottom: -16px;\\n }\\n\\n &__icon {\\n display: block;\\n position: absolute;\\n height: 32px;\\n line-height: 0;\\n margin-left: -4px;\\n margin-top: -4px;\\n padding: 2px;\\n width: 32px;\\n\\n + .ds_notification__text {\\n margin-left: 40px;\\n\\n @include ds_media-query(medium) {\\n margin-left: 64px;\\n }\\n }\\n\\n &--colour {\\n color: $notification-banner__colour-icon-colour;\\n }\\n\\n &--inverse {\\n background-color: $ds_colour__text--reversed;\\n border-radius: 100px;\\n color: $notification-banner__background-colour;\\n }\\n\\n &--inverse.ds_notification__icon--colour {\\n background-color: $notification-banner__colour-icon-colour;\\n }\\n }\\n\\n &__close {\\n background: transparent;\\n border-width: 0;\\n box-sizing: content-box;\\n color: currentColor;\\n display: none;\\n font-size: $small-size--fixed;\\n height: 40px;\\n margin: 0;\\n padding: 0;\\n position: absolute;\\n right: -8px;\\n top: 8px;\\n width: 40px;\\n\\n min-height: 0;\\n min-width: 0;\\n\\n &:focus {\\n background-color: $ds_colour__button--focus__background;\\n box-shadow: 0 $link__border-width $ds_colour__link--focus__shadow;\\n color: $ds_colour__button--focus;\\n outline: 0;\\n\\n transition-duration: 0s;\\n }\\n\\n &:hover:not(:focus) {\\n background-color: transparent;\\n color: currentColor;\\n outline: 2px solid currentColor;\\n }\\n\\n > * {\\n pointer-events: none;\\n }\\n }\\n\\n //ds_button-group to be used in place of ds_notification__actions\\n .ds_button-group {\\n //override margins\\n @include ds_responsive-margin(4, top);\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_notification__close {\\n top: 12px;\\n }\\n\\n .ds_notification__icon {\\n margin-top: 0;\\n }\\n\\n // deprecated - ds_notification__actions - use ds_button-group instead\\n .ds_notification__actions {\\n text-align: left;\\n\\n > * {\\n width: auto;\\n }\\n\\n > *:not(last-child) {\\n margin-right: 16px;\\n }\\n }\\n}\\n\\n@supports(display: flex) {\\n @include ds_media-query(medium) {\\n // deprecated - ds_notification__actions - use ds_button-group instead\\n .ds_notification__actions {\\n align-items: center;\\n display: inline-flex;\\n flex-wrap: wrap;\\n width: auto;\\n\\n > * {\\n flex-basis: auto;\\n flex-grow: initial;\\n }\\n }\\n }\\n}\\n\\n.js-initialised {\\n .ds_notification__close {\\n display: block;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n NOTIFICATION PANEL\\n\\\\*------------------------------------*/\\n\\n.ds_notification-panel {\\n @include ds_responsive-margin(3, bottom);\\n @include ds_responsive-padding(6, top);\\n @include ds_responsive-padding(6, bottom);\\n @include ds_responsive-padding(4, left);\\n @include ds_responsive-padding(4, right);\\n background: $ds_colour__state--positive;\\n color: $ds_colour__text--reversed;\\n text-align: center;\\n\\n @include ds_high-contrast-outline(4px);\\n\\n // Add top margin if placed below another item\\n &:not(:first-child) {\\n @include ds_responsive-margin(6, top);\\n }\\n\\n &--neutral {\\n background: $ds_colour__background--secondary;\\n color: $ds_colour__text;\\n }\\n\\n &__title {\\n // Any heading level will display in standard way - design is separated from heading level\\n // This needs improved so line height (and maybe also margin) also comes from mixin\\n // Bottom margin reduced over normal h1 value\\n @include ds_h1-style;\\n @include ds_responsive-margin(2, bottom);\\n }\\n\\n &__content {\\n @include ds_last-child-no-margin;\\n }\\n\\n &__reference {\\n @include ds_large-size;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n ARTICLE HEADER\\n title block for articles\\n\\\\*------------------------------------*/\\n\\n.ds_page-header {\\n margin: 1rem 0 2rem;\\n\\n &__title {\\n margin-bottom: 0;\\n }\\n\\n &__metadata {\\n margin-top: 0.5rem;\\n }\\n\\n @include ds_media-query(medium) {\\n margin-top: 2rem;\\n\\n &__label + &__title {\\n margin-top: -0.5rem;\\n }\\n }\\n}\\n\\n// Increase top margin to offset margin collapse between Error summary and Page header if siblings\\n.ds_error-summary + .ds_page-header {\\n margin-top: 2.5rem;\\n\\n @include ds_media-query(medium) {\\n margin-top: 4rem;\\n }\\n}\",\"/*------------------------------------*\\\\\\n PAGINATION\\n\\\\*------------------------------------*/\\n\\n.ds_pagination {\\n @include ds_small-size;\\n text-align: center;\\n\\n &__list {\\n list-style-type: none;\\n margin: 0;\\n }\\n\\n // Hide pagination if load more button present\\n &__load-more + &__list {\\n display: none;\\n }\\n\\n &__item {\\n display: inline-block;\\n margin-bottom: 0.25rem; // override default margin on li\\n }\\n\\n &__link {\\n @include ds_blocklink;\\n line-height: 2.5rem;\\n min-height: 2.5rem;\\n min-width: 2.5rem;\\n padding: 0 0.5rem;\\n text-decoration: none;\\n\\n &.ds_current {\\n color: currentColor;\\n position: relative;\\n\\n &::before {\\n border-bottom: 3px solid currentColor;\\n bottom: 0;\\n content: '';\\n left: 0;\\n position: absolute;\\n right: 0;\\n }\\n }\\n\\n &.ds_current:not(:focus) {\\n background-color: $ds_colour__link--current__background;\\n }\\n\\n &--text:not(&--icon) {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n width: auto;\\n }\\n\\n &--ellipsis {\\n min-width: 0;\\n pointer-events: none;\\n }\\n\\n &--ellipsis,\\n &--icon {\\n padding: 0;\\n }\\n\\n\\n\\n .ds_icon {\\n height: 2em;\\n width: 2em;\\n }\\n\\n > * {\\n pointer-events: none;\\n }\\n }\\n}\\n\\na.ds_pagination__link:not(.ds_current):not(:focus) {\\n text-decoration: underline;\\n text-underline-offset: 1px;\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_pagination {\\n &__load-more + &__list {\\n display: block;\\n }\\n\\n &__load-more {\\n display: none;\\n }\\n\\n &__link--icon {\\n padding-left: 0px;\\n padding-right: 0px;\\n width: auto;\\n\\n .ds_pagination__link-label {\\n padding-left: 1rem;\\n }\\n\\n .ds_icon + .ds_pagination__link-label {\\n padding-right: 1rem;\\n padding-left: 0;\\n }\\n }\\n\\n .ds_icon {\\n margin: 0 0.25rem;\\n }\\n }\\n}\\n\\n@include ds_media-query(medium-down) {\\n .ds_pagination {\\n &__link--icon {\\n .ds_pagination__link-label {\\n @include ds_visually-hidden;\\n }\\n }\\n }\\n}\\n\\n@supports (display: flex) {\\n .ds_pagination {\\n &__item {\\n margin-bottom: 0; // No longer need margin for wrapping as flexbox gap handles this\\n }\\n\\n &__list {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 0.25rem;\\n justify-content: center;\\n }\\n\\n &__link {\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n PHASE BANNER\\n\\\\*------------------------------------*/\\n\\n.ds_phase-banner {\\n @include ds_small-size;\\n @include ds_responsive-padding(2, top, $tuning: -1px);\\n @include ds_responsive-padding(2, bottom);\\n background: $ds_colour__background--tertiary;\\n border-top: 1px solid transparent;\\n clear: both;\\n\\n &.no-bottom-margin {\\n margin-bottom: 0;\\n }\\n\\n &__content {\\n display: table;\\n margin-bottom: 0;\\n }\\n\\n &__tag.ds_tag {\\n @include ds_responsive-margin(2, right);\\n @include ds_small-size;\\n }\\n\\n &__text {\\n display: table-cell;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--tertiary, 'phase banner');\\n}\\n\\n@supports (display: flex) {\\n .ds_phase-banner {\\n\\n &__content {\\n align-items: baseline;\\n display: flex;\\n\\n &--stacked {\\n flex-direction: column;\\n\\n > *:not(:last-child) {\\n @include ds_responsive-margin(1, bottom);\\n }\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SEARCH FACETS\\n\\\\*------------------------------------*/\\n\\n.ds_facets {\\n @include ds_small-size;\\n\\n &__list {\\n margin-bottom: 1.5rem;\\n }\\n\\n &__clear-button {\\n margin: 0 0 1.5rem;\\n min-height: 2.5rem;\\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\\n position: relative;\\n\\n .ds_facet__button-icon {\\n color: currentColor;\\n position: absolute;\\n }\\n }\\n}\\n\\n.ds_facet-group {\\n align-items: baseline;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 1rem 0.5rem;\\n padding: 1rem;\\n\\n &:nth-child(odd) {\\n background: rgba(0,0,0,0.028);\\n }\\n\\n &:nth-child(even):last-child {\\n padding-bottom: 0;\\n }\\n}\\n\\n.ds_facet-wrapper {\\n align-items: baseline;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 1rem 0.5rem;\\n margin: 0;\\n}\\n\\n/// [1] IE 11 and pre-Chromium Edge\\n/// [2] unsetting margin set in [1]\\n.ds_facet {\\n line-height: 1.5rem;\\n min-height: 2.5rem;\\n outline: 2px solid currentColor;\\n outline-offset: -2px;\\n padding: 0.5rem 2.75rem 0.5rem 0.75rem;\\n position: relative;\\n text-align: center;\\n transition: background-color 0.2s;\\n\\n margin: 0 0.5rem; /// [1]\\n\\n @supports (gap: 0) { /// [2]\\n margin: 0;\\n }\\n\\n &:hover {\\n background: $ds_colour__button--cancel--hover__background;\\n }\\n\\n &:focus-within {\\n @include ds_high-contrast-focus;\\n\\n background-color: $ds_colour__focus--background;\\n box-shadow: 0 3px $ds_colour__link--focus__shadow;\\n color: $ds_colour__focus;\\n outline: 0;\\n transition-duration: 0s;\\n }\\n\\n &:focus-within &__button-icon {\\n color: currentColor;\\n }\\n\\n &__button {\\n background-color: transparent;\\n border: none;\\n bottom: 0;\\n left: 0;\\n outline: none;\\n padding: 0.4375rem 0.75rem 0.4375rem 0;\\n position: absolute;\\n right: 0;\\n text-align: right;\\n top: 0;\\n\\n &:focus {\\n background-color: $ds_colour__link--focus__background;\\n z-index: -1;\\n }\\n\\n &:hover:not(:focus) {\\n background-color: transparent;\\n color: inherit;\\n outline: 0;\\n }\\n }\\n\\n &__button-icon {\\n color: $ds_colour__text--secondary;\\n fill: currentColor;\\n height: 1.5rem;\\n margin-left: 0.5rem;\\n min-width: 1.5rem;\\n pointer-events: none;\\n vertical-align: middle;\\n width: 1.5rem;\\n }\\n}\\n\\n@supports selector(:focus-within) {\\n .ds_facet__button:focus {\\n background-color: transparent;\\n z-index: auto;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SEARCH FILTERS\\n\\\\*------------------------------------*/\\n\\n.ds_search-filters {\\n margin-bottom: 0.5rem;\\n\\n &__title {\\n @include ds_responsive-padding(1, bottom, false, -1px);\\n @include ds_responsive-padding(1, top);\\n @include ds_responsive-margin(2, bottom);\\n border-bottom: 1px solid $ds_colour__border;\\n margin-top: 0;\\n\\n &:not(:first-child) {\\n margin-top: 0;\\n }\\n }\\n\\n /**\\n [1] provides room for yellow focus outline on checkboxes\\n */\\n &__scrollable {\\n margin-left: -0.25rem; /* [1] */\\n max-height: 33.333333vh;\\n padding-left: 0.25rem; /* [1] */\\n padding-right: 0.5rem;\\n overflow-y: auto;\\n\\n &::-webkit-scrollbar {\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0.1);\\n border-radius: 0.25rem;\\n width: 0.5rem;\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n background-color: rgba(0,0,0,0.5);\\n }\\n }\\n\\n &__filter-count {\\n color: $ds_colour__text;\\n font-weight: normal;\\n }\\n\\n &__checkboxes {\\n @include ds_small-size;\\n\\n .ds_checkbox__input {\\n top: 0.25rem;\\n }\\n\\n .ds_checkbox__label {\\n padding-right: 0;\\n }\\n\\n .ds_checkbox--small {\\n margin-bottom: 0;\\n }\\n }\\n\\n .ds_accordion-item:first-child {\\n border-top-color: transparent;\\n }\\n\\n .ds_accordion.js-initialised .ds_accordion-item__body {\\n @include ds_responsive-padding(2, right);\\n @include ds_responsive-padding(5, bottom);\\n }\\n\\n .ds_accordion-item__body .ds_question:last-child {\\n .ds_datepicker,\\n .ds_input__wrapper {\\n margin-bottom: 0;\\n }\\n }\\n\\n &.js-initialised .js-apply-filter {\\n @include ds_media-query(medium) {\\n display: none;\\n }\\n }\\n}\\n\\n@include ds_media-query(medium-down) {\\n .ds_search-filters__title {\\n @include ds_visually-hidden;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_search-filters {\\n &__title {\\n display: block;\\n }\\n\\n .ds_details__summary,\\n #filters-toggle {\\n display: none;\\n }\\n\\n .ds_details__text {\\n display: block;\\n\\n border-left: none;\\n margin: 0;\\n padding: 0;\\n }\\n\\n .ds_checkbox--small .ds_checkbox__label {\\n &::before {\\n top: 0.25rem;\\n }\\n\\n &::after {\\n top: 0.6875rem;\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SEARCH RESULT\\n\\\\*------------------------------------*/\\n\\n.ds_search-result {\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(3, bottom, $tuning: -1px);\\n\\n &:first-child {\\n padding-top:0;\\n }\\n\\n & + &:not(&--promoted) {\\n border-top: 1px $ds_colour__border solid;\\n }\\n\\n &--promoted + &:not(&--promoted) {\\n margin-top: -1px;\\n }\\n\\n &--promoted {\\n @include ds_responsive-padding(3, bottom);\\n padding-top: 0;\\n\\n &-content {\\n background: $ds_colour__background--secondary;\\n border-left: 4px solid $ds_colour__brand;\\n @include ds_responsive-padding(1, top);\\n @include ds_responsive-padding(2, left);\\n @include ds_responsive-padding(2, right);\\n @include ds_responsive-padding(2, bottom);\\n }\\n\\n &-title {\\n @include ds_responsive-margin(1, bottom);\\n @include ds_tiny-size;\\n color: $ds_colour__text--secondary;\\n font-weight: $bold;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--secondary, 'promoted search result');\\n }\\n\\n &__title {\\n @include ds_h3-size;\\n margin: 0 !important;\\n @include ds_responsive-margin(1, bottom, true);\\n\\n &:last-child {\\n margin-bottom: 0 !important; // only needed if title is the only part of the result\\n }\\n }\\n\\n &__sub-title {\\n @include ds_h4-size;\\n margin: 0;\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n &__summary {\\n @include ds_root-size;\\n margin: 0;\\n }\\n\\n &__metadata {\\n @include ds_responsive-margin(1, top);\\n @include ds_tiny-size;\\n margin-bottom: 0;\\n }\\n\\n &__has-media {\\n display: flex;\\n }\\n\\n &__media-wrapper {\\n @include ds_responsive-padding(2, right);\\n }\\n\\n &__media {\\n width: 96px;\\n\\n @include ds_media-query(small) {\\n width: 128px;\\n }\\n }\\n\\n &__context {\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-margin(2, top);\\n @include ds_responsive-padding(2, left);\\n @include ds_small-size(4px); // Use 4px type grid\\n\\n &-key {\\n color: $ds_colour__text--secondary;\\n margin: 0;\\n padding: 0;\\n position: relative;\\n\\n &:before {\\n border-left: 4px solid $ds_colour__brand;\\n bottom: 0;\\n content: '';\\n left: -1rem;\\n position: absolute;\\n top: 0;\\n }\\n }\\n\\n &-value {\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-margin(1, top);\\n }\\n }\\n\\n &__sublinks {\\n margin-bottom: 0;\\n @include ds_responsive-margin(2, top);\\n\\n &-title {\\n @include ds_visually-hidden;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SEARCH RESULTS\\n\\\\*------------------------------------*/\\n\\n$search-results-related-background: $ds_colour__background--secondary;\\n\\n.ds_search-results {\\n margin-top: 0.5rem;\\n\\n &__title {\\n @include ds_root-size;\\n @include ds-responsive-margin(1, bottom);\\n font-weight: $normal;\\n margin-top: 0 !important;\\n\\n &-query {\\n font-weight: $bold;\\n }\\n }\\n\\n &__suggestions + &__title {\\n @include ds_responsive-margin(2, top, $important: true);\\n }\\n\\n &__list {\\n border-bottom: 1px $ds_colour__border solid;\\n list-style-type: none;\\n margin: 0;\\n @include ds_responsive-margin(4, bottom);\\n }\\n\\n &__related {\\n @include ds_small-size;\\n @include ds_block-margins;\\n @include ds_last-child-no-margin;\\n @include ds_responsive-padding(2);\\n background: $search-results-related-background;\\n\\n &-title {\\n @include ds_root-size;\\n margin: 0;\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--secondary, 'related search results');\\n }\\n\\n &__divider {\\n margin-top: -1px;\\n margin-bottom: 1.5rem;\\n }\\n}\\n\\n.ds_search-results.js-initialised .js-apply-sort {\\n display: none;\\n}\\n\",\"/*------------------------------------*\\\\\\n #SEQUENTIAL NAVIGATION\\n previous and next buttons\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$page-nav__circle-colour: $ds_colour__brand !default;\\n$page-nav__circle-hover: $ds_colour__link--hover !default;\\n$page-nav__circle-focus: $ds_colour__link--focus !default;\\n$page-nav__icon-colour: $ds_colour__button !default;\\n$page-nav__prefix-colour: $ds_colour__text !default;\\n\\n// fixed vars vars\\n$page-nav__circle-size: 56px !default;\\n\\n\\n\\n\\n.ds_sequential-nav {\\n margin-bottom: 56px;\\n margin-top: 56px;\\n overflow: hidden;\\n}\\n\\n@supports(display: grid) {\\n .ds_sequential-nav {\\n overflow: initial;\\n }\\n}\\n\\n.ds_sequential-nav__button {\\n @include ds_blocklink;\\n\\n background: transparent;\\n display: inline-block;\\n line-height: 24px;\\n padding: 12px 4px;\\n position: relative;\\n text-decoration: none;\\n width: 100%;\\n\\n &:not([href]) {\\n display: none;\\n }\\n\\n > * {\\n pointer-events: none;\\n }\\n\\n // Shared styles for left and right variations\\n // ::before is the circle\\n ///\\n /// [1] renders a border in windows high contrast mode\\n ///\\n &--left::before,\\n &--right::before {\\n content: '';\\n height: $page-nav__circle-size;\\n width: $page-nav__circle-size;\\n background-color: $page-nav__circle-colour;\\n background-position: center;\\n border-radius: $page-nav__circle-size;\\n border: 2px solid $page-nav__circle-colour; /// [1]\\n display: inline-block;\\n position: absolute;\\n top: 8px;\\n\\n transition: background-color $transition-out-time;\\n }\\n\\n // ::after is the chevron\\n &--left,\\n &--right {\\n &::after {\\n color: $page-nav__icon-colour;\\n position: absolute;\\n top: 25px;\\n }\\n }\\n\\n &--left {\\n padding-left: ($page-nav__circle-size + 5px + 12px);\\n text-align: left;\\n\\n &::before {\\n left: 4px;\\n }\\n\\n &::after {\\n @include ds_chevron(left, 22px);\\n left: 24px;\\n }\\n }\\n\\n &--right {\\n text-align: right;\\n float: right;\\n padding-right: ($page-nav__circle-size + 5px + 12px);\\n text-align: right;\\n\\n &::before {\\n right: 4px;\\n }\\n\\n &::after {\\n @include ds_chevron(right, 22px);\\n right: 24px;\\n }\\n }\\n}\\n\\n.ds_sequential-nav__button:hover {\\n &::before {\\n background-color: $page-nav__circle-hover;\\n border-color: $page-nav__circle-hover;\\n }\\n}\\n\\n.ds_sequential-nav__button:focus {\\n &::before {\\n background-color: $page-nav__circle-focus;\\n border-color: $page-nav__circle-focus;\\n }\\n}\\n\\n.ds_sequential-nav__text {\\n display: inline-block;\\n padding-top: 24px;\\n position: relative;\\n width: 100%;\\n\\n &::before {\\n color: $page-nav__prefix-colour;\\n content: attr(data-label);\\n font-size: 1rem;\\n font-weight: $bold;\\n left: 0;\\n position: absolute;\\n right: 0;\\n text-transform: uppercase;\\n top: 0;\\n\\n @include media-query(medium) {\\n font-size: px-to-rem($root-font-size);\\n }\\n }\\n}\\n\\n.ds_sequential-nav__button:not(:focus) .ds_sequential-nav__text {\\n text-decoration: underline;\\n text-underline-offset: 1px;\\n}\\n\\n@include ds_media-query(small) {\\n .ds_sequential-nav__item {\\n width: calc(50% - 16px);\\n\\n &--prev {\\n float: left;\\n }\\n\\n &--next {\\n float: right;\\n }\\n }\\n}\\n\\n@supports (display: grid) {\\n .ds_sequential-nav {\\n display: grid;\\n grid-gap: $grid-gap-y $grid-gap-x;\\n grid-template-areas: 'next' 'prev';\\n }\\n\\n .ds_sequential-nav__item {\\n float: none;\\n width: 100%;\\n\\n &--prev {\\n grid-area: prev;\\n }\\n\\n &--next {\\n grid-area: next;\\n }\\n }\\n\\n @include ds_media-query (small) {\\n .ds_sequential-nav {\\n grid-template-columns: 1fr 1fr;\\n grid-template-areas: 'prev next';\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SIDE NAVIGATION\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$side-nav__expand-colour: $ds_colour__brand !default;\\n\\n// fixed vars\\n$side-nav__outline-width: 2px;\\n\\n\\n\\n.ds_side-navigation {\\n @include ds_block-margins;\\n @include ds_small-size;\\n\\n border: 1px solid $ds_colour__border;\\n position: relative;\\n\\n /// [1] Allowance for 1px border on all sides of parent container\\n &__expand {\\n @include ds_blocklink;\\n\\n background-color: $ds_colour__background--primary;\\n color: $side-nav__expand-colour;\\n cursor: pointer;\\n font-weight: $bold;\\n line-height: inherit;\\n margin: 0;\\n padding: 15px 47px 15px 15px; /// [1]\\n position: sticky;\\n text-align: left;\\n text-decoration: none;\\n top: 0;\\n transition: background-color $transition-in-time, box-shadow $transition-in-time;\\n width: 100%;\\n z-index: 2;\\n\\n &--shadow {\\n box-shadow: 0px 5px 5px rgba(0,0,0,0.15);\\n }\\n\\n &:hover:not(:focus) {\\n background-color: $ds_colour__link--hover__background;\\n }\\n\\n &:hover .side-navigation__expand-indicator {\\n color: $ds_colour__link--hover;\\n }\\n\\n &--shadow:focus {\\n box-shadow: 0 3px #333333, 0px 8px 5px rgba(0,0,0,0.15);\\n }\\n }\\n\\n &__expand-indicator {\\n @include ds_chevron(down, 0.75rem);\\n border-width: 0px 0px 3px 3px;\\n position: absolute;\\n right: 23px;\\n top: 17px;\\n transition: transform 0.2s, top 0.2s;\\n pointer-events: none;\\n }\\n\\n #show-side-navigation:focus ~ .ds_side-navigation__expand {\\n background: $ds_colour__blocklink-bg--focus;\\n box-shadow: 0 $link__border-width $ds_colour__link--focus__shadow;\\n color: $ds_colour__link--focus;\\n transition-duration: 0s;\\n }\\n\\n #show-side-navigation:checked ~ .ds_side-navigation__expand .ds_side-navigation__expand-indicator {\\n top: 23px;\\n transform: rotate(-225deg);\\n }\\n\\n #show-side-navigation:checked ~ .ds_side-navigation__expand:not(:focus):not(:hover) {\\n background-color: $ds_colour__link--current__background;\\n color: $ds_colour__link--current;\\n }\\n\\n #show-side-navigation:checked ~ &__list,\\n #show-side-navigation:checked ~ &__list &__list {\\n display: block;\\n }\\n\\n &__list {\\n display: none;\\n list-style-type: none;\\n margin: 8px 16px;\\n }\\n\\n &__list &__list {\\n margin: 0 0 0 16px;\\n }\\n\\n &__item {\\n position: relative;\\n margin-bottom: 0;\\n\\n &--disabled {\\n text-decoration: line-through;\\n }\\n }\\n\\n /// [2] vertical padding offsets the text slightly for visual balance\\n &__link {\\n @include ds_blocklink;\\n\\n margin-bottom: 2px;\\n padding: 12px 40px 10px 16px; /// [2]\\n position: relative;\\n text-decoration: none;\\n\\n &:not([href]) {\\n pointer-events: none;\\n }\\n\\n &:hover,\\n &.ds_current {\\n position: relative;\\n\\n &::before {\\n border-left: $side-nav__outline-width solid $ds_colour__border--highlight;\\n bottom: 0;\\n content: '';\\n position: absolute;\\n left: 0;\\n top: 0;\\n }\\n }\\n\\n &:focus {\\n box-shadow: 0 3px $ds_colour__link--focus__shadow;\\n z-index: 2;\\n }\\n\\n &:focus::before {\\n content: none;\\n }\\n\\n &.ds_current:not(:focus) {\\n background-color: $ds_colour__link--current__background;\\n\\n &:hover {\\n background-color: $ds_colour__link--current__background;\\n }\\n }\\n\\n &--inactive {\\n pointer-events: none;\\n background-color: $ds_colour__link--disabled__background;\\n }\\n }\\n\\n // different style for third nav level (?)\\n &__list &__list &__list &__link {\\n padding-left: 24px;\\n\\n &::before {\\n border-left: 4px solid $ds_colour__border;\\n bottom: 12px;\\n content: '';\\n left: 12px;\\n opacity: 0.26;\\n position: absolute;\\n right: 100%;\\n top: 12px;\\n }\\n\\n &:hover,\\n &.ds_current {\\n &::before {\\n border-color: $ds_colour__border--highlight;\\n opacity: 1;\\n }\\n }\\n\\n &:focus {\\n &::before {\\n border-color: $ds_colour__link--focus;\\n opacity: 1;\\n }\\n }\\n }\\n}\\n\\n@include ds_media-query(medium-down) {\\n\\n .js-initialised.ds_side-navigation .ds_side-navigation__list {\\n display: block;\\n }\\n\\n /// [3] Allowance for 1px border on left and right\\n ///\\n .js-initialised.ds_side-navigation > .ds_side-navigation__list {\\n\\n margin: 0 15px; ///[3]\\n max-height: var(--ds-side-nav-max-height);\\n overflow: hidden;\\n\\n @media (prefers-reduced-motion: no-preference) {\\n transition: max-height $transition-in-time, padding $transition-in-time;\\n }\\n }\\n\\n .js-initialised.ds_side-navigation #show-side-navigation:checked ~ .ds_side-navigation__list {\\n padding-bottom: 8px;\\n padding-top: 8px;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_side-navigation {\\n border-width: 0;\\n line-height: 24px;\\n\\n &__expand {\\n display: none;\\n }\\n\\n &__list {\\n display: block !important;\\n margin: 0;\\n max-height: none !important;\\n }\\n\\n #show-side-navigation {\\n display: none;\\n }\\n }\\n}\\n\",\"/*\\n SITE NAVIGATION\\n containing site-navigation and mobile equivalent\\n*/\\n\\n// modifiable vars\\n$site-navigation__mobile-menu-background: $ds_colour__background--primary--dim !default;\\n$site-navigation__highlight-colour: $ds_colour__border--highlight !default;\\n\\n// common to both mobile and desktop\\n$site-navigation__link-padding: 16px;\\n\\n.ds_site-navigation {\\n @include ds_small-size;\\n\\n display: none;\\n\\n &__toggle {\\n display: none;\\n }\\n\\n &__list {\\n display: block;\\n list-style-type: none;\\n margin: 0;\\n }\\n\\n &__item {\\n margin-bottom: 0;\\n }\\n\\n &__link {\\n color: currentColor;\\n display: block;\\n padding: #{$site-navigation__link-padding * 0.5} $site-navigation__link-padding;\\n text-decoration: none;\\n white-space: nowrap;\\n\\n &:focus {\\n position: relative;\\n z-index: 1;\\n }\\n }\\n}\\n\\n// small screens\\n@include ds_media-query(medium-down) {\\n .ds_site-navigation {\\n background-color: $site-navigation__mobile-menu-background;\\n margin: 0 -16px;\\n\\n &--mobile {\\n overflow: hidden;\\n }\\n\\n &__list {\\n padding: 16px;\\n }\\n\\n &__item:not(:last-child) {\\n border-bottom: 1px solid $ds_colour__border;\\n }\\n\\n &__link {\\n padding-bottom: $site-navigation__link-padding;\\n padding-top: $site-navigation__link-padding;\\n\\n &:hover:not(:focus),\\n &.ds_current {\\n $site-navigation__mobile-border-width: 4px;\\n border-left: $site-navigation__mobile-border-width solid $ds_colour__brand;\\n padding-left: #{$site-navigation__link-padding - $site-navigation__mobile-border-width};\\n }\\n }\\n }\\n\\n .ds_site-navigation__toggle:checked ~ .ds_site-navigation,\\n .ds_site-navigation--open {\\n border-top: 1px solid $ds_colour__border--faint;\\n display: block;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_site-navigation {\\n line-height: 2;\\n\\n &:not(&--mobile) {\\n display: block;\\n }\\n\\n &__item {\\n display: inline-block;\\n }\\n\\n &__list {\\n display: flex;\\n flex-wrap: wrap;\\n margin: 0 0 0 -16px;\\n }\\n\\n .ds_site-navigation__link {\\n @include ds_fancy-underscore;\\n\\n &::after {\\n bottom: 0;\\n height: 3px;\\n }\\n\\n &.ds_current:not(:focus) {\\n background-color: $ds_colour__link--current__background;\\n color: $ds_colour__text;\\n\\n &:after {\\n border-bottom: 3px solid transparent;\\n left: 0;\\n opacity: 1;\\n right: 0;\\n }\\n }\\n }\\n\\n a.ds_site-navigation__link {\\n &:focus {\\n box-shadow: 0 3px $ds_colour__link--focus__shadow;\\n outline: none;\\n padding-bottom: 5px;\\n\\n @include ds_high-contrast-focus;\\n\\n &::after {\\n content: none;\\n }\\n }\\n\\n &:hover:not(:focus) {\\n background-color: $ds_colour__link--hover__background;\\n }\\n }\\n }\\n}\\n\",\"/// Fancy underscore\\n///\\n/// Animated underscore used on logo images, site nav\\n///\\n/// @param {string} $width - width of the underscore\\n\\n@mixin ds_fancy-underscore($width: 1px) {\\n position: relative;\\n transition-duration: 0s !important;\\n\\n &:hover:not(:focus) {\\n background: transparent;\\n outline-color: transparent;\\n }\\n\\n &::after {\\n background-color: currentColor;\\n bottom: -5px;\\n content: '';\\n height: $width;\\n left: 50%;\\n opacity: 0;\\n position: absolute;\\n right: 50%;\\n transition: left $transition-in-time, right $transition-in-time, opacity $transition-in-time;\\n }\\n\\n &:hover::after {\\n left: 0;\\n opacity: 1;\\n right: 0;\\n }\\n}\\n\\n\\n\\n\\n/// legacy non-prefixed names\\n@mixin fancy-underscore($width: 1px) {\\n @include ds_fancy-underscore($width);\\n}\\n\",\"/*------------------------------------*\\\\\\n BRANDING\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$site-logo__height: 32px !default;\\n$site-logo__height--medium: 40px !default;\\n$site-branding-padding: 12px;\\n$site-branding-title-spacing: 24px;\\n$site-branding-title-spacing--medium: 48px;\\n\\n\\n\\n\\n.ds_site-branding {\\n overflow: hidden;\\n padding: $site-branding-padding 0;\\n position: relative;\\n\\n &__logo {\\n height: $site-logo__height;\\n margin-right: px-to-rem($site-branding-title-spacing);\\n }\\n\\n &__logo-image {\\n height: $site-logo__height;\\n pointer-events: none;\\n width: auto;\\n }\\n\\n &__link {\\n color: currentColor;\\n display: inline-block;\\n position: relative;\\n text-decoration: none;\\n\\n @include ds_fancy-underscore(2px);\\n }\\n\\n &__title {\\n font-weight: $light;\\n line-height: px-to-rem(24px);\\n\\n &::before {\\n background: $ds_colour__brand;\\n bottom: $site-branding-padding;\\n content: '';\\n position: absolute;\\n margin-left: px-to-rem($site-branding-title-spacing * -0.5);\\n top: $site-branding-padding;\\n width: 1px;\\n }\\n }\\n\\n &__logo,\\n &__title {\\n float: left;\\n }\\n\\n}\\n\\n@include ds_media-query (medium) {\\n .ds_site-branding {\\n &__link {\\n margin-bottom: 0;\\n }\\n\\n &__logo {\\n height: $site-logo__height--medium;\\n margin-right: px-to-rem($site-branding-title-spacing--medium);\\n }\\n\\n &__logo-image {\\n height: $site-logo__height--medium;\\n }\\n\\n &__title {\\n\\n &::before {\\n margin-left: px-to-rem($site-branding-title-spacing--medium * -0.5);\\n }\\n }\\n }\\n}\\n\\n@supports (display: flex) {\\n .ds_site-branding {\\n align-items: center;\\n display: flex;\\n flex-flow: wrap;\\n gap: px-to-rem(16px) 0;\\n\\n &__logo,\\n &__title {\\n float: none;\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SITE FOOTER\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$site-footer__background: $ds_colour__background--tertiary !default;\\n\\n\\n\\n\\n.ds_site-footer {\\n /// [1] subtracting the border width\\n @include ds_small-size;\\n background-color: $site-footer__background;\\n border-top: 1px solid $ds_colour__border;\\n\\n &__content {\\n padding-top: px-to-rem(23px); /// [1]\\n padding-bottom: px-to-rem(32px);\\n }\\n\\n /// [1] subtracting the border width\\n &__site-items {\\n border-bottom: 1px solid $ds_colour__border;\\n font-size: $small-size--fixed;\\n line-height: line-height-on-grid($small-size--fixed);\\n list-style-type: none;\\n margin: px-to-rem(-8px) 0 px-to-rem(23px);\\n }\\n\\n &__copyright {\\n &-logo {\\n display: block;\\n margin-bottom: 8px;\\n width: 32px;\\n\\n @include ds_fancy-underscore();\\n\\n img {\\n height: auto;\\n width: 100%;\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n @include ds_last-child-no-margin;\\n }\\n }\\n\\n &__org {\\n max-width: 160px;\\n position: relative;\\n }\\n\\n &__org-logo {\\n display: block;\\n height: auto;\\n width: 100%;\\n }\\n\\n &__org-link {\\n display: block;\\n\\n @include ds_fancy-underscore();\\n }\\n\\n .ds_site-footer__org-link,\\n .ds_site-footer__copyright-logo {\\n color: currentColor !important;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $ds_colour__background--tertiary, 'site footer');\\n}\\n\\n.ds_site-items {\\n &__item,\\n &__item:last-child {\\n display: inline-block;\\n margin-bottom: px-to-rem(16px);\\n\\n &:not(:last-child) {\\n margin-right: px-to-rem(24px);\\n }\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n\\n\\n .ds_site-footer {\\n\\n &__copyright {\\n padding-left: 48px;\\n position: relative;\\n\\n &-logo {\\n position: absolute;\\n left: 0;\\n top: 2px;\\n }\\n }\\n\\n &__content {\\n @include ds_layout();\\n }\\n\\n &__copyright {\\n float: left;\\n @include ds_colwidth(8);\\n }\\n\\n &__org {\\n float: right;\\n @include ds_colwidth(3);\\n }\\n }\\n\\n @supports (display: grid) {\\n .ds_site-footer {\\n &__content {\\n display: grid;\\n grid-gap: 0 $grid-gap-x;\\n grid-template-columns: repeat(12, 1fr);\\n grid-template-areas: 'a a a a a a a a a a a a'\\n 'b b b b b b b b . c c c';\\n }\\n\\n &__site-items {\\n grid-area: a;\\n }\\n\\n &__copyright {\\n grid-area: b;\\n }\\n\\n &__org {\\n grid-area: c;\\n justify-self: right;\\n width: 100% !important;\\n }\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SITE HEADER\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$site-header__border-colour--reversed: $ds_colour__brand--secondary !default;\\n\\n// fixed vars\\n$site-header__border-colour: $ds_colour__border--faint;\\n$site-header__top-band-colour: $ds_colour__brand;\\n$site-header__top-band-colour--secondary: $ds_colour__brand--secondary;\\n\\n.ds_site-header {\\n background-color: $ds_colour__background--primary;\\n border-bottom: 1px solid $site-header__border-colour;\\n margin-bottom: -1px;\\n position: relative;\\n\\n &::before {\\n border-top: 4px solid $site-header__top-band-colour;\\n content: '';\\n display: block;\\n }\\n\\n &--gradient::before {\\n border-image-slice: 1;\\n border-image-source: linear-gradient(to right, $ds_colour__brand, $ds_colour__brand--secondary);\\n }\\n\\n &__content {\\n overflow: auto;\\n }\\n\\n .ds_site-branding {\\n float: left;\\n }\\n\\n .ds_site-header__controls {\\n float: right;\\n height: calc(100% + 1px);\\n margin-bottom: -1px;\\n }\\n\\n .ds_site-navigation {\\n clear: both;\\n }\\n\\n &__search {\\n float: right;\\n margin: 8px 0;\\n\\n .ds_input__wrapper {\\n margin: 0;\\n }\\n }\\n\\n &__control {\\n @include ds_blocklink;\\n\\n color: inherit;\\n cursor: pointer;\\n font-size: 1rem;\\n font-weight: $normal;\\n min-height: 48px;\\n margin: 0 -16px -1px 0;\\n padding: 16px;\\n text-decoration: none;\\n\\n &--active {\\n background-color: $ds_colour__link--current__background;\\n box-shadow: -1px -1px 0px rgba(0, 0, 0, 0.08);\\n\\n .ds_site-header__control-icon {\\n display: none;\\n }\\n\\n .ds_site-header__control-icon--active-icon {\\n display: block;\\n }\\n }\\n }\\n\\n &__control-icon {\\n height: 24px;\\n width: 24px;\\n\\n &--active-icon {\\n display: none;\\n }\\n }\\n\\n &__control-text {\\n float: left;\\n margin-right: 8px;\\n pointer-events: none;\\n }\\n\\n @include ds_media-query(medium) {\\n &__navigation {\\n border-top: 1px solid $ds_colour__border--faint;\\n margin-top: -1px;\\n }\\n }\\n}\\n\\n@supports(display: grid) {\\n .ds_site-header {\\n &__content {\\n align-items: center;\\n display: grid;\\n grid-template-columns: 1fr auto;\\n grid-template-areas: 'branding controls' 'nav nav' 'search search';\\n overflow: initial;\\n }\\n\\n .ds_site-branding {\\n grid-area: branding;\\n }\\n\\n &__controls {\\n grid-area: controls;\\n }\\n\\n &__search {\\n grid-area: search;\\n }\\n\\n .ds_site-navigation--mobile {\\n grid-area: nav;\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_site-header {\\n &__content {\\n grid-template-columns: auto max-content;\\n grid-template-areas: 'branding search';\\n }\\n }\\n }\\n}\\n\\n@supports (display: flex) {\\n .ds_site-header {\\n &__control {\\n align-items: center;\\n display: flex;\\n height: 100%;\\n }\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_site-header__controls {\\n display: none;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n SEARCH BOX\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$site-search__height: 48px !default;\\n$site-search__height--medium: 48px !default;\\n$site-search__background-colour: $ds_colour__background--primary--dim !default;\\n$site-search__border-colour: $ds_colour__grey !default;\\n\\n\\n\\n\\n.ds_site-search {\\n box-sizing: border-box;\\n color: $ds_colour__text;\\n min-height: $site-search__height;\\n\\n &__input[type=text],\\n &__input[type=search] {\\n background: $site-search__background-colour;\\n border-color: $site-search__border-colour;\\n margin-bottom: 0;\\n min-height: $site-search__height;\\n\\n &:focus {\\n border-color: currentColor;\\n }\\n }\\n\\n &--large {\\n margin-bottom: $site-search__height;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_site-search {\\n min-height: $site-search__height--medium;\\n\\n &__button {\\n height: $site-search__height--medium;\\n width: $site-search__height--medium;\\n }\\n }\\n}\",\"/*------------------------------------*\\\\\\n #SKIP LINKS\\n\\\\*------------------------------------*/\\n\\n/// [1] fallback for IE 11\\n/// [2] unset [1]\\n.ds_skip-links {\\n height: 0; /// [1]\\n position: relative;\\n z-index: 1;\\n\\n @supports selector(:focus-within) { /// [2]\\n height: auto;\\n }\\n}\\n\\n.ds_skip-links__list {\\n list-style-type: none;\\n margin: 0;\\n}\\n\\n.ds_skip-links__item {\\n margin: 0;\\n}\\n\\n.ds_skip-links__link {\\n clip: rect(1px 1px 1px 1px);\\n display: inline-block;\\n height: 1px;\\n left: 10px;\\n margin-bottom: 1rem;\\n overflow: hidden;\\n position: absolute;\\n top: 10px;\\n width: 1px;\\n\\n &:focus {\\n clip: auto;\\n height: auto;\\n overflow: visible;\\n padding: 0.5rem 0.375rem;\\n width: auto;\\n z-index: 10000;\\n\\n @include ds_media-query(medium) {\\n padding: 0.5rem 1rem;\\n }\\n }\\n}\\n\\n.ds_skip-links--static .ds_skip-links__link {\\n position: static;\\n}\\n\\n.ds_skip-links:not(:focus-within) {\\n position: absolute;\\n}\\n\",\"/*------------------------------------*\\\\\\n SORT OPTIONS\\n\\\\*------------------------------------*/\\n\\n/// [1] IE 11 and pre-Chromium Edge\\n/// [2] unsetting items set in [1]\\n.ds_sort-options {\\n @include ds_small-size;\\n @include ds_responsive-margin(4, bottom);\\n\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n gap: 8px 24px;\\n\\n .ds_button,\\n .ds_label,\\n .ds_select-wrapper {\\n margin: 0 0.5rem; /// [1]\\n }\\n\\n @supports (gap: 0) { /// [2]\\n .ds_button,\\n .ds_label,\\n .ds_select-wrapper {\\n margin: 0;\\n }\\n\\n .ds_label {\\n margin-right: -1rem;\\n }\\n }\\n\\n .ds_button {\\n min-height: 2.5rem;\\n padding: 0.5rem 0.75rem;\\n }\\n\\n .ds_label {\\n font-weight: normal;\\n }\\n\\n .ds_select {\\n min-height: 2.5rem;\\n }\\n\\n .ds_select-arrow {\\n width: 2.5rem;\\n }\\n\\n .ds_select-wrapper {\\n display: inline-grid;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_sort-options .ds_select {\\n min-height: 2.5rem;\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n #STEP NAVIGATION\\n Step navigation is an enhancement to the DS accordion\\n\\\\*------------------------------------*/\\n\\n@use \\\"sass:math\\\";\\n\\n$step-count-margin: 40px;\\n$step-count-margin--medium: 48px;\\n$step-count-size: 32px;\\n$step-count-size--medium: 40px;\\n$step-content-line-height: 24px;\\n$step-content-line-height--medium: 32px;\\n\\n.ds_step-navigation {\\n counter-reset: section;\\n\\n &__list {\\n list-style-type: none;\\n margin: 0;\\n\\n li {\\n margin-bottom: 0;\\n }\\n }\\n\\n &__title {\\n font-size: $h3-size;\\n line-height: 1.5rem;\\n }\\n\\n &__title-link {\\n display: block;\\n @include ds_responsive-margin(3, bottom);\\n @include ds_responsive-margin(1, top);\\n text-decoration: underline;\\n }\\n\\n &__current-link::before {\\n content: '';\\n position: absolute;\\n left: #{math.div($step-count-size, 2) - $step-count-margin};\\n right: 100%;\\n height: 1px;\\n background: $ds_colour__border--strong;\\n margin-top: math.div($step-content-line-height, 2);\\n }\\n\\n &__count {\\n background-color: $ds_colour__background--primary;\\n border: 1px solid currentColor;\\n border-radius: 20px;\\n color: $ds_colour__border--strong;\\n content: counter(section);\\n counter-increment: section;\\n display: block;\\n font-size: $root-font-size;\\n font-weight: $bold;\\n height: $step-count-size;\\n left: #{$step-count-margin * -1};\\n line-height: #{$step-count-size - 2px};\\n position: absolute;\\n text-align: center;\\n top: px-to-rem(12px);\\n width: $step-count-size;\\n }\\n\\n .ds_current &__count {\\n background-color: $ds_colour__link--current__background;\\n border: 2px solid $ds_colour__border--highlight;\\n line-height: #{$step-count-size - 4px};\\n }\\n\\n .ds_accordion {\\n margin-left: $step-count-margin;\\n }\\n\\n .ds_accordion-item {\\n position: relative;\\n\\n &::before {\\n background: $ds_colour__border--strong;\\n bottom: px-to-rem(-17px);\\n content: '';\\n display: block;\\n left: #{math.div($step-count-size, 2) - $step-count-margin};\\n position: absolute;\\n top: px-to-rem(39px);\\n width: 1px;\\n }\\n\\n &:last-child::before {\\n bottom: 0 !important;\\n }\\n\\n &:last-child::after {\\n background: $ds_colour__border--strong;\\n bottom: -1px;\\n content: '';\\n display: block;\\n height: 1px;\\n left: #{math.div($step-count-size, 2) - $step-count-margin - 6px};\\n position: absolute;\\n width: 13px;\\n }\\n }\\n\\n &__or,\\n &__and {\\n counter-increment: section -1;\\n }\\n\\n &__or &__count,\\n &__and &__count {\\n background-color: transparent;\\n border: none;\\n }\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_step-navigation:not(.ds_step-navigation--small) {\\n .ds_step-navigation__count {\\n font-size: $root-font-size--medium;\\n height: $step-count-size--medium;\\n left: #{$step-count-margin--medium * -1};\\n line-height: #{$step-count-size--medium - 2px};\\n width: $step-count-size--medium;\\n }\\n\\n .ds_current .ds_step-navigation__count {\\n line-height: #{$step-count-size--medium - 4px};\\n }\\n\\n .ds_step-navigation__current-link::before {\\n left: #{math.div($step-count-size--medium, 2) - $step-count-margin--medium};\\n margin-top: math.div($step-content-line-height--medium, 2);\\n }\\n\\n .ds_accordion {\\n margin-left: $step-count-margin--medium;\\n }\\n\\n .ds_accordion-item::before {\\n bottom: px-to-rem(-17px);\\n left: #{math.div($step-count-size--medium, 2) - $step-count-margin--medium};\\n top: px-to-rem(49px);\\n }\\n\\n .ds_accordion-item:last-child::after {\\n left: #{math.div($step-count-size--medium, 2) - $step-count-margin--medium - 6px};\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n #SUMMARY LIST\\n\\\\*------------------------------------*/\\n\\n$summary-card-header-background-colour: $ds_colour__background--primary--dim !default;\\n\\n.ds_summary-list {\\n @include ds_block-margins--bottom;\\n list-style-type: none;\\n margin-left: 0;\\n\\n &__key {\\n font-weight: $bold;\\n }\\n\\n &__key,\\n &__value,\\n &__actions {\\n @include ds_responsive-margin(1, bottom);\\n display: block;\\n overflow-wrap: break-word;\\n }\\n\\n &__item {\\n @include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(1, bottom, false, -1px);\\n border-bottom: 1px solid $ds_colour__border;\\n margin: 0;\\n position: relative;\\n }\\n\\n &--no-border &__item {\\n @include ds_responsive-padding(1, bottom);\\n border-bottom: 0;\\n }\\n\\n &__value {\\n // Remove top margin of first element and bottom margin of last element to avoid additional spacing\\n @include ds_first-child-no-margin;\\n @include ds_last-child-no-margin;\\n\\n // If first element is visually hidden supporting text then remove top margin of next sibling\\n .visually-hidden:first-child + * {\\n margin-top: 0;\\n }\\n }\\n\\n &__answer::before,\\n &__answer::after {\\n content: '';\\n }\\n\\n &__actions-list {\\n display: flex;\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n\\n &-item {\\n margin: 0;\\n padding: 0;\\n\\n &:not(:first-child) {\\n @include ds_responsive-margin(1, left);\\n @include ds_responsive-padding(1, left, false, 1px);\\n position: relative;\\n\\n &::before {\\n background: $ds_colour__text--secondary;\\n content: '';\\n height: calc(1em - 2px);\\n left: 0;\\n position: absolute;\\n top: calc(50% - (1em - 2px) / 2);\\n width: 1px;\\n }\\n }\\n }\\n }\\n\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_summary-list {\\n border-collapse: collapse;\\n display: table;\\n width: 100%;\\n\\n &__item {\\n display: table-row;\\n padding: 0;\\n }\\n\\n &__key,\\n &__value,\\n &__actions {\\n display: table-cell;\\n padding: px-to-rem(16px) px-to-rem(16px) px-to-rem(15px) px-to-rem(16px);\\n }\\n\\n &--no-border &__item {\\n .ds_summary-list__key,\\n .ds_summary-list__value,\\n .ds_summary-list__action {\\n padding-bottom: px-to-rem(16px);\\n }\\n }\\n\\n &__key {\\n padding-left: 0;\\n width: 50%;\\n }\\n\\n &__value {\\n width: 50%;\\n }\\n\\n &__actions-list {\\n justify-content: flex-end;\\n }\\n\\n &__actions {\\n padding-right: 0;\\n text-align: right;\\n }\\n }\\n}\\n\\n@include ds_media-query(large) {\\n .ds_summary-list {\\n // Shorter keys modifier\\n &--short-keys &__key {\\n width: 30%;\\n }\\n &--short-keys &__value {\\n width: 70%;\\n }\\n }\\n}\\n\\n// Summary card\\n// [1] - Add visual separation of header in high contrast mode\\n.ds_summary-card {\\n @include ds_block-margins;\\n border: 1px solid $ds_colour__border;\\n\\n &__header {\\n @include ds_responsive-padding(3, top, $tuning: -1px);\\n @include ds_responsive-padding(3, right, $tuning: -1px);\\n @include ds_responsive-padding(3, bottom, $tuning: -1px);\\n @include ds_responsive-padding(3, left, $tuning: -1px);\\n align-items: flex-start;\\n border-bottom: 1px solid $summary-card-header-background-colour; //[1]\\n background: $summary-card-header-background-colour;\\n display: flex;\\n justify-content: space-between;\\n\\n // Stack on mobile\\n @include ds_media-query(medium-down) {\\n flex-direction: column;\\n }\\n\\n &-title {\\n @include ds_h3-size;\\n font-weight: $bold;\\n margin: 0;\\n }\\n\\n .ds_link {\\n font-weight: $bold;\\n }\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $summary-card-header-background-colour, 'summary card header');\\n }\\n\\n &__actions-list {\\n display: flex;\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n padding-left: px-to-rem(32px);\\n\\n @include ds_media-query(medium-down) {\\n padding-left: 0;\\n padding-top: px-to-rem(8px);\\n }\\n\\n &-item {\\n margin: 0;\\n padding: 0;\\n\\n &:not(:first-child) {\\n @include ds_responsive-margin(1, left);\\n @include ds_responsive-padding(1, left, false, 1px);\\n position: relative;\\n\\n &::before {\\n background: $ds_colour__text--secondary;\\n content: '';\\n height: calc(1em - 2px);\\n left: 0;\\n position: absolute;\\n top: calc(50% - (1em - 2px) / 2);\\n width: 1px;\\n }\\n }\\n }\\n }\\n\\n &__content {\\n @include ds_responsive-padding(1, top);\\n @include ds_responsive-padding(3, right, $tuning: -1px);\\n @include ds_responsive-padding(1, bottom, $tuning: -1px);\\n @include ds_responsive-padding(3, left, $tuning: -1px);\\n }\\n\\n // Remove bottom margin and border\\n .ds_summary-list {\\n margin-bottom: 0;\\n\\n &__item:last-child {\\n border-color: transparent;\\n }\\n }\\n}\\n\",\"@mixin ds_first-child-no-margin {\\n > :first-child {\\n margin-top: 0;\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n TABLES\\n\\\\*------------------------------------*/\\n\\n$table-border-colour: $ds_colour__border !default;\\n$table-border-colour--light: $ds_colour__border--faint !default;\\n$table-header-background-colour: $ds_colour__background--tertiary !default;\\n$table-row-zebra-colour: $ds_colour__background--primary--dim !default;\\n\\n\\n\\n\\n.ds_table {\\n // table-layout: fixed;\\n width: 100%;\\n @include ds_responsive-margin(2, bottom);\\n\\n\\n caption {\\n @include ds_responsive-margin(2, bottom);\\n font-size: px-to-rem($root-font-size); // 1rem\\n font-weight: $bold;\\n line-height: line-height-on-grid($root-font-size);\\n text-align: left;\\n }\\n\\n tbody,\\n thead,\\n tfoot {\\n border: 1px solid $table-border-colour;\\n }\\n\\n tr {\\n border-bottom: 1px solid $table-border-colour--light;\\n }\\n\\n tr > * {\\n /// [1] compensate for table row 1px border\\n padding: px-to-rem(8px) px-to-rem(16px) px-to-rem(7px) px-to-rem(8px); /// [1]\\n }\\n\\n tr:last-child {\\n //border-bottom-color: $table-border-colour;\\n border-bottom: 0;\\n }\\n\\n th {\\n background-color: $table-header-background-colour;\\n font-weight: $bold;\\n position: relative;\\n text-align: left;\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $table-header-background-colour, 'table header');\\n }\\n\\n th,\\n td {\\n vertical-align: top;\\n }\\n\\n th[colspan] {\\n border: 1px solid $table-border-colour;\\n }\\n\\n th:not(:first-child)::before {\\n border-left: 1px solid $table-border-colour;\\n bottom: 8px;\\n content: '';\\n left: -1px;\\n position: absolute;\\n top: 8px;\\n }\\n\\n thead > tr:last-child {\\n border-bottom: 0;\\n }\\n\\n tbody > tr > td {\\n background-color: $ds_colour__background--primary;\\n }\\n\\n tbody > tr:nth-child(even) > td {\\n background-color: $table-row-zebra-colour;\\n\\n @include checkAndFixDescendantLinkColour($ds_colour__link, $table-row-zebra-colour, 'table zebra');\\n }\\n}\\n\\n@include ds_media-query(medium-down) {\\n .ds_table.js-is-scrolling {\\n &[data-smallscreen=\\\"scrolling\\\"] {\\n display: block;\\n max-width: 100%;\\n overflow-x: auto;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] tr > :first-child {\\n left: 0;\\n position: sticky;\\n z-index: 1;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] caption {\\n display: block;\\n left: 0;\\n position: sticky;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] tr > :first-child::after {\\n background: linear-gradient(90deg, rgba(0,0,0,0.07), rgba(0,0,0,0));\\n content: '';\\n height: 100%;\\n position: absolute;\\n right: -10px;\\n top: 0;\\n width: 10px;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] tr > :first-child::before {\\n background: $table-border-colour;\\n content: '';\\n height: 100%;\\n left: -1px;\\n position: absolute;\\n top: 0;\\n width: 1px;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] tr > th:first-child {\\n background: $table-header-background-colour;\\n }\\n\\n &[data-smallscreen=\\\"scrolling\\\"] tr > td:first-child {\\n border-right: 1px solid $table-header-background-colour;\\n }\\n }\\n\\n .js-enabled {\\n .ds_table {\\n &[data-smallscreen=\\\"boxes\\\"] {\\n border: 0;\\n margin-bottom: 0;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] thead {\\n @include ds_visually-hidden;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tbody {\\n border: none;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr {\\n border: 0;\\n display: block;\\n margin-bottom: 16px;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > * {\\n border: 1px solid $table-border-colour;\\n display: block;\\n overflow: auto;\\n padding-left: calc(50% - 8px);\\n position: relative;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td:not(:last-child) {\\n border-bottom-color: $table-border-colour--light;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > th:last-child {\\n border-width: 0;\\n margin-top: 32px;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td:not(:first-child) {\\n border-top-width: 0;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td::before {\\n content: attr(data-heading);\\n display: block;\\n position: absolute;\\n font-weight: $bold;\\n left: 0;\\n margin-left: 16px;\\n margin-right: 16px;\\n text-align: left;\\n width: calc(50% - 16px);\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td:first-child {\\n box-shadow: inset 0 4px 0 $table-border-colour--light;\\n padding-top: 11px\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td:nth-child(odd) {\\n background-color: $ds_colour__background--primary;\\n }\\n\\n &[data-smallscreen=\\\"boxes\\\"] tr > td:nth-child(even) {\\n background-color: $table-row-zebra-colour;\\n }\\n\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n TABS\\n\\\\*------------------------------------*/\\n\\n$tab__background-colour: $ds_colour__background--primary--dim !default;\\n$tab__background-colour--current: $ds_colour__background--primary !default;\\n$tab__link-colour: $ds_colour__text !default;\\n$tab__link-colour--current: $ds_colour__text !default;\\n$tab__border-width: 2px !default;\\n$tab__border-width--current: 3px !default;\\n$tab__padding--vertical: 12px !default;\\n$tab__padding--horizontal: 16px !default;\\n$tab__gap: 8px !default;\\n$tab__toggle-colour: $ds_colour__link !default;\\n$tab__toggle-colour--hover: $ds_colour__link--hover !default;\\n\\n.ds_tabs {\\n @include ds_responsive-margin(4, bottom);\\n\\n // Default title style matches contents list heading\\n &__title {\\n @include ds_h3-size;\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n // Default list style matches contents list\\n &__list {\\n @include ds_small-size;\\n @include ds_responsive-margin(6, bottom);\\n list-style: none;\\n margin-left: 0;\\n padding-left: 32px;\\n }\\n\\n &__tab {\\n position: relative;\\n\\n &::before {\\n background: currentColor;\\n content: \\\"—\\\";\\n height: 1px;\\n left: -32px;\\n overflow: hidden;\\n position: absolute;\\n top: 12px;\\n width: 20px;\\n }\\n\\n &.ds_current {\\n font-weight: $bold;\\n }\\n }\\n\\n // Add space between stacked content blocks\\n &__content + &__content {\\n @include ds_responsive-margin(3, top);\\n }\\n\\n\\n &.ds_tabs--links {\\n\\n // Change to dropdown menu when tabs are links and javascript is initialised\\n .ds_tabs__navigation.js-initialised {\\n\\n // Dropdown menu\\n @include ds_media-query(medium-down) {\\n\\n @include ds_responsive-margin(4, bottom);\\n\\n .ds_tabs {\\n\\n &__toggle {\\n @include ds_blocklink;\\n\\n background-color: $ds_colour__background--primary;\\n border: 2px solid $ds_colour__border--faint;\\n color: $tab__toggle-colour;\\n font-weight: $bold;\\n margin: 0;\\n padding: 14px 38px 14px 14px;\\n text-align: left;\\n text-decoration: none;\\n width: 100%;\\n\\n &:hover:not(:focus) {\\n color: $tab__toggle-colour--hover;\\n }\\n\\n &::after {\\n @include ds_chevron(down, 0.75em);\\n border-width: 0px 0px 3px 3px;\\n position: absolute;\\n right: 16px;\\n top: 17px;\\n transition: transform 0.2s;\\n pointer-events: none;\\n }\\n\\n &:focus {\\n // focus state encompasses border\\n border: 0;\\n padding: 16px 40px 16px 16px;\\n\\n &::after {\\n right: 18px;\\n top: 19px;\\n }\\n }\\n\\n // Hide menu after button\\n & + .ds_tabs__list {\\n display: none;\\n }\\n\\n // Change button state and open menu\\n &[aria-expanded=\\\"true\\\"] {\\n\\n border-bottom: 0;\\n color: $tab__link-colour;\\n padding-bottom: 16px; // increased to take up space from removed border\\n\\n &:not(:focus){\\n background-color: $ds_colour__link--current__background;\\n }\\n\\n &:hover:not(:focus) {\\n background-color: $ds_colour__blocklink-bg--hover;\\n }\\n\\n &::after {\\n top: 23px;\\n transform: rotate(-225deg);\\n }\\n\\n &:focus::after {\\n top: 25px;\\n }\\n\\n & + .ds_tabs__list {\\n display: block;\\n }\\n }\\n\\n }\\n\\n &__list {\\n @include ds_root-size;\\n border: 2px solid $ds_colour__border--faint;\\n border-top: 0;\\n margin: 0;\\n padding: 8px 6px 6px 6px;\\n }\\n\\n &__tab {\\n margin: 0 0 2px 0;\\n padding: 0;\\n\\n &::before {\\n display: none;\\n }\\n\\n &-link {\\n @include ds_blocklink;\\n padding: 11px 16px; // 11px so 2px margin keeps to grid\\n text-decoration: none;\\n }\\n\\n &.ds_current {\\n\\n font-weight: $normal;\\n\\n .ds_tabs__tab-link:not(:focus) {\\n background-color: $ds_colour__link--current__background;\\n border-left: 2px solid $ds_colour__brand;\\n color: $tab__link-colour--current;\\n padding-left: 14px;\\n }\\n\\n }\\n }\\n\\n &__title {\\n display: none;\\n }\\n\\n &__current {\\n @include ds_responsive-margin(1, top);\\n }\\n\\n }\\n }\\n }\\n\\n @include ds_media-query(medium) {\\n .ds_tabs {\\n // Hide toggle button when not needed\\n &__toggle {\\n display: none;\\n }\\n\\n // Hide current page label when not needed\\n &__current {\\n display: none;\\n }\\n }\\n\\n }\\n }\\n\\n // Change to tab layout when dynamic tabs initialised or when tabs are links\\n &.js-initialised,\\n &.ds_tabs--links {\\n\\n .ds_tabs {\\n\\n // Tabs format\\n @include ds_media-query(medium) {\\n\\n &__list {\\n display: flex;\\n flex-wrap: wrap;\\n gap: $tab__gap;\\n margin: 0;\\n padding: 0;\\n }\\n\\n &__tab-link {\\n @include ds_blocklink;// Not fully using typical blocklink styling so requires overrides\\n color: $tab__link-colour;\\n display: inline-block;\\n padding: $tab__padding--vertical $tab__padding--horizontal;\\n\\n &:hover {\\n color: $ds_colour__link--hover;\\n }\\n\\n &:focus {\\n color: $ds_colour__link--focus;\\n }\\n }\\n\\n &__tab {\\n\\n &::before {\\n display: none;\\n }\\n\\n background-color: $tab__background-colour;\\n margin: 0;\\n\\n &.ds_current {\\n background-color: $tab__background-colour--current;\\n font-weight: $normal;\\n margin-bottom: -$tab__border-width !important;\\n\\n .ds_tabs__tab-link {\\n border-top: $tab__border-width--current solid $ds_colour__border--highlight;\\n border-left: $tab__border-width solid $ds_colour__border;\\n border-right: $tab__border-width solid $ds_colour__border;\\n border-bottom: 0;\\n color: $tab__link-colour--current;\\n padding: calc(#{$tab__padding--vertical} - #{$tab__border-width--current}) calc(#{$tab__padding--horizontal} - #{$tab__border-width}) calc(#{$tab__padding--vertical} + #{$tab__border-width});\\n text-decoration: none;\\n\\n &:focus {\\n border: 0;\\n color: $ds_colour__focus;\\n padding: $tab__padding--vertical $tab__padding--horizontal calc(#{$tab__padding--vertical} + #{$tab__border-width});\\n }\\n }\\n }\\n\\n &:focus-within {\\n margin-bottom: -$tab__border-width !important;\\n\\n .ds_tabs__tab-link {\\n padding: $tab__padding--vertical $tab__padding--horizontal calc(#{$tab__padding--vertical} + #{$tab__border-width}) ;\\n }\\n }\\n\\n }\\n\\n &__title {\\n @include ds_visually-hidden;\\n }\\n\\n &__content {\\n border-top: $tab__border-width solid $ds_colour__border;\\n margin: 0;\\n @include ds_responsive-padding(3, top, $tuning: -$tab__border-width);\\n\\n &--bordered {\\n border: $tab__border-width solid $ds_colour__border;\\n @include ds_responsive-padding(3, top, $tuning: -$tab__border-width);\\n @include ds_responsive-padding(2, right, $tuning: -$tab__border-width);\\n @include ds_responsive-padding(3, bottom, $tuning: -$tab__border-width);\\n @include ds_responsive-padding(2, left, $tuning: -$tab__border-width);\\n @include ds_last-child-no-margin;\\n }\\n }\\n\\n // Hide content that is not in view\\n &__content--hidden {\\n display: none;\\n }\\n\\n }\\n }\\n }\\n\\n // Different behaviour when tab not interactive\\n &.ds_tabs--links {\\n // When tabs format\\n @include ds_media-query(medium) {\\n .ds_tabs__tab {\\n\\n &.ds_current {\\n\\n .ds_tabs__tab-link {\\n\\n &:hover {\\n background-color: inherit;\\n color: inherit;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n}\\n\",\"/*------------------------------------*\\\\\\n TAG\\n\\\\*------------------------------------*/\\n\\n// modifiable vars\\n$tag__base-colour: $ds_colour__brand !default;\\n\\n$tag_colours: (\\n 'grey' $ds_colour__grey,\\n 'green' $ds_colour__dark-green,\\n 'teal' $ds_colour__teal,\\n 'darkblue' $ds_colour__blue--darker,\\n 'blue' $ds_colour__blue,\\n 'purple' $ds_colour__purple,\\n 'pink' $ds_colour__pink,\\n 'red' $ds_colour__red,\\n 'orange' $ds_colour__orange,\\n 'yellow' $ds_colour__yellow\\n);\\n\\n.ds_tag {\\n @include ds_root-size;\\n @include ds_responsive-padding(1, left);\\n @include ds_responsive-padding(1, right);\\n\\n $background: adjustLuminance($tag__base-colour, 0.83);\\n $foreground: adjustForContrast(darken($tag__base-colour, 12.5%), $background, 4.5);\\n\\n background: $background;\\n color: $foreground;\\n display: inline-block;\\n font-weight: $normal;\\n outline: 1px solid rgba(red($tag__base-colour), green($tag__base-colour), blue($tag__base-colour), 0.8);\\n outline-offset: -1px;\\n white-space: nowrap;\\n\\n @each $color in $tag_colours {\\n $name: nth($color, 1);\\n $hex: nth($color, 2);\\n $background: adjustLuminance($hex, 0.83);\\n $foreground: adjustForContrast(darken($hex, 12.5%), $background, 4.5) ;\\n\\n &--#{$name} {\\n background-color: $background;\\n color: $foreground;\\n outline-color: rgba(red($foreground), green($foreground), blue($foreground), 0.8);\\n }\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n TASK LIST\\n\\\\*------------------------------------*/\\n\\n.ds_task-list {\\n list-style-type: none;\\n margin: -2px 0 0 0; // Negative top margin to offset top border of first task\\n padding: 0;\\n\\n &__task {\\n align-items: center;\\n border-top: 2px $ds_colour__border--faint solid;\\n display: flex;\\n gap: 0.5rem 2rem;\\n justify-content: space-between;\\n margin: 0;\\n @include ds_responsive-padding(2, top);\\n @include ds_responsive-padding(2, bottom, $tuning: -2px);\\n\\n &:last-child {\\n border-bottom: 2px $ds_colour__border--faint solid;\\n }\\n\\n // Stack at small size\\n @include ds_media-query(small-down) {\\n @include ds_responsive-padding(3, bottom, $tuning: -2px);\\n align-items: flex-start;\\n flex-direction: column;\\n }\\n\\n &-details {\\n max-width: 100%;\\n }\\n\\n // remove heading styles\\n &-heading {\\n @include ds_root-size;\\n font-weight: $normal;\\n margin: 0;\\n }\\n\\n &-link {\\n text-decoration: underline;\\n }\\n\\n &-summary {\\n margin: 0;\\n @include ds_responsive-margin(1, top);\\n }\\n\\n // Deprecated - use ds_tag component instead\\n &-status {\\n @include ds_small-size;\\n @include ds_high-contrast-outline;\\n background-color: $ds_colour__background--tertiary;\\n font-weight: $bold;\\n padding: px-to-rem(4px) px-to-rem(16px);\\n white-space: nowrap;\\n\\n &--complete {\\n background: $ds_colour__background--primary;\\n color: $ds_colour__state--positive;\\n border: 2px $ds_colour__state--positive solid;\\n padding: px-to-rem(2px) px-to-rem(16px);\\n }\\n }\\n }\\n\\n &-heading {\\n @include ds_h3-style;\\n display: inline-block;\\n }\\n\\n &-intro {\\n @include ds_responsive-margin(2, bottom);\\n }\\n\\n // Add top margin if following inline heading\\n &-heading + &-intro {\\n //@include ds_responsive-margin(1, top);\\n }\\n // Include tuning for top border of tasks\\n &-heading + & {\\n @include ds_responsive-margin(1, top, $tuning: -2px);\\n }\\n}\\n\\n.ds_task-list-group {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n\\n &__section,\\n &__section:last-child {\\n margin: 0;\\n padding: 0;\\n @include ds_responsive-margin(5, bottom);\\n\\n @include ds_media-query(small-down) {\\n @include ds_responsive-margin(6, bottom);\\n }\\n }\\n\\n &--ordered {\\n list-style-position: inside;\\n list-style-type: decimal;\\n\\n .ds_task-list-group__section::marker {\\n @include ds_h3-size;\\n font-weight: $bold;\\n }\\n }\\n}\\n\\n.ds_task-list-status {\\n @include ds_responsive-margin(5, bottom);\\n\\n @include ds_media-query(small-down) {\\n @include ds_responsive-margin(6, bottom);\\n }\\n\\n > p {\\n @include ds_responsive-margin(1, bottom);\\n }\\n\\n &-heading {\\n @include ds_h3-style;\\n }\\n}\\n\\n\\n// Deprecated - use ds_tag component instead\\n@include ds_media-query-high-contrast {\\n /*\\n * [1] This is a little hacky but it does serve to differentiate the \\\"complete\\\" status.\\n * And happens to be green by default.\\n */\\n .ds_task-list__task-status--complete {\\n color: GrayText; // 1\\n }\\n}\\n\",\"/*------------------------------------*\\\\\\n #WARNING TEXT\\n\\\\*------------------------------------*/\\n\\n/// [1] compensate for border\\n.ds_warning-text {\\n border: 1px solid currentColor;\\n border-width: 1px 0;\\n font-weight: $bold;\\n padding-left: 72px;\\n padding-right: 16px;\\n position: relative;\\n\\n @include ds_block-margins;\\n @include ds_last-child-no-margin;\\n @include ds_responsive-padding(4, top, false, -1px); /// 1\\n @include ds_responsive-padding(4, bottom, false, -1px); /// 1\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n}\\n\\n.ds_warning-text__icon {\\n $warning-text-icon-size: 32px;\\n @include ds_high-contrast-outline;\\n\\n background: $ds_colour__text;\\n border-radius: 50%;\\n color: $ds_colour__background--primary;\\n display: inline-block;\\n height: $warning-text-icon-size;\\n font-size: $warning-text-icon-size;\\n font-weight: 700;\\n left: 24px;\\n line-height: $warning-text-icon-size;\\n position: absolute;\\n text-align: center;\\n top: 20px;\\n width: $warning-text-icon-size;\\n\\n &::before {\\n content: '!';\\n display: block;\\n height: #{$warning-text-icon-size - 4px};\\n }\\n}\\n\\n.ds_warning-text__text {\\n @include ds_last-child-no-margin;\\n}\\n\\n@include ds_media-query(medium) {\\n .ds_warning-text {\\n padding-right: 72px;\\n }\\n\\n .ds_warning-text__icon {\\n top: 31px;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.premises-name {\n display: inline-block;\n}\n\n.premises-status-tag {\n display: inline-block;\n margin-left: 16px;\n}\n\n.ds_page-header__title.page_title {\n margin-bottom: 1rem;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/App.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;AACvB;;AAEA;EACE,qBAAqB;EACrB,iBAAiB;AACnB;;AAEA;EACE,mBAAmB;AACrB\",\"sourcesContent\":[\".premises-name {\\n display: inline-block;\\n}\\n\\n.premises-status-tag {\\n display: inline-block;\\n margin-left: 16px;\\n}\\n\\n.ds_page-header__title.page_title {\\n margin-bottom: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","__webpack_require__.nc = undefined;","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!../node_modules/source-map-loader/dist/cjs.js!./App.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!../node_modules/source-map-loader/dist/cjs.js!./App.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!../../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!../../../../source-map-loader/dist/cjs.js!./design-system.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!../../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!../../../../source-map-loader/dist/cjs.js!./design-system.css\";\n export default content && content.locals ? content.locals : undefined;\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n if (!alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n warnOnce(\n flag,\n `⚠️ React Router Future Flag Warning: ${msg}. ` +\n `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n `For more information, see ${link}.`\n );\n\nexport function logV6DeprecationWarnings(\n renderFuture: Partial | undefined,\n routerFuture?: Omit\n) {\n if (!renderFuture?.v7_startTransition) {\n logDeprecation(\n \"v7_startTransition\",\n \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n );\n }\n\n if (\n !renderFuture?.v7_relativeSplatPath &&\n (!routerFuture || !routerFuture.v7_relativeSplatPath)\n ) {\n logDeprecation(\n \"v7_relativeSplatPath\",\n \"Relative route resolution within Splat routes is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n );\n }\n\n if (routerFuture) {\n if (!routerFuture.v7_fetcherPersist) {\n logDeprecation(\n \"v7_fetcherPersist\",\n \"The persistence behavior of fetchers is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n );\n }\n\n if (!routerFuture.v7_normalizeFormMethod) {\n logDeprecation(\n \"v7_normalizeFormMethod\",\n \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n );\n }\n\n if (!routerFuture.v7_partialHydration) {\n logDeprecation(\n \"v7_partialHydration\",\n \"`RouterProvider` hydration behavior is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n );\n }\n\n if (!routerFuture.v7_skipActionErrorRevalidation) {\n logDeprecation(\n \"v7_skipActionErrorRevalidation\",\n \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n );\n }\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [router, future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a