{"id":2317,"date":"2026-10-21T12:07:07","date_gmt":"2026-10-21T10:07:07","guid":{"rendered":"https:\/\/vintageopticalparis.com\/?page_id=2317"},"modified":"2026-10-24T16:32:17","modified_gmt":"2026-10-24T14:32:17","slug":"home","status":"publish","type":"page","link":"https:\/\/vintageopticalparis.com\/","title":{"rendered":"Home"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull vop-page is-layout-flow wp-container-core-group-is-layout-3797c3ca wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<header class=\"wp-block-template-part\">\n<div class=\"wp-block-group alignfull has-background-color has-text-color has-link-color wp-elements-1 is-layout-constrained wp-block-group-is-layout-constrained\" style=\"border-style:none;border-width:0px;border-radius:0px;margin-top:0;margin-bottom:0;padding-top:0px;padding-bottom:0px\">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:0px;padding-bottom:0px\">\n<div class=\"wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-bf41d61e wp-block-group-is-layout-flex\" style=\"padding-top:var(--wp--custom--spacing--small, 1.25rem);padding-bottom:var(--wp--custom--spacing--large, 8rem)\">\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\"><div class=\"wp-block-site-logo\"><a href=\"https:\/\/vintageopticalparis.com\/\" class=\"custom-logo-link\" rel=\"home\"><img loading=\"lazy\" decoding=\"async\" width=\"140\" height=\"94\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2025\/02\/IMG_2211-3.png\" class=\"custom-logo\" alt=\"Vintage Optical Paris\" \/><\/a><\/div>\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-384241b8 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><\/div>\n<\/div>\n<\/div>\n\n\n<nav class=\"has-text-color has-background-color is-responsive items-justified-right wp-block-navigation is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-0e5f563f wp-block-navigation-is-layout-flex\" aria-label=\"Navigation Ent\u00eate 2\" \n\t\t data-wp-interactive=\"core\/navigation\" data-wp-context='{\"overlayOpenedBy\":{\"click\":false,\"hover\":false,\"focus\":false},\"type\":\"overlay\",\"roleAttribute\":\"\",\"ariaLabel\":\"Menu\"}'><button aria-haspopup=\"dialog\" aria-label=\"Open menu\" class=\"wp-block-navigation__responsive-container-open\" \n\t\t\t\tdata-wp-on--click=\"actions.openMenuOnClick\"\n\t\t\t\tdata-wp-on--keydown=\"actions.handleMenuKeydown\"\n\t\t\t><svg width=\"24\" height=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 7.5h16v1.5H4z\"><\/path><path d=\"M4 15h16v1.5H4z\"><\/path><\/svg><\/button>\n\t\t\t\t<div class=\"wp-block-navigation__responsive-container\"  id=\"modal-1\" \n\t\t\t\tdata-wp-class--has-modal-open=\"state.isMenuOpen\"\n\t\t\t\tdata-wp-class--is-menu-open=\"state.isMenuOpen\"\n\t\t\t\tdata-wp-watch=\"callbacks.initMenu\"\n\t\t\t\tdata-wp-on--keydown=\"actions.handleMenuKeydown\"\n\t\t\t\tdata-wp-on--focusout=\"actions.handleMenuFocusout\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t>\n\t\t\t\t\t<div class=\"wp-block-navigation__responsive-close\" tabindex=\"-1\">\n\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-dialog\" \n\t\t\t\tdata-wp-bind--aria-modal=\"state.ariaModal\"\n\t\t\t\tdata-wp-bind--aria-label=\"state.ariaLabel\"\n\t\t\t\tdata-wp-bind--role=\"state.roleAttribute\"\n\t\t\t>\n\t\t\t\t\t\t\t<button aria-label=\"Close menu\" class=\"wp-block-navigation__responsive-container-close\" \n\t\t\t\tdata-wp-on--click=\"actions.closeMenuOnClick\"\n\t\t\t><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z\"><\/path><\/svg><\/button>\n\t\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-container-content\" \n\t\t\t\tdata-wp-watch=\"callbacks.focusFirstElement\"\n\t\t\t id=\"modal-1-content\">\n\t\t\t\t\t\t\t\t<ul class=\"wp-block-navigation__container has-text-color has-background-color is-responsive items-justified-right wp-block-navigation\"><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/vintageopticalparis.com\/index.php\/contact\/\"><span class=\"wp-block-navigation-item__label\"><mark style=\"background-color:#000000;color:#ffffff\" class=\"has-inline-color\">Contact<\/mark><\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/vintageopticalparis.com\/index.php\/page-d-exemple\/\"><span class=\"wp-block-navigation-item__label\"><mark style=\"background-color:#000000;color:#ffffff\" class=\"has-inline-color\">About<\/mark><\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/vintageopticalparis.com\/index.php\/vintage-optical-paris-2\/online_shop\/\"><span class=\"wp-block-navigation-item__label\"><mark style=\"background-color:#000000;color:#ffffff\" class=\"has-inline-color\">Online Shop<\/mark><\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/vintageopticalparis.com\/index.php\/my-account\/\"><span class=\"wp-block-navigation-item__label\"><mark style=\"background-color:#000000;color:#ffffff\" class=\"has-inline-color\">My account<\/mark><\/span><\/a><\/li><\/ul>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><\/nav>\n\n<\/div>\n<\/div>\n<\/div>\n\r\n\r\n<script id=\"vop-cookie-language\">\n\/* VOP: only translate Complianz UI; consent state remains managed by Complianz. *\/\n(function () {\n  'use strict';\n  if (window.vopCookieLanguageReady) return;\n  window.vopCookieLanguageReady = true;\n  var french = \/^fr(?:-|$)\/i.test(navigator.language || 'en');\n  var labels = french ? {\n    '.cmplz-title': 'Vos choix de cookies',\n    '.cmplz-message': 'Nous utilisons des cookies n\u00e9cessaires au fonctionnement du site et du panier. Avec votre accord, des cookies facultatifs peuvent \u00eatre utilis\u00e9s pour les statistiques et les services tiers. Vous pouvez tout accepter, tout refuser ou personnaliser vos choix, puis les modifier \u00e0 tout moment.',\n    '.cmplz-accept': 'Tout accepter',\n    '.cmplz-deny': 'Tout refuser',\n    '.cmplz-view-preferences': 'Personnaliser',\n    '.cmplz-save-preferences': 'Enregistrer mes choix',\n    'button.cmplz-manage-consent': 'G\u00e9rer les cookies',\n    '.cmplz-functional .cmplz-category-title, .cmplz-functional .screen-reader-text': 'Fonctionnels',\n    '.cmplz-preferences .cmplz-category-title, .cmplz-preferences .screen-reader-text': 'Pr\u00e9f\u00e9rences',\n    '.cmplz-statistics .cmplz-category-title, .cmplz-statistics .screen-reader-text': 'Statistiques',\n    '.cmplz-marketing .cmplz-category-title, .cmplz-marketing .screen-reader-text': 'Marketing',\n    '.cmplz-description-functional': \"Le stockage ou l'acc\u00e8s technique est strictement n\u00e9cessaire pour fournir un service express\u00e9ment demand\u00e9 ou transmettre une communication sur un r\u00e9seau de communications \u00e9lectroniques.\",\n    '.cmplz-description-preferences': \"Le stockage ou l'acc\u00e8s technique permet de m\u00e9moriser des pr\u00e9f\u00e9rences qui ne sont pas express\u00e9ment demand\u00e9es par l'utilisateur.\",\n    '.cmplz-description-statistics': \"Le stockage ou l'acc\u00e8s technique est utilis\u00e9 exclusivement \u00e0 des fins statistiques.\",\n    '.cmplz-description-statistics-anonymous': \"Le stockage ou l'acc\u00e8s technique est utilis\u00e9 exclusivement \u00e0 des fins statistiques anonymes. Sans informations suppl\u00e9mentaires, ces donn\u00e9es ne permettent g\u00e9n\u00e9ralement pas de vous identifier.\",\n    '.cmplz-description-marketing': \"Le stockage ou l'acc\u00e8s technique permet de cr\u00e9er des profils pour diffuser des publicit\u00e9s ou de suivre l'utilisateur sur un ou plusieurs sites \u00e0 des fins de marketing.\",\n    '.cmplz-documents .cookie-statement': 'Politique de cookies',\n    '.cmplz-manage-options': 'Personnaliser',\n    '.cmplz-manage-third-parties': 'G\u00e9rer les services'\n  } : {\n    '.cmplz-accept': 'Accept all',\n    '.cmplz-deny': 'Reject all',\n    'button.cmplz-manage-consent': 'Cookie settings'\n  };\n  function translate() {\n    document.querySelectorAll('.cmplz-cookiebanner, .cmplz-manage-consent').forEach(function (el) {\n      el.setAttribute('lang', french ? 'fr' : 'en');\n      el.setAttribute('translate', 'no');\n      el.classList.add('notranslate');\n    });\n    Object.keys(labels).forEach(function (selector) {\n      document.querySelectorAll(selector).forEach(function (el) {\n        if (el.textContent !== labels[selector]) el.textContent = labels[selector];\n      });\n    });\n    if (french) {\n      document.querySelectorAll('.cmplz-close').forEach(function (el) { el.setAttribute('aria-label', 'Fermer'); });\n      document.querySelectorAll('.cmplz-always-active').forEach(function (el) {\n        Array.prototype.forEach.call(el.childNodes, function (node) {\n          if (node.nodeType === 3 && node.textContent.trim() && node.textContent.trim() !== 'Toujours actif') node.textContent = ' Toujours actif ';\n        });\n      });\n    }\n  }\n  var scheduled = false;\n  new MutationObserver(function (records) {\n    if (scheduled || !records.some(function (r) {\n      return Array.prototype.some.call(r.addedNodes, function (n) {\n        return n.nodeType === 1 && (n.matches('.cmplz-cookiebanner, .cmplz-manage-consent') || n.querySelector('.cmplz-cookiebanner, .cmplz-manage-consent'));\n      });\n    })) return;\n    scheduled = true;\n    Promise.resolve().then(function () { scheduled = false; translate(); });\n  }).observe(document.documentElement, { childList: true, subtree: true });\n  translate();\n})();\n\n<\/script>\r\n\n\n\n<!-- VOP site-wide (launch 2026-10-21): footer Cookie settings link, policy links, hide language switcher. -->\n<style>\n\/* Site title is set for the browser tab; the logo already shows the name on the page. *\/\n.wp-block-site-title{display:none!important}\n\/* Menu labels carry a black highlight from the menu settings; keep only the white lettering. *\/\nheader .wp-block-navigation mark{background-color:transparent!important}\n\/* The header cart block has an inline font-size of 0rem (icon invisible); match the homepage size. *\/\nheader .wc-block-mini-cart[style*=\"font-size\"]{font-size:18px!important}\n\/* The site styles put an old black picture and 2px padding on the body; it showed as black bits around the header. *\/\nbody{background-image:none!important;padding:0!important}\n\/* Paragraphs default to white in the site styles: keep text dark on the white Contact and My Account pages. *\/\n.page-id-692 .entry-content p:not(.has-text-color),.woocommerce-account .woocommerce p,.woocommerce-account .woocommerce label,.woocommerce-account .woocommerce p a{color:#111}\n.vop-cookie-footer .vop-policy-links a{color:#555!important}\n\/* Mobile menu overlay: black with white lettering on every page (the transparent labels were white on white). *\/\n.wp-block-navigation__responsive-container.is-menu-open{background:#0b0b0b!important;color:#f4f1ea!important}\n.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content,.wp-block-navigation__responsive-container.is-menu-open mark,.wp-block-navigation__responsive-container-close{color:#f4f1ea!important}\nbody.vop-cookie-footer-ready #cmplz-manage-consent{display:none!important}\n.vop-cookie-footer-ready .vop-cookie-footer{position:static;box-sizing:border-box;width:100%;padding:20px 24px;margin:0;background:#fff;color:#333;text-align:center;border-top:1px solid #e7e7e2}\n.vop-cookie-footer-ready .vop-cookie-settings{position:static;display:inline-block;width:auto;min-height:44px;padding:10px 8px;margin:0;border:0;border-radius:0;background:transparent;color:#555;font:12px\/24px system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px;cursor:pointer}\n.vop-cookie-footer-ready .vop-cookie-settings:hover{color:#111}\n.vop-cookie-footer-ready .vop-cookie-settings:focus-visible{outline:2px solid #333;outline-offset:3px}\n.vop-cookie-footer-ready .vop-policy-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0 20px}\n.vop-cookie-footer-ready .vop-policy-links a{display:inline-flex;align-items:center;min-height:44px;color:#555;font:12px\/24px system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px}\n<\/style>\n<script>\n(function(){\n  'use strict';\n  if(window.vopSiteFooter)return;window.vopSiteFooter=1;\n  var PRIVACY='\/index.php\/privacy-policy\/',COOKIES='\/index.php\/cookie-policy\/';\n  var french=\/^fr(?:-|$)\/i.test(navigator.language||'en');\n  function mount(){\n    if(document.querySelector('.vop-cookie-settings'))return true;\n    var original=document.querySelector('#cmplz-manage-consent button.cmplz-manage-consent');\n    var footer=document.querySelector('footer.wp-block-template-part,.vop-policy-footer')||document.querySelector('.vop-page');\n    if(!original||!footer)return false;\n    var row=document.createElement('div');row.className='vop-cookie-footer';\n    var links=document.createElement('nav');links.className='vop-policy-links';links.setAttribute('aria-label','Policies');\n    [['Privacy Policy',PRIVACY],['Cookie Policy',COOKIES]].forEach(function(item){var a=document.createElement('a');a.textContent=item[0];a.href=item[1];links.appendChild(a);});\n    row.appendChild(links);\n    var button=document.createElement('button');button.type='button';button.className='vop-cookie-settings notranslate';\n    button.textContent=french?'G\u00e9rer les cookies':'Cookie settings';\n    button.lang=french?'fr':'en';button.setAttribute('translate','no');button.setAttribute('aria-haspopup','dialog');\n    var controls=original.getAttribute('aria-controls');if(controls)button.setAttribute('aria-controls',controls);\n    var openedFromFooter=false;\n    button.addEventListener('click',function(){\n      var nativeButton=document.querySelector('#cmplz-manage-consent button.cmplz-manage-consent');\n      if(nativeButton){\n        \/\/ Logged-in admins have the banner suppressed; let an explicit click open it.\n        if(window.complianz&&complianz.disable_cookiebanner&&typeof window.show_cookie_banner==='function'){\n          var disabled=complianz.disable_cookiebanner;\n          try{complianz.disable_cookiebanner=false;window.show_cookie_banner();}\n          finally{complianz.disable_cookiebanner=disabled;}\n        }\n        openedFromFooter=true;nativeButton.click();\n      }\n    });\n    document.addEventListener('cmplz_banner_status',function(event){\n      if(event.detail==='dismissed'&&openedFromFooter){openedFromFooter=false;setTimeout(function(){button.focus({preventScroll:true});},0);}\n    });\n    row.appendChild(button);footer.appendChild(row);\n    document.body.classList.add('vop-cookie-footer-ready');\n    return true;\n  }\n  \/\/ The banner's document links point to the site's policy pages.\n  function policies(){\n    document.querySelectorAll('.cmplz-cookiebanner .cmplz-documents').forEach(function(documents){\n      if(!documents.querySelector('.privacy-statement')){var privacy=document.createElement('a');privacy.className='privacy-statement';documents.appendChild(privacy);}\n    });\n    document.querySelectorAll('.cmplz-cookiebanner .cmplz-documents a').forEach(function(a){\n      if(a.matches('.cookie-statement')&&a.getAttribute('href')!==COOKIES)a.href=COOKIES;\n      if(a.matches('.privacy-statement')){\n        if(a.getAttribute('href')!==PRIVACY)a.href=PRIVACY;\n        var label=french?'Politique de confidentialit\u00e9':'Privacy Policy';\n        if(a.textContent!==label)a.textContent=label;\n        if(a.hidden||a.style.display!=='inline-block'){a.hidden=false;a.removeAttribute('aria-hidden');a.style.setProperty('display','inline-block','important');}\n      }\n    });\n  }\n  function start(){\n    var done=mount();policies();\n    var mo=new MutationObserver(function(records){\n      if(!records.some(function(r){return r.addedNodes.length;}))return;\n      if(!done)done=mount();\n      policies();\n    });\n    mo.observe(document.body,{childList:true,subtree:true});\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n<\/script>\n\n\n\n<!-- VOP language flag (2026-10-21): small flag next to the cart replaces the floating GTranslate dropdown. -->\n<style>\n.gt_switcher_wrapper{display:none!important}\n.wc-block-mini-cart.vop-has-lang{position:relative}\n\/* Sits just left of the cart icon, outside the header flex flow. *\/\n.vop-lang{position:absolute;right:100%;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;margin-right:6px}\n.vop-lang-btn{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:36px;padding:6px;border:0;border-radius:0;background:transparent;cursor:pointer}\n.vop-lang-btn img{display:block;width:20px;height:20px;border-radius:50%;object-fit:cover;opacity:.9}\n.vop-lang-btn:hover img{opacity:1}\n.vop-lang-btn:focus-visible,.vop-lang-menu button:focus-visible{outline:2px solid #c8a46a;outline-offset:2px}\n.vop-lang-menu{position:absolute;right:0;top:100%;z-index:1000;min-width:150px;margin:6px 0 0;padding:6px 0;list-style:none;background:#0b0b0b;border:1px solid rgba(244,241,234,.2);box-shadow:0 8px 24px rgba(0,0,0,.35)}\n.vop-lang-menu[hidden]{display:none}\n.vop-lang-menu li{margin:0;padding:0}\n.vop-lang-menu button{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:8px 14px;border:0;background:transparent;color:#f4f1ea;font:12px\/1.4 'Jost',system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;text-align:left;cursor:pointer}\n.vop-lang-menu button:hover,.vop-lang-menu button[aria-current=\"true\"]{background:rgba(244,241,234,.08);color:#fff}\n.vop-lang-menu img{width:18px;height:18px;border-radius:50%;object-fit:cover}\n<\/style>\n<script>\n(function(){\n  'use strict';\n  if(window.vopLangFlag)return;window.vopLangFlag=1;\n  function flagOf(a){var img=a.querySelector('img');return img?(img.getAttribute('src')||img.getAttribute('data-gt-lazy-src')||''):'';}\n  function current(){\n    \/\/ GTranslate stores \"\/en\/fr\" in the googtrans cookie (often URL-encoded).\n    var raw='';try{raw=decodeURIComponent(document.cookie);}catch(e){raw=document.cookie;}\n    var m=raw.match(\/(?:^|; )googtrans=\\\/[a-z-]+\\\/([a-zA-Z-]+)\/);\n    if(m)return m[1];\n    var lang=(document.documentElement.getAttribute('lang')||'en').split('-')[0];\n    return lang==='zh'?'zh-CN':lang;\n  }\n  function build(){\n    if(document.querySelector('.vop-lang'))return true;\n    var cart=document.querySelector('header .wc-block-mini-cart');\n    var options=Array.prototype.filter.call(document.querySelectorAll('.gt_switcher .gt_option a[data-gt-lang]'),function(a){return !!a.getAttribute('data-gt-lang');});\n    if(!cart||!options.length||typeof window.doGTranslate!=='function')return false;\n    var langs=options.map(function(a){return {code:a.getAttribute('data-gt-lang'),name:a.textContent.trim(),flag:flagOf(a)};});\n    var wrap=document.createElement('div');wrap.className='vop-lang notranslate';wrap.setAttribute('translate','no');\n    var btn=document.createElement('button');btn.type='button';btn.className='vop-lang-btn';btn.setAttribute('aria-haspopup','true');btn.setAttribute('aria-expanded','false');\n    var img=document.createElement('img');img.alt='';btn.appendChild(img);\n    var menu=document.createElement('ul');menu.className='vop-lang-menu';menu.hidden=true;menu.id='vop-lang-menu';btn.setAttribute('aria-controls',menu.id);\n    function show(code){\n      var lang=langs.filter(function(l){return l.code===code;})[0]||langs.filter(function(l){return l.code==='en';})[0]||langs[0];\n      img.src=lang.flag;btn.setAttribute('aria-label','Language: '+lang.name);\n      menu.querySelectorAll('button').forEach(function(b){b.setAttribute('aria-current',b.dataset.lang===lang.code?'true':'false');});\n    }\n    function close(focus){menu.hidden=true;btn.setAttribute('aria-expanded','false');if(focus)btn.focus();}\n    langs.forEach(function(l){\n      var li=document.createElement('li');var b=document.createElement('button');b.type='button';b.dataset.lang=l.code;\n      var i=document.createElement('img');i.src=l.flag;i.alt='';b.appendChild(i);b.appendChild(document.createTextNode(l.name));\n      b.addEventListener('click',function(){window.doGTranslate('en|'+l.code);show(l.code);close(true);});\n      li.appendChild(b);menu.appendChild(li);\n    });\n    btn.addEventListener('click',function(){var open=menu.hidden;menu.hidden=!open;btn.setAttribute('aria-expanded',open?'true':'false');if(open){var f=menu.querySelector('button[aria-current=\"true\"]')||menu.querySelector('button');if(f)f.focus();}});\n    document.addEventListener('click',function(e){if(!wrap.contains(e.target))close(false);});\n    wrap.addEventListener('keydown',function(e){if(e.key==='Escape')close(true);});\n    \/\/ The flag lives inside the cart block: keep its clicks from reaching the cart.\n    wrap.addEventListener('click',function(e){e.stopPropagation();});\n    wrap.appendChild(btn);wrap.appendChild(menu);\n    cart.classList.add('vop-has-lang');cart.insertBefore(wrap,cart.firstChild);\n    show(current());\n    \/\/ Google Translate updates <html lang> after the page loads; follow it.\n    if(!window.vopLangSync){window.vopLangSync=1;new MutationObserver(function(){var w=document.querySelector('.vop-lang');if(w)w.dispatchEvent(new CustomEvent('vop-lang-sync'));}).observe(document.documentElement,{attributes:true,attributeFilter:['lang','class']});}\n    wrap.addEventListener('vop-lang-sync',function(){show(current());});\n    return true;\n  }\n  function start(){\n    build();\n    \/\/ Keep watching: the cart block may re-render and drop the flag.\n    var mo=new MutationObserver(function(){if(!document.querySelector('.vop-lang'))build();});\n    mo.observe(document.body,{childList:true,subtree:true});\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n<\/script>\n<\/header>\n\n\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,500;1,400&family=Jost:wght@300;400&display=swap');\n\n.vop-page .wp-block-search__inside-wrapper{width:100%!important;max-width:100%}\n.vop-page .alignfull{margin-left:0!important;margin-right:0!important;max-width:none!important;width:auto!important}\n.vop-page header.wp-block-template-part{position:fixed;left:0;right:0;top:var(--wp-admin--admin-bar--height,0px);z-index:100;background:linear-gradient(180deg,rgba(0,0,0,.65),rgba(0,0,0,0))!important;border-bottom:1px solid transparent;transition:background .4s,border-color .4s}\n.vop-page header.wp-block-template-part.is-solid{background:rgba(11,11,11,.94)!important;border-bottom-color:rgba(255,255,255,.08)}\n.vop-page header .alignwide{max-width:none!important;padding:12px clamp(20px,5vw,72px)!important;align-items:center!important;flex-wrap:nowrap!important}\n.vop-page header .wp-block-site-logo{flex:0 0 auto}\n.vop-page header .wp-block-site-logo ~ .wp-block-columns{display:none}\n.vop-count{white-space:nowrap}\n.vop-page header .custom-logo{height:96px!important;width:auto!important}\n.vop-page header .wp-block-navigation-item__content{font-family:'Jost',system-ui,sans-serif!important;font-size:12px!important;letter-spacing:.26em!important;text-transform:uppercase;color:rgba(244,241,234,.78)!important;transition:color .3s}\n.vop-page header .wp-block-navigation-item__content:hover{color:#fff!important}\n.vop-page header .wp-block-navigation__responsive-container.is-menu-open{background:#0b0b0b!important;color:#f4f1ea!important}\n.vop-page header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{font-size:14px!important;color:#f4f1ea!important}\n.vop-label-top{position:absolute;z-index:3;left:clamp(20px,5vw,72px);top:144px;margin:0;font-size:12px;letter-spacing:.3em;color:var(--vop-dim)}\n.vop-label-top span{color:#c8a46a;margin-right:.7em}\n.vop-count{display:none}\n.vop-count b{color:var(--vop-ink);font-weight:400}\n\n.vop-home{--vop-ink:#f4f1ea;--vop-dim:rgba(244,241,234,.62);--vop-line:rgba(244,241,234,.22);\n  position:relative;width:100%;max-width:none!important;margin:0!important;\n  background:#0b0b0b;color:var(--vop-ink);font-family:'Jost',system-ui,sans-serif;overflow:hidden}\n.vop-home *{box-sizing:border-box}\n.vop-hero{position:relative;overflow:hidden;height:100vh;height:100svh;min-height:560px;display:flex;align-items:center;justify-content:center}\n.vop-bg{position:absolute;inset:0;background-size:cover;background-position:var(--vop-photo-position,center 30%);opacity:0;\n  transform:scale(1.08);transition:opacity .6s ease,transform 9s ease-out;filter:grayscale(1) contrast(1.05)}\n.vop-bg.is-on{opacity:1;transform:scale(1)}\n.vop-hero::after{content:\"\";position:absolute;inset:0;pointer-events:none;\n  background:radial-gradient(ellipse at center,rgba(0,0,0,.30) 0%,rgba(0,0,0,.60) 80%),linear-gradient(180deg,rgba(0,0,0,.20),rgba(0,0,0,.05) 40%,rgba(0,0,0,.80))}\n.vop-stage{position:relative;z-index:2;width:min(880px,88vw);text-align:center;padding:0 0 6vh}\n.vop-logo{display:block;width:clamp(110px,14vw,170px);margin:0 auto 4.5vh;opacity:0;animation:vop-fade 1.6s .2s ease forwards}\n.vop-quote{position:relative;min-height:15em}\n.vop-q{position:absolute;inset:0;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;visibility:hidden}\n.vop-q.is-on{visibility:visible}\n.vop-tag{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--vop-dim);margin:0 0 1.6em;opacity:0;transition:opacity 1s ease}\n.vop-q.is-on .vop-tag{opacity:1}\n.vop-text{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;\n  font-size:clamp(20px,2.6vw,34px);line-height:1.45;margin:0}\n.vop-w{display:inline-block;opacity:0;transform:translateY(.45em);filter:blur(6px);\n  transition:opacity .7s ease,transform .7s ease,filter .7s ease}\n.vop-q.is-on .vop-w{opacity:1;transform:none;filter:none}\n.vop-q.is-out .vop-w,.vop-q.is-out .vop-tag,.vop-q.is-out .vop-who{opacity:0;transition-delay:0s!important;transition-duration:.6s}\n.vop-who{margin:1.8em 0 0;font-size:13px;letter-spacing:.24em;text-transform:uppercase;opacity:0;transition:opacity 1s ease}\n.vop-q.is-on .vop-who{opacity:1}\n.vop-who::before,.vop-who::after{content:\"\";display:inline-block;width:28px;height:1px;background:var(--vop-line);vertical-align:middle;margin:0 14px}\n.vop-dots{position:absolute;z-index:3;right:clamp(20px,5vw,72px);top:140px;display:flex;align-items:center;gap:12px}\n.vop-dot{width:34px;height:2px;border:0;padding:0;background:var(--vop-line);cursor:pointer;position:relative;overflow:hidden}\n.vop-dot span{position:absolute;inset:0;background:var(--vop-ink);transform:scaleX(0);transform-origin:left}\n.vop-dot.is-on span{animation:vop-bar var(--vop-dur,8s) linear forwards}\n.vop-scroll{position:absolute;z-index:3;left:50%;bottom:3vh;transform:translateX(-50%);font-size:11px;letter-spacing:.3em;\n  text-transform:uppercase;color:var(--vop-dim)!important;text-decoration:none!important}\n.vop-scroll::after{content:\"\";display:block;width:1px;height:26px;margin:8px auto 0;background:var(--vop-ink);animation:vop-drop 2s ease-in-out infinite}\n.vop-press{position:relative;padding:16vh 6vw 7vh;text-align:center;border-top:1px solid rgba(255,255,255,.06)}\n.vop-press .vop-label{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--vop-dim);margin:0 0 3em}\n.vop-press blockquote{margin:0 auto;max-width:820px;font-family:'Playfair Display',Georgia,serif;font-size:clamp(19px,2.1vw,28px);line-height:1.6;border:0;padding:0}\n\/* Scroll light-up: each word turns white as it passes the reading line. *\/\n.vop-press blockquote .vop-lw{color:rgba(244,241,234,.2);transition:color .4s ease}\n.vop-press blockquote .vop-lw.is-lit{color:#fff}\n.vop-press .vop-src{margin:2.2em 0 0;font-size:13px;letter-spacing:.3em;text-transform:uppercase}\n.vop-press-slides{display:grid;max-width:820px;margin:auto}\n.vop-press-slide{grid-area:1\/1;min-width:0;opacity:0;visibility:hidden;transition:opacity .5s ease}\n.vop-press-slide.is-active{opacity:1;visibility:visible}\n.vop-press-slide[hidden],.vop-press-controls[hidden]{display:none}\n.vop-press .vop-press-credit{margin:1.2em 0 2em;color:var(--vop-dim);font-size:13px;letter-spacing:.08em}\n.vop-press .vop-press-note{margin:0 auto;max-width:640px;color:var(--vop-dim);font-size:16px;line-height:1.7}\n.vop-press a.vop-press-source{display:inline-block;padding:12px 0;color:var(--vop-ink);font-size:12px;letter-spacing:.16em;text-transform:uppercase;text-underline-offset:5px}\n.vop-press-controls{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:30px auto 0}\n.vop-press-controls button{min-width:44px;min-height:44px;padding:10px 14px;border:1px solid var(--vop-line);background:transparent;color:var(--vop-ink);font:13px\/1.5 'Jost',system-ui,sans-serif;cursor:pointer}\n.vop-press-controls button:hover{border-color:var(--vop-ink)}\n.vop-press-counter{display:none}\n\/* Client asked to hide the press arrows and Pause button; rotation still pauses on hover and focus. *\/\n.vop-press .vop-press-controls{display:none!important}\n.vop-press .vop-src a{color:inherit!important;text-decoration:none!important}\n.vop-press .vop-src a:hover{color:#c8a46a!important}\n.vop-press-controls button:focus-visible,.vop-press-source:focus-visible{outline:2px solid #c8a46a;outline-offset:4px}\n.vop-professional{position:relative;overflow:hidden;padding:12vh 6vw 16vh;text-align:center;border-top:1px solid var(--vop-line)}\n.vop-pro-bg{position:absolute;inset:0;background-size:cover;background-position:var(--vop-photo-position,50% 52%);filter:grayscale(1)}\n.vop-pro-bg::after{content:\"\";position:absolute;inset:-1px 0;background:linear-gradient(180deg,rgba(11,11,11,.9),rgba(11,11,11,.6) 45%,rgba(11,11,11,.85))}\n.vop-pro-inner{position:relative;z-index:1;max-width:760px;margin:0 auto}\n.vop-professional .vop-label{margin:0 0 26px;font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:#c8a46a}\n.vop-professional h2{margin:0;color:var(--vop-ink);font-family:'Playfair Display',Georgia,serif;font-size:clamp(32px,4vw,54px);font-weight:400;line-height:1.2}\n.vop-professional .vop-professional-copy{max-width:540px;margin:26px auto 0;color:rgba(244,241,234,.8);font-size:17px;line-height:1.8}\n.vop-professional .vop-cta{margin-top:34px}\n.vop-cta{display:inline-block;margin-top:9vh;padding:18px 46px;border:1px solid var(--vop-ink);color:var(--vop-ink)!important;\n  text-decoration:none!important;font-size:12px;letter-spacing:.3em;text-transform:uppercase;transition:background .4s,color .4s}\n.vop-cta:hover{background:var(--vop-ink);color:#0b0b0b!important}\n.vop-reveal{opacity:0;transform:translateY(40px);transition:opacity 1.2s ease,transform 1.2s ease}\n.vop-reveal.is-in{opacity:1;transform:none}\n.vop-workshop{position:relative;text-align:center}\n.vop-marquee{overflow:hidden;white-space:nowrap;border-top:1px solid rgba(244,241,234,.16);border-bottom:1px solid rgba(244,241,234,.16);padding:28px 0}\n.vop-marquee-track{display:inline-flex;animation:vop-marq 45s linear infinite}\n.vop-marquee-alt .vop-marquee-track{animation-duration:55s;animation-direction:reverse}\n\/* Workshop photos crossfade behind the title, like the testimonial hero. *\/\n.vop-ws-stage{position:relative;overflow:hidden;height:100vh;height:100svh;min-height:560px;display:flex;align-items:center;justify-content:center}\n.vop-ws-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--vop-photo-position,50% 45%);filter:grayscale(1) contrast(1.05);opacity:0;transform:scale(1.08);transition:opacity .8s ease,transform 4s ease-out}\n.vop-ws-stage img.is-on{opacity:1;transform:scale(1)}\n.vop-ws-stage::after{content:\"\";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,rgba(0,0,0,.25),rgba(0,0,0,.6) 85%),linear-gradient(180deg,rgba(0,0,0,.45),rgba(0,0,0,0) 35%,rgba(0,0,0,.55))}\n.vop-ws-copy{position:relative;z-index:2;padding:0 6vw}\n.vop-ws-copy h2{margin:0;color:var(--vop-ink);font-family:'Playfair Display',Georgia,serif;font-size:clamp(38px,5.4vw,76px);font-weight:400;line-height:1.1}\n.vop-ws-dots{position:absolute;z-index:3;left:50%;bottom:6vh;transform:translateX(-50%);display:flex;gap:12px}\n.vop-ws-dots .vop-dot{--vop-dur:3s}\n.vop-marquee-track span{display:inline-flex;align-items:center;font-size:clamp(14px,1.6vw,22px);letter-spacing:.28em;text-transform:uppercase;color:var(--vop-ink)}\n\/* Separator: thin gold vertical line (client asked for something other than the star). *\/\n.vop-marquee-track i{display:inline-block;width:1px;height:1.15em;margin:0 2.6em;background:#c8a46a;vertical-align:middle}\n.vop-workshop .vop-label{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--vop-dim);margin:0 0 1.6em}\n.vop-frames{padding:10vh 6vw 8vh;text-align:center;border-top:1px solid var(--vop-line)}\n.vop-frames .vop-label{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--vop-dim);margin:0 0 4em}\n.vop-frame-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:1200px;margin:0 auto}\n\/* Sunglasses \/ Eyeglasses carousel: both sets share one grid cell and crossfade. *\/\n.vop-frame-tabs{display:flex;justify-content:center;gap:28px;margin:0 0 3em}\n.vop-frame-tabs button{min-height:44px;padding:8px 2px;border:0;border-bottom:1px solid transparent;background:none;color:var(--vop-dim);font:12px\/1.5 'Jost',system-ui,sans-serif;letter-spacing:.28em;text-transform:uppercase;cursor:pointer}\n.vop-frame-tabs button[aria-selected=\"true\"]{color:var(--vop-ink);border-bottom-color:#c8a46a}\n.vop-frame-tabs button:focus-visible{outline:2px solid #c8a46a;outline-offset:4px}\n.vop-frame-sets{display:grid}\n.vop-frame-set{grid-area:1\/1;opacity:0;visibility:hidden;transition:opacity .6s ease,visibility 0s .6s}\n.vop-frame-set.is-active{opacity:1;visibility:visible;transition:opacity .6s ease}\n.vop-frame-set[hidden]{display:none}\n.vop-frame-card{display:block;min-width:0;color:var(--vop-ink)!important;text-decoration:none!important}\n.vop-frame-image{display:block;overflow:hidden;background:#fff;aspect-ratio:5\/4;padding:20px}\n.vop-frame-image img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .5s ease}\n.vop-frame-card:hover .vop-frame-image img{transform:scale(1.025)}\n.vop-frame-fill{padding:0}\n\/* Product photos: whole frame visible, same size for every model (client request). *\/\n.vop-frame-image.vop-frame-zoom{padding:10px}\n.vop-frame-zoom img{object-fit:contain;object-position:center;transform:scale(1.1)}\n.vop-frame-card:hover .vop-frame-zoom img{transform:scale(1.13)}\n.vop-frame-fill img{object-fit:cover}\n.vop-frame-name{display:block;margin-top:24px;font-size:12px;letter-spacing:.2em;line-height:1.6}\n.vop-frame-card:focus-visible,.vop-cta:focus-visible{outline:2px solid #c8a46a;outline-offset:6px}\n.vop-frames .vop-cta{margin-top:6vh}\n\/* Homepage footer (the page copy of the theme footer): black with white lettering. *\/\n.vop-home~.wp-block-group.has-background{padding-top:48px!important;padding-bottom:28px!important}\n.vop-home~.wp-block-group.has-background .wp-block-group.is-vertical{gap:6px!important}\n.vop-home~.wp-block-group.has-background .wp-block-group.is-vertical>.wp-block-group.is-vertical{margin-top:10px!important}\n.vop-home~.wp-block-group.has-background .wp-block-group.is-layout-flex:not(.is-vertical){column-gap:56px!important}\n.vop-home~.wp-block-group.has-background .wp-block-search{margin-top:12px!important}\n.vop-home~.wp-block-group.has-background p{margin:0!important}\n.vop-home~.wp-block-group.has-background .wp-block-spacer{height:8px!important}\n.vop-home~.wp-block-group.has-background>*+*{margin-block-start:16px!important}\n\/* Desktop footer: search on the left (limited width), link columns spaced out, copyright bottom left. *\/\n.vop-home~.wp-block-group.has-background>.alignwide:first-child{align-items:flex-start!important;column-gap:64px!important}\n.vop-home~.wp-block-group.has-background>.alignwide:first-child>.wp-block-group:first-child{flex:0 1 440px!important;max-width:440px}\n.vop-home~.wp-block-group.has-background>.alignwide:first-child>.wp-block-group:last-child{column-gap:96px!important}\n.vop-home~.wp-block-group.has-background .wp-block-group.is-vertical{align-items:flex-start!important;text-align:left}\n.vop-home~.wp-block-group.has-background>.alignwide:last-child{justify-content:flex-start!important;padding-top:20px;border-top:1px solid rgba(244,241,234,.12)}\n.vop-home~.wp-block-group.has-background .wp-block-spacer{height:28px!important}\n\/* The site title is hidden, so its empty wrapper should not push the copyright right. *\/\n.vop-home~.wp-block-group.has-background>.alignwide:last-child>.wp-block-group:first-child{display:none}\n.vop-home~.wp-block-group.has-background .alignwide{row-gap:28px!important;column-gap:48px!important}\n.vop-home~.wp-block-group.has-background{background:#0b0b0b!important;color:#f4f1ea;border-top:1px solid rgba(244,241,234,.12)}\n.vop-home~.wp-block-group.has-background :is(p,mark,a,.wp-block-site-title a){color:#f4f1ea!important}\n.vop-home~.wp-block-group.has-background a:hover{color:#c8a46a!important}\n.vop-home~.wp-block-group.has-background .wp-block-search__input{background:transparent!important;color:#f4f1ea!important;border-color:rgba(244,241,234,.4)!important}\n.vop-home~.wp-block-group.has-background .wp-block-search__inside-wrapper{border-color:rgba(244,241,234,.4)!important}\n.vop-home~.wp-block-group.has-background .wp-block-search__button{background:#f4f1ea!important;color:#0b0b0b!important;fill:#0b0b0b}\nbody.page-id-2317.vop-cookie-footer-ready .vop-cookie-footer{background:#0b0b0b;border-top-color:rgba(244,241,234,.12)}\nbody.page-id-2317.vop-cookie-footer-ready .vop-cookie-settings,body.page-id-2317.vop-cookie-footer-ready .vop-policy-links a{color:rgba(244,241,234,.78)}\nbody.page-id-2317.vop-cookie-footer-ready .vop-cookie-settings:hover{color:#fff}\nbody.page-id-2317 .vop-home~.wp-block-group.has-background .vop-cookie-settings{display:inline;min-height:0;padding:0;margin:0;border:0;background:none;color:#f4f1ea;font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}\nbody.page-id-2317 .vop-home~.wp-block-group.has-background .vop-cookie-settings:hover{color:#c8a46a}\nbody.page-id-2317 .vop-home~.wp-block-group.has-background .vop-cookie-settings:focus-visible{outline:2px solid #f4f1ea;outline-offset:3px}\n@keyframes vop-marq{to{transform:translateX(-50%)}}\n@keyframes vop-fade{to{opacity:1}}\n@keyframes vop-bar{to{transform:scaleX(1)}}\n@keyframes vop-drop{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}\n@media (max-width:640px){\n  .vop-quote{min-height:21em}\n  .vop-dots{top:auto;bottom:12vh;right:50%;transform:translateX(50%)}\n  .vop-label-top{top:108px}\n  .vop-page header .custom-logo{height:56px!important}\n  .vop-ws-dots .vop-dot{width:24px}\n  .vop-frame-grid{grid-template-columns:1fr;gap:40px;max-width:420px}\n  .vop-frames{padding-top:8vh}\n  .vop-frame-name{margin-top:16px}\n  .vop-who::before,.vop-who::after{width:16px;margin:0 8px}\n}\n@media (prefers-reduced-motion:reduce){\n  .vop-bg,.vop-w,.vop-reveal,.vop-press-slide{transition:none!important;transform:none!important;filter:none!important}\n  .vop-ws-stage img{transition:none!important;transform:none!important}\n  .vop-marquee-track{animation:none}\n  .vop-frame-image img,.vop-frame-set{transition:none}\n}\n<\/style>\n\n<div class=\"vop-home\">\n  <section class=\"vop-hero\" aria-label=\"Vintage Optical Paris\">\n    <div class=\"vop-bg\" data-person=\"jean-marc-genereux\" style=\"--vop-photo-position:72% 30%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/SCRL_0541-scaled.jpg')\"><\/div>\n    <div class=\"vop-bg\" data-person=\"ian-ziering\" style=\"--vop-photo-position:64% 34%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/SCRL_0540-scaled.jpg')\"><\/div>\n    <div class=\"vop-bg\" data-person=\"pete-molinari\" style=\"--vop-photo-position:50% 30%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2025\/02\/Screenshot-2026-10-09-at-16.12.22.png')\"><\/div>\n    <div class=\"vop-bg\" data-person=\"joey-starr\" style=\"--vop-photo-position:50% 27%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8096.jpg')\"><\/div>\n    <div class=\"vop-bg\" data-person=\"joerg-ziegler\" style=\"--vop-photo-position:50% 30%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2025\/07\/Screenshot-2026-09-30-at-18.03.14.png')\"><\/div>\n    <div class=\"vop-bg\" data-person=\"martika-caringella\" style=\"--vop-photo-position:50% 35%;background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_4219.jpg')\"><\/div>\n    <div class=\"vop-stage\">\n      <div class=\"vop-quote\">\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"jean-marc-genereux\">\n          <p class=\"vop-tag\">Style, Durability, Handcrafted<\/p>\n          <p class=\"vop-text\">\u201cThey frame my face with a non-conformist, modern flair. The moment I put them on, I feel all eyes on me and for the best possible reasons. It\u2019s about style, certainly, but also quality and durability\u201d<\/p>\n          <figcaption class=\"vop-who\">Jean-Marc G\u00e9n\u00e9reux<\/figcaption>\n        <\/figure>\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"joey-starr\">\n          <p class=\"vop-tag\">Excellent Design, Quality<\/p>\n          <p class=\"vop-text\">\u201cBeautiful quality, excellent design, I love them!\u201d<\/p>\n          <figcaption class=\"vop-who\">Joey Starr<\/figcaption>\n        <\/figure>\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"ian-ziering\">\n          <p class=\"vop-tag\">Elegant, Stylish, Bold<\/p>\n          <p class=\"vop-text\">\u201cI like these a lot, understated and elegant, bold but reserved. They are handmade, they are unbelievable\u201d<\/p>\n          <figcaption class=\"vop-who\">Ian Ziering<\/figcaption>\n        <\/figure>\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"pete-molinari\">\n          <p class=\"vop-tag\">Vintage Aesthetic, Elegance &amp; Quality<\/p>\n          <p class=\"vop-text\">\u201cIt\u2019s never easy to find modern style and quality to mix with the vintage aesthetic and quality we all love from the past. With VOP frames I find just that. A Vintage Style, Elegance, and Quality in a modern Frame\u201d<\/p>\n          <figcaption class=\"vop-who\">Pete Molinari<\/figcaption>\n        <\/figure>\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"martika-caringella\">\n          <p class=\"vop-tag\">Perfect<\/p>\n          <p class=\"vop-text\">\u201cI wanted an all-black pair for everyday wear, and this one (Dakota Black) was just perfect for me. It\u2019s exactly what I was looking for.\u201d<\/p>\n          <figcaption class=\"vop-who\">Martika Caringella<\/figcaption>\n        <\/figure>\n        <figure class=\"vop-q notranslate\" translate=\"no\" data-person=\"joerg-ziegler\">\n          <p class=\"vop-tag\">Extraordinary, Unusual, Striking<\/p>\n          <p class=\"vop-text\">\u201cExtraordinary, unusual, striking. I wear them almost everyday, simply a delight\u201d<\/p>\n          <figcaption class=\"vop-who\">Joerg Ziegler<\/figcaption>\n        <\/figure>\n\n      <\/div>\n    <\/div>\n    <p class=\"vop-label-top\">Testimonials<\/p>\n    <div class=\"vop-dots\" role=\"group\" aria-label=\"Testimonials\"><span class=\"vop-count\"><b>01<\/b> \/ <span class=\"vop-total\">06<\/span><\/span><\/div>\n    <a class=\"vop-scroll\" href=\"#vop-press\">Scroll<\/a>\n  <\/section>\n  <section class=\"vop-press\" id=\"vop-press\">\n    <p class=\"vop-label vop-reveal\">In the press<\/p>\n    <div class=\"vop-press-slides\" aria-label=\"Press coverage\" aria-roledescription=\"carousel\">\n      <div class=\"vop-press-slide is-active\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 2: Closer Mag\">\n        <blockquote class=\"notranslate\" translate=\"no\">\u201cChristine Bravo revives the style of a late icon with a pair of glasses that have achieved cult status. Behind these frames lies Vintage Optical Paris, a company based in the 17th arrondissement that draws inspiration from French eyewear designs spanning the 1940s to the 1970s.\u201d<\/blockquote>\n        <p class=\"vop-src\"><a href=\"https:\/\/www.closermag.fr\/mode\/le-clin-doeil-inattendu-christine-bravo-ravive-le-style-dune-icone-disparue-avec-une-paire-de-lunettes-devenue-culte-3616613\" target=\"_blank\" rel=\"noopener noreferrer\">\u2014 Closer Mag \u2014<\/a><\/p>\n        <a class=\"vop-press-source\" href=\"https:\/\/www.closermag.fr\/mode\/le-clin-doeil-inattendu-christine-bravo-ravive-le-style-dune-icone-disparue-avec-une-paire-de-lunettes-devenue-culte-3616613\" target=\"_blank\" rel=\"noopener noreferrer\">Read the article (in French) \u2197<\/a>\n      <\/div>\n      <div class=\"vop-press-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 2: Journal des Femmes\" hidden>\n        <blockquote class=\"notranslate\" translate=\"no\">\u201cWell, I fell for a designer, Vintage Optical Paris. It\u2019s 100% made in France.\u201d<\/blockquote>\n        <p class=\"vop-press-credit\">Christine Bravo, quoted in Journal des Femmes \u00b7 English translation<\/p>\n        <p class=\"vop-press-note notranslate\" translate=\"no\">\u201cAnd her fans clearly love it too, warmly complimenting her on Instagram.\u201d<\/p>\n        <p class=\"vop-src\">\u2014 Journal des Femmes \u2014<\/p>\n        <a class=\"vop-press-source\" href=\"https:\/\/www.journaldesfemmes.fr\/mode\/looks-de-star\/3255897-depuis-janvier-les-lunettes-de-christine-bravo-font-renaitre-le-souvenir-d-une-icone-de-la-mode-disparue\/\" target=\"_blank\" rel=\"noopener noreferrer\">Read the article (in French) \u2197<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"vop-press-controls\" role=\"group\" aria-label=\"Press controls\" hidden>\n      <button type=\"button\" data-press-prev aria-label=\"Previous press article\">\u2190<\/button>\n      <span class=\"vop-press-counter\" aria-live=\"off\">01 \/ 02<\/span>\n      <button type=\"button\" data-press-next aria-label=\"Next press article\">\u2192<\/button>\n      <button type=\"button\" data-press-pause>Pause<\/button>\n    <\/div>\n    <a class=\"vop-cta vop-reveal\" href=\"\/index.php\/vintage-optical-paris-2\/online_shop\/\">Discover the collection<\/a>\n  <\/section>\n  <section class=\"vop-workshop\" id=\"vop-workshop\">\n    <div class=\"vop-marquee\" role=\"img\" aria-label=\"Handmade in France, Limited Series, Tailor Made Models, Rare Acetate Colors, Silver Rivets\"><div class=\"vop-marquee-track\" aria-hidden=\"true\"><span>Handmade in France<i><\/i><\/span><span>Limited Series<i><\/i><\/span><span>Tailor Made Models<i><\/i><\/span><span>Rare Acetate Colors<i><\/i><\/span><span>Silver Rivets<i><\/i><\/span><span>Handmade in France<i><\/i><\/span><span>Limited Series<i><\/i><\/span><span>Tailor Made Models<i><\/i><\/span><span>Rare Acetate Colors<i><\/i><\/span><span>Silver Rivets<i><\/i><\/span><span>Handmade in France<i><\/i><\/span><span>Limited Series<i><\/i><\/span><span>Tailor Made Models<i><\/i><\/span><span>Rare Acetate Colors<i><\/i><\/span><span>Silver Rivets<i><\/i><\/span><span>Handmade in France<i><\/i><\/span><span>Limited Series<i><\/i><\/span><span>Tailor Made Models<i><\/i><\/span><span>Rare Acetate Colors<i><\/i><\/span><span>Silver Rivets<i><\/i><\/span><\/div><\/div>\n    <div class=\"vop-ws-stage\" aria-roledescription=\"carousel\" aria-label=\"The Workshop\">\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8078.jpg\" alt=\"Frame components being machined in the Vintage Optical Paris workshop\" class=\"is-on\" width=\"760\" height=\"1362\">\n      <img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8077-2.jpg\" alt=\"Machining an acetate sheet\" loading=\"lazy\" width=\"760\" height=\"1362\">\n      <img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8076.jpg\" alt=\"Acetate frame fronts on the workbench\" loading=\"lazy\" width=\"760\" height=\"1362\">\n      <img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8073.jpg\" alt=\"Vintage Optical Paris temples and hand tools\" loading=\"lazy\" width=\"760\" height=\"1362\">\n      <img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8074.jpg\" alt=\"Frame assembly at the workbench\" loading=\"lazy\" width=\"760\" height=\"1362\">\n      <img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8075.jpg\" alt=\"Inspecting a handcrafted frame by hand\" loading=\"lazy\" width=\"760\" height=\"1362\">\n      <div class=\"vop-ws-copy\">\n        <h2>The Workshop<\/h2>\n      <\/div>\n      <div class=\"vop-ws-dots\" aria-label=\"Workshop photos\"><\/div>\n    <\/div>\n    <div class=\"vop-marquee vop-marquee-alt\" role=\"img\" aria-label=\"Lifetime Guarantee, Worldwide Shipment, Live Update on Order Preparation, Cases &amp; Frames Personalization\"><div class=\"vop-marquee-track\" aria-hidden=\"true\"><span>Lifetime Guarantee<i><\/i><\/span><span>Worldwide Shipment<i><\/i><\/span><span>Live Update on Order Preparation<i><\/i><\/span><span>Cases &amp; Frames Personalization<i><\/i><\/span><span>Lifetime Guarantee<i><\/i><\/span><span>Worldwide Shipment<i><\/i><\/span><span>Live Update on Order Preparation<i><\/i><\/span><span>Cases &amp; Frames Personalization<i><\/i><\/span><span>Lifetime Guarantee<i><\/i><\/span><span>Worldwide Shipment<i><\/i><\/span><span>Live Update on Order Preparation<i><\/i><\/span><span>Cases &amp; Frames Personalization<i><\/i><\/span><span>Lifetime Guarantee<i><\/i><\/span><span>Worldwide Shipment<i><\/i><\/span><span>Live Update on Order Preparation<i><\/i><\/span><span>Cases &amp; Frames Personalization<i><\/i><\/span><\/div><\/div>\n  <\/section>\n  <section class=\"vop-frames\" id=\"vop-frames\" aria-label=\"Discover our frames\">\n    <p class=\"vop-label vop-reveal\">The Frames<\/p>\n    <div class=\"vop-frame-tabs vop-reveal\" role=\"tablist\" aria-label=\"Frame type\">\n      <button type=\"button\" role=\"tab\" id=\"vop-tab-sun\" aria-controls=\"vop-set-sun\" aria-selected=\"true\" data-frame-set=\"0\">Sunglasses<\/button>\n      <button type=\"button\" role=\"tab\" id=\"vop-tab-eye\" aria-controls=\"vop-set-eye\" aria-selected=\"false\" tabindex=\"-1\" data-frame-set=\"1\">Eyeglasses<\/button>\n    <\/div>\n    <div class=\"vop-frame-sets vop-reveal\">\n    <div class=\"vop-frame-grid vop-frame-set is-active\" id=\"vop-set-sun\" role=\"tabpanel\" aria-labelledby=\"vop-tab-sun\">\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/gargoyle-tortoise\/\">\n        <span class=\"vop-frame-image vop-frame-zoom vop-frame-zoom-less\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8135-768x713.jpeg\" alt=\"GARGOYLE TORTOISE sunglasses in tortoise acetate with green lenses\" loading=\"lazy\" width=\"768\" height=\"713\"><\/span>\n        <span class=\"vop-frame-name\">GARGOYLE TORTOISE<\/span>\n      <\/a>\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/niko-brown\/\">\n        <span class=\"vop-frame-image vop-frame-fill\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_B7F3F254.jpeg\" alt=\"NIKO BROWN temple in tortoise acetate with the VOP inlay\" loading=\"lazy\"><\/span>\n        <span class=\"vop-frame-name\">NIKO BROWN<\/span>\n      <\/a>\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/leonard-green\/\">\n        <span class=\"vop-frame-image vop-frame-zoom\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_531E0C66-768x648.jpg\" alt=\"LEONARD GREEN sunglasses in green acetate with brown lenses\" loading=\"lazy\" width=\"768\" height=\"648\"><\/span>\n        <span class=\"vop-frame-name\">LEONARD GREEN<\/span>\n      <\/a>\n    <\/div>\n    <div class=\"vop-frame-grid vop-frame-set\" id=\"vop-set-eye\" role=\"tabpanel\" aria-labelledby=\"vop-tab-eye\" hidden>\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/gargoyle-optical-bg\/\">\n        <span class=\"vop-frame-image vop-frame-zoom vop-frame-zoom-less\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_563EE756-768x713.jpeg\" alt=\"GARGOYLE OPTICAL B&amp;G eyeglasses in blue and gold tortoise acetate\" loading=\"lazy\" width=\"768\" height=\"713\"><\/span>\n        <span class=\"vop-frame-name\">GARGOYLE OPTICAL B&amp;G<\/span>\n      <\/a>\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/octave-champagne\/\">\n        <span class=\"vop-frame-image vop-frame-zoom\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/07\/SCRL_0295-2-768x625.jpeg\" alt=\"OCTAVE CHAMPAGNE eyeglasses in champagne crystal acetate\" loading=\"lazy\" width=\"768\" height=\"625\"><\/span>\n        <span class=\"vop-frame-name\">OCTAVE CHAMPAGNE<\/span>\n      <\/a>\n      <a class=\"vop-frame-card\" href=\"\/index.php\/product\/1970s-french-eyeglasses\/\">\n        <span class=\"vop-frame-image vop-frame-zoom\"><img decoding=\"async\" src=\"https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2025\/07\/SCRL_0303-768x673.jpeg\" alt=\"CRYSTAL ACETATE 1970 OVERSIZED eyeglasses\" loading=\"lazy\" width=\"768\" height=\"673\"><\/span>\n        <span class=\"vop-frame-name\">CRYSTAL ACETATE 1970 OVERSIZED<\/span>\n      <\/a>\n    <\/div>\n    <\/div>\n    <a class=\"vop-cta vop-reveal\" href=\"\/index.php\/vintage-optical-paris-2\/online_shop\/\">Choose yours<\/a>\n  <\/section>\n  <section class=\"vop-professional\" id=\"vop-professional\" aria-labelledby=\"vop-professional-title\">\n    <div class=\"vop-pro-bg\" aria-hidden=\"true\" style=\"background-image:url('https:\/\/vintageopticalparis.com\/wp-content\/uploads\/2026\/10\/IMG_8206.jpg')\"><\/div>\n    <div class=\"vop-pro-inner\">\n      <p class=\"vop-label\">Professionals<\/p>\n      <h2 id=\"vop-professional-title\">Work with Vintage Optical Paris<\/h2>\n      <p class=\"vop-professional-copy\">For opticians, retailers and distributors interested in bringing our handcrafted eyewear to their customers.<\/p>\n      <a class=\"vop-cta\" href=\"\/index.php\/work-with-us\/\">Work with us<\/a>\n    <\/div>\n  <\/section>\n<\/div>\n\n<script>\n(function(){\n  var root=document.querySelector('.vop-home');if(!root||root.dataset.ready)return;root.dataset.ready=1;\n  var DUR=6000;\n  \/\/ Press rotation is independent of the testimonial slideshow.\n  var press=root.querySelector('.vop-press');\n  if(press){\n    var slides=Array.from(press.querySelectorAll('.vop-press-slide'));\n    var controls=press.querySelector('.vop-press-controls'),pressIndex=0,pressTimer=null;\n    var reduced=window.matchMedia('(prefers-reduced-motion:reduce)');\n    var pressPaused=reduced.matches,pressVisible=false,pressHover=false;\n    var pauseButton=press.querySelector('[data-press-pause]');\n    slides.forEach(function(s,i){s.hidden=false;s.setAttribute('aria-hidden',i?'true':'false');s.inert=i!==0;});\n    controls.hidden=false;\n    function pressSchedule(){\n      clearTimeout(pressTimer);\n      pauseButton.textContent=pressPaused?'Play':'Pause';\n      pauseButton.setAttribute('aria-label',pressPaused?'Start automatic press rotation':'Pause automatic press rotation');\n      if(!pressPaused&&pressVisible&&!pressHover&&!document.hidden&&!press.contains(document.activeElement)){\n        pressTimer=setTimeout(function(){pressShow(pressIndex+1);},12000);\n      }\n    }\n    function pressShow(n){\n      pressIndex=(n+slides.length)%slides.length;\n      slides.forEach(function(s,i){var active=i===pressIndex;s.classList.toggle('is-active',active);s.setAttribute('aria-hidden',active?'false':'true');s.inert=!active;});\n      press.querySelector('.vop-press-counter').textContent=('0'+(pressIndex+1)).slice(-2)+' \/ 02';\n      pressSchedule();\n    }\n    press.querySelector('[data-press-prev]').addEventListener('click',function(){pressPaused=true;pressShow(pressIndex-1);});\n    press.querySelector('[data-press-next]').addEventListener('click',function(){pressPaused=true;pressShow(pressIndex+1);});\n    pauseButton.addEventListener('click',function(){pressPaused=!pressPaused;pressSchedule();});\n    press.addEventListener('mouseenter',function(){pressHover=true;pressSchedule();});\n    press.addEventListener('mouseleave',function(){pressHover=false;pressSchedule();});\n    press.addEventListener('focusin',pressSchedule);\n    press.addEventListener('focusout',function(){setTimeout(pressSchedule,0);});\n    document.addEventListener('visibilitychange',pressSchedule);\n    reduced.addEventListener('change',function(e){if(e.matches)pressPaused=true;pressSchedule();});\n    if('IntersectionObserver' in window){new IntersectionObserver(function(es){pressVisible=es[0].isIntersecting;pressSchedule();},{threshold:.2}).observe(press);}else{pressVisible=true;}\n    pressSchedule();\n  }\n  \/\/ Workshop photos: crossfade every 3s while the section is on screen.\n  var ws=root.querySelector('.vop-ws-stage');\n  if(ws){\n    var wsImgs=Array.from(ws.querySelectorAll('img')),wsBox=ws.querySelector('.vop-ws-dots'),wsDots=[],wsIndex=0,wsTimer=null,wsVisible=false;\n    var wsReduced=window.matchMedia('(prefers-reduced-motion:reduce)');\n    wsImgs.forEach(function(img,i){\n      var b=document.createElement('button');b.type='button';b.className='vop-dot';b.innerHTML='<span><\/span>';\n      b.setAttribute('aria-label','Workshop photo '+(i+1)+': '+img.alt);\n      b.addEventListener('click',function(){wsShow(i);});wsBox.appendChild(b);wsDots.push(b);\n    });\n    function wsSchedule(){\n      clearTimeout(wsTimer);\n      if(wsVisible&&!document.hidden&&!wsReduced.matches)wsTimer=setTimeout(function(){wsShow(wsIndex+1);},3000);\n    }\n    function wsShow(n){\n      wsIndex=(n+wsImgs.length)%wsImgs.length;\n      wsImgs.forEach(function(img,i){img.classList.toggle('is-on',i===wsIndex);});\n      wsDots.forEach(function(d,i){d.classList.remove('is-on');void d.offsetWidth;d.classList.toggle('is-on',i===wsIndex&&!wsReduced.matches);d.setAttribute('aria-current',i===wsIndex?'true':'false');});\n      wsSchedule();\n    }\n    document.addEventListener('visibilitychange',wsSchedule);\n    if('IntersectionObserver' in window){new IntersectionObserver(function(es){var was=wsVisible;wsVisible=es[0].isIntersecting;if(wsVisible&&!was)wsShow(wsIndex);else wsSchedule();},{threshold:.35}).observe(ws);}else{wsVisible=true;}\n    wsShow(0);\n  }\n  \/\/ Press quotes light up word by word while scrolling (reference: client sample).\n  var quotes=root.querySelectorAll('.vop-press blockquote');\n  if(quotes.length){\n    var litWords=[],litQueued=false,litReduced=window.matchMedia('(prefers-reduced-motion:reduce)');\n    quotes.forEach(function(q){\n      var words=q.textContent.trim().split(\/\\s+\/);\n      q.setAttribute('aria-label',q.textContent.trim());\n      q.innerHTML=words.map(function(w){return '<span class=\"vop-lw\" aria-hidden=\"true\">'+w+'<\/span>';}).join(' ');\n      litWords=litWords.concat(Array.from(q.querySelectorAll('.vop-lw')));\n    });\n    var light=function(){\n      litQueued=false;var line=window.innerHeight*0.62;\n      litWords.forEach(function(w){w.classList.toggle('is-lit',litReduced.matches||w.getBoundingClientRect().top<line);});\n    };\n    var queue=function(){if(!litQueued){litQueued=true;requestAnimationFrame(light);}};\n    window.addEventListener('scroll',queue,{passive:true});window.addEventListener('resize',queue);\n    light();\n  }\n  \/\/ The Frames: sunglasses \/ eyeglasses sets.\n  var fr=root.querySelector('.vop-frames');\n  \/\/ No &#038;&#038; here: WordPress encodes it in this part of the block when saving.\n  if(fr?fr.querySelector('.vop-frame-tabs'):null){\n    var tabs=Array.from(fr.querySelectorAll('[data-frame-set]')),sets=Array.from(fr.querySelectorAll('.vop-frame-set')),frIndex=0,frTimer=null,frVisible=false,frHold=false;\n    var frReduced=window.matchMedia('(prefers-reduced-motion:reduce)');\n    sets.forEach(function(p){p.hidden=false;});\n    function frShow(n,focus){\n      frIndex=(n+sets.length)%sets.length;\n      sets.forEach(function(p,i){var on=i===frIndex;p.classList.toggle('is-active',on);p.inert=!on;p.setAttribute('aria-hidden',on?'false':'true');});\n      tabs.forEach(function(t,i){var on=i===frIndex;t.setAttribute('aria-selected',on?'true':'false');t.tabIndex=on?0:-1;if(on?focus:false)t.focus();});\n      frSchedule();\n    }\n    function frSchedule(){clearTimeout(frTimer);if(!(!frVisible||frHold||document.hidden||frReduced.matches))frTimer=setTimeout(function(){frShow(frIndex+1);},6000);}\n    tabs.forEach(function(t,i){\n      t.addEventListener('click',function(){frShow(i);});\n      t.addEventListener('keydown',function(e){if(e.key==='ArrowRight'||e.key==='ArrowLeft'){e.preventDefault();frShow(frIndex+(e.key==='ArrowRight'?1:-1),true);}});\n    });\n    fr.addEventListener('mouseenter',function(){frHold=true;frSchedule();});\n    fr.addEventListener('mouseleave',function(){frHold=false;frSchedule();});\n    fr.addEventListener('focusin',function(){frHold=true;frSchedule();});\n    fr.addEventListener('focusout',function(){frHold=fr.contains(document.activeElement);frSchedule();});\n    document.addEventListener('visibilitychange',frSchedule);\n    if('IntersectionObserver' in window){new IntersectionObserver(function(es){frVisible=es[0].isIntersecting;frSchedule();},{threshold:.3}).observe(fr);}else{frVisible=true;}\n    frShow(0);\n  }\n  var bgs=root.querySelectorAll('.vop-bg'),qs=root.querySelectorAll('.vop-q'),dotsBox=root.querySelector('.vop-dots');\n  var total=dotsBox.querySelector('.vop-total');if(total)total.textContent=('0'+qs.length).slice(-2);\n  root.style.setProperty('--vop-dur',DUR+'ms');\n  var hero=root.querySelector('.vop-hero');\n  function fit(){var top=root.getBoundingClientRect().top+window.pageYOffset;\n    if(top>0&&top<window.innerHeight\/2)hero.style.height=(window.innerHeight-top)+'px';}\n  fit();window.addEventListener('resize',fit);\n  qs.forEach(function(q){\n    var p=q.querySelector('.vop-text');\n    var words=p.textContent.trim().split(\/\\s+\/);\n    p.innerHTML=words.map(function(w,i){return '<span class=\"vop-w\" style=\"transition-delay:'+(0.35+i*0.06).toFixed(2)+'s\">'+w+'<\/span>';}).join(' ');\n    var who=q.querySelector('.vop-who');who.style.transitionDelay=(0.6+words.length*0.06).toFixed(2)+'s';\n  });\n  var dots=[];\n  qs.forEach(function(_,i){\n    var b=document.createElement('button');b.className='vop-dot';b.type='button';\n    b.setAttribute('aria-label','Quote '+(i+1)+': '+qs[i].querySelector('.vop-who').textContent);b.innerHTML='<span><\/span>';\n    b.addEventListener('click',function(){go(i);});dotsBox.appendChild(b);dots.push(b);\n  });\n  var cur=-1,timer=null,swapTimer=null;\n  function go(n){\n    if(n===cur)return;\n    clearTimeout(timer);clearTimeout(swapTimer);\n    var previous=root.querySelector('.vop-q.is-on');if(previous)previous.classList.add('is-out');\n    bgs.forEach(function(b){b.classList.remove('is-on');});\n    dots.forEach(function(d,i){d.classList.remove('is-on');void d.offsetWidth;d.classList.toggle('is-on',i===n);});\n    cur=n;\n    swapTimer=setTimeout(function(){\n      qs.forEach(function(q){q.classList.remove('is-on','is-out');});\n      bgs.forEach(function(b){b.classList.toggle('is-on',b.dataset.person===qs[n].dataset.person);});\n      qs[n].classList.add('is-on');\n      var cn=root.querySelector('.vop-count b');if(cn)cn.textContent=('0'+(n+1)).slice(-2);\n      if(!document.hidden)timer=setTimeout(function(){go((cur+1)%qs.length);},DUR);\n    },previous?650:0);\n  }\n  var hdr=document.querySelector('.vop-page header.wp-block-template-part');\n  function solid(){if(hdr)hdr.classList.toggle('is-solid',window.pageYOffset>hero.offsetHeight-90);}\n  solid();window.addEventListener('scroll',solid,{passive:true});\n  go(0);\n  document.addEventListener('visibilitychange',function(){\n    if(document.hidden)clearTimeout(timer);else{clearTimeout(timer);timer=setTimeout(function(){go((cur+1)%qs.length);},DUR);}\n  });\n  var rev=root.querySelectorAll('.vop-reveal');\n  if('IntersectionObserver' in window){\n    var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('is-in');io.unobserve(e.target);}});},{threshold:.2});\n    rev.forEach(function(el,i){el.style.transitionDelay=(i*0.15)+'s';io.observe(el);});\n  }else rev.forEach(function(el){el.classList.add('is-in');});\n})();\n<\/script>\n<!-- VOP cookie footer preview: homepage, shop and policy preview roots only. -->\n<style>\nbody.vop-cookie-footer-ready #cmplz-manage-consent{display:none!important}\n.vop-cookie-footer-ready .vop-cookie-footer{position:static;box-sizing:border-box;width:100%;padding:20px 24px;margin:0;background:#fff;color:#333;text-align:center;border-top:1px solid #e7e7e2}\n.vop-cookie-footer-ready .vop-cookie-settings{position:static;display:inline-block;width:auto;min-height:44px;padding:10px 8px;margin:0;border:0;border-radius:0;background:transparent;color:#555;font:12px\/24px system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px;cursor:pointer}\n.vop-cookie-footer-ready .vop-cookie-settings:hover{color:#111}\n.vop-cookie-footer-ready .vop-cookie-settings:focus-visible{outline:2px solid #333;outline-offset:3px}\n.vop-cookie-footer-ready .vop-policy-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0 20px}\n.vop-cookie-footer-ready .vop-policy-links a{display:inline-flex;align-items:center;min-height:44px;color:#555;font:12px\/24px system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px}\n<\/style>\n<script>\n(function(){\n  'use strict';\n  function start(){\n    if(window.vopSiteFooter||document.querySelector('.vop-cookie-settings'))return;\n    var observer;\n    function mount(){\n      var original=document.querySelector('#cmplz-manage-consent button.cmplz-manage-consent');\n      var footer=document.querySelector('footer.wp-block-template-part,.vop-policy-footer')||document.querySelector('.vop-page');\n      if(!original||!footer)return;\n      var french=\/^fr(?:-|$)\/i.test(navigator.language||'en');\n      var row=document.createElement('div');row.className='vop-cookie-footer';\n      var links=document.createElement('nav');links.className='vop-policy-links';links.setAttribute('aria-label','Policies');\n      [['Privacy Policy',2402],['Cookie Policy',2403]].forEach(function(item){var a=document.createElement('a');a.textContent=item[0];a.href='\/?page_id='+item[1]+'&preview=true';links.appendChild(a);});\n      row.appendChild(links);\n      var button=document.createElement('button');button.type='button';button.className='vop-cookie-settings notranslate';\n      button.textContent=french?'G\u00e9rer les cookies':'Cookie settings';\n      button.lang=french?'fr':'en';button.setAttribute('translate','no');button.setAttribute('aria-haspopup','dialog');\n      var controls=original.getAttribute('aria-controls');if(controls)button.setAttribute('aria-controls',controls);\n      var openedFromFooter=false;\n      button.addEventListener('click',function(){\n        var nativeButton=document.querySelector('#cmplz-manage-consent button.cmplz-manage-consent');\n        if(nativeButton){\n          \/\/ WordPress admin previews suppress the banner. Allow an explicit\n          \/\/ preview click to open it through the plugin; keep its setting intact.\n          if(window.complianz&&complianz.disable_cookiebanner&&typeof window.show_cookie_banner==='function'){\n            var disabled=complianz.disable_cookiebanner;\n            try{complianz.disable_cookiebanner=false;window.show_cookie_banner();}\n            finally{complianz.disable_cookiebanner=disabled;}\n          }\n          openedFromFooter=true;nativeButton.click();\n        }\n      });\n      document.addEventListener('cmplz_banner_status',function(event){\n        if(event.detail==='dismissed'&&openedFromFooter){openedFromFooter=false;setTimeout(function(){button.focus({preventScroll:true});},0);}\n      });\n      row.appendChild(button);footer.appendChild(row);\n      document.body.classList.add('vop-cookie-footer-ready');\n      if(observer)observer.disconnect();\n    }\n    observer=new MutationObserver(mount);observer.observe(document.body,{childList:true,subtree:true});mount();\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n<\/script>\n<!-- VOP preview navigation: only active within explicit preview pages. -->\n<script>\n(function(){\n  'use strict';\n  function connect(){\n    if(new URLSearchParams(location.search).get('preview')!=='true')return;\n    var root=document.querySelector('.vop-page,.vop-shop-preview,.vop-policy-preview');if(!root)return;\n    var menu=root.querySelector('header .wp-block-navigation__container');\n    if(menu&&!menu.querySelector('.vop-account-link')){\n      var item=document.createElement('li');item.className='wp-block-navigation-item wp-block-navigation-link vop-account-link';\n      var account=document.createElement('a');account.className='wp-block-navigation-item__content';account.href='\/index.php\/my-account\/';account.textContent='My account';\n      item.appendChild(account);menu.appendChild(item);\n    }\n    root.querySelectorAll('a[href]').forEach(function(link){\n      var url;try{url=new URL(link.getAttribute('href'),location.href);}catch(e){return;}\n      if(url.origin!==location.origin)return;\n      var path=url.pathname.replace(\/\\\/+$\/,'');\n      if(path==='\/index.php\/vintage-optical-paris-2\/online_shop'||path==='\/vintage-optical-paris-2\/online_shop'){\n        link.href='\/index.php\/vintage-optical-paris-2\/online_shop\/';\n      }else if(path==='\/index.php\/page-d-exemple'||path==='\/page-d-exemple'){\n        link.href='\/index.php\/page-d-exemple\/';\n      }else if(link.closest('.wp-block-site-logo')&&(path===''||path==='\/index.php')&&!url.search){\n        link.href='\/';\n      }\n    });\n    document.querySelectorAll('.vop-policy-open-cookie').forEach(function(button){\n      button.addEventListener('click',function(){var settings=document.querySelector('.vop-cookie-settings');if(settings)settings.click();});\n    });\n    \/\/ The banner is inserted asynchronously; map only the policy links inside it.\n    function policies(){\n      document.querySelectorAll('.cmplz-cookiebanner .cmplz-documents').forEach(function(documents){\n        if(!documents.querySelector('.privacy-statement')){var privacy=document.createElement('a');privacy.className='privacy-statement';privacy.href='\/index.php\/privacy-policy\/';privacy.textContent='Privacy Policy';documents.appendChild(privacy);}\n      });\n      document.querySelectorAll('.cmplz-cookiebanner .cmplz-documents a').forEach(function(a){\n        if(a.matches('.cookie-statement'))a.href='\/index.php\/cookie-policy\/';\n        if(a.matches('.privacy-statement')){\n          a.href='\/index.php\/privacy-policy\/';\n          var label=\/^fr(?:-|$)\/i.test(navigator.language||'en')?'Politique de confidentialit\u00e9':'Privacy Policy';\n          if(a.textContent!==label)a.textContent=label;\n          a.hidden=false;a.removeAttribute('aria-hidden');a.style.setProperty('display','inline-block','important');\n        }\n      });\n    }\n    policies();\n    new MutationObserver(function(records){if(records.some(function(r){return r.addedNodes.length}))policies();}).observe(document.body,{childList:true,subtree:true});\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',connect,{once:true});else connect();\n})();\n<\/script>\n<!-- Homepage footer: move the policy links and Cookie settings into the Information column. -->\n<script>\n(function(){\n  'use strict';\n  function group(){\n    var foot=document.querySelector('.vop-home~.wp-block-group.has-background'),row=document.querySelector('.vop-cookie-footer');\n    if(!foot||!row)return false;\n    var head=Array.prototype.find.call(foot.querySelectorAll('p'),function(p){return p.textContent.trim().toLowerCase()==='information';});\n    var list=head&&head.nextElementSibling;if(!list)return false;\n    row.querySelectorAll('.vop-policy-links a,.vop-cookie-settings').forEach(function(el){var p=document.createElement('p');p.appendChild(el);list.appendChild(p);});\n    row.remove();return true;\n  }\n  function start(){\n    if(group())return;\n    var mo=new MutationObserver(function(){if(group())mo.disconnect();});\n    mo.observe(document.body,{childList:true,subtree:true});\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n<\/script>\n<!-- Testimonials: the client's own French translations, shown when French is selected (quotes are excluded from machine translation). -->\n<script>\n(function(){\n  'use strict';\n  var FR={\n    'jean-marc-genereux':'\u201cJe porte Mes VOP avec fiert\u00e9\u00a0! Elles habillent mon visage avec un modernisme non-conformiste. En les posant sur mon nez je me sens tout de suite regard\u00e9...pour les meilleures raisons du monde, oui\u00a0! \u201cle style\u201d mais aussi pour la qualit\u00e9 et la durabilit\u00e9.\u201d',\n    'joey-starr':'\u201cBelle qualit\u00e9, excellent design, je les adore\u00a0!\u201d',\n    'ian-ziering':'\u201cJe les aime beaucoup\u00a0; elles sont sobres et \u00e9l\u00e9gantes, audacieuses mais r\u00e9serv\u00e9es. Elles sont faites \u00e0 la main\u00a0; elles sont incroyables.\u201d',\n    'pete-molinari':'\u201cIl n\u2019est jamais facile de trouver un style et une qualit\u00e9 moderne qui s\u2019allient \u00e0 l\u2019esth\u00e9tique et \u00e0 la qualit\u00e9 d\u2019autrefois que nous appr\u00e9cions tous. Avec les montures VOP, je trouve exactement cela\u00a0: un style vintage, de l\u2019\u00e9l\u00e9gance et de la qualit\u00e9, le tout dans une monture moderne.\u201d',\n    'martika-caringella':'\u201cJe voulais une paire enti\u00e8rement noire pour un usage quotidien, et celle-ci (Dakota Black) \u00e9tait tout simplement parfaite pour moi. C\u2019est exactement ce que je recherchais.\u201d',\n    'joerg-ziegler':'\u201cExtraordinaires, originales, saisissantes. Je les porte presque tous les jours\u00a0; un vrai bonheur.\u201d'\n  };\n  var FR_TAG={\n    'jean-marc-genereux':'Style, durabilit\u00e9, fabrication artisanale',\n    'joey-starr':'Excellente conception, qualit\u00e9',\n    'ian-ziering':'\u00c9l\u00e9gant, styl\u00e9, audacieux',\n    'pete-molinari':'Esth\u00e9tique vintage, \u00e9l\u00e9gance et qualit\u00e9',\n    'martika-caringella':'Parfait',\n    'joerg-ziegler':'Extraordinaire, insolite, saisissant'\n  };\n  var EN={},EN_TAG={},shown='';\n  function lang(){\n    var raw='';try{raw=decodeURIComponent(document.cookie);}catch(e){raw=document.cookie;}\n    var m=raw.match(\/(?:^|; )googtrans=\\\/[a-z-]+\\\/([a-zA-Z-]+)\/);\n    if(m)return m[1];\n    return (document.documentElement.getAttribute('lang')||'en').split('-')[0];\n  }\n  function render(q,text){\n    var p=q.querySelector('.vop-text'),who=q.querySelector('.vop-who');\n    var words=text.trim().split(\/\\s+\/);\n    p.innerHTML='';\n    words.forEach(function(w,i){\n      if(i)p.appendChild(document.createTextNode(' '));\n      var s=document.createElement('span');s.className='vop-w';s.style.transitionDelay=(0.35+i*0.06).toFixed(2)+'s';s.textContent=w;p.appendChild(s);\n    });\n    if(who)who.style.transitionDelay=(0.6+words.length*0.06).toFixed(2)+'s';\n  }\n  function apply(){\n    var want=lang()==='fr'?'fr':'en';\n    if(want===shown)return;\n    document.querySelectorAll('.vop-q[data-person]').forEach(function(q){\n      var id=q.getAttribute('data-person'),p=q.querySelector('.vop-text');\n      if(!p)return;\n      if(!EN[id])EN[id]=p.textContent.replace(\/\\s+\/g,' ').trim();\n      var text=want==='fr'?FR[id]:EN[id];\n      if(text)render(q,text);\n      var tag=q.querySelector('.vop-tag');\n      if(tag){\n        if(!EN_TAG[id])EN_TAG[id]=tag.textContent;\n        var t=want==='fr'?FR_TAG[id]:EN_TAG[id];\n        if(t)tag.textContent=t;\n      }\n    });\n    shown=want;\n  }\n  function start(){\n    \/\/ The intro script wraps the words first; read the English text after it has run.\n    setTimeout(function(){\n      apply();\n      new MutationObserver(apply).observe(document.documentElement,{attributes:true,attributeFilter:['lang','class']});\n    },0);\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n<\/script>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-container-core-group-is-layout-56220af1 wp-block-group-is-layout-constrained\" style=\"background-color:#00000008;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-f8bcbb30 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group wp-container-content-9cfa9a5a is-content-justification-left is-layout-constrained wp-container-core-group-is-layout-e99d92c8 wp-block-group-is-layout-constrained\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:0.9rem;font-style:normal;font-weight:600;letter-spacing:1px;text-transform:uppercase\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">Search<\/mark><\/p>\n\n\n<form role=\"search\" method=\"get\" action=\"https:\/\/vintageopticalparis.com\/\" class=\"wp-block-search__button-outside wp-block-search__icon-button wp-block-search\" ><label class=\"wp-block-search__label screen-reader-text\" for=\"wp-block-search__input-2\" >Search<\/label><div class=\"wp-block-search__inside-wrapper\"  style=\"width: 620px\"><input class=\"wp-block-search__input\" id=\"wp-block-search__input-2\" placeholder=\"\" value=\"\" type=\"search\" name=\"s\" required  style=\"border-width: 1px\"\/><button aria-label=\"Search\" class=\"wp-block-search__button has-icon wp-element-button\" type=\"submit\"  style=\"border-width: 1px\"><svg class=\"search-icon\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n\t\t\t\t\t<path d=\"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z\"><\/path>\n\t\t\t\t<\/svg><\/button><\/div><\/form><\/div>\n\n\n\n<div class=\"wp-block-group is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-3b40444a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b4774353 wp-block-group-is-layout-flex\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:0.9rem;font-style:normal;font-weight:600;letter-spacing:1px;text-transform:uppercase\">Information<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size is-vertical is-layout-flex wp-container-core-group-is-layout-38e67fe0 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\"><a href=\"\/index.php\/contact\/\">Contact<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/index.php\/my-account\/\">My account<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b4774353 wp-block-group-is-layout-flex\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:0.9rem;font-style:normal;font-weight:600;letter-spacing:1px;text-transform:uppercase\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">Social<\/mark><\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size is-vertical is-layout-flex wp-container-core-group-is-layout-38e67fe0 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/instagram.com\/vintageopticalparis\" data-type=\"page\" data-id=\"51\" target=\"_blank\" rel=\"noreferrer noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">Instagram<\/mark><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:48px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-b5a26572 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\"><h1 class=\"wp-block-site-title has-small-font-size\"><a href=\"https:\/\/vintageopticalparis.com\" target=\"_self\" rel=\"home\">Vintage Optical Paris<\/a><\/h1><\/div>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">\u00a92026 &#8211; <em>Vintage Optical Paris<\/em><\/mark><\/p>\n<\/div>\n<\/div>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Style, Durability, Handcrafted \u201cThey frame my face with a non-conformist, modern flair. The moment I put them on, I feel all eyes on me and for the best possible reasons. It\u2019s about style, certainly, but also quality and durability\u201dJean-Marc G\u00e9n\u00e9reux Excellent Design, Quality \u201cBeautiful quality, excellent design, I love them!\u201dJoey Starr Elegant, Stylish, Bold \u201cI [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2529,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"blank","meta":{"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"footnotes":""},"class_list":["post-2317","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/pages\/2317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/comments?post=2317"}],"version-history":[{"count":49,"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/pages\/2317\/revisions"}],"predecessor-version":[{"id":2549,"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/pages\/2317\/revisions\/2549"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/media\/2529"}],"wp:attachment":[{"href":"https:\/\/vintageopticalparis.com\/index.php\/wp-json\/wp\/v2\/media?parent=2317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}