817 lines
14 KiB
CSS
817 lines
14 KiB
CSS
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
background-color: #111113;
|
|
color: white;
|
|
display: flex;
|
|
max-height: 100vh;
|
|
height: 100vh;
|
|
margin: 0px;
|
|
padding: 0px;
|
|
flex-direction: column;
|
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
|
}
|
|
|
|
nav {
|
|
padding: 0.8em 1.5rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
padding-bottom: 0px;
|
|
user-select: none;
|
|
}
|
|
|
|
nav .logo {
|
|
display: flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
border: none;
|
|
font-family: inherit;
|
|
font-size: inherit;
|
|
background-color: transparent;
|
|
padding: 0px;
|
|
margin-right: auto;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
nav .logo img {
|
|
width: 28px;
|
|
height: 28px;
|
|
margin-right: 8px;
|
|
}
|
|
|
|
nav .logo p {
|
|
margin: 0px;
|
|
color: rgb(248, 248, 248);
|
|
opacity: 0;
|
|
margin-left: -5px;
|
|
transition: margin-left 0.15s, opacity 0.15s;
|
|
pointer-events: none;
|
|
filter: blur(1px);
|
|
}
|
|
|
|
nav .logo:hover p {
|
|
opacity: 1;
|
|
margin-left: 0px;
|
|
filter: none;
|
|
pointer-events: all;
|
|
}
|
|
|
|
nav .logo:active {
|
|
opacity: 0.6;
|
|
}
|
|
|
|
nav .settings {
|
|
font-size: inherit;
|
|
cursor: pointer;
|
|
background-color: transparent;
|
|
padding: 0px;
|
|
border: none;
|
|
color: rgb(248, 248, 248);
|
|
opacity: 0.6;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
nav .settings:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
nav .logout {
|
|
font-family: inherit;
|
|
margin-left: auto;
|
|
font-size: inherit;
|
|
cursor: pointer;
|
|
background-color: transparent;
|
|
padding: 0px;
|
|
border: none;
|
|
color: rgb(248, 248, 248);
|
|
opacity: 0.6;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
nav .logout:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.state-loading {
|
|
max-height: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
gap: 0.8em;
|
|
}
|
|
|
|
.state-loading svg {
|
|
width: 30px;
|
|
height: 30px;
|
|
}
|
|
.state-homepage {
|
|
max-width: 520px;
|
|
flex-direction: column;
|
|
margin: 2em auto;
|
|
width: 100%;
|
|
padding: 0px 0.5rem;
|
|
}
|
|
|
|
.state-homepage h1 {
|
|
font-size: 1.5em;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.state-homepage .keys-top {
|
|
border: 1px solid #1f1f1f;
|
|
border-radius: 8px;
|
|
background-color: #161616;
|
|
height: 40px;
|
|
display: flex;
|
|
}
|
|
|
|
.state-homepage .keys-top input {
|
|
font-size: 15px;
|
|
font-family: inherit;
|
|
background-color: transparent;
|
|
color: inherit;
|
|
border: none;
|
|
height: 100%;
|
|
width: 100%;
|
|
padding-left: 0.8em;
|
|
}
|
|
|
|
.state-homepage .keys-top input:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.state-homepage .keys-top:has(input:focus) {
|
|
border: 1px solid #3f3f3f;
|
|
}
|
|
|
|
.state-homepage .keys-top .create-key {
|
|
width: fit-content;
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 4px;
|
|
border-radius: 4px;
|
|
border: none;
|
|
background-color: #007aff;
|
|
color: white;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
padding: 0px 6px;
|
|
transition: transform 0.15s, opacity 0.15s, box-shadow 0.15s;
|
|
}
|
|
|
|
.state-homepage .keys-top .create-key svg {
|
|
width: 18px;
|
|
height: 18px;
|
|
margin-right: 4px;
|
|
}
|
|
|
|
.state-homepage .keys-top .create-key:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.state-homepage .keys-top .create-key:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
.state-homepage .keys-top .create-key:focus {
|
|
box-shadow: 0px 0px 0px 2px rgba(0, 122, 255, 0.5);
|
|
}
|
|
|
|
.keys-list.no-keys p {
|
|
text-align: center;
|
|
opacity: 0.8;
|
|
font-size: 15px;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.modal {
|
|
position: fixed;
|
|
inset: 0;
|
|
background-color: rgba(0, 0, 0, 0.5);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 1000;
|
|
animation: fadeIn 0.15s ease-in-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.modal-content {
|
|
background-color: #212121;
|
|
border-radius: 10px;
|
|
max-width: 400px;
|
|
width: 90%;
|
|
color: white;
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
|
|
animation: scaleIn 0.15s ease-in-out;
|
|
}
|
|
|
|
@keyframes scaleIn {
|
|
from {
|
|
transform: scale(0.98);
|
|
}
|
|
to {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
.modal-content header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 1em;
|
|
border-bottom: 1px solid #323232;
|
|
padding: 12px 16px;
|
|
}
|
|
|
|
.modal-content header h2 {
|
|
margin: 0;
|
|
font-size: 17px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.modal-content header .close-button {
|
|
background: transparent;
|
|
border: none;
|
|
color: white;
|
|
cursor: pointer;
|
|
padding: 0px;
|
|
}
|
|
|
|
.modal .content {
|
|
padding: 12px 16px;
|
|
padding-top: 0px;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.modal-content input[type="text"] {
|
|
width: 100%;
|
|
padding: 0.6em 0.7em;
|
|
margin-top: 8px;
|
|
border-radius: 8px;
|
|
font-size: 15px;
|
|
box-shadow: inset 0 0 0 1px color(display-p3 0.9608 0.9608 1 / 0.242);
|
|
color: #eee;
|
|
border: none;
|
|
background-color: transparent;
|
|
font-family: inherit;
|
|
margin-bottom: 8px;
|
|
text-overflow: ellipsis;
|
|
transition: box-shadow 0.15s;
|
|
}
|
|
|
|
.modal-content input[type="text"]:focus {
|
|
text-overflow: unset;
|
|
box-shadow: 0px 0px 0px 2px rgba(255, 255, 255);
|
|
outline: none;
|
|
}
|
|
|
|
.modal-content label {
|
|
font-weight: 500;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.modal-content button.primary {
|
|
border: none;
|
|
border-radius: 8px;
|
|
background-color: #007aff;
|
|
color: white;
|
|
font-size: 15px;
|
|
cursor: pointer;
|
|
font-family: inherit;
|
|
height: 36px;
|
|
font-weight: 500;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 16px;
|
|
width: calc(100% - 32px);
|
|
margin-top: 0px;
|
|
transition: opacity 0.15s, background-color 0.15s;
|
|
}
|
|
|
|
.modal-content button.primary.secondary {
|
|
background: rgba(255, 255, 255, 0.1);
|
|
color: white;
|
|
}
|
|
|
|
.modal-content button.primary:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.modal-content button.primary:active {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.modal-content button.primary:disabled {
|
|
opacity: 0.4;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.key-created-header {
|
|
display: flex;
|
|
gap: 11px;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.key-created-header svg {
|
|
width: 40px;
|
|
height: 40px;
|
|
}
|
|
|
|
.key-created-header h3 {
|
|
margin-top: 10px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.modal-content p.small-text {
|
|
line-height: 1.4;
|
|
font-size: 14px;
|
|
max-width: 90%;
|
|
opacity: 0.9;
|
|
margin-top: 2px;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.keys-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.keys-list .key {
|
|
border: 1px solid #1f1f1f;
|
|
border-radius: 8px;
|
|
background-color: #161616;
|
|
display: flex;
|
|
gap: 6px;
|
|
height: 68px;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
}
|
|
|
|
.key .key-text {
|
|
padding-left: 14px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.key .key-text h2 {
|
|
font-size: 17px;
|
|
font-weight: 500;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
margin: 0px;
|
|
}
|
|
|
|
.key .key-text p {
|
|
margin-bottom: 0px;
|
|
margin-top: 4px;
|
|
font-size: 14px;
|
|
color: rgba(255, 255, 255, 0.5);
|
|
font-weight: 300;
|
|
}
|
|
|
|
.key .key-text p b {
|
|
color: rgba(255, 255, 255, 0.7);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.key .key-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
margin-right: 14px;
|
|
}
|
|
|
|
.key .key-actions button {
|
|
width: 38px;
|
|
height: 38px;
|
|
border-radius: 100px;
|
|
border: none;
|
|
background: transparent;
|
|
color: white;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.key:focus,
|
|
.key:active,
|
|
.key:has(button:focus) {
|
|
box-shadow: 0px 0px 0px 3px rgba(255, 255, 255, 0.5);
|
|
}
|
|
|
|
.state-key-page {
|
|
flex-direction: column;
|
|
max-width: 800px;
|
|
width: 100%;
|
|
margin: 2em auto;
|
|
padding: 0px 0.5rem;
|
|
padding-bottom: 4em;
|
|
}
|
|
|
|
.state-key-page .chart-container {
|
|
width: 100%;
|
|
height: 380px;
|
|
|
|
border: 1px solid #e3e4e810;
|
|
background-color: #e3e4e807;
|
|
padding: 15px;
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.state-key-page .topbar {
|
|
display: flex;
|
|
gap: 4px;
|
|
align-items: center;
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.state-key-page .topbar .left {
|
|
display: flex;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.state-key-page .topbar .left h1 {
|
|
font-size: 23px;
|
|
margin: 0px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.state-key-page .topbar .left button {
|
|
border-radius: 6px;
|
|
color: rgba(255, 255, 255, 0.85);
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
padding: 0.4em 0.6em;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.state-key-page .topbar .left button:hover {
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.state-key-page .topbar .left button:focus {
|
|
box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5);
|
|
}
|
|
|
|
.state-key-page .topbar .right {
|
|
margin-left: auto;
|
|
}
|
|
|
|
.state-key-page .time-duration {
|
|
border: none;
|
|
border-radius: 6px;
|
|
color: white;
|
|
background-color: #111113;
|
|
padding: 0px;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.state-key-page .time-duration:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.state-key-page h2 {
|
|
font-size: 18px;
|
|
margin: 0px;
|
|
font-weight: 600;
|
|
margin-top: 20px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.danger-zone-buttons button {
|
|
color: white;
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
font-family: inherit;
|
|
border-radius: 8px;
|
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
padding: 0.5em 1em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.danger-zone-buttons button:hover {
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.danger-zone-buttons button:focus {
|
|
box-shadow: 0px 0px 0px 3px rgba(255, 255, 255, 0.37);
|
|
outline: none;
|
|
}
|
|
|
|
.danger-zone-buttons button:disabled {
|
|
opacity: 0.5;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.config input {
|
|
width: 100%;
|
|
padding: 0.6em 0.7em;
|
|
margin-top: 8px;
|
|
border-radius: 8px;
|
|
font-size: 15px;
|
|
border: none;
|
|
box-shadow: inset 0 0 0 1px color(display-p3 0.9608 0.9608 1 / 0.242);
|
|
color: #eee;
|
|
background-color: transparent;
|
|
font-family: inherit;
|
|
margin-bottom: 8px;
|
|
text-overflow: ellipsis;
|
|
max-width: 300px;
|
|
display: block;
|
|
}
|
|
|
|
.config input:focus {
|
|
text-overflow: unset;
|
|
box-shadow: 0px 0px 0px 2px white;
|
|
outline: none;
|
|
}
|
|
|
|
.config label {
|
|
font-weight: 500;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.config .config-item {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.config button {
|
|
border: none;
|
|
border-radius: 8px;
|
|
background-color: white;
|
|
color: black;
|
|
font-size: 15px;
|
|
cursor: pointer;
|
|
transition: background-color 0.15s;
|
|
font-family: inherit;
|
|
height: 36px;
|
|
font-weight: 500;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0px 16px;
|
|
}
|
|
|
|
.config button:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.config button:focus {
|
|
box-shadow: 0px 0px 0px 3px rgba(255, 255, 255, 0.37);
|
|
}
|
|
|
|
.config button:disabled {
|
|
opacity: 0.4;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.keypage-back {
|
|
display: flex;
|
|
align-items: center;
|
|
border: none;
|
|
padding: 0px;
|
|
background-color: transparent;
|
|
color: white;
|
|
font-family: inherit;
|
|
font-size: 16px;
|
|
margin-bottom: 10px;
|
|
opacity: 0.63;
|
|
margin-left: -6px;
|
|
cursor: pointer;
|
|
width: fit-content;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
.keypage-back:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.keypage-back:active {
|
|
opacity: 0.58;
|
|
}
|
|
|
|
.keypage-back svg {
|
|
transition: margin-left 0.15s, margin-right 0.15s;
|
|
}
|
|
|
|
.keypage-back:hover svg {
|
|
margin-left: -2px;
|
|
margin-right: 2px;
|
|
}
|
|
|
|
.state-settings {
|
|
flex-direction: column;
|
|
max-width: 800px;
|
|
width: 100%;
|
|
margin: 2em auto;
|
|
padding: 0px 0.5rem;
|
|
padding-bottom: 4em;
|
|
}
|
|
|
|
.state-settings {
|
|
flex-direction: column;
|
|
max-width: 700px;
|
|
width: 100%;
|
|
margin: 2em auto;
|
|
padding: 0px 0.5rem;
|
|
padding-bottom: 4em;
|
|
}
|
|
|
|
.state-settings h1 {
|
|
margin-top: 0px;
|
|
font-size: 27px;
|
|
margin-bottom: 20px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.state-settings h2 {
|
|
font-weight: 500;
|
|
font-size: 22px;
|
|
margin: 0px;
|
|
}
|
|
|
|
.sessions-list,
|
|
.apikeys-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
margin-top: 13px;
|
|
margin-bottom: 22px;
|
|
}
|
|
|
|
.sessions-list .session,
|
|
.apikeys-list .apikey {
|
|
border: 1px solid #1f1f1f;
|
|
border-radius: 8px;
|
|
background-color: #161616;
|
|
display: flex;
|
|
gap: 6px;
|
|
height: 80px;
|
|
align-items: center;
|
|
}
|
|
|
|
.apikeys-list p {
|
|
margin: 0px;
|
|
}
|
|
|
|
.about-info {
|
|
line-height: 1.5;
|
|
color: #eee;
|
|
}
|
|
|
|
.about-info b {
|
|
color: white;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.about-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
margin-top: 8px;
|
|
color: white;
|
|
text-decoration: none;
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
width: fit-content;
|
|
padding: 0.4em 0.6em;
|
|
transition: opacity 0.15s;
|
|
border-radius: 6px;
|
|
animation: abtbtn 1s ease-in-out;
|
|
box-shadow: rgb(0 0 0 / 9%) 0px 8px 24px;
|
|
}
|
|
|
|
.about-button:hover {
|
|
background-color: rgba(255, 255, 255, 0.02);
|
|
}
|
|
|
|
.about-button:focus {
|
|
box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5);
|
|
}
|
|
|
|
.nano-github-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
opacity: 0.2;
|
|
text-decoration: none;
|
|
width: fit-content;
|
|
transition: opacity 0.15s;
|
|
font-size: 14px;
|
|
color: white;
|
|
margin-top: 2em;
|
|
border-radius: 6px;
|
|
animation: abtbtn 1s ease-in-out;
|
|
}
|
|
|
|
.nano-github-button:hover {
|
|
opacity: .5;
|
|
}
|
|
|
|
.nano-github-button:focus {
|
|
box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5);
|
|
}
|
|
|
|
.session .session-info,
|
|
.apikey .apikey-info {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding: 12px 16px;
|
|
}
|
|
|
|
.session-token,
|
|
.apikey-token {
|
|
margin-bottom: 5px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.session-expires,
|
|
.apikey-created {
|
|
opacity: 0.93;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.session .session-delete-button,
|
|
.apikey .apikey-delete-button {
|
|
border-radius: 6px;
|
|
color: rgba(255, 255, 255, 0.85);
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
padding: 0.4em 0.6em;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
margin-left: auto;
|
|
margin-right: 16px;
|
|
}
|
|
|
|
.session .session-delete-button:hover,
|
|
.apikey .apikey-delete-button:hover {
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.session .session-delete-button:focus,
|
|
.apikey .apikey-delete-button:focus {
|
|
box-shadow: 0px 0px 0px 2px white;
|
|
}
|
|
|
|
.apikeys-title {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
.apikeys-title button {
|
|
border: none;
|
|
border-radius: 6px;
|
|
background-color: #007aff;
|
|
color: white;
|
|
padding: 0.4em 0.6em;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
margin-left: auto;
|
|
margin-right: 16px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
.apikeys-title button:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.apikeys-title button:focus {
|
|
box-shadow: 0px 0px 0px 2px rgba(0, 122, 255, 0.5);
|
|
}
|