{"id":7109,"date":"2026-08-19T13:28:23","date_gmt":"2026-08-19T10:28:23","guid":{"rendered":"https:\/\/makeupatelier.ee\/meigikool\/?p=7109"},"modified":"2026-10-03T13:20:19","modified_gmt":"2026-10-03T10:20:19","slug":"kaart","status":"publish","type":"post","link":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/","title":{"rendered":"Kaart"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7109\" class=\"elementor elementor-7109\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bd8135a e-con-full e-flex e-con e-parent\" data-id=\"bd8135a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0151fae elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"0151fae\" 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>\r\n.atelier-intro {\r\n  box-sizing: border-box;\r\n  width: 100%;\r\n  max-width: none;\r\n  margin: 0 4%;\r\n  padding: 24px 0 32px;\r\n  font-family: Arial, Helvetica, sans-serif;\r\n  text-align: left;\r\n}\r\n\r\n.atelier-intro .atelier-eyebrow {\r\n  margin: 0 0 16px;\r\n  color: #96776d;\r\n  font-family: inherit;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n  line-height: 1.5;\r\n  letter-spacing: 1.5px;\r\n  text-transform: none;\r\n}\r\n\r\n.atelier-intro h1 {\r\n  margin: 0 0 22px;\r\n  color: #242424;\r\n  font-family: inherit;\r\n  font-size: clamp(40px, 4.5vw, 60px);\r\n  font-weight: 700;\r\n  line-height: 1.1;\r\n  letter-spacing: -1.5px;\r\n  text-transform: none;\r\n}\r\n\r\n.atelier-intro .atelier-description {\r\n  \r\n  margin: 0 0 18px;\r\n  color: #383838;\r\n  font-family: inherit;\r\n  font-size: 21px;\r\n  font-weight: 400;\r\n  line-height: 1.5;\r\n}\r\n\r\n.atelier-intro .atelier-contact {\r\n  \r\n  margin: 0;\r\n  padding-left: 16px;\r\n  border-left: 2px solid #b6988b;\r\n  color: #68615e;\r\n  font-family: inherit;\r\n  font-size: 17px;\r\n  font-weight: 400;\r\n  line-height: 1.5;\r\n}\r\n<\/style>\r\n\r\n<div class=\"atelier-intro\">\r\n  <p class=\"atelier-eyebrow\">ATELIER MEIGIKOOLi JUMESTAJATE KAART<\/p>\r\n\r\n  <h1>Leia oma jumestaja<\/h1>\r\n\r\n  <p class=\"atelier-description\">\r\n    \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis.\r\n  <\/p>\r\n\r\n  <p class=\"atelier-contact\">\r\n    Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust.\r\n  <\/p>\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-f711efb elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-text-editor\" data-id=\"f711efb\" 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<style>\n  .atelier-intro {\n    max-width: 720px;\n    margin: 0 auto;\n    padding: 8px 0 20px;\n    font-family: Arial, Helvetica, sans-serif;\n    text-align: left;\n  }\n\n  .atelier-intro .atelier-eyebrow {\n    margin: 0 0 12px;\n    color: #96776d;\n    font-family: inherit;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 1.5;\n    letter-spacing: 1.2px;\n    text-transform: none;\n  }\n\n  .atelier-intro h1 {\n    margin: 0 0 18px;\n    color: #242424;\n    font-family: inherit;\n    font-size: 44px;\n    font-weight: 700;\n    line-height: 1.12;\n    letter-spacing: -1px;\n    text-transform: none;\n  }\n\n  .atelier-intro .atelier-description {\n    margin: 0 0 12px;\n    color: #383838;\n    font-family: inherit;\n    font-size: 18px;\n    font-weight: 400;\n    line-height: 1.5;\n    letter-spacing: normal;\n  }\n\n  .atelier-intro .atelier-contact {\n    margin: 0;\n    padding-left: 14px;\n    border-left: 2px solid #b6988b;\n    color: #68615e;\n    font-family: inherit;\n    font-size: 16px;\n    font-weight: 400;\n    line-height: 1.5;\n    letter-spacing: normal;\n  }\n\n  @media (max-width: 767px) {\n    .atelier-intro {\n      padding: 4px 0 16px;\n    }\n\n    .atelier-intro .atelier-eyebrow {\n      margin-bottom: 10px;\n      font-size: 10px;\n      letter-spacing: 0.8px;\n    }\n\n    .atelier-intro h1 {\n      margin-bottom: 14px;\n      font-size: clamp(28px, 8vw, 34px);\n      letter-spacing: -0.7px;\n    }\n\n    .atelier-intro .atelier-description {\n      margin-bottom: 12px;\n      font-size: 16px;\n      line-height: 1.45;\n    }\n\n    .atelier-intro .atelier-contact {\n      padding-left: 12px;\n      font-size: 14px;\n      line-height: 1.45;\n    }\n  }\n<\/style>\n\n<div class=\"atelier-intro\">\n  <p class=\"atelier-eyebrow\">\n    ATELIER MEIGIKOOLi JUMESTAJATE KAART\n  <\/p>\n\n  <h1>Leia oma jumestaja<\/h1>\n\n  <p class=\"atelier-description\">\n    \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud\n    ATELIER MEIGIKOOLis.\n  <\/p>\n\n  <p class=\"atelier-contact\">\n    Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust.\n  <\/p>\n<\/div>\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-c677678 elementor-widget elementor-widget-html\" data-id=\"c677678\" 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<!-- =====================================================================\n  ATELIER MEIGIKOOLi jumestajate kaart\n  ---------------------------------------------------------------------\n===================================================================== -->\n\n<div id=\"jk-wrap\">\n  <div id=\"jk-filters\">\n    <div class=\"jk-filters-title\">T\u00e4psusta otsingut<\/div>\n    <div id=\"jk-filters-row\">\n      <div id=\"jk-city-buttons\" class=\"jk-pill-row\"><span class=\"jk-filter-label\">Asukoht<\/span><\/div>\n      <div id=\"jk-service-buttons\" class=\"jk-pill-row\"><span class=\"jk-filter-label\">Teenused<\/span><\/div>\n      <div id=\"jk-valjasoit-buttons\" class=\"jk-pill-row\"><span class=\"jk-filter-label\">V\u00e4ljas\u00f5it<\/span><\/div>\n      <button id=\"jk-reset\" class=\"jk-reset-btn\">L\u00e4htesta filtrid<\/button>\n    <\/div>\n  <\/div>\n\n  <div id=\"jk-body\">\n    <div id=\"jk-map\"><\/div>\n    <div id=\"jk-list-panel\">\n      <div id=\"jk-list-count\"><\/div>\n      <div id=\"jk-list\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- Leaflet + clustering (free, no key, no signup needed) -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.min.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.Default.min.css\" \/>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/leaflet.markercluster.min.js\"><\/script>\n\n<style>\n  #jk-wrap {\n    --jk-ink: #1a1a1a;\n    --jk-mid: #6b6b6b;\n    --jk-line: #e2e2e2;\n    --jk-bg: #f7f7f7;\n    --jk-white: #ffffff;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n    color: var(--jk-ink);\n    max-width: 1200px;\n    margin: 0 auto;\n  }\n\n  \/* ---------- filters ---------- *\/\n  #jk-filters {\n    padding: 16px 4px 20px;\n    border-bottom: 1px solid var(--jk-line);\n    margin-bottom: 16px;\n  }\n  .jk-filters-title {\n    font-weight: 700;\n    font-size: 14px;\n    color: var(--jk-ink);\n    margin-bottom: 10px;\n  }\n  #jk-filters-row {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: 20px;\n  }\n  .jk-filter-label {\n    font-size: 12px;\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n    color: var(--jk-mid);\n    margin-right: 2px;\n    flex-shrink: 0;\n    font-weight: 500;\n  }\n  \/* Label *\/\n  .jk-pill-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }\n  .jk-pill {\n    border: 1.5px solid var(--jk-ink);\n    background: var(--jk-white);\n    color: var(--jk-ink);\n    border-radius: 999px;\n    padding: 6px 14px;\n    font-size: 13px;\n    cursor: pointer;\n    transition: all 0.15s ease;\n  }\n  .jk-pill:hover { background: var(--jk-bg); }\n  .jk-pill.active { background: var(--jk-ink); color: var(--jk-white); border-color: var(--jk-ink); }\n  .jk-reset-btn {\n    margin-left: auto;\n    background: none;\n    border: none;\n    text-decoration: underline;\n    color: var(--jk-mid);\n    font-size: 13px;\n    cursor: pointer;\n  }\n  .jk-reset-btn:hover { color: var(--jk-ink); }\n\n  \/* ---------- layout ---------- *\/\n  #jk-body {\n    display: flex;\n    gap: 20px;\n    align-items: flex-start;\n  }\n  #jk-map {\n    flex: 1 1 62%;\n    height: 560px;\n    border-radius: 8px;\n    background: var(--jk-bg);\n  }\n  #jk-list-panel {\n    flex: 1 1 38%;\n    max-height: 560px;\n    overflow-y: auto;\n    border: 1px solid var(--jk-line);\n    border-radius: 8px;\n    background: var(--jk-white);\n  }\n  #jk-list-count {\n    padding: 12px 16px;\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--jk-ink);\n    border-bottom: 1px solid var(--jk-line);\n    position: sticky;\n    top: 0;\n    background: var(--jk-white);\n  }\n  .jk-city-heading {\n    padding: 12px 16px 4px;\n    font-size: 12px;\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n    color: var(--jk-mid);\n  }\n  .jk-list-item {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 10px 16px;\n    cursor: pointer;\n    border-bottom: 1px solid var(--jk-line);\n    transition: background 0.15s ease;\n  }\n  .jk-list-item:hover, .jk-list-item.jk-active { background: var(--jk-bg); }\n  .jk-list-photo {\n    width: 40px; height: 40px; border-radius: 50%;\n    object-fit: cover; background: var(--jk-line); flex-shrink: 0;\n  }\n  .jk-list-name { font-size: 14px; font-weight: 600; margin: 0; }\n  .jk-list-sub { font-size: 12px; color: var(--jk-mid); margin: 2px 0 0; }\n\n  \/* ---------- markers ---------- *\/\n  .jk-marker {\n    width: 16px; height: 16px;\n    border-radius: 50%;\n    background: var(--jk-ink);\n    border: 2px solid var(--jk-white);\n    box-shadow: 0 0 0 1px var(--jk-ink);\n  }\n  .jk-cluster-icon {\n    background: var(--jk-ink);\n    color: var(--jk-white);\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 13px; font-weight: 600;\n    border: 2px solid var(--jk-white);\n    box-shadow: 0 0 0 1px var(--jk-ink);\n  }\n\n  \/* ---------- popup ---------- *\/\n  .jk-popup { min-width: 200px; max-width: 240px; font-family: inherit; text-align: center; }\n  .jk-popup-photo {\n    width: 72px; height: 72px; object-fit: cover;\n    border-radius: 50%; margin: 0 auto 10px; display: block;\n    background: var(--jk-bg); border: 2px solid var(--jk-white); box-shadow: 0 0 0 1px var(--jk-line);\n  }\n  .jk-popup h3 { margin: 0 0 2px; font-size: 15px; }\n  .jk-popup .jk-popup-salon { font-size: 12px; color: var(--jk-mid); margin: 0 0 6px; }\n  .jk-popup .jk-popup-phone {\n    font-size: 12px; margin: 0 0 6px;\n    display: flex; align-items: center; justify-content: center; gap: 5px;\n  }\n  .jk-popup .jk-popup-phone a { color: var(--jk-ink); text-decoration: none; }\n  .jk-popup .jk-popup-phone a:hover { text-decoration: underline; }\n  .jk-phone-icon { flex-shrink: 0; display: inline-flex; }\n  .jk-popup .jk-popup-services { font-size: 12px; color: var(--jk-ink); margin: 0 0 10px; }\n  .jk-popup-links { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }\n  .jk-popup-links a {\n    font-size: 12px;\n    text-decoration: none;\n    border: 1px solid var(--jk-ink);\n    border-radius: 999px;\n    padding: 5px 12px;\n    color: var(--jk-ink);\n  }\n  .jk-popup-links a.jk-book { background: var(--jk-ink); color: var(--jk-white); }\n  .leaflet-popup-content-wrapper { border-radius: 10px; }\n  .leaflet-popup-content { max-height: 60vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }\n\n  @media (max-width: 780px) {\n    #jk-body { flex-direction: column-reverse; }\n    #jk-map { width: 100%; height: 400px; flex: none; }\n    #jk-list-panel { width: 100%; flex: none; max-height: 400px; }\n    .jk-popup-photo { width: 56px; height: 56px; }\n  }\n<\/style>\n\n<script>\n(function () {\n  \/* ===================================================================\n     ARTISTS DATA\n  =================================================================== *\/\n  const ARTISTS = [\n    {\n      name: \"Laura-Liis K\u00e4hr\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/LauraL_round.png\",\n      salon: \"\",\n      address: \"Ilmatsalu tn 5, Tartu\",\n      phone: \"+372 56996700\",\n      services: [\"meik\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/lauralxmua\",\n      booking: \"\",\n      city: \"Tartu\",\n      lat: 58.3777, lng: 26.6890\n    },\n    {\n      name: \"Lisandra L\u00fcnekund\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/LisandraLunekund_round.png\",\n      salon: \"WowBrow kulmu- ja ilustuudio\",\n      address: \"Ringi 4, P\u00e4rnu\",\n      phone: \"\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/lisandralynekund_mua\",\n      booking: \"https:\/\/wowbrow.salon.life\/wowbrow\/\",\n      city: \"P\u00e4rnu\",\n      lat: 58.3844, lng: 24.5047\n    },\n    {\n      name: \"K\u00e4rt Munski\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/KartMunski_round.png\",\n      salon: \"K\u00e4rt Munski Beauty\",\n      address: \"R\u00e4pina mnt 12, V\u00f5ru\",\n      phone: \"+372 5234008\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.facebook.com\/p\/K%C3%A4rt-Munski-Beauty-100088410090197\/\",\n      booking: \"https:\/\/www.facebook.com\/p\/K%C3%A4rt-Munski-Beauty-100088410090197\/\",\n      city: \"V\u00f5ru\",\n      lat: 57.8430, lng: 27.0165\n    },\n    {\n      name: \"Katriin M\u00e4gi\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/KatriinMagi_round.png\",\n      salon: \"Stuudio 9b\",\n      address: \"Tartu tn 9b, Viljandi\",\n      phone: \"\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/muakatriinmagi\",\n      booking: \"\",\n      city: \"Viljandi\",\n      lat: 58.3653, lng: 25.6000\n    },\n    {\n      name: \"Heidi L\u00e4tti\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/HeidiLatti_round.png\",\n      salon: \"Angel Beauty Ilustuudio\",\n      address: \"Jaama 76, D.korpus, Tartu\",\n      phone: \"+372 56883979\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/glamsoulmakeup\/\",\n      booking: \"https:\/\/www.angelbeauty.ee\/\",\n      city: \"Tartu\",\n      lat: 58.3815, lng: 26.7529\n    },\n    {\n      name: \"Liisi Haas\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/LiisiHaas_round.png\",\n      salon: \"\",\n      address: \"Riia 15b, Tartu\",\n      phone: \"+372 5240306\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: false,\n      instagram: \"https:\/\/www.instagram.com\/liisihaas_makeup\",\n      booking: \"\",\n      city: \"Tartu\",\n      lat: 58.3733, lng: 26.7198\n    },\n    {\n      name: \"Dianna Ojala\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/DiannaOjala_round.png\",\n      salon: \"Stuudio54\",\n      address: \"Tartu mnt 54, \u00dclenurme, Tartumaa\",\n      phone: \"\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/beautydiannaoj\",\n      booking: \"https:\/\/www.facebook.com\/MakeupbyDiannaOjala\",\n      city: \"Tartu\",\n      lat: 58.3286, lng: 26.7181\n    },\n    {\n      name: \"Ragne Piirj\u00f5e\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/RagnePiirjoe_round.png\",\n      salon: \"\",\n      address: \"V\u00f5ru 79, Tartu\",\n      phone: \"\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/looksbyragne\",\n      booking: \"\",\n      city: \"Tartu\",\n      lat: 58.3571, lng: 26.7194\n    },\n    {\n      name: \"Triinu T\u00e4psi\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/triinutapsi_round.png\",\n      salon: \"K\u00e4ty ilusalong\",\n      address: \"Aardla 114, Tartu\",\n      phone: \"+372 58552765\",\n      services: [\"meik\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.instagram.com\/Triinuliis_makeup\",\n      booking: \"\",\n      city: \"Tartu\",\n      lat: 58.3533, lng: 26.6862\n    },\n    {\n      name: \"Esty Sakk\",\n      photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/EstySakk_round.png\",\n      salon: \"Ilusalong Marta\",\n      address: \"Oja 1, V\u00f5ru\",\n      phone: \"+372 53232823\",\n      services: [\"meik\", \"soeng\"],\n      valjasoit: true,\n      instagram: \"https:\/\/www.facebook.com\/muaesty\/\",\n      booking: \"\",\n      city: \"V\u00f5ru\",\n      lat: 57.8474, lng: 27.0020\n    },\n    { name: \"Ana Ferrum\", photo: \"https:\/\/makeupatelier.ee\/meigikool\/wp-content\/uploads\/2026\/09\/Anna_circle.png\", salon: \"ATELIER stuudio\", address: \"A.H.Tammsaare pst 41-106 P\u00e4rnu\", phone: \"+372 58300058\", services: [\"meik\",\"soeng\"], valjasoit: true, instagram: \"https:\/\/www.facebook.com\/anaferrumMUA\", booking: \"https:\/\/atelier-2.salon.life\/atelier\", city: \"P\u00e4rnu\", lat: 58.3743, lng: 24.5263 }\n  ];\n\n  \/\/ Kindel asukohtade nimekiri filtri jaoks\n  const FILTER_CITIES = [\"Tallinn\", \"P\u00e4rnu\", \"Tartu\", \"Viljandi\", \"Kuressaare\", \"V\u00f5ru\"];\n\n  const SERVICE_LABELS = {\n    meik: \"Jumestus\",\n    soeng: \"Soeng\"\n  };\n\n  let activeCity = null;\n  let activeServices = new Set(); \/\/ multiple services can be active together\n  let activeValjasoit = null; \/\/ true, false, or null (no filter)\n  const markerByName = {};\n\n  function loadLeaflet(cb) {\n    if (window.L && window.L.markerClusterGroup) return cb();\n    setTimeout(() => loadLeaflet(cb), 100);\n  }\n\n  \/\/ Same link field can hold either an Instagram or a Facebook\n  function socialLabel(url) {\n    return url.toLowerCase().includes(\"facebook.com\") || url.toLowerCase().includes(\"fb.me\")\n      ? \"Facebook\"\n      : \"Instagram\";\n  }\n\n  \/\/ Small inline phone icon (currentColor so it matches the surrounding text).\n  const PHONE_ICON_SVG = '<svg class=\"jk-phone-icon\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.362 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.338 1.85.573 2.81.7A2 2 0 0 1 22 16.92z\"><\/path><\/svg>';\n\n  \/\/ Turns a typed phone number into a clean tel: link target\n  function telHref(phone) {\n    return \"tel:\" + phone.replace(\/[^0-9+]\/g, \"\");\n  }\n\n  loadLeaflet(init);\n\n  function init() {\n    \/\/ Estonia bounding box \u2014 map cannot pan or zoom out past this area.\n    const ESTONIA_BOUNDS = L.latLngBounds([\n      [57.3, 21.3],   \/\/ south-west corner (a little below P\u00e4rnu\/islands)\n      [59.9, 28.3]    \/\/ north-east corner (a little above Narva)\n    ]);\n\n    const map = L.map(\"jk-map\", {\n      scrollWheelZoom: false,\n      minZoom: 7,                       \/\/ can't zoom out further than ~country view\n      maxBounds: ESTONIA_BOUNDS.pad(0.15),\n      maxBoundsViscosity: 1.0           \/\/ map \"bounces back\" if dragged past the edge\n    });\n    map.fitBounds(ESTONIA_BOUNDS);\n\n    \/* Tile layer \u2014 CARTO \"Positron\" light-gray style, using your API key. *\/\n    L.tileLayer(\"https:\/\/{s}.basemaps.cartocdn.com\/light_all\/{z}\/{x}\/{y}{r}.png?key=cb1_3fvo_1_5eb1466ad480c56e41467c2e\", {\n      attribution: '',\n      maxZoom: 19\n    }).addTo(map);\n\n    const clusterGroup = L.markerClusterGroup({\n      showCoverageOnHover: false,\n      iconCreateFunction: function (cluster) {\n        const count = cluster.getChildCount();\n        const size = count > 15 ? 44 : count > 5 ? 38 : 32;\n        return L.divIcon({\n          html: `<div class=\"jk-cluster-icon\" style=\"width:${size}px;height:${size}px;\">${count}<\/div>`,\n          className: \"\",\n          iconSize: [size, size]\n        });\n      }\n    });\n\n    function buildIcon() {\n      return L.divIcon({ className: \"jk-marker\", iconSize: [16, 16] });\n    }\n\n    function popupHtml(a) {\n      const tags = a.services.map(s => SERVICE_LABELS[s] || s);\n      if (a.valjasoit) tags.push(\"V\u00e4ljas\u00f5iduga\");\n      const services = tags.join(\" \u2022 \");\n      const photo = a.photo ? `<img decoding=\"async\" class=\"jk-popup-photo\" src=\"${a.photo}\" alt=\"${a.name}\">` : \"\";\n      const phoneRow = a.phone\n        ? `<p class=\"jk-popup-phone\">${PHONE_ICON_SVG}<a href=\"${telHref(a.phone)}\">${a.phone}<\/a><\/p>`\n        : \"\";\n      const links = [];\n      if (a.instagram) links.push(`<a href=\"${a.instagram}\" target=\"_blank\" rel=\"noopener\">${socialLabel(a.instagram)}<\/a>`);\n      if (a.booking) links.push(`<a class=\"jk-book\" href=\"${a.booking}\" target=\"_blank\" rel=\"noopener\">Broneeri<\/a>`);\n      return `\n        <div class=\"jk-popup\">\n          ${photo}\n          <h3>${a.name}<\/h3>\n          <p class=\"jk-popup-salon\">${[a.salon, a.address || a.city].filter(Boolean).join(\" \u2022 \")}<\/p>\n          ${phoneRow}\n          <p class=\"jk-popup-services\">${services}<\/p>\n          <div class=\"jk-popup-links\">${links.join(\"\")}<\/div>\n        <\/div>`;\n    }\n\n    ARTISTS.forEach((a, i) => {\n      const marker = L.marker([a.lat, a.lng], { icon: buildIcon() });\n      marker.bindPopup(popupHtml(a), {\n        maxWidth: 240,\n        maxHeight: Math.round(window.innerHeight * 0.6),\n        autoPanPadding: [16, 16]\n      });\n      marker._jkIndex = i;\n      markerByName[i] = marker;\n      clusterGroup.addLayer(marker);\n    });\n\n    map.addLayer(clusterGroup);\n\n    \/\/ ---------- filter buttons ----------\n    const cityWrap = document.getElementById(\"jk-city-buttons\");\n    FILTER_CITIES.forEach(city => {\n      const btn = document.createElement(\"button\");\n      btn.className = \"jk-pill\";\n      btn.textContent = city;\n      btn.onclick = () => {\n        activeCity = activeCity === city ? null : city;\n        refresh();\n      };\n      btn.dataset.city = city;\n      cityWrap.appendChild(btn);\n    });\n\n    const serviceWrap = document.getElementById(\"jk-service-buttons\");\n    Object.keys(SERVICE_LABELS).forEach(key => {\n      const btn = document.createElement(\"button\");\n      btn.className = \"jk-pill\";\n      btn.textContent = SERVICE_LABELS[key];\n      btn.onclick = () => {\n        if (activeServices.has(key)) activeServices.delete(key);\n        else activeServices.add(key);\n        refresh();\n      };\n      btn.dataset.service = key;\n      serviceWrap.appendChild(btn);\n    });\n\n    const valjasoitWrap = document.getElementById(\"jk-valjasoit-buttons\");\n    [{ key: \"jah\", label: \"Jah\", value: true }, { key: \"ei\", label: \"Ei\", value: false }].forEach(opt => {\n      const btn = document.createElement(\"button\");\n      btn.className = \"jk-pill\";\n      btn.textContent = opt.label;\n      btn.onclick = () => {\n        activeValjasoit = activeValjasoit === opt.value ? null : opt.value;\n        refresh();\n      };\n      btn.dataset.valjasoit = opt.key;\n      valjasoitWrap.appendChild(btn);\n    });\n\n    document.getElementById(\"jk-reset\").onclick = () => {\n      activeCity = null;\n      activeServices.clear();\n      activeValjasoit = null;\n      refresh();\n    };\n\n    function matches(a) {\n      if (activeCity && a.city !== activeCity) return false;\n      if (activeServices.size > 0 && !a.services.some(s => activeServices.has(s))) return false;\n      if (activeValjasoit !== null && Boolean(a.valjasoit) !== activeValjasoit) return false;\n      return true;\n    }\n\n    function refresh() {\n      \/\/ update pill active states\n      cityWrap.querySelectorAll(\".jk-pill\").forEach(b => {\n        b.classList.toggle(\"active\", b.dataset.city === activeCity);\n      });\n      serviceWrap.querySelectorAll(\".jk-pill\").forEach(b => {\n        b.classList.toggle(\"active\", activeServices.has(b.dataset.service));\n      });\n      valjasoitWrap.querySelectorAll(\".jk-pill\").forEach(b => {\n        const isActive = (b.dataset.valjasoit === \"jah\" && activeValjasoit === true) ||\n                          (b.dataset.valjasoit === \"ei\" && activeValjasoit === false);\n        b.classList.toggle(\"active\", isActive);\n      });\n\n      \/\/ update markers on map\n      clusterGroup.clearLayers();\n      ARTISTS.forEach((a, i) => {\n        if (matches(a)) clusterGroup.addLayer(markerByName[i]);\n      });\n\n      \/\/ update list\n      renderList();\n    }\n\n    function renderList() {\n      const listEl = document.getElementById(\"jk-list\");\n      const countEl = document.getElementById(\"jk-list-count\");\n      listEl.innerHTML = \"\";\n\n      const filtered = ARTISTS.map((a, i) => ({ ...a, _i: i })).filter(matches);\n      countEl.textContent = `${filtered.length} jumestaja${filtered.length === 1 ? \"\" : \"t\"}`;\n\n      const grouped = {};\n      filtered.forEach(a => {\n        grouped[a.city] = grouped[a.city] || [];\n        grouped[a.city].push(a);\n      });\n\n      Object.keys(grouped).sort().forEach(city => {\n        const heading = document.createElement(\"div\");\n        heading.className = \"jk-city-heading\";\n        heading.textContent = city;\n        listEl.appendChild(heading);\n\n        grouped[city].forEach(a => {\n          const item = document.createElement(\"div\");\n          item.className = \"jk-list-item\";\n          const photo = a.photo\n            ? `<img decoding=\"async\" class=\"jk-list-photo\" src=\"${a.photo}\" alt=\"${a.name}\">`\n            : `<div class=\"jk-list-photo\"><\/div>`;\n          item.innerHTML = `\n            ${photo}\n            <div>\n              <p class=\"jk-list-name\">${a.name}<\/p>\n              <p class=\"jk-list-sub\">${a.address || a.city}<\/p>\n              <p class=\"jk-list-sub\">${[...a.services.map(s => SERVICE_LABELS[s] || s), a.valjasoit ? \"V\u00e4ljas\u00f5iduga\" : null].filter(Boolean).join(\", \")}<\/p>\n            <\/div>`;\n          item.onclick = () => {\n            const marker = markerByName[a._i];\n            \/\/ zoomToShowLayer handles ALL the zoom steps needed\n            clusterGroup.zoomToShowLayer(marker, () => marker.openPopup());\n          };\n          listEl.appendChild(item);\n        });\n      });\n    }\n\n    refresh();\n  }\n})();\n<\/script>\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","protected":false},"excerpt":{"rendered":"<p>ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. T\u00e4psusta otsingut Asukoht Teenused V\u00e4ljas\u00f5it L\u00e4htesta filtrid<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7109","post","type-post","status-publish","format-standard","hentry","category-maaratlemata"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kaart - ATELIER Meigikool<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kaart - ATELIER Meigikool\" \/>\n<meta property=\"og:description\" content=\"ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. T\u00e4psusta otsingut Asukoht Teenused V\u00e4ljas\u00f5it L\u00e4htesta filtrid\" \/>\n<meta property=\"og:url\" content=\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/\" \/>\n<meta property=\"og:site_name\" content=\"ATELIER Meigikool\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-19T10:28:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-03T10:20:19+00:00\" \/>\n<meta name=\"author\" content=\"profikool\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"profikool\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/\",\"url\":\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/\",\"name\":\"Kaart - ATELIER Meigikool\",\"isPartOf\":{\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/#website\"},\"datePublished\":\"2026-08-19T10:28:23+00:00\",\"dateModified\":\"2026-10-03T10:20:19+00:00\",\"author\":{\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/5d580776a369b3177db8fb186ac2b907\"},\"breadcrumb\":{\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/kaart\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/makeupatelier.ee\/meigikool\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kaart\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/#website\",\"url\":\"https:\/\/makeupatelier.ee\/meigikool\/\",\"name\":\"ATELIER Meigikool\",\"description\":\"Meigikool\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/makeupatelier.ee\/meigikool\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/5d580776a369b3177db8fb186ac2b907\",\"name\":\"profikool\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/246eb0241fec722d3c6ca68ab5f07e49?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/246eb0241fec722d3c6ca68ab5f07e49?s=96&d=mm&r=g\",\"caption\":\"profikool\"},\"url\":\"https:\/\/makeupatelier.ee\/meigikool\/author\/profikool\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kaart - ATELIER Meigikool","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/","og_locale":"et_EE","og_type":"article","og_title":"Kaart - ATELIER Meigikool","og_description":"ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. ATELIER MEIGIKOOLi JUMESTAJATE KAART Leia oma jumestaja \u00dcle Eesti tegutsevad jumestajad, kes on \u00f5ppinud ATELIER MEIGIKOOLis. Tutvu t\u00f6\u00f6dega ja v\u00f5ta sobiva jumestajaga otse \u00fchendust. T\u00e4psusta otsingut Asukoht Teenused V\u00e4ljas\u00f5it L\u00e4htesta filtrid","og_url":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/","og_site_name":"ATELIER Meigikool","article_published_time":"2026-08-19T10:28:23+00:00","article_modified_time":"2026-10-03T10:20:19+00:00","author":"profikool","twitter_card":"summary_large_image","twitter_misc":{"Written by":"profikool","Est. reading time":"6 minutit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/","url":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/","name":"Kaart - ATELIER Meigikool","isPartOf":{"@id":"https:\/\/makeupatelier.ee\/meigikool\/#website"},"datePublished":"2026-08-19T10:28:23+00:00","dateModified":"2026-10-03T10:20:19+00:00","author":{"@id":"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/5d580776a369b3177db8fb186ac2b907"},"breadcrumb":{"@id":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/makeupatelier.ee\/meigikool\/kaart\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/makeupatelier.ee\/meigikool\/kaart\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/makeupatelier.ee\/meigikool\/"},{"@type":"ListItem","position":2,"name":"Kaart"}]},{"@type":"WebSite","@id":"https:\/\/makeupatelier.ee\/meigikool\/#website","url":"https:\/\/makeupatelier.ee\/meigikool\/","name":"ATELIER Meigikool","description":"Meigikool","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/makeupatelier.ee\/meigikool\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"},{"@type":"Person","@id":"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/5d580776a369b3177db8fb186ac2b907","name":"profikool","image":{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/makeupatelier.ee\/meigikool\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/246eb0241fec722d3c6ca68ab5f07e49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/246eb0241fec722d3c6ca68ab5f07e49?s=96&d=mm&r=g","caption":"profikool"},"url":"https:\/\/makeupatelier.ee\/meigikool\/author\/profikool\/"}]}},"_links":{"self":[{"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/posts\/7109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/comments?post=7109"}],"version-history":[{"count":220,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/posts\/7109\/revisions"}],"predecessor-version":[{"id":7585,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/posts\/7109\/revisions\/7585"}],"wp:attachment":[{"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/media?parent=7109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/categories?post=7109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/makeupatelier.ee\/meigikool\/wp-json\/wp\/v2\/tags?post=7109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}