From 38941368c9d90195b348fec068d5f95b48c1248c Mon Sep 17 00:00:00 2001 From: SrIzan10 Date: Mon, 28 Jun 2021 09:25:52 +0200 Subject: [PATCH] Added API keys for the monitors --- CNAME | 1 + LICENSE | 21 +++ index.html | 55 ++++++++ mixflix.png | Bin 0 -> 48687 bytes script.js | 319 ++++++++++++++++++++++++++++++++++++++++++++++ style-dark.css | 331 ++++++++++++++++++++++++++++++++++++++++++++++++ style-light.css | 329 +++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 1056 insertions(+) create mode 100644 CNAME create mode 100644 LICENSE create mode 100644 index.html create mode 100644 mixflix.png create mode 100644 script.js create mode 100644 style-dark.css create mode 100644 style-light.css diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..af50d20 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +status.mixflix.org \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dbd827d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Roger Stringer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/index.html b/index.html new file mode 100644 index 0000000..e307f82 --- /dev/null +++ b/index.html @@ -0,0 +1,55 @@ + + + + + + + + + + + Mix-Flix Status + + + + + +
+
+

Mix-Flix Status Page

+
+
+
+

+
+
+ +
+ +
+ +
+ +
+ + + + + + + + + + + +
Name1 Day7 Days14 Days30 Days
+
+ + + + + + diff --git a/mixflix.png b/mixflix.png new file mode 100644 index 0000000000000000000000000000000000000000..e7067ee9fb32b511127ff365e78902bfdfcbe216 GIT binary patch literal 48687 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 sLk+@h4nhs4Wi)gU%(BBlP5= config.uptimerobot.response_times_warning) { + check.class = 'label-warning'; + check.text = 'degraded performance'; + } + return check; + } + + function _uptimeRobotSetData(monitor) { + const clean_name = monitor.friendly_name.replace(/[^0-9a-zA-Z ]/g, '').replace(/ /g, ''); + const uptime_ratio = monitor.custom_uptime_ratio.split('-'); + const uptimeForever = monitor.all_time_uptime_ratio; + + $('#services').append('
' + + '' + monitor.text + '' + + '' + monitor.friendly_name + '' + + '
' + + '' + + '
' + + '
'); + } + + function _uptimeRobotSetGraph(monitor) { + $('#statistics tbody').append('' + + '' + monitor.friendly_name + '' + + '' + monitor.uptime_ratio[0] + '%' + + '' + monitor.uptime_ratio[1] + '%' + + '' + monitor.uptime_ratio[2] + '%' + + '' + monitor.uptime_ratio[3] + '%' + + ''); + + const gph_data = { + type: 'line', + data: { + labels: [], + datasets: [{ + label: 'Response Time (ms)', + backgroundColor: "rgba(255,255,255,0.5)", + data: [], + }] + }, + options: { + legend: { + labels: { + fontColor: '#ddd' + } + }, + scales: { + yAxes: [{ + ticks: { + fontColor: '#ddd' + } + }], + xAxes: [{ + display: false, + ticks: { + display: false, + scaleFontSize: 0 + } + }] + } + } + }; + + if (config.theme == 'light') { + gph_data.options.scales.yAxes[0].ticks.fontColor = ''; + gph_data.options.legend.labels.fontColor = ''; + gph_data.data.datasets[0].backgroundColor = 'rgba(0,0,0,0.5)'; + } + + monitor.response_times.forEach(function (datapoint) { + gph_data.data.labels.push(formatDate(new Date(datapoint.datetime * 1000), 'D d M Y H:i:s (T)')); + gph_data.data.datasets[0].data.push(datapoint.value); + }); + + gph_data.data.labels = gph_data.data.labels.reverse(); + gph_data.data.datasets[0].data = gph_data.data.datasets[0].data.reverse(); + + const gph_ctx = $('#' + monitor.clean_name + '_cvs'); + const gph = new Chart(gph_ctx, gph_data); + } + + function UptimeRobot(data) { + data.monitors = data.monitors.map(_uptimeRobotSetStatus); + + var status = data.monitors.reduce(function (status, check) { + return check.status !== 2 ? 'danger' : 'operational'; + }, 'operational'); + + if (!$('#panel').data('incident')) { + $('#panel').attr('class', (status === 'operational' ? 'panel-success' : 'panel-warning') ); + $('#paneltitle').html(status === 'operational' ? 'All systems are operational.' : 'One or more systems inoperative'); + } + + data.monitors.forEach(function (item) { + item.clean_name = item.friendly_name.replace(/[^0-9a-zA-Z ]/g, '').replace(/ /g, ''); + item.uptime_ratio = item.custom_uptime_ratio.split('-'); + item.uptime_ratio.push(item.all_time_uptime_ratio); + _uptimeRobotSetData(item); + _uptimeRobotSetGraph(item); + }); + }; + + var get_today = new Date(); + get_today.setDate(get_today.getDate() - 14); + var scope_date = get_today.toISOString(); + + $.getJSON('https://api.github.com/repos/' + config.github.org + '/' + config.github.repo + '/issues?state=all&since=' + scope_date).done(GitHubEntry); + + var maintainIssues = []; + var incidentIssues = []; + + function GitHubEntry(issues) { + issues.forEach(function (issue) { + if (issue.labels.length > 0) { + issue.labels.forEach(function (label) { + if (label.name == 'maintenance' && issue.state == 'open') maintainIssues.push(issue); + else incidentIssues.push(issue); + }); + } + }); + _gitHubIncidents(incidentIssues); + _gitHubMaintainance(); + } + + function _gitHubMaintainance() { + if (maintainIssues.length > 0) { + maintainIssues.forEach(function (issue) { + $('#maintenance').append('
' + + '

' + issue.title + '

' + + '

' + issue.body + '

' + + '
'); + }); + } + else { + $('#maintenance').append('
' + + '

' + + '

There is currently no planned maintenance

' + + '
'); + } + } + + function _gitHubIncidents(issues) { + issues.forEach(function (issue) { + var status = issue.labels.reduce(function (status, label) { + if (/^status:/.test(label.name)) { + return label.name.replace('status:', ''); + } else { + return status; + } + }, 'operational'); + + var systems = issue.labels.filter(function (label) { + return /^system:/.test(label.name); + }).map(function (label) { + return label.name.replace('system:', '') + }); + + if (issue.state === 'open') { + $('#panel').data('incident', 'true'); + $('#panel').attr('class', (status !== 'operational' ? 'panel-danger' : 'panel-warning') ); + $('#paneltitle').html('' + issue.title + ''); + } + + var html = '
\n'; + html += '
\n'; + + if (issue.state === 'closed') { + html += '
'; + } else if (issue.state === 'open' && status === 'operational'){ + html += '
'; + } else { + html += '
'; + } + + html += '
\n'; + html += '' + formatDate(new Date(issue.created_at), 'D d M Y H:i:s (T)') + '\n'; + + if (issue.state === 'closed') { + html += 'closed'; + } else { + html += 'open\n'; + } + + for (var i = 0; i < systems.length; i++) { + html += '' + systems[i] + ''; + } + + html += '

' + issue.title + '

\n'; + html += '
\n'; + html += '

' + issue.body + '

\n'; + + if (issue.state === 'open' && issue.created_at !== issue.updated_at) { + html += '

Last update ' + formatDate(new Date(issue.updated_at), 'D d M Y H:i:s (T)') + '

' + } + + if (issue.state === 'closed') { + html += '

Updated ' + formatDate(new Date(issue.closed_at), 'D d M Y H:i:s (T)') + '
'; + html += 'The system is back in normal operation.

'; + } + html += '
'; + html += '
'; + html += '
'; + $('#incidents').append(html); + }); + }; + + function formatDate(x, y) { + var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var fullMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + var days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; + var fullDays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; + var suffix = ['st', 'nd', 'rd', 'th']; + var z = { + a: (x.getHours() >= 12) ? 'pm' : 'am', + A: (x.getHours() >= 12) ? 'PM' : 'AM', + B: Math.floor((((x.getUTCHours() + 1) % 24) + x.getUTCMinutes() / 60 + x.getUTCSeconds() / 3600) * 1000 / 24), + c: x.toISOString(), + m: (x.getHours().toString().length == 2) ? x.getMonth() + 1 : '0' + x.getMonth() + 1, + M: months[x.getMonth()], + n: x.getMonth() + 1, + L: parseInt(((x.getFullYear() % 4 == 0) && (x.getFullYear() % 100 != 0)) || (x.getFullYear() % 400 == 0)), + F: fullMonths[x.getMonth()], + d: (x.getDate().toString().length == 2) ? x.getDate() : '0' + x.getDate(), + j: x.getDate(), + D: days[x.getDay()], + l: fullDays[x.getDay()], + N: x.getDay() + 1, + w: x.getDay(), + h: (x.getHours().toString().length == 2) ? ((x.getHours() + 11) % 12 + 1) : '0' + ((x.getHours() + 11) % 12 + 1), + H: (x.getHours().toString().length == 2) ? x.getHours() : '0' + x.getHours(), + G: x.getHours(), + g: ((x.getHours() + 11) % 12 + 1), + O: x.toString().match(/([-\+][0-9]+)\s/)[1], + i: (x.getMinutes().toString().length == 2) ? x.getMinutes() : '0' + x.getMinutes(), + s: (x.getSeconds().toString().length == 2) ? x.getSeconds() : '0' + x.getSeconds(), + T: x.toString().replace(/.*[(](.*)[)].*/, '$1'), + e: x.toString().replace(/.*[(](.*)[)].*/, '$1'), + Y: x.getFullYear(), + y: x.getYear(), + u: 000000, + v: 000000, + z: Math.round((new Date().setHours(23) - new Date(x.getYear() + 1900, 0, 1, 0, 0, 0)) / 1000 / 60 / 60 / 24) - 1, + U: Math.round(x.getTime() / 1000), + }; + y = y.replace(/(a+|A+|B+|c+|m+|M+|n+|L+|F+|d+|D+|j+|l+|n+|N+|w+|g+|G+|O+|e+|u+|v+|z+|U+|h+|H+|i+|s+|T+|Y+|y+)/g, function (v) { + var t = eval('z.' + v.slice(-1)); + return t; + }); + + return y.replace(/(y+)/g, function (v) { + return x.getFullYear().toString().slice(-v.length) + }); + }; +}); diff --git a/style-dark.css b/style-dark.css new file mode 100644 index 0000000..9347854 --- /dev/null +++ b/style-dark.css @@ -0,0 +1,331 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700"); + +.timeline-centered .timeline-entry .timeline-entry-inner:after, +.timeline-centered .timeline-entry:after, +.timeline-centered:after { + clear: both +} + +img { + vertical-align: middle +} + +.img-responsive { + display: block; + height: auto; + max-width: 100% +} + +.img-rounded { + border-radius: 3px +} + +.img-thumbnail { + background-color: #fff; + border: 1px solid #ededf0; + border-radius: 3px; + display: inline-block; + height: auto; + line-height: 1.428571429; + max-width: 100%; + moz-transition: all .2s ease-in-out; + o-transition: all .2s ease-in-out; + padding: 2px; + transition: all .2s ease-in-out; + webkit-transition: all .2s ease-in-out +} + +.img-circle { + border-radius: 50% +} + +.timeline-centered { + position: relative; + margin-bottom: 30px +} + +.timeline-centered:after, +.timeline-centered:before { + content: " "; + display: table; +} + +.timeline-centered:before { + content: ''; + position: absolute; + display: block; + width: 4px; + background: #67696c; + top: 20px; + bottom: 20px; + margin-left: 30px +} + +.timeline-centered .timeline-entry .timeline-entry-inner:after, +.timeline-centered .timeline-entry .timeline-entry-inner:before, +.timeline-centered .timeline-entry:after, +.timeline-centered .timeline-entry:before { + content: " "; + display: table +} + +.timeline-centered .timeline-entry { + position: relative; + margin-top: 5px; + margin-left: 30px; + margin-bottom: 10px; + clear: both +} + +.timeline-centered .timeline-entry.begin { + margin-bottom: 0 +} + +.timeline-centered .timeline-entry.left-aligned { + float: left +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner { + margin-left: 0; + margin-right: -18px +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-time { + left: auto; + right: -100px; + text-align: left +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-icon { + float: right +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-label { + margin-left: 0; + margin-right: 70px +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-label:after { + left: auto; + right: 0; + margin-left: 0; + margin-right: -9px; + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg) +} + +.timeline-centered .timeline-entry .timeline-entry-inner { + position: relative; + margin-left: -20px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time { + position: absolute; + left: -100px; + text-align: right; + padding: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span { + display: block +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span:first-child { + font-size: 15px; + font-weight: 700 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span:last-child { + font-size: 12px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon { + background: #f0a724; + color: #ddd; + display: block; + width: 40px; + height: 40px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + text-align: center; + -moz-box-shadow: 0 0 0 5px #67696c; + -webkit-box-shadow: 0 0 0 5px #67696c; + box-shadow: 0 0 0 5px #67696c; + line-height: 40px; + font-size: 15px; + float: left +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-primary { + background-color: #303641; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-secondary { + background-color: #ee4749; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-success { + background-color: #00a651; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-info { + background-color: #21a9e1; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-warning { + background-color: #fad839; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-danger { + background-color: #cc2424; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label { + position: relative; + background: #4a4c51; + padding: 1em; + margin-left: 60px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label:after { + content: ''; + display: block; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-width: 9px 9px 9px 0; + border-color: transparent #4a4c51 transparent transparent; + left: 0; + top: 10px; + margin-left: -9px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2, +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label p { + color: #ddd; + font-family: "Noto Sans", sans-serif; + font-size: 12px; + margin: 0; + line-height: 1.428571429 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label p+p { + margin-top: 15px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 { + font-size: 16px; + margin-bottom: 10px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 a { + color: #303641 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 span { + -webkit-opacity: .6; + -moz-opacity: .6; + opacity: .6; + -ms-filter: alpha(opacity=60); + filter: alpha(opacity=60) +} + +body { + font-size 15px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #ffffff; + background-color: #36393e +} + +.panel-heading { + border:unset +} + +.panel-success>.panel-heading { + color: #ffffff; + background-color: #43ac6a; + border-color: unset; + border-radius: .5rem +} + +.panel-warning>.panel-heading { + color: #fff; + background-color: #f0a724; + border: unset; + border-radius: .5rem +} +/* ALT Option ffe335 - more vibrant yellow, background color font */ + +.panel-danger>.panel-heading { + color: #ffffff; + background-color: #f04124; + border-color: unset; + border-radius: .5rem +} + +.badge { + font-weight: 300; + margin: 2px +} + +.badge.label-success { + background-color: #43ac6a +} +.badge.label-warning { + background-color:#f0a724 +} +.badge.label-danger { + background-color:#f04124 +} + +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + font-weight: 300 +} + +.list-group-item { + background-color: #4a4c51; + border: 1px solid #ddd; + padding: 8px 15px +} + +a { + color: #fff +} + +a:hover { + color: #ddd +} + +.table { + margin-bottom: unset; +} + +.table-responsive { + background-color: #4a4c51; + border: 1px solid #ddd; + border-radius: .5rem; + margin-bottom: 20px +} diff --git a/style-light.css b/style-light.css new file mode 100644 index 0000000..197da6e --- /dev/null +++ b/style-light.css @@ -0,0 +1,329 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700"); + +.timeline-centered .timeline-entry .timeline-entry-inner:after, +.timeline-centered .timeline-entry:after, +.timeline-centered:after { + clear: both +} + +img { + vertical-align: middle +} + +.img-responsive { + display: block; + height: auto; + max-width: 100% +} + +.img-rounded { + border-radius: 3px +} + +.img-thumbnail { + background-color: #fff; + border: 1px solid #ededf0; + border-radius: 3px; + display: inline-block; + height: auto; + line-height: 1.428571429; + max-width: 100%; + moz-transition: all .2s ease-in-out; + o-transition: all .2s ease-in-out; + padding: 2px; + transition: all .2s ease-in-out; + webkit-transition: all .2s ease-in-out +} + +.img-circle { + border-radius: 50% +} + +.timeline-centered { + position: relative; + margin-bottom: 30px +} + +.timeline-centered:after, +.timeline-centered:before { + content: " "; + display: table +} + +.timeline-centered:before { + content: ''; + position: absolute; + display: block; + width: 4px; + background: #f5f5f6; + top: 20px; + bottom: 20px; + margin-left: 30px +} + +.timeline-centered .timeline-entry .timeline-entry-inner:after, +.timeline-centered .timeline-entry .timeline-entry-inner:before, +.timeline-centered .timeline-entry:after, +.timeline-centered .timeline-entry:before { + content: " "; + display: table +} + +.timeline-centered .timeline-entry { + position: relative; + margin-top: 5px; + margin-left: 30px; + margin-bottom: 10px; + clear: both +} + +.timeline-centered .timeline-entry.begin { + margin-bottom: 0 +} + +.timeline-centered .timeline-entry.left-aligned { + float: left +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner { + margin-left: 0; + margin-right: -18px +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-time { + left: auto; + right: -100px; + text-align: left +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-icon { + float: right +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-label { + margin-left: 0; + margin-right: 70px +} + +.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-label:after { + left: auto; + right: 0; + margin-left: 0; + margin-right: -9px; + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg) +} + +.timeline-centered .timeline-entry .timeline-entry-inner { + position: relative; + margin-left: -20px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time { + position: absolute; + left: -100px; + text-align: right; + padding: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span { + display: block +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span:first-child { + font-size: 15px; + font-weight: 700 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-time>span:last-child { + font-size: 12px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon { + background: #fff; + color: #737881; + display: block; + width: 40px; + height: 40px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + text-align: center; + -moz-box-shadow: 0 0 0 5px #f5f5f6; + -webkit-box-shadow: 0 0 0 5px #f5f5f6; + box-shadow: 0 0 0 5px #f5f5f6; + line-height: 40px; + font-size: 15px; + float: left +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-primary { + background-color: #303641; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-secondary { + background-color: #ee4749; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-success { + background-color: #00a651; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-info { + background-color: #21a9e1; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-warning { + background-color: #fad839; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-danger { + background-color: #cc2424; + color: #fff +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label { + position: relative; + background: #f5f5f6; + padding: 1em; + margin-left: 60px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label:after { + content: ''; + display: block; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-width: 9px 9px 9px 0; + border-color: transparent #f5f5f6 transparent transparent; + left: 0; + top: 10px; + margin-left: -9px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2, +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label p { + color: #737881; + font-family: "Noto Sans", sans-serif; + font-size: 12px; + margin: 0; + line-height: 1.428571429 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label p+p { + margin-top: 15px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 { + font-size: 16px; + margin-bottom: 10px +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 a { + color: #303641 +} + +.timeline-centered .timeline-entry .timeline-entry-inner .timeline-label h2 span { + -webkit-opacity: .6; + -moz-opacity: .6; + opacity: .6; + -ms-filter: alpha(opacity=60); + filter: alpha(opacity=60) +} + +body { + font-size 15px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.panel-heading { + border:unset +} + +.panel-success>.panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: unset; + border-radius: .5rem +} + +.panel-warning>.panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border: unset; + border-radius: .5rem +} + +.panel-danger>.panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: unset; + border-radius: .5rem +} + +.badge { + font-weight: 300; + margin: 2px +} + +.badge.label-success { + color: #3c763d; + background-color: #dff0d8 +} +.badge.label-warning { + color: #8a6d3b; + background-color: #fcf8e3 +} +.badge.label-danger { + color: #a94442; + background-color: #f2dede +} + +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + font-weight: 300 +} + +.list-group-item { + border: 1px solid #ddd; + padding: 8px 15px +} + +a { + color: #000 +} + +a:hover { + color: #222 +} + +.table { + margin-bottom: unset; +} + +.table-responsive { + border: 1px solid #ddd; + border-radius: .5rem; + margin-bottom: 20px +}