/* ========================================= */
/* RESET GENERAL */
/* ========================================= */

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

:root{
    --color-primario:#2C3639;
    --color-secundario:#d5cebb;
    --color-terciario:#a27b5c;
    --color-hover:#3b5249;
    --color-blanco:#ffffff;
}

body{
    font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
    background:#f3f1ec;
    padding:40px 20px;
    color:var(--color-primario);
}

/* ========================================= */
/* CONTENEDOR PRINCIPAL */
/* ========================================= */

.main-container{
    max-width:1400px;
    margin:auto;
    background:#ffffff;
    border-radius:20px;
    overflow:hidden;

    box-shadow:
    0 10px 30px rgba(0,0,0,0.1);
}

/* ========================================= */
/* HERO */
/* ========================================= */

.hero-section{
    display:flex;
    min-height:380px;
    background:var(--color-primario);
    color:white;
}

.hero-image-container{
    flex:1;
}

.hero-image{
    width:100%;
    height:100%;
    object-fit:cover;
}

.hero-content{
    flex:1;
    padding:60px;

    display:flex;
    flex-direction:column;
    justify-content:center;

    background:linear-gradient(
        90deg,
        rgba(44,54,57,0.2),
        rgba(44,54,57,1)
    );
}

.hero-content h1{
    font-size:3rem;
    margin-bottom:20px;
}

.hero-content p{
    font-size:1.2rem;
    line-height:1.8;
    color:#ece7dc;
}

/* ========================================= */
/* FILTROS */
/* ========================================= */

.filter-section{
    background:white;
    padding:25px;

    display:flex;
    justify-content:center;
    align-items:center;
    gap:20px;
    flex-wrap:wrap;

    border-bottom:1px solid #ddd;
}

.filter-title{
    font-weight:bold;
    color:var(--color-primario);
    letter-spacing:1px;
}

.filter-tags{
    display:flex;
    gap:15px;
    flex-wrap:wrap;
}

.tag{
    border:none;
    background:#ece7dc;
    color:var(--color-primario);

    padding:12px 24px;
    border-radius:30px;

    cursor:pointer;
    transition:0.3s;

    font-size:1rem;
}

.tag:hover{
    background:var(--color-terciario);
    color:white;
}

.tag.active{
    background:var(--color-terciario);
    color:white;
}

/* ========================================= */
/* GRID */
/* ========================================= */

.grid-section{
    display:grid;

    grid-template-columns:
    repeat(auto-fit,minmax(500px,1fr));

    gap:30px;
    padding:30px;

    background:#f3f1ec;
}

/* ========================================= */
/* TARJETAS */
/* ========================================= */

.route-card{
    background:white;
    border-radius:20px;
    overflow:hidden;

    box-shadow:
    0 4px 20px rgba(0,0,0,0.08);

    transition:0.3s ease;
}

.route-card:hover{
    transform:translateY(-8px);

    box-shadow:
    0 10px 25px rgba(0,0,0,0.15);
}

/* ========================================= */
/* PARTE SUPERIOR */
/* ========================================= */

.card-top{
    display:flex;
    gap:20px;
    padding:20px;
}

.card-top img{
    width:190px;
    height:150px;
    object-fit:cover;
    border-radius:14px;
}

.card-info{
    flex:1;
}

.card-info h3{
    font-size:2rem;
    margin-bottom:10px;
    color:var(--color-primario);
}

.card-info p{
    color:#4b5563;
    line-height:1.7;
    margin-bottom:15px;
}

/* ========================================= */
/* BARRAS DE COLOR */
/* ========================================= */

.route-color{
    width:100%;
    height:10px;
    border-radius:20px;
    margin-bottom:20px;
}

.cafe{
    background:#7c4a21;
}

.gris{
    background:#6b7280;
}

.naranja{
    background:#f97316;
}

.amarilla{
    background:#facc15;
}

/* ========================================= */
/* BOTÓN */
/* ========================================= */

.btn-more{
    width:100%;

    border:none;

    background:var(--color-terciario);
    color:white;

    padding:14px;
    border-radius:10px;

    cursor:pointer;
    font-size:1rem;

    transition:0.3s;
}

.btn-more:hover{
    background:var(--color-hover);
}

/* ========================================= */
/* INFORMACIÓN EXTRA */
/* ========================================= */

.extra-info{
    display:none;
    gap:25px;

    padding:25px;

    border-top:1px solid #ddd;

    animation:fade 0.3s ease;
}

.extra-info.active{
    display:flex;
}

/* ========================================= */
/* COLUMNA IZQUIERDA */
/* ========================================= */

.info-column{
    width:35%;

    display:flex;
    flex-direction:column;
    gap:20px;
}

.info-box{
    background:#f7f5f0;
    padding:20px;
    border-radius:14px;
}

.info-box h4{
    margin-bottom:15px;
    color:var(--color-primario);
    font-size:1.1rem;
}

.info-box p{
    margin-bottom:15px;
    line-height:1.7;
    color:#374151;
}

.info-box ul{
    padding-left:20px;
}

.info-box li{
    margin-bottom:10px;
    color:#374151;
}

/* ========================================= */
/* MAPA */
/* ========================================= */

.map-container{
    flex:1;
}

.map-container h4{
    margin-bottom:15px;
    color:var(--color-primario);
}

.map-image{
    width:100%;
    height:100%;
    max-height:360px;

    object-fit:cover;

    border-radius:16px;
    border:2px solid #d5cebb;
}

/* ========================================= */
/* ANIMACIÓN */
/* ========================================= */

@keyframes fade{

    from{
        opacity:0;
        transform:translateY(-10px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }

}

/* ========================================= */
/* RESPONSIVE */
/* ========================================= */

@media(max-width:900px){

    body{
        padding:20px 10px;
    }

    .hero-section{
        flex-direction:column;
    }

    .hero-content{
        padding:40px 20px;
    }

    .hero-content h1{
        font-size:2.2rem;
    }

    .card-top{
        flex-direction:column;
    }

    .card-top img{
        width:100%;
        height:240px;
    }

    .extra-info.active{
        flex-direction:column;
    }

    .info-column{
        width:100%;
    }

    .grid-section{
        grid-template-columns:1fr;
        padding:20px;
    }

}