
{"id":698420,"date":"2026-06-01T13:57:12","date_gmt":"2026-06-01T11:57:12","guid":{"rendered":"https:\/\/www.dynseo.com\/prixcoupdecoeur\/"},"modified":"2026-06-01T13:57:12","modified_gmt":"2026-06-01T11:57:12","slug":"prixcoupdecoeur","status":"publish","type":"page","link":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/","title":{"rendered":"Prix coup de coeur &#8211; TOPCULTURE"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; max_width=&#8221;2019px&#8221; custom_padding=&#8221;0px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<!-- ============================================================<!-- [et_pb_line_break_holder] -->     DYNSEO \u2014 TOP CULTURE 2026 \u2014 HEADER CONCOURS PHOTO<!-- [et_pb_line_break_holder] -->     \u00c0 coller dans un module Divi &#8220;Code&#8221; en haut de la page<!-- [et_pb_line_break_holder] -->     ============================================================ &#8211;><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"><!-- [et_pb_line_break_holder] --><link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><!-- [et_pb_line_break_holder] --><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800;900&#038;family=Poppins:wght@400;500;600&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<style><!-- [et_pb_line_break_holder] -->.dtc-header-wrap{font-family:'Poppins',sans-serif;margin:0;padding:0;line-height:1;}<!-- [et_pb_line_break_holder] -->.dtc-header-wrap *{box-sizing:border-box;margin:0;padding:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 HERO \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->.dtc-hero{<!-- [et_pb_line_break_holder] -->    background:linear-gradient(135deg,#a9e2e4 0%,#5e5ed7 55%,#3a3aaa 100%);<!-- [et_pb_line_break_holder] -->    padding:60px 24px 90px;<!-- [et_pb_line_break_holder] -->    position:relative;<!-- [et_pb_line_break_holder] -->    overflow:hidden;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero::before{<!-- [et_pb_line_break_holder] -->    content:'';position:absolute;top:-100px;right:-100px;<!-- [et_pb_line_break_holder] -->    width:500px;height:500px;border-radius:50%;<!-- [et_pb_line_break_holder] -->    background:rgba(255,236,167,.07);pointer-events:none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero::after{<!-- [et_pb_line_break_holder] -->    content:'';position:absolute;bottom:-80px;left:-60px;<!-- [et_pb_line_break_holder] -->    width:350px;height:350px;border-radius:50%;<!-- [et_pb_line_break_holder] -->    background:rgba(255,255,255,.04);pointer-events:none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero-inner{<!-- [et_pb_line_break_holder] -->    max-width:1080px;margin:0 auto;<!-- [et_pb_line_break_holder] -->    display:flex;flex-wrap:wrap;<!-- [et_pb_line_break_holder] -->    align-items:center;gap:48px;<!-- [et_pb_line_break_holder] -->    position:relative;z-index:2;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero-left{flex:1;min-width:280px;}<!-- [et_pb_line_break_holder] -->.dtc-hero-right{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:16px;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Pill *\/<!-- [et_pb_line_break_holder] -->.dtc-pill{<!-- [et_pb_line_break_holder] -->    display:inline-flex;align-items:center;gap:8px;<!-- [et_pb_line_break_holder] -->    background:rgba(255,236,167,.18);<!-- [et_pb_line_break_holder] -->    border:1px solid rgba(255,236,167,.35);<!-- [et_pb_line_break_holder] -->    color:#ffeca7;<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;<!-- [et_pb_line_break_holder] -->    letter-spacing:1.5px;text-transform:uppercase;<!-- [et_pb_line_break_holder] -->    padding:8px 18px;border-radius:30px;<!-- [et_pb_line_break_holder] -->    margin-bottom:20px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Titre *\/<!-- [et_pb_line_break_holder] -->.dtc-hero-title{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;<!-- [et_pb_line_break_holder] -->    font-size:clamp(30px,5vw,54px);<!-- [et_pb_line_break_holder] -->    font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#fff;<!-- [et_pb_line_break_holder] -->    line-height:1.15;<!-- [et_pb_line_break_holder] -->    margin-bottom:8px;<!-- [et_pb_line_break_holder] -->    text-shadow:0 2px 16px rgba(0,0,0,.15);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero-title .dtc-accent{<!-- [et_pb_line_break_holder] -->    display:inline-block;<!-- [et_pb_line_break_holder] -->    background:#ffeca7;<!-- [et_pb_line_break_holder] -->    color:#5e5ed7;<!-- [et_pb_line_break_holder] -->    border-radius:12px;<!-- [et_pb_line_break_holder] -->    padding:2px 18px 5px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero-sub{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;<!-- [et_pb_line_break_holder] -->    font-size:clamp(16px,2.5vw,22px);<!-- [et_pb_line_break_holder] -->    font-weight:800;<!-- [et_pb_line_break_holder] -->    color:rgba(255,255,255,.9);<!-- [et_pb_line_break_holder] -->    margin-bottom:20px;<!-- [et_pb_line_break_holder] -->    letter-spacing:.3px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Description *\/<!-- [et_pb_line_break_holder] -->.dtc-hero-desc{<!-- [et_pb_line_break_holder] -->    font-size:15px;color:rgba(255,255,255,.82);<!-- [et_pb_line_break_holder] -->    line-height:1.8;max-width:520px;margin-bottom:28px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-hero-desc strong{color:#fff;font-weight:600;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Drapeaux *\/<!-- [et_pb_line_break_holder] -->.dtc-flags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px;}<!-- [et_pb_line_break_holder] -->.dtc-flag{<!-- [et_pb_line_break_holder] -->    display:flex;flex-direction:column;align-items:center;gap:4px;<!-- [et_pb_line_break_holder] -->    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);<!-- [et_pb_line_break_holder] -->    border-radius:10px;padding:8px 10px;<!-- [et_pb_line_break_holder] -->    transition:background .2s,transform .2s;cursor:default;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-flag:hover{background:rgba(255,255,255,.22);transform:translateY(-3px);}<!-- [et_pb_line_break_holder] -->.dtc-flag-emoji{font-size:22px;line-height:1;}<!-- [et_pb_line_break_holder] -->.dtc-flag-name{font-size:9px;font-weight:700;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.5px;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* CTAs *\/<!-- [et_pb_line_break_holder] -->.dtc-ctas{display:flex;flex-wrap:wrap;gap:12px;}<!-- [et_pb_line_break_holder] -->.dtc-btn{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:14px;font-weight:700;<!-- [et_pb_line_break_holder] -->    padding:13px 28px;border-radius:30px;border:none;cursor:pointer;<!-- [et_pb_line_break_holder] -->    text-decoration:none;display:inline-block;text-align:center;<!-- [et_pb_line_break_holder] -->    transition:all .25s ease;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-btn-primary{<!-- [et_pb_line_break_holder] -->    background:#ffeca7;color:#5e5ed7;<!-- [et_pb_line_break_holder] -->    box-shadow:0 4px 18px rgba(255,236,167,.3);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-btn-primary:hover{background:#ffdb7a;transform:translateY(-2px);box-shadow:0 8px 28px rgba(255,236,167,.45);}<!-- [et_pb_line_break_holder] -->.dtc-btn-outline{<!-- [et_pb_line_break_holder] -->    background:rgba(255,255,255,.15);color:#fff;<!-- [et_pb_line_break_holder] -->    border:2px solid rgba(255,255,255,.5);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-btn-outline:hover{background:rgba(255,255,255,.25);border-color:#fff;transform:translateY(-2px);}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Troph\u00e9e illustratif \u00e0 droite *\/<!-- [et_pb_line_break_holder] -->.dtc-trophy-card{<!-- [et_pb_line_break_holder] -->    background:rgba(255,255,255,.12);<!-- [et_pb_line_break_holder] -->    border:1px solid rgba(255,255,255,.2);<!-- [et_pb_line_break_holder] -->    border-radius:20px;padding:24px 28px;<!-- [et_pb_line_break_holder] -->    text-align:center;min-width:180px;<!-- [et_pb_line_break_holder] -->    backdrop-filter:blur(4px);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-trophy-emoji{font-size:52px;line-height:1;display:block;margin-bottom:10px;}<!-- [et_pb_line_break_holder] -->.dtc-trophy-label{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:13px;font-weight:800;<!-- [et_pb_line_break_holder] -->    color:#ffeca7;text-transform:uppercase;letter-spacing:1px;<!-- [et_pb_line_break_holder] -->    display:block;margin-bottom:4px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-trophy-sub{font-size:12px;color:rgba(255,255,255,.7);}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Compteur de votes *\/<!-- [et_pb_line_break_holder] -->.dtc-vote-counter{<!-- [et_pb_line_break_holder] -->    background:rgba(255,236,167,.15);<!-- [et_pb_line_break_holder] -->    border:1px solid rgba(255,236,167,.3);<!-- [et_pb_line_break_holder] -->    border-radius:14px;padding:14px 20px;<!-- [et_pb_line_break_holder] -->    display:flex;align-items:center;gap:10px;<!-- [et_pb_line_break_holder] -->    min-width:180px;justify-content:center;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-vote-counter-num{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:28px;font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#ffeca7;line-height:1;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-vote-counter-txt{font-size:12px;color:rgba(255,255,255,.75);line-height:1.4;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 COURBE \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->.dtc-curve{<!-- [et_pb_line_break_holder] -->    height:70px;background:#fff;<!-- [et_pb_line_break_holder] -->    border-radius:50% 50% 0 0;<!-- [et_pb_line_break_holder] -->    margin-top:-2px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 BANDE INFO \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->.dtc-infoband{<!-- [et_pb_line_break_holder] -->    background:#fff;<!-- [et_pb_line_break_holder] -->    padding:0 24px 48px;<!-- [et_pb_line_break_holder] -->    margin-top:-2px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-infoband-inner{<!-- [et_pb_line_break_holder] -->    max-width:1080px;margin:0 auto;<!-- [et_pb_line_break_holder] -->    display:grid;<!-- [et_pb_line_break_holder] -->    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));<!-- [et_pb_line_break_holder] -->    gap:20px;<!-- [et_pb_line_break_holder] -->    margin-top:-34px;<!-- [et_pb_line_break_holder] -->    position:relative;z-index:5;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-infocard{<!-- [et_pb_line_break_holder] -->    background:#fff;<!-- [et_pb_line_break_holder] -->    border-radius:18px;<!-- [et_pb_line_break_holder] -->    padding:22px 20px;<!-- [et_pb_line_break_holder] -->    box-shadow:0 4px 24px rgba(94,94,215,.12);<!-- [et_pb_line_break_holder] -->    display:flex;align-items:flex-start;gap:14px;<!-- [et_pb_line_break_holder] -->    transition:transform .25s,box-shadow .25s;<!-- [et_pb_line_break_holder] -->    border:1px solid rgba(94,94,215,.08);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-infocard:hover{transform:translateY(-4px);box-shadow:0 10px 36px rgba(94,94,215,.18);}<!-- [et_pb_line_break_holder] -->.dtc-infocard-icon{<!-- [et_pb_line_break_holder] -->    width:46px;height:46px;border-radius:13px;<!-- [et_pb_line_break_holder] -->    display:flex;align-items:center;justify-content:center;<!-- [et_pb_line_break_holder] -->    font-size:22px;flex-shrink:0;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-ic-blue{background:#e2e2f9;}<!-- [et_pb_line_break_holder] -->.dtc-ic-mint{background:#d9f4f5;}<!-- [et_pb_line_break_holder] -->.dtc-ic-yellow{background:#fff8d6;}<!-- [et_pb_line_break_holder] -->.dtc-ic-pink{background:#fde0e8;}<!-- [et_pb_line_break_holder] -->.dtc-infocard-body{}<!-- [et_pb_line_break_holder] -->.dtc-infocard-label{<!-- [et_pb_line_break_holder] -->    font-size:11px;font-weight:700;text-transform:uppercase;<!-- [et_pb_line_break_holder] -->    letter-spacing:1px;color:#94a3b8;margin-bottom:4px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-infocard-value{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:15px;font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#1a1a2e;line-height:1.3;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 EXPLICATION CONCOURS PHOTO \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->.dtc-explain{<!-- [et_pb_line_break_holder] -->    background:linear-gradient(135deg,#f0f0ff 0%,#e8f4f5 100%);<!-- [et_pb_line_break_holder] -->    padding:52px 24px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-explain-inner{max-width:1080px;margin:0 auto;}<!-- [et_pb_line_break_holder] -->.dtc-explain-title{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:clamp(20px,3vw,30px);font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#1a1a2e;text-align:center;margin-bottom:8px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-explain-title .dtc-hl{<!-- [et_pb_line_break_holder] -->    display:inline-block;background:#ffb600;color:#fff;<!-- [et_pb_line_break_holder] -->    border-radius:30px;padding:4px 18px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-explain-desc{<!-- [et_pb_line_break_holder] -->    text-align:center;font-size:15px;color:#64748b;<!-- [et_pb_line_break_holder] -->    max-width:680px;margin:0 auto 40px;line-height:1.7;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-steps{<!-- [et_pb_line_break_holder] -->    display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));<!-- [et_pb_line_break_holder] -->    gap:20px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-step{<!-- [et_pb_line_break_holder] -->    background:#fff;border-radius:18px;padding:26px 22px;<!-- [et_pb_line_break_holder] -->    position:relative;overflow:hidden;<!-- [et_pb_line_break_holder] -->    box-shadow:0 3px 16px rgba(94,94,215,.09);<!-- [et_pb_line_break_holder] -->    border:1px solid rgba(94,94,215,.07);<!-- [et_pb_line_break_holder] -->    transition:transform .25s,box-shadow .25s;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-step:hover{transform:translateY(-5px);box-shadow:0 10px 32px rgba(94,94,215,.16);}<!-- [et_pb_line_break_holder] -->.dtc-step-num{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;<!-- [et_pb_line_break_holder] -->    font-size:48px;font-weight:900;<!-- [et_pb_line_break_holder] -->    color:rgba(94,94,215,.08);<!-- [et_pb_line_break_holder] -->    position:absolute;top:-6px;right:14px;<!-- [et_pb_line_break_holder] -->    line-height:1;pointer-events:none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-step-icon{<!-- [et_pb_line_break_holder] -->    width:52px;height:52px;border-radius:14px;<!-- [et_pb_line_break_holder] -->    display:flex;align-items:center;justify-content:center;<!-- [et_pb_line_break_holder] -->    font-size:24px;margin-bottom:14px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-step h3{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:16px;font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#1a1a2e;margin-bottom:8px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-step p{font-size:13px;color:#64748b;line-height:1.65;}<!-- [et_pb_line_break_holder] -->.dtc-step-badge{<!-- [et_pb_line_break_holder] -->    display:inline-block;margin-top:12px;<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:11px;font-weight:800;<!-- [et_pb_line_break_holder] -->    padding:5px 14px;border-radius:20px;letter-spacing:.5px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 R\u00c8GLES RAPIDES \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->.dtc-rules{<!-- [et_pb_line_break_holder] -->    background:#1a1a2e;<!-- [et_pb_line_break_holder] -->    padding:40px 24px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-rules-inner{<!-- [et_pb_line_break_holder] -->    max-width:1080px;margin:0 auto;<!-- [et_pb_line_break_holder] -->    display:flex;flex-wrap:wrap;align-items:center;gap:32px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-rules-title{<!-- [et_pb_line_break_holder] -->    font-family:'Montserrat',sans-serif;font-size:18px;font-weight:900;<!-- [et_pb_line_break_holder] -->    color:#ffeca7;flex:0 0 auto;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-rules-list{<!-- [et_pb_line_break_holder] -->    display:flex;flex-wrap:wrap;gap:10px;flex:1;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-rule-chip{<!-- [et_pb_line_break_holder] -->    display:flex;align-items:center;gap:7px;<!-- [et_pb_line_break_holder] -->    background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);<!-- [et_pb_line_break_holder] -->    border-radius:30px;padding:8px 16px;<!-- [et_pb_line_break_holder] -->    font-size:13px;color:rgba(255,255,255,.85);font-weight:500;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtc-rule-chip span{font-size:16px;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/<!-- [et_pb_line_break_holder] -->@media(max-width:680px){<!-- [et_pb_line_break_holder] -->    .dtc-hero{padding:40px 16px 70px;}<!-- [et_pb_line_break_holder] -->    .dtc-hero-right{width:100%;}<!-- [et_pb_line_break_holder] -->    .dtc-trophy-card,.dtc-vote-counter{min-width:auto;flex:1;}<!-- [et_pb_line_break_holder] -->    .dtc-hero-right{flex-direction:row;justify-content:center;}<!-- [et_pb_line_break_holder] -->    .dtc-infoband-inner{grid-template-columns:1fr 1fr;}<!-- [et_pb_line_break_holder] -->    .dtc-steps{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] -->    .dtc-rules-inner{flex-direction:column;align-items:flex-start;gap:16px;}<!-- [et_pb_line_break_holder] -->    .dtc-explain{padding:36px 16px;}<!-- [et_pb_line_break_holder] -->    .dtc-rules{padding:30px 16px;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media(max-width:420px){<!-- [et_pb_line_break_holder] -->    .dtc-infoband-inner{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] -->    .dtc-flags .dtc-flag-name{display:none;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"dtc-header-wrap\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- \u2550\u2550 HERO \u2550\u2550 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<section class=\"dtc-hero\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"dtc-hero-inner\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-hero-left\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-pill\">\ud83d\udcf8 Prix Coup de C\u0153ur 2026<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<h1 class=\"dtc-hero-title\"><!-- [et_pb_line_break_holder] -->                    Concours photo<!\u2013- [et_pb_br_holder] -\u2013><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-accent\">TOP CULTURE<\/span><!-- [et_pb_line_break_holder] -->                <\/h1>\n<p><!-- [et_pb_line_break_holder] -->                <pee class=\"dtc-hero-sub\">Votez pour vos r\u00e9sidences pr\u00e9f\u00e9r\u00e9es !<\/pee><!-- [et_pb_line_break_holder] -->                <pee class=\"dtc-hero-desc\"><!-- [et_pb_line_break_holder] -->                    Chaque participant peut soumettre ses plus belles photos de l&#8217;\u00e9dition 2026.<!\u2013- [et_pb_br_holder] -\u2013><!-- [et_pb_line_break_holder] -->                    <strong>Tout le monde vote. Un seul grand gagnant. Un abonnement au programme de son choix !<\/strong><!-- [et_pb_line_break_holder] -->                <\/pee><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-flags\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\uddeb\ud83c\uddf7<\/span><span class=\"dtc-flag-name\">France<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\uddee\ud83c\uddf9<\/span><span class=\"dtc-flag-name\">Italie<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\uddea\ud83c\uddf8<\/span><span class=\"dtc-flag-name\">Espagne<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\udde9\ud83c\uddea<\/span><span class=\"dtc-flag-name\">Allemagne<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\udde7\ud83c\uddea<\/span><span class=\"dtc-flag-name\">Belgique<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\udde8\ud83c\udded<\/span><span class=\"dtc-flag-name\">Suisse<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-flag\"><span class=\"dtc-flag-emoji\">\ud83c\uddf1\ud83c\uddfa<\/span><span class=\"dtc-flag-name\">Luxem.<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-ctas\"><!-- [et_pb_line_break_holder] -->                    <a href=\"#dtc-app\" class=\"dtc-btn dtc-btn-primary\">\u2764\ufe0f Voter maintenant<\/a><!-- [et_pb_line_break_holder] -->                    <a href=\"#dtc-app\" class=\"dtc-btn dtc-btn-outline\" onclick=\"document.querySelector('.dtc-tab:last-child')&#038;&#038;document.querySelector('.dtc-tab:last-child').click();return true;\">\ud83d\udce4 Soumettre ma photo<\/a><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-hero-right\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-trophy-card\"><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-trophy-emoji\">\ud83c\udfc6<\/span><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-trophy-label\">Prix Coup de C\u0153ur<\/span><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-trophy-sub\">Abonnement au programme de son choix<\/span><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-vote-counter\"><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-vote-counter-num\">\u2764\ufe0f<\/span><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-vote-counter-txt\"><!-- [et_pb_line_break_holder] -->                        <strong style=\"color:#fff;font-size:13px;display:block;\">Vote gratuit<\/strong><!-- [et_pb_line_break_holder] -->                        1 vote \/ jour \/ email<!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- \u2550\u2550 COURBE \u2550\u2550 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"dtc-curve\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- \u2550\u2550 BANDE INFO \u2550\u2550 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"dtc-infoband\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"dtc-infoband-inner\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-infocard\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-icon dtc-ic-yellow\">\ud83d\udcc5<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-body\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-label\">Dates du vote<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-value\">22 juin \u2014 17 juillet 2026<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-infocard\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-icon dtc-ic-blue\">\ud83d\uddf3\ufe0f<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-body\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-label\">Fr\u00e9quence<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-value\">1 vote gratuit par jour<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-infocard\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-icon dtc-ic-pink\">\ud83c\udf81<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-body\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-label\">R\u00e9compense votant<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-value\">Code promo 10\u20ac offerts<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-infocard\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-icon dtc-ic-mint\">\ud83c\udf0d<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-infocard-body\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-label\">Pays participants<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-infocard-value\">7 pays, 1 seul grand gagnant<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- \u2550\u2550 COMMENT \u00c7A MARCHE \u2550\u2550 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<section class=\"dtc-explain\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"dtc-explain-inner\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<h2 class=\"dtc-explain-title\">Comment participer au <span class=\"dtc-hl\">concours photo<\/span> ?<\/h2>\n<p><!-- [et_pb_line_break_holder] -->            <pee class=\"dtc-explain-desc\">Deux fa\u00e7ons de contribuer : soumettez les photos de votre r\u00e9sidence ou votez pour vos favorites. Et recevez votre bon de r\u00e9duction !<\/pee><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-steps\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-step\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-num\">1<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-icon\" style=\"background:#e2e2f9;\">\ud83d\udce4<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h3>Soumettez votre photo<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                    <pee>Uploadez une ou plusieurs photos de vos activit\u00e9s, ajoutez un commentaire \u2014 la traduction FR\/EN\/IT est automatique.<\/pee><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-step-badge\" style=\"background:#e2e2f9;color:#5e5ed7;\">Tous les participants<\/span><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-step\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-num\">2<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-icon\" style=\"background:#fde0e8;\">\u2764\ufe0f<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h3>Votez chaque jour<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                    <pee>Parcourez la galerie, votez pour votre photo pr\u00e9f\u00e9r\u00e9e avec votre email. Un vote par jour, renouvelable chaque matin.<\/pee><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-step-badge\" style=\"background:#fde0e8;color:#e73469;\">Tout le monde vote<\/span><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-step\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-num\">3<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-icon\" style=\"background:#fff8d6;\">\ud83c\udf81<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h3>Recevez votre bon<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                    <pee>Apr\u00e8s votre vote, un email vous est envoy\u00e9 avec un code promo <strong>10\u20ac de r\u00e9duction<\/strong> sur le catalogue DYNSEO.<\/pee><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-step-badge\" style=\"background:#fff8d6;color:#8b7000;\">Automatique &#038; imm\u00e9diat<\/span><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-step\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-num\">4<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"dtc-step-icon\" style=\"background:#d9f4f5;\">\ud83c\udfc6<\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h3>Les r\u00e9sultats le 17 juillet<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                    <pee>Le classement final est publi\u00e9. La r\u00e9sidence avec le plus de votes remporte le Prix Coup de C\u0153ur \u2014 <strong>un abonnement annuel au programme DYNSEO de son choix<\/strong>.<\/pee><!-- [et_pb_line_break_holder] -->                    <span class=\"dtc-step-badge\" style=\"background:#d9f4f5;color:#2a7577;\">17 juillet 2026 \u00e0 14h<\/span><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- \u2550\u2550 R\u00c8GLES \u2550\u2550 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"dtc-rules\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"dtc-rules-inner\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-rules-title\">\ud83d\udccb Les r\u00e8gles<\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"dtc-rules-list\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\ud83d\udcf8<\/span> Tout participant peut soumettre ses photos<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\ud83d\uddf3\ufe0f<\/span> 1 vote par email par jour<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\ud83c\udf0d<\/span> Commentaire affich\u00e9 en FR, EN et IT<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\u2705<\/span> Photos valid\u00e9es avant publication<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\ud83c\udfc6<\/span> 1 seul gagnant \u2014 abonnement au programme de son choix<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"dtc-rule-chip\"><span>\ud83c\udf81<\/span> Code promo 10\u20ac pour chaque votant<\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- FIN HEADER CONCOURS PHOTO TOP CULTURE -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]    <div id=\"dtc-app\" data-rest=\"https:\/\/www.dynseo.com\/hi\/wp-json\/dynseo\/v1\/tc-photo\" data-nonce=\"9906eb1589\" data-view=\"all\"><\/div>\n    <script>\n    (function(){\n        const REST   = \"https:\\\/\\\/www.dynseo.com\\\/hi\\\/wp-json\\\/dynseo\\\/v1\\\/tc-photo\";\n        const NONCE  = \"9906eb1589\";\n        const VIEW   = \"all\";\n        const OPEN   = true;\n        const APP    = document.getElementById('dtc-app');\n\n        const FORCED = \"\";\n        const LANG   = FORCED || (['fr','en','it'].includes((navigator.language||'').substring(0,2)) ? (navigator.language||'').substring(0,2) : 'fr');\n        const I18N = {\n            fr: {\n                tab_vote:'\ud83d\uddf3 Voter pour une photo', tab_submit:'\ud83d\udce4 Soumettre votre photo',\n                name_ph:'Nom de votre r\u00e9sidence *', country_ph:'Pays *', email_ph:'Email *',\n                comment_ph:'D\u00e9crivez votre photo en quelques mots\u2026',\n                translate_btn:'\ud83c\udf10 Traduire automatiquement', translating:'Traduction en cours\u2026',\n                submit_btn:'\ud83d\udce4 Soumettre la photo', submitting:'Envoi\u2026',\n                vote_btn:'\u2764\ufe0f Voter', voting:'Envoi du vote\u2026',\n                email_vote_ph:'Votre email pour recevoir votre bon de r\u00e9duction',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Votre pays',\n                photo_label:'Choisir une photo (max 8 Mo)',\n                comment_fr_label:'Commentaire en fran\u00e7ais',\n                comment_en_label:'Commentaire en anglais',\n                comment_it_label:'Commentario in italiano',\n                caption_hint:'\u270d\ufe0f \u00c9crivez votre commentaire dans une seule langue, puis cliquez sur \u00ab Traduire automatiquement \u00bb en bas pour remplir les autres.',\n                already_voted:\"Vous avez d\u00e9j\u00e0 vot\u00e9 aujourd\\'hui ! Revenez demain \ud83d\ude0a\",\n                closed:'Le concours est actuellement ferm\u00e9.',\n                all_countries:'Tous les pays',\n                no_photos:'Aucune photo pour le moment. Soyez le premier \u00e0 soumettre la v\u00f4tre !',\n                filter_label:'Filtrer par pays :',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Partager :',\n                share_copied:'Lien copi\u00e9 dans le presse-papier !',\n                share_text:\"D\u00e9couvrez cette photo du concours TOP CULTURE de DYNSEO !\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'Voir les commentaires',\n                comment_hide:'Masquer les commentaires',\n                comment_name_ph:'Votre nom',\n                comment_text_ph:'Votre commentaire\u2026',\n                comment_send:'Envoyer',\n                comment_empty:'Soyez le premier \u00e0 commenter !',\n            },\n            en: {\n                tab_vote:'\ud83d\uddf3 Vote for a photo', tab_submit:'\ud83d\udce4 Submit your photo',\n                name_ph:'Your residence name *', country_ph:'Country *', email_ph:'Email *',\n                comment_ph:'Describe your photo in a few words\u2026',\n                translate_btn:'\ud83c\udf10 Auto-translate', translating:'Translating\u2026',\n                submit_btn:'\ud83d\udce4 Submit photo', submitting:'Sending\u2026',\n                vote_btn:'\u2764\ufe0f Vote', \n                voting:'Voting\u2026',\n                email_vote_ph:'Your email to receive your discount code',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Your country',\n                photo_label:'Choose a photo (max 8 MB)',\n                comment_fr_label:'Comment in French',\n                comment_en_label:'Comment in English',\n                comment_it_label:'Comment in Italian',\n                caption_hint:'\u270d\ufe0f Write your caption in just one language, then click \u201cAuto-translate\u201d below to fill in the others.',\n                already_voted:'You already voted today! Come back tomorrow \ud83d\ude0a',\n                closed:'The contest is currently closed.',\n                all_countries:'All countries',\n                no_photos:'No photos yet. Be the first to submit yours!',\n                filter_label:'Filter by country:',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Share:',\n                share_copied:'Link copied to clipboard!',\n                share_text:\"Check out this photo from DYNSEO's TOP CULTURE contest!\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'View comments',\n                comment_hide:'Hide comments',\n                comment_name_ph:'Your name',\n                comment_text_ph:'Your comment\u2026',\n                comment_send:'Send',\n                comment_empty:'Be the first to comment!',\n            },\n            it: {\n                tab_vote:'\ud83d\uddf3 Vota una foto', tab_submit:'\ud83d\udce4 Invia la tua foto',\n                name_ph:'Nome della tua struttura *', country_ph:'Paese *', email_ph:'Email *',\n                comment_ph:'Descrivi la tua foto in poche parole\u2026',\n                translate_btn:'\ud83c\udf10 Traduzione automatica', translating:'Traduzione\u2026',\n                submit_btn:'\ud83d\udce4 Invia la foto', submitting:'Invio\u2026',\n                vote_btn:'\u2764\ufe0f Vota', \n                voting:'Invio voto\u2026',\n                email_vote_ph:'La tua email per ricevere il codice sconto',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Il tuo paese',\n                photo_label:'Scegli una foto (max 8 MB)',\n                comment_fr_label:'Commento in francese',\n                comment_en_label:'Commento in inglese',\n                comment_it_label:'Commento in italiano',\n                caption_hint:'\u270d\ufe0f Scrivi la didascalia in una sola lingua, poi clicca su \u201cTraduzione automatica\u201d in basso per compilare le altre.',\n                already_voted:\"Hai gi\u00e0 votato oggi! Torna domani \ud83d\ude0a\",\n                closed:'Il concorso \u00e8 attualmente chiuso.',\n                all_countries:'Tutti i paesi',\n                no_photos:'Nessuna foto per ora. Sii il primo a inviare la tua!',\n                filter_label:'Filtra per paese:',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Condividi:',\n                share_copied:'Link copiato negli appunti!',\n                share_text:\"Guarda questa foto del concorso TOP CULTURE di DYNSEO!\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'Vedi i commenti',\n                comment_hide:'Nascondi i commenti',\n                comment_name_ph:'Il tuo nome',\n                comment_text_ph:'Il tuo commento\u2026',\n                comment_send:'Invia',\n                comment_empty:'Sii il primo a commentare!',\n            },\n        };\n        const T = I18N[LANG] || I18N.fr;\n\n        const COUNTRIES = [\n            {v:'fr',f:'\ud83c\uddeb\ud83c\uddf7',l:{fr:'France',en:'France',it:'Francia'}},\n            {v:'be',f:'\ud83c\udde7\ud83c\uddea',l:{fr:'Belgique',en:'Belgium',it:'Belgio'}},\n            {v:'ch',f:'\ud83c\udde8\ud83c\udded',l:{fr:'Suisse',en:'Switzerland',it:'Svizzera'}},\n            {v:'it',f:'\ud83c\uddee\ud83c\uddf9',l:{fr:'Italie',en:'Italy',it:'Italia'}},\n            {v:'es',f:'\ud83c\uddea\ud83c\uddf8',l:{fr:'Espagne',en:'Spain',it:'Spagna'}},\n            {v:'pt',f:'\ud83c\uddf5\ud83c\uddf9',l:{fr:'Portugal',en:'Portugal',it:'Portogallo'}},\n            {v:'de',f:'\ud83c\udde9\ud83c\uddea',l:{fr:'Allemagne',en:'Germany',it:'Germania'}},\n            {v:'nl',f:'\ud83c\uddf3\ud83c\uddf1',l:{fr:'Pays-Bas',en:'Netherlands',it:'Paesi Bassi'}},\n            {v:'lu',f:'\ud83c\uddf1\ud83c\uddfa',l:{fr:'Luxembourg',en:'Luxembourg',it:'Lussemburgo'}},\n            {v:'ca',f:'\ud83c\udde8\ud83c\udde6',l:{fr:'Canada',en:'Canada',it:'Canada'}},\n            {v:'ma',f:'\ud83c\uddf2\ud83c\udde6',l:{fr:'Maroc',en:'Morocco',it:'Marocco'}},\n            {v:'sn',f:'\ud83c\uddf8\ud83c\uddf3',l:{fr:'S\u00e9n\u00e9gal',en:'Senegal',it:'Senegal'}},\n            {v:'other',f:'\ud83c\udf0d',l:{fr:'Autre',en:'Other',it:'Altro'}},\n        ];\n        function cName(c){ return (c.l[LANG]||c.l.fr); }\n        function escapeHtml(s){ return (s||'').replace(\/[&<>\"']\/g, m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[m])); }\n\n        let tab = (VIEW==='submit') ? 'submit' : 'vote';\n        let gallery = [], filterCountry='';\n        let photoFile=null, photoData=null, photoMime=null;\n        let translating=false, submitting=false;\n        let form={ residence:'', country:'', email:'', comment_fr:'', comment_en:'', comment_it:'' };\n\n        function css(){ \n            return `<style>\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800;900&family=Poppins:wght@400;500;600&display=swap');\n        #dtc-app *{box-sizing:border-box;}\n        #dtc-app{font-family:'Poppins',sans-serif;}\n        .dtc-wrap{max-width:1100px;margin:0 auto;padding:32px 20px 48px;}\n        .dtc-tabs{display:flex;gap:6px;margin-bottom:32px;background:#f0f0fb;border-radius:50px;padding:5px;width:fit-content;}\n        .dtc-tab{padding:11px 28px;cursor:pointer;font-family:'Montserrat',sans-serif;font-size:13px;font-weight:800;color:#888;border-radius:50px;transition:all .25s;border:none;background:transparent;letter-spacing:.3px;}\n        .dtc-tab.active{background:#5e5ed7;color:#fff;box-shadow:0 4px 14px rgba(94,94,215,.35);}\n        .dtc-tab:hover:not(.active){background:#e2e2f9;color:#5e5ed7;}\n        .dtc-filter{display:flex;align-items:center;gap:12px;margin-bottom:28px;flex-wrap:wrap;}\n        .dtc-filter label{font-family:'Montserrat',sans-serif;font-weight:800;color:#1a1a2e;font-size:13px;text-transform:uppercase;letter-spacing:.8px;}\n        .dtc-filter-pills{display:flex;flex-wrap:wrap;gap:8px;}\n        .dtc-pill-btn{padding:7px 16px;border-radius:50px;border:1.5px solid #e2e2f9;background:#fff;font-size:12px;font-weight:700;color:#888;cursor:pointer;transition:all .2s;font-family:'Poppins',sans-serif;}\n        .dtc-pill-btn.active{background:#5e5ed7;border-color:#5e5ed7;color:#fff;box-shadow:0 3px 10px rgba(94,94,215,.25);}\n        .dtc-pill-btn:hover:not(.active){background:#e2e2f9;border-color:#c5c5f0;color:#5e5ed7;}\n        .dtc-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;}\n        \n        .dtc-card{background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 4px 20px rgba(94,94,215,.09);transition:transform .25s,box-shadow .25s;border:1px solid rgba(94,94,215,.07);}\n        .dtc-card:hover{transform:translateY(-6px);box-shadow:0 14px 40px rgba(94,94,215,.17);}\n        .dtc-card-img-wrap{position:relative;overflow:hidden;}\n        .dtc-card img{width:100%;height:210px;object-fit:cover;display:block;transition:transform .4s ease;}\n        .dtc-card:hover img{transform:scale(1.04);}\n        .dtc-card-rank{position:absolute;top:10px;left:10px;background:rgba(26,26,46,.72);color:#ffeca7;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:900;padding:4px 11px;border-radius:20px;}\n        .dtc-card-flag{position:absolute;top:10px;right:10px;font-size:22px;background:rgba(255,255,255,.92);border-radius:8px;padding:2px 6px;line-height:1.4;}\n        .dtc-card-body{padding:18px;}\n        .dtc-card h3{margin:0 0 6px;font-family:'Montserrat',sans-serif;font-size:15px;font-weight:900;color:#1a1a2e;line-height:1.3;}\n        .dtc-card p{margin:0 0 12px;font-size:13px;color:#64748b;line-height:1.6;}\n        \n        \/*voting*\/\n        .dtc-vote-zone{background:#f8f8ff;border-radius:14px;padding:14px;}\n        .dtc-vote-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap;}\n        .dtc-vote-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            \/*padding:6px 14px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-vote-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;\n            }\n        .dtc-vote-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-vote-row{display:flex;gap:8px;align-items:stretch;}\n        .dtc-vote-input{flex:1;padding:9px 13px;border:1.5px solid #dde;border-radius:10px;font-size:13px;outline:none;font-family:'Poppins',sans-serif;transition:border .2s;min-width:0;}\n        .dtc-vote-input:focus{border-color:#5e5ed7;}\n        .dtc-btn{padding:9px 18px;border:none;border-radius:10px;font-size:13px;font-family:'Montserrat',sans-serif;font-weight:800;cursor:pointer;transition:all .2s;}\n        .dtc-btn-vote{background:linear-gradient(135deg,#e73469,#ff6b95);color:#fff;white-space:nowrap;}\n        .dtc-btn-vote:hover{opacity:.88;transform:translateY(-1px);box-shadow:0 4px 14px rgba(231,52,105,.3);}\n        .dtc-btn-vote:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}\n        .dtc-promo-box{background:linear-gradient(135deg,#fff8d6,#fffbef);border:2px dashed #ffb600;border-radius:14px;padding:18px;text-align:center;margin-top:12px;}\n        .dtc-promo-code{font-family:'Montserrat',sans-serif;font-size:24px;font-weight:900;color:#5e5ed7;letter-spacing:4px;}\n        .dtc-empty{text-align:center;padding:70px 20px;}\n        .dtc-empty-icon{font-size:56px;margin-bottom:16px;display:block;}\n        .dtc-empty-title{font-family:'Montserrat',sans-serif;font-size:18px;font-weight:900;color:#1a1a2e;margin-bottom:8px;}\n        .dtc-empty-sub{font-size:14px;color:#94a3b8;margin-bottom:24px;}\n        .dtc-empty-btn{background:#5e5ed7;color:#fff;border:none;padding:12px 28px;border-radius:30px;font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;cursor:pointer;}\n        .dtc-form-wrap{max-width:660px;margin:0 auto;}\n        .dtc-form-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:28px 32px;}\n        .dtc-form-header h2{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0 0 4px;}\n        .dtc-form-header p{font-size:13px;color:rgba(255,255,255,.8);margin:0;}\n        .dtc-form{background:#fff;border-radius:0 0 20px 20px;padding:32px;box-shadow:0 8px 32px rgba(94,94,215,.12);}\n        .dtc-field{margin-bottom:18px;}\n        .dtc-field label{display:block;font-size:12px;font-weight:700;color:#64748b;margin-bottom:6px;text-transform:uppercase;letter-spacing:.6px;}\n        .dtc-field input,.dtc-field select,.dtc-field textarea{width:100%;padding:11px 15px;border:1.5px solid #e2e8f0;border-radius:10px;font-size:14px;font-family:'Poppins',sans-serif;outline:none;transition:border .2s,box-shadow .2s;background:#fff;}\n        .dtc-field input:focus,.dtc-field select:focus,.dtc-field textarea:focus{border-color:#5e5ed7;box-shadow:0 0 0 3px rgba(94,94,215,.1);}\n        .dtc-field textarea{min-height:90px;resize:vertical;}\n        .dtc-photo-zone{border:2px dashed #c5c5f0;border-radius:12px;padding:28px;text-align:center;cursor:pointer;transition:all .2s;background:#fafaff;}\n        .dtc-photo-zone:hover{border-color:#5e5ed7;background:#f0f0ff;}\n        .dtc-photo-zone-icon{font-size:36px;margin-bottom:8px;}\n        .dtc-photo-zone-txt{font-size:13px;color:#94a3b8;}\n        .dtc-photo-preview{width:100%;height:200px;object-fit:cover;border-radius:10px;margin-top:12px;display:none;}\n        .dtc-btn-translate{background:#f0f0ff;color:#5e5ed7;border:1.5px solid #c5c5f0;width:100%;margin-bottom:4px;padding:11px;border-radius:10px;font-size:13px;font-family:'Montserrat',sans-serif;font-weight:800;}\n        .dtc-btn-translate:hover{background:#5e5ed7;color:#fff;border-color:#5e5ed7;}\n        .dtc-btn-submit{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);color:#fff;width:100%;padding:15px;font-size:15px;border-radius:30px;margin-top:12px;letter-spacing:.3px;}\n        .dtc-btn-submit:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 6px 20px rgba(94,94,215,.35);}\n        .dtc-btn-submit:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}\n        .dtc-alert{padding:14px 18px;border-radius:12px;margin-bottom:18px;font-size:14px;}\n        .dtc-alert-success{background:#e8fff3;color:#0a6e36;border-left:4px solid #28a745;}\n        .dtc-alert-error{background:#fff0f0;color:#a00;border-left:4px solid #dc3545;}\n\n        \/* sharing *\/\n        .dtc-share-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-share-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;         \n        }\n        .dtc-share-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-share-row{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap;}\n        .dtc-share-label{font-size:12px;color:#94a3b8;font-weight:700;}\n        .dtc-share-btn{width:34px;height:34px;border:none;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s,opacity .15s;padding:0;}\n        .dtc-share-btn:hover{transform:translateY(-2px);opacity:.9;}\n        .dtc-share-btn svg{width:16px;height:16px;fill:#fff;}\n        .dtc-sh-fb{background:#1877f2;}\n        .dtc-sh-ig{background:linear-gradient(45deg,#f09433,#dc2743,#bc1888);}\n        .dtc-sh-tw{background:#000;}\n        .dtc-sh-li{background:#0a66c2;}\n        .dtc-sh-link{background:#5e5ed7;}\n\n        \/* comments *\/\n        .dtc-comment-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-comment-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;     \n        }\n        .dtc-comment-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-comments-toggle{margin-top:12px;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:800;color:#5e5ed7;cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:6px;}\n        .dtc-comments-toggle:hover{text-decoration:underline;}\n        .dtc-comments{margin-top:10px;background:#fff;border:1px solid #ececfa;border-radius:12px;padding:12px;}\n        .dtc-comments-list{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow-y:auto;margin-bottom:10px;}\n        .dtc-comment-item{background:#f8f8ff;border-radius:10px;padding:8px 12px;}\n        .dtc-comment-author{font-family:'Montserrat',sans-serif;font-size:12px;font-weight:800;color:#1a1a2e;}\n        .dtc-comment-body{font-size:13px;color:#555;line-height:1.5;margin-top:2px;word-break:break-word;}\n        .dtc-comment-empty{font-size:13px;color:#aaa;text-align:center;padding:10px;}\n        .dtc-comment-form{display:flex;flex-direction:column;gap:8px;}\n        .dtc-comment-name,.dtc-comment-text{width:100%;padding:8px 12px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:'Poppins',sans-serif;outline:none;}\n        .dtc-comment-name:focus,.dtc-comment-text:focus{border-color:#5e5ed7;}\n        .dtc-comment-text{min-height:60px;resize:vertical;}\n        .dtc-comment-send{align-self:flex-end;background:#5e5ed7;color:#fff;border:none;border-radius:8px;padding:8px 18px;font-family:'Montserrat',sans-serif;font-weight:800;font-size:12px;cursor:pointer;}\n        .dtc-comment-send:hover{opacity:.9;}\n\n        @media(max-width:640px){\n            .dtc-gallery{grid-template-columns:1fr;}\n            .dtc-tabs{width:100%;}\n            .dtc-tab{flex:1;text-align:center;padding:10px 8px;font-size:11px;}\n            .dtc-form-header,.dtc-form{padding:20px;}\n            .dtc-wrap{padding:20px 14px 36px;}\n        }\n        <\/style>`; }\n\n        function render(){\n            let html = css();\n            html += `<div class=\"dtc-wrap\">`;\n            if (!OPEN){ html += `<div class=\"dtc-alert dtc-alert-error\">${T.closed}<\/div><\/div>`; APP.innerHTML=html; return; }\n            if(VIEW==='all'){\n                html += `<div class=\"dtc-tabs\">`;\n                html += `<div class=\"dtc-tab${tab==='vote'?' active':''}\" onclick=\"dtcSetTab('vote')\">${T.tab_vote}<\/div>`;\n                html += `<div class=\"dtc-tab${tab==='submit'?' active':''}\" onclick=\"dtcSetTab('submit')\">${T.tab_submit}<\/div>`;\n                html += `<\/div>`;\n            }\n            if(tab==='vote' && VIEW!=='submit') html += renderGallery();\n            if(tab==='submit' && VIEW!=='vote') html += renderForm();\n            html += `<\/div>`;\n            APP.innerHTML = html;\n            if(tab==='submit') bindFormEvents();\n        }\n\n        function renderGallery(){\n            const allCountriesUsed = [...new Set(gallery.map(p=>p.country))];\n            const countryPills = allCountriesUsed.map(cv=>{\n                const co = COUNTRIES.find(c=>c.v===cv);\n                return `<button class=\"dtc-pill-btn${filterCountry===cv?' active':''}\" onclick=\"dtcFilter('${cv}')\">${co?co.f:''} ${co?cName(co):cv}<\/button>`;\n            }).join('');\n            let html = `<div class=\"dtc-filter\">\n                <label>${T.filter_label}<\/label>\n                <div class=\"dtc-filter-pills\">\n                    <button class=\"dtc-pill-btn${!filterCountry?' active':''}\" onclick=\"dtcFilter('')\">${T.all_countries}<\/button>\n                    ${countryPills}\n                <\/div>\n            <\/div>`;\n            const filtered = filterCountry ? gallery.filter(p=>p.country===filterCountry) : gallery;\n            if(!filtered.length){\n                return html+`<div class=\"dtc-empty\">\n                    <span class=\"dtc-empty-icon\">\ud83d\udcf8<\/span>\n                    <div class=\"dtc-empty-title\">${T.no_photos}<\/div>\n                    <div class=\"dtc-empty-sub\">${LANG==='fr'?'Les photos appara\u00eetront ici apr\u00e8s validation.':LANG==='it'?'Le foto appariranno qui dopo la convalida.':'Photos will appear here after validation.'}<\/div>\n                    <button class=\"dtc-empty-btn\" onclick=\"dtcSetTab('submit')\">\ud83d\udce4 ${T.tab_submit}<\/button>\n                <\/div>`; }\n            html += `<div class=\"dtc-gallery\">`;\n            filtered.forEach((p,idx)=>{\n                const comment = LANG==='en'?(p.comment_en||p.comment_fr): LANG==='it'?(p.comment_it||p.comment_fr):p.comment_fr;\n                const flag = COUNTRIES.find(c=>c.v===p.country);\n                const rank = idx+1;\n                const medal = rank===1?'\ud83e\udd47':rank===2?'\ud83e\udd48':rank===3?'\ud83e\udd49':'#'+rank;\n                html += `<div class=\"dtc-card\">\n                    <div class=\"dtc-card-img-wrap\">\n                        <img decoding=\"async\" src=\"${p.photo_url}\" alt=\"${escapeHtml(p.residence)}\" loading=\"lazy\">\n                        <div class=\"dtc-card-rank\">${medal}<\/div>\n                        <div class=\"dtc-card-flag\">${flag?flag.f:'\ud83c\udf0d'}<\/div>\n                    <\/div>\n                    <div class=\"dtc-card-body\">\n                        <h3>${escapeHtml(p.residence)}<\/h3>\n                        <p>${escapeHtml(comment)}<\/p>\n                        \n                        <div class=\"dtc-vote-zone\">\n                            <div class=\"dtc-vote-top\">\n                                <div class=\"dtc-vote-bubble\">\n                                    <span class=\"dtc-vote-bubble-num\">${p.vote_count}<\/span>\n                                    <span class=\"dtc-vote-bubble-lbl\">${T.votes_label}<\/span>\n                                <\/div>\n                                <div class=\"dtc-share-bubble\">\n                                    <span class=\"dtc-share-bubble-num\" id=\"share-num-${p.id}\">${p.share_count||0}<\/span>\n                                    <span class=\"dtc-share-bubble-lbl\">${T.shares_label}<\/span>\n                                <\/div>\n                                <div class=\"dtc-comment-bubble\">\n                                    <span class=\"dtc-comment-bubble-num\" id=\"cbub-${p.id}\">${p.comment_count||0}<\/span>\n                                    <span class=\"dtc-comment-bubble-lbl\">${T.comments_label}<\/span>\n                                <\/div>\n                            <\/div>\n                            <div class=\"dtc-vote-row\">\n                                <input class=\"dtc-vote-input\" type=\"email\" id=\"ve-${p.id}\" placeholder=\"${T.email_vote_ph}\">\n                                <button class=\"dtc-btn dtc-btn-vote\" onclick=\"dtcVote(${p.id},'${escapeHtml(p.residence)}')\">${T.vote_btn}<\/button>\n                            <\/div>\n                            <div id=\"vote-msg-${p.id}\"><\/div>\n                            <div class=\"dtc-share-row\">\n                                <span class=\"dtc-share-label\">${T.share_label}<\/span>\n                                <button class=\"dtc-share-btn dtc-sh-fb\" onclick=\"dtcShare('facebook',${p.id})\" aria-label=\"Facebook\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.2c-1.2 0-1.6.8-1.6 1.6V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-tw\" onclick=\"dtcShare('twitter',${p.id})\" aria-label=\"X\"><svg viewBox=\"0 0 24 24\"><path d=\"M18.9 2H22l-7.6 8.7L23 22h-6.8l-5.3-7-6.1 7H1.7l8.1-9.3L1 2h7l4.8 6.4L18.9 2zm-2.4 18h1.9L7.6 4H5.6l10.9 16z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-li\" onclick=\"dtcShare('linkedin',${p.id})\" aria-label=\"LinkedIn\"><svg viewBox=\"0 0 24 24\"><path d=\"M19 3a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h14zM8.3 18.3V10H5.7v8.3h2.6zM7 8.8a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm11.3 9.5v-4.6c0-2.4-1.3-3.5-3-3.5a2.6 2.6 0 00-2.4 1.3V10H10.3c0 .7 0 8.3 0 8.3h2.6v-4.6c0-.3 0-.5.1-.7.2-.5.6-1 1.4-1 1 0 1.4.7 1.4 1.8v4.5h2.5z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-link\" onclick=\"dtcShare('copy',${p.id})\" aria-label=\"Copy Link\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z\"\/><\/svg><\/button>\n                            <\/div>\n                            <div class=\"dtc-comments-toggle\" id=\"ctoggle-${p.id}\" onclick=\"dtcToggleComments(${p.id})\">\ud83d\udcac <span class=\"ctoggle-label\">${T.comment_show}<\/span> (<span id=\"cnum-${p.id}\">${p.comment_count||0}<\/span>)<\/div>\n                            <div class=\"dtc-comments\" id=\"comments-${p.id}\" style=\"display:none;\">\n                                <div class=\"dtc-comments-list\" id=\"clist-${p.id}\"><\/div>\n                                <div class=\"dtc-comment-form\">\n                                    <input class=\"dtc-comment-name\" id=\"cname-${p.id}\" type=\"text\" maxlength=\"120\" placeholder=\"${T.comment_name_ph}\">\n                                    <textarea class=\"dtc-comment-text\" id=\"ctext-${p.id}\" maxlength=\"1000\" placeholder=\"${T.comment_text_ph}\"><\/textarea>\n                                    <button class=\"dtc-comment-send\" onclick=\"dtcPostComment(${p.id})\">${T.comment_send}<\/button>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>`;\n            });\n            html += `<\/div>`;\n            return html;\n        }\n\n        function renderForm(){\n            const copts = COUNTRIES.map(c=>`<option value=\"${c.v}\"${form.country===c.v?' selected':''}>${c.f} ${cName(c)}<\/option>`).join('');\n            return `<div class=\"dtc-form-wrap\">\n                <div class=\"dtc-form-header\">\n                    <h2>\ud83d\udcf8 ${T.tab_submit}<\/h2>\n                    <p>${LANG==='fr'?'Partagez vos photos et faites voter la communaut\u00e9 !':LANG==='it'?'Condividi le tue foto e fai votare la community!':'Share your photos and let the community vote!'}<\/p>\n                <\/div>\n                <div class=\"dtc-form\">\n                    <div id=\"submit-alert\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.name_ph}<\/label>\n                        <input type=\"text\" id=\"f-residence\" value=\"${escapeHtml(form.residence)}\" placeholder=\"${LANG==='fr'?'Ex : R\u00e9sidence Les Lilas, Paris':LANG==='it'?'Es: Residenza Le Rose, Milano':'E.g. Sunrise Care Home, London'}\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.country_ph}<\/label>\n                        <select id=\"f-country\"><option value=\"\">${T.country_ph}<\/option>${copts}<\/select><\/div>\n                    <div class=\"dtc-field\"><label>${T.email_ph}<\/label>\n                        <input type=\"email\" id=\"f-email\" value=\"${escapeHtml(form.email)}\" placeholder=\"contact@maresidence.fr\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.photo_label}<\/label>\n                        <div class=\"dtc-photo-zone\" onclick=\"document.getElementById('f-photo').click()\">\n                            <div class=\"dtc-photo-zone-icon\">\ud83d\uddbc\ufe0f<\/div>\n                            <div class=\"dtc-photo-zone-txt\">${LANG==='fr'?'Cliquer pour choisir une photo (JPG\/PNG, max 8 Mo)':LANG==='it'?'Clicca per scegliere una foto (JPG\/PNG, max 8 MB)':'Click to choose a photo (JPG\/PNG, max 8 MB)'}<\/div>\n                        <\/div>\n                        <input type=\"file\" id=\"f-photo\" accept=\"image\/*\" style=\"display:none;\">\n                        <img id=\"f-preview\" class=\"dtc-photo-preview\">\n                    <\/div>\n                    <p style=\"font-size:13px;color:#5e5ed7;background:#f0f0ff;border-radius:10px;padding:10px 14px;margin:0 0 14px;line-height:1.5;\">${T.caption_hint}<\/p>\n                    <div class=\"dtc-field\"><label>${T.comment_fr_label}<\/label>\n                        <textarea id=\"f-comment-fr\" placeholder=\"D\u00e9crivez votre photo en quelques mots...\">${escapeHtml(form.comment_fr)}<\/textarea><\/div>\n                    <div class=\"dtc-field\"><label>${T.comment_en_label}<\/label>\n                        <textarea id=\"f-comment-en\" placeholder=\"Describe your photo in a few words...\">${escapeHtml(form.comment_en)}<\/textarea><\/div>\n                    <div class=\"dtc-field\"><label>${T.comment_it_label}<\/label>\n                        <textarea id=\"f-comment-it\" placeholder=\"Descrivi la tua foto in poche parole...\">${escapeHtml(form.comment_it)}<\/textarea><\/div>\n                    <button class=\"dtc-btn dtc-btn-translate\" id=\"btn-translate\" onclick=\"dtcTranslate()\">${translating?T.translating:T.translate_btn}<\/button>\n                    <button class=\"dtc-btn dtc-btn-submit\" id=\"btn-submit\" onclick=\"dtcSubmit()\">${submitting?T.submitting:T.submit_btn}<\/button>\n                <\/div>\n            <\/div>`;\n        }\n\n        function bindFormEvents(){\n            const photo = document.getElementById('f-photo');\n            if(photo) photo.onchange = function(){\n                const file = this.files[0]; if(!file) return;\n                photoFile = file; photoMime = file.type;\n                const reader = new FileReader();\n                reader.onload = e => {\n                    photoData = e.target.result;\n                    const prev = document.getElementById('f-preview');\n                    if(prev){ prev.src=photoData; prev.style.display='block'; }\n                };\n                reader.readAsDataURL(file);\n            };\n            if(photoData){\n                const prev = document.getElementById('f-preview');\n                if(prev){ prev.src = photoData; prev.style.display = 'block'; }\n            }\n        }\n\n        window.dtcSetTab = t => { tab=t; render(); };\n        window.dtcFilter = v => { filterCountry=v; render(); };\n\n        window.dtcTranslate = async function(){\n            form.residence = document.getElementById('f-residence')?.value?.trim()||'';\n            form.country = document.getElementById('f-country')?.value||'';\n            form.email = document.getElementById('f-email')?.value?.trim()||'';\n            form.comment_fr = document.getElementById('f-comment-fr')?.value?.trim()||'';\n            form.comment_en = document.getElementById('f-comment-en')?.value?.trim()||'';\n            form.comment_it = document.getElementById('f-comment-it')?.value?.trim()||'';\n            let from='', txt='';\n            if(form.comment_fr){ from='fr'; txt=form.comment_fr; }\n            else if(form.comment_en){ from='en'; txt=form.comment_en; }\n            else if(form.comment_it){ from='it'; txt=form.comment_it; }\n            if(!txt) return;\n            translating=true; render();\n            try {\n                const r = await fetch(REST+'\/translate',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({text:txt,from:from})});\n                const d = await r.json();\n                form.comment_fr = d.fr || form.comment_fr || txt;\n                form.comment_en = d.en || form.comment_en || txt;\n                form.comment_it = d.it || form.comment_it || txt;\n            } catch(e){}\n            translating=false; render();\n        };\n\n        window.dtcSubmit = async function(){\n            form.residence = document.getElementById('f-residence')?.value?.trim()||'';\n            form.country   = document.getElementById('f-country')?.value||'';\n            form.email     = document.getElementById('f-email')?.value?.trim()||'';\n            form.comment_fr= document.getElementById('f-comment-fr')?.value?.trim()||'';\n            form.comment_en= document.getElementById('f-comment-en')?.value?.trim()||'';\n            form.comment_it= document.getElementById('f-comment-it')?.value?.trim()||'';\n            const alert = document.getElementById('submit-alert');\n            const hasCaption = form.comment_fr || form.comment_en || form.comment_it;\n            if(!form.residence||!form.country||!form.email||!hasCaption||!photoData){\n                const errMsg = LANG==='en'?'\u26a0\ufe0f Please fill in all required fields, add a caption in at least one language, and choose a photo.'\n                    : LANG==='it'?'\u26a0\ufe0f Compila tutti i campi obbligatori, aggiungi una didascalia in almeno una lingua e scegli una foto.'\n                    : '\u26a0\ufe0f Veuillez remplir tous les champs obligatoires, ajouter un commentaire dans au moins une langue et choisir une photo.';\n                alert.innerHTML=`<div class=\"dtc-alert dtc-alert-error\">${errMsg}<\/div>`; return;\n            }\n            submitting=true; render();\n            try {\n                const r = await fetch(REST+'\/submit',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n                    body:JSON.stringify({...form,lang:LANG,photo_data:photoData,photo_mime:photoMime})});\n                const d = await r.json();\n                if(d.success){\n                    form={residence:'',country:'',email:'',comment_fr:'',comment_en:'',comment_it:''}; photoData=null;\n                    submitting=false;\n                    APP.innerHTML=css()+`<div class=\"dtc-wrap\"><div class=\"dtc-alert dtc-alert-success\" style=\"font-size:16px;\">\u2705 ${d.message}<\/div><\/div>`;\n                    return;\n                } else {\n                    submitting=false; render();\n                    document.getElementById('submit-alert').innerHTML=`<div class=\"dtc-alert dtc-alert-error\">\u26a0\ufe0f ${d.message||'Erreur'}<\/div>`;\n                }\n            } catch(e){ submitting=false; render(); }\n        };\n\n        window.dtcVote = async function(id, residence){\n            const emailEl = document.getElementById('ve-'+id);\n            const msgEl   = document.getElementById('vote-msg-'+id);\n            const email   = emailEl?.value?.trim();\n            if(!email||!email.includes('@')){ if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">\u26a0\ufe0f Email requis<\/div>`; return; }\n            if(msgEl) msgEl.innerHTML=`<div style=\"color:#aaa;font-size:13px;margin-top:6px;\">\u23f3 ${T.voting}<\/div>`;\n            try {\n                const r = await fetch(REST+'\/vote',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n                    body:JSON.stringify({submission_id:id,voter_email:email,voter_country:'',voter_lang:LANG})});\n                const d = await r.json();\n                if(d.success){\n                    const p = gallery.find(x=>x.id==id); if(p) p.vote_count++;\n                    if(msgEl) msgEl.innerHTML=`<div class=\"dtc-promo-box\"><p style=\"margin:0 0 4px;font-size:13px;color:#555;\">\ud83c\udf89 ${d.message}<\/p><\/div>`;\n                    if(emailEl) emailEl.disabled=true;\n                    document.querySelectorAll('.dtc-btn-vote').forEach(b=>b.disabled=true);\n                } else {\n                    if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">${d.message||T.already_voted}<\/div>`;\n                }\n            } catch(e){ if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">Erreur r\u00e9seau.<\/div>`; }\n        };\n\n        window.dtcShare = async function(platform, id){\n            const shareUrl = location.origin + location.pathname + '?tcphoto=' + id;\n            const text = T.share_text || '';\n            let win = '';\n            if(platform==='facebook')      win = 'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+encodeURIComponent(shareUrl);\n            else if(platform==='twitter')  win = 'https:\/\/twitter.com\/intent\/tweet?url='+encodeURIComponent(shareUrl)+'&text='+encodeURIComponent(text);\n            else if(platform==='linkedin') win = 'https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url='+encodeURIComponent(shareUrl);\n\n            if(platform==='copy'){\n                try { await navigator.clipboard.writeText(shareUrl); alert(T.share_copied||''); } catch(e){}\n            } else if(win){\n                window.open(win,'_blank','width=600,height=520,noopener');\n            }\n\n            try {\n                const r = await fetch(REST+'\/share',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({submission_id:id})});\n                const d = await r.json();\n                if(d.success){\n                    const p = gallery.find(x=>x.id==id); if(p) p.share_count = d.share_count;\n                    const el = document.getElementById('share-num-'+id); if(el) el.textContent = d.share_count;\n                }\n            } catch(e){}\n        };\n\n        function renderComments(id, arr){\n            const list = document.getElementById('clist-'+id);\n            if(!list) return;\n            if(!arr || !arr.length){ list.innerHTML = `<div class=\"dtc-comment-empty\">${T.comment_empty}<\/div>`; return; }\n            list.innerHTML = arr.map(c=>`<div class=\"dtc-comment-item\">\n                <div class=\"dtc-comment-author\">${escapeHtml(c.author_name)}<\/div>\n                <div class=\"dtc-comment-body\">${escapeHtml(c.comment_text)}<\/div>\n            <\/div>`).join('');\n        }\n\n        window.dtcToggleComments = async function(id){\n            const box = document.getElementById('comments-'+id);\n            const tg  = document.getElementById('ctoggle-'+id);\n            if(!box) return;\n            const open = box.style.display !== 'none';\n            if(open){\n                box.style.display='none';\n                if(tg){ const lbl=tg.querySelector('.ctoggle-label'); if(lbl) lbl.textContent=T.comment_show; }\n                return;\n            }\n            box.style.display='block';\n            if(tg){ const lbl=tg.querySelector('.ctoggle-label'); if(lbl) lbl.textContent=T.comment_hide; }\n            if(box.dataset.loaded) return;\n            box.dataset.loaded='1';\n            const list = document.getElementById('clist-'+id);\n            if(list) list.innerHTML = `<div class=\"dtc-comment-empty\">\u2026<\/div>`;\n            try {\n                const r = await fetch(REST+'\/comments?submission_id='+id);\n                const d = await r.json();\n                renderComments(id, d);\n            } catch(e){ if(list) list.innerHTML=''; }\n        };\n\n        window.dtcPostComment = async function(id){\n            const nameEl = document.getElementById('cname-'+id);\n            const textEl = document.getElementById('ctext-'+id);\n            const name = nameEl?.value?.trim();\n            const text = textEl?.value?.trim();\n            if(!name || !text) return;\n            try {\n                const r = await fetch(REST+'\/comment',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({submission_id:id,author_name:name,comment_text:text})});\n                const d = await r.json();\n                if(d.success){\n                    if(textEl) textEl.value='';\n                    const cb=document.getElementById('cbub-'+id); if(cb) cb.textContent=d.comment_count;\n                    const cn=document.getElementById('cnum-'+id); if(cn) cn.textContent=d.comment_count;\n                    const p = gallery.find(x=>x.id==id); if(p) p.comment_count = d.comment_count;\n                    const list = document.getElementById('clist-'+id);\n                    if(list){\n                        const empty = list.querySelector('.dtc-comment-empty'); if(empty) list.innerHTML='';\n                        const item = document.createElement('div');\n                        item.className='dtc-comment-item';\n                        item.innerHTML = `<div class=\"dtc-comment-author\">${escapeHtml(d.comment.author_name)}<\/div><div class=\"dtc-comment-body\">${escapeHtml(d.comment.comment_text)}<\/div>`;\n                        list.insertBefore(item, list.firstChild);\n                    }\n                }\n            } catch(e){}\n        };\n\n        async function loadGallery(){\n            try {\n                const url = filterCountry ? REST+'\/gallery?country='+filterCountry : REST+'\/gallery';\n                const r = await fetch(url);\n                gallery = await r.json();\n            } catch(e){ gallery=[]; }\n            render();\n        }\n        loadGallery();\n    })();\n    <\/script>\n    [\/et_pb_code][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800;900&family=Poppins:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n    <div id=\"dtc-ranking-widget\" data-rest=\"https:\/\/www.dynseo.com\/hi\/wp-json\/dynseo\/v1\/tc-photo\"><\/div>\n    <script>\n    (function(){\n        const W    = document.getElementById('dtc-ranking-widget');\n        const REST = W.dataset.rest;\n        const FORCED = \"fr\";\n        const LANG   = FORCED || (['fr','en','it'].includes((navigator.language||'').substring(0,2)) ? (navigator.language||'').substring(0,2) : 'fr');\n\n        const T = {\n            fr: { title:'\ud83c\udfc6 Classement des photos', participant:'Participant', country:'Pays', votes:'Votes', empty_title:'Le classement arrive bient\u00f4t !', empty_sub:'Les votes s\\'ouvrent d\u00e8s que les premi\u00e8res photos sont soumises et valid\u00e9es. Soyez le premier \u00e0 participer !', loading:'Chargement\u2026', error:'Erreur de chargement.' },\n            en: { title:'\ud83c\udfc6 Photo rankings', participant:'Participant', country:'Country', votes:'Votes', empty_title:'Rankings coming soon!', empty_sub:'Votes open as soon as the first photos are submitted and validated. Be the first to take part!', loading:'Loading\u2026', error:'Loading error.' },\n            it: { title:'\ud83c\udfc6 Classifica delle foto', participant:'Partecipante', country:'Paese', votes:'Voti', empty_title:'La classifica arriva presto!', empty_sub:'Le votazioni si aprono non appena le prime foto vengono inviate e validate. Sii il primo a partecipare!', loading:'Caricamento\u2026', error:'Errore di caricamento.' },\n        };\n        const t = T[LANG] || T.fr;\n\n        const FLAGS = {fr:'\ud83c\uddeb\ud83c\uddf7',be:'\ud83c\udde7\ud83c\uddea',ch:'\ud83c\udde8\ud83c\udded',it:'\ud83c\uddee\ud83c\uddf9',es:'\ud83c\uddea\ud83c\uddf8',pt:'\ud83c\uddf5\ud83c\uddf9',de:'\ud83c\udde9\ud83c\uddea',nl:'\ud83c\uddf3\ud83c\uddf1',lu:'\ud83c\uddf1\ud83c\uddfa',ca:'\ud83c\udde8\ud83c\udde6',ma:'\ud83c\uddf2\ud83c\udde6',sn:'\ud83c\uddf8\ud83c\uddf3'};\n\n        function renderEmpty(){\n            return `<style>\n            .dtc-rank-wrap{font-family:'Poppins',sans-serif;max-width:800px;margin:0 auto;padding:20px 0;}\n            .dtc-rank-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:24px 32px;display:flex;align-items:center;gap:14px;}\n            .dtc-rank-header-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0;}\n            .dtc-rank-empty{background:#fff;border-radius:0 0 20px 20px;box-shadow:0 8px 32px rgba(94,94,215,.1);padding:60px 32px;text-align:center;}\n            .dtc-rank-empty-icon{font-size:60px;display:block;margin-bottom:20px;}\n            .dtc-rank-empty-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#1a1a2e;margin-bottom:10px;}\n            .dtc-rank-empty-sub{font-size:14px;color:#94a3b8;max-width:420px;margin:0 auto 32px;line-height:1.7;}\n            .dtc-rank-empty-rows{display:flex;flex-direction:column;gap:10px;max-width:480px;margin:0 auto;}\n            .dtc-rank-empty-row{background:#f8f8ff;border-radius:12px;padding:14px 18px;display:flex;align-items:center;gap:14px;border:1px solid rgba(94,94,215,.07);}\n            .dtc-rank-empty-medal{font-size:24px;width:36px;text-align:center;flex-shrink:0;}\n            .dtc-rank-empty-bar{flex:1;height:12px;background:#e8e8f5;border-radius:6px;overflow:hidden;}\n            .dtc-rank-empty-fill{height:100%;background:linear-gradient(90deg,#d0d0f0,#e8e8fa);border-radius:6px;}\n            .dtc-rank-empty-num{font-family:'Montserrat',sans-serif;font-size:13px;font-weight:900;color:#c5c5e8;min-width:28px;text-align:right;}\n            <\/style>\n            <div class=\"dtc-rank-wrap\">\n                <div class=\"dtc-rank-header\"><h2 class=\"dtc-rank-header-title\">${t.title}<\/h2><\/div>\n                <div class=\"dtc-rank-empty\">\n                    <span class=\"dtc-rank-empty-icon\">\ud83c\udfc6<\/span>\n                    <div class=\"dtc-rank-empty-title\">${t.empty_title}<\/div>\n                    <p class=\"dtc-rank-empty-sub\">${t.empty_sub}<\/p>\n                    <div class=\"dtc-rank-empty-rows\">\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd47<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:90%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd48<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:65%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd49<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:45%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\" style=\"color:#c5c5e8;font-size:16px;font-weight:900;font-family:'Montserrat',sans-serif;\">4<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:28%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\" style=\"color:#c5c5e8;font-size:16px;font-weight:900;font-family:'Montserrat',sans-serif;\">5<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:14%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>`;\n        }\n\n        function renderRanking(sorted){\n            const max = sorted[0].vote_count || 1;\n            return `<style>\n            .dtc-rank-wrap{font-family:'Poppins',sans-serif;max-width:800px;margin:0 auto;padding:20px 0;}\n            .dtc-rank-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:24px 32px;}\n            .dtc-rank-header-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0;}\n            .dtc-rank-table{background:#fff;border-radius:0 0 20px 20px;box-shadow:0 8px 32px rgba(94,94,215,.1);overflow:hidden;}\n            .dtc-rank-row{display:grid;grid-template-columns:56px 1fr 60px 80px 140px;align-items:center;padding:14px 20px;border-bottom:1px solid rgba(94,94,215,.06);transition:background .15s;}\n            .dtc-rank-row:last-child{border-bottom:none;}\n            .dtc-rank-row:hover{background:#fafaff;}\n            .dtc-rank-thead{background:#f4f4fd;font-family:'Montserrat',sans-serif;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#94a3b8;}\n            .dtc-rank-thead .dtc-rank-row{padding:10px 20px;}\n            .dtc-rank-medal{font-size:22px;text-align:center;}\n            .dtc-rank-num{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:900;color:#c5c5e8;text-align:center;}\n            .dtc-rank-name{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;color:#1a1a2e;}\n            .dtc-rank-flag{font-size:22px;text-align:center;}\n            .dtc-rank-count{font-family:'Montserrat',sans-serif;font-size:18px;font-weight:900;color:#5e5ed7;text-align:center;}\n            .dtc-rank-bar-wrap{padding-right:8px;}\n            .dtc-rank-bar{background:#e8e8f5;border-radius:6px;height:10px;overflow:hidden;}\n            .dtc-rank-bar-fill{height:100%;background:linear-gradient(90deg,#5e5ed7,#a9e2e4);border-radius:6px;transition:width .4s ease;}\n            @media(max-width:540px){\n                .dtc-rank-row{grid-template-columns:44px 1fr 44px 60px;}\n                .dtc-rank-bar-wrap{display:none;}\n                .dtc-rank-thead .dtc-rank-bar-wrap{display:none;}\n            }\n            <\/style>\n            <div class=\"dtc-rank-wrap\">\n                <div class=\"dtc-rank-header\"><h2 class=\"dtc-rank-header-title\">${t.title}<\/h2><\/div>\n                <div class=\"dtc-rank-table\">\n                    <div class=\"dtc-rank-thead\">\n                        <div class=\"dtc-rank-row\">\n                            <div>#<\/div>\n                            <div>${t.participant}<\/div>\n                            <div style=\"text-align:center;\">${t.country}<\/div>\n                            <div style=\"text-align:center;\">${t.votes}<\/div>\n                            <div class=\"dtc-rank-bar-wrap\"><\/div>\n                        <\/div>\n                    <\/div>\n                    ${sorted.map((p,i)=>{\n                        const medal = i===0?'\ud83e\udd47':i===1?'\ud83e\udd48':i===2?'\ud83e\udd49':'';\n                        const num   = medal ? `<div class=\"dtc-rank-medal\">${medal}<\/div>` : `<div class=\"dtc-rank-num\">${i+1}<\/div>`;\n                        const flag  = FLAGS[p.country] || '\ud83c\udf0d';\n                        const pct   = Math.round(p.vote_count\/max*100);\n                        return `<div class=\"dtc-rank-row\">\n                            ${num}\n                            <div class=\"dtc-rank-name\">${p.residence}<\/div>\n                            <div class=\"dtc-rank-flag\">${flag}<\/div>\n                            <div class=\"dtc-rank-count\">${p.vote_count}<\/div>\n                            <div class=\"dtc-rank-bar-wrap\"><div class=\"dtc-rank-bar\"><div class=\"dtc-rank-bar-fill\" style=\"width:${pct}%\"><\/div><\/div><\/div>\n                        <\/div>`;\n                    }).join('')}\n                <\/div>\n            <\/div>`;\n        }\n\n        W.innerHTML = renderEmpty();\n\n        fetch(REST+'\/gallery')\n            .then(r=>r.json())\n            .then(data=>{\n                const approved = data.filter(p=>parseInt(p.vote_count)>=0);\n                if(!approved.length){ return; }\n                const sorted = approved.sort((a,b)=>b.vote_count-a.vote_count).slice(0,10);\n                W.innerHTML = renderRanking(sorted);\n            })\n            .catch(()=>{ W.innerHTML = `<p style=\"color:#aaa;text-align:center;padding:40px;\">${t.error}<\/p>`; });\n    })();\n    <\/script>\n    [\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>    <div id=\"dtc-app\" data-rest=\"https:\/\/www.dynseo.com\/hi\/wp-json\/dynseo\/v1\/tc-photo\" data-nonce=\"9906eb1589\" data-view=\"all\"><\/div>\n    <script>\n    (function(){\n        const REST   = \"https:\\\/\\\/www.dynseo.com\\\/hi\\\/wp-json\\\/dynseo\\\/v1\\\/tc-photo\";\n        const NONCE  = \"9906eb1589\";\n        const VIEW   = \"all\";\n        const OPEN   = true;\n        const APP    = document.getElementById('dtc-app');\n\n        const FORCED = \"\";\n        const LANG   = FORCED || (['fr','en','it'].includes((navigator.language||'').substring(0,2)) ? (navigator.language||'').substring(0,2) : 'fr');\n        const I18N = {\n            fr: {\n                tab_vote:'\ud83d\uddf3 Voter pour une photo', tab_submit:'\ud83d\udce4 Soumettre votre photo',\n                name_ph:'Nom de votre r\u00e9sidence *', country_ph:'Pays *', email_ph:'Email *',\n                comment_ph:'D\u00e9crivez votre photo en quelques mots\u2026',\n                translate_btn:'\ud83c\udf10 Traduire automatiquement', translating:'Traduction en cours\u2026',\n                submit_btn:'\ud83d\udce4 Soumettre la photo', submitting:'Envoi\u2026',\n                vote_btn:'\u2764\ufe0f Voter', voting:'Envoi du vote\u2026',\n                email_vote_ph:'Votre email pour recevoir votre bon de r\u00e9duction',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Votre pays',\n                photo_label:'Choisir une photo (max 8 Mo)',\n                comment_fr_label:'Commentaire en fran\u00e7ais',\n                comment_en_label:'Commentaire en anglais',\n                comment_it_label:'Commentario in italiano',\n                caption_hint:'\u270d\ufe0f \u00c9crivez votre commentaire dans une seule langue, puis cliquez sur \u00ab Traduire automatiquement \u00bb en bas pour remplir les autres.',\n                already_voted:\"Vous avez d\u00e9j\u00e0 vot\u00e9 aujourd\\'hui ! Revenez demain \ud83d\ude0a\",\n                closed:'Le concours est actuellement ferm\u00e9.',\n                all_countries:'Tous les pays',\n                no_photos:'Aucune photo pour le moment. Soyez le premier \u00e0 soumettre la v\u00f4tre !',\n                filter_label:'Filtrer par pays :',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Partager :',\n                share_copied:'Lien copi\u00e9 dans le presse-papier !',\n                share_text:\"D\u00e9couvrez cette photo du concours TOP CULTURE de DYNSEO !\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'Voir les commentaires',\n                comment_hide:'Masquer les commentaires',\n                comment_name_ph:'Votre nom',\n                comment_text_ph:'Votre commentaire\u2026',\n                comment_send:'Envoyer',\n                comment_empty:'Soyez le premier \u00e0 commenter !',\n            },\n            en: {\n                tab_vote:'\ud83d\uddf3 Vote for a photo', tab_submit:'\ud83d\udce4 Submit your photo',\n                name_ph:'Your residence name *', country_ph:'Country *', email_ph:'Email *',\n                comment_ph:'Describe your photo in a few words\u2026',\n                translate_btn:'\ud83c\udf10 Auto-translate', translating:'Translating\u2026',\n                submit_btn:'\ud83d\udce4 Submit photo', submitting:'Sending\u2026',\n                vote_btn:'\u2764\ufe0f Vote', \n                voting:'Voting\u2026',\n                email_vote_ph:'Your email to receive your discount code',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Your country',\n                photo_label:'Choose a photo (max 8 MB)',\n                comment_fr_label:'Comment in French',\n                comment_en_label:'Comment in English',\n                comment_it_label:'Comment in Italian',\n                caption_hint:'\u270d\ufe0f Write your caption in just one language, then click \u201cAuto-translate\u201d below to fill in the others.',\n                already_voted:'You already voted today! Come back tomorrow \ud83d\ude0a',\n                closed:'The contest is currently closed.',\n                all_countries:'All countries',\n                no_photos:'No photos yet. Be the first to submit yours!',\n                filter_label:'Filter by country:',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Share:',\n                share_copied:'Link copied to clipboard!',\n                share_text:\"Check out this photo from DYNSEO's TOP CULTURE contest!\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'View comments',\n                comment_hide:'Hide comments',\n                comment_name_ph:'Your name',\n                comment_text_ph:'Your comment\u2026',\n                comment_send:'Send',\n                comment_empty:'Be the first to comment!',\n            },\n            it: {\n                tab_vote:'\ud83d\uddf3 Vota una foto', tab_submit:'\ud83d\udce4 Invia la tua foto',\n                name_ph:'Nome della tua struttura *', country_ph:'Paese *', email_ph:'Email *',\n                comment_ph:'Descrivi la tua foto in poche parole\u2026',\n                translate_btn:'\ud83c\udf10 Traduzione automatica', translating:'Traduzione\u2026',\n                submit_btn:'\ud83d\udce4 Invia la foto', submitting:'Invio\u2026',\n                vote_btn:'\u2764\ufe0f Vota', \n                voting:'Invio voto\u2026',\n                email_vote_ph:'La tua email per ricevere il codice sconto',\n                votes_label:'\u2764\ufe0f', \n                your_country:'Il tuo paese',\n                photo_label:'Scegli una foto (max 8 MB)',\n                comment_fr_label:'Commento in francese',\n                comment_en_label:'Commento in inglese',\n                comment_it_label:'Commento in italiano',\n                caption_hint:'\u270d\ufe0f Scrivi la didascalia in una sola lingua, poi clicca su \u201cTraduzione automatica\u201d in basso per compilare le altre.',\n                already_voted:\"Hai gi\u00e0 votato oggi! Torna domani \ud83d\ude0a\",\n                closed:'Il concorso \u00e8 attualmente chiuso.',\n                all_countries:'Tutti i paesi',\n                no_photos:'Nessuna foto per ora. Sii il primo a inviare la tua!',\n                filter_label:'Filtra per paese:',\n                shares_label:'\u2197\ufe0f',\n                share_label:'Condividi:',\n                share_copied:'Link copiato negli appunti!',\n                share_text:\"Guarda questa foto del concorso TOP CULTURE di DYNSEO!\",\n                comments_label:'\ud83d\udcac',\n                comment_show:'Vedi i commenti',\n                comment_hide:'Nascondi i commenti',\n                comment_name_ph:'Il tuo nome',\n                comment_text_ph:'Il tuo commento\u2026',\n                comment_send:'Invia',\n                comment_empty:'Sii il primo a commentare!',\n            },\n        };\n        const T = I18N[LANG] || I18N.fr;\n\n        const COUNTRIES = [\n            {v:'fr',f:'\ud83c\uddeb\ud83c\uddf7',l:{fr:'France',en:'France',it:'Francia'}},\n            {v:'be',f:'\ud83c\udde7\ud83c\uddea',l:{fr:'Belgique',en:'Belgium',it:'Belgio'}},\n            {v:'ch',f:'\ud83c\udde8\ud83c\udded',l:{fr:'Suisse',en:'Switzerland',it:'Svizzera'}},\n            {v:'it',f:'\ud83c\uddee\ud83c\uddf9',l:{fr:'Italie',en:'Italy',it:'Italia'}},\n            {v:'es',f:'\ud83c\uddea\ud83c\uddf8',l:{fr:'Espagne',en:'Spain',it:'Spagna'}},\n            {v:'pt',f:'\ud83c\uddf5\ud83c\uddf9',l:{fr:'Portugal',en:'Portugal',it:'Portogallo'}},\n            {v:'de',f:'\ud83c\udde9\ud83c\uddea',l:{fr:'Allemagne',en:'Germany',it:'Germania'}},\n            {v:'nl',f:'\ud83c\uddf3\ud83c\uddf1',l:{fr:'Pays-Bas',en:'Netherlands',it:'Paesi Bassi'}},\n            {v:'lu',f:'\ud83c\uddf1\ud83c\uddfa',l:{fr:'Luxembourg',en:'Luxembourg',it:'Lussemburgo'}},\n            {v:'ca',f:'\ud83c\udde8\ud83c\udde6',l:{fr:'Canada',en:'Canada',it:'Canada'}},\n            {v:'ma',f:'\ud83c\uddf2\ud83c\udde6',l:{fr:'Maroc',en:'Morocco',it:'Marocco'}},\n            {v:'sn',f:'\ud83c\uddf8\ud83c\uddf3',l:{fr:'S\u00e9n\u00e9gal',en:'Senegal',it:'Senegal'}},\n            {v:'other',f:'\ud83c\udf0d',l:{fr:'Autre',en:'Other',it:'Altro'}},\n        ];\n        function cName(c){ return (c.l[LANG]||c.l.fr); }\n        function escapeHtml(s){ return (s||'').replace(\/[&<>\"']\/g, m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[m])); }\n\n        let tab = (VIEW==='submit') ? 'submit' : 'vote';\n        let gallery = [], filterCountry='';\n        let photoFile=null, photoData=null, photoMime=null;\n        let translating=false, submitting=false;\n        let form={ residence:'', country:'', email:'', comment_fr:'', comment_en:'', comment_it:'' };\n\n        function css(){ \n            return `<style>\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800;900&family=Poppins:wght@400;500;600&display=swap');\n        #dtc-app *{box-sizing:border-box;}\n        #dtc-app{font-family:'Poppins',sans-serif;}\n        .dtc-wrap{max-width:1100px;margin:0 auto;padding:32px 20px 48px;}\n        .dtc-tabs{display:flex;gap:6px;margin-bottom:32px;background:#f0f0fb;border-radius:50px;padding:5px;width:fit-content;}\n        .dtc-tab{padding:11px 28px;cursor:pointer;font-family:'Montserrat',sans-serif;font-size:13px;font-weight:800;color:#888;border-radius:50px;transition:all .25s;border:none;background:transparent;letter-spacing:.3px;}\n        .dtc-tab.active{background:#5e5ed7;color:#fff;box-shadow:0 4px 14px rgba(94,94,215,.35);}\n        .dtc-tab:hover:not(.active){background:#e2e2f9;color:#5e5ed7;}\n        .dtc-filter{display:flex;align-items:center;gap:12px;margin-bottom:28px;flex-wrap:wrap;}\n        .dtc-filter label{font-family:'Montserrat',sans-serif;font-weight:800;color:#1a1a2e;font-size:13px;text-transform:uppercase;letter-spacing:.8px;}\n        .dtc-filter-pills{display:flex;flex-wrap:wrap;gap:8px;}\n        .dtc-pill-btn{padding:7px 16px;border-radius:50px;border:1.5px solid #e2e2f9;background:#fff;font-size:12px;font-weight:700;color:#888;cursor:pointer;transition:all .2s;font-family:'Poppins',sans-serif;}\n        .dtc-pill-btn.active{background:#5e5ed7;border-color:#5e5ed7;color:#fff;box-shadow:0 3px 10px rgba(94,94,215,.25);}\n        .dtc-pill-btn:hover:not(.active){background:#e2e2f9;border-color:#c5c5f0;color:#5e5ed7;}\n        .dtc-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;}\n        \n        .dtc-card{background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 4px 20px rgba(94,94,215,.09);transition:transform .25s,box-shadow .25s;border:1px solid rgba(94,94,215,.07);}\n        .dtc-card:hover{transform:translateY(-6px);box-shadow:0 14px 40px rgba(94,94,215,.17);}\n        .dtc-card-img-wrap{position:relative;overflow:hidden;}\n        .dtc-card img{width:100%;height:210px;object-fit:cover;display:block;transition:transform .4s ease;}\n        .dtc-card:hover img{transform:scale(1.04);}\n        .dtc-card-rank{position:absolute;top:10px;left:10px;background:rgba(26,26,46,.72);color:#ffeca7;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:900;padding:4px 11px;border-radius:20px;}\n        .dtc-card-flag{position:absolute;top:10px;right:10px;font-size:22px;background:rgba(255,255,255,.92);border-radius:8px;padding:2px 6px;line-height:1.4;}\n        .dtc-card-body{padding:18px;}\n        .dtc-card h3{margin:0 0 6px;font-family:'Montserrat',sans-serif;font-size:15px;font-weight:900;color:#1a1a2e;line-height:1.3;}\n        .dtc-card p{margin:0 0 12px;font-size:13px;color:#64748b;line-height:1.6;}\n        \n        \/*voting*\/\n        .dtc-vote-zone{background:#f8f8ff;border-radius:14px;padding:14px;}\n        .dtc-vote-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap;}\n        .dtc-vote-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            \/*padding:6px 14px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-vote-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;\n            }\n        .dtc-vote-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-vote-row{display:flex;gap:8px;align-items:stretch;}\n        .dtc-vote-input{flex:1;padding:9px 13px;border:1.5px solid #dde;border-radius:10px;font-size:13px;outline:none;font-family:'Poppins',sans-serif;transition:border .2s;min-width:0;}\n        .dtc-vote-input:focus{border-color:#5e5ed7;}\n        .dtc-btn{padding:9px 18px;border:none;border-radius:10px;font-size:13px;font-family:'Montserrat',sans-serif;font-weight:800;cursor:pointer;transition:all .2s;}\n        .dtc-btn-vote{background:linear-gradient(135deg,#e73469,#ff6b95);color:#fff;white-space:nowrap;}\n        .dtc-btn-vote:hover{opacity:.88;transform:translateY(-1px);box-shadow:0 4px 14px rgba(231,52,105,.3);}\n        .dtc-btn-vote:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}\n        .dtc-promo-box{background:linear-gradient(135deg,#fff8d6,#fffbef);border:2px dashed #ffb600;border-radius:14px;padding:18px;text-align:center;margin-top:12px;}\n        .dtc-promo-code{font-family:'Montserrat',sans-serif;font-size:24px;font-weight:900;color:#5e5ed7;letter-spacing:4px;}\n        .dtc-empty{text-align:center;padding:70px 20px;}\n        .dtc-empty-icon{font-size:56px;margin-bottom:16px;display:block;}\n        .dtc-empty-title{font-family:'Montserrat',sans-serif;font-size:18px;font-weight:900;color:#1a1a2e;margin-bottom:8px;}\n        .dtc-empty-sub{font-size:14px;color:#94a3b8;margin-bottom:24px;}\n        .dtc-empty-btn{background:#5e5ed7;color:#fff;border:none;padding:12px 28px;border-radius:30px;font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;cursor:pointer;}\n        .dtc-form-wrap{max-width:660px;margin:0 auto;}\n        .dtc-form-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:28px 32px;}\n        .dtc-form-header h2{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0 0 4px;}\n        .dtc-form-header p{font-size:13px;color:rgba(255,255,255,.8);margin:0;}\n        .dtc-form{background:#fff;border-radius:0 0 20px 20px;padding:32px;box-shadow:0 8px 32px rgba(94,94,215,.12);}\n        .dtc-field{margin-bottom:18px;}\n        .dtc-field label{display:block;font-size:12px;font-weight:700;color:#64748b;margin-bottom:6px;text-transform:uppercase;letter-spacing:.6px;}\n        .dtc-field input,.dtc-field select,.dtc-field textarea{width:100%;padding:11px 15px;border:1.5px solid #e2e8f0;border-radius:10px;font-size:14px;font-family:'Poppins',sans-serif;outline:none;transition:border .2s,box-shadow .2s;background:#fff;}\n        .dtc-field input:focus,.dtc-field select:focus,.dtc-field textarea:focus{border-color:#5e5ed7;box-shadow:0 0 0 3px rgba(94,94,215,.1);}\n        .dtc-field textarea{min-height:90px;resize:vertical;}\n        .dtc-photo-zone{border:2px dashed #c5c5f0;border-radius:12px;padding:28px;text-align:center;cursor:pointer;transition:all .2s;background:#fafaff;}\n        .dtc-photo-zone:hover{border-color:#5e5ed7;background:#f0f0ff;}\n        .dtc-photo-zone-icon{font-size:36px;margin-bottom:8px;}\n        .dtc-photo-zone-txt{font-size:13px;color:#94a3b8;}\n        .dtc-photo-preview{width:100%;height:200px;object-fit:cover;border-radius:10px;margin-top:12px;display:none;}\n        .dtc-btn-translate{background:#f0f0ff;color:#5e5ed7;border:1.5px solid #c5c5f0;width:100%;margin-bottom:4px;padding:11px;border-radius:10px;font-size:13px;font-family:'Montserrat',sans-serif;font-weight:800;}\n        .dtc-btn-translate:hover{background:#5e5ed7;color:#fff;border-color:#5e5ed7;}\n        .dtc-btn-submit{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);color:#fff;width:100%;padding:15px;font-size:15px;border-radius:30px;margin-top:12px;letter-spacing:.3px;}\n        .dtc-btn-submit:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 6px 20px rgba(94,94,215,.35);}\n        .dtc-btn-submit:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}\n        .dtc-alert{padding:14px 18px;border-radius:12px;margin-bottom:18px;font-size:14px;}\n        .dtc-alert-success{background:#e8fff3;color:#0a6e36;border-left:4px solid #28a745;}\n        .dtc-alert-error{background:#fff0f0;color:#a00;border-left:4px solid #dc3545;}\n\n        \/* sharing *\/\n        .dtc-share-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-share-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;         \n        }\n        .dtc-share-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-share-row{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap;}\n        .dtc-share-label{font-size:12px;color:#94a3b8;font-weight:700;}\n        .dtc-share-btn{width:34px;height:34px;border:none;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s,opacity .15s;padding:0;}\n        .dtc-share-btn:hover{transform:translateY(-2px);opacity:.9;}\n        .dtc-share-btn svg{width:16px;height:16px;fill:#fff;}\n        .dtc-sh-fb{background:#1877f2;}\n        .dtc-sh-ig{background:linear-gradient(45deg,#f09433,#dc2743,#bc1888);}\n        .dtc-sh-tw{background:#000;}\n        .dtc-sh-li{background:#0a66c2;}\n        .dtc-sh-link{background:#5e5ed7;}\n\n        \/* comments *\/\n        .dtc-comment-bubble{\n            \/*border:2px solid #c1cbdb;*\/\n            color: black;\n            \/*border-radius:50px;*\/\n            padding:2% 4%;\n            display:inline-flex;\n            align-items:center;\n            gap:6px;\n        }\n        .dtc-comment-bubble-num{\n            font: 900 clamp(16px, 1.4vw, 22px) 'Montserrat', sans-serif;     \n        }\n        .dtc-comment-bubble-lbl{\n            font-size:16px;\n            }\n        .dtc-comments-toggle{margin-top:12px;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:800;color:#5e5ed7;cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:6px;}\n        .dtc-comments-toggle:hover{text-decoration:underline;}\n        .dtc-comments{margin-top:10px;background:#fff;border:1px solid #ececfa;border-radius:12px;padding:12px;}\n        .dtc-comments-list{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow-y:auto;margin-bottom:10px;}\n        .dtc-comment-item{background:#f8f8ff;border-radius:10px;padding:8px 12px;}\n        .dtc-comment-author{font-family:'Montserrat',sans-serif;font-size:12px;font-weight:800;color:#1a1a2e;}\n        .dtc-comment-body{font-size:13px;color:#555;line-height:1.5;margin-top:2px;word-break:break-word;}\n        .dtc-comment-empty{font-size:13px;color:#aaa;text-align:center;padding:10px;}\n        .dtc-comment-form{display:flex;flex-direction:column;gap:8px;}\n        .dtc-comment-name,.dtc-comment-text{width:100%;padding:8px 12px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:'Poppins',sans-serif;outline:none;}\n        .dtc-comment-name:focus,.dtc-comment-text:focus{border-color:#5e5ed7;}\n        .dtc-comment-text{min-height:60px;resize:vertical;}\n        .dtc-comment-send{align-self:flex-end;background:#5e5ed7;color:#fff;border:none;border-radius:8px;padding:8px 18px;font-family:'Montserrat',sans-serif;font-weight:800;font-size:12px;cursor:pointer;}\n        .dtc-comment-send:hover{opacity:.9;}\n\n        @media(max-width:640px){\n            .dtc-gallery{grid-template-columns:1fr;}\n            .dtc-tabs{width:100%;}\n            .dtc-tab{flex:1;text-align:center;padding:10px 8px;font-size:11px;}\n            .dtc-form-header,.dtc-form{padding:20px;}\n            .dtc-wrap{padding:20px 14px 36px;}\n        }\n        <\/style>`; }\n\n        function render(){\n            let html = css();\n            html += `<div class=\"dtc-wrap\">`;\n            if (!OPEN){ html += `<div class=\"dtc-alert dtc-alert-error\">${T.closed}<\/div><\/div>`; APP.innerHTML=html; return; }\n            if(VIEW==='all'){\n                html += `<div class=\"dtc-tabs\">`;\n                html += `<div class=\"dtc-tab${tab==='vote'?' active':''}\" onclick=\"dtcSetTab('vote')\">${T.tab_vote}<\/div>`;\n                html += `<div class=\"dtc-tab${tab==='submit'?' active':''}\" onclick=\"dtcSetTab('submit')\">${T.tab_submit}<\/div>`;\n                html += `<\/div>`;\n            }\n            if(tab==='vote' && VIEW!=='submit') html += renderGallery();\n            if(tab==='submit' && VIEW!=='vote') html += renderForm();\n            html += `<\/div>`;\n            APP.innerHTML = html;\n            if(tab==='submit') bindFormEvents();\n        }\n\n        function renderGallery(){\n            const allCountriesUsed = [...new Set(gallery.map(p=>p.country))];\n            const countryPills = allCountriesUsed.map(cv=>{\n                const co = COUNTRIES.find(c=>c.v===cv);\n                return `<button class=\"dtc-pill-btn${filterCountry===cv?' active':''}\" onclick=\"dtcFilter('${cv}')\">${co?co.f:''} ${co?cName(co):cv}<\/button>`;\n            }).join('');\n            let html = `<div class=\"dtc-filter\">\n                <label>${T.filter_label}<\/label>\n                <div class=\"dtc-filter-pills\">\n                    <button class=\"dtc-pill-btn${!filterCountry?' active':''}\" onclick=\"dtcFilter('')\">${T.all_countries}<\/button>\n                    ${countryPills}\n                <\/div>\n            <\/div>`;\n            const filtered = filterCountry ? gallery.filter(p=>p.country===filterCountry) : gallery;\n            if(!filtered.length){\n                return html+`<div class=\"dtc-empty\">\n                    <span class=\"dtc-empty-icon\">\ud83d\udcf8<\/span>\n                    <div class=\"dtc-empty-title\">${T.no_photos}<\/div>\n                    <div class=\"dtc-empty-sub\">${LANG==='fr'?'Les photos appara\u00eetront ici apr\u00e8s validation.':LANG==='it'?'Le foto appariranno qui dopo la convalida.':'Photos will appear here after validation.'}<\/div>\n                    <button class=\"dtc-empty-btn\" onclick=\"dtcSetTab('submit')\">\ud83d\udce4 ${T.tab_submit}<\/button>\n                <\/div>`; }\n            html += `<div class=\"dtc-gallery\">`;\n            filtered.forEach((p,idx)=>{\n                const comment = LANG==='en'?(p.comment_en||p.comment_fr): LANG==='it'?(p.comment_it||p.comment_fr):p.comment_fr;\n                const flag = COUNTRIES.find(c=>c.v===p.country);\n                const rank = idx+1;\n                const medal = rank===1?'\ud83e\udd47':rank===2?'\ud83e\udd48':rank===3?'\ud83e\udd49':'#'+rank;\n                html += `<div class=\"dtc-card\">\n                    <div class=\"dtc-card-img-wrap\">\n                        <img decoding=\"async\" src=\"${p.photo_url}\" alt=\"${escapeHtml(p.residence)}\" loading=\"lazy\">\n                        <div class=\"dtc-card-rank\">${medal}<\/div>\n                        <div class=\"dtc-card-flag\">${flag?flag.f:'\ud83c\udf0d'}<\/div>\n                    <\/div>\n                    <div class=\"dtc-card-body\">\n                        <h3>${escapeHtml(p.residence)}<\/h3>\n                        <p>${escapeHtml(comment)}<\/p>\n                        \n                        <div class=\"dtc-vote-zone\">\n                            <div class=\"dtc-vote-top\">\n                                <div class=\"dtc-vote-bubble\">\n                                    <span class=\"dtc-vote-bubble-num\">${p.vote_count}<\/span>\n                                    <span class=\"dtc-vote-bubble-lbl\">${T.votes_label}<\/span>\n                                <\/div>\n                                <div class=\"dtc-share-bubble\">\n                                    <span class=\"dtc-share-bubble-num\" id=\"share-num-${p.id}\">${p.share_count||0}<\/span>\n                                    <span class=\"dtc-share-bubble-lbl\">${T.shares_label}<\/span>\n                                <\/div>\n                                <div class=\"dtc-comment-bubble\">\n                                    <span class=\"dtc-comment-bubble-num\" id=\"cbub-${p.id}\">${p.comment_count||0}<\/span>\n                                    <span class=\"dtc-comment-bubble-lbl\">${T.comments_label}<\/span>\n                                <\/div>\n                            <\/div>\n                            <div class=\"dtc-vote-row\">\n                                <input class=\"dtc-vote-input\" type=\"email\" id=\"ve-${p.id}\" placeholder=\"${T.email_vote_ph}\">\n                                <button class=\"dtc-btn dtc-btn-vote\" onclick=\"dtcVote(${p.id},'${escapeHtml(p.residence)}')\">${T.vote_btn}<\/button>\n                            <\/div>\n                            <div id=\"vote-msg-${p.id}\"><\/div>\n                            <div class=\"dtc-share-row\">\n                                <span class=\"dtc-share-label\">${T.share_label}<\/span>\n                                <button class=\"dtc-share-btn dtc-sh-fb\" onclick=\"dtcShare('facebook',${p.id})\" aria-label=\"Facebook\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.2c-1.2 0-1.6.8-1.6 1.6V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-tw\" onclick=\"dtcShare('twitter',${p.id})\" aria-label=\"X\"><svg viewBox=\"0 0 24 24\"><path d=\"M18.9 2H22l-7.6 8.7L23 22h-6.8l-5.3-7-6.1 7H1.7l8.1-9.3L1 2h7l4.8 6.4L18.9 2zm-2.4 18h1.9L7.6 4H5.6l10.9 16z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-li\" onclick=\"dtcShare('linkedin',${p.id})\" aria-label=\"LinkedIn\"><svg viewBox=\"0 0 24 24\"><path d=\"M19 3a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h14zM8.3 18.3V10H5.7v8.3h2.6zM7 8.8a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm11.3 9.5v-4.6c0-2.4-1.3-3.5-3-3.5a2.6 2.6 0 00-2.4 1.3V10H10.3c0 .7 0 8.3 0 8.3h2.6v-4.6c0-.3 0-.5.1-.7.2-.5.6-1 1.4-1 1 0 1.4.7 1.4 1.8v4.5h2.5z\"\/><\/svg><\/button>\n                                <button class=\"dtc-share-btn dtc-sh-link\" onclick=\"dtcShare('copy',${p.id})\" aria-label=\"Copy Link\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z\"\/><\/svg><\/button>\n                            <\/div>\n                            <div class=\"dtc-comments-toggle\" id=\"ctoggle-${p.id}\" onclick=\"dtcToggleComments(${p.id})\">\ud83d\udcac <span class=\"ctoggle-label\">${T.comment_show}<\/span> (<span id=\"cnum-${p.id}\">${p.comment_count||0}<\/span>)<\/div>\n                            <div class=\"dtc-comments\" id=\"comments-${p.id}\" style=\"display:none;\">\n                                <div class=\"dtc-comments-list\" id=\"clist-${p.id}\"><\/div>\n                                <div class=\"dtc-comment-form\">\n                                    <input class=\"dtc-comment-name\" id=\"cname-${p.id}\" type=\"text\" maxlength=\"120\" placeholder=\"${T.comment_name_ph}\">\n                                    <textarea class=\"dtc-comment-text\" id=\"ctext-${p.id}\" maxlength=\"1000\" placeholder=\"${T.comment_text_ph}\"><\/textarea>\n                                    <button class=\"dtc-comment-send\" onclick=\"dtcPostComment(${p.id})\">${T.comment_send}<\/button>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>`;\n            });\n            html += `<\/div>`;\n            return html;\n        }\n\n        function renderForm(){\n            const copts = COUNTRIES.map(c=>`<option value=\"${c.v}\"${form.country===c.v?' selected':''}>${c.f} ${cName(c)}<\/option>`).join('');\n            return `<div class=\"dtc-form-wrap\">\n                <div class=\"dtc-form-header\">\n                    <h2>\ud83d\udcf8 ${T.tab_submit}<\/h2>\n                    <p>${LANG==='fr'?'Partagez vos photos et faites voter la communaut\u00e9 !':LANG==='it'?'Condividi le tue foto e fai votare la community!':'Share your photos and let the community vote!'}<\/p>\n                <\/div>\n                <div class=\"dtc-form\">\n                    <div id=\"submit-alert\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.name_ph}<\/label>\n                        <input type=\"text\" id=\"f-residence\" value=\"${escapeHtml(form.residence)}\" placeholder=\"${LANG==='fr'?'Ex : R\u00e9sidence Les Lilas, Paris':LANG==='it'?'Es: Residenza Le Rose, Milano':'E.g. Sunrise Care Home, London'}\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.country_ph}<\/label>\n                        <select id=\"f-country\"><option value=\"\">${T.country_ph}<\/option>${copts}<\/select><\/div>\n                    <div class=\"dtc-field\"><label>${T.email_ph}<\/label>\n                        <input type=\"email\" id=\"f-email\" value=\"${escapeHtml(form.email)}\" placeholder=\"contact@maresidence.fr\"><\/div>\n                    <div class=\"dtc-field\"><label>${T.photo_label}<\/label>\n                        <div class=\"dtc-photo-zone\" onclick=\"document.getElementById('f-photo').click()\">\n                            <div class=\"dtc-photo-zone-icon\">\ud83d\uddbc\ufe0f<\/div>\n                            <div class=\"dtc-photo-zone-txt\">${LANG==='fr'?'Cliquer pour choisir une photo (JPG\/PNG, max 8 Mo)':LANG==='it'?'Clicca per scegliere una foto (JPG\/PNG, max 8 MB)':'Click to choose a photo (JPG\/PNG, max 8 MB)'}<\/div>\n                        <\/div>\n                        <input type=\"file\" id=\"f-photo\" accept=\"image\/*\" style=\"display:none;\">\n                        <img id=\"f-preview\" class=\"dtc-photo-preview\">\n                    <\/div>\n                    <p style=\"font-size:13px;color:#5e5ed7;background:#f0f0ff;border-radius:10px;padding:10px 14px;margin:0 0 14px;line-height:1.5;\">${T.caption_hint}<\/p>\n                    <div class=\"dtc-field\"><label>${T.comment_fr_label}<\/label>\n                        <textarea id=\"f-comment-fr\" placeholder=\"D\u00e9crivez votre photo en quelques mots...\">${escapeHtml(form.comment_fr)}<\/textarea><\/div>\n                    <div class=\"dtc-field\"><label>${T.comment_en_label}<\/label>\n                        <textarea id=\"f-comment-en\" placeholder=\"Describe your photo in a few words...\">${escapeHtml(form.comment_en)}<\/textarea><\/div>\n                    <div class=\"dtc-field\"><label>${T.comment_it_label}<\/label>\n                        <textarea id=\"f-comment-it\" placeholder=\"Descrivi la tua foto in poche parole...\">${escapeHtml(form.comment_it)}<\/textarea><\/div>\n                    <button class=\"dtc-btn dtc-btn-translate\" id=\"btn-translate\" onclick=\"dtcTranslate()\">${translating?T.translating:T.translate_btn}<\/button>\n                    <button class=\"dtc-btn dtc-btn-submit\" id=\"btn-submit\" onclick=\"dtcSubmit()\">${submitting?T.submitting:T.submit_btn}<\/button>\n                <\/div>\n            <\/div>`;\n        }\n\n        function bindFormEvents(){\n            const photo = document.getElementById('f-photo');\n            if(photo) photo.onchange = function(){\n                const file = this.files[0]; if(!file) return;\n                photoFile = file; photoMime = file.type;\n                const reader = new FileReader();\n                reader.onload = e => {\n                    photoData = e.target.result;\n                    const prev = document.getElementById('f-preview');\n                    if(prev){ prev.src=photoData; prev.style.display='block'; }\n                };\n                reader.readAsDataURL(file);\n            };\n            if(photoData){\n                const prev = document.getElementById('f-preview');\n                if(prev){ prev.src = photoData; prev.style.display = 'block'; }\n            }\n        }\n\n        window.dtcSetTab = t => { tab=t; render(); };\n        window.dtcFilter = v => { filterCountry=v; render(); };\n\n        window.dtcTranslate = async function(){\n            form.residence = document.getElementById('f-residence')?.value?.trim()||'';\n            form.country = document.getElementById('f-country')?.value||'';\n            form.email = document.getElementById('f-email')?.value?.trim()||'';\n            form.comment_fr = document.getElementById('f-comment-fr')?.value?.trim()||'';\n            form.comment_en = document.getElementById('f-comment-en')?.value?.trim()||'';\n            form.comment_it = document.getElementById('f-comment-it')?.value?.trim()||'';\n            let from='', txt='';\n            if(form.comment_fr){ from='fr'; txt=form.comment_fr; }\n            else if(form.comment_en){ from='en'; txt=form.comment_en; }\n            else if(form.comment_it){ from='it'; txt=form.comment_it; }\n            if(!txt) return;\n            translating=true; render();\n            try {\n                const r = await fetch(REST+'\/translate',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({text:txt,from:from})});\n                const d = await r.json();\n                form.comment_fr = d.fr || form.comment_fr || txt;\n                form.comment_en = d.en || form.comment_en || txt;\n                form.comment_it = d.it || form.comment_it || txt;\n            } catch(e){}\n            translating=false; render();\n        };\n\n        window.dtcSubmit = async function(){\n            form.residence = document.getElementById('f-residence')?.value?.trim()||'';\n            form.country   = document.getElementById('f-country')?.value||'';\n            form.email     = document.getElementById('f-email')?.value?.trim()||'';\n            form.comment_fr= document.getElementById('f-comment-fr')?.value?.trim()||'';\n            form.comment_en= document.getElementById('f-comment-en')?.value?.trim()||'';\n            form.comment_it= document.getElementById('f-comment-it')?.value?.trim()||'';\n            const alert = document.getElementById('submit-alert');\n            const hasCaption = form.comment_fr || form.comment_en || form.comment_it;\n            if(!form.residence||!form.country||!form.email||!hasCaption||!photoData){\n                const errMsg = LANG==='en'?'\u26a0\ufe0f Please fill in all required fields, add a caption in at least one language, and choose a photo.'\n                    : LANG==='it'?'\u26a0\ufe0f Compila tutti i campi obbligatori, aggiungi una didascalia in almeno una lingua e scegli una foto.'\n                    : '\u26a0\ufe0f Veuillez remplir tous les champs obligatoires, ajouter un commentaire dans au moins une langue et choisir une photo.';\n                alert.innerHTML=`<div class=\"dtc-alert dtc-alert-error\">${errMsg}<\/div>`; return;\n            }\n            submitting=true; render();\n            try {\n                const r = await fetch(REST+'\/submit',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n                    body:JSON.stringify({...form,lang:LANG,photo_data:photoData,photo_mime:photoMime})});\n                const d = await r.json();\n                if(d.success){\n                    form={residence:'',country:'',email:'',comment_fr:'',comment_en:'',comment_it:''}; photoData=null;\n                    submitting=false;\n                    APP.innerHTML=css()+`<div class=\"dtc-wrap\"><div class=\"dtc-alert dtc-alert-success\" style=\"font-size:16px;\">\u2705 ${d.message}<\/div><\/div>`;\n                    return;\n                } else {\n                    submitting=false; render();\n                    document.getElementById('submit-alert').innerHTML=`<div class=\"dtc-alert dtc-alert-error\">\u26a0\ufe0f ${d.message||'Erreur'}<\/div>`;\n                }\n            } catch(e){ submitting=false; render(); }\n        };\n\n        window.dtcVote = async function(id, residence){\n            const emailEl = document.getElementById('ve-'+id);\n            const msgEl   = document.getElementById('vote-msg-'+id);\n            const email   = emailEl?.value?.trim();\n            if(!email||!email.includes('@')){ if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">\u26a0\ufe0f Email requis<\/div>`; return; }\n            if(msgEl) msgEl.innerHTML=`<div style=\"color:#aaa;font-size:13px;margin-top:6px;\">\u23f3 ${T.voting}<\/div>`;\n            try {\n                const r = await fetch(REST+'\/vote',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n                    body:JSON.stringify({submission_id:id,voter_email:email,voter_country:'',voter_lang:LANG})});\n                const d = await r.json();\n                if(d.success){\n                    const p = gallery.find(x=>x.id==id); if(p) p.vote_count++;\n                    if(msgEl) msgEl.innerHTML=`<div class=\"dtc-promo-box\"><p style=\"margin:0 0 4px;font-size:13px;color:#555;\">\ud83c\udf89 ${d.message}<\/p><\/div>`;\n                    if(emailEl) emailEl.disabled=true;\n                    document.querySelectorAll('.dtc-btn-vote').forEach(b=>b.disabled=true);\n                } else {\n                    if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">${d.message||T.already_voted}<\/div>`;\n                }\n            } catch(e){ if(msgEl) msgEl.innerHTML=`<div class=\"dtc-alert dtc-alert-error\" style=\"margin-top:8px;\">Erreur r\u00e9seau.<\/div>`; }\n        };\n\n        window.dtcShare = async function(platform, id){\n            const shareUrl = location.origin + location.pathname + '?tcphoto=' + id;\n            const text = T.share_text || '';\n            let win = '';\n            if(platform==='facebook')      win = 'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+encodeURIComponent(shareUrl);\n            else if(platform==='twitter')  win = 'https:\/\/twitter.com\/intent\/tweet?url='+encodeURIComponent(shareUrl)+'&text='+encodeURIComponent(text);\n            else if(platform==='linkedin') win = 'https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url='+encodeURIComponent(shareUrl);\n\n            if(platform==='copy'){\n                try { await navigator.clipboard.writeText(shareUrl); alert(T.share_copied||''); } catch(e){}\n            } else if(win){\n                window.open(win,'_blank','width=600,height=520,noopener');\n            }\n\n            try {\n                const r = await fetch(REST+'\/share',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({submission_id:id})});\n                const d = await r.json();\n                if(d.success){\n                    const p = gallery.find(x=>x.id==id); if(p) p.share_count = d.share_count;\n                    const el = document.getElementById('share-num-'+id); if(el) el.textContent = d.share_count;\n                }\n            } catch(e){}\n        };\n\n        function renderComments(id, arr){\n            const list = document.getElementById('clist-'+id);\n            if(!list) return;\n            if(!arr || !arr.length){ list.innerHTML = `<div class=\"dtc-comment-empty\">${T.comment_empty}<\/div>`; return; }\n            list.innerHTML = arr.map(c=>`<div class=\"dtc-comment-item\">\n                <div class=\"dtc-comment-author\">${escapeHtml(c.author_name)}<\/div>\n                <div class=\"dtc-comment-body\">${escapeHtml(c.comment_text)}<\/div>\n            <\/div>`).join('');\n        }\n\n        window.dtcToggleComments = async function(id){\n            const box = document.getElementById('comments-'+id);\n            const tg  = document.getElementById('ctoggle-'+id);\n            if(!box) return;\n            const open = box.style.display !== 'none';\n            if(open){\n                box.style.display='none';\n                if(tg){ const lbl=tg.querySelector('.ctoggle-label'); if(lbl) lbl.textContent=T.comment_show; }\n                return;\n            }\n            box.style.display='block';\n            if(tg){ const lbl=tg.querySelector('.ctoggle-label'); if(lbl) lbl.textContent=T.comment_hide; }\n            if(box.dataset.loaded) return;\n            box.dataset.loaded='1';\n            const list = document.getElementById('clist-'+id);\n            if(list) list.innerHTML = `<div class=\"dtc-comment-empty\">\u2026<\/div>`;\n            try {\n                const r = await fetch(REST+'\/comments?submission_id='+id);\n                const d = await r.json();\n                renderComments(id, d);\n            } catch(e){ if(list) list.innerHTML=''; }\n        };\n\n        window.dtcPostComment = async function(id){\n            const nameEl = document.getElementById('cname-'+id);\n            const textEl = document.getElementById('ctext-'+id);\n            const name = nameEl?.value?.trim();\n            const text = textEl?.value?.trim();\n            if(!name || !text) return;\n            try {\n                const r = await fetch(REST+'\/comment',{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},body:JSON.stringify({submission_id:id,author_name:name,comment_text:text})});\n                const d = await r.json();\n                if(d.success){\n                    if(textEl) textEl.value='';\n                    const cb=document.getElementById('cbub-'+id); if(cb) cb.textContent=d.comment_count;\n                    const cn=document.getElementById('cnum-'+id); if(cn) cn.textContent=d.comment_count;\n                    const p = gallery.find(x=>x.id==id); if(p) p.comment_count = d.comment_count;\n                    const list = document.getElementById('clist-'+id);\n                    if(list){\n                        const empty = list.querySelector('.dtc-comment-empty'); if(empty) list.innerHTML='';\n                        const item = document.createElement('div');\n                        item.className='dtc-comment-item';\n                        item.innerHTML = `<div class=\"dtc-comment-author\">${escapeHtml(d.comment.author_name)}<\/div><div class=\"dtc-comment-body\">${escapeHtml(d.comment.comment_text)}<\/div>`;\n                        list.insertBefore(item, list.firstChild);\n                    }\n                }\n            } catch(e){}\n        };\n\n        async function loadGallery(){\n            try {\n                const url = filterCountry ? REST+'\/gallery?country='+filterCountry : REST+'\/gallery';\n                const r = await fetch(url);\n                gallery = await r.json();\n            } catch(e){ gallery=[]; }\n            render();\n        }\n        loadGallery();\n    })();\n    <\/script>\n        <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800;900&family=Poppins:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n    <div id=\"dtc-ranking-widget\" data-rest=\"https:\/\/www.dynseo.com\/hi\/wp-json\/dynseo\/v1\/tc-photo\"><\/div>\n    <script>\n    (function(){\n        const W    = document.getElementById('dtc-ranking-widget');\n        const REST = W.dataset.rest;\n        const FORCED = \"fr\";\n        const LANG   = FORCED || (['fr','en','it'].includes((navigator.language||'').substring(0,2)) ? (navigator.language||'').substring(0,2) : 'fr');\n\n        const T = {\n            fr: { title:'\ud83c\udfc6 Classement des photos', participant:'Participant', country:'Pays', votes:'Votes', empty_title:'Le classement arrive bient\u00f4t !', empty_sub:'Les votes s\\'ouvrent d\u00e8s que les premi\u00e8res photos sont soumises et valid\u00e9es. Soyez le premier \u00e0 participer !', loading:'Chargement\u2026', error:'Erreur de chargement.' },\n            en: { title:'\ud83c\udfc6 Photo rankings', participant:'Participant', country:'Country', votes:'Votes', empty_title:'Rankings coming soon!', empty_sub:'Votes open as soon as the first photos are submitted and validated. Be the first to take part!', loading:'Loading\u2026', error:'Loading error.' },\n            it: { title:'\ud83c\udfc6 Classifica delle foto', participant:'Partecipante', country:'Paese', votes:'Voti', empty_title:'La classifica arriva presto!', empty_sub:'Le votazioni si aprono non appena le prime foto vengono inviate e validate. Sii il primo a partecipare!', loading:'Caricamento\u2026', error:'Errore di caricamento.' },\n        };\n        const t = T[LANG] || T.fr;\n\n        const FLAGS = {fr:'\ud83c\uddeb\ud83c\uddf7',be:'\ud83c\udde7\ud83c\uddea',ch:'\ud83c\udde8\ud83c\udded',it:'\ud83c\uddee\ud83c\uddf9',es:'\ud83c\uddea\ud83c\uddf8',pt:'\ud83c\uddf5\ud83c\uddf9',de:'\ud83c\udde9\ud83c\uddea',nl:'\ud83c\uddf3\ud83c\uddf1',lu:'\ud83c\uddf1\ud83c\uddfa',ca:'\ud83c\udde8\ud83c\udde6',ma:'\ud83c\uddf2\ud83c\udde6',sn:'\ud83c\uddf8\ud83c\uddf3'};\n\n        function renderEmpty(){\n            return `<style>\n            .dtc-rank-wrap{font-family:'Poppins',sans-serif;max-width:800px;margin:0 auto;padding:20px 0;}\n            .dtc-rank-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:24px 32px;display:flex;align-items:center;gap:14px;}\n            .dtc-rank-header-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0;}\n            .dtc-rank-empty{background:#fff;border-radius:0 0 20px 20px;box-shadow:0 8px 32px rgba(94,94,215,.1);padding:60px 32px;text-align:center;}\n            .dtc-rank-empty-icon{font-size:60px;display:block;margin-bottom:20px;}\n            .dtc-rank-empty-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#1a1a2e;margin-bottom:10px;}\n            .dtc-rank-empty-sub{font-size:14px;color:#94a3b8;max-width:420px;margin:0 auto 32px;line-height:1.7;}\n            .dtc-rank-empty-rows{display:flex;flex-direction:column;gap:10px;max-width:480px;margin:0 auto;}\n            .dtc-rank-empty-row{background:#f8f8ff;border-radius:12px;padding:14px 18px;display:flex;align-items:center;gap:14px;border:1px solid rgba(94,94,215,.07);}\n            .dtc-rank-empty-medal{font-size:24px;width:36px;text-align:center;flex-shrink:0;}\n            .dtc-rank-empty-bar{flex:1;height:12px;background:#e8e8f5;border-radius:6px;overflow:hidden;}\n            .dtc-rank-empty-fill{height:100%;background:linear-gradient(90deg,#d0d0f0,#e8e8fa);border-radius:6px;}\n            .dtc-rank-empty-num{font-family:'Montserrat',sans-serif;font-size:13px;font-weight:900;color:#c5c5e8;min-width:28px;text-align:right;}\n            <\/style>\n            <div class=\"dtc-rank-wrap\">\n                <div class=\"dtc-rank-header\"><h2 class=\"dtc-rank-header-title\">${t.title}<\/h2><\/div>\n                <div class=\"dtc-rank-empty\">\n                    <span class=\"dtc-rank-empty-icon\">\ud83c\udfc6<\/span>\n                    <div class=\"dtc-rank-empty-title\">${t.empty_title}<\/div>\n                    <p class=\"dtc-rank-empty-sub\">${t.empty_sub}<\/p>\n                    <div class=\"dtc-rank-empty-rows\">\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd47<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:90%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd48<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:65%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\">\ud83e\udd49<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:45%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\" style=\"color:#c5c5e8;font-size:16px;font-weight:900;font-family:'Montserrat',sans-serif;\">4<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:28%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                        <div class=\"dtc-rank-empty-row\"><div class=\"dtc-rank-empty-medal\" style=\"color:#c5c5e8;font-size:16px;font-weight:900;font-family:'Montserrat',sans-serif;\">5<\/div><div class=\"dtc-rank-empty-bar\"><div class=\"dtc-rank-empty-fill\" style=\"width:14%\"><\/div><\/div><div class=\"dtc-rank-empty-num\">\u2014<\/div><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>`;\n        }\n\n        function renderRanking(sorted){\n            const max = sorted[0].vote_count || 1;\n            return `<style>\n            .dtc-rank-wrap{font-family:'Poppins',sans-serif;max-width:800px;margin:0 auto;padding:20px 0;}\n            .dtc-rank-header{background:linear-gradient(135deg,#5e5ed7,#a9e2e4);border-radius:20px 20px 0 0;padding:24px 32px;}\n            .dtc-rank-header-title{font-family:'Montserrat',sans-serif;font-size:20px;font-weight:900;color:#fff;margin:0;}\n            .dtc-rank-table{background:#fff;border-radius:0 0 20px 20px;box-shadow:0 8px 32px rgba(94,94,215,.1);overflow:hidden;}\n            .dtc-rank-row{display:grid;grid-template-columns:56px 1fr 60px 80px 140px;align-items:center;padding:14px 20px;border-bottom:1px solid rgba(94,94,215,.06);transition:background .15s;}\n            .dtc-rank-row:last-child{border-bottom:none;}\n            .dtc-rank-row:hover{background:#fafaff;}\n            .dtc-rank-thead{background:#f4f4fd;font-family:'Montserrat',sans-serif;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#94a3b8;}\n            .dtc-rank-thead .dtc-rank-row{padding:10px 20px;}\n            .dtc-rank-medal{font-size:22px;text-align:center;}\n            .dtc-rank-num{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:900;color:#c5c5e8;text-align:center;}\n            .dtc-rank-name{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;color:#1a1a2e;}\n            .dtc-rank-flag{font-size:22px;text-align:center;}\n            .dtc-rank-count{font-family:'Montserrat',sans-serif;font-size:18px;font-weight:900;color:#5e5ed7;text-align:center;}\n            .dtc-rank-bar-wrap{padding-right:8px;}\n            .dtc-rank-bar{background:#e8e8f5;border-radius:6px;height:10px;overflow:hidden;}\n            .dtc-rank-bar-fill{height:100%;background:linear-gradient(90deg,#5e5ed7,#a9e2e4);border-radius:6px;transition:width .4s ease;}\n            @media(max-width:540px){\n                .dtc-rank-row{grid-template-columns:44px 1fr 44px 60px;}\n                .dtc-rank-bar-wrap{display:none;}\n                .dtc-rank-thead .dtc-rank-bar-wrap{display:none;}\n            }\n            <\/style>\n            <div class=\"dtc-rank-wrap\">\n                <div class=\"dtc-rank-header\"><h2 class=\"dtc-rank-header-title\">${t.title}<\/h2><\/div>\n                <div class=\"dtc-rank-table\">\n                    <div class=\"dtc-rank-thead\">\n                        <div class=\"dtc-rank-row\">\n                            <div>#<\/div>\n                            <div>${t.participant}<\/div>\n                            <div style=\"text-align:center;\">${t.country}<\/div>\n                            <div style=\"text-align:center;\">${t.votes}<\/div>\n                            <div class=\"dtc-rank-bar-wrap\"><\/div>\n                        <\/div>\n                    <\/div>\n                    ${sorted.map((p,i)=>{\n                        const medal = i===0?'\ud83e\udd47':i===1?'\ud83e\udd48':i===2?'\ud83e\udd49':'';\n                        const num   = medal ? `<div class=\"dtc-rank-medal\">${medal}<\/div>` : `<div class=\"dtc-rank-num\">${i+1}<\/div>`;\n                        const flag  = FLAGS[p.country] || '\ud83c\udf0d';\n                        const pct   = Math.round(p.vote_count\/max*100);\n                        return `<div class=\"dtc-rank-row\">\n                            ${num}\n                            <div class=\"dtc-rank-name\">${p.residence}<\/div>\n                            <div class=\"dtc-rank-flag\">${flag}<\/div>\n                            <div class=\"dtc-rank-count\">${p.vote_count}<\/div>\n                            <div class=\"dtc-rank-bar-wrap\"><div class=\"dtc-rank-bar\"><div class=\"dtc-rank-bar-fill\" style=\"width:${pct}%\"><\/div><\/div><\/div>\n                        <\/div>`;\n                    }).join('')}\n                <\/div>\n            <\/div>`;\n        }\n\n        W.innerHTML = renderEmpty();\n\n        fetch(REST+'\/gallery')\n            .then(r=>r.json())\n            .then(data=>{\n                const approved = data.filter(p=>parseInt(p.vote_count)>=0);\n                if(!approved.length){ return; }\n                const sorted = approved.sort((a,b)=>b.vote_count-a.vote_count).slice(0,10);\n                W.innerHTML = renderRanking(sorted);\n            })\n            .catch(()=>{ W.innerHTML = `<p style=\"color:#aaa;text-align:center;padding:40px;\">${t.error}<\/p>`; });\n    })();\n    <\/script>\n    <\/p>\n","protected":false},"author":4,"featured_media":530039,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-698420","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire<\/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:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/\" \/>\n<meta property=\"og:locale\" content=\"hi_IN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/\" \/>\n<meta property=\"og:site_name\" content=\"DYNSEO - App educative et jeux de m\u00e9moire\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dynseo.com\/wp-content\/uploads\/2024\/07\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:label1\" content=\"\u0905\u0928\u0941\u092e\u093e\u0928\u093f\u0924 \u092a\u0922\u093c\u0928\u0947 \u0915\u093e \u0938\u092e\u092f\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 \u092e\u093f\u0928\u091f\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/\",\"url\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/\",\"name\":\"Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dynseo.com\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png\",\"datePublished\":\"2026-06-01T11:57:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/#breadcrumb\"},\"inLanguage\":\"hi-IN\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"hi-IN\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dynseo.com\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png\",\"contentUrl\":\"https:\\\/\\\/www.dynseo.com\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png\",\"width\":2000,\"height\":1500,\"caption\":\"\u0939\u092e\u093e\u0930\u0940 \u092e\u0928\u094b\u0930\u0902\u091c\u0915 \u0914\u0930 \u091c\u094d\u091e\u093e\u0928\u0935\u0930\u094d\u0927\u0915 \u0917\u0924\u093f\u0935\u093f\u0927\u093f\u092f\u094b\u0902 \u0915\u0947 \u0938\u093e\u0925 \u0905\u092a\u0928\u0940 \u092e\u093e\u0928\u0938\u093f\u0915 \u091a\u0941\u0938\u094d\u0924\u0940 \u092c\u0928\u093e\u090f \u0930\u0916\u0947\u0902\u0964\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/prixcoupdecoeur\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prix coup de coeur &#8211; TOPCULTURE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#website\",\"url\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/\",\"name\":\"Jeux de m\u00e9moire et stimulation cognitive\",\"description\":\"Entra\u00eenez votre m\u00e9moire et votre cerveau avec DYNSEO\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"hi-IN\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#organization\",\"name\":\"DYNSEO\",\"url\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"hi-IN\",\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dynseo.com\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/logo-dynseo-new.png\",\"contentUrl\":\"https:\\\/\\\/www.dynseo.com\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/logo-dynseo-new.png\",\"width\":5073,\"height\":1397,\"caption\":\"DYNSEO\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dynseo.com\\\/hi\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire","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:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/","og_locale":"hi_IN","og_type":"article","og_title":"Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire","og_url":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/","og_site_name":"DYNSEO - App educative et jeux de m\u00e9moire","og_image":[{"width":2000,"height":1500,"url":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2024\/07\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png","type":"image\/png"}],"twitter_misc":{"\u0905\u0928\u0941\u092e\u093e\u0928\u093f\u0924 \u092a\u0922\u093c\u0928\u0947 \u0915\u093e \u0938\u092e\u092f":"2 \u092e\u093f\u0928\u091f"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/","url":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/","name":"Prix coup de coeur - TOPCULTURE - DYNSEO - App educative et jeux de m\u00e9moire","isPartOf":{"@id":"https:\/\/www.dynseo.com\/hi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/#primaryimage"},"image":{"@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2024\/07\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png","datePublished":"2026-06-01T11:57:12+00:00","breadcrumb":{"@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/#breadcrumb"},"inLanguage":"hi-IN","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/"]}]},{"@type":"ImageObject","inLanguage":"hi-IN","@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/#primaryimage","url":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2024\/07\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png","contentUrl":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2024\/07\/Article-pour-jeux-de-memoire-et-services-educatifs-sur-tablette-1.png","width":2000,"height":1500,"caption":"\u0939\u092e\u093e\u0930\u0940 \u092e\u0928\u094b\u0930\u0902\u091c\u0915 \u0914\u0930 \u091c\u094d\u091e\u093e\u0928\u0935\u0930\u094d\u0927\u0915 \u0917\u0924\u093f\u0935\u093f\u0927\u093f\u092f\u094b\u0902 \u0915\u0947 \u0938\u093e\u0925 \u0905\u092a\u0928\u0940 \u092e\u093e\u0928\u0938\u093f\u0915 \u091a\u0941\u0938\u094d\u0924\u0940 \u092c\u0928\u093e\u090f \u0930\u0916\u0947\u0902\u0964"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dynseo.com\/hi\/prixcoupdecoeur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dynseo.com\/hi\/"},{"@type":"ListItem","position":2,"name":"Prix coup de coeur &#8211; TOPCULTURE"}]},{"@type":"WebSite","@id":"https:\/\/www.dynseo.com\/hi\/#website","url":"https:\/\/www.dynseo.com\/hi\/","name":"Jeux de m\u00e9moire et stimulation cognitive","description":"Entra\u00eenez votre m\u00e9moire et votre cerveau avec DYNSEO","publisher":{"@id":"https:\/\/www.dynseo.com\/hi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dynseo.com\/hi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"hi-IN"},{"@type":"Organization","@id":"https:\/\/www.dynseo.com\/hi\/#organization","name":"DYNSEO","url":"https:\/\/www.dynseo.com\/hi\/","logo":{"@type":"ImageObject","inLanguage":"hi-IN","@id":"https:\/\/www.dynseo.com\/hi\/#\/schema\/logo\/image\/","url":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2022\/05\/logo-dynseo-new.png","contentUrl":"https:\/\/www.dynseo.com\/wp-content\/uploads\/2022\/05\/logo-dynseo-new.png","width":5073,"height":1397,"caption":"DYNSEO"},"image":{"@id":"https:\/\/www.dynseo.com\/hi\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/pages\/698420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/comments?post=698420"}],"version-history":[{"count":0,"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/pages\/698420\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/media\/530039"}],"wp:attachment":[{"href":"https:\/\/www.dynseo.com\/hi\/wp-json\/wp\/v2\/media?parent=698420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}