{"id":6229,"date":"2024-10-16T01:26:34","date_gmt":"2024-10-16T01:26:34","guid":{"rendered":"https:\/\/web-staging.virtuosgames.com\/?page_id=6229"},"modified":"2025-03-21T04:01:24","modified_gmt":"2025-03-21T04:01:24","slug":"virtuos-offices","status":"publish","type":"page","link":"https:\/\/web-staging.virtuosgames.com\/ko\/virtuos-offices\/","title":{"rendered":"\ubc84\ucd94\uc5b4\uc2a4 \uc0ac\ubb34\uc2e4"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"6229\" class=\"elementor elementor-6229\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6aa8312 e-con-full e-flex e-con e-parent\" data-id=\"6aa8312\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-032572a e-con-full e-flex e-con e-child\" data-id=\"032572a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3e8045c gradient-heading elementor-widget elementor-widget-heading\" data-id=\"3e8045c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\ubc84\ucd94\uc5b4\uc2a4 \uc0ac\ubb34\uc2e4<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1fe26a3 elementor-widget__width-inherit elementor-widget elementor-widget-template\" data-id=\"1fe26a3\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"4356\" class=\"elementor elementor-4356\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-b85bb41 e-con-full e-flex e-con e-parent\" data-id=\"b85bb41\" data-element_type=\"container\" id=\"global-presence\">\n\t\t<div class=\"elementor-element elementor-element-168e5be e-con-full e-flex e-con e-child\" data-id=\"168e5be\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ff2cfd global-presence-title  jedv-enabled--yes elementor-widget elementor-widget-heading\" data-id=\"0ff2cfd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\uae00\ub85c\ubc8c \uc785\uc9c0<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ee304b elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet_extra elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"7ee304b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<span class=\"translation-block\"><span data-context=\"homepage-title\">Global Presence<\/span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-626e571 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"626e571\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\uc804 \uc138\uacc4\uc5d0 \ubd84\ud3ec\ub41c \uc2a4\ud29c\ub514\uc624 \ub124\ud2b8\uc6cc\ud06c\ub97c \ud65c\uc6a9\ud558\uc5ec \uae00\ub85c\ubc8c \uc778\uc7ac\uc640 \uc804\ubb38\uc131\uc744 \uacbd\ud5d8\ud558\uc138\uc694. \uc6b0\ub9ac\ub294 \uac1c\ubc1c \ud6a8\uc728\uc131, \ube44\uc6a9, \uadf8\ub9ac\uace0 \ucd9c\uc2dc \uae30\uac04\uc744 \ucd5c\uc801\ud654\ud558\uc5ec, \uc5ec\ub7ec\ubd84\ub4e4\uc774 \ub354 \ub098\uc740 \uac8c\uc784\uc744 \uac1c\ubc1c\ud558\ub294 \ub370 \uc9d1\uc911\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\ub4dc\ub9bd\ub2c8\ub2e4<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a99fcdc elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"a99fcdc\" data-element_type=\"widget\" id=\"global-map\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"tab-buttons\">\r\n    <span class=\"tab-button\" onclick=\"zoomToRegion('all')\">\uc804\uccb4<\/span>\r\n    <span class=\"tab-button\" onclick=\"zoomToRegion('na')\">\ubd81\ubbf8<\/span>\r\n    <span class=\"tab-button\" onclick=\"zoomToRegion('eu')\">\uc720\ub7fd<\/span>\r\n   <span class=\"tab-button\" onclick=\"zoomToRegion('asia')\">\uc544\uc2dc\uc544<\/span>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-69c52a2 e-con-full e-flex e-con e-child\" data-id=\"69c52a2\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-eb01952 e-con-full e-transform map-btn e-flex e-con e-child\" data-id=\"eb01952\" data-element_type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;,&quot;_transform_translateX_effect_tablet&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_mobile_extra&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_mobile&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;sticky&quot;:&quot;bottom&quot;,&quot;sticky_on&quot;:[&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;],&quot;sticky_offset_tablet&quot;:20,&quot;sticky_anchor_link_offset_tablet&quot;:0,&quot;sticky_parent&quot;:&quot;yes&quot;,&quot;sticky_offset_mobile_extra&quot;:0,&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0,&quot;_transform_translateX_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_mobile_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b4110db elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet_extra elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"b4110db\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">SKIP THE MAP<\/a><\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61a8dbd elementor-widget elementor-widget-template\" data-id=\"61a8dbd\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"21191\" class=\"elementor elementor-21191\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f8f5381 e-con-full custom-map-bg e-flex e-con e-child\" data-id=\"2f8f5381\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f318d76 elementor-widget elementor-widget-html\" data-id=\"6f318d76\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"overlay\"><\/div>\r\n<!--Preload Hover Map Images - To Avoid Flickering -->\r\n<div style=\"display:none;\">\r\n    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/map-img-1.svg\" width=\"0\" height=\"0\"\/>\r\n    <img decoding=\"async\" src=\"https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2025\/04\/map_working-file_full-asia1-1.svg\" width=\"0\" height=\"0\"\/>\r\n    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/map-img-ea-1.svg\" width=\"0\" height=\"0\"\/>\r\n    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/map-img-eu-1.svg\" width=\"0\" height=\"0\"\/>\r\n    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/map-img-na-1.svg\" width=\"0\" height=\"0\"\/>\r\n<\/div>\r\n\r\n<div class=\"container\">\r\n<div id=\"map\">\r\n    <div id=\"hover-box\"><\/div>\r\n    <!--Singapore-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Singapore\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/singapore.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc0ac\ubb34\uc2e4<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\uc2f1\uac00\ud3ec\ub974 (\ubcf8\uc0ac)<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">1 Fusionopolis Wy, #06-10 Connexis, Singapore 138632<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/singapore\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Kuala Lumpur-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Kuala Lumpur\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/kuala-lumpur.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \ucfe0\uc54c\ub77c\ub8f8\ud478\ub974<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Level 6, Tower 3 Avenue 7, Bangsar South, No.8 Jalan Kerinchi, 59200 Kuala Lumpur<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/kuala-lumpur\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Xian-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Xian\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Xian.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \uc2dc\uc548<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">3\uce35, TianGu 8th Road, District 2 Software New City, 710068 Xi&#039;an, Shaanxi China<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/xian\/\"  class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n\r\n        <!--Glassegg-Lam Dong-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Glassdalat\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Glassegg-dalat.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Glass Egg - Dalat<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Room A2.2, No.1 Tran Quoc Toan Street, Ward 10, Da Lat City, Lam Dong Province<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"https:\/\/www.virtuosgames.com\/studio\/glass-egg\/dalat\/\"  class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!--Glassegg-Ho Chi Minh-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Glassegg\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Glassegg-hochiminh.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Glass Egg - Ho Chi Minh City<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">9 Doan Van Bo Street, Ward 13, District 4, Ho Chi Minh City, Vietnam<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/glass-egg\/ho-chi-minh\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Sparx-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Sparx\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/sparx-hochiminh.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Sparx*<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">39B Truong Son Street, Ward 4, Tan Binh District, Ho Chi Minh City, Vietnam<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/sparx\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Beyond Fx-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Beyond Fx\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/beyond_fx.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">BeYond-FX<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">11833 Mississippi Avenue, 2nd Floor Los Angeles, CA 9002<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/beyond-fx\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Counterpunch-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Counterpunch\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/counter_punch.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Counterpunch<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">1031 S Broadway STE 375, Los Angeles, CA, 90015<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/counterpunch\/\"  class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Paris-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Paris\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/paris.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Virtuos Paris<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">10 Avenue de l\u2019Entreprise, Parc Saint Christophe, 95800 Cergy, France<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/paris\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Montpellier-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Montpellier\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/labs_montpellier.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">Labs<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Virtuos Labs - Montpellier<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">396 rue du Mas de Verchant, 34000 Montpellier, France<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/montpellier\/\"  class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Lyon-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Lyon\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/labs_lyon.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">Labs<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Virtuos Labs - Lyon<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">1 Place Pascalon, Grand H\u00f4tel-Dieu 69002 Lyon, France<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/lyon\/\"  class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n\r\n    <div class=\"office hide hide-point-from-map\" data-number=\"\" data-location=\"Vancouver\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/vancouver.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc0ac\ubb34\uc2e4<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc34\ucfe0\ubc84<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">PO Box 19014 Rocky Point PO, \ud3ec\ud2b8 \ubb34\ub514, BC V3H 0J1, \ubc34\ucfe0\ubc84, BC<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/vancouver\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--San Francisco-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"San Francisco\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/san_franciso.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc0ac\ubb34\uc2e4<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\uc0cc\ud504\ub780\uc2dc\uc2a4\ucf54<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">1200 Concord Avenue, Suite 170, CA 94520, Concord, USA<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/san-francisco\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Montreal -->\r\n    \r\n    <div class=\"office hide hide-point-from-map\" data-number=\"\" data-location=\"Montreal\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/montreal.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Virtuos Montreal<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">4398 Boulevard Saint-Laurent, Suite 103, Montreal, Quebec H2W 1Z5, CA<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/montreal\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Chengdu-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Chengdu\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Chengdu.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \uccad\ub450<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Level 13 Ping An Finance Center, No.99 Dongda street, Jinjiang District 610017, Chengdu City, Sichuan Province, P.R. China<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/chengdu\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Shanghai-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Shanghai\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Shanghai.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \uc0c1\ud558\uc774<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">10th Floor, Biology Building, No. 1326 West Yan'an Road, Changning District, Shanghai, 200052<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/shanghai\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Seoul-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Seoul\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Seoul.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \uc11c\uc6b8<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">\uc11c\uc6b8\ud2b9\ubcc4\uc2dc \uac15\ub0a8\uad6c \uac15\ub0a8\ub300\ub85c100\uae38 14, 6\uce35<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/seoul\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Tokyo-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Tokyo\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/Tokyo.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \ub3c4\ucfc4<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">101-0041, 2-3-12 Kanda Sudacho, Chiyoda-ku, Tokyo, Japan, 12 KANDA 901<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/tokyo\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Black Shamrock-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Black Shamrock\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/blackshamrock.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Black Shamrock<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Guinness Enterprise Centre, Taylor's Lane, Dublin 8, Ireland, D08 T27N<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/black-shamrock\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--ThirdKind Games-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Third Kind Games\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\" \/wp-content\/uploads\/2024\/11\/tkg.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Third Kind Games<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">The Old School, Holly Walk, Leamington Spa CV32 4JG, United Kingdom<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"https:\/\/thirdkindgames.com\/\" class=\"office-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Prague-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Prague\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/prague.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">Labs<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Virtuos Labs - Prague<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Dock in Three, Boudn\u00edkova 2506\/1, Prague 8 - Palmovka, 180 00, Czech Republic<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/prague\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Warsaw-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Warsaw\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/warsaw.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">\ubc84\ucd94\uc5b4\uc2a4 \ubc14\ub974\uc0e4\ubc14<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">ul. Karolkowa 30, 10th floor, 01-207 Warsaw, Poland<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/warsaw\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!--Volmi-->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Volmi\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/11\/volmi-kyiv.png\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title no-translation\" data-no-translation=\"\" data-no-auto-translation=\"\">Volmi<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Yaroslavska St, 58, Kyiv, 04071, Ukraine<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"\/ko\/studio\/volmi\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n     <!--Pipeworks -->\r\n    <div class=\"office hide\" data-number=\"\" data-location=\"Pipeworks\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/02\/pipeworks-min.webp\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Pipeworks<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">133 W Broadway Eugene, OR, 97401 USA<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"http:\/\/www.pipeworks.com\/\" class=\"office-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n        <!--Umanaia -->\r\n        <div class=\"office two-office hide\" data-number=\"\" data-location=\"Umanaia\">\r\n        <div class=\"office-close\"><\/div>\r\n\t\t\t<div class=\"group-office\">\r\n\t\t\t\t<div class=\"umania-office\">\r\n                  \r\n                \t<div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n                    <div class=\"office-content\">\r\n                        <h4 class=\"office-title\">Umanaia<\/h4>\r\n                        <div class=\"office-con-box\">\r\n                            <p class=\"office-desc\">4398 Boulevard Saint-Laurent, Suite 103, Montreal, Quebec H2W 1Z5, CA<\/p>\r\n                        <\/div>\r\n                        <div class=\"office-con-link\">\r\n                            <a href=\"https:\/\/www.umanaia.com\/\" class=\"office-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\t\t\t\t<div class=\"montreal-office\">\r\n\t\t\t\t\r\n\t\t\t\t\t<div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n\t\t\t\t\t<div class=\"office-content\">\r\n\t\t\t\t\t\t<h4 class=\"office-title\">Virtuos Montreal<\/h4>\r\n\t\t\t\t\t\t<div class=\"office-con-box\">\r\n\t\t\t\t\t\t\t<p class=\"office-desc\">4398 Boulevard Saint-Laurent, Suite 103, Montreal, Quebec H2W 1Z5, CA<\/p>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<div class=\"office-con-link\">\r\n\t\t\t\t\t\t\t<a href=\"\/ko\/studio\/montreal\/\" class=\"office-link\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n    <\/div>\r\n        \r\n     <div class=\"office hide hide-point-from-map\" data-number=\"\" data-location=\"Umanaia2\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/02\/umania-min.webp\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Umanaia<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">4398 Boulevard Saint-Laurent, Suite 103, Montreal, Quebec H2W 1Z5, CA<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"https:\/\/www.umanaia.com\/\" class=\"office-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n      <!--Abstraction -->\r\n    <div class=\"office hide hide-point-from-map\" data-number=\"\" data-location=\"Abstraction\">\r\n        <div class=\"office-close\"><\/div>\r\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/02\/abstraction-min.webp\" class=\"office-image\">\r\n        <div class=\"office-tag\">\uc2a4\ud29c\ub514\uc624<\/div>\r\n        <div class=\"office-content\">\r\n            <h4 class=\"office-title\">Abstraction<\/h4>\r\n            <div class=\"office-con-box\">\r\n                <p class=\"office-desc\">Deken Mandersplein 2-4, Valkenswaard, 5554 HT, NL <br>31 787 9990<\/p>\r\n            <\/div>\r\n            <div class=\"office-con-link\">\r\n                <a href=\"http:\/\/abstraction.games\/\" class=\"office-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/10\/office-arrow.svg\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d25efc9 elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"7d25efc9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.7.1\/dist\/leaflet.css\" \/>\r\n<style>\r\n\/*.leaflet-overlay-pane img {\r\n    transition: opacity 0.5s ease-in-out;\r\n    opacity: 1;\r\n}\r\n\r\n.leaflet-overlay-pane img.hide {\r\n    opacity: 0;\r\n}*\/\r\n    .hide-point-from-map {\r\n        opacity: 0 !important;\r\n    }\r\n    .leaflet-control-container .leaflet-top.leaflet-left {top:30% !important;}\r\n    #map { height: 90vh; width: 95vw; background-color:transparent;padding:0px; margin:0px auto;}\r\n    .tab-button {padding: 12px 56px;margin-right:0;cursor: pointer;color:#656D72;font-family: \"Plus Jakarta Sans\",sans-serif;font-size: 16px;font-style: normal;font-weight: 600;line-height: 20px;letter-spacing: 1.28px;text-transform: uppercase;position: relative;text-shadow:0 0 10px #25282A;}\r\n    .tab-button:after {content: '';width: 1px;height: 26px;background: #709AAA;position: absolute;right: -3px;top: 53%;transform: translateY(-50%) skew(-20deg);}\r\n    .tab-button.active, .tab-button:focus, .tab-button:hover {color:#E7E9EF;}\r\n    .tab-button:last-child:after {display:none;}\r\n    .tab-buttons {text-align: center;padding: 0px;display: block;z-index: 999;padding-top: 20px;width:100%;display:flex;flex-wrap:wrap;justify-content:center;}\r\n    \/* position: absolute;margin: 0px auto;top:0;left: 50%;transform: translateX(-50%); *\/\r\n    #overlay {\r\n        position: fixed;\r\n        top: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        height: 100%;\r\n        background-color: rgba(30, 40, 42, 0.7);\r\n        display: none; \/* Hidden by default *\/\r\n        \/* pointer-events: none; Allows clicks to pass through *\/\r\n        z-index:1000;\r\n    }\r\n    .office {width:404px;max-width:95%;min-height:500px;border-radius: 16px;position:absolute;z-index:1001;transform:translate(-50%,-50%);left:50%;top:50%;cursor:auto;display: flex;justify-content: space-between;flex-wrap: wrap;align-items: end;}\r\n    .office.hide {display:none;}\r\n    .office.is-show {display:flex;}\r\n    .office-image {position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;height:100% !important;object-fit:cover;object-position:top center;z-index:-1;border-radius: 16px;}\r\n    \/*\r\n    .office:after {content:'';background:url('https:\/\/virtuos.jin.services\/wp-content\/uploads\/2024\/10\/office-gradient.webp') no-repeat center top \/ cover;position:absolute;left:0;bottom:0;right:0;width:100%;height:404px;border-radius: 16px;}\r\n    *\/\r\n    .office-tag {position:relative;z-index: 5;position:absolute;top:16px;left:0;padding:10px;border-radius: 0px 8px 8px 0px;background:#F58220;color:#E7E9EF;display:inline-block;vertical-align:top;text-transform:uppercase;font-size: 14px;font-style: normal;font-weight: 400;line-height: 16px;letter-spacing: 1.96px;font-family: \"Plus Jakarta Sans\",sans-serif;}\r\n    \r\n    .office-content {position:relative;z-index:5;width:100%;padding:20px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;}\r\n    .office-content .office-title {font-size: 40px;font-style: normal;font-weight: 700;line-height: 40px;text-transform: uppercase;color:#E7E9EF;margin:0 0 16px;width:100%;font-family:\"Antonio\",sans-serif;}\r\n    .office-content .office-desc {font-size: 18px;font-style: normal;font-weight: 400;line-height: 28px;color:#E7E9EF;margin:0;font-family: \"Plus Jakarta Sans\",sans-serif;margin-bottom:16px;}\r\n    .office-content .office-desc:last-child {margin-bottom:0;}\r\n    .office-link {background:#F58220;width:60px;height:60px;border-radius:100px;display:flex;align-items:center;justify-content:center;}\r\n    .office-link img {width:24px;}\r\n    .office-con-box {width:70%;}\r\n\r\n    .office-close {width:24px;height:24px;position:absolute;right:0;top:-40px;z-index:888999;cursor:pointer;background:url('\/wp-content\/uploads\/2024\/10\/office-close.svg') no-repeat center top \/ contain;}\r\n    .container {max-width:100%;margin:0 auto;padding:0;overflow:hidden;}\r\n\r\n    \/*Markers*\/\r\n    .custom-marker {width:14px;height:14px;background:#E7E9EF;border-radius:100%;position:relative;transition:all 0.3s linear;webkit-animation: pulse-animation 3s cubic-bezier(.2,1,.2,1) infinite;animation: pulse-animation 3s cubic-bezier(.2,1,.2,1) infinite;}\r\n    .custom-marker:hover {background:#F58220 !important;}\r\n    .leaflet-marker-icon.custom-marker:hover {z-index:2000 !important;background:#F58220 !important;}\r\n    .leaflet-marker-icon.custom-marker:hover .custom-marker {background:#F58220 !important;}\r\n    .is-active > .custom-marker {box-shadow:0;background:#F58220 !important;}\r\n    \r\n    .custom-marker:before {content: '';width: 17px;height: 10px;background-color: #F58220;position: absolute;left: 50%;top: 71%;transform: translate(-50%, -50%);border-radius: 100%;pointer-events: none !important;cursor: auto;z-index: -1;box-shadow: 0 0 12px 3px #F58220;}\r\n    .leaflet-marker-icon {transition: all 0.2s ease-in-out;opacity: 1;}\r\n    .fade-out {opacity: 0;}\r\n    .fade-in {opacity: 1;}\r\n\r\n    \/*Stacked office*\/\r\n    .office.has-column {min-height:0;}\r\n    .office.has-column:after {display:none;}\r\n    .office-col-box {display:flex;flex-wrap:wrap;flex-direction:column;}\r\n    [class^=\"office-box\"] {width:100%;display: flex;justify-content: space-between;flex-wrap: wrap;align-items: end;position:relative;min-height:250px;transition:all 0.3s ease-in-out;border-bottom:2px solid #709AAA;}\r\n    .office-box:after {content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;height:100%;border-radius:16px 16px 0 0;background:#005570;transition:all 0.3s ease-in-out;}\r\n    .office-col-box [class^=\"office-box\"] .office-image {object-position:center center;object-fit:cover;border-radius:16px 16px 0 0;}\r\n\r\n    .office-box:last-child {border-bottom:none;}\r\n    .office-box:last-child .office-image,\r\n    .office-box:last-child:after {border-radius: 0 0 16px 16px;}\r\n\r\n    .office-box:hover:after {background:#00557080;}\r\n        .grouped-offices {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 20px; \/* Adjust spacing between offices *\/\r\n    justify-content: center; \/* Center the offices *\/\r\n    padding: 20px;\r\n}\r\n.two-office {\r\n    all: unset;\r\n    width: 808px;\r\n    margin: auto;\r\n    max-width: 95%;\r\n    min-height: 500px;\r\n    z-index: 1001;\r\n    position: absolute;\r\n    transform: translate(-50%, -50%);\r\n    left: 50%;\r\n    top: 50%;\r\n    cursor: auto;\r\n\r\n}\r\n.group-office {\r\n      display: grid;\r\n    grid-template-columns: repeat(2, 1fr);\r\n    grid-template-rows: 1fr; \r\n    gap: 16px;\r\n}\r\n.umania-office {\r\n  background: url('\/wp-content\/uploads\/2025\/02\/umania-min.webp');\r\n  background-size: cover;\r\n  background-repeat: no-repeat;\r\n  background-position: center center;\r\n  \t   display: flex;\r\n    justify-content: space-between;\r\n    flex-wrap: wrap;\r\n    align-items: end;\r\n      border-radius: 16px;\r\n      position: relative;\r\n\r\n}\r\n.montreal-office {\r\n  background:  url('\/wp-content\/uploads\/2024\/11\/montreal.png');\r\n  background-size: cover;\r\n  background-repeat: no-repeat;\r\n  background-position: center center;\r\n  \t   display: flex;\r\n    justify-content: space-between;\r\n    flex-wrap: wrap;\r\n    align-items: end;\r\n      border-radius: 16px;\r\nposition: relative;\r\n    \r\n}\r\n    @keyframes pulse-animation {\r\n        0% {\r\n            box-shadow: 0 0 0 0px rgba(245, 130, 32, 1);\r\n        }\r\n        100% {\r\n            box-shadow: 0 0 0 14px rgba(245, 130, 32, 0);\r\n        }\r\n    }\r\n\r\n    @media only screen and (max-width:1440px) {\r\n        .tab-buttons {padding-top:0 !important;}\r\n    }\r\n  \/* @media only screen and (max-width:1200px) {\r\n       .custom-marker {\r\n            width: 10px !important;\r\n            height: 10px !important;\r\n        }\r\n        .custom-marker:before {\r\n            width: 12px;\r\n            height: 8px;\r\n        }\r\n    } *\/\r\n      \r\n    @media only screen and (max-width:1024px) {\r\n        .tab-buttons {top:-1%;}\r\n        .tab-button {font-size: 14px;line-height: 18px;padding:12px 20px;}\r\n        .office {top:50%;}\r\n          #map { \r\n            height: 65vh;\r\n            width: 83vw;\r\n        }\r\n        .custom-marker:before {\r\n            width: 12px;\r\n            height: 8px;\r\n        }\r\n    }\r\n    @media only screen and (max-width:767px) {\r\n        .tab-button {padding:12px 20px;}\r\n        .office {\r\n            max-width: 80%;\r\n            min-height: 410px;\r\n            width: 100%;\r\n        }\r\n        .office-close {\r\n            top: -15px;\r\n        }\r\n        .office-tag {\r\n            top: 40px;\r\n        }\r\n        .office img {\r\n            height: 90% !important;\r\n        }\r\n           #map { \r\n            height: 60vh;\r\n            width: 85vw;\r\n        }\r\n        .office-content .office-title {\r\n            font-size: 24px;\r\n        }\r\n        .office-content .office-desc {\r\n            font-size: 12px;\r\n            line-height: 16px;\r\n        }\r\n        .office-link {\r\n            width: 40px;\r\n            height: 40px;\r\n        }\r\n        .office-content {\r\n            top: -30px;\r\n        }\r\n        .custom-marker:before {\r\n            width: 8px;\r\n            height: 5px;\r\n        }\r\n        .group-office {\r\n            gap: 8px;\r\n        }  \r\n        .office.two-office {\r\n            max-width: 100%;\r\n        }\r\n \r\n          \r\n\r\n    }\r\n    @media only screen and (max-width:480px) {\r\n     \/*   .tab-button:nth-child(3):after {display:none !important;} *\/\r\n           .office.two-office .office-content {\r\n               padding: 10px !important;\r\n               top: 0 !important;\r\n           }\r\n           .office.two-office .office-tag {\r\n               top: 20px !important;\r\n           }\r\n    }\r\n\r\n    #hover-box {\r\n        position: absolute;\r\n        border: 2px solid black;\r\n        background-color: #000; \/* Slightly transparent black *\/\r\n        pointer-events: none; \/* So it doesn\u2019t block interactions *\/\r\n        display: none !important; \/* Initially hidden - remove important to test the mapped hovered region*\/\r\n        z-index: 9999;\r\n    }\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bf3056c elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"7bf3056c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script src=\"https:\/\/unpkg.com\/leaflet@1.7.1\/dist\/leaflet.js\"><\/script>\r\n<script>\r\n\r\n\/\/ Define the different URLs for each region\r\nvar maxZoom = 5;\r\nvar minZoom = 3;\r\nvar regionImageUrls = {\r\n    'all': 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2024\/10\/map-img-1.svg',\r\n    'asia': 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2025\/04\/map_working-file_full-asia1-1.svg',\r\n    'ea': 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2024\/10\/map-img-ea-1.svg',\r\n    'eu': 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2024\/10\/map-img-eu-1.svg',\r\n    'na': 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2024\/10\/map-img-na-1.svg',\r\n};\r\n\/\/ Define the region boundaries (latitude\/longitude or projected coordinates based on your map)\r\nvar regions = {\r\n    'asia': { xMin: 1900, xMax: 2350, yMin: 590, yMax: 830 },\r\n    'ea': { xMin: 1820, xMax: 2260, yMin: 400, yMax: 630 },\r\n    'eu': { xMin: 1200, xMax: 1600, yMin: 230, yMax: 530 },\r\n    'na': { xMin: 0, xMax: 1080, yMin: 10, yMax: 750 },\r\n};\r\n\/\/ Reference to the hover box\r\nvar hoverBox = document.getElementById('hover-box');\r\nvar clickingOffice = false;\r\nvar markerIcon;\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n    \/\/ Initialize the map on the 'map' div\r\n    map = L.map('map', {\r\n        minZoom: minZoom,\r\n        maxZoom: maxZoom,\r\n        center: [0, 0],\r\n        zoom: 2, \/\/ This will be overridden by setDefaultZoom()\r\n        crs: L.CRS.Simple,\r\n        attributionControl: false,\r\n        scrollWheelZoom: false,\r\n        zoomControl: false,\r\n    });\r\n\r\n    \/\/ Function to set default zoom level based on viewport width\r\n    function setDefaultZoom() {\r\n        var viewportWidth = window.innerWidth;\r\n        console.log('defaultzoomtriggered');\r\n        if (viewportWidth >= 1025) {\r\n            map.options.minZoom = 3;\r\n            map.setZoom(3);\r\n        } else if (viewportWidth < 1025 && viewportWidth >= 768) {\r\n            map.options.minZoom = 2;\r\n            map.setZoom(2);\r\n        } else {\r\n            map.options.minZoom = 1;\r\n            map.setZoom(1);\r\n        }\r\n        \r\n    }\r\n\r\n    \/\/ Call the function initially to set the zoom level\r\n    setDefaultZoom();\r\n\r\n    \/\/ Listen for window resize and update zoom level accordingly\r\n    window.addEventListener('resize', setDefaultZoom);\r\n\r\n    \/\/ initialize marker size\r\n    var iconMarkerSize = [14,14];\r\n    var markers = [];\r\n    var marker;\r\n\r\n    \/\/ Define the dimensions and URL of your custom map image\r\n    var w = 2560, h = 1200, url = 'https:\/\/www.virtuosgames.com\/wp-content\/uploads\/2024\/10\/map-img-1.svg';\r\n    var southWest = map.unproject([0, h], maxZoom - 1);\r\n    var northEast = map.unproject([w, 0], maxZoom - 1);\r\n    var bounds = new L.LatLngBounds(southWest, northEast);\r\n    \r\n    \/\/ Add the image overlay to the map\r\n    L.imageOverlay(url, bounds).addTo(map);\r\n    \r\n    \/\/ Fit the map to the bounds\r\n    map.fitBounds(bounds);\r\n    \r\n    \/\/ Set the max bounds to restrict panning\r\n    map.setMaxBounds(bounds);\r\n    \r\n    \/\/ Add maxBoundsViscosity for smoother bounds limitation\r\n    map.options.maxBoundsViscosity = 1.0; \/\/ Makes the bounds \"sticky\"\r\n\r\n    \/\/initialize mapMarkers function\r\n    mapMarkers();\r\n    \/\/disable dragging at first load\r\n    toggleDragging('all');\r\n\r\n    \/\/ initialize markers for each office\r\n    var glasseggMarker, sparxMarker, beyondFxMarker, counterpunchMarker, parisMarker, montpellierMarker, sanFranciscoMarker, chengduMarker, shangHaiMarker, seoulMarker, tokyoMarker, blackShamrockMarker, pragueMarker, warsawMarker, volmiMarker, thirdKindGamesMarker, pipeworksMarker, umanaiaMarker, abstractionMarker, xianMarker;\r\n\r\n    function mapMarkers() {\r\n        \/\/ Loop through all .office elements and create markers based on data-location\r\n        var officeElements = document.querySelectorAll('.office');\r\n        officeElements.forEach(function(officeElement) {\r\n            var locationName = officeElement.getAttribute('data-location');\r\n            var dataNumber = officeElement.getAttribute('data-number') || \"\";\r\n            var pos = pinMap(locationName);\r\n            var hidePin = officeElement.classList.contains('hide-point-from-map');\r\n\r\n            \/\/ Create a div for the marker\r\n            var markerDiv = document.createElement('div');\r\n            var classMarker = 'custom-marker';\r\n            \r\n            markerDiv.className = 'custom-marker'; \/\/ Class for styling\r\n            \r\n            if (hidePin) {\r\n               classMarker += ' hide-point-from-map'; \/\/ Hide the marker if needed\r\n            }\r\n\r\n            \/\/ Create the marker using L.divIcon\r\n            marker = L.marker(map.unproject([pos[0], pos[1]], maxZoom - 1), {\r\n                icon: L.divIcon({\r\n                    className: classMarker, \/\/ Class for the div\r\n                    html: markerDiv.outerHTML, \/\/ Outer HTML of the div\r\n                    iconSize: iconMarkerSize,\r\n                })\r\n            }).addTo(map);\r\n\r\n            \/\/ Set the data-number attribute directly on the marker's icon element\r\n            marker.getElement().setAttribute('data-number', dataNumber);\r\n            markers.push(marker); \/\/ Store reference to the marker\r\n\r\n            switch(locationName) {\r\n                case \"Glassegg\":\r\n                    glasseggMarker = marker;\r\n                    break;\r\n                case \"Glassdalat\":\r\n                    glassdalatMarker = marker;\r\n                    break;\r\n                case \"Sparx\":\r\n                    sparxMarker = marker;\r\n                    break;\r\n                case \"Beyond Fx\":\r\n                    beyondFxMarker = marker;\r\n                    break;\r\n                case \"Counterpunch\":\r\n                    counterpunchMarker = marker;\r\n                    break;\r\n                case \"Paris\":\r\n                    parisMarker = marker;\r\n                    break;\r\n                case \"Montpellier\":\r\n                    montpellierMarker = marker;\r\n                    break;\r\n                case \"Lyon\":\r\n                    lyonMarker = marker;\r\n                case \"Abstraction\":\r\n                    abstractionMarker = marker;                  \r\n                    break;    \r\n               \r\n                case \"Pipeworks\":\r\n                    pipeworksMarker = marker;\r\n                    break;                  \r\n                case \"San Francisco\":\r\n                    sanFranciscoMarker = marker;\r\n                    break;\r\n                case \"Umanaia\":\r\n                    umanaiaMarker = marker;\r\n                    break;                \r\n                case \"Chengdu\":\r\n                    chengduMarker = marker;\r\n                    break;\r\n                case \"Shanghai\":\r\n                    shangHaiMarker = marker;\r\n                    break;\r\n                case \"Seoul\":\r\n                    seoulMarker = marker;\r\n                    break;\r\n                case \"Tokyo\":\r\n                    tokyoMarker = marker;\r\n                    break;\r\n                case \"Black Shamrock\":\r\n                    blackShamrockMarker = marker;\r\n                    break;\r\n                case \"Third Kind Games\":\r\n                    thirdKindGamesMarker = marker;\r\n                    break;\r\n                case \"Prague\":\r\n                    pragueMarker = marker;\r\n                    break;\r\n                case \"Warsaw\":\r\n                    warsawMarker = marker;\r\n                    break;\r\n                case \"Volmi\":\r\n                    volmiMarker = marker;\r\n                    break;\r\n                case \"Xian\":\r\n                    xianMarker = marker;\r\n\t\t\t\t\tbreak;\r\n            }\r\n\r\n            \/\/ Add click event to show the office element when the marker is clicked\r\n            marker.on('click', function() {\r\n                var headerMenu = document.querySelector('.header-top-menu');\r\n\r\n                \/\/ Hide all offices first\r\n                officeElements.forEach(function(el) {\r\n                    el.classList.remove('is-show');\r\n                    el.classList.add('hide');\r\n                });\r\n\r\n                \/\/ Show the clicked office\r\n                officeElement.classList.remove('hide');\r\n                officeElement.classList.add('is-show');\r\n                \r\n                \/\/ Check if the office element is now visible and show\/hide overlay accordingly\r\n                if (officeElement.classList.contains('is-show')) {\r\n                    showOverlay(); \/\/ Show overlay when office is visible\r\n                    headerMenu.classList.add('is-show');\r\n                } else {\r\n                    hideOverlay(); \/\/ Hide overlay if the office is not visible\r\n                    headerMenu.classList.remove('is-show');\r\n                }\r\n\r\n                \/\/ Optionally center the view on the marker\r\n                \/\/ map.setView(marker.getLatLng(), 5); \/\/ Adjust zoom level if needed\r\n\r\n                \/\/ Add the .is-active class to the clicked marker\r\n                marker.getElement().classList.add('is-active');\r\n                \/\/ Scroll to the #global-map div\r\n                document.getElementById('global-map').scrollIntoView({ behavior: 'smooth' });\r\n\r\n                \/\/ Remove .is-active class from other markers\r\n                markers.forEach(function(m) {\r\n                    if (m !== marker) { \/\/ Only remove from other markers\r\n                        markerIcon = m.getElement();\r\n                        if (markerIcon) {\r\n                            markerIcon.classList.remove('is-active');\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n\r\n            marker.addTo(map);\r\n\r\n        });\r\n    }\r\n    \r\n    \/\/ Close the office modal when the close button is clicked\r\n    document.querySelectorAll('.office-close').forEach(function(closeButton) {\r\n        closeButton.addEventListener('click', function() {\r\n            var officeElement = closeButton.closest('.office');\r\n            officeElement.classList.remove('is-show');\r\n            officeElement.classList.add('hide');\r\n            hideOverlay();\r\n            removeMarkers(markers);\r\n        });\r\n    });\r\n\r\n    \/\/ Close the office modal when the overlay is clicked\r\n    document.getElementById('overlay').addEventListener('click', function() {\r\n        var officeElement = document.querySelector('.office.is-show');\r\n        if (officeElement) {\r\n            officeElement.classList.remove('is-show');\r\n            officeElement.classList.add('hide');\r\n        }\r\n        hideOverlay();\r\n        removeMarkers(markers);\r\n    });\r\n\r\n    \/\/ Remove the is-active class from all markers\r\n    function removeMarkers(markers) {\r\n        markers.forEach(function(m) {\r\n            \/\/ Check if the marker is a divIcon and contains the custom-marker class\r\n            markerIcon = m.getElement();\r\n            if (markerIcon && markerIcon.classList.contains('custom-marker')) {\r\n                markerIcon.classList.remove('is-active');\r\n            }\r\n        });\r\n    }\r\n\r\n    \/\/ Function to remove all fade classes\r\n    function resetFadeClasses(markerIcon) {\r\n        markerIcon.classList.remove('fade-in');\r\n        markerIcon.classList.remove('fade-out');\r\n    }\r\n\r\n    \/\/ Zoomstart function\r\n    map.on('zoomstart', function () {\r\n        markers.forEach(marker => {\r\n            const markerIcon = marker.getElement();\r\n            if (markerIcon) {\r\n                resetFadeClasses(markerIcon);  \/\/ Remove any previous transitions\r\n                markerIcon.classList.add('fade-out');  \/\/ Fade out\r\n            }\r\n        });\r\n    });\r\n\r\n    \/\/ Function to update marker icon size based on zoom level\r\n    function updateMarkerIconSize(marker, size) {\r\n        const currentIcon = marker.options.icon;\r\n        const newIcon = L.divIcon({\r\n            className: currentIcon.options.className,\r\n            html: `<div class=\"custom-marker\" style=\"width: ${size[0]}px; height: ${size[1]}px;\"><\/div>`, \/\/ Apply size directly here\r\n            iconSize: size\r\n        });\r\n\r\n        \/\/ Set the new icon to the marker\r\n        marker.setIcon(newIcon);\r\n    }\r\n\r\n    \/\/ Log coordinates when zooming in\/out\r\n    map.on('zoomend', function() {\r\n        \/\/ Scroll to the #global-map div\r\n        \/\/ document.getElementById('global-map').scrollIntoView({ behavior: 'smooth' });\r\n        var center = map.getCenter(); \/\/ Get the current center of the map\r\n\r\n        \/* Uncomment console.log to check the coordinates *\/\r\n        console.log(\"Map center at zoom level \" + map.getZoom() + \": \" + center);\r\n\r\n        \/\/ Determine icon size based on the current zoom level\r\n        let newSize;\r\n        if (map.getZoom() === 1) {\r\n            newSize = [8, 8];\r\n        } else if (map.getZoom() === 2) {\r\n            newSize = [10, 10];\r\n        } else if (map.getZoom() === 3 || map.getZoom() === 4) {\r\n            newSize = [14, 14];\r\n        } else if (map.getZoom() === 5) {\r\n            newSize = [14, 14];\r\n        }\r\n\r\n        \/\/ Add or remove maxBounds based on zoom level\r\n        \/\/ if (map.getZoom() === 2) {\r\n        \/\/     map.dragging.enable();\r\n        \/\/ } else {\r\n        \/\/     map.dragging.disable();\r\n        \/\/ }\r\n\r\n        markers.forEach(marker => {\r\n            const markerIcon = marker.getElement();\r\n            updateMarkerIconSize(marker, newSize); \/\/ update markersizes\r\n\r\n            if (markerIcon) {\r\n                resetFadeClasses(markerIcon);  \/\/ Remove any previous transitions\r\n                markerIcon.classList.add('fade-out');  \/\/ Reapply fade-out\r\n                \/\/ Add a delay before reapplying fade-out\r\n                    \r\n                \/\/ After 0.5 seconds, fade-in the marker\r\n                setTimeout(function () {\r\n                    resetFadeClasses(markerIcon);  \/\/ Remove fade-out again\r\n                    markerIcon.classList.add('fade-in');  \/\/ Fade in\r\n                }, 500);  \/\/ 0.5 seconds delay\r\n                    \r\n            }\r\n        });\r\n\r\n        if(glasseggMarker || glassdalatMarker || sparxMarker || beyondFxMarker || counterpunchMarker || parisMarker || montpellierMarker || lyonMarker || abstractionMarker || pipeworksMarker || sanFranciscoMarker || umanaiaMarker || chengduMarker || shangHaiMarker || seoulMarker || tokyoMarker || blackShamrockMarker || pragueMarker || warsawMarker || volmiMarker || thirdKindGamesMarker || xianMarker) {\r\n            \/\/ point to pinMap string variables\r\n            var glassEggpos = pinMap('Glassegg');\r\n            var glassdalatpos = pinMap('Glassdalat');\r\n            var sparxPos = pinMap('Sparx');\r\n            var beyondFxPos = pinMap('Beyond Fx');\r\n            var counterpunchPos = pinMap('Counterpunch');\r\n            var parisPos = pinMap('Paris');\r\n            var montpellierPos = pinMap('Montpellier');\r\n            var pipeworksPos = pinMap('Pipeworks');\r\n            var lyonPos = pinMap('Lyon');\r\n            var abstractionPos = pinMap('Abstraction');\r\n            var sanFranciscoPos = pinMap('San Francisco');\r\n            var umanaiaPos = pinMap('Umanaia');\r\n            var chengduPos = pinMap('Chengdu');\r\n            var shangHaiPos = pinMap('Shanghai');\r\n            var seoulPos = pinMap('Seoul');\r\n            var tokyoPos = pinMap('Tokyo');\r\n            var blackShamrockPos = pinMap('Black Shamrock');\r\n            var praguePos = pinMap('Prague');\r\n            var warsawPos = pinMap('Warsaw');\r\n            var volmiPos = pinMap('Volmi');\r\n            var thirdKindGamesPos = pinMap('Third Kind Games');\r\n            var xianPos = pinMap('Xian');\r\n            \r\n            \/\/ mobile\r\n            if (map.getZoom() === 1) {\r\n                glassEggpos[1] -= 70;\r\n               \r\n                sparxPos[1] -= 70;\r\n                parisPos[0] += 30;\r\n                parisPos[1] -= 120;\r\n                montpellierPos[0] += 30;\r\n                montpellierPos[1] -= 130;\r\n\r\n              \r\n                pipeworksPos[1] -= 340;\r\n       \r\n           \r\n                counterpunchPos[0] += 40;\r\n                counterpunchPos[1] -= 130;\r\n                sanFranciscoPos[0] += 40;\r\n                sanFranciscoPos[1] -= 160;\r\n                beyondFxPos[0] += 60;\r\n                beyondFxPos[1] -= 120;\r\n\r\n                lyonPos[0] += 40;\r\n                lyonPos[1] -= 140;\r\n                abstractionPos[1] -= 450;\r\n                umanaiaPos[1] -= 380;\r\n                chengduPos[0] -= 20;\r\n                chengduPos[1] -= 220;\r\n                shangHaiPos[1] -= 260;\r\n                seoulPos[1] -= 280;\r\n                tokyoPos[1] -= 290;\r\n                blackShamrockPos[1] -= 300;\r\n                praguePos[0] += 50;\r\n                praguePos[1] -= 330;\r\n                warsawPos[0] += 50;\r\n                warsawPos[1] -= 370;\r\n                volmiPos[0] += 60;\r\n                volmiPos[1] -= 420;\r\n                thirdKindGamesPos[1] -= 300;\r\n            }\r\n            \/\/ tablet\r\n            if (map.getZoom() === 2) {\r\n                glassEggpos[0] -= 0;\r\n                glassEggpos[1] -= 40;\r\n               \r\n                sparxPos[1] -= 50;\r\n                beyondFxPos[1] -= 50;\r\n                counterpunchPos[1] -= 60;\r\n                parisPos[1] -= 60;\r\n                montpellierPos[1] -= 60;\r\n                lyonPos[1] -= 65;\r\n                abstractionPos[1] -= 140;\r\n              \r\n                pipeworksPos[1] -= 160;\r\n                \r\n                sanFranciscoPos[0] += 10;\r\n                sanFranciscoPos[1] -= 90;\r\n\r\n                umanaiaPos[1] -= 140;\r\n                chengduPos[1] -= 70;\r\n                shangHaiPos[1] -= 80;\r\n\r\n                seoulPos[1] -= 100;\r\n                tokyoPos[1] -= 100;\r\n                blackShamrockPos[1] -= 90;\r\n                thirdKindGamesPos[0] += 5;\r\n                thirdKindGamesPos[1] -= 130;\r\n                praguePos[1] -= 90;\r\n                warsawPos[1] -= 100;\r\n                volmiPos[1] -= 130;\r\n            }\r\n             \/\/ First Zoom\r\n            if (map.getZoom() === 4) {\r\n                glassEggpos[0] -= 3;\r\n                glassEggpos[1] += 30;\r\n                glassdalatpos[0] += 0;\r\n                glassdalatpos[1] += 7;\r\n                sparxPos[0] += 3;\r\n                sparxPos[1] += 35;\r\n                beyondFxPos[1] += 30;\r\n                beyondFxPos[0] -= 5;\r\n                counterpunchPos[1] += 35;\r\n                counterpunchPos[0] -= 8;\r\n                parisPos[1] += 60;\r\n                montpellierPos[1] += 60;\r\n                lyonPos[1] += 60;\r\n                abstractionPos[1] += 170;\r\n      \r\n                pipeworksPos[0] -= 20;\r\n                pipeworksPos[1] += 160;\r\n\r\n                sanFranciscoPos[0] -= 10;\r\n                sanFranciscoPos[1] += 60;\r\n\r\n                umanaiaPos[1] += 150;\r\n                chengduPos[1] += 90;\r\n                shangHaiPos[1] += 115;\r\n\r\n                seoulPos[1] += 110;\r\n                tokyoPos[1] += 115;\r\n                blackShamrockPos[1] += 130;\r\n                thirdKindGamesPos[1] += 134;\r\n                praguePos[1] += 150;\r\n                warsawPos[1] += 145;\r\n                volmiPos[1] += 180;\r\n                xianPos[1] += 25;\r\n            }\r\n            \/\/ Second Zoom\r\n            if (map.getZoom() === 5) {\r\n                glassEggpos[0] -= 3;\r\n                glassEggpos[1] += 45;\r\n                glassdalatpos[0] += 10;\r\n                glassdalatpos[1] += 40;   \r\n                sparxPos[0] += 4;\r\n                sparxPos[1] += 58;\r\n\r\n                beyondFxPos[1] += 55\r\n                beyondFxPos[0] -= 5;\r\n                counterpunchPos[1] += 60;\r\n                counterpunchPos[0] -= 3;\r\n                parisPos[1] += 90;\r\n                montpellierPos[1] += 90;\r\n                lyonPos[1] += 90;\r\n                abstractionPos[1] += 250;\r\n              \r\n                pipeworksPos[0] -= 25;\r\n                pipeworksPos[1] += 240;\r\n                sanFranciscoPos[0] -= 10;\r\n                sanFranciscoPos[1] += 100;\r\n\r\n                umanaiaPos[1] += 265;\r\n                chengduPos[1] += 120;\r\n                shangHaiPos[1] +=175;\r\n                seoulPos[1] += 165;\r\n                tokyoPos[1] += 170;\r\n                blackShamrockPos[1] += 190;\r\n                thirdKindGamesPos[1] += 205;\r\n                praguePos[1] += 220;\r\n                warsawPos[1] += 220;\r\n                volmiPos[1] += 265;\r\n            }\r\n\r\n            \/\/ re-initialize position when zooming\r\n            glasseggMarker.setLatLng(map.unproject(glassEggpos, maxZoom - 1));\r\n            glassdalatMarker.setLatLng(map.unproject(glassdalatpos, maxZoom - 1));\r\n            parisMarker.setLatLng(map.unproject(parisPos, maxZoom - 1));\r\n            montpellierMarker.setLatLng(map.unproject(montpellierPos, maxZoom - 1));           \r\n            lyonMarker.setLatLng(map.unproject(lyonPos, maxZoom - 1));\r\n            abstractionMarker.setLatLng(map.unproject(abstractionPos, maxZoom - 1));\r\n          \r\n            pipeworksMarker.setLatLng(map.unproject(pipeworksPos, maxZoom - 1));\r\n            sparxMarker.setLatLng(map.unproject(sparxPos, maxZoom - 1));\r\n            beyondFxMarker.setLatLng(map.unproject(beyondFxPos, maxZoom - 1));\r\n            counterpunchMarker.setLatLng(map.unproject(counterpunchPos, maxZoom - 1));\r\n            sanFranciscoMarker.setLatLng(map.unproject(sanFranciscoPos, maxZoom - 1));\r\n            umanaiaMarker.setLatLng(map.unproject(umanaiaPos, maxZoom - 1));\r\n            chengduMarker.setLatLng(map.unproject(chengduPos, maxZoom - 1));\r\n            shangHaiMarker.setLatLng(map.unproject(shangHaiPos, maxZoom - 1));\r\n            seoulMarker.setLatLng(map.unproject(seoulPos, maxZoom - 1));\r\n            tokyoMarker.setLatLng(map.unproject(tokyoPos, maxZoom - 1));\r\n            blackShamrockMarker.setLatLng(map.unproject(blackShamrockPos, maxZoom - 1));\r\n            thirdKindGamesMarker.setLatLng(map.unproject(thirdKindGamesPos, maxZoom - 1));\r\n            pragueMarker.setLatLng(map.unproject(praguePos, maxZoom - 1));\r\n            warsawMarker.setLatLng(map.unproject(warsawPos, maxZoom - 1));\r\n            volmiMarker.setLatLng(map.unproject(volmiPos, maxZoom - 1));\r\n            xianMarker.setLatLng(map.unproject(xianPos, maxZoom - 1));\r\n        }\r\n\r\n    });\r\n\r\n    \/\/ Log coordinates based on cursor position\r\n        map.on('mousemove', function (e) {\r\n        var cursorCoordinates = e.latlng;\r\n        var projectedPos = map.project(cursorCoordinates, maxZoom - 1);\r\n        var unprojectedPos = map.unproject(projectedPos, maxZoom - 1);\r\n\r\n         \/* Uncomment console.log to check the coordinates \r\n            Legend:\r\n            projectedPos -> used for placing the exact marker location in the map (pinMap)\r\n            cursorCoordinates -> used for zoomtoRegion() to zoomIn exact to the specific region\r\n        *\/\r\n        \/\/ console.log('PinMap Location Coordinates:', projectedPos);\r\n        \/\/ console.log('Unprojected coordinates:', unprojectedPos);\r\n    \r\n        \/\/ Loop through each region to detect hovering\r\n        var regionFound = false;\r\n        for (var region in regions) {\r\n            var regionBounds = regions[region];\r\n    \r\n            \/\/ Treat 'ea' (East Asia) as part of 'asia'\r\n            if (region === 'ea') {\r\n                region = 'asia';\r\n            }\r\n    \r\n            if (\r\n                projectedPos.x >= regionBounds.xMin &&\r\n                projectedPos.x <= regionBounds.xMax &&\r\n                projectedPos.y >= regionBounds.yMin &&\r\n                projectedPos.y <= regionBounds.yMax\r\n            ) {\r\n                \/\/ Display the hover-box when inside a region\r\n                hoverBox.style.display = 'block';\r\n    \r\n                \/\/ Convert projected map coordinates to screen pixels\r\n                var northWest = map.latLngToContainerPoint(\r\n                    map.unproject([regionBounds.xMin, regionBounds.yMin], maxZoom - 1)\r\n                );\r\n                var southEast = map.latLngToContainerPoint(\r\n                    map.unproject([regionBounds.xMax, regionBounds.yMax], maxZoom - 1)\r\n                );\r\n    \r\n                \/\/ Set the hover-box size and position\r\n                hoverBox.style.left = northWest.x + 'px';\r\n                hoverBox.style.top = northWest.y + 'px';\r\n                hoverBox.style.width = southEast.x - northWest.x + 'px';\r\n                hoverBox.style.height = southEast.y - northWest.y + 'px';\r\n    \r\n                \/\/ Change the map image based on the hovered region\r\n                changeMap(region);\r\n    \r\n                regionFound = true;\r\n                break;\r\n            }\r\n        }\r\n    \r\n        \/\/ Hide the hover-box if not hovering over any region\r\n        if (!regionFound) {\r\n            hoverBox.style.display = 'none';\r\n            \/\/ Reset map to default if no region is found\r\n            resetMap();\r\n        }\r\n    });\r\n   \r\n\r\n    \/\/ Overlay control\r\n    var overlay = document.getElementById('overlay');\r\n\r\n    \/\/ Show overlay after a marker is clicked\r\n    function showOverlay() {\r\n        overlay.style.display = 'block';\r\n    }\r\n\r\n    \/\/ Hide overlay when .officeElement is hidden\r\n    function hideOverlay() {\r\n        overlay.style.display = 'none'; \/\/ Ensure it's hidden when called\r\n    }\r\n\r\n    \/\/ Zoom to specific region based on button click\r\n    document.querySelectorAll('.tab-button').forEach(function(button) {\r\n        button.addEventListener('click', function() {\r\n            \/\/ Remove the active class from all buttons\r\n            document.querySelectorAll('.tab-button').forEach(function(btn) {\r\n                btn.classList.remove('active');\r\n            });\r\n\r\n            \/\/ Add the active class to the clicked button\r\n            this.classList.add('active');\r\n\r\n            \/\/ Get the region and zoom to it\r\n            var region = this.getAttribute('data-region');\r\n            zoomToRegion(region);\r\n\r\n            \/\/ Scroll to the #global-map div with an offset\r\n            const mapElement = document.getElementById('global-map');\r\n            mapElement.scrollIntoView({ behavior: 'smooth' });\r\n        });\r\n    });\r\n\r\n    \/\/ document.getElementById('exit-map-btn').addEventListener('click', function(e) {\r\n    \/\/     e.preventDefault(); \/\/ Prevent default anchor behavior\r\n\r\n    \/\/     let nextSection = document.querySelector('.next-section');\r\n    \/\/     if (nextSection) {\r\n    \/\/         nextSection.scrollIntoView({ behavior: 'smooth' });\r\n    \/\/     }\r\n    \/\/ });\r\n\r\n    \/\/ Add click listener to the overlay\r\n    overlay.addEventListener('click', function() {\r\n        \/\/ Hide all office elements by adding the .hide class\r\n        var officeElements = document.querySelectorAll('.office');\r\n        officeElements.forEach(function(officeElement) {\r\n            officeElement.classList.add('hide');\r\n            officeElement.classList.remove('is-show'); \/\/ Remove the is-show class if it's currently active\r\n        });\r\n        hideOverlay();\r\n        \/\/ Remove the .is-active class from all markers\r\n        markers.forEach(function(marker) {\r\n            markerIcon = marker.getElement();\r\n            if (markerIcon) {\r\n                markerIcon.classList.remove('is-active');\r\n            }\r\n        });\r\n    });\r\n\r\n});\r\n\r\n\/**\r\n * FUNCTIONS\r\n**\/\r\n \r\n\/\/ Define the pinMap function to return positions based on data-location attribute\r\nfunction pinMap(location) {\r\n    switch (location) {\r\n        case 'Singapore':\r\n            return [1992, 759];\r\n        case 'Kuala Lumpur':\r\n                return [1979, 740];\r\n        case 'Xian':\r\n            return [2008, 525];\r\n        case 'Glassegg':\r\n            return [2010, 635];\r\n        case 'Glassdalat':\r\n            return [2010, 630];\r\n        case 'Sparx':\r\n            return [2000, 615];\r\n        case 'Beyond Fx':\r\n            return [370, 460];\r\n        case 'Counterpunch':\r\n            return [360, 455];\r\n        case 'Paris':\r\n            return [1322, 315];\r\n        case 'Montpellier':\r\n            return [1350, 350];       \r\n        case 'Lyon':\r\n            return [1380, 320];\r\n        case 'Abstraction':\r\n            return [1355, 85];       \r\n        case 'Pipeworks':\r\n            return [365, 120];\r\n        case 'San Francisco':\r\n            return [330, 320];\r\n        case 'Umanaia':\r\n            return [675, 118];\r\n        case 'Chengdu':\r\n            return [1970, 400];\r\n        case 'Shanghai':\r\n            return [2085, 350];\r\n        case 'Seoul':\r\n            return [2140, 300];\r\n        case 'Tokyo':\r\n            return [2215, 305];\r\n        case 'Black Shamrock':\r\n            return [1280, 145];\r\n        case 'Third Kind Games':\r\n            return [1310, 135];\r\n        case 'Prague':\r\n            return [1425, 150];\r\n        case 'Warsaw':\r\n            return [1465, 110];\r\n        case 'Volmi':\r\n            return [1530, 95];     \r\n        default:\r\n            return [0, 0]; \/\/ Default position if location not found\r\n    }\r\n}\r\n\r\n\/\/ Function to toggle dragging based on zoom level and viewport width\r\nfunction toggleDragging(region) {\r\n    var viewportWidth = window.innerWidth;\r\n\r\n    \/\/ Enable dragging if viewport width is between 1025px and 1300px\r\n    if (viewportWidth >= 1025 && viewportWidth <= 1300) {\r\n        map.dragging.enable();\r\n        console.log('Dragging enabled for viewport between 1025px and 1300px');\r\n        return;\r\n    }\r\n\r\n    if (region === 'all') {\r\n        \/\/ Disable zooming and dragging for \"All\" region on desktop\r\n        map.scrollWheelZoom.disable();\r\n        if (viewportWidth > 767) {\r\n            map.dragging.disable();\r\n        } else {\r\n            map.dragging.enable(); \/\/ Allow dragging on mobile\r\n        }\r\n    } else {\r\n        \/\/ only enable() zooming when desired\r\n        map.scrollWheelZoom.disable();\r\n        \/\/ Enable dragging for other regions\r\n        map.dragging.enable();\r\n    }\r\n\r\n    console.log('region is: ', region);\r\n}\r\n\r\n\/\/ Define the zoomToRegion function globally so it can be accessed from the HTML\r\nfunction zoomToRegion(region) {\r\n    \r\n    var regionCoords = {\r\n        'all': map.unproject([1280, 600], maxZoom - 1),\r\n        'asia': L.latLng(-39.234375, 127.46875), \/\/ Adjusted to cover both East and Southeast Asia\r\n        'na': L.latLng(-21.4375, 34.875),\r\n        'eu': map.unproject([1500, 320], maxZoom - 1),\r\n    };\r\n\r\n    \/\/ this is the zoomLevel for zoomToRegion() function\r\n    var zoomLevel = {\r\n        'all': 3,\r\n        'asia': 4, \/\/ Unified zoom level for Asia\r\n        'na': 4,\r\n        'eu': 4,\r\n    };\r\n\r\n    \/\/ Function to determine and adjust zoom levels based on window width\r\n    function adjustZoomLevels() {\r\n        var viewportWidth = window.innerWidth;\r\n\r\n        if (viewportWidth >= 1025) {\r\n            \/\/ Set zoom levels for desktop view\r\n            zoomLevel['all'] = 3;\r\n            map.setMinZoom(3);\r\n        } else if (viewportWidth < 1025 && viewportWidth >= 768) {\r\n            \/\/ Set zoom levels for tablet view\r\n            zoomLevel['all'] = 2;\r\n            map.setMinZoom(2);\r\n        } else {\r\n            \/\/ Adjust zoom levels for mobile viewports\r\n            zoomLevel = {\r\n                'all': 1,\r\n                'asia': 4,\r\n                'na': 4,\r\n                'eu': 4,\r\n            };\r\n\r\n            \/\/ re-adjust regionCoordinates on mobileView\r\n            regionCoords = {\r\n                'all': map.unproject([1280, 600], maxZoom - 1),\r\n                'asia': L.latLng(-45.90464, 129.343596),\r\n                'ea': L.latLng(-31.842995, 130.028333),\r\n                'na': L.latLng(-30.687429, 29.438333),\r\n                'eu': L.latLng(-28.281728, 89.592061),\r\n            };\r\n            \/\/ Set minZoom to 2 for mobile viewports\r\n            map.setMinZoom(1);\r\n        }\r\n    }\r\n\r\n    \/\/ Run the adjustZoomLevels function initially\r\n    adjustZoomLevels();\r\n\r\n    \/\/ Listen for window resize and adjust zoom levels accordingly\r\n    window.addEventListener('resize', adjustZoomLevels);\r\n\r\n    if (regionCoords[region]) {\r\n\r\n        \/\/ \/\/ Update the image overlay with the new URL for the selected region\r\n        var newUrl = regionImageUrls[region] || regionImageUrls['all'];\r\n\r\n        \/\/ Remove the existing overlay\r\n        map.eachLayer(function (layer) {\r\n            if (layer instanceof L.ImageOverlay) {\r\n                map.removeLayer(layer);\r\n            }\r\n        });\r\n\r\n        \/\/ Add the new image overlay\r\n        var bounds = new L.LatLngBounds(map.unproject([0, 1200], maxZoom - 1), map.unproject([2560, 0], maxZoom - 1));\r\n        L.imageOverlay(newUrl, bounds).addTo(map);\r\n\r\n        setTimeout(() => {\r\n            map.setView(regionCoords[region], zoomLevel[region]);\r\n        }, 100);\r\n        toggleDragging(region);\r\n    }\r\n}\r\n\r\n\/\/ Function to change the map image based on hovered region\r\nfunction changeMap(region) {\r\n    \/\/ Check if the region has a corresponding image\r\n    if (regionImageUrls[region]) {\r\n        var newUrl = regionImageUrls[region];\r\n        \r\n        \/\/ Remove the current overlay image\r\n        map.eachLayer(function (layer) {\r\n            if (layer instanceof L.ImageOverlay) {\r\n                var img = layer.getElement();\r\n                if (img) img.classList.add('hide');\r\n                setTimeout(function () {\r\n                    map.removeLayer(layer);\r\n                }, 500);\r\n            }\r\n        });\r\n        \r\n        \/\/ Add the new image overlay for the region\r\n        var bounds = new L.LatLngBounds(\r\n            map.unproject([0, 1200], maxZoom - 1), \r\n            map.unproject([2560, 0], maxZoom - 1)\r\n        );\r\n        L.imageOverlay(newUrl, bounds).addTo(map);\r\n    }\r\n}\r\n\r\n\/\/ Function to reset the map to the default image\r\nfunction resetMap() {\r\n    var defaultUrl = regionImageUrls['all'];\r\n    \r\n    \/\/ Remove the current overlay image\r\n    map.eachLayer(function (layer) {\r\n        if (layer instanceof L.ImageOverlay) {\r\n            map.removeLayer(layer);\r\n        }\r\n    });\r\n    \r\n    \/\/ Add the default image overlay\r\n    var bounds = new L.LatLngBounds(\r\n        map.unproject([0, 1200], maxZoom - 1), \r\n        map.unproject([2560, 0], maxZoom - 1)\r\n    );\r\n    L.imageOverlay(defaultUrl, bounds).addTo(map);\r\n}\r\n\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63a6c13 elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"63a6c13\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>.global-presence-title,  #exit-map-btn {display:none;}<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":17,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-6229","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/pages\/6229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/comments?post=6229"}],"version-history":[{"count":28,"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/pages\/6229\/revisions"}],"predecessor-version":[{"id":22086,"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/pages\/6229\/revisions\/22086"}],"wp:attachment":[{"href":"https:\/\/web-staging.virtuosgames.com\/ko\/wp-json\/wp\/v2\/media?parent=6229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}