aboutsummaryrefslogtreecommitdiffstats
path: root/static/css/style.css
diff options
context:
space:
mode:
Diffstat (limited to 'static/css/style.css')
-rw-r--r--static/css/style.css394
1 files changed, 394 insertions, 0 deletions
diff --git a/static/css/style.css b/static/css/style.css
new file mode 100644
index 0000000..a32b5d9
--- /dev/null
+++ b/static/css/style.css
@@ -0,0 +1,394 @@
+body {
+ max-width: 1100px;
+ margin: auto;
+ line-height: 1.6em;
+ font-family: 'IBM Plex Sans', sans-serif;
+ background: #070707;
+ color: #E8F1F2;
+}
+
+footer {
+ text-align: center;
+ margin-bottom: 100px;
+}
+
+a { color: #88B7B5}
+a:hover { color: #FDCFF3 }
+
+header {
+ color: #FDCFF3;
+ padding: 10px;
+ margin: 10px;
+ text-align: center;
+ border-bottom: 2px solid white;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #FDCFF3;
+}
+
+header span {
+ color: #C8B8DB;
+ text-decoration: underline;
+}
+
+.container {
+ /* Add some padding and potentially a max-width for larger screens */
+ padding: 0 20px;
+ max-width: 1000px; /* Example max-width */
+ margin: 0 auto; /* Center the container */
+}
+
+.component-section {
+ margin-bottom: 40px; /* Spacing between component groups */
+ border-bottom: 1px solid #555; /* Subtle divider */
+ padding-bottom: 20px;
+}
+
+.component-section:last-child {
+ border-bottom: none; /* Remove border from the last section */
+}
+
+
+.component-item {
+ margin-bottom: 20px; /* Spacing between individual components */
+ display: flex; /* Use flexbox for layout */
+ align-items: center; /* Vertically center content */
+ flex-wrap: wrap; /* Allow items to wrap on smaller screens*/
+}
+
+.component-item h4 {
+ margin: 0 0 10px 0; /* Spacing below the heading */
+ flex: 1 1 100%; /* Make the heading take full width */
+}
+.component-item p {
+ flex: 1 1 60%; /* Text takes up most of the space*/
+ padding-right: 20px; /* Add some spacing between text and image */
+ margin: 10px;
+}
+
+.component-image {
+ flex: 0 0 30%; /* Image takes up less space, doesn't grow */
+ width: auto;
+ margin-right: auto;
+ margin-left: auto; /* Push image to the right */
+ display: block;
+}
+.component-image.half-width {
+ max-width: 45%;
+ margin: 10px;
+}
+.icon {
+ margin-right: 8px;
+ font-size: 1.2em; /* Slightly larger icons */
+}
+
+/* CTA Section Styles */
+.cta-section {
+ text-align: center;
+ padding: 40px 0;
+ background-color: #111; /* Darker background */
+}
+
+.button {
+ display: inline-block;
+ padding: 10px 20px;
+ background-color: #88B7B5;
+ color: #070707;
+ text-decoration: none;
+ border-radius: 5px;
+ margin: 10px;
+ transition: background-color 0.3s ease;
+ border: none;
+ cursor: pointer;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 1em;
+}
+
+.button:hover {
+ background-color: #FDCFF3;
+ color: #000000;
+}
+
+/* Testimonials Section */
+.testimonials {
+ padding: 40px 0;
+ text-align: center;
+}
+.testimonial {
+ margin-bottom: 20px;
+ font-style: italic;
+}
+/* Responsive adjustments */
+@media (max-width: 768px) {
+ .component-item {
+ flex-direction: column; /* Stack items vertically on small screens */
+ text-align: center; /* Center-align text */
+ }
+ .component-image {
+ margin-left: 0; /* Remove margin */
+ max-width: 100%; /* Full-width images */
+ }
+ .component-image.half-width {
+ max-width: 100%; /* Full-width images */
+ }
+ .component-item p {
+ padding-right: 0; /* Remove padding */
+ }
+}
+
+/* Status Indicator */
+.status-container {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.status-light {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ animation: pulse 2s infinite;
+}
+
+.status-light.green {
+ background: #88B7B5;
+ animation: pulse-green 2s infinite;
+}
+
+.status-light.yellow {
+ background: #FDCFF3;
+ animation: pulse-yellow 1s infinite;
+}
+
+.status-light.red {
+ background: #ff4d4d;
+ animation: pulse-red 0.75s infinite;
+}
+
+@keyframes pulse-green {
+ 0% { box-shadow: 0 0 0 0 rgba(136, 183, 181, 0.4); }
+ 100% { box-shadow: 0 0 0 10px rgba(136, 183, 181, 0); }
+}
+
+@keyframes pulse-yellow {
+ 0% { box-shadow: 0 0 0 0 rgba(253, 207, 243, 0.4); }
+ 100% { box-shadow: 0 0 0 10px rgba(253, 207, 243, 0); }
+}
+
+@keyframes pulse-red {
+ 0% { box-shadow: 0 0 0 0 rgba(255, 77, 77, 0.4); }
+ 100% { box-shadow: 0 0 0 10px rgba(255, 77, 77, 0); }
+}
+
+#uptime {
+ color: #88B7B5;
+ font-size: 0.9em;
+}
+
+/* Service Status Styles */
+.service-status {
+ margin-top: 15px;
+ margin-bottom: 15px;
+ padding: 10px 15px;
+ font-size: 0.9em;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ gap: 15px;
+ background-color: rgba(17, 17, 17, 0.5);
+ border-radius: 5px;
+ border-left: 3px solid #333;
+}
+
+.service-item {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.service-item span {
+ color: #88B7B5;
+}
+
+/* Remove unused pill styles */
+.service-up, .service-down {
+ display: none;
+}
+
+/* Chart and Metrics Styles */
+#metrics-container {
+ width: 100%;
+ margin-top: 15px;
+}
+
+.metric-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
+ gap: 20px;
+ width: 100%;
+}
+
+.metric-card {
+ background-color: #111;
+ border-radius: 8px;
+ padding: 15px;
+ border: 1px solid #333;
+ transition: box-shadow 0.3s ease;
+}
+
+.metric-card:hover {
+ box-shadow: 0 0 15px rgba(136, 183, 181, 0.3);
+ border-color: #88B7B5;
+}
+
+.metric-card h5 {
+ margin-top: 0;
+ margin-bottom: 10px;
+ color: #FDCFF3;
+ text-align: center;
+ font-size: 1em;
+}
+
+.chart-container {
+ position: relative;
+ width: 100%;
+ height: 200px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.metric-section-header {
+ grid-column: 1 / -1;
+ margin-top: 15px;
+ margin-bottom: 10px;
+ color: #FDCFF3;
+ border-bottom: 1px solid #333;
+ padding-bottom: 5px;
+}
+
+@media (max-width: 768px) {
+ .metric-grid {
+ grid-template-columns: 1fr; /* Single column on mobile */
+ }
+ .chart-container {
+ height: 180px; /* Slightly smaller on mobile */
+ }
+}
+
+/* Modal Styles */
+.modal {
+ display: none;
+ position: fixed;
+ z-index: 1000;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.8);
+ backdrop-filter: blur(4px);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.modal.show {
+ opacity: 1;
+}
+
+.modal-content {
+ position: relative;
+ background-color: #111;
+ margin: 15% auto;
+ padding: 25px;
+ border: 1px solid #88B7B5;
+ border-radius: 8px;
+ width: 80%;
+ max-width: 500px;
+ box-shadow: 0 4px 20px rgba(136, 183, 181, 0.5);
+ transform: translateY(-20px) scale(0.95);
+ opacity: 0;
+ transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275),
+ opacity 0.3s ease;
+}
+
+.modal.show .modal-content {
+ transform: translateY(0) scale(1);
+ opacity: 1;
+}
+
+@keyframes modalFadeIn {
+ from {opacity: 0; transform: translateY(-20px);}
+ to {opacity: 1; transform: translateY(0);}
+}
+
+.close-button {
+ position: absolute;
+ top: 10px;
+ right: 20px;
+ color: #FDCFF3;
+ font-size: 28px;
+ font-weight: bold;
+ cursor: pointer;
+ transition: color 0.2s, transform 0.2s;
+}
+
+.close-button:hover {
+ color: #ff4d4d;
+ transform: scale(1.1);
+}
+
+.password-input-container {
+ display: flex;
+ gap: 10px;
+ margin: 20px 0;
+}
+
+.password-input-container input {
+ flex: 1;
+ padding: 10px;
+ border-radius: 5px;
+ border: 1px solid #333;
+ background-color: #070707;
+ color: #E8F1F2;
+ font-family: 'IBM Plex Sans', sans-serif;
+ transition: border-color 0.3s, box-shadow 0.3s;
+}
+
+.password-input-container input:focus {
+ outline: none;
+ border-color: #88B7B5;
+ box-shadow: 0 0 8px rgba(136, 183, 181, 0.5);
+}
+
+.button.submit-button {
+ background-color: #88B7B5;
+ transition: background-color 0.3s, transform 0.2s;
+}
+
+.button.submit-button:hover {
+ background-color: #FDCFF3;
+ transform: translateY(-2px);
+}
+
+.button.submit-button:active {
+ transform: translateY(1px);
+}
+
+.error-message {
+ color: #ff4d4d;
+ font-size: 0.9em;
+ margin-top: 10px;
+ min-height: 20px;
+ transition: opacity 0.3s;
+}
+
+/* Enhanced shake animation */
+@keyframes shake {
+ 0%, 100% { transform: translateX(0); }
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
+ 20%, 40%, 60%, 80% { transform: translateX(5px); }
+}
+
+.shake {
+ animation: shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
+}