| @font-face {
font-family: 'OpenSans';
src: url('OpenSans-Light.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-style: normal;
font-weight: 400;
font-display: block;
src: url('/iosevka-term-ss01-regular.ttf') format('truetype');
}
body {
font-family: 'OpenSans', Fallback, sans-serif;
}
.content { vertical-align:top; text-align:center; background:#fffff0; padding:12px; -webkit-border-radius:10px; border-radius:10px; }
.canvas { vertical-align:top; text-align:center; background:#efefd0; padding:12px; -webkit-border-radius:10px; border-radius:10px; }
div.zi {
z-index: 1000
}
td.al {
text-align: left
}
img.tread1 {
margin-left: -6px;
z-index: 10
}
img.tread2 {
margin-left: -6px;
z-index: 9
}
img.zup {
position: relative;
z-index: 11
}
.tab label {
background: #eee;
padding: 10px;
border: 1px solid #ccc;
margin-left: -1px;
position: relative;
left: 1px;
}
.tab [type=radio] {
display: none;
}
.content {
position: absolute;
top: 28px;
left: 0;
background: white;
right: 0;
bottom: 0;
padding: 20px;
border: 1px solid #ccc;
}
.fading-out {
opacity: 0;
}
[type=radio]:checked ~ label {
background: white;
border-bottom: 1px solid white;
z-index: 2;
}
[type=radio]:checked ~ label ~ .content {
z-index: 1;
}
td.waiting {
vertical-align:top;
text-align:left;
color:#000000;
padding:1px;
font-size: 9pt;
font-weight: bold;
border-radius:5px
}
td.waiting_gi {
vertical-align:top;
text-align:left;
color:#000000;
padding:0px;
font-size: 9pt;
font-weight: bold;
border-radius:2px;
}
table.events-table {
border-spacing: 0 10px;
}
table.comp {
border-radius:7px;
width: 100%
}
table.comp_pass {
background:#01ff70;
}
table.comp_fail {
background:#ff4136;
color:#fff;
}
div.ov_good {
background:#2ecc40;
}
div.ov_bad {
background: #ff4136;
color:#fff;
}
span.ov_bad {
color:#fff
}
div.ov_dunno {
background:#d0d0d0;
}
img.deemph {
opacity: 0.6;
}
td.tasks {
vertical-align:top;
text-align:center;
background:#f0f0f0;
color:#000000;
padding:0px;
font-weight: normal;
border-radius:6px;
}
td.ti {
vertical-align: top;
margin-left: 4px;
}
td.atop {
vertical-align: top;
}
td.keepline {
display: inline-flex;
}
td.jumble {
position: relative;
vertical-align: top;
white-space: nowrap;
}
img.saicon {
width: 24px;
height:24px;
padding-right:3px;
}
span.group2 {
vertical-align:middle;
text-align:center;
background:#f0f0f0;
color:#000000;
padding:3px;
font-weight: normal;
-webkit-border-radius:3px;
border-radius:3px;
}
span.stderr {
color: #44f;
}
span.saibuild {
color: #68a;
}
span.tty0 {
color: #884;
}
span.tty1 {
color: #848;
}
span.noscript {
font-size: 200%;
}
span.nowrap {
white-space: pre;
}
div.taskinfo {
vertical-align: top;
position: fixed;
background: #fff;
z-index: 2002;
border-style: solid;
border-width: 3px 16px 0px 16px;
border-color: #fff;
margin-top: -3px;
}
#sai_task_logs_container div.taskinfo.taskstate1, div.taskinfo.taskstate1 { background: #d0d0d0; border-color: #d0d0d0; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate2, div.taskinfo.taskstate2 { background: #a0a0a0; border-color: #a0a0a0; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate3, div.taskinfo.taskstate3 { background: #01ff70; border-color: #01ff70; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate4, div.taskinfo.taskstate4 { background: #ff851b; border-color: #ff851b; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate5, div.taskinfo.taskstate5 { background: #808080; border-color: #808080; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate6, div.taskinfo.taskstate6 { background: #df3030; border-color: #df3030; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate10, div.taskinfo.taskstate10 { background: #ffdc00; border-color: #ffdc00; transition: background-color 500ms linear; }
#sai_task_logs_container div.taskinfo.taskstate6, #sai_task_logs_container div.taskinfo.taskstate6 span.ti1, #sai_task_logs_container div.taskinfo.taskstate6 span.ti5, #sai_task_logs_container div.taskinfo.taskstate6 div.sai_arts,
div.taskinfo.taskstate6, div.taskinfo.taskstate6 span.ti1, div.taskinfo.taskstate6 span.ti5, div.taskinfo.taskstate6 div.sai_arts {
color: #ffffff;
}
#sai_task_logs_container div.taskinfo.taskstate5, #sai_task_logs_container div.taskinfo.taskstate5 span.ti1, #sai_task_logs_container div.taskinfo.taskstate5 span.ti5, #sai_task_logs_container div.taskinfo.taskstate5 div.sai_arts,
div.taskinfo.taskstate5, div.taskinfo.taskstate5 span.ti1, div.taskinfo.taskstate5 span.ti5, div.taskinfo.taskstate5 div.sai_arts {
color: #ffffff;
}
#sai_task_logs_container div.taskinfo.taskstate6 a, #sai_task_logs_container div.taskinfo.taskstate5 a,
div.taskinfo.taskstate6 a, div.taskinfo.taskstate5 a {
color: #ffffff;
}
table.scrollogs {
margin-top: 64px;
}
div.taskstate {
font-weight: normal;
font-size: 7pt;
padding:1px;
margin-right:1px;
border-radius:3px;
white-space: nowrap;
}
div.nailed {
background: #fff;
width:auto;
z-index:1001;
margin-top:-12px;
}
div.undernailed {
position:relative;
top: 0px;
margin-left: 8px;
}
div.evr {
position: absolute;
top: 16px;
left: 16px;
}
div.evr_gi {
display: inline-block;
width: 16px;
height: 16px;
}
div.gi_popup {
box-shadow: 3px 5px 5px 0px #444;
left: 0px;
z-index: -2;
background: #ffe;
opacity: 0.0;
transition: opacity 1s ease;
display: block;
position: absolute;
margin-top: 35px
}
.taskstate0 {
color:#000000;
opacity:0.5;
}
.taskstate1 {
color:#000000;
opacity:0.6;
}
img.ip {
width: 16px;
height: 16px;
vertical-align:middle;
}
img.ip0 {
width: 16px;
height: 16px;
vertical-align:middle;
}
img.ip1 {
width: 18px;
height: 18px;
vertical-align:top;
}
img.ip2 {
width: 28px;
height: 28px;
vertical-align:text-bottom;
}
img.rebuild {
width: 16px;
height: 16px;
vertical-align:middle;
cursor: pointer;
}
img.bico {
width: 12px;
height: 12px;
vertical-align:middle;
}
@keyframes stretch {
0%, 100% {
opacity: 0.8;
}
0% {
opacity: 0.3;
}
}
.taskstate1 {
background: #d0d0d0;
color:#000000;
opacity:1;
transition: background-color 500ms linear;
}
.taskstate2 {
background:#a0a0a0;
color:#000000;
opacity:1;
transition: background-color 500ms linear;
}
.taskstate3 {
background:#01ff70;
color:#003000;
opacity:1;
transition: background-color 500ms linear;
}
@keyframes fadeInOpacity {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.taskstate4 {
background:#ff851b;
color:#300000;
opacity:1;
transition: background-color 500ms linear;
}
.taskstate5 {
background:#808080;
color:#202020;
opacity:1;
transition: background-color 500ms linear;
}
.taskstate6 {
background:#df3030;
color:#ffffff;
opacity:1;
transition: background-color 500ms linear;
}
.taskstate10 {
background:#ffdc00;
color:#302000;
opacity:1;
transition: background-color 500ms linear;
}
div.stats_hidden {
display: none;
}
div.dlogs {
vertical-align: top;
font-size: 11px;
font-family: "Iosevka";
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
-ms-text-size-adjust: none;
text-size-adjust: none;
}
div.dlogsn {
vertical-align: top;
font-size: 11px;
font-family: "Iosevka";
text-align:right;
width: 5em;
margin-top: 0px;
margin-right: 3px;
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
-ms-text-size-adjust: none;
text-size-adjust: none;
}
div.dlogst {
vertical-align: top;
font-size: 11px;
color:#808080;
font-family: "Iosevka";
text-align:right;
width: 5em;
margin-top: 0px;
margin-right: 3px;
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
-ms-text-size-adjust: none;
text-size-adjust: none;
}
div.hide {
display: none;
}
td.hide {
display: none;
}
input.crin {
font-size: 7pt;
width: 60px;
}
input.crinb {
font-size: 7pt;
margin-top: 4px;
}
label {
float: left;
width: 4.5em;
margin-right: 1em;
}
form.login {
width: auto;
color:#808080;
text-align: right;
}
div.login {
display: inline-block;
vertical-align: middle;
font-size: 7pt;
color:#3d9970;
text-align:left;
margin: 0px 16px 0px 16px;
padding: 2px 3px;
border-radius:5px;
}
div.sai_arts {
display: inline-flex;
vertical-align: middle;
font-size: 7pt;
background-color:#ddd;
color:#3d9970;
text-align:left;
margin: 3px 2px;
padding: 2px 3px;
border-radius:5px;
}
span.ti1 {
font-weight: normal;
font-size: 9pt;
color:#000000;
padding:3px;
border-radius:3px;
white-space: nowrap;
}
span.ti2 {
font-weight: normal;
font-size: 7pt;
}
span.ti3 {
font-weight: normal;
font-size: 7pt;
}
span.ti4 {
font-weight: normal;
font-size: 7pt;
}
span.ti5 {
font-weight: normal;
font-size: 7pt;
}
span.e1 {
font-weight: bold;
font-size: 11pt;
}
span.e2 {
font-weight: normal;
font-size: 10pt;
}
span.e3 {
font-weight: normal;
font-size: 8pt;
}
td.e4 {
font-weight: normal;
font-size: 8pt;
text-align: right;
}
td.e6 {
font-weight: normal;
font-size: 6pt;
text-align: right;
}
table.summary {
width: 100%;
padding: 1px;
margin: 1px;
}
img.bsvg {
height: 50px;
width: auto;
padding:3px;
}
div.builder {
display: inline-block;
}
div.sticky {
float: left;
position: absolute;
}
td.topregion {
vertical-align: top
}
div.logo {
display: inline-block;
margin: 3px;
margin-right: 4px;
padding: 2px;
vertical-align: middle;
z-index: 1002;
width: 164px;
height: auto;
font-size: 6pt;
}
img.logo {
width: 158px;
height: auto;
}
span.logo {
margin: 3px;
margin-right: 4px;
padding: 2px;
vertical-align: middle;
z-index: 1002;
width: 164px;
height: auto;
font-size: 7pt;
text-align: left;
}
td.summary {
background: #f8f8f8;
width: 100%;
margin: 4px;
padding: 4px;
}
td.builder-info {
vertical-align: top;
}
td.bn {
font-weight: normal;
font-size: 7pt;
padding: 1px;
position: relative;
}
td.bins {
font-weight: normal;
font-size: 9pt;
text-align: center;
}
td.tn {
font-weight: normal;
font-size: 7pt;
padding-left:0px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
table.nomar {
padding: 0px;
margin: -3px;
width: 100%;
text-align:center;
}
td.nomar {
padding: 0px;
margin: 0px;
}
div.ib {
display: inline-block;
vertical-align:middle;
text-align:left;
line-height: 50%;
float:left;
margin: 0.1em;
font-weight: normal;
font-size: 7pt;
padding: 1.1px 1.5px 1.1px 1.5px;
border-radius:3px;
}
div.ibuil {
display: inline-block;
vertical-align:top;
text-align:left;
line-height: normal;
float:left;
margin: 0.1em;
font-weight: normal;
font-size: 7pt;
background:#c0c0e0;
color:#000000;
padding:3px;
border-radius:10px;
user-select: none;
-webkit-user-select: none;
cursor: pointer;
width: 80px;
}
div.ibuil table {
table-layout: fixed;
}
div.ibuil.power-unmanaged {
border: 2px solid black;
}
div.ibuil.power-stay {
border: 2px solid green;
}
div.ibuil.power-stay-dep {
border: 2px solid blue;
}
div.ibuilctr {
font-weight: normal;
font-size: 9pt;
background:#e0e0ff;
}
div.ibuilctrname {
display: inline-block;
vertical-align:middle;
text-align:left;
line-height: 50%;
float:left;
margin: 0.1em;
font-weight: normal;
font-size: 9pt;
color:#000000;
padding:3px;
}
div.plat {
display: inline-block;
vertical-align:middle;
text-align:left;
line-height: 50%;
float:left;
margin: 0.1em;
font-weight: normal;
font-size: 7pt;
color:#000000;
padding:3px;
border-radius:3px;
}
div.pass {
display: inline-block;
background:#40e040;
}
div.fail {
display: inline-block;
background:#40e040;
}
div.awaiting {
display: inline-block;
}
div.bdr {
display: inline-block;
opacity: 1;
transition: opacity 2s ease;
}
.bdr.offline {
background: #e0e0e0;
color: #666666;
border: 1px solid #b0b0b0;
filter: grayscale(100%);
}
/* Style for the powering-up state */
.powering-up {
position: relative; /* Needed for the ::after pseudo-element */
}
/* The spinner pseudo-element */
.powering-up::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 24px; /* Adjust size as needed */
height: 24px;
margin-top: -12px; /* Half of height */
margin-left: -12px; /* Half of width */
border: 3px solid rgba(0, 0, 0, 0.2);
border-top-color: #007bff; /* Spinner color */
border-radius: 50%;
animation: spin 1s linear infinite;
z-index: 10; /* Ensure it's on top */
}
@keyframes spin { to { transform: rotate(360deg); } }
/* Style for the powering-down state */
.powering-down {
position: relative; /* Needed for the ::after pseudo-element */
}
/* The spinner pseudo-element */
.powering-down::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 24px; /* Adjust size as needed */
height: 24px;
margin-top: -12px; /* Half of height */
margin-left: -12px; /* Half of width */
border: 3px solid rgba(0, 0, 0, 0.2);
border-top-color: #ff4136; /* Spinner color */
border-radius: 50%;
animation: spin 1s linear infinite;
z-index: 10; /* Ensure it's on top */
}
img.branch {
display: inline-block;
float:left;
background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNi43NDkgMjcuMjIyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImIiIHg9Ii0uMDcwOCIgeT0iLS4wNzA4IiB3aWR0aD0iMS4xNDE2IiBoZWlnaHQ9IjEuMTQxNiIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMC4yNTQyNzk1MyIvPgo8L2ZpbHRlcj4KPGZpbHRlciBpZD0iYSIgeD0iLS4wOTA1NjgiIHk9Ii0uMDQ2MjE0IiB3aWR0aD0iMS4xODExIiBoZWlnaHQ9IjEuMDkyNCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMC40Nzk4NDA4OSIvPgo8L2ZpbHRlcj4KPC9kZWZzPgo8bWV0YWRhdGE+CjxyZGY6UkRGPgo8Y2M6V29yayByZGY6YWJvdXQ9IiI+CjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pgo8ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+CjxkYzp0aXRsZS8+CjwvY2M6V29yaz4KPC9yZGY6UkRGPgo8L21ldGFkYXRhPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzAuNzQ3IC02OS40NTQpIj4KPGNpcmNsZSBjeD0iODQuMTIxIiBjeT0iODMuMDIyIiByPSIxMy4zNzQiIGZpbGw9Im5vbmUiLz4KPHBhdGggZD0ibTgzLjc3MyA3MC42MDZjLTEuMTg2MiAwLjAxNTQtMi4zNDE4IDAuODQ2ODgtMi40Nzc0IDEuOTk4OGwtMC4wMTI0IDAuMDQ5MWMtMC4xNDk5IDUuNjExMi0wLjA0NzQgMTEuMjUyLTAuMTExNjIgMTYuODc0IDAuMDU4MSAxLjg3NzctMC40NDMzNyAzLjg0NDEgMC44NjgxNyA1LjIwMTIgMS43NDYyIDEuNzQ0NSA0LjIzMTcgMC40OTM5MyA0LjE0MjQtMi41MTU2IDAuMDQ1NS0wLjkyODQyIDAuMDExNy0xLjQwMiAwLjExMDA3LTMuMjM0OSAxLjUwNTIgMS4xMzQ4IDIuOTYwNCAyLjk5NjYgNC44MTk5IDMuNTIzOCAyLjAzNzEgMC4zMTUyOCAzLjQ3NDgtMi4yMDU1IDIuMzEyLTMuODU1MS0yLjI5OTItMi4yMDI1LTQuODIwMi00LjA1Ny03LjE2Ni02LjIyODYgMC4xMzg5MyA0LjMwOTcgMC4wMTc2LTYuMTQyIDAuMDQ2NS05LjYwNjctMC40MTQzLTEuNTk4LTEuNDg0OS0yLjIxOTYtMi41MzE2LTIuMjA2MXem0wLjE4NDQ5IDExLjg4M2EyLjA3ODkgMi4wNzg5IDAgMCAxIDIuMDc4OSAyLjA3ODkgMi4wNzg5IDIuMDc4OSAwIDAgMS0yLjA3ODkgMi4wNzkgMi4wNzg5IDIuMDc4OSAwIDAgMS0yLjA3ODQtMi4wNzkgMi4wNzg5IDIuMDc4OSAwIDAgMSAyLjA3ODQtMi4wNzg5eiIgZmlsdGVyPSJ1cmwoI2EpIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjI2NDU4cHgiLz4KPHBhdGggZD0ibTgzLjUxOCA3MC4yODNjLTEuMTg2MiAwLjAxNTQtMi4zNDE4IDAuODQ2ODgtMi40Nzc0IDEuOTk4OGwtMC4wMTI0IDAuMDQ5MWMtMC4xNDk5IDUuNjExMi0wLjA0NzQgMTEuMjUyLTAuMTExNjIgMTYuODc0IDAuMDU4MSAxLjg3NzctMC40NDMzNyAzLjg0NDEgMC44NjgxNyA1LjIwMTIgMS43NDYyIDEuNzQ0NSA0LjIzMTcgMC40OTM5MyA0LjE0MjQtMi41MTU2IDAuMDQ1NS0wLjkyODQyIDAuMDExNy0xLjQwMiAwLjExMDA3LTMuMjM0OSAxLjUwNTIgMS4xMzQ4IDIuOTYwNCAyLjk5NjYgNC44MTk5IDMuNTIzOCAyLjAzNzEgMC4zMTUyOCAzLjQ3NDgtMi4yMDU1IDIuMzEyLTMuODU1MS0yLjI5OTItMi4yMDI1LTQuODIwMi00LjA1Ny03LjE2Ni02LjIyODYgMC4xMzg5MyA0LjMwOTcgMC4wMTc2LTYuMTQyIDAuMDQ2NS05LjYwNjctMC40MTQzLTEuNTk4LTEuNDg0OS0yLjIxOTYtMi41MzE2LTIuMjA2MXem0wLjE4NDQ5IDExLjg4M2EyLjA3ODkgMi4wNzg5IDAgMCAxIDIuMDc4OSAyLjA3ODkgMi4wNzg5IDIuMDc4OSAwIDAgMS0yLjA3ODkgMi4wNzkgMi4wNzg5IDIuMDc4OSAwIDAgMS0yLjA3ODQtMi4wNzkgMi4wNzg5IDIuMDc4OSAwIDAgMSAyLjA3ODQtMi4wNzg5eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii4yNjQ1OHB4Ii8+CjxwYXRoIGQ9Im04My43MTYgODAuMThhNC4zMDk3IDQuMzA5NyAwIDAgMC00LjMwOTggNC4zMDk4IDQuMzA5NyA0LjMwOTcgMCAwIDAgNC4zMDk4IDQuMzA5OCA0LjMwOTcgNC4zMDk3IDAgMCAwIDQuMzA5OC00LjMwOTggNC4zMDk3IDQuMzA5NyAwIDAgMC00LjMwOTgtNC4zMDk4em0wLjAzMzYgMi4xMDQ4YTIuMTcxNiAyLjE3MTYgMCAwIDEgMi4xNzE1IDIuMTcxNSAyLjE3MTYgMi4xNzE2IDAgMCAxLTIuMTcxNSAyLjE3MTQgMi4xNzE2IDIuMTcxNiAwIDAgMS0yLjE3MTQtMi4xNzE0IDIuMTcxNiAyLjE3MTYgMCAwIDEgMi4xNzE0LTIuMTcxNXoiIGZpbGw9IiNmZmYiIGZpbHRlcj0idXJsKCNiKSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+CjxwYXRoIGQ9Im04My42NjkgODAuMDYyYTQuMzA5NyA0LjMwOTcgMCAwIDAtNC4zMDk4IDQuMzA5OCA0LjMwOTcgNC4zMDk3IDAgMCAwIDQuMzA5OCA0LjMwOTggNC4zMDk3IDQuMzA5NyAwIDAgMCA0LjMwOTgtNC4zMDk4IDQuMzA5NyA0LjMwOTcgMCAwIDAtNC4zMDk4LTQuMzA5OHptMC4wMzM2IDIuMTA0OGEyLjE3MTYgMi4xNzE2IDAgMCAxIDIuMTcxNSAyLjE3MTQgMi4xNzE2IDIuMTcxNiAwIDAgMS0yLjE3MTUgMi4xNzE0IDIuMTcxNiAyLjE3MTYgMCAwIDEtMi4xNzE0LTIuMTcxNCAyLjE3MTYgMi4xNzE2IDAgMCAxIDIuMTcxNC0yLjE3MTR6IiBmaWxsPSIjZmZmIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjYiLz4KPC9nPgo8L3N2Zz4K");
width:0px;
height:0px;
cursor:pointer;
padding: 0.6em;
background-repeat: no-repeat;
vertical-align:middle;
color: rgba(0, 0, 0, 0);
}
/* The actual colored bar inside the box */
.inst_bar {
background-color: #00afff; /* A nice, high-contrast green */
width: 100%;
position: absolute;
bottom: 0;
left: 0;
transition: height 0.2s ease-out; /* Smoothly animate height changes */
}
@keyframes flash-slow {
50% { opacity: 0.8; }
}
@keyframes flash-medium {
50% { opacity: 0.8; }
}
@keyframes flash-fast {
50% { opacity: 0.8; }
}
.activity-1 {
animation: flash-slow 4s infinite;
}
.activity-2 {
animation: flash-medium 2s infinite;
}
.activity-3 {
animation: flash-fast 1s infinite;
}
.context-menu {
position: absolute;
background-color: #f9f9f9;
font-size: 8pt;
border: 1px solid #ccc;
padding: 5px;
z-index: 3000;
}
.context-menu ul {
list-style: none;
padding: 0;
margin: 0;
}
.context-menu li {
padding: 8px 12px;
cursor: pointer;
}
.context-menu li:hover {
background-color: #f2f2f2;
}
.context-menu li.read-only {
cursor: default;
color: #888;
}
.context-menu li.read-only:hover {
background-color: inherit;
}
.float-right {
float: right;
}
.progress-bar {
width: calc(100% - 10px);
background-color: #f1f1f1;
height: 10px;
border-radius: 5px;
margin-top: 5px;
margin-left: 5px;
margin-right: 5px;
overflow: hidden;
border: 1px solid black;
}
.w-0 { width: 0%; }
.w-5 { width: 5%; }
.w-10 { width: 10%; }
.w-15 { width: 15%; }
.w-20 { width: 20%; }
.w-25 { width: 25%; }
.w-30 { width: 30%; }
.w-35 { width: 35%; }
.w-40 { width: 40%; }
.w-45 { width: 45%; }
.w-50 { width: 50%; }
.w-55 { width: 55%; }
.w-60 { width: 60%; }
.w-65 { width: 65%; }
.w-70 { width: 70%; }
.w-75 { width: 75%; }
.w-80 { width: 80%; }
.w-85 { width: 85%; }
.w-90 { width: 90%; }
.w-95 { width: 95%; }
.w-100 { width: 100%; }
.progress-bar-success {
background-color: #4CAF50; /* green */
height: 10px;
float: left;
}
.progress-bar-pending {
background-color: #ffffff; /* white */
height: 10px;
float: left;
}
.progress-bar-ongoing {
background-color: #000000; /* black */
height: 10px;
float: left;
}
.progress-bar-failed {
background-color: #f44336; /* red */
height: 10px;
}
/* ANSI Color Support */
.ansi-bold { font-weight: bold; }
.ansi-underline { text-decoration: underline; }
.ansi-fg-black { color: var(--term-black, #000); }
.ansi-fg-red { color: var(--term-red, #A00); }
.ansi-fg-green { color: var(--term-green, #0A0); }
.ansi-fg-yellow { color: var(--term-yellow, #A50); }
.ansi-fg-blue { color: var(--term-blue, #55F); }
.ansi-fg-magenta { color: var(--term-magenta, #A0A); }
.ansi-fg-cyan { color: var(--term-cyan, #0AA); }
.ansi-fg-white { color: var(--term-white, #AAA); }
/* Bright colors for bold text */
.ansi-bold .ansi-fg-black { color: var(--term-bold-black, #555); }
.ansi-bold .ansi-fg-red { color: var(--term-bold-red, #F55); }
.ansi-bold .ansi-fg-green { color: var(--term-bold-green, #5F5); }
.ansi-bold .ansi-fg-yellow { color: var(--term-bold-yellow, #FF5); }
.ansi-bold .ansi-fg-blue { color: var(--term-bold-blue, #77F); }
.ansi-bold .ansi-fg-magenta { color: var(--term-bold-magenta, #F5F); }
.ansi-bold .ansi-fg-cyan { color: var(--term-bold-cyan, #5FF); }
.ansi-bold .ansi-fg-white { color: var(--term-bold-white, #FFF); }
.ansi-bg-black { background-color: var(--term-black, #000); }
.ansi-bg-red { background-color: var(--term-red, #A00); }
.ansi-bg-green { background-color: var(--term-green, #0A0); }
.ansi-bg-yellow { background-color: var(--term-yellow, #A50); }
.ansi-bg-blue { background-color: var(--term-blue, #55F); }
.ansi-bg-magenta { background-color: var(--term-magenta, #A0A); }
.ansi-bg-cyan { background-color: var(--term-cyan, #0AA); }
.ansi-bg-white { background-color: var(--term-white, #AAA); }
.step-progress {
display: flex;
width: 16px; /* Match the icon width */
height: 2px;
margin-top: 1px;
}
.step-bar {
flex-grow: 1;
height: 100%;
background-color: white;
margin-right: 1px;
border: solid 1px #a0a0a0;
}
.step-bar:last-child {
margin-right: 0;
}
.step-bar-completed {
background-color: black;
}
.overlay {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 2000;
}
body.overlay-active {
overflow: hidden;
}
.spreadsheet {
margin-top: 2px;
font-size: 7pt;
}
.spreadsheet table {
width: 100%;
border-collapse: collapse;
}
.spreadsheet th, .spreadsheet td {
border: 0px solid #ddd;
padding: 2px;
font-size: 7pt;
text-align: left;
}
.spreadsheet tr {
transition: opacity 3s linear;
}
.spreadsheet th {
background-color: #f2f2f2;
}
.main-container {
display: flex;
height: 100vh;
}
.left-pane {
flex: 1;
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
}
.right-pane {
flex: 0 0 0px;
overflow-x: hidden;
overflow-y: auto;
flex-shrink: 0;
}
.resizer {
width: 5px;
cursor: ew-resize;
background-color: #ccc;
flex-shrink: 0;
}
.step-progress {
display: flex;
align-items: center;
}
.step-block {
width: 8px;
height: 8px;
border: 1px solid #aaa;
margin-right: 2px;
}
.step-done {
background-color: #555;
}
.step-current {
background-color: #aaa;
}
.step-pending {
background-color: #fff;
}
.step-label {
font-size: 7pt;
margin-left: 4px;
}
.resource-bars {
display: flex;
flex-direction: column;
gap: 1px;
margin-top: 2px;
}
.res-bar {
height: 2px;
background-color: rgba(0, 0, 0, 0.2);
border: 1px solid #fff;
width: 100%;
}
.res-bar-inner {
height: 100%;
transition: width 0.2s ease-out;
}
.res-bar-cpu {
background-color: #ff4136; /* Red */
}
.res-bar-ram {
background-color: #0074d9; /* Blue */
}
.res-bar-disk {
background-color: #2ecc40; /* Green */
}
.res-bar.empty {
border: 1px solid #777;
height: 5px;
width: 24px;
margin-bottom: 1px;
}
/* PCON Styles */
.pcon {
margin-bottom: 5px;
padding-left: 5px;
}
.pcon-header {
font-weight: bold;
font-size: 0.5em;
padding: 2px;
background-color: #e0e0e0;
border-radius: 3px;
display: flex;
align-items: center;
}
.pcon-on {
color: #2ecc40; /* Green */
margin-right: 5px;
}
.pcon-off {
color: #aaaaaa; /* Grey */
margin-right: 5px;
}
.pcon-type {
font-weight: normal;
font-size: 0.8em;
color: #666;
margin-left: 5px;
}
.pcon-children {
padding-left: 10px;
border-left: 2px solid #ddd;
margin-top: 2px;
}
.pcon-orphans .pcon-header {
background-color: #ffe0e0;
}
.builder-name-row {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-bottom: 2px;
}
.builder-short-name {
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-grow: 1;
text-align: left;
min-width: 0;
}
.builder-icons {
display: flex;
align-items: center;
flex-shrink: 0;
}
.login-status-container {
margin-top: 6px;
width: 100%;
box-sizing: border-box;
text-align: center;
overflow: visible;
}
.login-status-container:empty {
display: none;
}
.log-segment-wrapper {
margin: 2px 0;
}
.log-segment-body .log-segment-wrapper {
margin-left: 1em;
}
.log-segment-header {
background-color: #f8f9fa;
cursor: pointer;
padding: 1px 2px;
border: 1px solid #ddd;
font-weight: bold;
font-family: 'OpenSans', sans-serif;
font-size: 11px;
margin: 0;
user-select: none;
-webkit-user-select: none;
border-radius: 2px;
}
.log-segment-header.has-error {
background-color: #ffdddd;
}
.log-segment-header.has-warning {
background-color: #ffedcc;
}
.log-segment-header:hover {
background-color: #e9ecef;
}
.log-segment-body {
border-left: 1px solid #ddd;
padding-left: 2px;
margin-left: 2px;
}
.fold-icon {
display: inline-block;
width: 10px;
text-align: center;
}
.sai-pagination {
text-align: center;
margin: 20px 0;
}
.sai-pagination-info {
color: #fff;
margin: 0 15px;
}
.seg-errors-bold {
font-weight: bold;
}
.seg-fail-red {
background-color: red !important;
color: white !important;
}
.seg-header-table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
margin: 0;
padding: 0;
}
.seg-header-table td {
padding: 0;
}
.seg-td-icon {
width: 40px;
text-align: center;
}
.seg-header-table .seg-td-lines, .seg-header-table .seg-td-errors {
width: 100px;
text-align: right;
padding-right: 10px;
}
.seg-td-title {
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
div.power-overview {
padding: 5px 10px;
margin-bottom: 10px;
background: rgba(0,0,0,0.05);
border-radius: 4px;
display: flex;
align-items: center;
justify-content: space-between;
}
div.power-overview.hidden {
display: none;
}
div.power-text {
font-weight: bold;
font-size: 0.7em;
white-space: nowrap;
margin-right: 10px;
}
canvas.power-graph {
width: 150px;
height: 20px;
display: block;
border: 1px solid #ccc;
background: #fff;
box-sizing: border-box;
}
.pcon-header-on {
background-color: #79da80;
}
.pcon-header-on .pcon-on, .pcon-header-on .pcon-off {
color: #000000;
}
.plat-peer-ip {
font-size: 0.8em;
color: #555;
display: block;
word-break: break-all;
margin-top: 2px;
}
.watchers-row {
display: flex;
flex-wrap: wrap;
padding: 4px;
gap: 8px;
}
.watcher {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.4);
border-radius: 4px;
padding: 2px 4px;
border: 1px solid rgba(0, 0, 0, 0.1);
}
.watcher-icon {
width: 20px;
height: 20px;
margin-right: 4px;
vertical-align: middle;
}
.watcher-metrics {
display: flex;
gap: 4px;
font-size: 8pt;
font-weight: bold;
}
.watcher-metric {
background: rgba(0, 0, 0, 0.05);
padding: 1px 4px;
border-radius: 3px;
}
.watcher-fail {
background: #ff4136;
color: white;
}
.watcher-warn {
background: #ffdc00;
color: black;
}
.taskstate1.prog-0 { background: linear-gradient(90deg, #01ff70 0%, transparent 0%); }
.taskstate1.prog-5 { background: linear-gradient(90deg, #01ff70 5%, transparent 5%); }
.taskstate1.prog-10 { background: linear-gradient(90deg, #01ff70 10%, transparent 10%); }
.taskstate1.prog-15 { background: linear-gradient(90deg, #01ff70 15%, transparent 15%); }
.taskstate1.prog-20 { background: linear-gradient(90deg, #01ff70 20%, transparent 20%); }
.taskstate1.prog-25 { background: linear-gradient(90deg, #01ff70 25%, transparent 25%); }
.taskstate1.prog-30 { background: linear-gradient(90deg, #01ff70 30%, transparent 30%); }
.taskstate1.prog-35 { background: linear-gradient(90deg, #01ff70 35%, transparent 35%); }
.taskstate1.prog-40 { background: linear-gradient(90deg, #01ff70 40%, transparent 40%); }
.taskstate1.prog-45 { background: linear-gradient(90deg, #01ff70 45%, transparent 45%); }
.taskstate1.prog-50 { background: linear-gradient(90deg, #01ff70 50%, transparent 50%); }
.taskstate1.prog-55 { background: linear-gradient(90deg, #01ff70 55%, transparent 55%); }
.taskstate1.prog-60 { background: linear-gradient(90deg, #01ff70 60%, transparent 60%); }
.taskstate1.prog-65 { background: linear-gradient(90deg, #01ff70 65%, transparent 65%); }
.taskstate1.prog-70 { background: linear-gradient(90deg, #01ff70 70%, transparent 70%); }
.taskstate1.prog-75 { background: linear-gradient(90deg, #01ff70 75%, transparent 75%); }
.taskstate1.prog-80 { background: linear-gradient(90deg, #01ff70 80%, transparent 80%); }
.taskstate1.prog-85 { background: linear-gradient(90deg, #01ff70 85%, transparent 85%); }
.taskstate1.prog-90 { background: linear-gradient(90deg, #01ff70 90%, transparent 90%); }
.taskstate1.prog-95 { background: linear-gradient(90deg, #01ff70 95%, transparent 95%); }
.taskstate1.prog-100 { background: linear-gradient(90deg, #01ff70 100%, transparent 100%); }
.taskstate2.prog-0 { background: linear-gradient(90deg, #01ff70 0%, transparent 0%); }
.taskstate2.prog-5 { background: linear-gradient(90deg, #01ff70 5%, transparent 5%); }
.taskstate2.prog-10 { background: linear-gradient(90deg, #01ff70 10%, transparent 10%); }
.taskstate2.prog-15 { background: linear-gradient(90deg, #01ff70 15%, transparent 15%); }
.taskstate2.prog-20 { background: linear-gradient(90deg, #01ff70 20%, transparent 20%); }
.taskstate2.prog-25 { background: linear-gradient(90deg, #01ff70 25%, transparent 25%); }
.taskstate2.prog-30 { background: linear-gradient(90deg, #01ff70 30%, transparent 30%); }
.taskstate2.prog-35 { background: linear-gradient(90deg, #01ff70 35%, transparent 35%); }
.taskstate2.prog-40 { background: linear-gradient(90deg, #01ff70 40%, transparent 40%); }
.taskstate2.prog-45 { background: linear-gradient(90deg, #01ff70 45%, transparent 45%); }
.taskstate2.prog-50 { background: linear-gradient(90deg, #01ff70 50%, transparent 50%); }
.taskstate2.prog-55 { background: linear-gradient(90deg, #01ff70 55%, transparent 55%); }
.taskstate2.prog-60 { background: linear-gradient(90deg, #01ff70 60%, transparent 60%); }
.taskstate2.prog-65 { background: linear-gradient(90deg, #01ff70 65%, transparent 65%); }
.taskstate2.prog-70 { background: linear-gradient(90deg, #01ff70 70%, transparent 70%); }
.taskstate2.prog-75 { background: linear-gradient(90deg, #01ff70 75%, transparent 75%); }
.taskstate2.prog-80 { background: linear-gradient(90deg, #01ff70 80%, transparent 80%); }
.taskstate2.prog-85 { background: linear-gradient(90deg, #01ff70 85%, transparent 85%); }
.taskstate2.prog-90 { background: linear-gradient(90deg, #01ff70 90%, transparent 90%); }
.taskstate2.prog-95 { background: linear-gradient(90deg, #01ff70 95%, transparent 95%); }
.taskstate2.prog-100 { background: linear-gradient(90deg, #01ff70 100%, transparent 100%); }
.taskstate6.prog-0 { background: linear-gradient(90deg, #df3030 0%, transparent 0%); }
.taskstate6.prog-5 { background: linear-gradient(90deg, #df3030 5%, transparent 5%); }
.taskstate6.prog-10 { background: linear-gradient(90deg, #df3030 10%, transparent 10%); }
.taskstate6.prog-15 { background: linear-gradient(90deg, #df3030 15%, transparent 15%); }
.taskstate6.prog-20 { background: linear-gradient(90deg, #df3030 20%, transparent 20%); }
.taskstate6.prog-25 { background: linear-gradient(90deg, #df3030 25%, transparent 25%); }
.taskstate6.prog-30 { background: linear-gradient(90deg, #df3030 30%, transparent 30%); }
.taskstate6.prog-35 { background: linear-gradient(90deg, #df3030 35%, transparent 35%); }
.taskstate6.prog-40 { background: linear-gradient(90deg, #df3030 40%, transparent 40%); }
.taskstate6.prog-45 { background: linear-gradient(90deg, #df3030 45%, transparent 45%); }
.taskstate6.prog-50 { background: linear-gradient(90deg, #df3030 50%, transparent 50%); }
.taskstate6.prog-55 { background: linear-gradient(90deg, #df3030 55%, transparent 55%); }
.taskstate6.prog-60 { background: linear-gradient(90deg, #df3030 60%, transparent 60%); }
.taskstate6.prog-65 { background: linear-gradient(90deg, #df3030 65%, transparent 65%); }
.taskstate6.prog-70 { background: linear-gradient(90deg, #df3030 70%, transparent 70%); }
.taskstate6.prog-75 { background: linear-gradient(90deg, #df3030 75%, transparent 75%); }
.taskstate6.prog-80 { background: linear-gradient(90deg, #df3030 80%, transparent 80%); }
.taskstate6.prog-85 { background: linear-gradient(90deg, #df3030 85%, transparent 85%); }
.taskstate6.prog-90 { background: linear-gradient(90deg, #df3030 90%, transparent 90%); }
.taskstate6.prog-95 { background: linear-gradient(90deg, #df3030 95%, transparent 95%); }
.taskstate6.prog-100 { background: linear-gradient(90deg, #df3030 100%, transparent 100%); }
.taskstate.has_runs {
border: 1px solid black;
margin: 0px;
position: relative;
z-index: 10;
}
.taskstate.has_runs:hover {
z-index: 1001;
opacity: 1.0 !important;
}
.runs-popup {
display: none;
position: absolute;
background: #ccc;
border: 1px solid black;
padding: 5px;
z-index: 2000;
opacity: 1.0 !important;
box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
}
.taskstate:hover {
opacity: 1.0 !important;
}
.taskstate:hover .runs-popup {
display: block;
}
.runs-popup table {
border-collapse: collapse;
}
.runs-popup td {
padding: 2px 5px;
white-space: nowrap;
}
.runs-header-container {
margin-top: 4px;
}
.runs-table {
border-collapse: separate;
border-spacing: 4px 0px;
}
.runs-table td {
text-align: center;
padding: 0px 2px;
}
.runs-popup table {
border-collapse: collapse;
}
.runs-popup td {
padding: 2px 8px;
text-align: left;
}
.run-current-decal {
border: 2px solid #000;
position: relative;
border-radius: 4px;
display: inline-block;
margin-right: 6px;
margin-bottom: 6px;
}
.run-decal {
position: relative;
border-radius: 4px;
display: inline-block;
border: 1px solid #bbb;
margin-right: 6px;
margin-bottom: 6px;
}
.runs-time-cell {
white-space: nowrap;
}
div.ibuil.vm-builder {
background: #e6ce8a;
}
.sai-terminal {
--term-bg: #1e1e1e;
--term-fg: #00ff00;
--term-out: #ddd;
--term-cursor-bg: rgba(0, 255, 0, 0.7);
--term-cursor-fg: #1e1e1e;
--term-title-bg: #333;
--term-title-fg: #fff;
--term-border: #555;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 600px;
height: 400px;
background: var(--term-bg);
color: var(--term-fg);
font-family: 'Iosevka', monospace;
font-size: 14px;
display: flex;
flex-direction: column;
border: 2px solid var(--term-border);
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.5);
z-index: 9999;
resize: both;
overflow: hidden;
}
.sai-terminal.theme-light {
--term-bg: #f5f5f5;
--term-fg: #000;
--term-out: #333;
--term-cursor-bg: rgba(0, 0, 0, 0.5);
--term-cursor-fg: #fff;
--term-title-bg: #ddd;
--term-title-fg: #000;
--term-border: #aaa;
--term-blue: #00A;
--term-bold-blue: #55F;
}
.sai-terminal-titlebar {
background: var(--term-title-bg);
color: var(--term-title-fg);
padding: 5px 10px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: move;
user-select: none;
font-family: sans-serif;
border-bottom: 1px solid var(--term-border);
}
.sai-terminal-burger {
background: transparent;
border: none;
color: inherit;
font-size: 16px;
cursor: pointer;
margin-right: 8px;
padding: 2px 6px;
}
.sai-terminal-burger:hover {
background: rgba(128, 128, 128, 0.3);
border-radius: 3px;
}
.sai-terminal-menu {
position: absolute;
top: 30px;
left: 10px;
background: var(--term-bg);
border: 1px solid var(--term-border);
border-radius: 4px;
padding: 5px 0;
box-shadow: 0 2px 10px rgba(0,0,0,0.5);
z-index: 10000;
display: none;
min-width: 120px;
font-family: sans-serif;
color: var(--term-out);
}
.sai-terminal-menu.show {
display: block;
}
.sai-terminal-menu-item {
padding: 5px 15px;
cursor: pointer;
}
.sai-terminal-menu-item:hover {
background: var(--term-border);
}
.sai-terminal-title {
font-weight: bold;
}
.sai-terminal-content {
flex-grow: 1;
display: flex;
flex-direction: column;
padding: 10px;
overflow: hidden;
position: relative;
}
.sai-terminal-loader {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #333;
display: flex;
justify-content: center;
align-items: center;
z-index: 100;
}
.sai-terminal-spinner {
width: 40px;
height: 40px;
border: 4px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #fff;
animation: sai-spin 1s ease-in-out infinite;
}
@keyframes sai-spin {
to { transform: rotate(360deg); }
}
.sai-terminal-output {
flex-grow: 1;
overflow: hidden;
margin: 0;
white-space: pre;
color: var(--term-out);
line-height: 16px;
}
.sai-terminal-input {
background: transparent;
color: #fff;
border: none;
outline: none;
font-family: inherit;
font-size: inherit;
margin: 0;
padding: 0;
min-width: 200px;
}
.sai-terminal-err {
color: #ff5555;
}
.builder-delete-btn {
color: #e74c3c;
font-weight: bold;
}
.builder-shell-btn {
color: #3498db;
font-weight: bold;
}
.sai-terminal-close {
background: #e74c3c;
border: none;
color: #fff;
border-radius: 3px;
cursor: pointer;
font-weight: bold;
padding: 2px 6px;
}
.sai-terminal-close:hover {
background: #c0392b;
}
.term-cursor {
background-color: var(--term-cursor-bg);
color: var(--term-cursor-fg);
}
/* Color the avatar silhouette based on grant level */
.login-status-container.grant-admin img,
.login-status-container.grant-admin svg,
.login-status-container.grant-admin .avatar {
filter: drop-shadow(0 0 2px rgba(46, 204, 64, 0.4));
border-color: #2ecc40 !important;
}
.login-status-container.grant-admin svg path {
fill: #2ecc40 !important;
}
.login-status-container.grant-user img,
.login-status-container.grant-user svg,
.login-status-container.grant-user .avatar {
filter: drop-shadow(0 0 2px rgba(243, 156, 18, 0.4));
border-color: #f39c12 !important;
}
.login-status-container.grant-user svg path {
fill: #f39c12 !important;
}
.login-status-container.grant-none img,
.login-status-container.grant-none svg,
.login-status-container.grant-none .avatar {
filter: drop-shadow(0 0 2px rgba(231, 76, 60, 0.4));
border-color: #e74c3c !important;
opacity: 0.6;
}
.login-status-container.grant-none svg path {
fill: #e74c3c !important;
}
/* Three-pane layout styles */
.right-pane {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
}
.sidebar-pane {
flex: 0 0 auto;
height: 150px;
box-sizing: border-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
background: #f8f9fa;
display: flex;
flex-direction: row;
align-items: stretch;
overflow: hidden;
scrollbar-width: thin;
}
.sidebar-pane .sb-col {
box-sizing: border-box;
min-width: 0;
min-height: 0; /* allow flex children to actually scroll */
max-height: 100%;
height: 100%;
border-right: 1px solid rgba(0, 0, 0, 0.10);
padding: 4px 6px;
overflow-y: auto;
scrollbar-width: thin;
}
.sidebar-pane .sb-col:last-child {
border-right: none;
}
/* col 1: logo + login. Top-aligned with scroll fallback so the logo can
* never be clipped by the pane's overflow:hidden. */
.sidebar-pane .sb-col-logo {
flex: 0 0 180px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
text-align: center;
background: #ffffff;
overflow-y: auto;
padding: 4px 6px;
}
.sidebar-pane .sb-col-logo .logo {
display: block;
margin: 0;
padding: 0;
width: auto;
}
.sidebar-pane .sb-col-logo img.logo {
width: 110px;
height: auto;
display: block;
}
/* override the global span.logo (Sai git / apirev) for the narrow column */
.sidebar-pane .sb-col-logo span.logo {
width: auto;
max-width: 100%;
margin: 1px 0 0 0;
padding: 0;
text-align: center;
display: block;
}
/* col 2 + col 3: selectable project / branch lists */
.sidebar-pane .sb-col-projects,
.sidebar-pane .sb-col-branches {
flex: 0 0 130px;
}
/* col 4: events (most-recent-first), takes the remaining space.
* Not a flex container: the rows are block-level and the column itself is
* the scroll region (overflow-y:auto comes from .sb-col). */
.sidebar-pane .sb-col-events {
flex: 1 1 50%;
}
/* selectable row in col 2 / col 3 */
.sb-row {
display: block;
padding: 2px 6px;
margin: 1px 0;
border-radius: 3px;
cursor: pointer;
user-select: none;
-webkit-user-select: none;
font-size: 9pt;
color: #1e293b;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sb-row:hover {
background: #e2e8f0;
}
.sb-row.selected {
background: #334155;
color: #ffffff;
}
/* event rows in col 4 */
.sb-event-row {
display: flex;
flex-direction: row;
align-items: center;
gap: 6px;
padding: 2px 6px;
margin: 1px 0;
border-radius: 4px;
cursor: pointer;
user-select: none;
-webkit-user-select: none;
background: #f1f5f9;
border: 1px solid #cbd5e1;
font-size: 9pt;
color: #1e293b;
white-space: nowrap;
overflow: hidden;
}
.sb-event-row:hover {
border-color: #94a3b8;
}
.sb-event-row.comp_pass {
background: #01ff70;
border-color: #2ecc40;
}
.sb-event-row.comp_fail {
background: #ff4136;
color: #ffffff;
border-color: #df3030;
}
.sb-event-row.selected {
border: 2px solid #000000;
}
.sb-event-row .sb-event-when {
font-family: 'OpenSans', sans-serif;
font-size: 8pt;
color: #64748b;
white-space: nowrap;
flex: 0 0 auto;
}
.sb-event-row.comp_fail .sb-event-when {
color: #fde2e0;
}
.sb-event-row .sb-event-tag {
font-family: monospace;
font-size: 9pt;
white-space: nowrap;
flex: 0 0 auto;
}
.sb-event-row .sb-event-status {
font-size: 8.5pt;
white-space: nowrap;
flex: 0 0 auto;
}
/* progress bar slot: fixed compact width, inline on the same row */
.sb-event-row .sb-event-bar {
flex: 0 0 250px;
width: 250px;
max-width: 250px;
display: inline-flex;
align-items: center;
}
.sb-event-row .sb-event-bar:empty {
display: none;
}
.sb-event-row .progress-bar {
width: 250px;
max-width: 250px;
height: 8px;
}
.sb-empty {
color: #64748b;
font-size: 9pt;
font-style: italic;
padding: 4px 6px;
}
.tasks-section {
flex: 0 0 200px;
box-sizing: border-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
overflow-y: auto;
padding: 12px;
background: #ffffff;
min-height: 100px;
}
.resizer-h {
height: 5px;
cursor: ns-resize;
background-color: #ccc;
flex-shrink: 0;
}
.event-tasks-header {
margin-bottom: 8px;
padding-bottom: 4px;
border-bottom: 1px solid #f1f5f9;
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.event-tasks-title {
font-weight: bold;
font-size: 11pt;
color: #1e293b;
flex: 1 1 auto;
min-width: 0;
}
.event-tasks-header img.rebuild {
display: inline-block;
}
.tasks-table-display {
width: 100%;
border-collapse: collapse;
}
.tasks-table-display td.tasks {
border: none !important;
padding: 0 !important;
}
.logs-section {
flex: 1 1 0%;
min-height: 0;
display: flex;
flex-direction: column;
overflow: hidden;
background: #ffffff;
color: #000000;
position: relative;
}
#sai_task_logs_container .undernailed {
margin-left: 0;
top: 0;
flex-grow: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
#sai_task_logs_container #summary {
flex-grow: 1;
display: flex;
flex-direction: column;
overflow: hidden;
background: transparent;
margin: 0;
padding: 0;
}
#sai_task_logs_container #sai_overview {
flex-grow: 1;
overflow-y: auto;
min-height: 0;
padding: 10px;
scrollbar-width: thin;
}
#sai_task_logs_container #sai_sticky {
position: relative;
float: none;
background: #ffffff;
width: 100%;
z-index: 10;
border-bottom: 1px solid #e2e8f0;
}
/* Override taskinfo to be relative when inside Section 3 */
#sai_task_logs_container div.taskinfo {
position: relative;
background: #ffffff;
color: #000000;
border-style: none;
border-bottom: 1px solid #e2e8f0;
margin: 0;
padding: 8px 12px;
width: auto;
z-index: 10;
flex-shrink: 0;
}
#sai_task_logs_container div.taskinfo table {
color: #000000;
}
#sai_task_logs_container div.taskinfo span.ti1 {
color: #000000;
font-weight: bold;
}
#sai_task_logs_container div.taskinfo span.ti5 {
color: #64748b;
}
#sai_task_logs_container div.taskinfo table.comp {
display: none; /* Hide the duplicate event decal in the logs header since we have Section 1 */
}
/* Scrolllogs light styling */
#sai_task_logs_container table.scrollogs {
margin-top: 0px;
background: #ffffff;
width: 100%;
}
#sai_task_logs_container table.scrollogs td.atop {
vertical-align: top;
}
#sai_task_logs_container div.dlogs {
background: #ffffff;
color: #000000;
}
#sai_task_logs_container div.dlogsn a {
color: #64748b;
text-decoration: none;
}
#sai_task_logs_container div.dlogsn a:hover {
color: #334155;
}
#sai_task_logs_container div.dlogst {
color: #64748b;
}
.no-tasks, .no-events, .loading-logs {
padding: 20px;
text-align: center;
color: #64748b;
font-style: italic;
}
.loading-logs {
color: #888888;
}
/* Pagination card inside horizontal scroll */
.pagination-card {
display: inline-block;
flex: 0 0 auto;
background: #e2e8f0;
border: 1px solid #cbd5e1;
border-radius: 6px;
padding: 6px 10px;
cursor: pointer;
align-self: center;
font-weight: bold;
height: fit-content;
transition: all 0.2s;
color: #334155;
user-select: none;
}
.pagination-card:hover {
background: #cbd5e1;
color: #0f172a;
}
|