:root { --text: #333; --table-border: rgba(16, 24, 40, .1); --dark: brightness(.90); --bg-blue: rgb(0, 74, 157); --bg-blue-op: rgba(0, 74, 157, .35); --bg-green: rgb(0, 128, 0); --bg-green-op: rgba(0, 128, 0, .35); --bg-yellow: rgb(255, 140, 0); --bg-yellow-op: rgba(255, 140, 0, .35); --bg-red: rgb(255, 0, 0); --bg-red-op: rgba(255, 0, 0, .35); --bg-gray: rgb(112, 128, 144); --bg-gray-op: rgba(112, 128, 144, .35); } html { background: linear-gradient(-5deg, var(--bg-blue-op), transparent 10em); min-height: 100vh; overflow-y: scroll; } body { margin: 0 0 5em 0; font-family: sans-serif; font-size: .8rem; color: var(--text); min-height: 100vh; background: url(bg.jpeg) no-repeat; background-size: contain; } nav { margin: 0 auto; padding: 1em 0; line-height: 1.5rem; max-width: 1140px; border-bottom: 1px solid var(--table-border); } nav a.nav-home { float: left; color: var(--text); line-height: 1.5em; text-decoration: none; font-size: 2em; font-weight: bold; } nav a.nav-home > img { width: 1.5em; vertical-align: middle; } nav > ul { margin: 0 0 0 auto; padding: 0; width: max-content; } nav > ul > li { display: inline-block; padding: 0 1rem; } nav > ul > li.login { margin: 0 0 0 1em; padding: 0 0 0 2em; border-left: 1px solid var(--table-border); line-height: 3.5em; } nav > ul > li.login a { text-decoration: none; text-transform: none; padding: 1em; } nav .login .user-name { font-weight: bold; } nav > ul > li.login > span { display: inline-block; margin: 0 .5em; } nav > ul > li.login .user-icon { flex-direction: column; display: inline flex; vertical-align: middle; inline-size: 4em; } nav > ul > li.login .user-icon img { margin: 0 0 -1em 0; width: 80%; align-self: center; } nav > ul > li.login .user-icon span { padding: 0 .6em; color: white; font-size: .8em; font-weight: bold; border-radius: 4px; line-height: normal; text-align: center; } nav > ul > li.login .user-icon span.guest { background: darkslategray; } nav > ul > li.login .user-icon span.user { background: darkgreen; } nav > ul > li.login .user-icon span.admin { background: darkred; } nav li a { color: var(--bg-blue); text-transform: uppercase; text-decoration: none; font-weight: 700; } nav li a:hover { text-decoration: underline; } a { color: var(--bg-blue); } .breadcrumps { margin: 0 auto; max-width: 1140px; } .breadcrumps ul { margin: 2px 0; padding: .4rem 1rem; list-style: none; background: #eee; } .breadcrumps ul li { display: inline; } .breadcrumps ul li + li:before { padding: .4rem; color: gray; content: "/\00a0"; } .breadcrumps ul li a { color: var(--text); text-decoration: none; } .centered { text-align: center; } main { margin: 0 auto; max-width: 1140px; } section { margin: 3em 0; } form { margin: 1rem 0; padding: 1rem; border: 1px solid lightgray; border-radius: 3px; background: #eee; text-align: center; } form > h2 { margin: 0; } form.samplecode-input > div { padding: 0.6rem; display: inline-block; border: 1px solid lightgray; border-radius: 3px; background: white; } form.samplecode-input input { padding: 0; border: none; outline: none; text-align: left; appearance: textfield; font-size: 1.2rem; font-weight: bold; } form.samplecode-input input:focus-visible { background: lightgreen; } .login-form { width: fit-content; margin: 3em auto; padding: 2em 5em; border: 1px solid var(--table-border); border-radius: .5em; background: white; } .login-form form { width: 20em; margin: 0 auto; display: grid; grid-gap: .5em; border: none; background: none; } .login-form img { margin: 0 auto; width: 4em; display: block; } .userrole-form { display: inline-block; } .userrole-form form { margin: 0; padding: 0; border: none; border-radius: 0; background: none; text-align: inherit; } .login-form form *, .token-form form * { padding: 0.5em; border: 1px solid var(--table-border); border-radius: 3px; } .login-form form hr, .token-form form hr, .userrole-form form hr { padding: 0; width: 100%; } .login-form button, .login-form a.btn, .token-form button { margin: 1em 0; background: var(--bg-blue); color: white; border: none; } .userrole-form form select { padding: 0.5em; border: none; border-radius: 3px; line-height: 1.2rem; font-size: 0.8rem; } .border { padding: 1.5em; border: 1px solid var(--table-border); border-radius: .5em; background: white; } table, .chart { border: 1px solid var(--table-border); padding: 1.5em; border-spacing: 0; border-radius: .5em; background: white; } table { min-width: 100%; font-family: sans-serif; } table.config-table td:first-child { width: 24em; min-width: fit-content; } table.config-table td > button:last-of-type { float: right; } .border > table { padding: 0; border: none; background: transparent; } .page-control { border-radius: .5em; padding: 1em 2em; text-align: center; line-height: 1.75em; } .page-control a { padding: 0 .25em; font-size: 1.75em; color: var(--bg-gray); text-decoration: none; } .page-control a[href] { color: var(--bg-blue); } .page-control span { padding: 0 .5em; vertical-align: text-bottom; } #samples-table.max { width: 100vw; position: fixed; padding: 1rem; top: 0; left: 0; background: white; min-height: 100vh; } table.samples { max-width: 100%; overflow-x: scroll; display: block; } th, td { padding: 0.4rem .2rem; line-height: 2em; text-align: left; white-space: nowrap; vertical-align: top; } th { border-bottom: 1px solid var(--bg-gray); } td { font-family: monospace; border-bottom: 1px solid var(--bg-gray-op); } tr:last-of-type > td { border-bottom: none; } td > small { display: block; text-align: center; } td.patient-id { width: 32em; text-overflow: ellipsis; overflow: hidden; display: block; } td.bg-blue, th.bg-blue, td.bg-green, th.bg-green, td.bg-yellow, th.bg-yellow, td.bg-red, th.bg-red, td.bg-gray, th.bg-gray { width: 8em; } td.bg-blue > small, th.bg-blue > small { background: var(--bg-blue); color: white; border-radius: 0.4em; } td.bg-green > small, th.bg-green > small { background: var(--bg-green); color: white; border-radius: 0.4em; } td.bg-yellow > small, th.bg-yellow > small { background: var(--bg-yellow); color: white; border-radius: 0.4em; } td.bg-red > small, th.bg-red > small { background: var(--bg-red); color: white; border-radius: 0.4em; } td.bg-gray > small, th.bg-gray > small { background: var(--bg-gray); color: white; border-radius: 0.4em; } .bg-path { background: var(--bg-gray-op); } .bg-from { background: var(--bg-red-op); } .bg-to { background: var(--bg-green-op); } .bg-path, .bg-from, .bg-to { padding: 0.25rem 0.5rem; border-radius: 3px; font-family: monospace; } td.bg-shaded, th.bg-shaded { background: repeating-linear-gradient(140deg, white, #e5e5f5 4px, white 8px); } td.clipboard { cursor: copy; } td.clipboard.clipped { box-shadow: 0 0 1rem lightgreen inset; } .btn { margin: 4px; padding: 4px 8px; line-height: 1.2rem; border: 0 solid transparent; border-radius: 3px; text-decoration: none; font-size: 0.8rem; font-weight: normal; cursor: pointer; } .btn:active, .btn:hover { filter: drop-shadow(0px 1px 1px var(--bg-gray)) var(--dark); } .btn:active { translate: 0 1px; } .btn.btn-red { background: var(--bg-red); color: white; } .btn.btn-blue { background: var(--bg-blue); color: white; } .btn.btn-delete:before { content: '\1F5D1'; padding: .2rem; } button:disabled, .btn:disabled { background: slategray !important; color: lightgray; filter: none; cursor: default; } input.inline { border: none; font-size: 1.1rem; outline: none; } input.inline:focus-visible { background: lightgreen; } .monospace { font-family: monospace; color: #333333; border-bottom: 1px dotted gray !important; } .help { padding: 1rem; border: 1px solid darkslategray; border-radius: 3px; background: slategray; color: white; } .help.error { border: 3px dashed red; background: darkorange; } .help .help-header { font-size: 1.2rem; font-weight: bold; } .charts { display: grid; grid-gap: 1em; grid-template: "a b" 28em "c c" 28em / 1fr 1fr; } .charts > .grid-left { grid-area: a; } .charts > .grid-right { grid-area: b; } .charts > .grid-full { grid-area: c; } .connection-display { display: grid; grid-template-columns: 10em 16em 10em; place-items: center; width: fit-content; margin: 1em auto; } .connection-display > * { text-align: center; margin: auto 0; } .connection-display .connection { display: block; width: 100%; height: 4px; background: repeating-linear-gradient(to left, white, white 2px, transparent 2px, transparent 8px, white 8px) var(--bg-red); } .connection-display .connection.available { background: var(--bg-green); } .notification { margin: 1em; padding: .5em; border-radius: 3px; text-align: center; } .notification.success { color: var(--bg-green); } .notification.notice { color: var(--bg-yellow); } .notification.error { color: var(--bg-red); } .tab { padding: 1em; border: none; border-radius: 3px 3px 0 0; cursor: pointer; transition: all 0.2s; font-weight: bold; } .tab:hover, .tab.active { background: var(--table-border); } .tabcontent { border: 1px solid var(--table-border); border-radius: 0 .5em .5em .5em; display: none; padding: 1em; background: white; } .tabcontent.active { display: block; } a.reload { display: none; position: absolute; height: 1.2em; width: 1.2em; background: var(--bg-red); border-radius: 50%; color: white; text-decoration: none; font-size: .6em; align-content: center; justify-content: center; } .new-token { padding: 1em; background: var(--bg-green-op); } .new-token > pre { margin: 0; border: 1px solid var(--bg-green); padding: .5em; width: max-content; display: inline-block; } .no-token { padding: 1em; background: var(--bg-red-op); }