/*==================================================

                VARIABLES

==================================================*/

:root{

--primary:#ff4f8b;
--secondary:#ff8fb8;
--dark:#202124;
--light:#ffffff;
--text:#555;

--shadow:0 15px 35px rgba(0,0,0,.18);

}

*{

margin:0;
padding:0;
box-sizing:border-box;
font-family:"Poppins",sans-serif;

}

body{

background:
linear-gradient(135deg,#fff4f8,#ffe5ef,#fff7fb);

background-size:400% 400%;

animation:bgMove 18s infinite;

overflow-x:hidden;

}

/*==================================================

                    HERO

==================================================*/

.hero{

height:50vh;

background:url("../img/fondos/momentos.jpg") center/cover;

position:relative;

display:flex;

justify-content:center;

align-items:center;

}

.hero-overlay{

position:absolute;

inset:0;

background:rgba(0,0,0,.45);

backdrop-filter:blur(3px);

}

.hero-content{

position:relative;

z-index:10;

text-align:center;

color:white;

padding:20px;

animation:fadeDown 1s;

}

.hero-content h1{

font-size:60px;

margin-bottom:20px;

}

.hero-content p{

font-size:22px;

max-width:700px;

line-height:1.8;

}

/*==================================================

                TOOLBAR

==================================================*/

.toolbar{

width:92%;

max-width:1400px;

margin:60px auto;

display:flex;

justify-content:space-between;

align-items:center;

gap:20px;

flex-wrap:wrap;

}

.search{

flex:1;

min-width:260px;

}

.search input{

width:100%;

padding:18px 22px;

border:none;

border-radius:50px;

font-size:17px;

outline:none;

box-shadow:var(--shadow);

}

.filters{

display:flex;

gap:12px;

flex-wrap:wrap;

}

.filter{

padding:14px 22px;

border:none;

cursor:pointer;

border-radius:40px;

background:white;

font-weight:600;

transition:.3s;

box-shadow:0 10px 20px rgba(0,0,0,.08);

}

.filter:hover{

background:var(--primary);

color:white;

transform:translateY(-4px);

}

.filter.active{

background:linear-gradient(135deg,var(--primary),var(--secondary));

color:white;

}

/*==================================================

                    GRID

==================================================*/

.cards{

width:92%;

max-width:1450px;

margin:auto;

display:grid;

grid-template-columns:repeat(auto-fill,minmax(340px,1fr));

gap:40px;

padding-bottom:80px;

}

/*==================================================

                TARJETAS

==================================================*/

.moment{

cursor:pointer;

opacity:0;

transform:translateY(80px);

transition:1s;

perspective:1200px;

}

.moment.show{

opacity:1;

transform:translateY(0);

}

.cover{

height:500px;

position:relative;

overflow:hidden;

border-radius:30px;

box-shadow:var(--shadow);

transition:.45s;

}

.cover img{

width:100%;

height:100%;

object-fit:cover;

transition:.45s;

}

.cover:hover img{

transform:scale(1.08);

}

.cover:hover{

transform:

rotateY(6deg)

rotateX(4deg)

translateY(-8px);

}

.gradient{

position:absolute;

inset:0;

background:

linear-gradient(

to top,

rgba(0,0,0,.85),

rgba(0,0,0,.2),

transparent

);

}

.content{

position:absolute;

bottom:25px;

left:25px;

color:white;

z-index:5;

}

.content span{

display:inline-block;

padding:8px 18px;

background:rgba(255,255,255,.2);

border-radius:30px;

backdrop-filter:blur(10px);

margin-bottom:15px;

font-size:14px;

}

.content h2{

font-size:32px;

margin-bottom:10px;

}

.content p{

font-size:17px;

}

/*==================================================

                VIEWER

==================================================*/

.viewer{

position:fixed;

inset:0;

display:none;

justify-content:center;

align-items:center;

background:rgba(0,0,0,.95);

z-index:99999;

padding:40px;

}

.viewer-content{

background:white;

width:100%;

max-width:1300px;

border-radius:25px;

overflow:hidden;

display:grid;

grid-template-columns:1fr 1fr;

animation:zoom .35s;

}

.viewer img{

width:100%;

height:100%;

object-fit:cover;

min-height:650px;

}

.viewer-info{

padding:50px;

overflow:auto;

}

.viewer-info h1{

font-size:45px;

color:var(--primary);

margin-bottom:20px;

}

.viewer-info p{

margin-bottom:15px;

line-height:1.8;

color:#666;

}

#viewerText{

margin-top:30px;

line-height:2;

font-size:18px;

white-space:pre-line;

}

#viewerAudio{

margin-top:40px;

width:100%;

}

.viewer-close{

position:absolute;

top:25px;

right:40px;

font-size:45px;

cursor:pointer;

color:white;

transition:.3s;

}

.viewer-close:hover{

transform:rotate(180deg);

}

/*==================================================

            BOTON SUBIR

==================================================*/

.topBtn{

position:fixed;

right:30px;

bottom:30px;

width:55px;

height:55px;

border:none;

border-radius:50%;

background:var(--primary);

color:white;

font-size:24px;

display:none;

cursor:pointer;

box-shadow:var(--shadow);

}

/*==================================================

            ANIMACIONES

==================================================*/

@keyframes zoom{

from{

opacity:0;

transform:scale(.8);

}

to{

opacity:1;

transform:scale(1);

}

}

@keyframes fadeDown{

from{

opacity:0;

transform:translateY(-50px);

}

to{

opacity:1;

transform:translateY(0);

}

}

@keyframes bgMove{

0%{background-position:0% 50%;}

50%{background-position:100% 50%;}

100%{background-position:0% 50%;}

}

/*==================================================

            RESPONSIVE

==================================================*/

@media(max-width:1000px){

.viewer-content{

grid-template-columns:1fr;

}

.viewer img{

min-height:350px;

}

.hero-content h1{

font-size:42px;

}

.hero-content p{

font-size:18px;

}

}

@media(max-width:768px){

.cards{

grid-template-columns:1fr;

}

.cover{

height:420px;

}

.viewer-info{

padding:30px;

}

.viewer-info h1{

font-size:34px;

}

#viewerText{

font-size:17px;

}

}

@media(max-width:480px){

.hero{

height:40vh;

}

.hero-content h1{

font-size:34px;

}

.hero-content p{

font-size:16px;

}

.cover{

height:360px;

}

.search input{

padding:15px;

}

.filter{

padding:10px 15px;

font-size:14px;

}

}
.ripple{
position:absolute;
width:20px;
height:20px;
background:rgba(255,255,255,.5);
border-radius:50%;
transform:translate(-50%,-50%);
animation:ripple .7s linear;
pointer-events:none;
}

@keyframes ripple{
from{
width:20px;
height:20px;
opacity:.8;
}
to{
width:500px;
height:500px;
opacity:0;
}
}

.moment{
position:relative;
overflow:hidden;
}