PageSourceSearch

https://www.dna.fi/wholesale

html dna.fi collected 2026-09-24 08:54:03 UTC 208,774 bytes, 1,805 lines download raw bytes

1<!DOCTYPE html> <html class="ltr no-js" dir="ltr" lang="fi-FI"> <head> <meta content="initial-scale=1.0, width=device-width" name="viewport" /> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <title>DNA Wholesale</title> 
1<script type="text/javascript" src="/ruxitagentjs_ICA7NVfhqrux_10345260810170330.js" data-dtconfig="app=6f6670dcc6516ee5|cuc=v2hgvzz1|owasp=1|mel=100000|featureHash=ICA7NVfhqrux|dpvc=1|md=mdcc1=bs.pageName,mdcc2=bs.visitorID,mdcc3=bs.campaign,mdcc4=bdocument.referrer,mdcc5=dutm_campaign,mdcc6=dutm_content|lastModification=1789986244871|tp=500,50,0|rdnt=1|uxrgce=1|srbbv=2|agentUri=/ruxitagentjs_ICA7NVfhqrux_10345260810170330.js|reportUrl=/rb_e368bf1e-8d75-4338-8f92-27cef02c669d|rid=RID_-1214197619|rpid=-1613941970|domain=dna.fi"></script>
1<link rel="preconnect" href="https://res.cloudinary.com/"> <link rel="preconnect" href="https://www.googletagmanager.com"> <link rel="preconnect" href="https://zogf71lkch-dsn.algolia.net"> 
1<script>
2    document.documentElement.className = document.documentElement.className.replace("no-js","");
3  </script>
3 
3<script type="importmap">{"imports":{"@clayui/breadcrumb":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$breadcrumb.js","react-dom":"/o/frontend-js-react-web/__liferay__/exports/react-dom.js","@clayui/charts":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$charts.js","@clayui/empty-state":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$empty-state.js","@clayui/navigation-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$navigation-bar.js","react":"/o/frontend-js-react-web/__liferay__/exports/react.js","react-dom-16":"/o/frontend-js-react-web/__liferay__/exports/react-dom-16.js","@clayui/icon":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$icon.js","@clayui/table":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$table.js","@clayui/slider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$slider.js","@clayui/multi-select":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-select.js","@clayui/nav":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$nav.js","@clayui/provider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$provider.js","@clayui/panel":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$panel.js","@liferay/dynamic-data-mapping-form-field-type":"/o/dynamic-data-mapping-form-field-type/__liferay__/index.js","@clayui/list":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$list.js","@clayui/date-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$date-picker.js","@clayui/label":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$label.js","@liferay/frontend-js-api/data-set":"/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api$data-set.js","@clayui/core":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$core.js","@clayui/pagination-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination-bar.js","@clayui/layout":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$layout.js","@clayui/multi-step-nav":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-step-nav.js","@liferay/frontend-js-api":"/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api.js","@clayui/toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$toolbar.js","@clayui/badge":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$badge.js","react-dom-18":"/o/frontend-js-react-web/__liferay__/exports/react-dom-18.js","@clayui/link":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$link.js","@clayui/card":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$card.js","@clayui/tooltip":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$tooltip.js","@clayui/button":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$button.js","@clayui/tabs":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$tabs.js","@clayui/sticker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$sticker.js","@clayui/form":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$form.js","@clayui/popover":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$popover.js","@clayui/shared":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$shared.js","@clayui/localized-input":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$localized-input.js","@clayui/modal":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$modal.js","@clayui/color-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$color-picker.js","@clayui/pagination":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination.js","@clayui/autocomplete":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$autocomplete.js","@clayui/management-toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$management-toolbar.js","@clayui/time-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$time-picker.js","@clayui/upper-toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$upper-toolbar.js","@clayui/loading-indicator":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$loading-indicator.js","@clayui/drop-down":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$drop-down.js","@clayui/data-provider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$data-provider.js","@liferay/language/":"/o/js/language/","@clayui/css":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$css.js","@clayui/alert":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$alert.js","@clayui/progress-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$progress-bar.js","react-16":"/o/frontend-js-react-web/__liferay__/exports/react-16.js","react-18":"/o/frontend-js-react-web/__liferay__/exports/react-18.js"},"scopes":{}}</script>
3<script data-senna-track="temporary">var Liferay = window.Liferay || {};Liferay.Icons = Liferay.Icons || {};Liferay.Icons.controlPanelSpritemap = 'https://www.dna.fi/o/admin-theme/images/clay/icons.svg'; Liferay.Icons.spritemap = 'https://www.dna.fi/o/dna-fi-theme/images/clay/icons.svg';</script>
3 
3<script data-senna-track="permanent" type="text/javascript">window.Liferay = window.Liferay || {}; window.Liferay.CSP = {nonce: ''};</script>
3 
3<script data-senna-track="permanent" src="/combo?browserId=chrome&minifierType=js&languageId=fi_FI&t=1789641087222&/o/dna-fi-js-extender/jquery/jquery.min.js" type="text/javascript"></script>
3 <link id="liferayAUICSS" rel="stylesheet" /> 
3<script type="text/javascript" data-senna-track="temporary">
4	// <![CDATA[
5		var Liferay = Liferay || {};
6
7		Liferay.Browser = {
8			acceptsGzip: function () {
9				return true;
10			},
11
12			
13
14			getMajorVersion: function () {
15				return 128.0;
16			},
17
18			getRevision: function () {
19				return '537.36';
20			},
21			getVersion: function () {
22				return '128.0';
23			},
24
25			
26
27			isAir: function () {
28				return false;
29			},
30			isChrome: function () {
31				return true;
32			},
33			isEdge: function () {
34				return false;
35			},
36			isFirefox: function () {
37				return false;
38			},
39			isGecko: function () {
40				return true;
41			},
42			isIe: function () {
43				return false;
44			},
45			isIphone: function () {
46				return false;
47			},
48			isLinux: function () {
49				return false;
50			},
51			isMac: function () {
52				return false;
53			},
54			isMobile: function () {
55				return false;
56			},
57			isMozilla: function () {
58				return false;
59			},
60			isOpera: function () {
61				return false;
62			},
63			isRtf: function () {
64				return true;
65			},
66			isSafari: function () {
67				return true;
68			},
69			isSun: function () {
70				return false;
71			},
72			isWebKit: function () {
73				return true;
74			},
75			isWindows: function () {
76				return false;
77			}
78		};
79
80		Liferay.Data = Liferay.Data || {};
81
82		Liferay.Data.ICONS_INLINE_SVG = true;
83
84		Liferay.Data.NAV_SELECTOR = '#navigation';
85
86		Liferay.Data.NAV_SELECTOR_MOBILE = '#navigationCollapse';
87
88		Liferay.Data.isCustomizationView = function () {
89			return false;
90		};
91
92		Liferay.Data.notices = [
93			
94		];
95
96		(function () {
97			var available = {};
98
99			var direction = {};
100
101			
102
103				available['fi_FI'] = 'suomi\x20\x28Suomi\x29';
104				direction['fi_FI'] = 'ltr';
105
106			
107
108				available['sv_SE'] = 'ruotsi\x20\x28Ruotsi\x29';
109				direction['sv_SE'] = 'ltr';
110
111			
112
113				available['en_US'] = 'englanti\x20\x28Yhdysvallat\x29';
114				direction['en_US'] = 'ltr';
115
116			
117
118			let _cache = {};
119
120			if (Liferay && Liferay.Language && Liferay.Language._cache) {
121				_cache = Liferay.Language._cache;
122			}
123
124			Liferay.Language = {
125				_cache,
126				available,
127				direction,
128				get: function(key) {
129					let value = Liferay.Language._cache[key];
130
131					if (value === undefined) {
132						value = key;
133					}
134
135					return value;
136				}
137			};
138		})();
139
140		var featureFlags = {"LPD-10964":false,"LPD-37927":false,"LPD-10889":false,"LPS-193884":false,"LPD-30371":false,"LPD-11131":true,"LPS-178642":false,"LPS-193005":false,"LPD-31789":false,"LPD-10562":false,"LPD-11212":false,"COMMERCE-8087":false,"LPD-39304":true,"LPD-13311":true,"LRAC-10757":false,"LPD-35941":false,"LPS-180090":false,"LPS-178052":false,"LPD-21414":false,"LPS-185892":false,"LPS-186620":false,"LPD-40533":true,"LPD-40534":true,"LPS-184404":false,"LPD-40530":true,"LPD-20640":false,"LPS-198183":false,"LPD-38869":true,"LPD-35678":false,"LPD-6378":false,"LPS-153714":false,"LPD-11848":false,"LPS-170670":false,"LPD-7822":false,"LPS-169981":false,"LPD-21926":false,"LPS-177027":false,"LPD-37531":false,"LPD-11003":false,"LPD-36446":false,"LPD-39437":false,"LPS-135430":false,"LPD-20556":false,"LPD-45276":false,"LPS-134060":false,"LPS-164563":false,"LPD-32050":false,"LPS-122920":false,"LPS-199086":false,"LPD-35128":false,"LPD-10588":false,"LPD-13778":true,"LPD-11313":false,"LPD-6368":false,"LPD-34594":false,"LPS-202104":false,"LPD-19955":false,"LPD-35443":false,"LPD-39967":false,"LPD-11235":false,"LPD-11232":false,"LPS-196935":true,"LPD-43542":false,"LPS-176691":false,"LPS-197909":false,"LPD-29516":false,"COMMERCE-8949":false,"LPD-11228":false,"LPS-153813":false,"LPD-17809":false,"COMMERCE-13024":false,"LPS-165482":false,"LPS-193551":false,"LPS-197477":false,"LPS-174816":false,"LPS-186360":false,"LPD-30204":false,"LPD-32867":false,"LPS-153332":false,"LPD-35013":true,"LPS-179669":false,"LPS-174417":false,"LPD-44091":true,"LPD-31212":false,"LPD-18221":false,"LPS-155284":false,"LRAC-15017":false,"LPD-19870":false,"LPS-200108":false,"LPD-20131":false,"LPS-159643":false,"LPS-129412":false,"LPS-169837":false,"LPD-20379":false};
141
142		Liferay.FeatureFlags = Object.keys(featureFlags).reduce(
143			(acc, key) => ({
144				...acc, [key]: featureFlags[key] === 'true' || featureFlags[key] === true
145			}), {}
146		);
147
148		Liferay.PortletKeys = {
149			DOCUMENT_LIBRARY: 'com_liferay_document_library_web_portlet_DLPortlet',
150			DYNAMIC_DATA_MAPPING: 'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet',
151			ITEM_SELECTOR: 'com_liferay_item_selector_web_portlet_ItemSelectorPortlet'
152		};
153
154		Liferay.PropsValues = {
155			JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0,
156			UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 104857600
157		};
158
159		Liferay.ThemeDisplay = {
160
161			
162
163			
164				getLayoutId: function () {
165					return '1';
166				},
167
168				
169
170				getLayoutRelativeControlPanelURL: function () {
171					return '/group/wholesale/~/control_panel/manage';
172				},
173
174				getLayoutRelativeURL: function () {
175					return '/wholesale/etusivu';
176				},
177				getLayoutURL: function () {
178					return 'https://www.dna.fi/wholesale/etusivu';
179				},
180				getParentLayoutId: function () {
181					return '0';
182				},
183				isControlPanel: function () {
184					return false;
185				},
186				isPrivateLayout: function () {
187					return 'false';
188				},
189				isVirtualLayout: function () {
190					return false;
191				},
192			
193
194			getBCP47LanguageId: function () {
195				return 'fi-FI';
196			},
197			getCanonicalURL: function () {
198
199				
200
201				return 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fwholesale';
202			},
203			getCDNBaseURL: function () {
204				return 'https://www.dna.fi';
205			},
206			getCDNDynamicResourcesHost: function () {
207				return '';
208			},
209			getCDNHost: function () {
210				return '';
211			},
212			getCompanyGroupId: function () {
213				return '20152';
214			},
215			getCompanyId: function () {
216				return '20116';
217			},
218			getDefaultLanguageId: function () {
219				return 'fi_FI';
220			},
221			getDoAsUserIdEncoded: function () {
222				return '';
223			},
224			getLanguageId: function () {
225				return 'fi_FI';
226			},
227			getParentGroupId: function () {
228				return '10476172';
229			},
230			getPathContext: function () {
231				return '';
232			},
233			getPathImage: function () {
234				return '/image';
235			},
236			getPathJavaScript: function () {
237				return '/o/frontend-js-web';
238			},
239			getPathMain: function () {
240				return '/c';
241			},
242			getPathThemeImages: function () {
243				return 'https://www.dna.fi/o/dna-fi-theme/images';
244			},
245			getPathThemeRoot: function () {
246				return '/o/dna-fi-theme';
247			},
248			getPlid: function () {
249				return '9161297';
250			},
251			getPortalURL: function () {
252				return 'https://www.dna.fi';
253			},
254			getRealUserId: function () {
255				return '20120';
256			},
257			getRemoteAddr: function () {
258				return '10.72.143.17';
259			},
260			getRemoteHost: function () {
261				return '10.72.143.17';
262			},
263			getScopeGroupId: function () {
264				return '10476172';
265			},
266			getScopeGroupIdOrLiveGroupId: function () {
267				return '10476172';
268			},
269			getSessionId: function () {
270				return '';
271			},
272			getSiteAdminURL: function () {
273				return 'https://www.dna.fi/group/wholesale/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view';
274			},
275			getSiteGroupId: function () {
276				return '10476172';
277			},
278			getTimeZone: function() {
279				return 'Europe/Helsinki';
280			},
281			getURLControlPanel: function() {
282				return '/group/control_panel?refererPlid=9161297';
283			},
284			getURLHome: function () {
285				return 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fyksityisille';
286			},
287			getUserEmailAddress: function () {
288				return '';
289			},
290			getUserId: function () {
291				return '20120';
292			},
293			getUserName: function () {
294				return '';
295			},
296			isAddSessionIdToURL: function () {
297				return false;
298			},
299			isImpersonated: function () {
300				return false;
301			},
302			isSignedIn: function () {
303				return false;
304			},
305
306			isStagedPortlet: function () {
307				
308					
309						return false;
310					
311				
312			},
313
314			isStateExclusive: function () {
315				return false;
316			},
317			isStateMaximized: function () {
318				return false;
319			},
320			isStatePopUp: function () {
321				return false;
322			}
323		};
324
325		var themeDisplay = Liferay.ThemeDisplay;
326
327		Liferay.AUI = {
328
329			
330
331			getCombine: function () {
332				return true;
333			},
334			getComboPath: function () {
335				return '/combo/?browserId=chrome&minifierType=&languageId=fi_FI&t=1781554730120&';
336			},
337			getDateFormat: function () {
338				return '%d.%m.%Y';
339			},
340			getEditorCKEditorPath: function () {
341				return '/o/frontend-editor-ckeditor-web';
342			},
343			getFilter: function () {
344				var filter = 'raw';
345
346				
347					
348						filter = 'min';
349					
350					
351
352				return filter;
353			},
354			getFilterConfig: function () {
355				var instance = this;
356
357				var filterConfig = null;
358
359				if (!instance.getCombine()) {
360					filterConfig = {
361						replaceStr: '.js' + instance.getStaticResourceURLParams(),
362						searchExp: '\\.js$'
363					};
364				}
365
366				return filterConfig;
367			},
368			getJavaScriptRootPath: function () {
369				return '/o/frontend-js-web';
370			},
371			getPortletRootPath: function () {
372				return '/html/portlet';
373			},
374			getStaticResourceURLParams: function () {
375				return '?browserId=chrome&minifierType=&languageId=fi_FI&t=1781554730120';
376			}
377		};
378
379		Liferay.authToken = 'bRdDHYcN';
380
381		
382
383		Liferay.currentURL = '\x2fweb\x2fwholesale';
384		Liferay.currentURLEncoded = '\x252Fweb\x252Fwholesale';
385	// ]]>
386</script>
386 
386<script data-senna-track="temporary" type="text/javascript">window.__CONFIG__= {basePath: '',combine: true, defaultURLParams: null, explainResolutions: false, exposeGlobal: false, logLevel: 'warn', moduleType: 'module', namespace:'Liferay', nonce: '', reportMismatchedAnonymousModules: 'warn', resolvePath: '/o/js_resolve_modules', url: '/combo/?browserId=chrome&minifierType=js&languageId=fi_FI&t=1781554730120&', waitTimeout: 30000};</script>
386<script data-senna-track="permanent" src="/o/frontend-js-loader-modules-extender/loader.js?&mac=9WaMmhziBCkScHZwrrVcOR7VZF4=&browserId=chrome&languageId=fi_FI&minifierType=js" type="text/javascript"></script>
386<script data-senna-track="permanent" src="/combo?browserId=chrome&minifierType=js&languageId=fi_FI&t=1781554730120&/o/frontend-js-aui-web/aui/aui/aui-min.js&/o/frontend-js-aui-web/liferay/modules.js&/o/frontend-js-aui-web/liferay/aui_sandbox.js&/o/frontend-js-aui-web/aui/attribute-base/attribute-base-min.js&/o/frontend-js-aui-web/aui/attribute-complex/attribute-complex-min.js&/o/frontend-js-aui-web/aui/attribute-core/attribute-core-min.js&/o/frontend-js-aui-web/aui/attribute-observable/attribute-observable-min.js&/o/frontend-js-aui-web/aui/attribute-extras/attribute-extras-min.js&/o/frontend-js-aui-web/aui/event-custom-base/event-custom-base-min.js&/o/frontend-js-aui-web/aui/event-custom-complex/event-custom-complex-min.js&/o/frontend-js-aui-web/aui/oop/oop-min.js&/o/frontend-js-aui-web/aui/aui-base-lang/aui-base-lang-min.js&/o/frontend-js-aui-web/liferay/dependency.js&/o/frontend-js-aui-web/liferay/util.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/oauth2-provider-web/js/liferay.js" type="text/javascript"></script>
386 
386<script data-senna-track="temporary" type="text/javascript">window.Liferay = Liferay || {}; window.Liferay.OAuth2 = {getAuthorizeURL: function() {return 'https://www.dna.fi/o/oauth2/authorize';}, getBuiltInRedirectURL: function() {return 'https://www.dna.fi/o/oauth2/redirect';}, getIntrospectURL: function() { return 'https://www.dna.fi/o/oauth2/introspect';}, getTokenURL: function() {return 'https://www.dna.fi/o/oauth2/token';}, getUserAgentApplication: function(externalReferenceCode) {return Liferay.OAuth2._userAgentApplications[externalReferenceCode];}, _userAgentApplications: {}}</script>
386<script data-senna-track="temporary" type="text/javascript">try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-js-components-web';/**
387 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
388 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
389 */
390
391(function () {
392	AUI().applyConfig({
393		groups: {
394			components: {
395
396				// eslint-disable-next-line
397				mainModule: MODULE_MAIN,
398			},
399		},
400	});
401})();
402} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/staging-processes-web';/**
403 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
404 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
405 */
406
407(function () {
408	AUI().applyConfig({
409		groups: {
410			stagingprocessesweb: {
411				base: MODULE_PATH + '/js/legacy/',
412				combine: Liferay.AUI.getCombine(),
413				filter: Liferay.AUI.getFilterConfig(),
414				modules: {
415					'liferay-staging-processes-export-import': {
416						path: 'main.js',
417						requires: [
418							'aui-datatype',
419							'aui-dialog-iframe-deprecated',
420							'aui-modal',
421							'aui-parse-content',
422							'aui-toggler',
423							'liferay-portlet-base',
424							'liferay-util-window',
425						],
426					},
427				},
428				root: MODULE_PATH + '/js/legacy/',
429			},
430		},
431	});
432})();
433} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-react-web';/**
434 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
435 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
436 */
437
438(function () {
439	AUI().applyConfig({
440		groups: {
441			react: {
442
443				// eslint-disable-next-line
444				mainModule: MODULE_MAIN,
445			},
446		},
447	});
448})();
449} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-search-web';/**
450 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
451 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
452 */
453
454(function () {
455	AUI().applyConfig({
456		groups: {
457			search: {
458				base: MODULE_PATH + '/js/',
459				combine: Liferay.AUI.getCombine(),
460				filter: Liferay.AUI.getFilterConfig(),
461				modules: {
462					'liferay-search-custom-range-facet': {
463						path: 'custom_range_facet.js',
464						requires: ['aui-form-validator'],
465					},
466				},
467				root: MODULE_PATH + '/js/',
468			},
469		},
470	});
471})();
472} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/contacts-web';/**
473 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
474 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
475 */
476
477(function () {
478	AUI().applyConfig({
479		groups: {
480			contactscenter: {
481				base: MODULE_PATH + '/js/legacy/',
482				combine: Liferay.AUI.getCombine(),
483				filter: Liferay.AUI.getFilterConfig(),
484				modules: {
485					'liferay-contacts-center': {
486						path: 'main.js',
487						requires: [
488							'aui-io-plugin-deprecated',
489							'aui-toolbar',
490							'autocomplete-base',
491							'datasource-io',
492							'json-parse',
493							'liferay-portlet-base',
494							'liferay-util-window',
495						],
496					},
497				},
498				root: MODULE_PATH + '/js/legacy/',
499			},
500		},
501	});
502})();
503} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/dynamic-data-mapping-web';/**
504 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
505 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
506 */
507
508(function () {
509	const LiferayAUI = Liferay.AUI;
510
511	AUI().applyConfig({
512		groups: {
513			ddm: {
514				base: MODULE_PATH + '/js/legacy/',
515				combine: Liferay.AUI.getCombine(),
516				filter: LiferayAUI.getFilterConfig(),
517				modules: {
518					'liferay-ddm-form': {
519						path: 'ddm_form.js',
520						requires: [
521							'aui-base',
522							'aui-datatable',
523							'aui-datatype',
524							'aui-image-viewer',
525							'aui-parse-content',
526							'aui-set',
527							'aui-sortable-list',
528							'json',
529							'liferay-form',
530							'liferay-map-base',
531							'liferay-translation-manager',
532							'liferay-util-window',
533						],
534					},
535					'liferay-portlet-dynamic-data-mapping': {
536						condition: {
537							trigger: 'liferay-document-library',
538						},
539						path: 'main.js',
540						requires: [
541							'arraysort',
542							'aui-form-builder-deprecated',
543							'aui-form-validator',
544							'aui-map',
545							'aui-text-unicode',
546							'json',
547							'liferay-menu',
548							'liferay-translation-manager',
549							'liferay-util-window',
550							'text',
551						],
552					},
553					'liferay-portlet-dynamic-data-mapping-custom-fields': {
554						condition: {
555							trigger: 'liferay-document-library',
556						},
557						path: 'custom_fields.js',
558						requires: ['liferay-portlet-dynamic-data-mapping'],
559					},
560				},
561				root: MODULE_PATH + '/js/legacy/',
562			},
563		},
564	});
565})();
566} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/calendar-web';/**
567 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
568 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
569 */
570
571(function () {
572	AUI().applyConfig({
573		groups: {
574			calendar: {
575				base: MODULE_PATH + '/js/legacy/',
576				combine: Liferay.AUI.getCombine(),
577				filter: Liferay.AUI.getFilterConfig(),
578				modules: {
579					'liferay-calendar-a11y': {
580						path: 'calendar_a11y.js',
581						requires: ['calendar'],
582					},
583					'liferay-calendar-container': {
584						path: 'calendar_container.js',
585						requires: [
586							'aui-alert',
587							'aui-base',
588							'aui-component',
589							'liferay-portlet-base',
590						],
591					},
592					'liferay-calendar-date-picker-sanitizer': {
593						path: 'date_picker_sanitizer.js',
594						requires: ['aui-base'],
595					},
596					'liferay-calendar-interval-selector': {
597						path: 'interval_selector.js',
598						requires: ['aui-base', 'liferay-portlet-base'],
599					},
600					'liferay-calendar-interval-selector-scheduler-event-link': {
601						path: 'interval_selector_scheduler_event_link.js',
602						requires: ['aui-base', 'liferay-portlet-base'],
603					},
604					'liferay-calendar-list': {
605						path: 'calendar_list.js',
606						requires: [
607							'aui-template-deprecated',
608							'liferay-scheduler',
609						],
610					},
611					'liferay-calendar-message-util': {
612						path: 'message_util.js',
613						requires: ['liferay-util-window'],
614					},
615					'liferay-calendar-recurrence-converter': {
616						path: 'recurrence_converter.js',
617						requires: [],
618					},
619					'liferay-calendar-recurrence-dialog': {
620						path: 'recurrence.js',
621						requires: [
622							'aui-base',
623							'liferay-calendar-recurrence-util',
624						],
625					},
626					'liferay-calendar-recurrence-util': {
627						path: 'recurrence_util.js',
628						requires: ['aui-base', 'liferay-util-window'],
629					},
630					'liferay-calendar-reminders': {
631						path: 'calendar_reminders.js',
632						requires: ['aui-base'],
633					},
634					'liferay-calendar-remote-services': {
635						path: 'remote_services.js',
636						requires: [
637							'aui-base',
638							'aui-component',
639							'liferay-calendar-util',
640							'liferay-portlet-base',
641						],
642					},
643					'liferay-calendar-session-listener': {
644						path: 'session_listener.js',
645						requires: ['aui-base', 'liferay-scheduler'],
646					},
647					'liferay-calendar-simple-color-picker': {
648						path: 'simple_color_picker.js',
649						requires: ['aui-base', 'aui-template-deprecated'],
650					},
651					'liferay-calendar-simple-menu': {
652						path: 'simple_menu.js',
653						requires: [
654							'aui-base',
655							'aui-template-deprecated',
656							'event-outside',
657							'event-touch',
658							'widget-modality',
659							'widget-position',
660							'widget-position-align',
661							'widget-position-constrain',
662							'widget-stack',
663							'widget-stdmod',
664						],
665					},
666					'liferay-calendar-util': {
667						path: 'calendar_util.js',
668						requires: [
669							'aui-datatype',
670							'aui-io',
671							'aui-scheduler',
672							'aui-toolbar',
673							'autocomplete',
674							'autocomplete-highlighters',
675						],
676					},
677					'liferay-scheduler': {
678						path: 'scheduler.js',
679						requires: [
680							'async-queue',
681							'aui-datatype',
682							'aui-scheduler',
683							'dd-plugin',
684							'liferay-calendar-a11y',
685							'liferay-calendar-message-util',
686							'liferay-calendar-recurrence-converter',
687							'liferay-calendar-recurrence-util',
688							'liferay-calendar-util',
689							'liferay-scheduler-event-recorder',
690							'liferay-scheduler-models',
691							'promise',
692							'resize-plugin',
693						],
694					},
695					'liferay-scheduler-event-recorder': {
696						path: 'scheduler_event_recorder.js',
697						requires: [
698							'dd-plugin',
699							'liferay-calendar-util',
700							'resize-plugin',
701						],
702					},
703					'liferay-scheduler-models': {
704						path: 'scheduler_models.js',
705						requires: [
706							'aui-datatype',
707							'dd-plugin',
708							'liferay-calendar-util',
709						],
710					},
711				},
712				root: MODULE_PATH + '/js/legacy/',
713			},
714		},
715	});
716})();
717} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/exportimport-web';/**
718 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
719 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
720 */
721
722(function () {
723	AUI().applyConfig({
724		groups: {
725			exportimportweb: {
726				base: MODULE_PATH + '/js/legacy/',
727				combine: Liferay.AUI.getCombine(),
728				filter: Liferay.AUI.getFilterConfig(),
729				modules: {
730					'liferay-export-import-export-import': {
731						path: 'main.js',
732						requires: [
733							'aui-datatype',
734							'aui-dialog-iframe-deprecated',
735							'aui-modal',
736							'aui-parse-content',
737							'aui-toggler',
738							'liferay-portlet-base',
739							'liferay-util-window',
740						],
741					},
742				},
743				root: MODULE_PATH + '/js/legacy/',
744			},
745		},
746	});
747})();
748} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-state-web';/**
749 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
750 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
751 */
752
753(function () {
754	AUI().applyConfig({
755		groups: {
756			state: {
757
758				// eslint-disable-next-line
759				mainModule: MODULE_MAIN,
760			},
761		},
762	});
763})();
764} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/document-library-web';/**
765 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
766 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
767 */
768
769(function () {
770	AUI().applyConfig({
771		groups: {
772			dl: {
773				base: MODULE_PATH + '/js/legacy/',
774				combine: Liferay.AUI.getCombine(),
775				filter: Liferay.AUI.getFilterConfig(),
776				modules: {
777					'document-library-upload-component': {
778						path: 'DocumentLibraryUpload.js',
779						requires: [
780							'aui-component',
781							'aui-data-set-deprecated',
782							'aui-overlay-manager-deprecated',
783							'aui-overlay-mask-deprecated',
784							'aui-parse-content',
785							'aui-progressbar',
786							'aui-template-deprecated',
787							'liferay-search-container',
788							'querystring-parse-simple',
789							'uploader',
790						],
791					},
792				},
793				root: MODULE_PATH + '/js/legacy/',
794			},
795		},
796	});
797})();
798} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-alloyeditor-web';/**
799 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
800 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
801 */
802
803(function () {
804	AUI().applyConfig({
805		groups: {
806			alloyeditor: {
807				base: MODULE_PATH + '/js/legacy/',
808				combine: Liferay.AUI.getCombine(),
809				filter: Liferay.AUI.getFilterConfig(),
810				modules: {
811					'liferay-alloy-editor': {
812						path: 'alloyeditor.js',
813						requires: [
814							'aui-component',
815							'liferay-portlet-base',
816							'timers',
817						],
818					},
819					'liferay-alloy-editor-source': {
820						path: 'alloyeditor_source.js',
821						requires: [
822							'aui-debounce',
823							'liferay-fullscreen-source-editor',
824							'liferay-source-editor',
825							'plugin',
826						],
827					},
828				},
829				root: MODULE_PATH + '/js/legacy/',
830			},
831		},
832	});
833})();
834} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-workflow-kaleo-designer-web';/**
835 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
836 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
837 */
838
839(function () {
840	AUI().applyConfig({
841		groups: {
842			'kaleo-designer': {
843				base: MODULE_PATH + '/designer/js/legacy/',
844				combine: Liferay.AUI.getCombine(),
845				filter: Liferay.AUI.getFilterConfig(),
846				modules: {
847					'liferay-kaleo-designer-autocomplete-util': {
848						path: 'autocomplete_util.js',
849						requires: ['autocomplete', 'autocomplete-highlighters'],
850					},
851					'liferay-kaleo-designer-definition-diagram-controller': {
852						path: 'definition_diagram_controller.js',
853						requires: [
854							'liferay-kaleo-designer-field-normalizer',
855							'liferay-kaleo-designer-utils',
856						],
857					},
858					'liferay-kaleo-designer-dialogs': {
859						path: 'dialogs.js',
860						requires: ['liferay-util-window'],
861					},
862					'liferay-kaleo-designer-editors': {
863						path: 'editors.js',
864						requires: [
865							'aui-ace-editor',
866							'aui-ace-editor-mode-xml',
867							'aui-base',
868							'aui-datatype',
869							'aui-node',
870							'liferay-kaleo-designer-autocomplete-util',
871							'liferay-kaleo-designer-utils',
872						],
873					},
874					'liferay-kaleo-designer-field-normalizer': {
875						path: 'field_normalizer.js',
876						requires: ['liferay-kaleo-designer-remote-services'],
877					},
878					'liferay-kaleo-designer-nodes': {
879						path: 'nodes.js',
880						requires: [
881							'aui-datatable',
882							'aui-datatype',
883							'aui-diagram-builder',
884							'liferay-kaleo-designer-editors',
885							'liferay-kaleo-designer-utils',
886						],
887					},
888					'liferay-kaleo-designer-remote-services': {
889						path: 'remote_services.js',
890						requires: ['aui-io'],
891					},
892					'liferay-kaleo-designer-templates': {
893						path: 'templates.js',
894						requires: ['aui-tpl-snippets-deprecated'],
895					},
896					'liferay-kaleo-designer-utils': {
897						path: 'utils.js',
898						requires: [],
899					},
900					'liferay-kaleo-designer-xml-definition': {
901						path: 'xml_definition.js',
902						requires: [
903							'aui-base',
904							'aui-component',
905							'dataschema-xml',
906							'datatype-xml',
907						],
908					},
909					'liferay-kaleo-designer-xml-definition-serializer': {
910						path: 'xml_definition_serializer.js',
911						requires: ['escape', 'liferay-kaleo-designer-xml-util'],
912					},
913					'liferay-kaleo-designer-xml-util': {
914						path: 'xml_util.js',
915						requires: ['aui-base'],
916					},
917					'liferay-portlet-kaleo-designer': {
918						path: 'main.js',
919						requires: [
920							'aui-ace-editor',
921							'aui-ace-editor-mode-xml',
922							'aui-tpl-snippets-deprecated',
923							'dataschema-xml',
924							'datasource',
925							'datatype-xml',
926							'event-valuechange',
927							'io-form',
928							'liferay-kaleo-designer-autocomplete-util',
929							'liferay-kaleo-designer-editors',
930							'liferay-kaleo-designer-nodes',
931							'liferay-kaleo-designer-remote-services',
932							'liferay-kaleo-designer-utils',
933							'liferay-kaleo-designer-xml-util',
934							'liferay-util-window',
935						],
936					},
937				},
938				root: MODULE_PATH + '/designer/js/legacy/',
939			},
940		},
941	});
942})();
943} catch(error) {console.error(error);}try {var MODULE_MAIN='null';var MODULE_PATH='/o/dna-fi-alloyui-javascripts-web-hook';;(function() {
944
945    var base = MODULE_PATH + '/js/';
946
947    AUI().applyConfig(
948        {
949            groups: {
950                alloyUIExtensions: {
951                    base: base,
952                    combine: Liferay.AUI.getCombine(),
953                    filter: Liferay.AUI.getFilterConfig(),
954                    modules: {
955                       'aui-form-validator-ext': {
956                            path: 'aui-form-validator-ext.js',
957                            condition: {
958                                name: 'aui-form-validator',
959                                trigger: 'aui-form-validator',
960                                when: 'instead'
961                            }
962                        }
963                    },
964                    root: base
965                }
966            }
967        }
968    );
969})();} catch(error) {console.error(error);}try {var MODULE_MAIN='null';var MODULE_PATH='/o/ddm-field-type-web-hook';;(function() {
970
971    var base = MODULE_PATH + '/js/';
972
973    AUI().applyConfig(
974        {
975            groups: {
976                ddmExtensionModules: {
977                    base: base,
978                    combine: Liferay.AUI.getCombine(),
979                    filter: Liferay.AUI.getFilterConfig(),
980                    modules: {
981                        'liferay-portlet-dynamic-data-mapping-override': {
982                            path: 'main.ext.js',
983                            condition: {
984                                name: 'liferay-portlet-dynamic-data-mapping-override',
985                                trigger: 'liferay-portlet-dynamic-data-mapping'
986                            }
987                        },
988                        'liferay-portlet-dynamic-data-mapping-custom-fields-override': {
989                            path: 'custom_fields.ext.js',
990                            condition: {
991                                name: 'liferay-portlet-dynamic-data-mapping-custom-fields-override',
992                                trigger: 'liferay-portlet-dynamic-data-mapping-custom-fields'
993                            }
994                        },
995                        'liferay-ddm-form-ext': {
996                            path: 'ddm_form.ext.js',
997                            condition: {
998                                name: 'liferay-ddm-form-ext',
999                                trigger: 'liferay-ddm-form'
1000                            }
1001                        }
1002                    },
1003                    root: base
1004                }
1005            }
1006        }
1007    );
1008})();} catch(error) {console.error(error);}</script>
1008 
1008<script type="text/javascript" data-senna-track="temporary">
1009	// <![CDATA[
1010		
1011			
1012				
1013		
1014
1015		
1016	// ]]>
1017</script>
1017 <style data-senna-track="temporary" type="text/css">
1018</style> <link data-senna-track="permanent" href="https://www.dna.fi/combo?browserId=chrome&minifierType=css&languageId=fi_FI&t=1781554760669&/o/dna-fi-main-theme-contributor/custom.css" rel="stylesheet" type = "text/css" /> <link data-senna-track="permanent" href="/o/frontend-js-aui-web/alloy_ui.css?&mac=favIEq7hPo8AEd6k+N5OVADEEls=&browserId=chrome&languageId=fi_FI&minifierType=css&themeId=dnafitheme_WAR_dnafitheme" rel="stylesheet"></link> 
1018<script type="text/javascript" data-senna-track="temporary">
1019	if (window.Analytics) {
1020		window._com_liferay_document_library_analytics_isViewFileEntry = false;
1021	}
1022</script>
1022 <link href="/combo?browserId=chrome&amp;minifierType=css&amp;themeId=dnafitheme_WAR_dnafitheme&amp;languageId=fi_FI&amp;com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth:%2Fo%2Fasset-publisher-web%2Fcss%2Fmain.css&amp;com_liferay_journal_content_web_portlet_JournalContentPortlet:%2Fo%2Fjournal-content-web%2Fcss%2Fmain.css&amp;com_liferay_portal_search_web_search_bar_portlet_SearchBarPortlet_INSTANCE_templateSearch:%2Fo%2Fportal-search-web%2Fcss%2Fmain.css&amp;com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet:%2Fo%2Fsite-navigation-menu-web%2Fcss%2Fmain.css&amp;t=1789630306000" rel="stylesheet" type="text/css" data-senna-track="temporary" id="9c3e287" /> <link class="lfr-css-file" data-senna-track="temporary" href="https://www.dna.fi/o/dna-fi-theme/css/main.css?browserId=chrome&amp;themeId=dnafitheme_WAR_dnafitheme&amp;minifierType=css&amp;languageId=fi_FI&amp;t=1789630306000" id="liferayThemeCSS" rel="stylesheet" type="text/css" /> <style data-senna-track="temporary" type="text/css">
1023		/* DNADXP-9238 */
1024.hl-icon {
1025  width: 1em;
1026  height: 1em;
1027  fill: currentColor;
1028  flex: 0 0 auto;
1029}
1030.hl-icon--black {
1031  fill: #121212;
1032}
1033.hl-icon--pink {
1034  fill: #DA0070;
1035}
1036.hl-icon--12 {
1037  width: 12px;
1038  height: 12px;
1039}
1040.hl-icon--16 {
1041  width: 16px;
1042  height: 16px;
1043}
1044.hl-icon--24 {
1045  width: 24px;
1046  height: 24px;
1047}
1048.hl-icon--32 {
1049  width: 32px;
1050  height: 32px;
1051}
1052.hl-icon--40 {
1053  width: 40px;
1054  height: 40px;
1055}
1056.hl-icon--64 {
1057  width: 64px;
1058  height: 64px;
1059}
1060.hl-icon--80 {
1061  width: 80px;
1062  height: 80px;
1063}
1064.hl-icon--120 {
1065  width: 120px;
1066  height: 120px;
1067}
1068/* DNADXP-9238 END */
1069
1070/* DNADXP-9240 */
1071.dna-asset-item,
1072.dna-asset-item > .dna-grid-item {
1073  height: 100%;
1074}
1075/* DNADXP-9240 END */
1076	</style> <style data-senna-track="temporary" type="text/css">
1077
1078		
1079
1080		
1081
1082			
1083
1084			
1085
1086#p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth_ .portlet-content {
1087
1088}
1089[lang="fi-FI"] #portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth {display: none;}
1090
1091
1092
1093			
1094
1095		
1096
1097		
1098
1099		
1100
1101			
1102
1103			
1104
1105#p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc_ .portlet-content {
1106
1107}
1108[lang="en-US"] #portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc {display: none;}
1109
1110
1111
1112			
1113
1114		
1115
1116		
1117
1118		
1119
1120		
1121
1122		
1123
1124		
1125
1126		
1127
1128		
1129
1130		
1131
1132		
1133
1134		
1135
1136		
1137
1138		
1139
1140		
1141
1142		
1143
1144		
1145
1146		
1147
1148		
1149
1150		
1151
1152		
1153
1154		
1155
1156		
1157
1158		
1159
1160		
1161
1162		
1163
1164		
1165
1166		
1167
1168		
1169
1170		
1171
1172		
1173
1174		
1175
1176		
1177
1178		
1179
1180		
1181
1182		
1183
1184		
1185
1186		
1187
1188		
1189
1190		
1191
1192		
1193
1194	</style> <link rel="icon" href="https://www.dna.fi/o/dna-fi-theme/images/favicon.ico" sizes="32x32"> <link rel="icon" href="https://www.dna.fi/o/dna-fi-theme/images/DNA.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="https://www.dna.fi/o/dna-fi-theme/images/favicons/DNA_logo_180x180"> <meta content="DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille tukku- ja operaattoritoimijoille laadukkaat tietoliikenneratkaisut." lang="fi-FI" name="description" /> <link data-senna-track="temporary" href="https://www.dna.fi/wholesale/etusivu" rel="canonical" /><link data-senna-track ="temporary" href="https://www.dna.fi/wholesale/etusivu" hreflang="x-default" rel="alternate" /><link data-senna-track="temporary" href="https://www.dna.fi/wholesale/front-page" hreflang="en-US" rel="alternate" /> <meta property="fb:pages" content="105523299470698" /> <meta property="og:site_name" content="DNA"/> <meta property="og:type" content="website"/> <meta property="og:title" content="DNA Wholesale | DNA"/> <meta property="og:description" content="DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille tukku- ja operaattoritoimijoille laadukkaat tietoliikenneratkaisut."/> <meta property="og:image" content="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,f_jpg,g_auto,h_630,q_auto,w_1200/v1/Assets/Wholesale/Oulun%20mastokuvat/Parannellut/DJI_0025_sRGB_V2.jpg"/> <meta property="og:image:width" content="630"/> <meta property="og:image:height" content="1200"/> <meta property="og:url" content="https://www.dna.fi/fi/wholesale"/> <meta property="og:published_time" content="2025-04-29T22:28:38.307+03:00"/> <meta property="og:locale" content="fi_FI"/> <meta property="og:locale:alternate" content="en_US"/> <meta name="application-name" content="DNA.fi"> <link rel="manifest" href="https://www.dna.fi/o/dna-fi-theme/images/favicons/manifest.json"> 
1194<script>
1195    window.originalLocation = 'https://www.dna.fi/wholesale';
1196    window.dataLayer = window.dataLayer || [];
1197    window.dataLayer.push({
1198        event: 'pageLoadData',
1199        page: {
1200            business: 'WO',
1201            category: 'undefined',
1202            environment: 'test',
1203            cms: 'liferay',
1204            language: 'fi',
1205            productSegment: 'undefined',
1206            originalLocation: 'https://www.dna.fi/wholesale'
1207        },
1208        user: {
1209            loggedIn: 'false',
1210            id: 'anonymous'
1211        }
1212    });
1213</script>
1213 <!-- Google Tag Manager --> 
1213<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push(
1214                    {'gtm.start': new Date().getTime(),event:'gtm.js'}
1215                );var f=d.getElementsByTagName(s)[0],
1216                    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1217                    '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f);
1218                })(window,document,'script','dataLayer','GTM-NBKQNL2');</script>
1218 <!-- End Google Tag Manager --> <!-- Google Tag Manager --> 
1218<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push(
1219                    {'gtm.start': new Date().getTime(),event:'gtm.js'}
1220                );var f=d.getElementsByTagName(s)[0],
1221                    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1222                    '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f);
1223                })(window,document,'script','dataLayer','GTM-5TCNFS9');</script>
1223 <!-- End Google Tag Manager --> <!-- Google Tag Manager --> 
1223<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push(
1224                    {'gtm.start': new Date().getTime(),event:'gtm.js'}
1225                );var f=d.getElementsByTagName(s)[0],
1226                    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1227                    '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f);
1228                })(window,document,'script','dataLayer','GTM-KLLH83J');</script>
1228 <!-- End Google Tag Manager --> <!-- Start VWO Async SmartCode --> <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" /> 
1228<script type='text/javascript' id='vwoCode'> (() => { const getCookie=o=>{const t=("; "+document.cookie).split("; "+o+"=");if(2==t.length)return t.pop().split(";").shift()}; var otValue = getCookie('OptanonConsent'), consentGiven = otValue && otValue.includes('C0002%3A1'); if(consentGiven) { window._vwo_code || (function() { var account_id=758646, version=2.0, settings_tolerance=2000, hide_element='body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', /* DO NOT EDIT BELOW THIS LINE */ f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(){if(!f){f=true;var e=d.getElementById('_vis_opt_path_hides');if(e)e.parentNode.removeChild(e)}},finished:function(){return f},load:function(e){var t=this.getSettings(),n=d.createElement('script'),i=this;if(t){n.textContent=t;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);i.load(e)}}else{n.fetchPriority='high';n.src=e;n.type='text/javascript';n.onerror=function(){_vwo_code.finish()};d.getElementsByTagName('head')[0].appendChild(n)}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t=d.currentScript,n=d.createElement('style'),i=this.hide_element(),r=t&&!t.async&&i?i+this.hide_element_style():'',c=d.getElementsByTagName('head')[0];n.setAttribute('id','_vis_opt_path_hides');v&&n.setAttribute('nonce',v.nonce);n.setAttribute('type','text/css');if(n.styleSheet)n.styleSheet.cssText=r;else n.appendChild(d.createTextNode(r));c.appendChild(n);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version)}};w._vwo_code=code;code.init();})(); } })(); </script>
1228 <!-- End VWO Async SmartCode --></head> <body class="chrome controls-visible yui3-skin-sam signed-out public-page site"> <a href="#main-content" class="skip-to-content">Suoraan sisältöön</a> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-NBKQNL2
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
1228<!-- End Google Tag Manager --> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-5TCNFS9
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
1228<!-- End Google Tag Manager --> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-KLLH83J
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
1228<!-- End Google Tag Manager --> <!-- COMMON-DNA-HEADER --> <div id="dna-mediaquery"></div> <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol viewBox="0 0 24 24" id="ArrowRight"><path fill-rule="evenodd" d="M16.227 6.285a.7.7 0 0 0-.469.228.6.6 0 0 0-.128.185.6.6 0 0 0-.062.302c0 .094.003.128.018.18a.8.8 0 0 0 .108.231c.02.027.894.908 1.943 1.957l1.908 1.908-8.467.004-8.466.004-.079.022a.73.73 0 0 0-.525.57 1 1 0 0 0 0 .248c.048.27.256.496.525.57l.079.022 8.466.004 8.467.004-1.908 1.908a227 227 0 0 0-1.943 1.957.8.8 0 0 0-.108.231.6.6 0 0 0-.018.18c0 .132.014.2.062.302a.6.6 0 0 0 .128.185.67.67 0 0 0 .532.227.7.7 0 0 0 .392-.12c.05-.033 5.083-5.058 5.157-5.15.076-.094.145-.25.145-.325 0-.012.004-.024.008-.027a.3.3 0 0 0 .008-.1q0-.096-.008-.092-.007.003-.008-.018c0-.076-.069-.231-.145-.326a696 696 0 0 0-5.157-5.15.7.7 0 0 0-.219-.098 1 1 0 0 0-.236-.023M2.003 12c0 .055.001.078.003.05a1 1 0 0 0 0-.1c-.002-.027-.003-.005-.003.05" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Cart"><path fill-rule="evenodd" d="M9 3.444a.7.7 0 0 0-.42.26c-.023.032-.642 1.107-1.376 2.39L5.871 8.43l-.833.002c-.744.003-.843.005-.914.017a2.17 2.17 0 0 0-1.209.609c-.35.35-.567.803-.62 1.3-.01.103-.01.328 0 .436.01.085 1.59 8.014 1.63 8.173.09.359.29.71.559.98.337.336.77.548 1.256.613.066.008 1.17.01 6.272.01 5.976 0 6.195 0 6.284-.014a2.15 2.15 0 0 0 1.777-1.577c.033-.13 1.615-8.06 1.628-8.157.014-.114.016-.35.003-.464a2.2 2.2 0 0 0-.463-1.128 3 3 0 0 0-.315-.319 2.2 2.2 0 0 0-1.034-.458c-.102-.017-.122-.018-.934-.02l-.83-.004-1.333-2.333a230 230 0 0 0-1.376-2.39.72.72 0 0 0-.82-.228.8.8 0 0 0-.303.223.7.7 0 0 0-.152.457c0 .103.02.193.063.283.017.036.535.947 1.151 2.025l1.12 1.96-2.239.002H9.76l-2.239-.002 1.12-1.96a245 245 0 0 0 1.152-2.025.64.64 0 0 0 .063-.283.72.72 0 0 0-.544-.709A.9.9 0 0 0 9 3.444m-4.7 6.43a.7.7 0 0 0-.512.391.7.7 0 0 0-.068.373c.004.035.364 1.849.8 4.03.64 3.195.798 3.978.818 4.03a.72.72 0 0 0 .524.432c.05.01.926.011 6.137.011 5.906 0 6.079 0 6.15-.015a.71.71 0 0 0 .514-.433c.018-.047.198-.935.817-4.027.436-2.182.796-3.996.8-4.03a.8.8 0 0 0-.021-.25.9.9 0 0 0-.122-.245.72.72 0 0 0-.44-.268c-.084-.017-15.31-.016-15.397 0" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="CartEmpty"><path fill-rule="evenodd" d="M9.265 6.289a.64.64 0 0 0-.383.236c-.021.03-.586 1.01-1.255 2.18l-1.215 2.128-.76.003c-.678.002-.769.004-.834.015a2 2 0 0 0-1.102.555c-.32.32-.517.733-.565 1.186-.01.093-.01.299 0 .398.008.077 1.449 7.306 1.485 7.452.082.327.266.648.51.893.308.307.704.5 1.146.56.06.007 1.066.009 5.72.009 5.448 0 5.648 0 5.73-.014a1.97 1.97 0 0 0 1.62-1.437c.03-.118 1.473-7.35 1.484-7.438.012-.104.014-.32.003-.423a2 2 0 0 0-.422-1.029 2.5 2.5 0 0 0-.288-.29 2 2 0 0 0-.943-.418c-.092-.016-.111-.017-.851-.019l-.756-.003-1.216-2.128a207 207 0 0 0-1.255-2.18.655.655 0 0 0-.748-.207.65.65 0 0 0-.415.62c0 .095.018.176.058.259.015.032.488.863 1.05 1.846l1.021 1.787-2.042.002c-1.123.001-2.96.001-4.084 0l-2.042-.002 1.022-1.787C9.5 8.06 9.972 7.23 9.988 7.197a.6.6 0 0 0 .057-.259.65.65 0 0 0-.496-.646.8.8 0 0 0-.284-.003M4.979 12.15a.64.64 0 0 0-.467.357.63.63 0 0 0-.062.34c.004.032.332 1.686.73 3.675.583 2.913.727 3.627.746 3.674a.66.66 0 0 0 .477.394c.047.01.845.01 5.596.01 5.385 0 5.543 0 5.608-.013a.65.65 0 0 0 .468-.395c.017-.043.182-.853.746-3.672.397-1.99.726-3.643.729-3.675a.7.7 0 0 0-.019-.228.8.8 0 0 0-.11-.224.66.66 0 0 0-.402-.244c-.077-.015-13.96-.014-14.04 0M12 2.096a.6.6 0 0 1 .6.6v1.8a.6.6 0 0 1-1.2 0v-1.8a.6.6 0 0 1 .6-.6M5.69 3.595a.59.59 0 0 1 .748.133l.057.083.897 1.572a.6.6 0 0 1-.218.813.59.59 0 0 1-.748-.133l-.058-.083-.897-1.573a.6.6 0 0 1 .218-.812m12.623 0c.283.165.38.528.218.812l-.897 1.573a.59.59 0 0 1-.714.26l-.092-.044a.6.6 0 0 1-.218-.813l.897-1.572a.59.59 0 0 1 .715-.26z" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="ChevronRight"><path fill-rule="evenodd" d="M7.773 2.008a.73.73 0 0 0-.554.52.9.9 0 0 0-.001.361.7.7 0 0 0 .095.215c.03.045.951.972 4.454 4.477L16.184 12l-4.417 4.42c-3.503 3.505-4.424 4.43-4.454 4.476a.7.7 0 0 0-.095.215.9.9 0 0 0 .001.36c.056.204.195.37.39.465.103.05.16.063.3.063.18 0 .306-.04.439-.144.024-.019 2.053-2.045 4.51-4.503l4.464-4.468.065-.099a1.4 1.4 0 0 0 0-1.571l-.065-.099-4.465-4.468A1225 1225 0 0 0 8.34 2.139a.8.8 0 0 0-.248-.122 1 1 0 0 0-.32-.009" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="File"><path fill-rule="evenodd" d="M5.405 2.005A2.15 2.15 0 0 0 3.49 3.632a2 2 0 0 0-.057.423c-.006.106-.007 2.728-.006 8.064.003 7.48.004 7.914.017 8.004.059.404.203.748.444 
12281.06.074.095.277.297.375.371q.5.381 1.118.437c.123.012 13.118.012 13.24 0a2.14 2.14 0 0 0 1.119-.437c.098-.074.301-.276.375-.37a2.2 2.2 0 0 0 .418-.913c.043-.22.04.19.04-6.46 0-5.876 0-6.179-.014-6.241a.8.8 0 0 0-.098-.24c-.033-.055-.337-.362-2.595-2.62-2.024-2.024-2.568-2.564-2.613-2.592a.8.8 0 0 0-.258-.106C14.935 2 14.46 2 10.183 2c-2.61 0-4.76.002-4.778.004m.028 1.439a.73.73 0 0 0-.447.294 1 1 0 0 0-.106.242l-.019.071v15.896l.019.071c.066.263.25.452.511.527l.062.018H18.55l.063-.018a.72.72 0 0 0 .511-.522l.018-.068.002-5.406.003-5.406h-2.531c-2.76 0-2.598.003-2.723-.044a.74.74 0 0 1-.387-.352.6.6 0 0 1-.072-.256 216 216 0 0 1-.007-2.57V3.43l-3.97.001c-3.363 0-3.979.002-4.023.012m9.424 2.28V7.71h3.988l-1.988-1.988a468 468 0 0 0-1.993-1.988c-.004 0-.007.895-.007 1.988" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Globe"><path fill-rule="evenodd" d="M11.63 2.002a10 10 0 0 0-4.92 1.502A10.02 10.02 0 0 0 2.506 8.83 9.8 9.8 0 0 0 2 12c0 .477.011.713.056 1.117a10 10 0 0 0 4.06 6.979c.807.59 1.74 1.07 2.707 1.395a9.8 9.8 0 0 0 3.172.509 9 9 0 0 0 1.116-.056 9.98 9.98 0 0 0 6.817-3.85 10 10 0 0 0 1.554-2.92 9.9 9.9 0 0 0 .505-2.787c0-.05.004-.082.008-.082.006 0 .008-.11.008-.314 0-.206-.002-.31-.008-.302q-.007.013-.008-.072a10 10 0 0 0-4.112-7.71 10 10 0 0 0-2.708-1.396 9.8 9.8 0 0 0-2.523-.494 19 19 0 0 0-1.013-.015m-1.216 1.57a8.6 8.6 0 0 0-4.076 1.987 11 11 0 0 0-.9.92 8.6 8.6 0 0 0-1.981 4.774l-.003.032 2.15.002 2.15.002.004-.018.008-.074c.05-.57.177-1.37.324-2.025a16.8 16.8 0 0 1 2.29-5.454c.11-.17.105-.16.097-.16zm3.097-.004.09.138a16.8 16.8 0 0 1 2.362 5.766 17 17 0 0 1 .268 1.799l.004.018h2.146c1.18 0 2.148-.002 2.15-.004a6 6 0 0 0-.062-.569 8.6 8.6 0 0 0-1.967-4.293 9 9 0 0 0-.956-.953 8.5 8.5 0 0 0-3.86-1.875l-.162-.033q-.02-.005-.013.006m-1.626.476a15.2 15.2 0 0 0-1.714 3.203 15.3 15.3 0 0 0-.973 4.004l-.004.038h5.601l-.005-.038-.024-.214a15.36 15.36 0 0 0-2.488-6.739 7 7 0 0 0-.283-.402 2 2 0 0 0-.11.148m-9.887 7.957c0 .174.001.245.002.158.002-.087.002-.23 0-.316 0-.087-.002-.016-.002.158m1.46.718c-.004.028.02.27.045.454a8.54 8.54 0 0 0 2.915 5.338 8.2 8.2 0 0 0 1.78 1.176 8.5 8.5 0 0 0 2.282.754s-.033-.054-.075-.117a16.8 16.8 0 0 1-2.647-7.593l-.004-.018H5.606c-1.181 0-2.148.003-2.148.006m5.74.032.025.214a15.36 15.36 0 0 0 2.488 6.738c.153.228.275.4.283.4.014 0 .32-.446.495-.722a15.4 15.4 0 0 0 1.47-2.999c.4-1.105.675-2.272.807-3.417l.024-.214.005-.038H9.194zm7.033-.02-.009.074c-.069.783-.252 1.81-.469 2.625a16.8 16.8 0 0 1-2.244 5.011 8.7 8.7 0 0 0 2.891-1.085 8.6 8.6 0 0 0 1.867-1.516 8.5 8.5 0 0 0 1.78-2.898 8.4 8.4 0 0 0 .485-2.225c-.003-.002-.97-.004-2.15-.004h-2.147z" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Search"><path fill-rule="evenodd" d="M2 10.571a8.571 8.571 0 1 1 17.143 0 8.571 8.571 0 0 1-17.143 0m8.571-7.142a7.143 7.143 0 1 0 0 14.285 7.143 7.143 0 0 0 0-14.285" clip-rule="evenodd"/><path fill-rule="evenodd" d="M15.78 15.78a.714.714 0 0 1 1.01 0l5 5a.714.714 0 0 1-1.01 1.01l-5-5a.714.714 0 0 1 0-1.01" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Menu"><path fill-rule="evenodd" d="M2 4.857c0-.394.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 4.857M2 12c0-.395.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 12m0 7.143c0-.395.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 19.143" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Mobiilivarmenne"><path d="m14.56 8.638-2.558 2.559-2.56-2.56H8.167v.528l3.836 3.838 7.548-7.551q-.42-.484-.895-.91zM8.165 15.69h1.277v-4.38l-1.277-1.276zm7.671 0v-5.655l-1.277 1.278v4.377z"/><path d="m19.968 5.972-.909.91a8.68 8.68 0 0 1 1.668 5.105v.014c0 4.812-3.914 8.726-8.724 8.726S3.28 16.812 3.28 12.001v-.014h-.007c.008-4.805 3.918-8.712 8.723-8.712h.013c1.96 0 3.77.656 5.227 1.753l.908-.908A9.94 9.94 0 0 0 12.004 2h-.007C6.485 2 2 6.486 2 12h.006c0 5.513 4.485 10 9.997 10S22 17.514 22 12c0-2.263-.76-4.35-2.032-6.028"/></symbol> <symbol viewBox="0 0 24 24" id="Open"><path fill-rule="evenodd" d="M2.004 12c0 4.402 0 6.203.002 4.002V7.998c-.001-2.201-.002-.4-.002 4.002" clip-rule="evenodd"/>
1228<path d="M2.628 2.628a2.14 2.14 0 0 1 1.305-.619c.04-.004 1.58-.006 3.425-.006 3.217.001 3.356.002 3.401.016a.75.75 0 0 1 .51.513c.012.049.017.09.018.172a.64.64 0 0 1-.053.29.74.74 0 0 1-.501.42c-.05.012-.32.014-3.387.018-3.014.004-3.337.006-3.373.017a.76.76 0 0 0-.332.191.76.76 0 0 0-.193.344c-.017.066-.017 15.966 0 16.032a.73.73 0 0 0 .537.537c.066.017 15.972.017 16.038 0a.76.76 0 0 0 .344-.193.76.76 0 0 0 .191-.332c.012-.036.014-.36.017-3.376l.005-3.336.017-.063a.7.7 0 0 1 .192-.329.66.66 0 0 1 .515-.207c.12.001.196.017.286.059a.74.74 0 0 1 .41.527l-.004 6.776a2.14 2.14 0 0 1-1.945 1.913c-.075.006-2.309.008-8.115.006-7.66-.002-8.015-.003-8.095-.017a2.15 2.15 0 0 1-1.832-1.925c-.012-.13-.012-15.982 0-16.112.046-.498.263-.96.62-1.316"/><path d="M21.416 2.008c.205.034.469.155.58.344v5.501a.73.73 0 0 1-.51.551.75.75 0 0 1-.51-.048.72.72 0 0 1-.392-.56 82 82 0 0 1-.008-1.712v-1.64l-4.06 4.057c-2.233 2.231-4.078 4.07-4.1 4.085a.8.8 0 0 1-.218.104.6.6 0 0 1-.194.018.6.6 0 0 1-.194-.018.73.73 0 0 1-.496-.496.6.6 0 0 1-.018-.194.6.6 0 0 1 .018-.194.8.8 0 0 1 .103-.217c.016-.023 1.856-1.867 4.088-4.099l4.058-4.058h-1.64a81 81 0 0 1-1.713-.008.7.7 0 0 1-.499-.292.73.73 0 0 1-.11-.612.72.72 0 0 1 .385-.452c.144-.07-.154-.063 2.777-.066 1.825-.002 2.616 0 2.653.006"/></symbol> <symbol viewBox="0 0 24 24" id="User"><path fill-rule="evenodd" d="m11.756 2.005-.164.011A5.35 5.35 0 0 0 8.696 3.14a5.35 5.35 0 0 0-2.04 3.84c-.013.169-.013.59 0 .757a5.364 5.364 0 0 0 4.445 4.903 5.357 5.357 0 1 0 1.36-10.62 10 10 0 0 0-.705-.014m-.088 1.44a3.94 3.94 0 0 0-1.776.597 3.935 3.935 0 0 0-1.473 4.93c.194.425.441.787.769 1.123.333.342.684.595 1.102.797a3.9 3.9 0 0 0 1.872.387 3.8 3.8 0 0 0 1.548-.387 3.8 3.8 0 0 0 1.102-.797c.38-.39.655-.818.854-1.331a3.94 3.94 0 0 0 .073-2.607 3.93 3.93 0 0 0-2.975-2.652 4.2 4.2 0 0 0-1.096-.06m-.032 10.692a9.98 9.98 0 0 0-7.597 3.952 9.9 9.9 0 0 0-1.514 2.875c-.063.195-.073.243-.067.36a.71.71 0 0 0 .57.66c.07.015.324.016 8.969.016 7.986 0 8.904-.001 8.968-.012a.66.66 0 0 0 .367-.2.68.68 0 0 0 .204-.39c.022-.136.005-.235-.079-.486a9.98 9.98 0 0 0-9.821-6.775m.128 1.428a8.57 8.57 0 0 0-5.18 1.93 9.4 9.4 0 0 0-.977.937 8.6 8.6 0 0 0-1.391 2.133c0 .002 3.503.003 7.784.003s7.784-.001 7.784-.003l-.077-.161a8.6 8.6 0 0 0-1.314-1.972 10 10 0 0 0-.959-.922 8.57 8.57 0 0 0-4.885-1.93c-.18-.011-.645-.02-.785-.015" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Close"><path fill-rule="evenodd" d="m2.62 2.004-.06.013a.72.72 0 0 0-.52.457.6.6 0 0 0-.035.25.65.65 0 0 0 .121.396c.024.034 1.559 1.575 4.449 4.466L10.988 12l-4.42 4.422c-2.88 2.88-4.431 4.437-4.45 4.466a.7.7 0 0 0-.091.198.5.5 0 0 0-.022.19.6.6 0 0 0 .036.25c.071.2.234.361.433.433a.6.6 0 0 0 .25.036.65.65 0 0 0 .396-.121c.034-.024 1.575-1.559 4.466-4.449L12 13.012l4.414 4.413c2.891 2.89 4.432 4.425 4.466 4.449a.65.65 0 0 0 .396.121.64.64 0 0 0 .424-.127.72.72 0 0 0 .284-.433.4.4 0 0 1 .017-.069c.01-.02.01-.176-.001-.17q-.008.003-.008-.019a.8.8 0 0 0-.061-.203 1 1 0 0 0-.057-.094c-.024-.034-1.559-1.575-4.45-4.466L13.013 12l4.413-4.414c2.89-2.891 4.425-4.432 4.449-4.466a1 1 0 0 0 .057-.094.8.8 0 0 0 .06-.202c0-.013.005-.025.009-.028a.3.3 0 0 0 .008-.089q0-.082-.008-.079t-.008-.018a.6.6 0 0 0-.034-.143.75.75 0 0 0-.348-.39.6.6 0 0 0-.334-.072.5.5 0 0 0-.19.022.7.7 0 0 0-.198.091c-.029.019-1.586 1.57-4.466 4.45L12 10.987 7.586 6.575C4.695 3.685 3.154 2.15 3.12 2.126a.63.63 0 0 0-.38-.122 1 1 0 0 0-.12 0m-.617.712c0 .048.001.067.003.042V2.67c-.002-.023-.003-.002-.003.046m0 18.568c0 .048.001.067.003.042v-.088c-.002-.023-.003-.002-.003.046" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Instagram"><path d="M12 3.8c2.672 0 2.988.013 4.04.06.976.042 1.503.206 1.855.343.464.18.8.399 1.148.746.352.352.566.684.746 1.149.137.351.3.882.344 1.855.047 1.055.058 1.371.058 4.04 0 2.671-.011 2.987-.058 4.038-.043.977-.207 1.504-.344 1.856-.18.465-.398.8-.746 1.148a3.1 3.1 0 0 1-1.148.746c-.352.137-.883.301-1.856.344-1.055.047-1.371.059-4.039.059-2.672 0-2.988-.012-4.04-.059-.976-.043-1.503-.207-1.855-.344a3.1 3.1 0 0 1-1.148-.746 3.1 3.1 0 0 1-.746-1.148c-.137-.352-.3-.883-.344-1.856-.047-1.054-.058-1.37-.058-4.039 0-2.672.011-2.988.058-4.039.043-.976.207-1.504.344-1.855.18-.465.398-.801.746-1.149a3.1 3.1 0 0 1 1.148-.746c.352-.137.883-.3 1.856-.344 1.05-.046 1.367-.058 4.039-.058M12 2c-2.715 0-3.055.012-4.121.059-1.063.046-1.793.218-2.426.464A4.9 4.9 0 0 0 3.68 3.68a4.9 4.9 0 0 0-1.157 1.77c-.246.636-.418 1.362-.464 2.425C2.012 8.945 2 9.285 2 12s.012 3.055.059 4.121c.046 1.063.218 1.793.464 2.426.258.66.598 1.219 1.157 1.773a4.9 4.9 0 0 0 1.77 1.153c.636.246 1.362.418 2.425.465 1.066.046 1.406.058 4.121.058s3.055-.012 4.121-.058c1.063-.047 1.793-.22 2.426-.465a4.9 4.9 0 0 0 1.77-1.153 4.9 4.9 0 0 0 1.152-1.77c.246-.636.418-1.363.465-2.425.047-1.066.058-1.406.058-4.121s-.
1228011-3.055-.058-4.121c-.047-1.063-.22-1.793-.465-2.426A4.7 4.7 0 0 0 20.32 3.68a4.9 4.9 0 0 0-1.77-1.153c-.636-.246-1.363-.418-2.425-.465C15.055 2.013 14.715 2 12 2"/><path d="M12 6.863A5.14 5.14 0 0 0 6.863 12a5.138 5.138 0 0 0 10.273 0c0-2.836-2.3-5.137-5.136-5.137m0 8.469a3.333 3.333 0 1 1 .001-6.665A3.333 3.333 0 0 1 12 15.332m6.54-8.672a1.2 1.2 0 1 1-2.4 0 1.2 1.2 0 0 1 2.4 0"/></symbol> <symbol viewBox="0 0 24 24" id="Facebook"><path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.093 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.563V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.129 22 16.992 22 12"/></symbol> <symbol viewBox="0 0 24 24" id="Linkedin"><g clip-path="url(#a)"><path d="M20.52 2H3.477C2.66 2 2 2.645 2 3.441v17.114C2 21.352 2.66 22 3.477 22H20.52c.816 0 1.48-.648 1.48-1.441V3.44C22 2.645 21.336 2 20.52 2M7.934 19.043h-2.97V9.496h2.97zM6.449 8.195a1.72 1.72 0 1 1-.006-3.439 1.72 1.72 0 0 1 .006 3.44m12.594 10.848h-2.965v-4.64c0-1.106-.02-2.532-1.543-2.532-1.543 0-1.777 1.207-1.777 2.453v4.719H9.797V9.496h2.844v1.305h.039c.394-.75 1.363-1.543 2.804-1.543 3.004 0 3.559 1.976 3.559 4.547z"/></g><defs><clipPath id="a"><path d="M2 2h20v20H2z"/></clipPath></defs></symbol> <symbol viewBox="0 0 24 24" id="Tiktok"><path d="M14.56 2h-3.37v13.623c0 1.623-1.297 2.957-2.91 2.957s-2.91-1.334-2.91-2.957c0-1.594 1.268-2.898 2.824-2.956v-3.42C4.766 9.303 2 12.115 2 15.622 2 19.16 4.823 22 8.309 22s6.309-2.87 6.309-6.377V8.638a7.8 7.8 0 0 0 4.465 1.507v-3.42C16.548 6.638 14.56 4.55 14.56 2"/></symbol> <symbol viewBox="0 0 24 24" id="Youtube"><path d="M21.8 8.035s-.195-1.379-.796-1.984c-.762-.797-1.613-.801-2.004-.848C16.203 5 12.004 5 12.004 5h-.008S7.796 5 5 5.203c-.39.047-1.242.05-2.004.848-.601.605-.793 1.984-.793 1.984S2 9.656 2 11.273v1.516c0 1.617.2 3.238.2 3.238s.195 1.38.792 1.985c.762.797 1.762.77 2.207.855 1.602.152 6.801.2 6.801.2s4.203-.008 7-.208c.39-.047 1.242-.05 2.004-.847.601-.606.797-1.985.797-1.985S22 14.41 22 12.79v-1.516c0-1.617-.2-3.238-.2-3.238M9.935 14.63V9.008l5.402 2.82z"/></symbol> <symbol viewBox="0 0 24 24" id="Threads"><path d="M9.901 9.52a172 172 0 0 1-1.457-1.002c.945-1.352 2.191-1.878 3.915-1.878 1.219 0 2.254.409 2.992 1.185.739.776 1.16 1.886 1.257 3.305q.615.258 1.13.605c1.387.931 2.15 2.325 2.15 3.921 0 3.395-2.783 6.344-7.82 6.344-4.325 0-8.818-2.516-8.818-10.007C3.25 4.542 7.603 2 12.055 2c2.058 0 6.883.304 8.695 6.295l-1.7.441c-1.405-4.268-4.346-4.949-7.042-4.949-4.457 0-6.978 2.714-6.978 8.488 0 5.179 2.818 7.929 7.038 7.929 3.47 0 6.058-1.804 6.058-4.445 0-1.798-1.51-2.659-1.587-2.659-.295 1.543-1.085 4.138-4.555 4.138-2.023 0-3.767-1.398-3.767-3.228 0-2.612 2.48-3.559 4.438-3.559.732 0 1.618.05 2.079.143 0-.796-.675-2.16-2.375-2.16-1.563 0-1.958.506-2.459 1.085zm2.994 2.718c-2.55 0-2.88 1.087-2.88 1.77 0 1.097 1.304 1.46 2 1.46 1.275 0 2.584-.353 2.79-3.03a7.8 7.8 0 0 0-1.91-.2"/></symbol> </svg> <header class="ds-main-header__wrap open" id="dna-main-header"> <div v-if="showHeader || false" class="ds-main-header"> <nav class="ds-site-nav" aria-label="Sivustot"> <a href="https://www.dna.fi" class="ds-site-nav__link " >Yksityisille</a> <a href="https://www.dna.fi/yrityksille" class="ds-site-nav__link " >Yrityksille</a> <a href="https://www.dna.fi/wholesale" class="ds-site-nav__link current" aria-current="true">Wholesale</a> <a href="https://corporate.dna.fi/fi" class="ds-site-nav__link " >DNA Oyj</a> </nav> <div class="ds-main-header__navigation"> <a class="ds-main-header__area--logo" href="/wholesale" aria-label="Siirry etusivulle"> <img src="https://www.dna.fi/o/dna-fi-theme/images/DNA.svg" alt="DNA logo" height="60" width="60"/> </a> <nav class="ds-main-header__area--nav" v-bind:class="{'open' : navigationVisible, 'subview': selectedNav != ''}" aria-label="Päävalikko" :role="mobileNavigationActive ? 'dialog' : null" :aria-modal="mobileNavigationActive ? 'true' : null"> <button v-if="mobileMode" v-cloak class="ds-simple-btn ds-main-nav__close-mobile" v-on:click="toggleMobileMenu()" aria-label="Sulje päävalikko" type="button"> <svg role="img" aria-hidden="true" class="ds-icon ds-icon--24 ds-icon--pink"> <use href="#Close"></use> </svg> </button> <ul class="ds-main-nav__list--main"> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_57" v-bind:class="{'open' : isNavigationSectionOpen('57'), 'active' : isNavigationSectionActive('nav_57')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/yhteydet" id="d55e6d3d-60bf-a809-9969-414509ec3085" data-navpath="/Yhteydet" v-if="true || mobileMode" v-on:click="toggleNavigationItem('57', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('57'))" > <span>Yhteydet</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Yhteydet"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('57', false, $event)" aria-label="Sulje alavalikko Yhteydet"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Yhteydet</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-60" data-navpath="/Yhteydet/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-61" data-navpath="/Yhteydet/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/dna-tower" id="featured-62" data-navpath="/Yhteydet/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>DNA Tower</span> </a> </section> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_2" v-bind:class="{'open' : isNavigationSubSectionOpen('2'), 'active' : isNavigationSectionActive('nav_2')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Verkkopalvelut</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/verkkopalvelut" id="6cffa7a5-789e-7f90-071a-8ce782e19748" data-navpath="/Yhteydet/Verkkopalvelut" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('2', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('2'))" > <span>Verkkopalvelut</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Verkkopalvelut"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('2', $event)" aria-label="Sulje alavalikko Verkkopalvelut"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Verkkopalvelut</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_4" v-bind:class="{'active' : isNavigationSectionActive('nav_4')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut" id="39a1b5f8-cd40-4b89-fae4-768fef43e8ba" data-navpath="/Yhteydet/Verkkopalvelut/Kaikki verkkopalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut')" > <span>Kaikki verkkopalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_5" v-bind:class="{'active' : isNavigationSectionActive('nav_5')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/ethernet-vpn" id="19e49828-2126-263a-e2d5-0beeb71cca29" data-navpath="/Yhteydet/Verkkopalvelut/Ethernet VPN" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/ethernet-vpn')" > <span>Ethernet VPN</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_6" v-bind:class="{'active' : isNavigationSectionActive('nav_6')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/ip-vpn" id="7072
122814de-605f-9bf3-67b4-3cb5b4b5cd88" data-navpath="/Yhteydet/Verkkopalvelut/IP VPN" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/ip-vpn')" > <span>IP VPN</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_7" v-bind:class="{'active' : isNavigationSectionActive('nav_7')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/internet-access" id="99e078ec-1dd3-6a03-ed38-50c773707983" data-navpath="/Yhteydet/Verkkopalvelut/Internet Access" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/internet-access')" > <span>Internet Access</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_8" v-bind:class="{'active' : isNavigationSectionActive('nav_8')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/broadband" id="ef2a1fcf-4ec0-673d-8cd8-e78923ac2875" data-navpath="/Yhteydet/Verkkopalvelut/Broadband" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/broadband')" > <span>Broadband</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_10" v-bind:class="{'active' : isNavigationSectionActive('nav_10')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/interconnect" id="2ff1d19f-e457-43f6-9b5b-45362e1e59a4" data-navpath="/Yhteydet/Verkkopalvelut/Interconnect" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/interconnect')" > <span>Interconnect</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_30" v-bind:class="{'open' : isNavigationSubSectionOpen('30'), 'active' : isNavigationSectionActive('nav_30')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Kapasiteetti ja infra</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra" id="3028ec83-ba9e-0784-da5d-f01365e68ff5" data-navpath="/Yhteydet/Kapasiteetti ja infra" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('30', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('30'))" > <span>Kapasiteetti ja infra</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Kapasiteetti ja infra"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('30', $event)" aria-label="Sulje alavalikko Kapasiteetti ja infra"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Kapasiteetti ja infra</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_29" v-bind:class="{'active' : isNavigationSectionActive('nav_29')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra" id="71812088-8d44-a6bb-9b51-82b9dcc42ea8" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kaikki kapasiteetti- ja infrapalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra')" > <span>Kaikki kapasiteetti- ja infrapalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_31" v-bind:class="{'active' : isNavigationSectionActive('nav_31')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys" id="79d37ab4-27c8-3a4d-29fb-caaa77d7f26f" data-navpath="/Yhteydet/Kapasiteetti ja infra/Aallonpituus siirtoyhteys" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys')" > <span>Aallonpituus siirtoyhteys</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_32" v-bind:class="{'active' : isNavigationSectionActive('nav_32')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys" id="9ca07917-b462-c9c8-5946-6f92c27f29ee" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kiinteä kuituyhteys" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys')" > <span>Kiinteä kuituyhteys</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_33" v-bind:class="{'active' : isNavigationSectionActive('nav_33')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet" id="6de65fb4-7db1-e0c4-f3dd-e320d489abfe" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kaapelinsijoitusoikeudet" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet')" > <span>Kaapelinsijoitusoikeudet</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_34" v-bind:class="{'active' : isNavigationSectionActive('nav_34')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/laitetilat" id="f82a75e1-cecc-4c97-4718-e0d933b1b909" data-navpath="/Yhteydet/Kapasiteetti ja infra/Laitetilat" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/laitetilat')" > <span>Laitetilat</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_35" v-bind:class="{'active' : isNavigationSectionActive('nav_35')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/ip-transit" id="717be16c-2b47-b783-91d5-3731313bddba" data-navpath="/Yhteydet/Kapasiteetti ja infra/IP Transit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/ip-transit')" > <span>IP Transit</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_38" v-bind:class="{'open' : isNavigationSubSectionOpen('38'), 'active' : isNavigationSectionActive('nav_38')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Tietoturva</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/tietoturva" id="765e329c-aa73-0e3e-0acd-83171ae6960f" data-navpath="/Yhteydet/Tietoturva" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('38', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('38'))" > <span>Tietoturva</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Tietoturva"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('38', $event)" aria-label="Sulje alavalikko Tietoturva"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tietoturva</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_37" v-bind:class="{'active' : isNavigationSectionActive('nav_37')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tietoturva/ddos-protection" id="ccca480e-bd96-7b56-cee5-5ae013f46e4d" data-navpath="/Yhteydet/Tietoturva/DDoS Protection" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoturva/ddos-protection')" > <span>DDoS Protection</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-60" data-navpath="/Yhteydet/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-61" data-navpath="/Yhteydet/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/dna-tower" id="featured-62" data-navpath="/Yhteydet/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>DNA Tower</span> </a> </section> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_58" v-bind:class="{'open' : isNavigationSectionOpen('58'), 'active' : isNavigationSectionActive('nav_58')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/puhe-ja-mobiili1" id="03144987-ff22-f4ef-b36f-4d1d5cf2b473" data-navpath="/Puhe ja mobiil
1228i" v-if="true || mobileMode" v-on:click="toggleNavigationItem('58', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('58'))" > <span>Puhe ja mobiili</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Puhe ja mobiili"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('58', false, $event)" aria-label="Sulje alavalikko Puhe ja mobiili"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Puhe ja mobiili</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-70" data-navpath="/Puhe ja mobiili/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-72" data-navpath="/Puhe ja mobiili/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/yhteenliittaminen" id="featured-27" data-navpath="/Puhe ja mobiili/Yhteenliittäminen" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yhteenliittaminen')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Yhteenliittäminen</span> </a> </section> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_25" v-bind:class="{'open' : isNavigationSubSectionOpen('25'), 'active' : isNavigationSectionActive('nav_25')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Mobiili</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/mobiili" id="82b62d10-2c7c-b4b6-34c5-6ba1728b88a6" data-navpath="/Puhe ja mobiili/Mobiili" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('25', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('25'))" > <span>Mobiili</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Mobiili"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('25', $event)" aria-label="Sulje alavalikko Mobiili"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Mobiili</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_24" v-bind:class="{'active' : isNavigationSectionActive('nav_24')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili" id="f2fdb1ce-c46c-b41e-bec5-56b7c651ec06" data-navpath="/Puhe ja mobiili/Mobiili/Kaikki mobiilipalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili')" > <span>Kaikki mobiilipalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_26" v-bind:class="{'active' : isNavigationSectionActive('nav_26')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili/mvno" id="af9f767a-3121-f46d-c909-b85e52b99b3e" data-navpath="/Puhe ja mobiil
1228i/Mobiili/MVNO" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili/mvno')" > <span>MVNO</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_47" v-bind:class="{'active' : isNavigationSectionActive('nav_47')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili/roaming" id="dbb2cee5-d751-f30b-7928-201c80aafe10" data-navpath="/Puhe ja mobiili/Mobiili/Roaming" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili/roaming')" > <span>Roaming</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_23" v-bind:class="{'open' : isNavigationSubSectionOpen('23'), 'active' : isNavigationSectionActive('nav_23')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Viestintä</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/viestinta" id="63c503a3-35fa-e1bd-b8e6-94b75f211ff6" data-navpath="/Puhe ja mobiili/Viestintä" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('23', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('23'))" > <span>Viestintä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Viestintä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('23', $event)" aria-label="Sulje alavalikko Viestintä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Viestintä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_19" v-bind:class="{'active' : isNavigationSectionActive('nav_19')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta" id="26bf030c-4a53-2601-5cd5-8de8e5961c14" data-navpath="/Puhe ja mobiili/Viestintä/Kaikki viestintäratkaisut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta')" > <span>Kaikki viestintäratkaisut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_21" v-bind:class="{'active' : isNavigationSectionActive('nav_21')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/sovellusviestit" id="d4fd700b-b260-e1ee-21df-4e06bb03fdca" data-navpath="/Puhe ja mobiili/Viestintä/Sovellusviestit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/sovellusviestit')" > <span>Sovellusviestit</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_22" v-bind:class="{'active' : isNavigationSectionActive('nav_22')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/sms-gateway" id="597698a5-0987-eee0-9f33-057234b8d7cb" data-navpath="/Puhe ja mobiili/Viestintä/SMS Gateway" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/sms-gateway')" > <span>SMS Gateway</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_89" v-bind:class="{'active' : isNavigationSectionActive('nav_89')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/rcs-viestinta" id="9d43e680-1566-83de-b9ad-89d3e537a5a6" data-navpath="/Puhe ja mobiili/Viestintä/RCS for Business Messaging" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/rcs-viestinta')" > <span>RCS for Business Messaging</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_16" v-bind:class="{'open' : isNavigationSubSectionOpen('16'), 'active' : isNavigationSectionActive('nav_16')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Numerointi</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/numerointi" id="8af84900-c3f1-e396-d1c5-429d18d7ef95" data-navpath="/Puhe ja mobiil
1228i/Numerointi" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('16', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('16'))" > <span>Numerointi</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Numerointi"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('16', $event)" aria-label="Sulje alavalikko Numerointi"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Numerointi</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_13" v-bind:class="{'active' : isNavigationSectionActive('nav_13')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi" id="cb32eea5-6391-a190-2358-f9b413be4a2f" data-navpath="/Puhe ja mobiili/Numerointi/Kaikki numerointipalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi')" > <span>Kaikki numerointipalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_18" v-bind:class="{'active' : isNavigationSectionActive('nav_18')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot" id="646cf960-59b5-f97c-a643-8d00f9e67765" data-navpath="/Puhe ja mobiili/Numerointi/Virtuaalimobiilinumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot')" > <span>Virtuaalimobiilinumerot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_14" v-bind:class="{'active' : isNavigationSectionActive('nav_14')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot" id="9b2edfc7-0d93-4bf8-2cca-c5f5e1278b3e" data-navpath="/Puhe ja mobiili/Numerointi/Sisäänsoittonumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot')" > <span>Sisäänsoittonumerot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_15" v-bind:class="{'active' : isNavigationSectionActive('nav_15')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/ilmaisnumerot" id="5dcb7222-17c8-df34-f0a3-70e767257feb" data-navpath="/Puhe ja mobiili/Numerointi/Ilmaisnumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/ilmaisnumerot')" > <span>Ilmaisnumerot</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-70" data-navpath="/Puhe ja mobiili/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-72" data-navpath="/Puhe ja mobiili/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/yhteenliittaminen" id="featured-27" data-navpath="/Puhe ja mobiil
1228i/Yhteenliittäminen" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yhteenliittaminen')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Yhteenliittäminen</span> </a> </section> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_12" v-bind:class="{'open' : isNavigationSectionOpen('12'), 'active' : isNavigationSectionActive('nav_12')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/operaattoreille" id="9684aae4-baa5-d620-0928-3f6af93dd148" data-navpath="/Operaattoreille" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/operaattoreille')" > <span>Operaattoreille</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_90" v-bind:class="{'open' : isNavigationSectionOpen('90'), 'active' : isNavigationSectionActive('nav_90')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/datakeskustoimijoille" id="ac5fd380-0004-547f-b163-5f7605f7fa1a" data-navpath="/Datakeskustoimijoille" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/datakeskustoimijoille')" > <span>Datakeskustoimijoille</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_73" v-bind:class="{'open' : isNavigationSectionOpen('73'), 'active' : isNavigationSectionActive('nav_73')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/tietoa-meista" id="ef44b4cd-ec43-6fbc-9ee6-3eff3fb1b580" data-navpath="/Tietoa meistä" v-if="true || mobileMode" v-on:click="toggleNavigationItem('73', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('73'))" > <span>Tietoa meistä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Tietoa meistä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('73', false, $event)" aria-label="Sulje alavalikko Tietoa meistä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tietoa meistä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_39" v-bind:class="{'open' : isNavigationSubSectionOpen('39'), 'active' : isNavigationSectionActive('nav_39')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Tutustu meihin</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/tutustu-meihin" id="3186322b-a4ca-8fc6-b01c-d2de4072f024" data-navpath="/Tietoa meistä/Tutustu meihin" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('39', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('39'))" > <span>Tutustu meihin</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Tutustu meihin"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('39', $event)" aria-label="Sulje alavalikko Tutustu meihin"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tutustu meihin</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_74" v-bind:class="{'active' : isNavigationSectionActive('nav_74')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tutustu-meihin" id="44ffe4d7-dada-acdd-ea2e-f0229630adaa" data-navpath="/Tietoa meistä/Tutustu meihin/DNA Wholesale" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tutustu-meihin')" > <span>DNA Wholesale</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_41" v-bind:class="{'active' : isNavigationSectionActive('nav_41')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/dna-tower" id="bc24480f-0d05-2517-3d56-31760b5c963d" data-navpath="/Tietoa meistä/Tutustu meihin/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <span>DNA Tower</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_45" v-bind:class="{'active' : isNavigationSectionActive('nav_45')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="15195119-802d-c48b-0ee1-5df5dc4831fb" data-navpath="/Tietoa meistä/Tutustu meihin/DNA:n verkot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <span>DNA:n verkot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_82" v-bind:class="{'active' : isNavigationSectionActive('nav_82')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/artikkelit" id="b29a8b62-f43a-67bb-3651-1e256e81f0c3" data-navpath="/Tietoa meistä/Tutustu meihin/Artikkelit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/artikkelit')" > <span>Artikkelit</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_52" v-bind:class="{'open' : isNavigationSubSectionOpen('52'), 'active' : isNavigationSectionActive('nav_52')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Ota yhteyttä</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/ota-yhteytta" id="1f3211c1-cf11-b800-f9e2-34aa30e6f36b" data-navpath="/Tietoa meistä/Ota yhteyttä" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('52', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('52'))" > <span>Ota yhteyttä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Ota yhteyttä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('52', $event)" aria-label="Sulje alavalikko Ota yhteyttä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Ota yhteyttä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_81" v-bind:class="{'active' : isNavigationSectionActive('nav_81')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/ota-yhteytta" id="9107f987-02db-988b-732b-76150c3006b1" data-navpath="/Tietoa meistä/Ota yhteyttä/Yhteystiedot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <span>Yhteystiedot</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_55" v-bind:class="{'open' : isNavigationSubSectionOpen('55'), 'active' : isNavigationSectionActive('nav_55')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Itsepalvelu</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/itsepalvelu" id="ffc43ca6-a4fe-05a8-40cc-23fc2c4da6e6" data-navpath="/Tietoa meistä/Itsepalvelu" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('55', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('55'))" > <span>Itsepalvelu</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Itsepalvelu"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('55', $event)" aria-label="Sulje alavalikko Itsepalvelu"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Itsepalvelu</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_75" v-bind:class="{'active' : isNavigationSectionActive('nav_75')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/itsepalvelu" id="a4f0539a-1f62-91d1-6c89-5a0399d94481" data-navpath="/Tietoa meistä/Itsepalvelu/Kaikki itsepalvelukanavat" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/itsepalvelu')" > <span>Kaikki itsepalvelukanavat</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_54" v-bind:class="{'active' : isNavigationSectionActive('nav_54')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/dna-wholesale-online" id="ecc877b2-c134-9c0b-3bb5-2f7270e02249" data-navpath="/Tietoa meistä/Itsepalvelu/DNA Wholesale Online" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-wholesale-online')" > <span>DNA Wholesale Online</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_56" v-bind:class="{'active' : isNavigationSectionActive('nav_56')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/yritysdna" id="75cc73c0-e4fb-1223-8527-048f0ff08705" data-navpath="/Tietoa meistä/Itsepalvelu/YritysDNA" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yritysdna')" > <span>YritysDNA</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> </li> </ul> </div> </li> </ul> </nav> <div class="ds-main-header__area--icons"> <div class="ds-main-nav__icon" v-bind:class="{'active' : languageMenuActive}"> <button class="ds-main-nav__icon-content" v-on:click="toggleLanguageMenu()" v-bind:aria-expanded="String(languageMenuActive)"> <div class="sr-only"> <span lang="en">Change language. Current language FI</span> <span lang="fi">Vaihda kieli. Nykyinen kieli FI</span> </div> <svg class="ds-icon" role="img" alt="" aria-hidden="true"> <use href="#Globe"></use> </svg> <span aria-hidden="true">FI</span> </button> <div class="dna-language__menu ds-main-nav__dropdown" v-show="languageMenuActive"> <a href="/c/portal/update_language?p_l_id=9161297&languageId=en_US&persistState=false" data-language-id="en_US" lang="en" aria-label="EN, customer support in English"> EN </a> </div> <span class="ds-main-nav__icon-caret"></span> </div> <div class="ds-main-nav__icon" v-bind:class="{'active' : searchActive}"> <button class="ds-main-nav__icon-content" v-on:click="toggleSearch()" v-bind:aria-expanded="String(searchActive)" aria-label="Haku"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#Search"></use> </svg> <span>Haku</span> </button> <div class="ds-main-nav__search ds-main-nav__dropdown ds-main-nav__dropdown--full" v-show="searchActive"> <div class="algolia-search algolia-quicksearch__container js-algolia-search-container"> <div id="algoliaQuickSearch" class="js-algolia-search__app"> <algolia-search-component :test-portlet="false" :result-page="false" aria-label="Pikahaku" search-result-for-query-translation="tulos haulla" search-results-for-query-translation="tulosta haulla" query="" :ranking-enabled="false" :page-size="7" :max-site-dependant-search-prop="3" language="fi" promotion-translation="Katso edullisempi DNA Asiakasetuhinta" algolia-site-index-name-prop="dna_main_index_prod_wholesale" algolia-search-index-name="dna_main_index_prod" algolia-search-api-key="40d475f3c73895ec0cf90311c9ed079d" algolia-application-id="ZOGF71LKCH" site-name="Wholesale" result-page-url="https://www.dna.fi/haku" facets="Laitteet,Palvelut,Tukisivut,Vinkit,Uutiset"> </algolia-search-component> </div> </div> </div> <span class="ds-main-nav__icon-caret"></span> </div> <!-- SSO-DNA-HEADER --> <div class="ds-main-nav__icon ds-main-nav__icon--login ds-main-nav__icon--unresolved" v-bind:class="{'active' : loginMenuActive, 'hilite' : userLoggedIn, 'ds-main-nav__icon--resolved' : loginDataFetched}" v-if="loginMenuVisible"> <button v-if="!loginDataFetched" class="ds-main-nav__icon-content ds-main-nav__login-button ds-main-nav__login-separator" aria-label="Kirjautumistietoja ladataan"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#User"></use> </svg> <span class="ds-main-nav__icon-text--limited unresolved-hidden">&nbsp;</span> </button> <template v-if="loginDataFetched && userLoggedIn"> <button class="ds-main-nav__icon-content ds-main-nav__login-button ds-main-nav__login-separator" v-on:click="toggleLoginMenuActive()" v-bind:aria-expanded="String(loginMenuActive)" v-bind:aria-label="userName + ', linkit omiin palveluihin'"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#User"></use> </svg> <span class="ds-main-nav__icon-text--limited unresolved-hidden" v-html="userName"></span> </button> </template> <template v-else-if="loginDataFetched"> <button class="ds-btn ds-btn--primary ds-btn--small ds-main-nav__login-button" v-on:click="toggleLoginMenuActive()" v-bind:aria-expanded="String(loginMenuActive)"> Kirjaudu </button> </template> <login-component v-show="loginMenuActive" ssoaddress="https://pass.dna.fi/oauth/v2/oauth-authorize" :headermobilemode="mobileMode" @login="onLogin" @invalidloginsettings="onInvalidLoginSettings" @logindialogopencall="onLoginDialogOpenCall"></login-component> <span class="ds-main-nav__icon-caret"></span> </div> <!-- SSO-DNA-HEADER end --> <div class="ds-main-nav__icon ds-main-nav__icon--mobile" v-bind:class="{'active' : mobileNavigationActive}"> <button class="ds-main-nav__icon-content ds-main-nav__menu-button" v-on:click="toggleMobileMenu()" v-bind:aria-expanded="String(mobileNavigationActive)" v-bind:aria-label="mobileNavigationActive ? 'Sulje päävalikko' : 'Avaa päävalikko'"> <svg role="img" aria-hidden="true" class="ds-icon ds-main-nav__icon--menu"> <use href="#Menu"></use> </svg> <svg role="img" aria-hidden="true" class="ds-icon ds-main-nav__icon--close"> <use href="#Close"></use> </svg> </button> </div> </div> </div> </div> <template v-else> <login-component v-show="loginMenuActive" ssoaddress="https://pass.dna.fi/oauth/v2/oauth-authorize" :headermobilemode="mobileMode" @login="onLogin" @invalidloginsettings="onInvalidLoginSettings" @logindialogopencall="onLoginDialogOpenCall"></login-component> </template> </header> 
1228<script type="text/x-template" id="algolia-template"> <div> <form @submit.prevent="moveToResultPage()" name="searchFm" :aria-label="ariaLabel"> <div v-bind:class="{'algolia-search__search-area-wrapper': resultPage,'algolia-quicksearch__search-area-wrapper': !resultPage}"> <div class="algolia-search__search-field-wrapper"> <label :for="searchFieldId" class="sr-only">Etsi sivustolta</label> <input :id="searchFieldId" v-model="currentQuery" type="search" autocorrect="off" autocapitalize="none" autocomplete="off" spellcheck="false" @keydown="handleInputKeydown" class="algolia-search__search-input js-header_search-input-algolia" placeholder='Etsi sivustolta'/> <button v-if="getMainStoreQuery() != ''" v-on:click="clearQuery()" type="reset" ref="algoliaClearRef" class="algolia-search__search-clear js-header_search-clear-algolia"> <svg role="img" aria-hidden="true" class="dna-icon algolia-search__search-clear-icon ds-icon"> <path d="M20.019 21.536l1.767-1.767L1.987-.031.22 1.739z"/><path d="M20.019-.03l1.767 1.767-19.799 19.8L.22 19.768z"/> </svg> <span class="sr-only">Tyhjennä</span> </button> <button v-if="getMainStoreQuery() === ''" v-on:click="focusInputField" class="algolia-search__search-button ds-simple-btn" type="submit" > <svg role="img" class="algolia-search__search-icon ds-icon" aria-hidden="true"> <use href="#Search"></use> </svg> <span class="sr-only">Hae</span> </button> </div> <div class="algolia-search__results" v-bind:class="{'algolia-search__results--fullpage' : resultPage, 'algolia-quicksearch__results' : !resultPage}" v-if="getMainStoreQuery() != ''" :data-insights-index="algoliaSiteIndexName" > <div v-bind:class="{'algolia-quicksearch__results-container': !resultPage,'algolia-quicksearch__results-container--noresults' : (!getMainStoreResults().length && !resultPage)}"> <div v-if="getTotalResults() > 0" v-bind:class="{'algolia-search__infotext-container': resultPage, 'algolia-quicksearch__search-results-infotext': !resultPage}"> <algolia-search-category-buttons :product-category-json='{ "Puhelimet":{ "name":"Puhelimet", "url":"https://kauppa.dna.fi/laitteet/puhelimet-ja-lisalaitteet/puhelimet" }, "MOBILE_PHONES":{ "name":"Puhelimet", "url":"https://kauppa.dna.fi/laitteet/puhelimet-ja-lisalaitteet/puhelimet" }, "Tabletit":{ "name":"Tabletit", "url":"https://kauppa.dna.fi/laitteet/tabletit-ja-lisalaitteet/tabletit" }, "TABLETS":{ "name":"Tabletit", "url":"https://kauppa.dna.fi/laitteet/tabletit-ja-lisalaitteet/tabletit" }, "LAPTOPS":{ "name":"kannettavat tietokoneet", "url":"https://kauppa.dna.fi/laitteet/tietokoneet-ja-lisalaitteet/kannettavat-tietokoneet" }, "DESKTOP_COMPUTERS":{ "name":"pöytätietokoneet", "url":"https://kauppa.dna.fi/laitteet/tietokoneet-ja-lisalaitteet/poytatietokoneet" } }' all-translation='Kaikki' :search-store-results="getMainStoreResults()"></algolia-search-category-buttons> </div> <div v-if="getQuery() != ''"> <algolia-search-facets :result-text="resultText" :result-page="resultPage" product-translation="Laitteet" content-translation="Palvelut" posts-translation="Tukisivut" blogs-translation="Vinkit" rss-translation="Uutiset" :active-facet-name="activeFacetName" @facetChange="onFacetChange" > </algolia-search-facets> </div> <div v-else-if="resultPage" class="algolia-search__infotext-container"> <h2>Hakuasi vastaavia tuloksia ei löytynyt</h2> <p>Kokeile muokata hakusanojasi ja tee uusi haku</p> </div> <div v-else class="algolia-quicksearch__search-results-infotext"> Ei tuloksia </div> <template v-if="searchStore.lastResults?._rawResults?.length > 0"> <template v-for="(result, index) in results" :key="result.objectID"> <a @click.prevent="pushEvent(result, index, 'clickedObjectIDsAfterSearch')" :href="result.url" :data-insights-object-id="result.objectID" :data-insights-position="index + 1" :data-insights-query-id="searchStore.lastResults._rawResults[0].queryID" :data-objectid="result.objectID" :data-position="index + 1" :target="isVideo(result) ? '_blank' : '_self'" class="algolia-search-result" v-if="(promotionalResult && promotionalResult.length == 0) || (promotionalResult && promotionalResult.length > 0 && result.objectID != promotionalResult[0].objectID) || index == 0"> <algolia-search-result-image :og-image='result.ogImage' :entry-type='result.entryType' default-icon-url='#File' :use-default-icon-for-websites='true'></algolia-search-result-image> <div class="algolia-search-result__content"> <h3 class="algolia-search-result__title h4" v-html="getTitle(result)"></h3> <div class="algolia-search-result__ingresstext" v-html="getIngressText(result)"></div> <div class="algolia-search-result__prices"> <h4 class="algolia-search-result__productprice" v-if="isProduct(result)" v-html="getDisplayPrice(result)"></h4> <div class="algolia-search-result__productprice algolia-search-result__productprice--loyalty" v-if="isProduct(result) && result.customerLoyaltyPrice" v-html="getCustomerLoyaltyPrice(result)"></div> </div> </div> </a> </template> </template> </div> <div class="algolia-search__show-all-footer" v-if="getTotalResults() > 0 && !resultPage"> <button type="submit" class="ds-btn ds-btn--primary ds-btn--full"><span>Näytä kaikki hakutulokset (<span v-html="totalResultsText"></span>)</span></button> </div> <div v-if="results && results.length < getMainStoreTotalResultsCount() && resultPage" class="algolia-search__more-results"> <a v-on:click.stop.prevent="loadMoreResults()" href="#" class="dlsg-btn algolia-search__more-results-btn"> <span>Näytä lisää</span> </a> </div> </div> </div> </form> </div> </script>
1228 <!-- SSO-DNA-HEADER --> 
1228<script type="text/x-template" id="login-template"> <div class="dna-login__root"> <div v-if="showHeader" class="dna-login__menu ds-main-nav__dropdown ds-main-nav__dropdown--left"> <template v-if="loggedIn"> <div class="dna-login__username"> <span v-html="userInfo.givenname" class="dna-login__givenname"></span> <span v-html="userInfo.surname" class="dna-login__surnname"></span> </div> <div v-if="b2cLinksVisible" class="dna-login__links dna-login__links--b2c"> <a class="dna-login__link" v-for="link in navigation" v-bind:href="link.url"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <div v-if="b2bLinksVisible" class="dna-login__links dna-login__links--b2b"> <a class="dna-login__link" v-for="link in userInfo.businessServiceSet" v-bind:href="link.url" target="_blank"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <button v-on:click="logout()" class="ds-btn ds-btn--small ds-btn--full"> <span>Kirjaudu ulos</span> </button> <button v-if="userHasBothRoles && b2bLinksVisible" class="ds-btn ds-btn--small ds-btn--full" v-on:click="switchLinkList = !switchLinkList"> <span>Henkilöasiakkaan palvelut</span> </button> <button v-if="userHasBothRoles && b2cLinksVisible" class="ds-btn ds-btn--small ds-btn--full" v-on:click="switchLinkList = !switchLinkList"> <span>Siirry yrityspalveluihin</span> </button> <p class="dna-login__switchtext" v-if="!userHasBothRoles && isB2cPage && userInfo.isBusinessUser">Halutessasi voit siirtyä henkilöasiakkaan Minun palveluuni, jossa voit hallita omia palveluitasi. Kirjaudu ensin ulos.</p> <p class="dna-login__switchtext" v-if="!userHasBothRoles && !isB2cPage && userInfo.isPrivateUser">Jos haluat käyttää yrityspalveluita toisella tunnuksella, kirjaudu ensin ulos.</p> </template> <template v-else> <template v-if="currentSite === 'private'"> <button class="ds-btn ds-btn--primary ds-btn--full" v-on:click="openLogin()"><span>Kirjaudu sisään</span></button> <div class="dna-login__links"> <a class="dna-login__link" v-for="link in navigation" v-bind:href="link.url" v-on:click.prevent="openLoginToPage(link.title, link.url)"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <a class="ds-btn ds-btn--small ds-btn--full" href="http://m.prepaid.dna.fi/"><span>Prepaid-asiakkaan itsepalvelu</span></a> <a class="ds-btn ds-btn--small ds-btn--full" href="https://www.dna.fi/yrittajat#itsepalvelu"><span>Yrittäjänä asiointi</span></a> </template> <template v-if="currentSite === 'business'"> <a class="ds-btn ds-btn--primary ds-btn--full" href="https://yritysdna.dna.fi"><span>Kirjaudu YritysDNA:han</span></a> <a class="ds-btn ds-btn--secondary ds-btn--small ds-btn--full" href="https://www.dna.fi/yrityksille/itsepalvelu/yritysdna"><span>Hae tunnuksia</span></a> <div class="dna-login__explanation"><ul><li>Hallinnoi ja tilaa tuotteita ja palveluita</li><li>Suosittelemme YritysDNA:n käyttöä <b>tietokoneen selaimella</b></li></ul></div> <hr style="margin: 0;border: 0; border-top: 1px solid #D4D2CE;"> <a class="ds-btn ds-btn--small ds-btn--full" href="https://vaihde.dna.fi"><span>Kirjaudu Vaihdepalveluun</span></a> <a class="ds-btn ds-btn--small ds-btn--full" href="https://yrityspalvelut.dna.fi"><span>Muut itsepalvelukanavat</span></a> </template> <template v-if="currentSite === 'wholesale'"> <a class="ds-btn ds-btn--primary ds-btn--full" href="https://yritysdna.dna.fi/"><span>Kirjaudu YritysDNA:han</span></a> <div class="dna-login__explanation"><p><b>Yrityspalveluissa voit esimerkiksi:</b></p><ul><li>
1228Tarkastella nykyisiä palveluita, tehdä palvelupyyntöjä sekä hallinnoida käyttäjiä</li><li>Tarkastella laskuja ja raportteja sekä ottaa yhteyttä asiakaspalveluun</li><li>Kirjautua muihin DNA:n verkkopalveluihin</li></ul></div> <a class="ds-btn ds-btn--small ds-btn--full" href="https://uutiskirje.dna.fi/webApp/YLT_ydnatunnuslomake_tukku"><span>Hae tunnuksia</span></a> </template> <!-- Login options modal --> <dialog class="ds-modal ds-modal--dialog ds-modal--medium ds-modal--login" ref="loginOptionsDialog" aria-labelledby="login-options-title"> <div class="ds-modal__container"> <button class="ds-modal__close" v-on:click="$emit('close')" aria-label="translations['dialog.close.aria.label']"> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Close"></use> </svg> </button> <div class="ds-modal__content basic-web-content"> <div class="bank-login__wrap--narrow"> <h3 class="bank-login__title" id="login-options-title">Valitse kirjautumistapa</h3> <p>Sinut ohjataan pankkisi kirjautumissivulle tai Mobiilivarmenteen kirjautumisnäkymään. <a href="https://www.dna.fi/tuki/asiakkuus/kirjautuminen">Lue lisää kirjautumisesta.</a></p><p class="basic-web-content">Tarkistamme ostosten yhteydessä asiakkaan osoite- ja luottotiedot Digi- ja väestötietoviraston järjestelmästä sekä Intrum Luottotietopalvelusta. Pankkitunnuksiasi ei luovuteta DNA:lle eikä pankkitiliäsi veloiteta. Kirjautumisen yhteydessä tarkistuksia ei tehdä.</p> <p class="ds-text--small"></p> <div class="bank-login__grid"> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-op-1&prompt=login')" aria-label="Kirjaudu sisään Osuuspankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/op-0923.png" alt="Osuuspankki logo"> <span>Osuuspankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-nordea-1&prompt=login')" aria-label="Kirjaudu sisään Nordea tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/nordea-0923.png" alt="Nordea logo"> <span>Nordea</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-danskebank-1&prompt=login')" aria-label="Kirjaudu sisään Danske Bank tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/danskebank-0923.png" alt="Danske Bank logo"> <span>Danske Bank</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-spankki-1&prompt=login')" aria-label="Kirjaudu sisään S-Pankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/spankki-0923.png" alt="S-Pankki logo"> <span>S-Pankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-sp-1&prompt=login')" aria-label="Kirjaudu sisään Säästöpankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/saastopankki-0923.png" alt="Säästöpankki logo"> <span>Säästöpankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-pop-1&prompt=login')" aria-label="Kirjaudu sisään Pop Pankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/poppankki-0923.png" alt="Pop Pankki logo"> <span>Pop Pankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-omasp-1&prompt=login')" aria-label="Kirjaudu sisään Oma Säästöpankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/omasp-0923.png" alt="Oma Säästöpankki logo"> <span>Oma Säästöpankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-aktia-1&prompt=login')" aria-label="Kirjaudu sisään Aktia tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/aktia-0923.png" alt="Aktia logo"> <span>Aktia</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-alandsbanken-1&prompt=login')" aria-label="Kirjaudu sisään Ålandsbanken tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/alandsbanken-0923.png" alt="Ålandsbanken logo"> <span>Ålandsbanken</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-mobileid-1&prompt=login')" aria-label="Kirjaudu sisään Mobiilivarmenne tunnuksilla"> <svg role="img" aria-hidden="true" class="ds-icon ds-icon--black"><use href="#Mobiilivarmenne"></use></svg> <span>Mobiilivarmenne</span> </a> </div> </div> </div> </div> </dialog> </template> </div> <dialog id="inactivityWarning" class="ds-modal ds-modal--dialog ds-modal--medium" style="min-height: unset;" ref="dialog"> <div class="ds-modal__container"> <div class="ds-modal__title"> <h2 id="ds-modal-title">Haluatko jatkaa asiointia?</h2> </div> <div class="ds-modal__content basic-web-content"> Jos et halua jatkaa asiointia dna.fi -palvelussa, sinut kirjataan ulos automaattisesti <span style="font-weight: 700;">2 minuutin</span> kuluttua. </div> </div> <div class="ds-modal__bottom-bar"> <div class="ds-btn-group ds-btn-group--confirm"> <button class="ds-btn ds-btn--secondary" v-on:click="logout()">Kirjaudu ulos</button> <button class="ds-btn ds-btn--primary" v-on:click="closeInactivityWarning()">Jatka asiointia</button> </div> </div> </dialog> </div> </script>
1228 <!-- SSO-DNA-HEADER end --> 
1228<script type="text/x-template" id="cart-price"> <p v-if="discountInfo != ''" class="ds-minicart-item__discount-info">{{ discountInfo }}</p> <p class="ds-minicart-item__price" :class="{'ds-minicart-item__price--discount': hasDiscount}"> {{price}} <span class="ds-minicart-item__price-suffix">&euro;<template v-if="isMonthlyPrice">/kk</template><template v-if="pricePeriodLength > 0">/{{pricePeriodLength}} kk</template></span> </p> </script>
1228 
1228<script type="text/x-template" id="cart-entry"> <section class="ds-minicart-item__wrap" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-label ds-label--offer" v-if="discountLabel != 0">{{ discountLabel }}</div> <div class="ds-minicart-item"> <div class="ds-minicart-item__child" v-if="entry.parentItemId"> <svg role="img" class="ds-icon ds-icon--24 ds-icon--pink" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowBendDownRight"></use> </svg> </div> <div class="ds-minicart-item__img"> <img v-if="productImg" :src="productImg" alt="" /> </div> <div class="ds-minicart-item__content"> <component :is="productUrl ? 'a' : 'h3'" :href="productUrl ? productUrl : null" class="ds-minicart-item__title" :class="{'ds-minicart-item__link' : productUrl}" :id="titleId"> {{entry.product.name}} <span v-if="shortDescription" class="ds-minicart-item__title-details">{{shortDescription}}</span> </component> <div class="ds-minicart-item__price-section"> <cart-price :hasDiscount="hasDiscount" :discountInfo="discountInfo" :price="getSinglePriceWithDecimalsNumbersOnly(displayPrice)" :isMonthlyPrice="isMonthlyPrice" :pricePeriodLength="pricePeriodLength" /> <p v-if="afterThatPrice" class="ds-minicart-item__infotext"> jatkossa&nbsp; {{getSinglePriceWithDecimals(afterThatPrice)}}/kk </p> <p v-if="isMonthlyPrice && isFixedTerm" class="ds-minicart-item__infotext"> {{contractLength}} kk sopimus, yht. {{getSinglePriceWithDecimals(getContractTotalPrice)}} </p> <p v-else-if="isMonthlyPrice" class="ds-minicart-item__infotext"> Ei määräaikaa </p> <p v-if="openingFee" class="ds-minicart-item__infotext"> Avausmaksu&nbsp;{{getSinglePriceWithDecimals(openingFee)}} </p> <p v-if="entry.promotionText" class="ds-minicart-item__infotext"> {{entry.promotionText}} </p> </div> </div> <div class="ds-minicart-item__action"> <p class="ds-minicart-item__infotext">{{entry.quantity}} kpl</p> <button v-if="entry.quantity > 1 && itemCanBeRemovedFromSidecart" @click.stop="removeItemFromCart()" :disabled="actionInProgress" class="ds-function-btn" :aria-labelledby="ctaLabelledby" type="button"> <svg class="ds-icon" role="img" aria-hidden="true"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Minus"></use></svg> <span class="sr-only" :id="ctaId">Vähennä ostoskorista yksi</span> </button> <button v-else-if="itemCanBeRemovedFromSidecart" @click.stop="removeItemFromCart()" :disabled="actionInProgress" class="ds-function-btn" :aria-labelledby="ctaLabelledby" type="button"> <svg class="ds-icon" role="img" aria-hidden="true"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Trash"></use></svg> <span class="sr-only" :id="ctaId">Poista ostoskorista</span> </button> </div> </div> </section> </script>
1228<script type="text/x-template" id="cart-liftup" xmlns="http://www.w3.org/1999/html"> <section class="ds-minicart-liftup" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-minicart-liftup__heading"> <img class="ds-minicart-liftup__img" v-if="productImg" :src="productImg" alt="" /> <p><b>{{productDescription}}</b></p> </div> <p> <template v-if="isSecurityProduct"> <ul> <li> <a :href="productUrl" class="ds-minicart-liftup__link ds-minicart-item__link" :id="titleId">{{entry.description}}</a> </li> <li>{{entry.description2}}</li> </ul> </template> <template v-else> <a :href="productUrl" class="ds-minicart-liftup__link ds-minicart-item__link" :id="titleId">{{entry.name}}</a><br> </template> <span :class="{'ds-minicart-liftup__discount': isDiscounted}">{{priceDescription1}}</span> {{priceDescription2}} </p> <button class="ds-btn ds-btn--small ds-btn--full" @click.stop="addItem()" :disabled="actionInProgress" :id="ctaId" :aria-labelledby="ctaLabelledby" type="button" > Lisää ostoskoriin </button> </section> </script>
1228<script type="text/x-template" id="cart-recommendation"> <section class="ds-minicart-item ds-minicart-item--recommendation" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-minicart-item__img"> <img v-if="productImg" :src="productImg" alt="" /> </div> <div class="ds-minicart-item__content"> <a :href="productUrl" :aria-label="productName" :id="titleId" class="ds-minicart-item__title ds-minicart-item__link" data-recommendation-placement-id="side-cart-recommended-product-read-more" :data-recommendation-placement-index="index" :data-recommendation-item-id="productCode" :data-recommendation-id="extRecommendationId"> {{productName}} </a> <div class="ds-minicart-item__price-section"> <cart-price :hasDiscount="hasDiscount" :price="getSinglePriceWithDecimalsNumbersOnly(displayPrice)" :isMonthlyPrice="false" :pricePeriodLength="contractLength" /> </div> <button class="ds-minicart-item__add ds-btn ds-btn--small" @click.stop="addItem()" :disabled="actionInProgress" :id="ctaId" :aria-labelledby="ctaLabelledby" type="button" data-recommendation-placement-id="side-cart-recommended-product-add-to-cart" :data-recommendation-placement-index="index" :data-recommendation-item-id="productCode" :data-recommendation-id="extRecommendationId"> Lisää ostoskoriin </button> </div> </section> </script>
1228<script type="text/x-template" id="cart-details"> <div v-if="!cartInitialized" class="ds-sidecart__section ds-sidecart__section--empty"> <div class="ds-loading"> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> </div> </div> <div class="ds-sidecart__notification ds-sidecart__section-title" v-if="notificationMessage != ''"> <svg role="img" class="ds-icon ds-icon--24 ds-icon--pink" aria-hidden="true"> <use v-if="notificationMessage == 'SUCCESS'" href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Check"></use> <use v-else href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Error"></use> </svg> <div> <template v-if="notificationMessage == 'SUCCESS'"> <h3 class="h4">Tuote lisätty ostoskoriin</h3> </template> <template v-else-if="notificationMessage == 'ADD_ITEM_ERROR'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tätä tuotetta voi tilata vain rajoitetun määrän kerrallaan. Olet jo lisännyt sallitun määrän tuotetta ostoskoriin.</p> </template> <template v-else-if="notificationMessage == 'PRODUCT_LIMIT_EXCEEDED'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tätä tuotetta voi tilata vain rajoitetun määrän kerrallaan. Olet jo lisännyt sallitun määrän tuotetta ostoskoriin.</p> </template> <template v-else-if="notificationMessage == 'CART_PRODUCT_OUT_OF_STOCK'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tuotetta ei valitettavasti ole varastossa haluamaasi määrää.</p> </template> <template v-else-if="notificationMessage == 'CART_PRODUCT_STOCK_LIMIT_EXCEEDED'"> <h3 class="h4">minicart.product.error.cart-out-of-stock</h3> <p>minicart.product.error.cart-out-of-stock-description</p> </template> <template v-else-if="notificationMessage == 'PRODUCT_TAG_LIMIT_EXCEEDED'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Ostoskorissa on tuotteita, joita voi tilata vain rajoitetun määrän. Vähennä kappalemäärää tai poista osa tuotteista jatkaaksesi tilausta.</p> </template> <template v-else-if="notificationMessage == 'DELETE_ITEM_ERROR'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Ostoskorissa on tuotteita, joita voi tilata vain rajoitetun määrän. Vähennä kappalemäärää tai poista osa tuotteista jatkaaksesi tilausta.</p> </template> <template v-else> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Voi pahus, jokin meni pieleen. Yritä hetken kuluttua uudestaan.</p> </template> </div> </div> <div v-if="cart" class="ds-sidecart__rocket"> <section class="ds-sidecart__section ds-sidecart__section--main" aria-label="Ostoskorissa olevat tuotteet"> <template v-for="(entry, index) in visibleEntries" :key="entry.product.code"> <cart-entry :entry="entry" :allEntries="visibleEntries" :index="index" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @removeitem="removeItemFromCart" /> </template> </section> <section class="ds-sidecart__section" v-if="cart.recommendedService != null" aria-label="Suositellut tuotteet"> <cart-liftup :entry="cart.recommendedService" :index="0" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @additem="addItem" /> </section> <section class="ds-sidecart__section" v-if="cart.recommendedProducts && cart.recommendedProducts.length > 0" aria-label="Yhdessä ostettuja tuotteita"> <h3 class="ds-sidecart__section-title h4">Yhdessä ostettuja tuotteita</h3> <template v-for="(entry, index) in shownRecommendations" :key="entry.code"> <cart-recommendation :entry="entry" :index="index" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @additem="addItem" /> </template> </section> <section class="ds-sidecart__footer ds-minicart-summary ds-minicart-summary--main" v-if="cart.status" aria-label="Yhteensä"> <div class="ds-minicart-summary__prices"> <div class="ds-minicart-summary__price"> <p>Kertamaksut</p> <div class="h3">{{getSinglePriceWithDecimalsNumbersOnly(oneTimeChargesGrossSellingPrice)}} &euro;</div> </div> <div class="ds-minicart-summary__price"> <p>Kuukausimaksut</p> <div class="h3">{{getSinglePriceWithDecimalsNumbersOnly(cart.monthlyChargesTotal?.gross)}} &euro;/kk</div> </div> </div> <a href="https://kauppa.dna.fi/cart" class="ds-btn ds-btn--primary ds-btn--full">Siirry tilaamaan</a> </section> </div> </script>
1228 
1228<script>
1229window.sso_check_settings = {
1230host: 'https://pass.dna.fi',
1231interval: '30'
1232};
1233</script>
1233 <!-- COMMON-DNA-HEADER end --> <svg class="responsiveImageSvgFilters" aria-hidden="true"> <filter id="svgBlurNormal"> <feGaussianBlur stdDeviation="10"></feGaussianBlur> <feComposite in2="SourceGraphic" operator="in"></feComposite> </filter> </svg> <div id="wrapper" class="page-wrapper"> <section id="content"> <style type="text/css">
1234.master-layout-fragment .portlet-header {
1235display: none;
1236}
1237</style> <div class="dna-main-content" id="main-content" role="main"> <div class="portlet-column portlet-column-only" id="column-1"> <div class="portlet-dropzone portlet-column-content portlet-column-content-only" id="layout-column_column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_kbTpBWVBnV8L_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_kbTpBWVBnV8L"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="28454087" data-analytics-asset-title="Wholesale hero - uusi" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="28454089"> 
1237<script type="text/javascript">
1238window.dynamicCSS = window.dynamicCSS || {};
1239if (!window.dynamicCSS['heroNewCSS']) {
1240window.dynamicCSS['heroNewCSS'] = true;
1241var link = document.createElement('link');
1242link.rel = 'stylesheet';
1243link.href = '/o/dna-fi-theme/css/dna/portlets/hero-new.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1244link.media = 'all';
1245document.head.appendChild(link);
1246}
1247</script>
1247 <div class="ds-hero "> <div class="ds-hero__image dna-cld-container--crop"> <img class="dna-cld-responsive placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,f_auto,g_auto,h_220,q_1,w_600/e_blur:100/v1/Assets/Wholesale/Ostetut%20kuvapankkikuvat/iStock-1302091438_sRGB" data-src="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,dpr_auto,f_auto,g_auto,h_220,q_auto,w_600/v1/Assets/Wholesale/Ostetut%20kuvapankkikuvat/iStock-1302091438_sRGB" data-heights="220,460,600,800" fetchpriority="high"> </div> <div class="ds-hero__content-wrap"> <div class="ds-hero__content"> <div class="ds-hero__text basic-web-content"> <h1>DNA Wholesale</h1> <p class="ds-lead-paragraph">Hoidamme vaativat ja räätälöidyt projektit alusta loppuun asiantuntemuksella ja kokemuksella.</p> </div> <div class="ds-hero__cta-area"> <div class=" ds-btn-group"> <a href="https://www.dna.fi/wholesale/ota-yhteytta" class="ds-btn ds-btn--primary data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="148946b7-5afe-7586-91ff-6966611b8e8d" aria-label="Ota yhteyttä"> <span>Ota yhteyttä</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--normal ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid dna-grid--2-1 dna-grid--wide-gutter dna-grid--article"> <div class="portlet-column dna-grid-item dna-content-cols-2" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_DCqnjAz8wlS1_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_DCqnjAz8wlS1"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11018673" data-analytics-asset-title="Etusivu - intro" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018675"> <h2>Keitä olemme?</h2> <p class="ds-lead-paragraph">DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille wholesale-toimijoille laadukkaat tietoliikenneratkaisut aina yksinkertaisista toteutuksista isomman kokoluokan räätälöitäviin hankkeisiin.</p> <p>DNA on kiinteän laajakaistan markkinajohtaja ja lisäksi tarjoamme kattavan valikoiman langattomia laajakaista- ja puheratkaisuja. DNA:n oma <a href="http://www.dna.fi/wholesale/tietoa-meista/verkot">mobiili- ja kuituverkko</a> kattavat koko Suomen. Varmat ja turvalliset yhteydet ulkomaille takaavat tuplavarmistetut merikaapelit, <a href="http://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet">DNA Seaway</a>.&nbsp;</p> <h3>Nopea,&nbsp;rohkea ja mutkaton</h3> <p>DNA on yksi Suomen johtavia tietoliikennekonserneista, ja yrityksemme toiminnan ytimessä vaikuttavat arvomme: nopeus,&nbsp;rohkeus ja&nbsp;mutkattomuus. Osana Telenor konsernia, meidän kauttamme saat myös asiantuntevaa apua Pohjoismaissa.&nbsp;</p> <p>Tutustu tarjontaamme ja <a href="https://www.dna.fi/wholesale/ota-yhteytta">ota rohkeasti yhteyttä</a>!</p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-2"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-2"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_nSd3OQkcJI40_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_nSd3OQkcJI40"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="11018781" data-analytics-asset-title="Etusivun mobiil
1247iverkko-nostokortti" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018783"> 
1247<script type="text/javascript">
1248window.dynamicCSS = window.dynamicCSS || {};
1249if (!window.dynamicCSS['cardFreeCSS']) {
1250window.dynamicCSS['cardFreeCSS'] = true;
1251var link = document.createElement('link');
1252link.rel = 'stylesheet';
1253link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1254link.media = 'all';
1255document.head.appendChild(link);
1256}
1257</script>
1257 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--plum ds-color--white ds-content--dark-bg dna-card-free--inverted dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/f_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/Kuvitukset/Kartta_mobiiliverkko_2" data-src="https://res.cloudinary.com/dnaoyj/image/upload/dpr_auto,f_auto,q_auto,w_300/v1/Assets/Wholesale/Kuvitukset/Kartta_mobiiliverkko_2" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h3>Tutustu DNA:n verkkoihin!</h3> </div> <a href="/wholesale/tietoa-meista/verkot" class="dna-card-free__full-element-link data-ga-enabled" aria-label="" dna-dxp-type="web-content" dna-dxp-cid="5c5bc560-cf35-60ff-f590-3824334709a2" ></a> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch"> <div class=" dna-portlet-topmargin--normal ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_O8bBrArI7hMH_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_O8bBrArI7hMH"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11018977" data-analytics-asset-title="Etusivu - Lukujen otsikko" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018979"> <h2 style="text-align: center;">Toimiva infra ja monipuolinen osaaminen takaavat laadun</h2> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z"> <div class=" dna-portlet-topmargin--small ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid dna-grid--4 "> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_WdVaKb8Q9jjl_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_WdVaKb8Q9jjl"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002859" data-analytics-asset-title="Tietoa meistä - avainluku 1" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002861"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="globe" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Globe"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">40 000</span></strong></span><br> <span style="font-size:20px;">kilometrin kuituverkko</span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-2"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-2"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_4rozfw9eiKoV_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_4rozfw9eiKoV"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002952" data-analytics-asset-title="Tietoa meistä - avainluku 3" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002954"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="5g_sim" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Sim"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><span style="color:#da0070;"><span style="font-size:48px;"><strong>~10</strong></span></span><strong><span style="font-size:48px;"></span><span style="font-size:48px;">0%</span></strong></span><span style="font-size:22px;"></span><br> <span style="font-size:20px;">5G kattavuus suomalaisten asuinosoitteista (1/2026)</span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-3"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-3"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_RpEmGQwDbMvP_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_RpEmGQwDbMvP"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11030534" data-analytics-asset-title="Tietoa meistä - avainluku 4" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11030536"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="4g_sim" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Sim"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">~</span><span style="font-size:48px;">100%</span></strong></span><br> <span style="font-size:20px;">4G-väestöpeitto&nbsp;<span style="font-size:20px;">(1/2026)</span></span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-4"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-4"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_pqpSRK8SL73P_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_pqpSRK8SL73P"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002920" data-analytics-asset-title="Tietoa meistä - avainluku 2" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002922"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="person" role="img">
1257<use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#User"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">1 600</span></strong></span><span style="font-size:22px;"></span><br> <span style="font-size:20px;">ammattitaitoista työntekijää</span></p> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--normal ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_SpQpi2O7shzk_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_SpQpi2O7shzk"> <div class="dna-grid dna-grid--3 dna-grid--wide-gutter"> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="1" data-analytics-list="grid" data-analytics-section="asset-list"> 
1257<script type="text/javascript">
1258window.dynamicCSS = window.dynamicCSS || {};
1259if (!window.dynamicCSS['cardFreeCSS']) {
1260window.dynamicCSS['cardFreeCSS'] = true;
1261var link = document.createElement('link');
1262link.rel = 'stylesheet';
1263link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1264link.media = 'all';
1265document.head.appendChild(link);
1266}
1267</script>
1267 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/Oulun%20mastokuvat/_A7A3260_vaaka_sRGB" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/Oulun%20mastokuvat/_A7A3260_vaaka_sRGB" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Ratkaisumme</h2> <p>Tarjoamme niin kotimaisille kuin kansainvälisille tietoliikennepalveluita tarjoaville yrityksille laadukkaat tuotteet&nbsp;ja palvelut&nbsp;sekä asiantuntevaa palvelua.&nbsp;</p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/tutustu-meihin#ratkaisut" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="430ed7fc-2130-b287-dc86-7f557dd9b476" aria-label="Tutustu ratkaisuihimme"> <span>Tutustu ratkaisuihimme</span> </a> </div> </div> </div> </div> </div> </div> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="2" data-analytics-list="grid" data-analytics-section="asset-list"> 
1267<script type="text/javascript">
1268window.dynamicCSS = window.dynamicCSS || {};
1269if (!window.dynamicCSS['cardFreeCSS']) {
1270window.dynamicCSS['cardFreeCSS'] = true;
1271var link = document.createElement('link');
1272link.rel = 'stylesheet';
1273link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1274link.media = 'all';
1275document.head.appendChild(link);
1276}
1277</script>
1277 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Brandikuvat/DNA%20Talo/040_Dna_Aula__50A9208" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Brandikuvat/DNA%20Talo/040_Dna_Aula__50A9208" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Tutustu meihin</h2> <p>DNA on yksi Suomen johtavista tietoliikenneyhtiöistä, työllistäen noin 1600 henkilöä. Vuonna 2019 DNA:sta tuli osa kansainvälistä Telenor-konsernia.</p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/tutustu-meihin" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="0223df2d-d438-bae5-992d-81051821688f" aria-label="Lue lisää"> <span>Lue lisää</span> </a> </div> </div> </div> </div> </div> </div> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="3" data-analytics-list="grid" data-analytics-section="asset-list"> 
1277<script type="text/javascript">
1278window.dynamicCSS = window.dynamicCSS || {};
1279if (!window.dynamicCSS['cardFreeCSS']) {
1280window.dynamicCSS['cardFreeCSS'] = true;
1281var link = document.createElement('link');
1282link.rel = 'stylesheet';
1283link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1284link.media = 'all';
1285document.head.appendChild(link);
1286}
1287</script>
1287 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Brandikuvat/Kev%C3%A4t%202024%20%28YLT%29/DNA_YLT_Kev%C3%A4t2024_012" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Brandikuvat/Kev%C3%A4t%202024%20%28YLT%29/DNA_YLT_Kev%C3%A4t2024_012" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Ota yhteyttä</h2> <p>Asiantuntijamme auttavat mielellään oikeanlaisten ratkaisujen löytämisessä. Mikäli et löytänyt suoraan&nbsp;etsimääsi, ota rohkeasti yhteyttä, niin voimme kartoittaa yhdessä erilaiset mahdollisuudet.</p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/ota-yhteytta" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="c65329cf-d4cf-c2f5-fe8c-615fd33b05e7" aria-label="Siirry yhteystietoihin"> <span>Siirry yhteystietoihin</span> </a> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--extrasmall ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_3jpm1sqTRh4H_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_3jpm1sqTRh4H"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11019630" data-analytics-asset-title="Etusivu - Artikkelin otsikko" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11019632"> <h2 style="text-align: center;">Artikkelit ja blogit</h2> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc"> <div class="dna-grid dna-grid--4 "> 
1287<script type="text/javascript">
1288window.dynamicCSS = window.dynamicCSS || {};
1289if (!window.dynamicCSS['cardFreeCSS']) {
1290window.dynamicCSS['cardFreeCSS'] = true;
1291var link = document.createElement('link');
1292link.rel = 'stylesheet';
1293link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1294link.media = 'all';
1295document.head.appendChild(link);
1296}
1297</script>
1297 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Portaissa istuva nainen katsoo älypuhelimensa näyttöä, yllään oranssit housut ja teerinvärinen villapaita." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Vuorovaikutus sisäänrakennettuna – RCS for Business jättää sovellukset historiaan</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/vuorovaikutus-sisaanrakennettuna-rcs-for-business-jattaa-sovellukset-historiaan" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="de69a335-3336-26c6-3969-fc99693d0915" aria-label="Lue artikkeli - Vuorovaikutus sisäänrakennettuna – RCS for Business jättää sovellukset historiaan"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/vuorovaikutus-sisaanrakennettuna-rcs-for-business-jattaa-sovellukset-historiaan" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="de69a335-3336-26c6-3969-fc99693d0915" ></a> </div> </div> 
1297<script type="text/javascript">
1298window.dynamicCSS = window.dynamicCSS || {};
1299if (!window.dynamicCSS['cardFreeCSS']) {
1300window.dynamicCSS['cardFreeCSS'] = true;
1301var link = document.createElement('link');
1302link.rel = 'stylesheet';
1303link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1304link.media = 'all';
1305document.head.appendChild(link);
1306}
1307</script>
1307 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Kaksi suurta vedenalaista merikaapelia" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Varmistetut merikaapeliyhteydet takaavat luotettavan tiedonsiirron ulkomaille – lisäetuna tulee helppous</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="52a9a3ff-5de5-1182-03d5-0f9298419008" aria-label="Lue artikkeli - Varmistetut merikaapeliyhteydet takaavat luotettavan tiedonsiirron ulkomaille – lisäetuna tulee helppous"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="52a9a3ff-5de5-1182-03d5-0f9298419008" ></a> </div> </div> 
1307<script type="text/javascript">
1308window.dynamicCSS = window.dynamicCSS || {};
1309if (!window.dynamicCSS['cardFreeCSS']) {
1310window.dynamicCSS['cardFreeCSS'] = true;
1311var link = document.createElement('link');
1312link.rel = 'stylesheet';
1313link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1314link.media = 'all';
1315document.head.appendChild(link);
1316}
1317</script>
1317 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="DNA Wholesalen johtaja Juho Hyvärinen istuu portailla ja katsoo hymyillen kameraan." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Pohjoismainen etulyöntiasema kirittää Suomeen rakennettavien datakeskusten suunnitelmia</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/pohjoismainen-etulyontiasema-kirittaa-suomeen-rakennettavien-datakeskusten-suunnitelmia" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="80e7cca7-34b6-1ebf-9fb8-ddf13dbc1134" aria-label="Lue artikkeli - Pohjoismainen etulyöntiasema kirittää Suomeen rakennettavien datakeskusten suunnitelmia"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/pohjoismainen-etulyontiasema-kirittaa-suomeen-rakennettavien-datakeskusten-suunnitelmia" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="80e7cca7-34b6-1ebf-9fb8-ddf13dbc1134" ></a> </div> </div> 
1317<script type="text/javascript">
1318window.dynamicCSS = window.dynamicCSS || {};
1319if (!window.dynamicCSS['cardFreeCSS']) {
1320window.dynamicCSS['cardFreeCSS'] = true;
1321var link = document.createElement('link');
1322link.rel = 'stylesheet';
1323link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1324link.media = 'all';
1325document.head.appendChild(link);
1326}
1327</script>
1327 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Blogi</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2025 Anna-Mari Ylihurula </span> <h2 class="hyphenate h3">MWC 2025 oli tekoälyn ilotulitusta – kiskot valmiina, mutta junat harvassa</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-oli-tekoalyn-ilotulitusta-kiskot-valmiina-mutta-junat-harvassa" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="2b98709a-f240-8617-7e96-0d177143c81a" aria-label="Lue blogi - MWC 2025 oli tekoälyn ilotulitusta – kiskot valmiina, mutta junat harvassa"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue blogi</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-oli-tekoalyn-ilotulitusta-kiskot-valmiina-mutta-junat-harvassa" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="2b98709a-f240-8617-7e96-0d177143c81a" ></a> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC"> <div class=" dna-portlet-bottommargin--normal ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth"> <div class="dna-grid dna-grid--4 "> 
1327<script type="text/javascript">
1328window.dynamicCSS = window.dynamicCSS || {};
1329if (!window.dynamicCSS['cardFreeCSS']) {
1330window.dynamicCSS['cardFreeCSS'] = true;
1331var link = document.createElement('link');
1332link.rel = 'stylesheet';
1333link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1334link.media = 'all';
1335document.head.appendChild(link);
1336}
1337</script>
1337 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Portaissa istuva nainen katsoo älypuhelimensa näyttöä, yllään oranssit housut ja teerinvärinen villapaita." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Business </span> <h2 class="hyphenate h3">Interactive by default – RCS for Business Messaging pushes apps into the past</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/interactive-by-default-rcs-for-business-messaging-pushes-apps-into-the-past" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="863e6148-833a-f4bb-62df-685393b7abf1" aria-label="Read article - Interactive by default – RCS for Business Messaging pushes apps into the past"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read article</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/interactive-by-default-rcs-for-business-messaging-pushes-apps-into-the-past" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="863e6148-833a-f4bb-62df-685393b7abf1" ></a> </div> </div> 
1337<script type="text/javascript">
1338window.dynamicCSS = window.dynamicCSS || {};
1339if (!window.dynamicCSS['cardFreeCSS']) {
1340window.dynamicCSS['cardFreeCSS'] = true;
1341var link = document.createElement('link');
1342link.rel = 'stylesheet';
1343link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1344link.media = 'all';
1345document.head.appendChild(link);
1346}
1347</script>
1347 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Kaksi suurta vedenalaista merikaapelia" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Business </span> <h2 class="hyphenate h3">Redundant subsea cable connections ensure safe and secure data transfer abroad</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/redundant-subsea-cables-ensure-safe-and-secure-connections-abroad" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="e789c0e4-5c98-b178-4492-5ddfc8f7a869" aria-label="Read article - Redundant subsea cable connections ensure safe and secure data transfer abroad"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read article</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/redundant-subsea-cables-ensure-safe-and-secure-connections-abroad" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="e789c0e4-5c98-b178-4492-5ddfc8f7a869" ></a> </div> </div> 
1347<script type="text/javascript">
1348window.dynamicCSS = window.dynamicCSS || {};
1349if (!window.dynamicCSS['cardFreeCSS']) {
1350window.dynamicCSS['cardFreeCSS'] = true;
1351var link = document.createElement('link');
1352link.rel = 'stylesheet';
1353link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1354link.media = 'all';
1355document.head.appendChild(link);
1356}
1357</script>
1357 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="DNA Wholesalen johtaja Juho Hyvärinen istuu portailla ja katsoo hymyillen kameraan." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2026 DNA Business </span> <h2 class="hyphenate h3">Finland’s data centre viability strengthened by the Nordic edge</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/finlands-data-centre-viability-strengthened-by-the-nordic-edge" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="df4db665-bd62-334f-ea64-69ac7831977a" aria-label="Read more - Finland’s data centre viability strengthened by the Nordic edge"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read more</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/finlands-data-centre-viability-strengthened-by-the-nordic-edge" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="df4db665-bd62-334f-ea64-69ac7831977a" ></a> </div> </div> 
1357<script type="text/javascript">
1358window.dynamicCSS = window.dynamicCSS || {};
1359if (!window.dynamicCSS['cardFreeCSS']) {
1360window.dynamicCSS['cardFreeCSS'] = true;
1361var link = document.createElement('link');
1362link.rel = 'stylesheet';
1363link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000';
1364link.media = 'all';
1365document.head.appendChild(link);
1366}
1367</script>
1367 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2025 Anna-Mari Ylihurula </span> <h2 class="hyphenate h3">MWC 2025 was a fireworks display of AI – the tracks are laid, but we're lacking trains</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-was-a-fireworks-display-of-ai-the-tracks-are-laid-but-were-lacking-trains" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="fe4b153b-8d3b-bacc-e625-5d7b0b816bb3" aria-label="Read more - MWC 2025 was a fireworks display of AI – the tracks are laid, but we're lacking trains"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read more</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-was-a-fireworks-display-of-ai-the-tracks-are-laid-but-were-lacking-trains" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="fe4b153b-8d3b-bacc-e625-5d7b0b816bb3" ></a> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> <form action="#" aria-hidden="true" class="hide" id="hrefFm" method="post" name="hrefFm"><span></span><button hidden type="submit">Piilotettu</button></form> </section> </div> <!-- COMMON-DNA-FOOTER --> <footer id="dna-footer"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="10925274" data-analytics-asset-title="Wholesale-footter" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="10925276"> <nav class="ds-footer" id="dna-footer-app" aria-label="Footer linkit"> <div class="ds-footer__section ds-footer__section--top"> <div class="ds-footer__layout-width ds-footer__grid"> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#OfficeBuilding"></use> </svg> <h2 class="h4">Tutustu meihin</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/tutustu-meihin"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Wholesale </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/dna-tower"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Tower </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/tietoa-meista/verkot"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA:n verkot </a> </li> </ul> </div> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Headset"></use> </svg> <h2 class="h4">Ota yhteyttä</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/ota-yhteytta"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> Yhteystiedot </a> </li> </ul> </div> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon">
1367 <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#User"></use> </svg> <h2 class="h4">Itsepalvelu</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/dna-wholesale-online"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Wholesale Online </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/yritysdna"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> YritysDNA </a> </li> </ul> </div> </div> </div> <div class="ds-footer__section ds-footer__section--links"> <div class="ds-footer__layout-width ds-footer__grid"> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('0'))" aria-controls="footer-link-section-0" v-on:click="toggleSection('0')"> <h2 class="h4">Yhteydet</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button> <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-0" v-bind:class="{'open' : showSection('0')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/ethernet-vpn">Ethernet VPN</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/ip-vpn">IP VPN</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/internet-access">Internet Access</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/broadband">Broadband</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/wireless-access-component">Wireless Access Component</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/interconnect">Interconnect</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys">Aallonpituus siirtoyhteys</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys">Kiinteä kuituyhteys</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet">Kaapelinsijoitusoikeudet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/laitetilat">Laitetilat</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/ip-transit">IP Transit</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/internetpalvelut/ddos-protection">DDos Protection</a> </li> </ul> </div> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('1'))" aria-controls="footer-link-section-1" v-on:click="toggleSection('1')"> <h2 class="h4">Puhe ja mobiili</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button> <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-1" v-bind:class="{'open' : showSection('1')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/mobiili/mvno">MVNO</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/viestinta/sovellusviestit">Sovellusviestit</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/viestinta/sms-gateway">SMS Gateway</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot">Virtuaalimobiilinumerot</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot">Sisäänsoittonumerot</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/ilmaisnumerot">Ilmaisnumerot</a> </li> </ul> </div> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('2'))" aria-controls="footer-link-section-2" v-on:click="toggleSection('2')"> <h2 class="h4">Operaattoreille</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button>
1367 <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-2" v-bind:class="{'open' : showSection('2')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#metro-ethernet">Metro Ethernet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#operaattorilaajakaista">Operaattorilaajakaista</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#laitetilat-ja-mastopaikat">Laitetilat ja mastopaikat</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#tilaajayhteydet">Tilaajayhteydet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#monipalvelunielut">Monipalvelunielut</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#kaapelin-sijoitusoikeudet">Kaapelinsijoitusoikeudet</a> </li> </ul> </div> </div> </div> <div class="ds-footer__section ds-footer__section--bottom"> <div class="ds-footer__layout-width ds-footer__bottom-grid"> <div class="ds-footer__bottom--center"> <section class="ds-footer__social-media-links" aria-label="Sosiaalisen median linkit"> <ul class="ds-footer__links"> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.facebook.com/dnabusiness.fi/" aria-label="DNA Facebookissa"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Facebook"></use></svg> </a> </li> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.linkedin.com/company/dna-ltd/" aria-label="DNA LinkedInissä"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Linkedin"></use></svg> </a> </li> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.youtube.com/user/DNABusinesspalvelut" aria-label="DNA Youtubessa"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Youtube"></use></svg> </a> </li> </ul> </section> <div class="ds-site-nav"> <a href="https://www.dna.fi" class="ds-site-nav__link " >Yksityisille</a> <a href="https://www.dna.fi/yrityksille" class="ds-site-nav__link " >Yrityksille</a> <a href="https://www.dna.fi/wholesale" class="ds-site-nav__link current" aria-current="true">Wholesale</a> <a href="https://corporate.dna.fi/fi" class="ds-site-nav__link " >DNA Oyj</a> </div> <!-- Dynamic mandatory links --> <div class="ds-footer__mandatory-links"> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/dna-oyjn-asiakasrekisterin-rekisteriseloste">Tietosuoja ja rekisteriselosteet</a> <span aria-hidden="true"> | </span> <a class="ds-footer__link ds-footer__link--text ot-sdk-show-settings" href="#" onclick="return false;">Evästeasetukset</a> <span aria-hidden="true"> | </span> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/tuki-tilaaminen-verkkokaupasta">Tilaus- ja toimistusehdot</a> <span aria-hidden="true"> | </span> <span>DNA&nbsp;2026</span> </div> </div> <div class="ds-footer__bottom--right ds-footer__app"> </div> </div> </div> </nav> </div> </div> </div> </section> </div> </footer> <div class="dna-navigation-overlay" id="dna-navigation-overlay"></div> <!-- COMMON-DNA-FOOTER end --> <div class="dna-navigation-overlay dna-navigation-overlay--with-secondary" id="dna-navigation-overlay-secondary-nav"></div> <template id="modal-dialog-template"> <dialog class="ds-modal ds-modal--dialog ds-modal--medium"> <div class="ds-modal__container"> <button class="ds-modal__close" aria-label="Sulje dialogi"> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Close"></use> </svg> </button> <div class="ds-modal__content"></div> </div> </dialog> </template> 
1367<script type="text/javascript">
1368
1369	
1370		
1371
1372			
1373
1374			
1375		
1376	
1377
1378
1379</script>
1379<script>
1380
1381</script>
1381 
1381<script type="text/javascript">
1382(function() {var $ = AUI.$;var _ = AUI._;
1383	var onShare = function (data) {
1384		if (window.Analytics) {
1385			Analytics.send('shared', 'SocialBookmarks', {
1386				className: data.className,
1387				classPK: data.classPK,
1388				type: data.type,
1389				url: data.url,
1390			});
1391		}
1392	};
1393
1394	var onDestroyPortlet = function () {
1395		Liferay.detach('socialBookmarks:share', onShare);
1396		Liferay.detach('destroyPortlet', onDestroyPortlet);
1397	};
1398
1399	Liferay.on('socialBookmarks:share', onShare);
1400	Liferay.on('destroyPortlet', onDestroyPortlet);
1401})();
1402(function() {var $ = AUI.$;var _ = AUI._;
1403	var onVote = function (event) {
1404		if (window.Analytics) {
1405			let title = event.contentTitle;
1406
1407			if (!title) {
1408				const dmNode = document.querySelector(
1409					'[data-analytics-file-entry-id="' + event.classPK + '"]'
1410				);
1411
1412				if (dmNode) {
1413					title = dmNode.dataset.analyticsFileEntryTitle;
1414				}
1415			}
1416
1417			Analytics.send('VOTE', 'Ratings', {
1418				className: event.className,
1419				classPK: event.classPK,
1420				ratingType: event.ratingType,
1421				score: event.score,
1422				title,
1423			});
1424		}
1425	};
1426
1427	var onDestroyPortlet = function () {
1428		Liferay.detach('ratings:vote', onVote);
1429		Liferay.detach('destroyPortlet', onDestroyPortlet);
1430	};
1431
1432	Liferay.on('ratings:vote', onVote);
1433	Liferay.on('destroyPortlet', onDestroyPortlet);
1434})();
1435
1436	function getValueByAttribute(node, attr) {
1437		return (
1438			node.dataset[attr] ||
1439			(node.parentElement && node.parentElement.dataset[attr])
1440		);
1441	}
1442
1443	function sendDocumentDownloadedAnalyticsEvent(anchor) {
1444		var fileEntryId = getValueByAttribute(
1445			anchor,
1446			'analyticsFileEntryId'
1447		);
1448		var title = getValueByAttribute(
1449			anchor,
1450			'analyticsFileEntryTitle'
1451		);
1452		var version = getValueByAttribute(
1453			anchor,
1454			'analyticsFileEntryVersion'
1455		);
1456
1457		if (fileEntryId) {
1458			Analytics.send('documentDownloaded', 'Document', {
1459				groupId: themeDisplay.getScopeGroupId(),
1460				fileEntryId,
1461				preview:
1462					!!window._com_liferay_document_library_analytics_isViewFileEntry,
1463				title,
1464				version,
1465			});
1466		}
1467	}
1468
1469	function handleDownloadClick(event) {
1470		if (window.Analytics) {
1471			if (event.target.nodeName.toLowerCase() === 'a') {
1472				sendDocumentDownloadedAnalyticsEvent(
1473					event.target
1474				);
1475			}
1476			else if (
1477				event.target.parentNode &&
1478				event.target.parentNode.nodeName.toLowerCase() === 'a'
1479			) {
1480				sendDocumentDownloadedAnalyticsEvent(
1481					event.target.parentNode
1482				);
1483			}
1484			else {
1485				var target = event.target;
1486				var matchTextContent =
1487					target.textContent &&
1488					target.textContent.toLowerCase() ===
1489						'lataa';
1490				var matchTitle =
1491					target.title && target.title.toLowerCase() === 'download';
1492				var matchAction = target.action === 'download';
1493				var matchLexiconIcon = !!target.querySelector(
1494					'.lexicon-icon-download'
1495				);
1496				var matchLexiconClassName = target.classList.contains(
1497					'lexicon-icon-download'
1498				);
1499				var matchParentTitle =
1500					target.parentNode &&
1501					target.parentNode.title &&
1502					target.parentNode.title.toLowerCase() === 'download';
1503				var matchParentLexiconClassName =
1504					target.parentNode &&
1505					target.parentNode.classList.contains('lexicon-icon-download');
1506
1507				if (
1508					matchTextContent ||
1509					matchTitle ||
1510					matchParentTitle ||
1511					matchAction ||
1512					matchLexiconIcon ||
1513					matchLexiconClassName ||
1514					matchParentLexiconClassName
1515				) {
1516					var selectedFiles = document.querySelectorAll(
1517						'.form .custom-control-input:checked'
1518					);
1519
1520					selectedFiles.forEach(({value}) => {
1521						var selectedFile = document.querySelector(
1522							'[data-analytics-file-entry-id="' + value + '"]'
1523						);
1524
1525						sendDocumentDownloadedAnalyticsEvent(
1526							selectedFile
1527						);
1528					});
1529				}
1530			}
1531		}
1532	}
1533
1534	Liferay.once('destroyPortlet', () => {
1535		document.body.removeEventListener(
1536			'click',
1537			handleDownloadClick
1538		);
1539	});
1540
1541	Liferay.once('portletReady', () => {
1542		document.body.addEventListener(
1543			'click',
1544			handleDownloadClick
1545		);
1546	});
1547
1548(function() {var $ = AUI.$;var _ = AUI._;
1549	var onDestroyPortlet = function () {
1550		Liferay.detach('messagePosted', onMessagePosted);
1551		Liferay.detach('destroyPortlet', onDestroyPortlet);
1552	};
1553
1554	Liferay.on('destroyPortlet', onDestroyPortlet);
1555
1556	var onMessagePosted = function (event) {
1557		if (window.Analytics) {
1558			const eventProperties = {
1559				className: event.className,
1560				classPK: event.classPK,
1561				commentId: event.commentId,
1562				text: event.text,
1563			};
1564
1565			const blogNode = document.querySelector(
1566				'[data-analytics-asset-id="' + event.classPK + '"]'
1567			);
1568
1569			const dmNode = document.querySelector(
1570				'[data-analytics-file-entry-id="' + event.classPK + '"]'
1571			);
1572
1573			if (blogNode) {
1574				eventProperties.title = blogNode.dataset.analyticsAssetTitle;
1575			}
1576			else if (dmNode) {
1577				eventProperties.title = dmNode.dataset.analyticsFileEntryTitle;
1578			}
1579
1580			Analytics.send('posted', 'Comment', eventProperties);
1581		}
1582	};
1583
1584	Liferay.on('messagePosted', onMessagePosted);
1585})();
1586
1587	if (window.svg4everybody && Liferay.Data.ICONS_INLINE_SVG) {
1588		svg4everybody(
1589			{
1590				polyfill: true,
1591				validate: function (src, svg, use) {
1592					return !src || !src.startsWith('#');
1593				}
1594			}
1595		);
1596	}
1597
1598(function() {var $ = AUI.$;var _ = AUI._;
1599	Liferay.Util.delegate(
1600		document,
1601		'focusin',
1602		'.portlet',
1603		function(event) {
1604			event.delegateTarget.closest('.portlet').classList.add('open');
1605		}
1606	);
1607
1608	Liferay.Util.delegate(
1609		document,
1610		'focusout',
1611		'.portlet',
1612		function(event) {
1613			event.delegateTarget.closest('.portlet').classList.remove('open');
1614		}
1615	);
1616})();
1617
1618	// <![CDATA[
1619
1620		
1621
1622		Liferay.currentURL = '\x2fweb\x2fwholesale';
1623		Liferay.currentURLEncoded = '\x252Fweb\x252Fwholesale';
1624
1625	// ]]>
1626
1627(function() {var $ = AUI.$;var _ = AUI._;
1628		import(Liferay.ThemeDisplay.getPathContext() + '/o/frontend-js-web/__liferay__/index.js').then(
1629			({openToast}) => {
1630				AUI().use(
1631					'liferay-session',
1632					function() {
1633						Liferay.Session = new Liferay.SessionBase(
1634							{
1635								autoExtend: true,
1636								redirectOnExpire: false,
1637								redirectUrl: 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fyksityisille',
1638								sessionLength: 54000,
1639								sessionTimeoutOffset: 70,
1640								warningLength: 60
1641							}
1642						);
1643
1644						
1645					}
1646				);
1647			}
1648		)
1649	})();
1650(function() {var $ = AUI.$;var _ = AUI._;
1651    var assetEntryId = '';
1652
1653    if (assetEntryId) {
1654    window.location.hash = assetEntryId;
1655    }
1656})();
1657(function() {var $ = AUI.$;var _ = AUI._;
1658    var assetEntryId = '';
1659
1660    if (assetEntryId) {
1661    window.location.hash = assetEntryId;
1662    }
1663})();
1664
1665	var nestedPortlet = document.getElementById(
1666	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__main-content'
1667	);
1668
1669	if (nestedPortlet != null) {
1670	nestedPortlet.removeAttribute('role');
1671	}
1672
1673(function() {var $ = AUI.$;var _ = AUI._;
1674    var assetEntryId = '';
1675
1676    if (assetEntryId) {
1677    window.location.hash = assetEntryId;
1678    }
1679})();
1680
1681	var nestedPortlet = document.getElementById(
1682	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__main-content'
1683	);
1684
1685	if (nestedPortlet != null) {
1686	nestedPortlet.removeAttribute('role');
1687	}
1688
1689
1690	var nestedPortlet = document.getElementById(
1691	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__main-content'
1692	);
1693
1694	if (nestedPortlet != null) {
1695	nestedPortlet.removeAttribute('role');
1696	}
1697
1698
1699	var nestedPortlet = document.getElementById(
1700	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__main-content'
1701	);
1702
1703	if (nestedPortlet != null) {
1704	nestedPortlet.removeAttribute('role');
1705	}
1706
1707
1708	var nestedPortlet = document.getElementById(
1709	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__main-content'
1710	);
1711
1712	if (nestedPortlet != null) {
1713	nestedPortlet.removeAttribute('role');
1714	}
1715
1716
1717	var nestedPortlet = document.getElementById(
1718	'_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__main-content'
1719	);
1720
1721	if (nestedPortlet != null) {
1722	nestedPortlet.removeAttribute('role');
1723	}
1724
1725
1726</script>
1726<script type="module">
1727import {InfoItemActionHandler as ComponentModule} from '/o/layout-taglib/__liferay__/index.js';
1728AUI().use(
1729  'liferay-menu',
1730function(A) {
1731{
1732Liferay.component('infoItemActionComponent', new ComponentModule({"executeInfoItemActionURL":"https:\/\/www.dna.fi\/c\/portal\/execute_info_item_action?p_l_mode=view&plid=9161297","namespace":"","spritemap":"https:\/\/www.dna.fi\/o\/dna-fi-theme\/images\/clay\/icons.svg"}), { destroyOnNavigate: true, portletId: ''});
1733}
1734(function() {
1735var $ = AUI.$;var _ = AUI._;
1736	new Liferay.Menu();
1737
1738	var liferayNotices = Liferay.Data.notices;
1739
1740	for (var i = 0; i < liferayNotices.length; i++) {
1741		Liferay.Util.openToast(liferayNotices[i]);
1742	}
1743
1744})();
1745});
1746
1747</script>
1747 
1747<script src="https://www.dna.fi/o/dna-fi-theme/js/main.js?browserId=chrome&amp;minifierType=js&amp;languageId=fi_FI&amp;t=1789630306000" type="text/javascript"></script>
1747 
1747<script type="module">
1748import {main} from '/o/frontend-js-alert-support-web/__liferay__/index.js';
1749{
1750main();
1751}
1752
1753</script>
1753<script type="module">
1754import {main} from '/o/frontend-js-collapse-support-web/__liferay__/index.js';
1755{
1756main();
1757}
1758
1759</script>
1759<script type="module">
1760import {main} from '/o/frontend-js-dropdown-support-web/__liferay__/index.js';
1761{
1762main();
1763}
1764
1765</script>
1765<script type="module">
1766import {main} from '/o/frontend-js-tooltip-support-web/__liferay__/index.js';
1767{
1768main();
1769}
1770
1771</script>
1771<script type="module">
1772import {main} from '/o/frontend-js-tabs-support-web/__liferay__/index.js';
1773{
1774main();
1775}
1776
1777</script>
1777<script type="module">
1778import {runThirdPartyCookiesInterval} from '/o/cookies-banner-web/__liferay__/index.js';
1779{
1780runThirdPartyCookiesInterval();
1781}
1782
1783</script>
1783<script type="text/javascript">
1784Liferay.CustomDialogs = {enabled: false};
1785
1786</script>
1786<script>
1787
1788</script>
1788 <div class="node-status" style="display:none;"> app1.lrdxp-prod.dna.fi </div> 
1788<script>
1789        window.dxp_login_settings = {
1790            site:  'wholesale',
1791            restUrl: 'https://www.dna.fi/o/rest',
1792            redirectUrl: 'https://www.dna.fi/o/sso-redirect',
1793            clientId: 'db-liferay-b2c',
1794            scopeIds: 'openid profile ssn b2c-sso',
1795            languageId: 'fi_FI',
1796            accessTokenCookieName: 'DXP_access_token',
1797            listenToIDMPostMessages: true,
1798            ssoSessionManagementEnabled: false,
1799            maxInactivityBeforeWarning: 780000,
1800            logoutUrl: "/o/rest/auth/logout",
1801            showHeader: true
1802        };
1803    </script>
1803 <!-- inject:js --> <!-- endinject --> 
1803<script>
1804    Liferay.Loader.require('[email protected]/js/common/analyticsUtil.es');
1805  </script>
1805 </body> </html> 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.