/* style.css - v30.1 (VERSIÓN FINAL CON MÓVIL OPTIMIZADO) */

:root {
    --color-red: #D50000; --color-green-andaluz: #00AF50; --color-white-andaluz: #FFFFFF;
    --color-purple: #6A0DAD; --color-yellow: #FFD700; --color-green: #2A9D8F;
    --color-text: #1E2022; --color-text-light: #5A5A5A; --color-background: #FDFDFD; --color-surface: #FFFFFF;
    --color-border: #EAEAEA; --font-primary: 'Montserrat', sans-serif; --font-display: 'Poppins', sans-serif;
    --shadow-soft: 0 4px 8px rgba(0, 0, 0, 0.04); --shadow-medium: 0 8px 24px rgba(0, 0, 0, 0.1); --border-radius: 12px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: var(--font-primary); line-height: 1.7; color: var(--color-text); background-color: var(--color-background); }

/* --- Componentes Generales --- */
.container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 20px; }
main { padding: 60px 0; }
.main-content > section { margin-bottom: 80px; }
.section-title { font-size: 2.5em; text-align: center; margin-bottom: 40px; position: relative; }
.section-title::after { content: ''; display: block; width: 80px; height: 5px; background: linear-gradient(90deg, var(--color-red), var(--color-yellow), var(--color-purple)); margin: 15px auto 0; border-radius: 5px; }

/* --- Header y Navegación --- */
.header { padding: 50px 20px; color: var(--color-surface); background-color: var(--color-red); text-align: center; border-radius: 0 0 var(--border-radius) var(--border-radius); box-shadow: var(--shadow-medium); }
.header-title { font-family: var(--font-display); font-size: 5.5em; font-weight: 800; letter-spacing: -2.5px; background: linear-gradient(135deg, var(--color-green-andaluz), var(--color-white-andaluz) 50%, var(--color-green-andaluz)); background-size: 300% 100%; color: transparent; background-clip: text; -webkit-background-clip: text; animation: wave-andalucia 6s linear infinite; text-shadow: 0px 4px 15px rgba(0,0,0,0.3); }
@keyframes wave-andalucia { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }
.main-nav { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 15px; margin-top: 30px; }

/* --- Hero y Contacto (Centrado) --- */
.hero-section, .section-contact .container { text-align: center; }
.hero-section { padding: 60px 20px; background-color: var(--color-surface); border-radius: var(--border-radius); box-shadow: var(--shadow-soft); }
.hero-title-animated { font-size: 2.8em; font-weight: 800; margin-bottom: 25px; background: linear-gradient(90deg, var(--color-red), var(--color-purple) 50%, var(--color-red)); background-size: 200%; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: gradient-flow 8s ease-in-out infinite, text-focus-in 1s cubic-bezier(0.550, 0.085, 0.680, 0.530) both; }
@keyframes gradient-flow { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
@keyframes text-focus-in { 0% { filter: blur(12px); opacity: 0; } 100% { filter: blur(0px); opacity: 1; } }

/* --- Grids (Eventos y Colectivos) --- */
.events-grid, .collectives-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 30px; }
.event-card { background-color: var(--color-surface); border-radius: var(--border-radius); box-shadow: var(--shadow-soft); transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--color-border); }
.event-card:hover { transform: translateY(-10px); box-shadow: var(--shadow-medium); }
.event-card-content { padding: 25px; flex-grow: 1; display: flex; flex-direction: column; }
.event-card h3 { color: var(--color-red); font-size: 1.5em; margin-bottom: 15px; line-height: 1.3; }
.event-card .event-date { font-weight: bold; color: var(--color-purple); margin-bottom: 5px; text-transform: capitalize; }
.event-card .event-time { color: var(--color-text-light); font-size: 0.9em; margin-bottom: 15px; }
.event-info { font-weight: 600; color: var(--color-text-light); display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px; font-size: 0.95em; }
.event-info i { color: var(--color-purple); width: 16px; text-align: center; margin-top: 4px; }
.collective-item { background: linear-gradient(to right, #f4f4f4, #eaeaea); padding: 12px 20px; border-radius: 20px; font-weight: 600; text-align: center; border: 1px solid #ddd; cursor: pointer; transition: all 0.2s ease; }
.collective-item:hover { background: var(--color-purple); color: white; border-color: var(--color-purple); }

/* --- Calendario Mejorado --- */
.calendar-controls { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; }
.calendar-day-name { text-align: center; font-weight: 700; color: var(--color-purple); padding-bottom: 10px; }
.calendar-day { min-height: 140px; border-radius: 8px; border: 1px solid var(--color-border); padding: 8px; transition: all 0.3s ease; display: flex; flex-direction: column; }
.calendar-day:hover { box-shadow: 0 0 15px rgba(0,0,0,0.07); transform: scale(1.02); z-index: 10; background-color: #fff; }
.calendar-day.inactive { background-color: #f7f7f7; opacity: 0.7; }
.calendar-day--today .calendar-day-number { background-color: var(--color-red); color: white; border-radius: 50%; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; }
.calendar-day--has-events { border: 2px solid var(--color-red); }
.calendar-day-number { font-weight: 700; margin-bottom: 8px; text-align: center; }
.calendar-event-title { font-size: 0.8em; font-weight: 600; padding: 4px 8px; margin-bottom: 4px; border-radius: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; background-color: rgba(106, 13, 173, 0.1); color: var(--color-purple); display: flex; align-items: center; transition: all 0.3s; }
.calendar-event-title:hover { background-color: var(--color-purple); color: var(--color-surface); transform: translateX(4px); }
.calendar-event-dot { width: 6px; height: 6px; background-color: currentColor; border-radius: 50%; margin-right: 6px; flex-shrink: 0; }
.calendar-weekday-mobile { display: none; } 

/* --- Modales --- */
.modal { display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(30, 32, 34, 0.85); backdrop-filter: blur(5px); justify-content: center; align-items: center; padding: 20px; }
.modal-content { background-color: var(--color-surface); padding: 40px; border-radius: var(--border-radius); width: 95%; max-width: 650px; box-shadow: var(--shadow-medium); position: relative; animation: fadeInScale 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); margin: auto; }
@keyframes fadeInScale { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
.close-button { color: var(--color-text-light); font-size: 32px; position: absolute; top: 15px; right: 20px; cursor: pointer; z-index: 10; }
.modal-title { text-align: center; margin-bottom: 30px; color: var(--color-red); font-family: var(--font-display); }
.form-group { margin-bottom: 25px; }
.form-group label { display: block; font-weight: 700; font-size: 1.1em; color: var(--color-text); margin-bottom: 10px; }
.form-group input, .form-group textarea { width: 100%; padding: 15px; font-size: 1em; border-radius: 8px; border: 1px solid #ccc; transition: all 0.3s; background-color: #f9f9f9; }
.form-group input:focus, .form-group textarea:focus { outline: none; border-color: var(--color-purple); box-shadow: 0 0 0 4px rgba(106, 13, 173, 0.15); background-color: white; }
.form-row { display: flex; gap: 20px; } .form-row .form-group { flex: 1; }
.modal-content hr { border: none; border-top: 1px solid var(--color-border); margin: 25px 0; }
.form-subtitle { font-size: 1.2em; font-weight: 700; margin-bottom: 20px; color: var(--color-red); border-bottom: 2px solid var(--color-red); padding-bottom: 5px; }
.btn-full-width { width: 100%; padding: 15px; font-size: 1.1em; margin-top: 10px; }

/* --- Modal de Detalle de Evento (REDiseñado) --- */
.event-detail-header { display: flex; align-items: center; gap: 20px; margin-bottom: 25px; }
.detail-date-box { background: var(--color-red); color: white; border-radius: var(--border-radius); padding: 15px 20px; text-align: center; flex-shrink: 0; }
#detail-date-day { font-size: 3em; font-weight: 800; display: block; line-height: 1; }
#detail-date-month { font-size: 1.2em; text-transform: uppercase; letter-spacing: 1px; }
#detail-title { font-family: var(--font-display); font-size: 2.2em; line-height: 1.2; color: var(--color-text); }
.event-info-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin: 20px 0; }
.info-card { background-color: #f9f9f9; padding: 15px; border-radius: 8px; display: flex; align-items: center; gap: 15px; }
.info-card-icon { font-size: 1.5em; color: var(--color-purple); width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; background-color: rgba(106, 13, 173, 0.1); border-radius: 50%; }
.info-card-text { display: flex; flex-direction: column; }
.info-card-text .label { font-size: 0.8em; color: var(--color-text-light); text-transform: uppercase; }
.info-card-text span, .info-card-text strong { font-size: 1em; font-weight: 600; }
#detail-description { font-size: 1.1em; line-height: 1.8; margin: 20px 0; }
.social-links-container { display: flex; flex-wrap: wrap; gap: 15px; margin-top: 20px; justify-content: center; }
.social-links-container a { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 12px 20px; border-radius: 8px; font-weight: 700; text-decoration: none; color: white; transition: transform 0.2s; }
.social-links-container a:hover { transform: scale(1.05); }
.btn-facebook { background-color: #1877F2; }
.btn-instagram { background: #d6249f; background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%); }
.btn-twitter { background-color: #1DA1F2; }
.btn-web { background-color: #333; }
.event-detail-footer { margin-top: 25px; border-top: 1px solid var(--color-border); padding-top: 25px; display: flex; flex-direction: column; gap: 15px; }
.edit-delete-actions { display: flex; gap: 15px; }

/* --- Modal Colectivos (NUEVO DISEÑO) --- */
.view-container { position: relative; overflow: hidden; }
.view { transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; }
.view:not(.active) { position: absolute; top: 0; left: 0; width: 100%; transform: translateX(100%); opacity: 0; pointer-events: none; }
.view.active { transform: translateX(0); opacity: 1; }
.view.hiding { transform: translateX(-100%); opacity: 0; }
.btn-back { background: none; border: none; font-size: 1.1em; font-weight: 700; color: var(--color-purple); cursor: pointer; margin-bottom: 20px; padding: 5px; display: inline-flex; align-items: center; gap: 8px;}

/* --- Modal Gestionar Colectivos --- */
#manage-collectives-list, #requests-list { display: flex; flex-direction: column; gap: 15px; }
.manage-collective-item, .request-item { display: flex; flex-wrap: wrap; align-items: center; gap: 15px; background-color: var(--color-surface); padding: 15px; border-radius: 8px; box-shadow: var(--shadow-soft); border: 1px solid var(--color-border); }
.status-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.status-dot.approved { background-color: var(--color-green-andaluz); }
.status-dot.pending { background-color: #f0ad4e; }
.manage-collective-info { flex-grow: 1; }
.manage-collective-info .name { font-weight: 700; font-size: 1.1em; }
.manage-collective-info .email { font-size: 0.9em; color: var(--color-text-light); }
.manage-collective-item .btn-delete { margin-left: auto; background-color: #e74c3c; color: white; padding: 8px 12px; border-radius: 50%; border: none; cursor: pointer; }
.manage-collective-item .btn-delete:hover { background-color: #c0392b; }

/* --- Botones y otros --- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 12px 24px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent; font-size: 1em; }
.btn:disabled, button:disabled { background-color: #ccc !important; color: #666 !important; cursor: not-allowed !important; transform: none !important; box-shadow: none !important; }
.request-actions { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 10px; }
.btn-approve { background-color: var(--color-green); color: white; }
.btn-deny { background-color: var(--color-text-light); color: white; }
.btn-edit { background-color: #007bff; color: white; }
.btn-delete { background-color: var(--color-red); color: white; }
.btn-google { background-color: #4285F4; color: white; width: 100%; padding: 15px; font-size: 1.1em; }
.btn-cta-contact { padding: 15px 30px; font-size: 1.2em; box-shadow: var(--shadow-medium); background-color: var(--color-green-andaluz); color: white; }
.btn-share { background-color: var(--color-green); color: white; }
.btn-danger { background-color: var(--color-red); color: white; border-color: var(--color-red); }
.btn-danger:hover:not(:disabled) { background-color: #a70000; border-color: #a70000; transform: translateY(-2px); }
.btn-purple { background-color: var(--color-purple); color: white; border-color: var(--color-purple); }
.btn-purple:hover:not(:disabled) { background-color: #520a86; transform: translateY(-2px); }
.btn-yellow { background-color: var(--color-yellow); color: var(--color-text); border-color: var(--color-yellow); }
.btn-yellow:hover:not(:disabled) { background-color: #ffc400; transform: translateY(-2px); }

/* --- Danger Zone --- */
.danger-zone { margin-top: 40px; padding-top: 20px; border-top: 2px solid var(--color-red); }
.danger-zone p { font-size: 0.9em; color: var(--color-text-light); margin-bottom: 20px; }

/* --- Footer --- */
.footer { background-color: var(--color-red); color: var(--color-surface); text-align: center; padding: 40px 20px; margin-top: 60px; }
.footer-text { margin-bottom: 10px; font-size: 1.1em; font-weight: 700; }

/* --- Media Queries para Móviles y Tablets --- */
@media (max-width: 768px) {
    .header-title { font-size: 3em; letter-spacing: -1px; }
    .hero-title-animated { font-size: 2em; }
    .main-nav { gap: 10px; }
    .btn { padding: 10px 15px; font-size: 0.9em; }
    .form-row { flex-direction: column; gap: 0; }

    /* Calendario en móvil */
    .calendar-grid { display: block; }
    .calendar-day-name { display: none; }
    .calendar-day { display: none; }
    .calendar-day--has-events {
        display: block;
        padding: 20px;
        border: 1px solid var(--color-border);
        margin-bottom: 15px;
        border-radius: var(--border-radius);
        background-color: var(--color-surface);
    }
    .calendar-day-number { display: none; } 
    .calendar-weekday-mobile {
        display: block; 
        font-size: 1.3em; 
        font-weight: 700; 
        color: var(--color-red); 
        margin-bottom: 15px; 
        text-transform: capitalize;
    }
    .calendar-event-title {
        background-color: transparent;
        padding: 10px 0;
        border-top: 1px solid var(--color-border);
        white-space: normal;
        font-size: 1em;
    }
    .calendar-event-title:first-of-type {
        border-top: none;
    }
    
    .event-info-cards { grid-template-columns: 1fr; }
    .event-detail-header { flex-direction: column; text-align: center; }
}