diff options
Diffstat (limited to 'static/css')
-rw-r--r-- | static/css/style.css | 394 |
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; +} |