// Registrar types & setup basico
add_action('after_setup_theme', function() {
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
    update_option('users_can_register', 1);
    update_option('default_role', 'subscriber');
});

// Custom Post Type: dx_anuncio
add_action('init', function() {
    register_post_type('dx_anuncio', [
        'labels' => ['name'=>'Anuncios','singular_name'=>'Anuncio','add_new_item'=>'Nuevo Anuncio'],
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'supports' => ['title','editor','thumbnail','author'],
        'rewrite' => ['slug'=>'anuncio'],
        'has_archive' => false,
    ]);
    register_post_type('dx_fetiche', [
        'labels' => ['name'=>'Fetiches','singular_name'=>'Fetiche','add_new_item'=>'Nuevo Fetiche'],
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'supports' => ['title','editor','thumbnail','author'],
        'rewrite' => ['slug'=>'fetiche'],
        'has_archive' => false,
    ]);
    register_post_type('dx_mensaje', [
        'labels' => ['name'=>'Mensajes','singular_name'=>'Mensaje'],
        'public' => false,
        'show_ui' => false,
        'supports' => ['title','editor','author'],
    ]);
    flush_rewrite_rules();
});

// Helpers
function dx_is_gold($uid = 0) {
    if (!$uid) $uid = get_current_user_id();
    if (!$uid) return false;
    if (get_user_meta($uid, 'dx_gold_member', true) == '1') return true;
    $trial_end = (int) get_user_meta($uid, 'dx_trial_end', true);
    if ($trial_end > time()) return true;
    return false;
}
function dx_is_silver($uid = 0) {
    if (!$uid) $uid = get_current_user_id();
    if (!$uid) return false;
    $silver_end = (int) get_user_meta($uid, 'dx_silver_end', true);
    return ($silver_end > time());
}
function dx_can_contact($uid = 0) {
    return dx_is_gold($uid) || dx_is_silver($uid);
}


// ============================================================
// DARK THEME CSS - Global
// ============================================================
add_action('wp_head', function() {
    $uid = get_current_user_id();
    $is_gold = dx_is_gold($uid);
    $gold_class = $is_gold ? 'dx-gold-user' : 'dx-free-user';
    echo '<meta name="viewport" content="width=device-width, initial-scale=1">';
    echo '<style>
:root{--bg:#080610;--surface:#110f1e;--surface2:#1a1730;--accent:#e0196b;--accent2:#7c3aed;--gold:#f0b429;--text:#ede9fe;--muted:rgba(237,233,254,.45);}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{background:var(--bg)!important;color:var(--text)!important;font-family:Inter,sans-serif!important;}
a{color:var(--accent);text-decoration:none;}
a:hover{color:var(--accent2);}
.site-header,.wp-block-template-part[data-slug="header"]{display:none!important;}
.wp-site-blocks,.site,.entry-content,.wp-block-group,.is-layout-flow{max-width:100%!important;padding:0!important;margin:0!important;}
.entry-content>*,.wp-block-post-content>*{margin:0!important;}
input,textarea,select{background:var(--surface2)!important;color:var(--text)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;padding:10px 14px!important;}
input:focus,textarea:focus,select:focus{outline:none!important;border-color:var(--accent)!important;}
button,.button,input[type=submit]{background:var(--accent)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:10px 22px!important;cursor:pointer!important;font-weight:600!important;}
button:hover,.button:hover,input[type=submit]:hover{background:var(--accent2)!important;}
.site-footer,.wp-block-template-part[data-slug="footer"]{display:none!important;}
</style>';
}, 1);

// Auth pages dark theme
add_action('wp_head', function() {
    $page_id = get_queried_object_id();
    $auth_pages = [33, 34, 60];
    if (!in_array($page_id, $auth_pages)) return;
    echo '<style>
.wp-block-wpmem-form-login,.wp-block-wpmem-form-register,.wpmem-form,.entry-content form{background:var(--surface)!important;border:1px solid rgba(124,58,237,.25)!important;border-radius:16px!important;padding:32px!important;max-width:480px!important;margin:40px auto!important;}
.wpmem-field label{color:var(--text)!important;font-weight:500!important;display:block!important;margin-bottom:6px!important;}
.wpmem-field input{width:100%!important;margin-bottom:16px!important;}
h2.entry-title{display:none!important;}
</style>';
});


// ============================================================
// NAVIGATION BAR
// ============================================================
add_action('wp_body_open', function() {
    $uid = get_current_user_id();
    $is_logged = is_user_logged_in();
    $logo_url = 'https://deseosx.com/wp-content/uploads/2026/06/deseosx-logo.jpg';
    echo '<style>
.dx-nav{position:fixed;top:0;left:0;right:0;z-index:9999;background:rgba(8,6,16,.95);backdrop-filter:blur(12px);border-bottom:1px solid rgba(224,25,107,.2);height:60px;display:flex;align-items:center;padding:0 20px;gap:16px;}
.dx-nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto;}
.dx-nav-logo img{height:36px;width:auto;border-radius:4px;}
.dx-nav-logo span{font-size:1.3rem;font-weight:700;background:linear-gradient(135deg,#f0b429,#e0196b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;}
.dx-nav a{color:var(--text);font-size:.85rem;font-weight:500;text-decoration:none;padding:6px 12px;border-radius:6px;white-space:nowrap;}
.dx-nav a:hover{background:rgba(224,25,107,.15);color:var(--accent);}
.dx-nav .dx-btn-reg{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border-radius:20px!important;padding:7px 18px!important;font-weight:600!important;}
.dx-nav .dx-btn-login{border:1px solid var(--accent)!important;color:var(--accent)!important;border-radius:20px!important;padding:6px 16px!important;}
body{padding-top:60px!important;}
@media(max-width:600px){.dx-nav a.dx-hide-mobile{display:none!important;}}
</style>';
    echo '<nav class="dx-nav">';
    echo '<a class="dx-nav-logo" href="/"><img src="' . esc_url($logo_url) . '" alt="DeseosX"><span>DeseosX</span></a>';
    echo '<a href="/anuncios/" class="dx-hide-mobile">Anuncios</a>';
    echo '<a href="/fetiches/" class="dx-hide-mobile">Fetiches</a>';
    echo '<a href="/buscar-contactos/" class="dx-hide-mobile">Buscar</a>';
    if ($is_logged) {
        echo '<a href="/mi-panel/">Mi Panel</a>';
        echo '<a href="' . wp_logout_url('/') . '">Salir</a>';
    } else {
        echo '<a href="/login/" class="dx-btn-login">Iniciar Sesion</a>';
        echo '<a href="/register/" class="dx-btn-reg">Registrarse</a>';
    }
    echo '</nav>';
});


// ============================================================
// HOMEPAGE HERO
// ============================================================
add_action('wp_head', function() {
    if (!is_front_page()) return;
    echo '<style>
.dx-hero{min-height:85vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;background:radial-gradient(ellipse at 50% 60%,rgba(224,25,107,.15) 0%,rgba(124,58,237,.1) 40%,transparent 70%);}
.dx-hero-logo{width:260px;max-width:80vw;height:auto;margin-bottom:24px;filter:drop-shadow(0 8px 32px rgba(240,180,41,.4));}
.dx-hero h1{font-size:clamp(1.4rem,4vw,2.2rem);font-weight:700;background:linear-gradient(135deg,#f0b429,#e0196b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:10px;}
.dx-hero p{color:var(--muted);font-size:1rem;margin-bottom:32px;max-width:520px;}
.dx-hero-btns{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;}
.dx-btn-gold{background:linear-gradient(135deg,#f0b429,#e0196b)!important;color:#fff!important;border:none!important;border-radius:30px!important;padding:14px 32px!important;font-size:1rem!important;font-weight:700!important;cursor:pointer!important;text-decoration:none!important;display:inline-block!important;}
.dx-btn-outline{background:transparent!important;color:var(--text)!important;border:2px solid var(--accent)!important;border-radius:30px!important;padding:12px 28px!important;font-size:.95rem!important;font-weight:600!important;cursor:pointer!important;text-decoration:none!important;display:inline-block!important;}
.dx-btn-outline:hover{background:var(--accent)!important;color:#fff!important;}
.dx-hero-stats{display:flex;gap:40px;margin-top:40px;flex-wrap:wrap;justify-content:center;}
.dx-stat{text-align:center;}
.dx-stat-num{font-size:1.8rem;font-weight:800;color:var(--gold);}
.dx-stat-lbl{font-size:.8rem;color:var(--muted);margin-top:2px;}
</style>';
});

add_filter('the_content', function($content) {
    if (!is_front_page()) return $content;
    $logo_url = 'https://deseosx.com/wp-content/uploads/2026/06/deseosx-logo.jpg';
    $uid = get_current_user_id();
    $is_logged = is_user_logged_in();
    $hero = '<div class="dx-hero">';
    $hero .= '<img class="dx-hero-logo" src="' . esc_url($logo_url) . '" alt="DeseosX">';
    $hero .= '<h1>La Red Social Erotica de Espana</h1>';
    $hero .= '<p>Conecta con personas afines. Anuncios, contactos y mucho mas. Totalmente privado.</p>';
    $hero .= '<div class="dx-hero-btns">';
    if ($is_logged) {
        $hero .= '<a href="/buscar-contactos/" class="dx-btn-gold">Buscar Amigos</a>';
        $hero .= '<a href="/anuncios/" class="dx-btn-outline">Ver Anuncios</a>';
        $hero .= '<a href="/fetiches/" class="dx-btn-outline">Fetiches</a>';
    } else {
        $hero .= '<a href="/register/" class="dx-btn-gold">Entrar Gratis</a>';
        $hero .= '<a href="/buscar-contactos/" class="dx-btn-outline">Buscar Amigos</a>';
        $hero .= '<a href="/anuncios/" class="dx-btn-outline">Ver Anuncios</a>';
    }
    $hero .= '</div>';
    $hero .= '<div class="dx-hero-stats">';
    $hero .= '<div class="dx-stat"><div class="dx-stat-num">12.400+</div><div class="dx-stat-lbl">Miembros</div></div>';
    $hero .= '<div class="dx-stat"><div class="dx-stat-num">850+</div><div class="dx-stat-lbl">Anuncios</div></div>';
    $hero .= '<div class="dx-stat"><div class="dx-stat-num">47</div><div class="dx-stat-lbl">Provincias</div></div>';
    $hero .= '</div>';
    $hero .= '</div>';
    return $hero;
}, 999);


// ============================================================
// AGE GATE + COOKIE BANNER
// ============================================================
add_action('wp_head', function() {
    if (isset($_COOKIE['dx_agegate']) && $_COOKIE['dx_agegate'] === 'yes') return;
    echo '<style>
#dx-agegate{position:fixed;inset:0;z-index:99999;background:rgba(8,6,16,.97);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);}
.dx-ag-box{background:var(--surface);border:1px solid rgba(224,25,107,.3);border-radius:20px;padding:48px 40px;max-width:460px;text-align:center;}
.dx-ag-logo{width:180px;margin-bottom:20px;}
.dx-ag-box h2{font-size:1.6rem;font-weight:700;margin-bottom:8px;color:var(--gold);}
.dx-ag-box p{color:var(--muted);margin-bottom:28px;line-height:1.6;}
.dx-ag-btns{display:flex;flex-direction:column;gap:12px;}
.dx-ag-yes{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:12px!important;padding:14px!important;font-size:1rem!important;font-weight:700!important;cursor:pointer!important;width:100%!important;}
.dx-ag-look{background:var(--surface2)!important;color:var(--text)!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:12px!important;padding:12px!important;font-size:.9rem!important;cursor:pointer!important;width:100%!important;}
.dx-ag-no{background:transparent!important;color:var(--muted)!important;border:none!important;padding:8px!important;font-size:.85rem!important;cursor:pointer!important;text-decoration:underline!important;}
</style>';
    $logo = 'https://deseosx.com/wp-content/uploads/2026/06/deseosx-logo.jpg';
    echo '<div id="dx-agegate">';
    echo '<div class="dx-ag-box">';
    echo '<img class="dx-ag-logo" src="' . esc_url($logo) . '" alt="DeseosX">';
    echo '<h2>Acceso Restringido</h2>';
    echo '<p>Este sitio contiene contenido para adultos (+18). Confirma que eres mayor de edad para continuar.</p>';
    echo '<div class="dx-ag-btns">';
    echo '<button class="dx-ag-yes" data-action="enter" onclick="dxAgeOk(this.dataset.action)">Soy mayor de 18 anos - Entrar</button>';
    echo '<button class="dx-ag-look" data-action="look" onclick="dxAgeOk(this.dataset.action)">Solo quiero mirar</button>';
    echo '<button class="dx-ag-no" data-url="https://google.es" onclick="window.location=this.dataset.url">Soy menor de edad - Salir</button>';
    echo '</div>';
    echo '</div></div>';
    echo '<script>
function dxAgeOk(t){
  var d=new Date();d.setFullYear(d.getFullYear()+1);
  document.cookie="dx_agegate=yes;expires="+d.toUTCString()+";path=/;SameSite=Lax";
  document.getElementById("dx-agegate").style.display="none";
}
</script>';
});

// Cookie banner
add_action('wp_footer', function() {
    if (isset($_COOKIE['dx_cookies_ok'])) return;
    echo '<style>
#dx-cookiebar{position:fixed;bottom:0;left:0;right:0;z-index:9998;background:rgba(17,15,30,.97);border-top:1px solid rgba(124,58,237,.3);padding:14px 20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
#dx-cookiebar p{color:var(--muted);font-size:.85rem;flex:1;min-width:200px;}
#dx-cookiebar a{color:var(--accent);}
.dx-cookie-btn{background:var(--accent)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:8px 20px!important;cursor:pointer!important;font-weight:600!important;font-size:.85rem!important;}
</style>';
    echo '<div id="dx-cookiebar"><p>Usamos cookies para mejorar tu experiencia. <a href="/cookies/">Mas informacion</a></p>';
    echo '<button class="dx-cookie-btn" onclick="dxCookieOk()">Aceptar</button></div>';
    echo '<script>
function dxCookieOk(){
  var d=new Date();d.setFullYear(d.getFullYear()+1);
  document.cookie="dx_cookies_ok=yes;expires="+d.toUTCString()+";path=/;SameSite=Lax";
  document.getElementById("dx-cookiebar").style.display="none";
}
</script>';
});


// ============================================================
// MEMBERSHIP PLANS SHORTCODE [deseosx_planes]
// ============================================================
add_shortcode('deseosx_planes', function($atts) {
    $uid = get_current_user_id();
    $is_logged = is_user_logged_in();
    $is_gold = dx_is_gold($uid);
    $trial_used = get_user_meta($uid, 'dx_trial_used', true);
    ob_start();
    echo '<style>
.dx-planes{max-width:900px;margin:40px auto;padding:20px;}
.dx-planes h2{text-align:center;font-size:1.8rem;font-weight:700;background:linear-gradient(135deg,var(--gold),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px;}
.dx-planes-subtitle{text-align:center;color:var(--muted);margin-bottom:36px;}
.dx-plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;}
.dx-plan{background:var(--surface);border:1px solid rgba(124,58,237,.25);border-radius:16px;padding:28px;text-align:center;position:relative;}
.dx-plan.featured{border-color:var(--gold);box-shadow:0 0 30px rgba(240,180,41,.15);}
.dx-plan-badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;font-size:.75rem;font-weight:700;padding:4px 16px;border-radius:20px;}
.dx-plan h3{font-size:1.3rem;font-weight:700;margin-bottom:4px;color:var(--text);}
.dx-plan-price{font-size:2.5rem;font-weight:800;color:var(--gold);margin:12px 0 4px;}
.dx-plan-price span{font-size:.9rem;color:var(--muted);font-weight:400;}
.dx-plan-period{font-size:.85rem;color:var(--muted);margin-bottom:20px;}
.dx-plan-features{list-style:none;margin:0 0 24px;padding:0;text-align:left;}
.dx-plan-features li{padding:6px 0;font-size:.9rem;color:var(--text);border-bottom:1px solid rgba(255,255,255,.05);}
.dx-plan-features li::before{content:"v ";color:var(--gold);font-weight:700;margin-right:6px;}
.dx-plan-btn{display:block;width:100%;padding:12px;border-radius:10px;font-weight:700;cursor:pointer;text-decoration:none;border:none;font-size:.95rem;}
.dx-plan-btn.gold-btn{background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;}
.dx-plan-btn.silver-btn{background:linear-gradient(135deg,#64748b,var(--accent2));color:#fff;}
.dx-plan-btn.trial-btn{background:linear-gradient(135deg,var(--accent2),var(--accent));color:#fff;}
.dx-plan-btn:hover{opacity:.88;}
</style>';
    echo '<div class="dx-planes">';
    echo '<h2>Elige tu Plan</h2>';
    echo '<p class="dx-planes-subtitle">Conecta sin limites. Cancela cuando quieras.</p>';
    echo '<div class="dx-plans-grid">';
    // Free trial if not used
    if ($is_logged && !$trial_used && !$is_gold) {
        echo '<div class="dx-plan featured">';
        echo '<div class="dx-plan-badge">GRATIS</div>';
        echo '<h3>Prueba Gold</h3>';
        echo '<div class="dx-plan-price">0<span>EUR</span></div>';
        echo '<div class="dx-plan-period">5 dias de prueba gratuita</div>';
        echo '<ul class="dx-plan-features"><li>Acceso Gold 5 dias</li><li>Contactar miembros</li><li>Ver datos de contacto</li><li>Solo una vez por cuenta</li></ul>';
        echo '<a href="/activar-trial/" class="dx-plan-btn trial-btn">Activar Prueba Gratis</a>';
        echo '</div>';
    }
    // Silver
    echo '<div class="dx-plan">';
    echo '<h3>Silver</h3>';
    echo '<div class="dx-plan-price">15<span>EUR</span></div>';
    echo '<div class="dx-plan-period">15 dias de acceso</div>';
    echo '<ul class="dx-plan-features"><li>Contactar usuarios</li><li>Ver datos de contacto</li><li>Publicar anuncios</li><li>Perfil destacado</li></ul>';
    if ($is_logged) {
        echo '<a href="/pago/?plan=silver" class="dx-plan-btn silver-btn">Activar Silver - 15 EUR</a>';
    } else {
        echo '<a href="/register/" class="dx-plan-btn silver-btn">Registrarse</a>';
    }
    echo '</div>';
    // Gold
    echo '<div class="dx-plan featured">';
    echo '<div class="dx-plan-badge">MAS POPULAR</div>';
    echo '<h3>Gold</h3>';
    echo '<div class="dx-plan-price">25<span>EUR</span></div>';
    echo '<div class="dx-plan-period">al mes - Renovacion mensual</div>';
    echo '<ul class="dx-plan-features"><li>Acceso completo ilimitado</li><li>Contactar todos los usuarios</li><li>Publicar anuncios ilimitados</li><li>Perfil Gold destacado</li><li>Soporte prioritario</li></ul>';
    if ($is_logged) {
        echo '<a href="/pago/?plan=gold" class="dx-plan-btn gold-btn">Hacerse Gold - 25 EUR/mes</a>';
    } else {
        echo '<a href="/register/" class="dx-plan-btn gold-btn">Registrarse Gratis</a>';
    }
    echo '</div>';
    echo '</div></div>';
    return ob_get_clean();
});

// Trial activation
add_action('init', function() {
    if (!is_user_logged_in()) return;
    if (!isset($_GET['dx_activate_trial'])) return;
    $uid = get_current_user_id();
    if (get_user_meta($uid, 'dx_trial_used', true)) {
        wp_redirect('/membership-join/?msg=trial_used');
        exit;
    }
    update_user_meta($uid, 'dx_trial_used', 1);
    update_user_meta($uid, 'dx_trial_end', time() + (5 * DAY_IN_SECONDS));
    wp_redirect('/mi-panel/?msg=trial_activated');
    exit;
});
add_action('init', function() {
    if (isset($_GET['page']) && $_GET['page'] === 'activar-trial') {
        if (!is_user_logged_in()) { wp_redirect('/login/'); exit; }
        $uid = get_current_user_id();
        if (get_user_meta($uid, 'dx_trial_used', true)) { wp_redirect('/membership-join/?msg=trial_used'); exit; }
        update_user_meta($uid, 'dx_trial_used', 1);
        update_user_meta($uid, 'dx_trial_end', time() + (5 * DAY_IN_SECONDS));
        wp_redirect('/mi-panel/?msg=trial_activated');
        exit;
    }
});


// ============================================================
// ANUNCIOS SHORTCODE [deseosx_anuncios]
// ============================================================
add_shortcode('deseosx_anuncios', function($atts) {
    $atts = shortcode_atts(['per_page' => 20], $atts);
    $uid = get_current_user_id();
    $can_contact = dx_can_contact($uid);
    $ciudad_sel = sanitize_text_field($_GET['ciudad'] ?? '');
    $de_sel = sanitize_text_field($_GET['de'] ?? '');
    $paged = max(1, (int)($_GET['pag'] ?? 1));

    $ciudades_es = [
        'Andalucia' => ['Almeria','Cadiz','Cordoba','Granada','Huelva','Jaen','Malaga','Sevilla','Marbella','Jerez de la Frontera','Algeciras','Dos Hermanas','Torremolinos','Fuengirola','Mijas','Linares'],
        'Aragon' => ['Zaragoza','Huesca','Teruel','Calatayud'],
        'Asturias' => ['Oviedo','Gijon','Aviles','Mieres'],
        'Baleares' => ['Palma de Mallorca','Ibiza','Mahon','Manacor','Inca','Calvia'],
        'Canarias' => ['Las Palmas de Gran Canaria','Santa Cruz de Tenerife','La Laguna','Arrecife','Puerto del Rosario','San Cristobal de La Laguna','Telde'],
        'Cantabria' => ['Santander','Torrelavega'],
        'Castilla-La Mancha' => ['Albacete','Ciudad Real','Cuenca','Guadalajara','Toledo','Talavera de la Reina','Puertollano','Alcazar de San Juan'],
        'Castilla y Leon' => ['Burgos','Leon','Palencia','Salamanca','Segovia','Soria','Valladolid','Zamora','Avila','Ponferrada','Miranda de Ebro'],
        'Cataluna' => ['Barcelona','Badalona','Hospitalet de Llobregat','Tarragona','Lleida','Girona','Sabadell','Terrassa','Mataro','Reus','Cornella','Sant Cugat','Manresa'],
        'Extremadura' => ['Badajoz','Caceres','Merida','Plasencia','Don Benito','Almendralejo'],
        'Galicia' => ['A Coruna','Lugo','Ourense','Pontevedra','Vigo','Santiago de Compostela','Ferrol'],
        'La Rioja' => ['Logrono','Calahorra'],
        'Madrid' => ['Madrid','Alcala de Henares','Alcorcon','Fuenlabrada','Getafe','Leganes','Mostoles','Parla','Torrejon de Ardoz','Alcobendas','Pozuelo de Alarcon','Las Rozas'],
        'Murcia' => ['Murcia','Cartagena','Lorca','Molina de Segura','Elche','Alcantarilla'],
        'Navarra' => ['Pamplona','Tudela','Baranain'],
        'Pais Vasco' => ['Bilbao','San Sebastian','Vitoria-Gasteiz','Barakaldo','Getxo','Irun'],
        'Valencia' => ['Valencia','Alicante','Castellon de la Plana','Elche','Torrevieja','Benidorm','Gandia','Sagunto','Orihuela','Alcoy','Villena','Denia'],
        'Ceuta y Melilla' => ['Ceuta','Melilla'],
    ];

    ob_start();
    echo '<style>
.dx-anuncios-wrap{max-width:1000px;margin:0 auto;padding:20px;}
.dx-anuncios-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px;}
.dx-anuncios-header h1{font-size:1.6rem;font-weight:700;color:var(--text);}
.dx-pub-btn{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:20px!important;padding:10px 22px!important;font-weight:700!important;cursor:pointer!important;text-decoration:none!important;display:inline-block!important;font-size:.9rem!important;}
.dx-filter-bar{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:16px 20px;margin-bottom:20px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;}
.dx-filter-group{display:flex;flex-direction:column;gap:4px;flex:1;min-width:160px;}
.dx-filter-label{font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.dx-filter-bar select,.dx-filter-bar input[type=text]{background:var(--surface2)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:8px 12px!important;font-size:.9rem!important;width:100%;}
.dx-filter-btn{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:10px 20px!important;cursor:pointer!important;font-weight:600!important;white-space:nowrap!important;}
.dx-regions-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}
.dx-region-tab{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:20px;padding:6px 14px;font-size:.8rem;cursor:pointer;color:var(--muted);transition:all .2s;}
.dx-region-tab:hover,.dx-region-tab.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.dx-region-cities{display:none;flex-wrap:wrap;gap:6px;margin-bottom:16px;background:var(--surface);border:1px solid rgba(124,58,237,.15);border-radius:10px;padding:12px;}
.dx-region-cities.open{display:flex;}
.dx-city-pill{background:var(--surface2);border:1px solid rgba(124,58,237,.2);border-radius:16px;padding:4px 12px;font-size:.8rem;cursor:pointer;color:var(--text);}
.dx-city-pill:hover{background:var(--accent2);color:#fff;border-color:var(--accent2);}
.dx-ad-list{display:flex;flex-direction:column;gap:16px;}
.dx-ad-item{background:var(--surface);border:1px solid rgba(124,58,237,.15);border-radius:12px;padding:16px;display:flex;gap:16px;transition:border-color .2s;}
.dx-ad-item:hover{border-color:var(--accent);}
.dx-ad-thumb{width:100px;height:100px;border-radius:8px;object-fit:cover;flex-shrink:0;background:var(--surface2);}
.dx-ad-body{flex:1;}
.dx-ad-title{font-size:1rem;font-weight:700;color:var(--text);margin-bottom:6px;}
.dx-ad-title a{color:var(--text);text-decoration:none;}
.dx-ad-title a:hover{color:var(--accent);}
.dx-ad-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:.8rem;color:var(--muted);margin-bottom:8px;}
.dx-ad-excerpt{font-size:.88rem;color:var(--muted);line-height:1.5;margin-bottom:10px;}
.dx-ad-contact{background:linear-gradient(135deg,var(--gold),var(--accent))!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:7px 16px!important;font-size:.82rem!important;font-weight:700!important;cursor:pointer!important;text-decoration:none!important;display:inline-block!important;}
.dx-ad-contact-lock{background:var(--surface2)!important;color:var(--muted)!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:8px!important;padding:7px 16px!important;font-size:.82rem!important;cursor:pointer!important;display:inline-block!important;}
.dx-empty{text-align:center;padding:60px 20px;color:var(--muted);}
.dx-empty-icon{font-size:3rem;margin-bottom:16px;}
.dx-pagination{display:flex;gap:8px;justify-content:center;margin-top:30px;flex-wrap:wrap;}
.dx-pagination a,.dx-pagination span{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:8px;padding:8px 14px;color:var(--text);text-decoration:none;font-size:.9rem;}
.dx-pagination .current{background:var(--accent);border-color:var(--accent);color:#fff;}
.dx-pagination a:hover{border-color:var(--accent);color:var(--accent);}
</style>';

    echo '<div class="dx-anuncios-wrap">';
    echo '<div class="dx-anuncios-header"><h1>Anuncios Eroticos en Espana</h1>';
    echo '<a href="/publicar-anuncio/" class="dx-pub-btn">+ Publicar Anuncio</a></div>';

    // Filter bar - Ciudad y De (sin categoria)
    echo '<div class="dx-filter-bar">';
    echo '<div class="dx-filter-group"><label class="dx-filter-label">Ciudad o Provincia</label>';
    echo '<select onchange="if(this.value){window.location=\'/anuncios/?ciudad=\'+encodeURIComponent(this.value);}">';
    echo '<option value="">Toda Espana</option>';
    foreach ($ciudades_es as $region => $cities) {
        echo '<optgroup label="-- ' . esc_html($region) . ' --">';
        foreach ($cities as $c) {
            $sel = ($ciudad_sel === $c) ? ' selected' : '';
            echo '<option value="' . esc_attr($c) . '"' . $sel . '>' . esc_html($c) . '</option>';
        }
        echo '</optgroup>';
    }
    echo '</select></div>';
    echo '<div class="dx-filter-group"><label class="dx-filter-label">Busca</label>';
    $de_opts = ['Todos','Hombre','Mujer','Pareja','Trans'];
    echo '<select name="de" onchange="this.form.submit()" form="dx-filter-form">';
    foreach ($de_opts as $opt) {
        $sel = ($de_sel === $opt) ? ' selected' : '';
        echo '<option value="' . esc_attr($opt) . '"' . $sel . '>' . esc_html($opt) . '</option>';
    }
    echo '</select></div>';
    if ($ciudad_sel) {
        echo '<a href="/anuncios/" class="dx-filter-btn" style="background:var(--surface2)!important;color:var(--muted)!important;border:1px solid rgba(255,255,255,.1)!important;">Limpiar</a>';
    }
    echo '</div>';

    // Region tabs - use PHP string concat to avoid quote issues in onclick
    echo '<div class="dx-regions-tabs">';
    foreach ($ciudades_es as $region => $cities) {
        $active = in_array($ciudad_sel, $cities) ? ' active' : '';
        $reg_slug = sanitize_title($region);
        echo '<button class="dx-region-tab' . $active . '" onclick="dxToggleRegion(this.dataset.slug)" data-slug="' . esc_attr($reg_slug) . '">' . esc_html($region) . '</button>';
    }
    echo '</div>';
    foreach ($ciudades_es as $region => $cities) {
        $reg_slug = sanitize_title($region);
        $open = in_array($ciudad_sel, $cities) ? ' open' : '';
        echo '<div class="dx-region-cities' . $open . '" id="dx-reg-' . esc_attr($reg_slug) . '">';
        foreach ($cities as $c) {
            $city_url = '/anuncios/?ciudad=' . rawurlencode($c);
            echo '<span class="dx-city-pill" onclick="window.location=this.dataset.url" data-url="' . esc_attr($city_url) . '">' . esc_html($c) . '</span>';
        }
        echo '</div>';
    }

    // Query
    $meta_query = [];
    if ($ciudad_sel) {
        $meta_query[] = ['key'=>'dx_ciudad','value'=>$ciudad_sel,'compare'=>'='];
    }
    if ($de_sel && $de_sel !== 'Todos') {
        $meta_query[] = ['key'=>'dx_tipo','value'=>$de_sel,'compare'=>'='];
    }
    $args = [
        'post_type' => 'dx_anuncio',
        'post_status' => 'publish',
        'posts_per_page' => (int)$atts['per_page'],
        'paged' => $paged,
        'orderby' => 'date',
        'order' => 'DESC',
    ];
    if (!empty($meta_query)) {
        $args['meta_query'] = $meta_query;
    }
    $q = new WP_Query($args);

    echo '<div class="dx-ad-list">';
    if ($q->have_posts()) {
        while ($q->have_posts()) {
            $q->the_post();
            $pid = get_the_ID();
            $author = get_the_author_meta('display_name');
            $ciudad = get_post_meta($pid, 'dx_ciudad', true);
            $tipo = get_post_meta($pid, 'dx_tipo', true);
            $telefono = get_post_meta($pid, 'dx_telefono', true);
            $whatsapp = get_post_meta($pid, 'dx_whatsapp', true);
            $thumb = has_post_thumbnail() ? get_the_post_thumbnail_url($pid, 'thumbnail') : '';
            $excerpt = wp_trim_words(get_the_content(), 20, '...');
            $date = get_the_date('d/m/Y');
            echo '<div class="dx-ad-item">';
            if ($thumb) {
                echo '<img class="dx-ad-thumb" src="' . esc_url($thumb) . '" alt="' . esc_attr(get_the_title()) . '">';
            } else {
                echo '<div class="dx-ad-thumb" style="display:flex;align-items:center;justify-content:center;font-size:2rem;">👤</div>';
            }
            echo '<div class="dx-ad-body">';
            echo '<div class="dx-ad-title"><a href="' . get_permalink() . '">' . esc_html(get_the_title()) . '</a></div>';
            echo '<div class="dx-ad-meta">';
            if ($ciudad) echo '<span>Loc: ' . esc_html($ciudad) . '</span>';
            if ($tipo) echo '<span>Tipo: ' . esc_html($tipo) . '</span>';
            echo '<span>' . $date . '</span>';
            echo '<span>' . esc_html($author) . '</span>';
            echo '</div>';
            echo '<div class="dx-ad-excerpt">' . esc_html($excerpt) . '</div>';
            if ($can_contact) {
                $contact_info = '';
                if ($telefono) $contact_info .= 'Tel: ' . esc_html($telefono) . ' ';
                if ($whatsapp) $contact_info .= 'WA: ' . esc_html($whatsapp);
                if ($contact_info) {
                    echo '<span class="dx-ad-contact">' . $contact_info . '</span> ';
                }
                echo '<a href="' . get_permalink() . '" class="dx-ad-contact">Ver anuncio completo</a>';
            } else {
                echo '<a href="/membership-join/" class="dx-ad-contact-lock">Gold para ver contacto</a>';
            }
            echo '</div></div>';
        }
    } else {
        $msg = $ciudad_sel ? 'No hay anuncios en ' . esc_html($ciudad_sel) : 'Aun no hay anuncios publicados.';
        echo '<div class="dx-empty"><div class="dx-empty-icon">🔍</div><p>' . $msg . '</p>';
        echo '<a href="/publicar-anuncio/" class="dx-pub-btn" style="display:inline-block;margin-top:16px;">Publica el primero</a></div>';
    }
    wp_reset_postdata();
    echo '</div>';

    // Pagination
    $total = $q->max_num_pages;
    if ($total > 1) {
        $base_url = '/anuncios/?' . ($ciudad_sel ? 'ciudad=' . rawurlencode($ciudad_sel) . '&' : '') . ($de_sel && $de_sel !== 'Todos' ? 'de=' . rawurlencode($de_sel) . '&' : '');
        echo '<div class="dx-pagination">';
        for ($i = 1; $i <= min($total, 10); $i++) {
            if ($i === $paged) {
                echo '<span class="current">' . $i . '</span>';
            } else {
                echo '<a href="' . esc_url($base_url . 'pag=' . $i) . '">' . $i . '</a>';
            }
        }
        echo '</div>';
    }

    echo '</div>';
    echo '<script>
function dxToggleRegion(slug){
  var el=document.getElementById("dx-reg-"+slug);
  if(el){el.classList.toggle("open");}
}
</script>';
    return ob_get_clean();
});


// ============================================================
// PUBLICAR ANUNCIO SHORTCODE [deseosx_publicar_anuncio]
// ============================================================
add_shortcode('deseosx_publicar_anuncio', function($atts) {
    if (!is_user_logged_in()) {
        return '<div style="text-align:center;padding:40px;"><p style="color:var(--muted);margin-bottom:16px;">Debes estar registrado para publicar anuncios.</p><a href="/login/" style="background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Iniciar Sesion</a></div>';
    }
    $uid = get_current_user_id();
    if (!dx_can_contact($uid) && !dx_is_gold($uid)) {
        return '<div style="text-align:center;padding:40px;background:var(--surface);border-radius:16px;"><p style="color:var(--muted);margin-bottom:16px;">Necesitas ser miembro Gold o Silver para publicar anuncios.</p><a href="/membership-join/" style="background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;padding:12px 28px;border-radius:10px;font-weight:700;text-decoration:none;">Ver Planes</a></div>';
    }
    $msg = '';
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['dx_pub_nonce']) && wp_verify_nonce($_POST['dx_pub_nonce'], 'dx_publicar')) {
        $title = sanitize_text_field($_POST['dx_titulo'] ?? '');
        $content = sanitize_textarea_field($_POST['dx_descripcion'] ?? '');
        $ciudad = sanitize_text_field($_POST['dx_ciudad'] ?? '');
        $tipo = sanitize_text_field($_POST['dx_tipo'] ?? '');
        $tel = sanitize_text_field($_POST['dx_telefono'] ?? '');
        $wa = sanitize_text_field($_POST['dx_whatsapp'] ?? '');
        if ($title && $content && $ciudad) {
            $pid = wp_insert_post([
                'post_type' => 'dx_anuncio',
                'post_title' => $title,
                'post_content' => $content,
                'post_status' => 'publish',
                'post_author' => $uid,
            ]);
            if ($pid && !is_wp_error($pid)) {
                update_post_meta($pid, 'dx_ciudad', $ciudad);
                update_post_meta($pid, 'dx_tipo', $tipo);
                update_post_meta($pid, 'dx_telefono', $tel);
                update_post_meta($pid, 'dx_whatsapp', $wa);
                $msg = 'success';
            }
        }
    }
    $ciudades_pub = ['Madrid','Barcelona','Valencia','Sevilla','Bilbao','Malaga','Zaragoza','Murcia','Alicante','Valladolid','A Coruna','Palma de Mallorca','Las Palmas','Santa Cruz de Tenerife','Santander','Oviedo','Gijon','Pamplona','Logrono','Badajoz','Caceres','Salamanca','Burgos','Leon','Albacete','Ciudad Real','Toledo','Cuenca','Guadalajara','Tarragona','Lleida','Girona','Castellon','Alicante','Cartagena','Vigo','Santiago de Compostela','Ferrol','Lugo','Ourense','Pontevedra','Ibiza','Menorca','Tenerife','Gran Canaria','Ceuta','Melilla'];
    ob_start();
    if ($msg === 'success') {
        echo '<div style="text-align:center;padding:40px;background:var(--surface);border-radius:16px;">';
        echo '<div style="font-size:3rem;margin-bottom:16px;">✅</div>';
        echo '<h2 style="color:var(--gold);margin-bottom:8px;">Anuncio publicado!</h2>';
        echo '<p style="color:var(--muted);margin-bottom:20px;">Tu anuncio ya esta visible en DeseosX.</p>';
        echo '<a href="/anuncios/" style="background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Ver Anuncios</a>';
        echo '</div>';
        return ob_get_clean();
    }
    echo '<style>
.dx-pub-form{max-width:600px;margin:0 auto;padding:20px;}
.dx-pub-form h2{font-size:1.5rem;font-weight:700;margin-bottom:24px;color:var(--text);}
.dx-field{margin-bottom:18px;}
.dx-field label{display:block;font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em;}
.dx-field input,.dx-field textarea,.dx-field select{width:100%;background:var(--surface)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:10px 14px!important;font-size:.95rem!important;}
.dx-field textarea{resize:vertical;min-height:120px;}
.dx-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.dx-pub-submit{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:10px!important;padding:14px 32px!important;font-size:1rem!important;font-weight:700!important;cursor:pointer!important;width:100%!important;margin-top:8px!important;}
</style>';
    echo '<div class="dx-pub-form">';
    echo '<h2>Publicar Anuncio</h2>';
    echo '<form method="post">';
    echo wp_nonce_field('dx_publicar', 'dx_pub_nonce', true, false);
    echo '<div class="dx-field"><label>Titulo del Anuncio *</label><input type="text" name="dx_titulo" placeholder="Describe brevemente tu anuncio" required></div>';
    echo '<div class="dx-field"><label>Descripcion *</label><textarea name="dx_descripcion" placeholder="Describe con detalle lo que buscas o ofreces..." required></textarea></div>';
    echo '<div class="dx-fields-row">';
    echo '<div class="dx-field"><label>Ciudad *</label><select name="dx_ciudad" required><option value="">Elige ciudad</option>';
    foreach ($ciudades_pub as $c) {
        echo '<option value="' . esc_attr($c) . '">' . esc_html($c) . '</option>';
    }
    echo '</select></div>';
    echo '<div class="dx-field"><label>Soy</label><select name="dx_tipo"><option value="Todos">Indiferente</option><option value="Hombre">Hombre</option><option value="Mujer">Mujer</option><option value="Pareja">Pareja</option><option value="Trans">Trans</option></select></div>';
    echo '</div>';
    echo '<div class="dx-fields-row">';
    echo '<div class="dx-field"><label>Telefono</label><input type="tel" name="dx_telefono" placeholder="6XX XXX XXX"></div>';
    echo '<div class="dx-field"><label>WhatsApp</label><input type="tel" name="dx_whatsapp" placeholder="6XX XXX XXX"></div>';
    echo '</div>';
    echo '<button type="submit" class="dx-pub-submit">Publicar Anuncio Ahora</button>';
    echo '</form></div>';
    return ob_get_clean();
});


// ============================================================
// FETICHES SHORTCODE [deseosx_fetiches]
// Estilo onSwingers Citas - por region/provincia
// ============================================================
add_shortcode('deseosx_fetiches', function($atts) {
    $uid = get_current_user_id();
    $can_contact = dx_can_contact($uid);
    $is_logged = is_user_logged_in();
    $region_sel = sanitize_text_field($_GET['region'] ?? '');
    $prov_sel = sanitize_text_field($_GET['prov'] ?? '');
    $paged = max(1, (int)($_GET['pag'] ?? 1));

    $regiones = [
        'Andalucia' => ['Almeria','Cadiz','Cordoba','Granada','Huelva','Jaen','Malaga','Sevilla'],
        'Aragon' => ['Huesca','Teruel','Zaragoza'],
        'Asturias' => ['Asturias'],
        'Baleares' => ['Baleares'],
        'Canarias' => ['Las Palmas','Santa Cruz de Tenerife'],
        'Cantabria' => ['Cantabria'],
        'Castilla-La Mancha' => ['Albacete','Ciudad Real','Cuenca','Guadalajara','Toledo'],
        'Castilla y Leon' => ['Avila','Burgos','Leon','Palencia','Salamanca','Segovia','Soria','Valladolid','Zamora'],
        'Cataluna' => ['Barcelona','Girona','Lleida','Tarragona'],
        'Extremadura' => ['Badajoz','Caceres'],
        'Galicia' => ['A Coruna','Lugo','Ourense','Pontevedra'],
        'La Rioja' => ['La Rioja'],
        'Madrid' => ['Madrid'],
        'Murcia' => ['Murcia'],
        'Navarra' => ['Navarra'],
        'Pais Vasco' => ['Alava','Guipuzcoa','Vizcaya'],
        'Valencia' => ['Alicante','Castellon','Valencia'],
    ];

    ob_start();
    echo '<style>
.dx-fetiches-wrap{max-width:1000px;margin:0 auto;padding:20px;}
.dx-fetiches-wrap h1{font-size:1.6rem;font-weight:700;margin-bottom:8px;color:var(--text);}
.dx-fetiches-wrap .dx-subtitle{color:var(--muted);margin-bottom:24px;font-size:.95rem;}
.dx-fetiche-filter{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:16px;margin-bottom:20px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;}
.dx-fetiche-filter select{background:var(--surface2)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:8px 12px!important;font-size:.9rem!important;min-width:180px;}
.dx-fetiche-filter button{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:10px 20px!important;cursor:pointer!important;font-weight:600!important;}
.dx-fetiches-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;}
.dx-fetiche-card{background:var(--surface);border:1px solid rgba(124,58,237,.15);border-radius:14px;overflow:hidden;transition:border-color .2s,transform .2s;}
.dx-fetiche-card:hover{border-color:var(--accent);transform:translateY(-2px);}
.dx-fc-thumb{width:100%;height:180px;object-fit:cover;background:var(--surface2);display:flex;align-items:center;justify-content:center;font-size:3rem;}
.dx-fc-body{padding:16px;}
.dx-fc-title{font-size:.95rem;font-weight:700;margin-bottom:6px;color:var(--text);}
.dx-fc-title a{color:var(--text);text-decoration:none;}
.dx-fc-title a:hover{color:var(--accent);}
.dx-fc-meta{font-size:.8rem;color:var(--muted);margin-bottom:10px;display:flex;flex-wrap:wrap;gap:8px;}
.dx-fc-excerpt{font-size:.85rem;color:var(--muted);line-height:1.5;margin-bottom:12px;}
.dx-fc-contact-btn{background:linear-gradient(135deg,var(--gold),var(--accent))!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:7px 14px!important;font-size:.82rem!important;font-weight:700!important;cursor:pointer!important;text-decoration:none!important;display:inline-block!important;width:100%!important;text-align:center!important;}
.dx-fc-lock{background:var(--surface2)!important;color:var(--muted)!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:8px!important;padding:7px 14px!important;font-size:.82rem!important;text-align:center!important;display:block!important;}
.dx-pub-fetiche-btn{display:inline-block;background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border-radius:20px!important;padding:10px 22px!important;font-weight:700!important;text-decoration:none!important;font-size:.9rem!important;margin-bottom:20px!important;}
</style>';

    echo '<div class="dx-fetiches-wrap">';
    echo '<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px;">';
    echo '<div><h1>Fetiches y Citas</h1><p class="dx-subtitle">Encuentra personas con tus mismos gustos. Contacta de forma discreta.</p></div>';
    echo '<a href="/publicar-fetiche/" class="dx-pub-fetiche-btn">+ Publicar Anuncio de Fetiche</a>';
    echo '</div>';

    // Filter
    echo '<form class="dx-fetiche-filter" method="get">';
    echo '<div style="display:flex;flex-direction:column;gap:4px;"><label style="font-size:.75rem;color:var(--muted);text-transform:uppercase;">Comunidad</label>';
    echo '<select name="region" onchange="this.form.submit()">';
    echo '<option value="">Toda Espana</option>';
    foreach ($regiones as $reg => $provs) {
        $sel = ($region_sel === $reg) ? ' selected' : '';
        echo '<option value="' . esc_attr($reg) . '"' . $sel . '>' . esc_html($reg) . '</option>';
    }
    echo '</select></div>';
    if ($region_sel && isset($regiones[$region_sel])) {
        echo '<div style="display:flex;flex-direction:column;gap:4px;"><label style="font-size:.75rem;color:var(--muted);text-transform:uppercase;">Provincia</label>';
        echo '<select name="prov" onchange="this.form.submit()">';
        echo '<option value="">Todas</option>';
        foreach ($regiones[$region_sel] as $prov) {
            $sel = ($prov_sel === $prov) ? ' selected' : '';
            echo '<option value="' . esc_attr($prov) . '"' . $sel . '>' . esc_html($prov) . '</option>';
        }
        echo '</select></div>';
        echo '<input type="hidden" name="region" value="' . esc_attr($region_sel) . '">';
    }
    echo '</form>';

    $args = ['post_type'=>'dx_fetiche','post_status'=>'publish','posts_per_page'=>12,'paged'=>$paged,'orderby'=>'date','order'=>'DESC'];
    $meta_q = [];
    if ($region_sel) $meta_q[] = ['key'=>'dx_region','value'=>$region_sel,'compare'=>'='];
    if ($prov_sel) $meta_q[] = ['key'=>'dx_provincia','value'=>$prov_sel,'compare'=>'='];
    if (!empty($meta_q)) $args['meta_query'] = $meta_q;
    $q = new WP_Query($args);

    echo '<div class="dx-fetiches-grid">';
    if ($q->have_posts()) {
        while ($q->have_posts()) {
            $q->the_post();
            $pid = get_the_ID();
            $autor = get_the_author_meta('display_name');
            $region = get_post_meta($pid, 'dx_region', true);
            $prov = get_post_meta($pid, 'dx_provincia', true);
            $ciudad = get_post_meta($pid, 'dx_ciudad', true);
            $tipo_fetiche = get_post_meta($pid, 'dx_fetiche_tipo', true);
            $telefono = get_post_meta($pid, 'dx_telefono', true);
            $whatsapp = get_post_meta($pid, 'dx_whatsapp', true);
            $thumb = has_post_thumbnail() ? get_the_post_thumbnail_url($pid, 'medium') : '';
            $excerpt = wp_trim_words(get_the_content(), 18, '...');
            echo '<div class="dx-fetiche-card">';
            if ($thumb) {
                echo '<img class="dx-fc-thumb" src="' . esc_url($thumb) . '" alt="' . esc_attr(get_the_title()) . '">';
            } else {
                echo '<div class="dx-fc-thumb">🔥</div>';
            }
            echo '<div class="dx-fc-body">';
            echo '<div class="dx-fc-title"><a href="' . get_permalink() . '">' . esc_html(get_the_title()) . '</a></div>';
            echo '<div class="dx-fc-meta">';
            if ($ciudad) echo '<span>📍 ' . esc_html($ciudad) . '</span>';
            elseif ($prov) echo '<span>📍 ' . esc_html($prov) . '</span>';
            echo '<span>👤 ' . esc_html($autor) . '</span>';
            echo '</div>';
            echo '<div class="dx-fc-excerpt">' . esc_html($excerpt) . '</div>';
            if ($can_contact) {
                $info = '';
                if ($telefono) $info .= '📞 ' . esc_html($telefono);
                if ($whatsapp) $info .= ($info ? ' | ' : '') . '💬 ' . esc_html($whatsapp);
                if ($info) {
                    echo '<div class="dx-fc-contact-btn">' . $info . '</div>';
                } else {
                    echo '<a href="' . get_permalink() . '" class="dx-fc-contact-btn">Ver Anuncio Completo</a>';
                }
            } else {
                echo '<a href="/membership-join/" class="dx-fc-lock">🔒 Hazte Gold para contactar</a>';
            }
            echo '</div></div>';
        }
    } else {
        echo '<div style="grid-column:1/-1;text-align:center;padding:60px 20px;color:var(--muted);">';
        echo '<div style="font-size:3rem;margin-bottom:16px;">🔥</div>';
        echo '<p>Aun no hay anuncios de fetiches.</p>';
        echo '<a href="/publicar-fetiche/" style="display:inline-block;margin-top:16px;background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Publica el primero</a>';
        echo '</div>';
    }
    wp_reset_postdata();
    echo '</div>';

    $total = $q->max_num_pages;
    if ($total > 1) {
        $base = '/fetiches/?' . ($region_sel ? 'region=' . urlencode($region_sel) . '&' : '') . ($prov_sel ? 'prov=' . urlencode($prov_sel) . '&' : '');
        echo '<div class="dx-pagination" style="display:flex;gap:8px;justify-content:center;margin-top:30px;flex-wrap:wrap;">';
        for ($i = 1; $i <= min($total, 10); $i++) {
            if ($i === $paged) echo '<span style="background:var(--accent);border-radius:8px;padding:8px 14px;color:#fff;">' . $i . '</span>';
            else echo '<a href="' . esc_url($base . 'pag=' . $i) . '" style="background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:8px;padding:8px 14px;color:var(--text);text-decoration:none;">' . $i . '</a>';
        }
        echo '</div>';
    }
    echo '</div>';
    return ob_get_clean();
});


// ============================================================
// BUSCAR CONTACTOS SHORTCODE [deseosx_buscar]
// Estilo pasionliberal - grid de perfiles
// ============================================================
add_shortcode('deseosx_buscar', function($atts) {
    $ciudad_sel = sanitize_text_field($_GET['ciudad'] ?? '');
    $busca_sel = sanitize_text_field($_GET['busca'] ?? '');
    $tipo_sel = sanitize_text_field($_GET['tipo'] ?? '');
    $paged = max(1, (int)($_GET['pag'] ?? 1));
    $uid = get_current_user_id();
    $can_contact = dx_can_contact($uid);

    $ciudades = ['Madrid','Barcelona','Valencia','Sevilla','Bilbao','Malaga','Zaragoza','Murcia','Alicante','Valladolid','A Coruna','Palma de Mallorca','Las Palmas','Santa Cruz de Tenerife','Santander','Oviedo','Gijon','Pamplona','Logrono','Badajoz','Caceres','Salamanca','Burgos','Leon','Albacete','Ciudad Real','Toledo','Cuenca','Guadalajara','Tarragona','Lleida','Girona','Castellon','Vigo','Santiago de Compostela','Ferrol','Lugo','Ourense','Pontevedra','Ibiza','Ceuta','Melilla'];

    ob_start();
    echo '<style>
.dx-buscar-wrap{max-width:1100px;margin:0 auto;padding:20px;}
.dx-buscar-wrap h1{font-size:1.6rem;font-weight:700;margin-bottom:24px;color:var(--text);}
.dx-buscar-filter{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:16px 20px;margin-bottom:24px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;}
.dx-buscar-filter select{background:var(--surface2)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:8px 14px!important;font-size:.9rem!important;min-width:160px;}
.dx-buscar-filter button{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:10px 20px!important;cursor:pointer!important;font-weight:600!important;}
.dx-users-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;}
.dx-user-card{background:var(--surface);border:1px solid rgba(124,58,237,.15);border-radius:14px;overflow:hidden;text-align:center;transition:border-color .2s,transform .2s;}
.dx-user-card:hover{border-color:var(--accent);transform:translateY(-2px);}
.dx-user-avatar{width:100%;height:160px;object-fit:cover;background:linear-gradient(135deg,var(--surface2),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:4rem;color:rgba(255,255,255,.3);}
.dx-user-info{padding:12px;}
.dx-user-name{font-weight:700;font-size:.95rem;color:var(--text);margin-bottom:4px;}
.dx-user-meta{font-size:.78rem;color:var(--muted);margin-bottom:10px;}
.dx-user-badge{display:inline-block;background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;font-size:.7rem;font-weight:700;padding:2px 10px;border-radius:10px;margin-bottom:8px;}
.dx-user-btn{display:block;background:var(--accent)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:7px!important;font-size:.82rem!important;font-weight:600!important;cursor:pointer!important;text-decoration:none!important;margin:0!important;}
.dx-user-btn:hover{background:var(--accent2)!important;}
</style>';

    echo '<div class="dx-buscar-wrap">';
    echo '<h1>Buscar Contactos</h1>';

    echo '<form class="dx-buscar-filter" method="get">';
    echo '<div style="display:flex;flex-direction:column;gap:4px;"><label style="font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;">Ciudad</label>';
    echo '<select name="ciudad"><option value="">Toda Espana</option>';
    foreach ($ciudades as $c) {
        $sel = ($ciudad_sel === $c) ? ' selected' : '';
        echo '<option value="' . esc_attr($c) . '"' . $sel . '>' . esc_html($c) . '</option>';
    }
    echo '</select></div>';
    echo '<div style="display:flex;flex-direction:column;gap:4px;"><label style="font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;">Soy</label>';
    echo '<select name="tipo"><option value="">Todos</option><option' . ($tipo_sel==='Hombre'?' selected':'') . ' value="Hombre">Hombre</option><option' . ($tipo_sel==='Mujer'?' selected':'') . ' value="Mujer">Mujer</option><option' . ($tipo_sel==='Pareja'?' selected':'') . ' value="Pareja">Pareja</option><option' . ($tipo_sel==='Trans'?' selected':'') . ' value="Trans">Trans</option></select></div>';
    echo '<div style="display:flex;flex-direction:column;gap:4px;"><label style="font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;">Busco</label>';
    echo '<select name="busca"><option value="">Indiferente</option><option' . ($busca_sel==='Hombre'?' selected':'') . ' value="Hombre">Hombres</option><option' . ($busca_sel==='Mujer'?' selected':'') . ' value="Mujer">Mujeres</option><option' . ($busca_sel==='Pareja'?' selected':'') . ' value="Pareja">Parejas</option></select></div>';
    echo '<button type="submit">Buscar</button>';
    if ($ciudad_sel || $tipo_sel || $busca_sel) {
        echo '<a href="/buscar-contactos/" style="background:var(--surface2)!important;color:var(--muted)!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:8px!important;padding:10px 16px!important;font-size:.85rem!important;text-decoration:none!important;display:inline-block!important;">Limpiar</a>';
    }
    echo '</form>';

    $user_args = ['role' => 'subscriber', 'number' => 24, 'paged' => $paged, 'orderby' => 'registered', 'order' => 'DESC'];
    $meta_filters = [];
    if ($ciudad_sel) $meta_filters[] = ['key'=>'dx_ciudad','value'=>$ciudad_sel,'compare'=>'='];
    if ($tipo_sel) $meta_filters[] = ['key'=>'dx_tipo','value'=>$tipo_sel,'compare'=>'='];
    if ($busca_sel) $meta_filters[] = ['key'=>'dx_busca','value'=>$busca_sel,'compare'=>'LIKE'];
    if (!empty($meta_filters)) {
        $user_args['meta_query'] = array_merge(['relation'=>'AND'], $meta_filters);
    }
    $users_query = new WP_User_Query($user_args);
    $users = $users_query->get_results();

    echo '<div class="dx-users-grid">';
    if (!empty($users)) {
        foreach ($users as $u) {
            $u_id = $u->ID;
            $display = $u->display_name ?: $u->user_login;
            $u_ciudad = get_user_meta($u_id, 'dx_ciudad', true);
            $u_tipo = get_user_meta($u_id, 'dx_tipo', true);
            $u_busca = get_user_meta($u_id, 'dx_busca', true);
            $u_edad = get_user_meta($u_id, 'dx_edad', true);
            $u_gold = dx_is_gold($u_id);
            $avatar = get_avatar_url($u_id, ['size'=>160]);
            echo '<div class="dx-user-card">';
            echo '<img class="dx-user-avatar" src="' . esc_url($avatar) . '" alt="' . esc_attr($display) . '">';
            echo '<div class="dx-user-info">';
            if ($u_gold) echo '<div class="dx-user-badge">GOLD</div>';
            echo '<div class="dx-user-name">' . esc_html($display) . '</div>';
            echo '<div class="dx-user-meta">';
            if ($u_edad) echo esc_html($u_edad) . ' anos | ';
            if ($u_tipo) echo esc_html($u_tipo);
            if ($u_ciudad) echo '<br>📍 ' . esc_html($u_ciudad);
            echo '</div>';
            if ($can_contact || (is_user_logged_in() && get_current_user_id() === $u_id)) {
                echo '<a href="/perfil/' . esc_attr($u->user_login) . '/" class="dx-user-btn">Ver Perfil</a>';
            } else {
                echo '<a href="/membership-join/" class="dx-user-btn" style="background:var(--surface2)!important;color:var(--muted)!important;">🔒 Gold</a>';
            }
            echo '</div></div>';
        }
    } else {
        echo '<div style="grid-column:1/-1;text-align:center;padding:60px 20px;color:var(--muted);">';
        echo '<div style="font-size:3rem;margin-bottom:16px;">👥</div>';
        echo '<p>No se encontraron usuarios con esos filtros.</p>';
        echo '</div>';
    }
    echo '</div>';

    $total_users = $users_query->get_total();
    $total_pages = ceil($total_users / 24);
    if ($total_pages > 1) {
        $base = '/buscar-contactos/?' . ($ciudad_sel ? 'ciudad=' . urlencode($ciudad_sel) . '&' : '') . ($tipo_sel ? 'tipo=' . urlencode($tipo_sel) . '&' : '') . ($busca_sel ? 'busca=' . urlencode($busca_sel) . '&' : '');
        echo '<div style="display:flex;gap:8px;justify-content:center;margin-top:30px;flex-wrap:wrap;">';
        for ($i = 1; $i <= min($total_pages, 10); $i++) {
            if ($i === $paged) echo '<span style="background:var(--accent);border-radius:8px;padding:8px 14px;color:#fff;">' . $i . '</span>';
            else echo '<a href="' . esc_url($base . 'pag=' . $i) . '" style="background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:8px;padding:8px 14px;color:var(--text);text-decoration:none;">' . $i . '</a>';
        }
        echo '</div>';
    }
    echo '</div>';
    return ob_get_clean();
});


// ============================================================
// MI PANEL SHORTCODE [deseosx_mi_panel]
// ============================================================
add_shortcode('deseosx_mi_panel', function($atts) {
    if (!is_user_logged_in()) {
        return '<div style="text-align:center;padding:60px 20px;"><p style="color:var(--muted);margin-bottom:16px;">Debes iniciar sesion para ver tu panel.</p><a href="/login/" style="background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Iniciar Sesion</a></div>';
    }
    $uid = get_current_user_id();
    $user = get_userdata($uid);
    $is_gold = dx_is_gold($uid);
    $is_silver = dx_is_silver($uid);
    $trial_end = (int) get_user_meta($uid, 'dx_trial_end', true);
    $trial_used = get_user_meta($uid, 'dx_trial_used', true);
    $gold_end = (int) get_user_meta($uid, 'dx_gold_end', true);
    $silver_end = (int) get_user_meta($uid, 'dx_silver_end', true);

    $msg = sanitize_text_field($_GET['msg'] ?? '');

    $tab = sanitize_text_field($_GET['tab'] ?? 'inicio');

    // Handle profile update
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['dx_panel_nonce']) && wp_verify_nonce($_POST['dx_panel_nonce'], 'dx_panel')) {
        $action = sanitize_text_field($_POST['dx_action'] ?? '');
        if ($action === 'update_profile') {
            $nombre = sanitize_text_field($_POST['dx_nombre'] ?? '');
            $ciudad = sanitize_text_field($_POST['dx_ciudad'] ?? '');
            $edad = (int)($_POST['dx_edad'] ?? 0);
            $tipo = sanitize_text_field($_POST['dx_tipo'] ?? '');
            $busca = sanitize_text_field($_POST['dx_busca'] ?? '');
            $desc = sanitize_textarea_field($_POST['dx_descripcion'] ?? '');
            $tel = sanitize_text_field($_POST['dx_telefono'] ?? '');
            $wa = sanitize_text_field($_POST['dx_whatsapp'] ?? '');
            if ($nombre) wp_update_user(['ID'=>$uid,'display_name'=>$nombre]);
            update_user_meta($uid, 'dx_ciudad', $ciudad);
            update_user_meta($uid, 'dx_edad', $edad);
            update_user_meta($uid, 'dx_tipo', $tipo);
            update_user_meta($uid, 'dx_busca', $busca);
            update_user_meta($uid, 'dx_descripcion', $desc);
            update_user_meta($uid, 'dx_telefono', $tel);
            update_user_meta($uid, 'dx_whatsapp', $wa);
            wp_redirect('/mi-panel/?tab=perfil&updated=1');
            exit;
        }
    }

    $u_ciudad = get_user_meta($uid, 'dx_ciudad', true);
    $u_edad = get_user_meta($uid, 'dx_edad', true);
    $u_tipo = get_user_meta($uid, 'dx_tipo', true);
    $u_busca = get_user_meta($uid, 'dx_busca', true);
    $u_desc = get_user_meta($uid, 'dx_descripcion', true);
    $u_tel = get_user_meta($uid, 'dx_telefono', true);
    $u_wa = get_user_meta($uid, 'dx_whatsapp', true);

    ob_start();
    echo '<style>
.dx-panel-wrap{max-width:960px;margin:0 auto;padding:20px;}
.dx-panel-header{display:flex;align-items:center;gap:20px;background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:16px;padding:24px;margin-bottom:24px;flex-wrap:wrap;}
.dx-panel-avatar{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid var(--accent);}
.dx-panel-info h2{font-size:1.3rem;font-weight:700;margin-bottom:4px;}
.dx-panel-info .dx-membership{font-size:.85rem;color:var(--muted);}
.dx-panel-tabs{display:flex;gap:4px;margin-bottom:24px;flex-wrap:wrap;background:var(--surface);border-radius:10px;padding:4px;}
.dx-panel-tab{padding:8px 18px;border-radius:8px;font-size:.88rem;font-weight:600;cursor:pointer;text-decoration:none;color:var(--muted);}
.dx-panel-tab.active,.dx-panel-tab:hover{background:var(--accent);color:#fff;}
.dx-panel-section{background:var(--surface);border:1px solid rgba(124,58,237,.15);border-radius:14px;padding:24px;margin-bottom:20px;}
.dx-panel-section h3{font-size:1.1rem;font-weight:700;margin-bottom:16px;color:var(--text);}
.dx-field{margin-bottom:16px;}
.dx-field label{display:block;font-size:.82rem;font-weight:600;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em;}
.dx-field input,.dx-field textarea,.dx-field select{width:100%;background:var(--surface2)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:9px 13px!important;font-size:.9rem!important;}
.dx-field textarea{resize:vertical;min-height:100px;}
.dx-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.dx-save-btn{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:10px!important;padding:12px 28px!important;font-size:.95rem!important;font-weight:700!important;cursor:pointer!important;}
.dx-alert-success{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.3);border-radius:8px;padding:12px 16px;color:#4ade80;margin-bottom:16px;font-size:.9rem;}
.dx-membership-card{background:linear-gradient(135deg,var(--surface2),rgba(124,58,237,.1));border:1px solid rgba(240,180,41,.3);border-radius:12px;padding:20px;margin-bottom:16px;}
.dx-membership-card h4{font-size:1rem;font-weight:700;color:var(--gold);margin-bottom:8px;}
.dx-membership-card p{font-size:.88rem;color:var(--muted);}
.dx-my-ads{display:flex;flex-direction:column;gap:12px;}
.dx-my-ad{background:var(--surface2);border-radius:10px;padding:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;}
.dx-my-ad-title{font-weight:600;color:var(--text);font-size:.9rem;}
.dx-my-ad-meta{font-size:.8rem;color:var(--muted);}
.dx-my-ad-actions{display:flex;gap:8px;}
.dx-del-btn{background:rgba(224,25,107,.15)!important;color:var(--accent)!important;border:1px solid rgba(224,25,107,.3)!important;border-radius:6px!important;padding:5px 12px!important;font-size:.8rem!important;cursor:pointer!important;}
</style>';

    echo '<div class="dx-panel-wrap">';

    // Header
    $avatar = get_avatar_url($uid, ['size'=>80]);
    $display_name = $user->display_name ?: $user->user_login;
    $membership_label = $is_gold ? 'Miembro Gold' : ($is_silver ? 'Miembro Silver' : 'Miembro Gratuito');
    echo '<div class="dx-panel-header">';
    echo '<img class="dx-panel-avatar" src="' . esc_url($avatar) . '" alt="' . esc_attr($display_name) . '">';
    echo '<div class="dx-panel-info">';
    echo '<h2>' . esc_html($display_name) . '</h2>';
    echo '<div class="dx-membership">' . $membership_label . ' | ' . esc_html($user->user_email) . '</div>';
    if ($trial_end > time()) {
        $days_left = ceil(($trial_end - time()) / DAY_IN_SECONDS);
        echo '<div style="margin-top:6px;font-size:.8rem;color:var(--gold);">Trial Gold: ' . $days_left . ' dias restantes</div>';
    }
    echo '</div>';
    echo '<a href="' . wp_logout_url('/') . '" style="margin-left:auto;background:var(--surface2);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 16px;font-size:.85rem;color:var(--muted);text-decoration:none;">Cerrar Sesion</a>';
    echo '</div>';

    // Alerts
    if ($msg === 'trial_activated') {
        echo '<div class="dx-alert-success">¡Trial Gold activado! Tienes 5 dias de acceso Gold gratuito.</div>';
    }
    if (isset($_GET['updated'])) {
        echo '<div class="dx-alert-success">Perfil actualizado correctamente.</div>';
    }

    // Tabs
    echo '<div class="dx-panel-tabs">';
    $tabs = ['inicio'=>'Inicio','perfil'=>'Mi Perfil','anuncios'=>'Mis Anuncios','membresia'=>'Membresia'];
    foreach ($tabs as $t_key => $t_label) {
        $active = ($tab === $t_key) ? ' active' : '';
        echo '<a href="/mi-panel/?tab=' . $t_key . '" class="dx-panel-tab' . $active . '">' . $t_label . '</a>';
    }
    echo '</div>';

    if ($tab === 'inicio') {
        echo '<div class="dx-panel-section">';
        echo '<h3>Bienvenido de vuelta, ' . esc_html($display_name) . '</h3>';
        echo '<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;">';
        $my_ads = get_posts(['post_type'=>'dx_anuncio','author'=>$uid,'numberposts'=>100]);
        echo '<div style="background:var(--surface2);border-radius:10px;padding:16px;text-align:center;"><div style="font-size:2rem;font-weight:800;color:var(--gold);">' . count($my_ads) . '</div><div style="font-size:.85rem;color:var(--muted);">Anuncios publicados</div></div>';
        echo '<div style="background:var(--surface2);border-radius:10px;padding:16px;text-align:center;"><div style="font-size:2rem;font-weight:800;color:var(--accent);">' . ($is_gold || $is_silver ? 'SI' : 'NO') . '</div><div style="font-size:.85rem;color:var(--muted);">Puede contactar</div></div>';
        echo '</div>';
        echo '<div style="display:flex;flex-wrap:wrap;gap:12px;margin-top:16px;">';
        echo '<a href="/publicar-anuncio/" style="background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-radius:8px;padding:10px 20px;font-weight:600;text-decoration:none;font-size:.9rem;">+ Publicar Anuncio</a>';
        echo '<a href="/buscar-contactos/" style="background:var(--surface2);border:1px solid rgba(124,58,237,.3);color:var(--text);border-radius:8px;padding:10px 20px;font-weight:600;text-decoration:none;font-size:.9rem;">Buscar Contactos</a>';
        if (!$is_gold && !$is_silver) {
            echo '<a href="/membership-join/" style="background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;border-radius:8px;padding:10px 20px;font-weight:700;text-decoration:none;font-size:.9rem;">Hacerse Gold</a>';
        }
        echo '</div></div>';
    } elseif ($tab === 'perfil') {
        echo '<div class="dx-panel-section">';
        echo '<h3>Editar Perfil</h3>';
        echo '<form method="post">';
        echo wp_nonce_field('dx_panel', 'dx_panel_nonce', true, false);
        echo '<input type="hidden" name="dx_action" value="update_profile">';
        echo '<div class="dx-fields-row">';
        echo '<div class="dx-field"><label>Nombre visible</label><input type="text" name="dx_nombre" value="' . esc_attr($display_name) . '"></div>';
        echo '<div class="dx-field"><label>Ciudad</label><input type="text" name="dx_ciudad" value="' . esc_attr($u_ciudad) . '" placeholder="Tu ciudad"></div>';
        echo '</div>';
        echo '<div class="dx-fields-row">';
        echo '<div class="dx-field"><label>Edad</label><input type="number" name="dx_edad" value="' . esc_attr($u_edad) . '" min="18" max="99"></div>';
        echo '<div class="dx-field"><label>Soy</label><select name="dx_tipo"><option value="">-</option><option' . ($u_tipo==='Hombre'?' selected':'') . ' value="Hombre">Hombre</option><option' . ($u_tipo==='Mujer'?' selected':'') . ' value="Mujer">Mujer</option><option' . ($u_tipo==='Pareja'?' selected':'') . ' value="Pareja">Pareja</option><option' . ($u_tipo==='Trans'?' selected':'') . ' value="Trans">Trans</option></select></div>';
        echo '</div>';
        echo '<div class="dx-field"><label>Busco</label><input type="text" name="dx_busca" value="' . esc_attr($u_busca) . '" placeholder="¿Que buscas?"></div>';
        echo '<div class="dx-field"><label>Descripcion</label><textarea name="dx_descripcion" placeholder="Cuentanos sobre ti...">' . esc_textarea($u_desc) . '</textarea></div>';
        echo '<div class="dx-fields-row">';
        echo '<div class="dx-field"><label>Telefono</label><input type="tel" name="dx_telefono" value="' . esc_attr($u_tel) . '" placeholder="Solo visible para Gold"></div>';
        echo '<div class="dx-field"><label>WhatsApp</label><input type="tel" name="dx_whatsapp" value="' . esc_attr($u_wa) . '" placeholder="Solo visible para Gold"></div>';
        echo '</div>';
        echo '<button type="submit" class="dx-save-btn">Guardar Cambios</button>';
        echo '</form></div>';
    } elseif ($tab === 'anuncios') {
        echo '<div class="dx-panel-section">';
        echo '<h3>Mis Anuncios</h3>';
        $my_ads = get_posts(['post_type'=>'dx_anuncio','author'=>$uid,'numberposts'=>50,'post_status'=>['publish','pending']]);
        if ($my_ads) {
            echo '<div class="dx-my-ads">';
            foreach ($my_ads as $ad) {
                $ad_ciudad = get_post_meta($ad->ID, 'dx_ciudad', true);
                echo '<div class="dx-my-ad"><div><div class="dx-my-ad-title">' . esc_html($ad->post_title) . '</div>';
                echo '<div class="dx-my-ad-meta">' . ($ad_ciudad ? '📍 ' . esc_html($ad_ciudad) . ' | ' : '') . get_the_date('d/m/Y', $ad->ID) . '</div></div>';
                echo '<div class="dx-my-ad-actions">';
                echo '<a href="' . get_permalink($ad->ID) . '" style="background:var(--surface2);border:1px solid rgba(124,58,237,.3);border-radius:6px;padding:5px 12px;font-size:.8rem;color:var(--text);text-decoration:none;">Ver</a>';
                echo '</div></div>';
            }
            echo '</div>';
        } else {
            echo '<p style="color:var(--muted);">Aun no has publicado ningun anuncio.</p>';
        }
        echo '<a href="/publicar-anuncio/" style="display:inline-block;margin-top:16px;background:var(--accent);color:#fff;border-radius:8px;padding:10px 20px;font-weight:600;text-decoration:none;">+ Publicar Anuncio</a>';
        echo '</div>';
    } elseif ($tab === 'membresia') {
        echo '<div class="dx-panel-section">';
        echo '<h3>Tu Membresia</h3>';
        if ($is_gold) {
            echo '<div class="dx-membership-card"><h4>Miembro Gold Activo</h4>';
            if ($gold_end > time()) echo '<p>Caduca: ' . date('d/m/Y', $gold_end) . '</p>';
            echo '</div>';
        } elseif ($is_silver) {
            echo '<div class="dx-membership-card" style="border-color:rgba(148,163,184,.3);"><h4 style="color:#94a3b8;">Miembro Silver Activo</h4>';
            if ($silver_end > time()) echo '<p>Caduca: ' . date('d/m/Y', $silver_end) . '</p>';
            echo '</div>';
        } elseif ($trial_end > time()) {
            $days_left = ceil(($trial_end - time()) / DAY_IN_SECONDS);
            echo '<div class="dx-membership-card"><h4>Trial Gold Activo</h4><p>' . $days_left . ' dias restantes.</p></div>';
        } else {
            echo '<p style="color:var(--muted);margin-bottom:20px;">No tienes una membresia activa. Activa Gold o Silver para contactar con otros miembros.</p>';
            if (!$trial_used) {
                echo '<a href="/mi-panel/?dx_activate_trial=1" style="display:inline-block;background:linear-gradient(135deg,var(--accent2),var(--accent));color:#fff;border-radius:8px;padding:10px 22px;font-weight:700;text-decoration:none;margin-bottom:12px;">Activar Trial Gold Gratis (5 dias)</a><br>';
            }
        }
        echo '<div style="display:flex;gap:12px;flex-wrap:wrap;margin-top:16px;">';
        echo '<a href="/pago/?plan=gold" style="background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;border-radius:8px;padding:10px 22px;font-weight:700;text-decoration:none;">Gold 25EUR/mes</a>';
        echo '<a href="/pago/?plan=silver" style="background:linear-gradient(135deg,#64748b,var(--accent2));color:#fff;border-radius:8px;padding:10px 22px;font-weight:700;text-decoration:none;">Silver 15EUR/15 dias</a>';
        echo '</div></div>';
    }

    echo '</div>';
    return ob_get_clean();
});

// Handle trial activation from mi-panel
add_action('init', function() {
    if (!is_user_logged_in()) return;
    if (strpos($_SERVER['REQUEST_URI'] ?? '', '/mi-panel/') === false) return;
    if (!isset($_GET['dx_activate_trial'])) return;
    $uid = get_current_user_id();
    if (get_user_meta($uid, 'dx_trial_used', true)) {
        wp_redirect('/mi-panel/?tab=membresia&msg=trial_used');
        exit;
    }
    update_user_meta($uid, 'dx_trial_used', 1);
    update_user_meta($uid, 'dx_trial_end', time() + (5 * DAY_IN_SECONDS));
    wp_redirect('/mi-panel/?msg=trial_activated&tab=membresia');
    exit;
});


// ============================================================
// FOOTER GLOBAL
// ============================================================
add_action('wp_footer', function() {
    echo '<style>
.dx-footer{background:var(--surface);border-top:1px solid rgba(124,58,237,.2);padding:40px 20px 20px;margin-top:40px;}
.dx-footer-inner{max-width:1100px;margin:0 auto;}
.dx-footer-cities{margin-bottom:30px;}
.dx-footer-cities h4{font-size:.8rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px;}
.dx-footer-cities-grid{display:flex;flex-wrap:wrap;gap:8px;}
.dx-footer-city-link{font-size:.8rem;color:var(--muted);text-decoration:none;padding:3px 8px;border-radius:4px;transition:color .2s;}
.dx-footer-city-link:hover{color:var(--accent);}
.dx-footer-nav{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-bottom:20px;border-top:1px solid rgba(255,255,255,.05);padding-top:20px;}
.dx-footer-nav a{font-size:.82rem;color:var(--muted);text-decoration:none;}
.dx-footer-nav a:hover{color:var(--accent);}
.dx-footer-bottom{text-align:center;font-size:.78rem;color:var(--muted);padding-top:16px;border-top:1px solid rgba(255,255,255,.05);}
.dx-footer-logo-text{font-size:1.1rem;font-weight:700;background:linear-gradient(135deg,var(--gold),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;margin-bottom:4px;}
</style>';
    $cities_footer = ['Madrid','Barcelona','Valencia','Sevilla','Bilbao','Malaga','Zaragoza','Murcia','Alicante','Valladolid','A Coruna','Palma de Mallorca','Las Palmas','Santa Cruz de Tenerife','Santander','Oviedo','Gijon','Pamplona','Logrono','Badajoz','Caceres','Salamanca','Burgos','Leon','Albacete','Ciudad Real','Toledo','Cuenca','Guadalajara','Tarragona','Lleida','Girona','Castellon','Vigo','Santiago de Compostela','Ferrol','Lugo','Ourense','Pontevedra','Ibiza','Tenerife','Marbella','Torrevieja','Benidorm','Cartagena','Fuengirola','Jerez','Alcala de Henares'];
    echo '<footer class="dx-footer"><div class="dx-footer-inner">';
    echo '<div class="dx-footer-cities"><h4>Anuncios Eroticos por Ciudad</h4><div class="dx-footer-cities-grid">';
    foreach ($cities_footer as $city) {
        echo '<a href="/anuncios/?ciudad=' . urlencode($city) . '" class="dx-footer-city-link">' . esc_html($city) . '</a>';
    }
    echo '</div></div>';
    echo '<div class="dx-footer-nav">';
    echo '<a href="/anuncios/">Anuncios</a>';
    echo '<a href="/fetiches/">Fetiches</a>';
    echo '<a href="/buscar-contactos/">Buscar Contactos</a>';
    echo '<a href="/membership-join/">Planes</a>';
    echo '<a href="/aviso-legal/">Aviso Legal</a>';
    echo '<a href="/condiciones-de-uso/">Condiciones de Uso</a>';
    echo '<a href="/privacidad/">Privacidad</a>';
    echo '<a href="/cookies/">Cookies</a>';
    echo '</div>';
    echo '<div class="dx-footer-bottom">';
    echo '<div class="dx-footer-logo-text">DeseosX</div>';
    echo '<p>Copyright &copy; 2024-' . date('Y') . ' DeseosX&trade; | Todos los derechos reservados</p>';
    echo '<p style="margin-top:8px;font-size:.72rem;">Este sitio contiene contenido para adultos (+18). El acceso esta reservado a mayores de edad. DeseosX no se responsabiliza del contenido publicado por los usuarios.</p>';
    echo '<p style="margin-top:6px;font-size:.7rem;">&#9400; DeseosX&trade; - Marca registrada - Madrid, Espana</p>';
    echo '</div></div></footer>';
}, 20);


// ============================================================
// PUBLICAR FETICHE SHORTCODE [deseosx_publicar_fetiche]
// ============================================================
add_shortcode('deseosx_publicar_fetiche', function($atts) {
    if (!is_user_logged_in()) {
        return '<div style="text-align:center;padding:40px;"><p style="color:var(--muted);margin-bottom:16px;">Debes estar registrado para publicar.</p><a href="/login/" style="background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Iniciar Sesion</a></div>';
    }
    $uid = get_current_user_id();
    $msg = '';
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['dx_fet_nonce']) && wp_verify_nonce($_POST['dx_fet_nonce'], 'dx_publicar_fetiche')) {
        $title = sanitize_text_field($_POST['dx_titulo'] ?? '');
        $content = sanitize_textarea_field($_POST['dx_descripcion'] ?? '');
        $region = sanitize_text_field($_POST['dx_region'] ?? '');
        $provincia = sanitize_text_field($_POST['dx_provincia'] ?? '');
        $ciudad = sanitize_text_field($_POST['dx_ciudad'] ?? '');
        $tipo_fet = sanitize_text_field($_POST['dx_fetiche_tipo'] ?? '');
        $tel = sanitize_text_field($_POST['dx_telefono'] ?? '');
        $wa = sanitize_text_field($_POST['dx_whatsapp'] ?? '');
        if ($title && $content) {
            $pid = wp_insert_post([
                'post_type' => 'dx_fetiche',
                'post_title' => $title,
                'post_content' => $content,
                'post_status' => 'publish',
                'post_author' => $uid,
            ]);
            if ($pid && !is_wp_error($pid)) {
                update_post_meta($pid, 'dx_region', $region);
                update_post_meta($pid, 'dx_provincia', $provincia);
                update_post_meta($pid, 'dx_ciudad', $ciudad);
                update_post_meta($pid, 'dx_fetiche_tipo', $tipo_fet);
                update_post_meta($pid, 'dx_telefono', $tel);
                update_post_meta($pid, 'dx_whatsapp', $wa);
                $msg = 'success';
            }
        }
    }
    if ($msg === 'success') {
        return '<div style="text-align:center;padding:40px;background:var(--surface);border-radius:16px;"><div style="font-size:3rem;margin-bottom:16px;">🔥</div><h2 style="color:var(--gold);margin-bottom:8px;">Anuncio de Fetiche publicado!</h2><p style="color:var(--muted);margin-bottom:20px;">Ya es visible en Fetiches y Citas.</p><a href="/fetiches/" style="background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;text-decoration:none;">Ver Fetiches</a></div>';
    }
    $regiones_pub = ['Andalucia','Aragon','Asturias','Baleares','Canarias','Cantabria','Castilla-La Mancha','Castilla y Leon','Cataluna','Extremadura','Galicia','La Rioja','Madrid','Murcia','Navarra','Pais Vasco','Valencia'];
    $tipos_fetiches = ['BDSM','Exhibicionismo','Voyeurismo','Intercambio de parejas','Swinger','Juego de roles','Dominacion','Sumision','Latex y cuero','Pies','Travestismo','Encuentro casual','Trio','Gangbang','Otro'];
    ob_start();
    echo '<style>
.dx-pub-form{max-width:600px;margin:0 auto;padding:20px;}
.dx-pub-form h2{font-size:1.5rem;font-weight:700;margin-bottom:24px;color:var(--text);}
.dx-field{margin-bottom:18px;}
.dx-field label{display:block;font-size:.82rem;font-weight:600;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em;}
.dx-field input,.dx-field textarea,.dx-field select{width:100%;background:var(--surface)!important;border:1px solid rgba(124,58,237,.3)!important;border-radius:8px!important;color:var(--text)!important;padding:10px 14px!important;font-size:.95rem!important;}
.dx-field textarea{resize:vertical;min-height:120px;}
.dx-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.dx-pub-submit{background:linear-gradient(135deg,var(--accent),var(--accent2))!important;color:#fff!important;border:none!important;border-radius:10px!important;padding:14px 32px!important;font-size:1rem!important;font-weight:700!important;cursor:pointer!important;width:100%!important;margin-top:8px!important;}
</style>';
    echo '<div class="dx-pub-form">';
    echo '<h2>Publicar Anuncio de Fetiche</h2>';
    echo '<form method="post">';
    echo wp_nonce_field('dx_publicar_fetiche', 'dx_fet_nonce', true, false);
    echo '<div class="dx-field"><label>Titulo *</label><input type="text" name="dx_titulo" placeholder="Describe tu fetiche o lo que buscas" required></div>';
    echo '<div class="dx-field"><label>Descripcion *</label><textarea name="dx_descripcion" placeholder="Detalla con mas informacion lo que ofreces o buscas..." required></textarea></div>';
    echo '<div class="dx-field"><label>Tipo de Fetiche</label><select name="dx_fetiche_tipo"><option value="">Selecciona</option>';
    foreach ($tipos_fetiches as $tf) {
        echo '<option value="' . esc_attr($tf) . '">' . esc_html($tf) . '</option>';
    }
    echo '</select></div>';
    echo '<div class="dx-fields-row">';
    echo '<div class="dx-field"><label>Comunidad Autonoma</label><select name="dx_region"><option value="">Selecciona</option>';
    foreach ($regiones_pub as $reg) {
        echo '<option value="' . esc_attr($reg) . '">' . esc_html($reg) . '</option>';
    }
    echo '</select></div>';
    echo '<div class="dx-field"><label>Ciudad</label><input type="text" name="dx_ciudad" placeholder="Tu ciudad"></div>';
    echo '</div>';
    echo '<div class="dx-fields-row">';
    echo '<div class="dx-field"><label>Telefono</label><input type="tel" name="dx_telefono" placeholder="6XX XXX XXX"></div>';
    echo '<div class="dx-field"><label>WhatsApp</label><input type="tel" name="dx_whatsapp" placeholder="6XX XXX XXX"></div>';
    echo '</div>';
    echo '<button type="submit" class="dx-pub-submit">Publicar Anuncio de Fetiche</button>';
    echo '</form></div>';
    return ob_get_clean();
});

// ============================================================
// AVISO DE RESPONSABILIDAD [deseosx_responsabilidad]
// ============================================================
add_shortcode('deseosx_responsabilidad', function($atts) {
    return '<div style="background:rgba(224,25,107,.05);border:1px solid rgba(224,25,107,.2);border-radius:10px;padding:16px 20px;margin:16px 0;font-size:.82rem;color:var(--muted);line-height:1.6;"><strong style="color:var(--accent);">AVISO DE RESPONSABILIDAD:</strong> DeseosX es una plataforma de contactos para adultos mayores de 18 anos. Todo el contenido es publicado por los propios usuarios. DeseosX no verifica la identidad de los anunciantes ni se responsabiliza del contenido publicado. Al usar este sitio, aceptas las <a href="/condiciones-de-uso/" style="color:var(--accent);">Condiciones de Uso</a> y nuestra <a href="/privacidad/" style="color:var(--accent);">Politica de Privacidad</a>. En cumplimiento de la Ley Organica 15/1999 de Proteccion de Datos (LOPD) y el Reglamento (UE) 2016/679 (RGPD).</div>';
});


// ============================================================
// PERFIL PUBLICO SHORTCODE [deseosx_perfil_publico]
// ============================================================
add_shortcode('deseosx_perfil_publico', function($atts) {
    $atts = shortcode_atts(['usuario'=>''], $atts);
    $username = sanitize_text_field($_GET['u'] ?? $atts['usuario']);
    if (!$username) {
        // Show current user profile if logged in
        if (!is_user_logged_in()) return '<div style="text-align:center;padding:40px;color:var(--muted);">Usuario no encontrado.</div>';
        $user = wp_get_current_user();
    } else {
        $user = get_user_by('login', $username);
        if (!$user) return '<div style="text-align:center;padding:40px;color:var(--muted);">Usuario no encontrado.</div>';
    }
    $u_id = $user->ID;
    $viewer_id = get_current_user_id();
    $can_contact = dx_can_contact($viewer_id);
    $u_gold = dx_is_gold($u_id);
    $u_ciudad = get_user_meta($u_id, 'dx_ciudad', true);
    $u_edad = get_user_meta($u_id, 'dx_edad', true);
    $u_tipo = get_user_meta($u_id, 'dx_tipo', true);
    $u_busca = get_user_meta($u_id, 'dx_busca', true);
    $u_desc = get_user_meta($u_id, 'dx_descripcion', true);
    $u_tel = get_user_meta($u_id, 'dx_telefono', true);
    $u_wa = get_user_meta($u_id, 'dx_whatsapp', true);
    $avatar = get_avatar_url($u_id, ['size'=>160]);

    ob_start();
    echo '<style>
.dx-perfil-wrap{max-width:700px;margin:0 auto;padding:20px;}
.dx-perfil-card{background:var(--surface);border:1px solid rgba(124,58,237,.2);border-radius:18px;padding:28px;}
.dx-perfil-top{display:flex;gap:24px;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;}
.dx-perfil-avatar{width:130px;height:130px;border-radius:50%;object-fit:cover;border:3px solid var(--accent);flex-shrink:0;}
.dx-perfil-details h2{font-size:1.5rem;font-weight:700;margin-bottom:6px;}
.dx-perfil-details .dx-gold-badge{background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;font-size:.75rem;font-weight:700;padding:3px 12px;border-radius:10px;display:inline-block;margin-bottom:8px;}
.dx-perfil-meta-item{font-size:.88rem;color:var(--muted);margin-bottom:4px;}
.dx-perfil-desc{background:var(--surface2);border-radius:10px;padding:16px;margin-bottom:20px;font-size:.9rem;color:var(--text);line-height:1.6;}
.dx-perfil-contact-box{background:rgba(224,25,107,.05);border:1px solid rgba(224,25,107,.2);border-radius:10px;padding:16px;margin-top:16px;}
.dx-perfil-contact-box h4{font-size:.9rem;font-weight:700;color:var(--accent);margin-bottom:10px;}
</style>';
    echo '<div class="dx-perfil-wrap"><div class="dx-perfil-card">';
    echo '<div class="dx-perfil-top">';
    echo '<img class="dx-perfil-avatar" src="' . esc_url($avatar) . '" alt="' . esc_attr($user->display_name) . '">';
    echo '<div class="dx-perfil-details">';
    echo '<h2>' . esc_html($user->display_name ?: $user->user_login) . '</h2>';
    if ($u_gold) echo '<div class="dx-gold-badge">GOLD</div>';
    if ($u_ciudad) echo '<div class="dx-perfil-meta-item">📍 ' . esc_html($u_ciudad) . '</div>';
    if ($u_edad) echo '<div class="dx-perfil-meta-item">🎂 ' . esc_html($u_edad) . ' anos</div>';
    if ($u_tipo) echo '<div class="dx-perfil-meta-item">👤 ' . esc_html($u_tipo) . '</div>';
    if ($u_busca) echo '<div class="dx-perfil-meta-item">💬 Busca: ' . esc_html($u_busca) . '</div>';
    echo '</div></div>';
    if ($u_desc) {
        echo '<div class="dx-perfil-desc">' . nl2br(esc_html($u_desc)) . '</div>';
    }
    if ($can_contact || ($viewer_id && $viewer_id === $u_id)) {
        if ($u_tel || $u_wa) {
            echo '<div class="dx-perfil-contact-box"><h4>Datos de contacto</h4>';
            if ($u_tel) echo '<p style="margin-bottom:8px;">📞 Telefono: <strong>' . esc_html($u_tel) . '</strong></p>';
            if ($u_wa) echo '<p>💬 WhatsApp: <strong>' . esc_html($u_wa) . '</strong></p>';
            echo '</div>';
        }
    } else {
        echo '<a href="/membership-join/" style="display:block;text-align:center;background:linear-gradient(135deg,var(--gold),var(--accent));color:#fff;border-radius:10px;padding:12px;font-weight:700;text-decoration:none;margin-top:16px;">🔒 Hazte Gold para ver el contacto</a>';
    }
    echo '</div></div>';
    return ob_get_clean();
});

// ============================================================
// HOOK: Remove WordPress default header/footer blocks
// ============================================================
add_filter('render_block', function($content, $block) {
    $remove_blocks = ['core/site-header','core/template-part'];
    if (isset($block['blockName']) && in_array($block['blockName'], $remove_blocks)) {
        $slug = $block['attrs']['slug'] ?? '';
        if (in_array($slug, ['header','footer'])) {
            return '';
        }
    }
    return $content;
}, 10, 2);

// Remove admin bar for non-admins
add_action('init', function() {
    if (!current_user_can('manage_options')) {
        show_admin_bar(false);
    }
});

// Redirect WP login to custom login
add_action('init', function() {
    $redirect_pages = ['/wp-login.php'];
    if (in_array($_SERVER['REQUEST_URI'] ?? '', $redirect_pages)) {
        wp_redirect(home_url('/login/'));
        exit;
    }
});

// Enqueue Google Fonts
add_action('wp_head', function() {
    echo '<link rel="preconnect" href="https://fonts.googleapis.com">';
    echo '<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>';
    echo '<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">';
}, 0);

// Auto-set register option
add_action('admin_init', function() {
    update_option('users_can_register', 1);
});
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://deseosx.com/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://deseosx.com/wp-sitemap-posts-post-1.xml</loc></sitemap><sitemap><loc>https://deseosx.com/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://deseosx.com/wp-sitemap-taxonomies-category-1.xml</loc></sitemap><sitemap><loc>https://deseosx.com/wp-sitemap-users-1.xml</loc></sitemap></sitemapindex>
