diff --git a/index.html b/index.html
index 7ce8bd0..f87461d 100644
--- a/index.html
+++ b/index.html
@@ -174,6 +174,26 @@
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
cursor: pointer;
border: none;
+ position: relative;
+ overflow: hidden;
+ }
+
+ .pix-button::before {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border-radius: 50%;
+ background: rgba(255, 255, 255, 0.3);
+ transform: translate(-50%, -50%);
+ transition: width 0.6s, height 0.6s;
+ }
+
+ .pix-button:hover::before {
+ width: 300px;
+ height: 300px;
}
.pix-button:hover {
@@ -182,6 +202,10 @@
background: linear-gradient(135deg, #00A86B, #32BCAD);
}
+ .pix-button:active {
+ transform: translateY(-1px) scale(0.98);
+ }
+
/* Modal PIX */
.modal {
display: none;
@@ -190,14 +214,25 @@
left: 0;
width: 100%;
height: 100%;
- background: rgba(0, 0, 0, 0.8);
+ background: rgba(0, 0, 0, 0);
z-index: 1000;
justify-content: center;
align-items: center;
+ transition: background 0.3s ease;
}
.modal.active {
display: flex;
+ animation: fadeIn 0.3s ease forwards;
+ }
+
+ @keyframes fadeIn {
+ from {
+ background: rgba(0, 0, 0, 0);
+ }
+ to {
+ background: rgba(0, 0, 0, 0.8);
+ }
}
.modal-content {
@@ -207,6 +242,43 @@
max-width: 400px;
width: 90%;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
+ transform: translateY(30px) scale(0.9);
+ opacity: 0;
+ }
+
+ .modal.active .modal-content {
+ animation: slideUpScale 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
+ }
+
+ @keyframes slideUpScale {
+ 0% {
+ transform: translateY(30px) scale(0.9);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateY(0) scale(1);
+ opacity: 1;
+ }
+ }
+
+ @keyframes fadeOut {
+ from {
+ background: rgba(0, 0, 0, 0.8);
+ }
+ to {
+ background: rgba(0, 0, 0, 0);
+ }
+ }
+
+ @keyframes slideDownScale {
+ 0% {
+ transform: translateY(0) scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: translateY(30px) scale(0.9);
+ opacity: 0;
+ }
}
.modal-header {
@@ -224,6 +296,14 @@
border-radius: 10px;
margin-bottom: 20px;
text-align: center;
+ transition: all 0.3s ease;
+ outline: none;
+ }
+
+ .modal-input:focus {
+ border-color: #32BCAD;
+ box-shadow: 0 0 0 3px rgba(50, 188, 173, 0.2);
+ transform: scale(1.02);
}
.modal-buttons {
@@ -240,6 +320,26 @@
font-weight: bold;
cursor: pointer;
transition: all 0.3s ease;
+ position: relative;
+ overflow: hidden;
+ }
+
+ .modal-button::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border-radius: 50%;
+ background: rgba(255, 255, 255, 0.4);
+ transform: translate(-50%, -50%);
+ transition: width 0.5s, height 0.5s;
+ }
+
+ .modal-button:hover::after {
+ width: 300px;
+ height: 300px;
}
.modal-button.generate {
@@ -257,6 +357,10 @@
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
+ .modal-button:active {
+ transform: translateY(0) scale(0.98);
+ }
+
.pix-code-area {
display: none;
margin-top: 20px;
@@ -267,10 +371,24 @@
font-family: monospace;
font-size: 0.9em;
color: #333;
+ transform: translateY(-10px);
+ opacity: 0;
}
.pix-code-area.active {
display: block;
+ animation: slideInFade 0.4s ease forwards;
+ }
+
+ @keyframes slideInFade {
+ from {
+ transform: translateY(-10px);
+ opacity: 0;
+ }
+ to {
+ transform: translateY(0);
+ opacity: 1;
+ }
}
.copy-notification {
@@ -278,10 +396,24 @@
color: #00A86B;
font-weight: bold;
display: none;
+ transform: scale(0.8);
+ opacity: 0;
}
.copy-notification.active {
display: block;
+ animation: popIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
+ }
+
+ @keyframes popIn {
+ from {
+ transform: scale(0.8);
+ opacity: 0;
+ }
+ to {
+ transform: scale(1);
+ opacity: 1;
+ }
}
/* Ícones pequenos */
@@ -463,15 +595,29 @@