diff --git a/frontend/public/index.html b/frontend/public/index.html
index 19a00f8..80af791 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -19,31 +19,35 @@
-
×
-
Add New Family Location
-
-
+
+
diff --git a/frontend/public/style.css b/frontend/public/style.css
index 29ba7fd..268ce11 100644
--- a/frontend/public/style.css
+++ b/frontend/public/style.css
@@ -97,7 +97,7 @@
flex-direction: column;
}
- /* Modal styles */
+ /* Modern Modal styles with animations */
.modal {
display: none;
position: fixed;
@@ -106,133 +106,247 @@
top: 0;
width: 100%;
height: 100%;
- background-color: rgba(0, 0, 0, 0.5);
+ background-color: rgba(0, 0, 0, 0.6);
+ backdrop-filter: blur(4px);
+ animation: fadeIn 0.3s ease-out;
+ }
+
+ @keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+ }
+
+ @keyframes slideUp {
+ from {
+ transform: translateY(50px);
+ opacity: 0;
+ }
+ to {
+ transform: translateY(0);
+ opacity: 1;
+ }
}
.modal-content {
- background-color: #fefefe;
- margin: 5% auto;
- padding: 30px;
- border-radius: 10px;
+ background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
+ margin: 8% auto;
+ padding: 0;
+ border-radius: 20px;
width: 90%;
- max-width: 500px;
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ max-width: 480px;
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1);
+ animation: slideUp 0.4s ease-out;
+ overflow: hidden;
+ }
+
+ .modal-header {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ padding: 24px 30px;
+ color: white;
+ position: relative;
}
.modal-content h2 {
- margin-bottom: 20px;
- color: #2c3e50;
+ margin: 0;
+ font-size: 24px;
+ font-weight: 600;
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ }
+
+ .modal-content h2::before {
+ content: "📍";
+ font-size: 28px;
}
.close {
- color: #aaa;
- float: right;
- font-size: 28px;
- font-weight: bold;
- line-height: 20px;
+ position: absolute;
+ right: 20px;
+ top: 50%;
+ transform: translateY(-50%);
+ color: rgba(255, 255, 255, 0.9);
+ font-size: 32px;
+ font-weight: 300;
+ line-height: 1;
cursor: pointer;
+ transition: all 0.3s ease;
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
}
- .close:hover,
- .close:focus {
- color: #000;
+ .close:hover {
+ background-color: rgba(255, 255, 255, 0.2);
+ transform: translateY(-50%) rotate(90deg);
+ color: white;
+ }
+
+ .modal-body {
+ padding: 30px;
}
.form-group {
- margin-bottom: 15px;
+ margin-bottom: 20px;
}
.form-group label {
display: block;
- margin-bottom: 5px;
- font-weight: bold;
- color: #2c3e50;
+ margin-bottom: 8px;
+ font-weight: 600;
+ color: #2d3748;
+ font-size: 14px;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ }
+
+ .form-group label::before {
+ content: "•";
+ color: #667eea;
+ font-size: 20px;
}
.form-group input {
width: 100%;
- padding: 10px;
- border: 1px solid #ddd;
- border-radius: 5px;
- font-size: 14px;
+ padding: 12px 16px;
+ border: 2px solid #e2e8f0;
+ border-radius: 12px;
+ font-size: 15px;
+ transition: all 0.3s ease;
+ background-color: white;
+ font-family: inherit;
}
.form-group input:focus {
outline: none;
- border-color: #3498db;
+ border-color: #667eea;
+ box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1);
+ transform: translateY(-1px);
+ }
+
+ .form-group input:hover {
+ border-color: #cbd5e0;
}
.form-actions {
display: flex;
- gap: 10px;
- margin-top: 20px;
+ gap: 12px;
+ margin-top: 28px;
+ padding-top: 20px;
+ border-top: 2px solid #f1f3f5;
}
.form-actions button {
flex: 1;
- padding: 10px;
+ padding: 14px 24px;
border: none;
- border-radius: 5px;
+ border-radius: 12px;
cursor: pointer;
- font-weight: bold;
+ font-weight: 600;
+ font-size: 15px;
+ transition: all 0.3s ease;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
}
.btn-submit {
- background-color: #27ae60;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
.btn-submit:hover {
- background-color: #229954;
+ transform: translateY(-2px);
+ box-shadow: 0 6px 20px rgba(102, 126, 234, 0.5);
+ }
+
+ .btn-submit:active {
+ transform: translateY(0);
+ }
+
+ .btn-submit::before {
+ content: "✓";
+ font-size: 18px;
}
.btn-cancel {
- background-color: #95a5a6;
- color: white;
+ background-color: #e2e8f0;
+ color: #4a5568;
}
.btn-cancel:hover {
- background-color: #7f8c8d;
+ background-color: #cbd5e0;
+ transform: translateY(-2px);
+ }
+
+ .btn-cancel::before {
+ content: "✕";
+ font-size: 18px;
}
.form-message {
- padding: 10px;
- border-radius: 5px;
- margin-bottom: 15px;
+ padding: 14px 18px;
+ border-radius: 12px;
+ margin-bottom: 20px;
text-align: center;
- font-weight: bold;
+ font-weight: 500;
+ animation: slideUp 0.3s ease-out;
+ font-size: 14px;
}
.form-message.success {
- background-color: #d4edda;
+ background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%);
color: #155724;
- border: 1px solid #c3e6cb;
+ border: 2px solid #b1dfbb;
+ box-shadow: 0 4px 12px rgba(39, 174, 96, 0.2);
}
.form-message.error {
- background-color: #f8d7da;
+ background: linear-gradient(135deg, #f8d7da 0%, #f5c6cb 100%);
color: #721c24;
- border: 1px solid #f5c6cb;
+ border: 2px solid #f1b0b7;
+ box-shadow: 0 4px 12px rgba(220, 53, 69, 0.2);
}
.form-message.info {
- background-color: #d1ecf1;
+ background: linear-gradient(135deg, #d1ecf1 0%, #bee5eb 100%);
color: #0c5460;
- border: 1px solid #bee5eb;
+ border: 2px solid #a6d9e3;
+ box-shadow: 0 4px 12px rgba(52, 152, 219, 0.2);
}
- /* Add Family button */
+ /* Add Family button with modern style */
.btn-add-family {
- padding: 10px 15px;
+ padding: 12px 20px;
border: none;
- border-radius: 5px;
- background-color: #27ae60;
+ border-radius: 10px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
cursor: pointer;
- font-weight: bold;
+ font-weight: 600;
margin-left: 8px;
+ transition: all 0.3s ease;
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
}
.btn-add-family:hover {
- background-color: #229954;
+ transform: translateY(-2px);
+ box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
+ }
+
+ .btn-add-family:active {
+ transform: translateY(0);
}
\ No newline at end of file