6784d1c9c4
Removes the internal IP, peers, and FQDN due to it not being useful Changes the productName in the package.json to be the actual "Vynte Connect" name
260 lines
5.8 KiB
CSS
260 lines
5.8 KiB
CSS
:root {
|
|
--bg: #191b20;
|
|
--panel: rgba(20, 22, 26, .94);
|
|
--line: rgba(255, 255, 255, .07);
|
|
--text: #f5f6f8;
|
|
--muted: #9099a3;
|
|
--low: #5a5d66;
|
|
--orange: #ff7a1a;
|
|
--pink: #e63e5c;
|
|
--purple: #6f2bae;
|
|
--blue: #1e90ff;
|
|
--gradient: linear-gradient(135deg, var(--orange), var(--pink) 38%, var(--purple) 70%, var(--blue));
|
|
}
|
|
|
|
* { box-sizing: border-box; }
|
|
html, body { margin: 0; width: 100%; height: 100%; overflow: hidden; }
|
|
body {
|
|
color: var(--text);
|
|
font-family: "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
|
|
background:
|
|
radial-gradient(120% 80% at 20% 0%, rgba(255, 122, 26, .18), transparent 55%),
|
|
radial-gradient(90% 80% at 100% 100%, rgba(30, 144, 255, .16), transparent 60%),
|
|
var(--bg);
|
|
}
|
|
|
|
.panel {
|
|
width: 100%;
|
|
min-height: 100%;
|
|
background: rgba(25, 27, 32, .88);
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.header, .footer {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 12px 14px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.footer {
|
|
border-top: 1px solid var(--line);
|
|
border-bottom: 0;
|
|
padding: 8px 6px;
|
|
}
|
|
|
|
.logo-small { width: 22px; height: 22px; border-radius: 4px; }
|
|
.title-block { flex: 1; min-width: 0; }
|
|
.title { font-size: 13px; font-weight: 650; }
|
|
|
|
button {
|
|
font-family: inherit;
|
|
color: inherit;
|
|
}
|
|
.icon-button {
|
|
width: 30px;
|
|
height: 26px;
|
|
border: 0;
|
|
border-radius: 6px;
|
|
background: transparent;
|
|
color: var(--muted);
|
|
cursor: pointer;
|
|
}
|
|
.icon-button:hover { background: rgba(255,255,255,.08); color: var(--text); }
|
|
|
|
.hero {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 20px 16px 16px;
|
|
}
|
|
|
|
.orb {
|
|
width: 126px;
|
|
height: 126px;
|
|
border: 0;
|
|
padding: 0;
|
|
position: relative;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
.orb-ring {
|
|
position: absolute;
|
|
inset: 5px;
|
|
border-radius: 50%;
|
|
background: conic-gradient(from 90deg, #2a2d33, #3a3d44, #2a2d33);
|
|
transition: background .25s, filter .25s;
|
|
}
|
|
.orb-core {
|
|
position: absolute;
|
|
inset: 7px;
|
|
border-radius: 50%;
|
|
background: radial-gradient(circle at 30% 25%, #1f2228 0%, #14161a 70%);
|
|
}
|
|
.orb-logo, .orb-power {
|
|
position: absolute;
|
|
inset: 0;
|
|
margin: auto;
|
|
}
|
|
.orb-logo {
|
|
width: 52px;
|
|
height: 52px;
|
|
display: none;
|
|
border-radius: 10px;
|
|
}
|
|
.orb-power {
|
|
width: 52px;
|
|
height: 52px;
|
|
display: grid;
|
|
place-items: center;
|
|
font-size: 42px;
|
|
color: #7a7e87;
|
|
}
|
|
.orb-dot {
|
|
display: none;
|
|
position: absolute;
|
|
left: 59px;
|
|
top: 1px;
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: var(--orange);
|
|
box-shadow: 0 0 14px rgba(255, 122, 26, .78);
|
|
}
|
|
|
|
.connected .orb-ring,
|
|
.connecting .orb-ring,
|
|
.disconnecting .orb-ring,
|
|
.loggingOut .orb-ring {
|
|
background: conic-gradient(from 0deg, var(--orange), var(--pink), var(--purple), var(--blue), var(--orange));
|
|
filter: drop-shadow(0 0 20px rgba(255,122,26,.28));
|
|
}
|
|
.connected .orb-logo { display: block; }
|
|
.connected .orb-power { display: none; }
|
|
.connecting .orb-ring { animation: spin 1.05s linear infinite, pulse 1s ease-in-out infinite; }
|
|
.disconnecting .orb-ring, .loggingOut .orb-ring { animation: spin-reverse 1.35s linear infinite, pulse 1s ease-in-out infinite; }
|
|
.connecting .orb-dot, .disconnecting .orb-dot, .loggingOut .orb-dot { display: block; animation: orbit 1.05s linear infinite; transform-origin: 4px 62px; }
|
|
.disconnecting .orb-dot, .loggingOut .orb-dot { background: var(--purple); animation-direction: reverse; }
|
|
|
|
.status-line {
|
|
margin-top: 8px;
|
|
font-size: 16px;
|
|
font-weight: 650;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
.status-dot {
|
|
display: none;
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: var(--orange);
|
|
box-shadow: 0 0 0 4px rgba(255,122,26,.14), 0 0 14px rgba(255,122,26,.7);
|
|
}
|
|
.connected .status-dot, .error .status-dot { display: inline-block; }
|
|
.error .status-dot { background: var(--pink); box-shadow: none; }
|
|
.message {
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
line-height: 1.35;
|
|
margin-top: 4px;
|
|
text-align: center;
|
|
min-height: 32px;
|
|
}
|
|
|
|
.gateway {
|
|
margin: 0 14px 12px;
|
|
padding: 10px;
|
|
border: 1px solid var(--line);
|
|
background: rgba(255,255,255,.04);
|
|
border-radius: 10px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
.server-icon {
|
|
width: 28px;
|
|
height: 28px;
|
|
border-radius: 6px;
|
|
background: rgba(255,255,255,.04);
|
|
color: var(--muted);
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
.label {
|
|
color: var(--low);
|
|
text-transform: uppercase;
|
|
font-size: 10px;
|
|
letter-spacing: .6px;
|
|
}
|
|
.mono {
|
|
font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
|
|
font-size: 12.5px;
|
|
}
|
|
.badge {
|
|
margin-left: auto;
|
|
padding: 3px 7px;
|
|
border-radius: 999px;
|
|
text-transform: uppercase;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
color: var(--low);
|
|
background: rgba(255,255,255,.06);
|
|
}
|
|
.connected .badge {
|
|
color: #ff9747;
|
|
background: rgba(255,122,26,.14);
|
|
}
|
|
|
|
.hidden { display: none !important; }
|
|
|
|
.chip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 6px 10px;
|
|
border-radius: 6px;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
cursor: pointer;
|
|
}
|
|
.chip.active {
|
|
background: rgba(255,122,26,.10);
|
|
color: #ff9747;
|
|
}
|
|
.toggle {
|
|
width: 22px;
|
|
height: 12px;
|
|
border-radius: 99px;
|
|
background: rgba(255,255,255,.10);
|
|
position: relative;
|
|
}
|
|
.toggle span {
|
|
position: absolute;
|
|
top: 1.5px;
|
|
left: 1.5px;
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
background: white;
|
|
transition: left .18s;
|
|
}
|
|
.chip.active .toggle {
|
|
background: var(--gradient);
|
|
}
|
|
.chip.active .toggle span { left: 11px; }
|
|
.spacer { flex: 1; }
|
|
|
|
@keyframes spin { to { transform: rotate(360deg); } }
|
|
@keyframes spin-reverse { to { transform: rotate(-360deg); } }
|
|
@keyframes pulse {
|
|
0%, 100% { opacity: 1; transform: scale(1); }
|
|
50% { opacity: .82; transform: scale(1.025); }
|
|
}
|
|
@keyframes orbit { to { transform: rotate(360deg); } }
|