Files
Elite-Gaming-FiveM/resources/[ERS]/night_ers/NUI/styles.css
T
2025-08-21 07:59:16 -07:00

1235 lines
30 KiB
CSS

/* Eurostyle Example */
/* @font-face {
font-family: 'Eurostile Becker Heavy';
src: url('fonts/EurostileBeckerHeavy.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
body {
font-family: 'Eurostile Becker Heavy', sans-serif;
font-size: 13px;
overflow: hidden;
} */
/* AVENIR Example */
/* @font-face {
font-family: 'Avenir Regular';
src: url('fonts/AvenirRegular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
body {
font-family: 'Avenir Regular', sans-serif;
font-size: 13px;
overflow: hidden;
} */
/* A default font */
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
font-size: 13px;
overflow: hidden;
}
/* Here you can configure UI in the root */
:root {
/* Overwrite Bootstrap */
--bs-body-bg: transparent;
/* Interaction & Callout UI Background settings */
--interaction-bg-color: rgba(0, 0, 0, 0.5);
--interaction-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.5);
/* Dispatch alert message when toggled dispatch messages */
--dispatch-icon-right: 20px;
--dispatch-icon-bottom: 20px;
/* Radial Menu Calculation */
--total-items: 9; /* Total number of items in the circle */
--angle: calc(360deg / var(--total-items)); /* Angle between items */
--radius: 15em; /* Distance from the center */
/* Pursuit Radial Menu */
--pursuit-total-items: 5; /* Total number of items in the circle */
--pursuit-angle: calc(360deg / var(--pursuit-total-items)); /* Angle between items */
--pursuit-radius: 10em; /* Distance from the center */
/* Dispatch Message Prompt Positioning */
--dispatch-message-prompt-x: 20px;
--dispatch-message-prompt-y: 20px;
/* Hint Prompt Positioning */
--hint-prompt-x: 20px;
--hint-prompt-y: 20px;
/* Prompt Positioning */
--prompt-default-x: 75%;
--prompt-default-y: 50%;
/* Callout Interface Positioning */
--callout-interface-x: 20px;
--callout-interface-y: 50%;
/* Interaction Module Positioning */
--module-default-x: 75%;
--module-default-y: 50%;
/* Zone Change Positioning */
--zone-change-x: 50%;
--zone-change-y: 25%;
/* Menu Positioning */
--menu-default-x: 50%;
--menu-default-y: 50%;
/* Callout Prompt Positioning */
--callout-prompt-x: 50%;
--callout-prompt-y: 20px;
/* Ped Details Prompt Positioning */
--ped-details-prompt-x: 25%;
--ped-details-prompt-y: 50%;
/* Dual Steering Mode Prompt Positioning */
--dual-steering-mode-prompt-x: 20px;
--dual-steering-mode-prompt-y: 20px;
}
/* Microtext */
.microtext {
font-size: 12px;
}
.microtext-11 {
font-size: 11px;
}
/* Card adjustments */
.card:hover {
filter: brightness(1.2); /* Adjust brightness as desired */
transition: filter 0.3s ease;
}
.card-flash {
position: relative;
overflow: hidden;
}
.card-flash::before {
content: '';
position: absolute;
top: -50%;
left: -150%;
width: 10px;
height: 200%;
background: linear-gradient(to right, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.2)); /* Adjusted gradient for softer edges */
transform: rotate(45deg);
transition: left 1.5s ease-in-out, opacity 1.5s ease-in-out, box-shadow 0.5s ease-in-out; /* Fine-tuned transition durations */
opacity: 0;
box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0); /* Adjusted initial box-shadow for a subtle glow effect */
}
.card-flash:hover::before {
left: 150%;
opacity: 1;
box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.8); /* Adjusted box-shadow properties for a stronger glow effect */
}
/* Prompts */
#ers-selection-menu {
position: absolute;
left: var(--menu-default-x, 50%);
top: var(--menu-default-y, 50%);
transform: translate(-50%, -50%);
z-index: 1;
opacity: 0;
animation: fadeIn 1s ease forwards;
}
.logo {
width: 36px;
height: 36px;
margin: 0 5px; /* Adjust spacing between logos if needed */
}
#hint-prompt-container {
position: absolute;
right: var(--hint-prompt-x, 20px);
top: var(--hint-prompt-y, 20px);
z-index: 1;
}
#callout-prompt-container {
position: absolute;
left: var(--callout-prompt-x, 50%);
top: var(--callout-prompt-y, 20px);
transform: translateX(-50%);
z-index: 1;
opacity: 0;
animation: fadeIn 0.25s ease forwards;
}
#callout-prompt-container.draggable {
user-select: none;
transition: none; /* Disable transitions during drag */
}
#callout-prompt-container.draggable:hover {
opacity: 0.9;
}
#callout-interface-container,
#callout-pre-interface-container {
position: absolute;
left: var(--callout-interface-x, 20px);
top: var(--callout-interface-y, 50%);
transform: translateY(-50%);
z-index: 1;
border-radius: 10px;
background-color: var(--interaction-bg-color);
box-shadow: var(--interaction-box-shadow);
padding: 15px;
transition: opacity 0.25s ease-out;
}
.hint {
position: absolute;
margin: 5px;
bottom: 5px; /* Position hint at the bottom of the container */
left: 50%;
transform: translateX(-50%);
font-size: 0.70rem;
color: #afafafa2;
white-space: nowrap;
}
#dispatch-message-prompt-container {
position: absolute;
right: var(--dispatch-message-prompt-x, 20px);
bottom: var(--dispatch-message-prompt-y, 20px);
z-index: 1;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
#unified-prompt {
position: absolute;
left: var(--prompt-default-x, 75%);
top: var(--prompt-default-y, 50%);
transform: translate(-50%, -50%);
z-index: 1;
opacity: 0;
animation: fadeIn 0.25s ease forwards;
background-color: var(--interaction-bg-color);
box-shadow: var(--interaction-box-shadow);
border-radius: 10px;
padding: 10px;
}
#ped-interaction-module {
position: absolute;
left: var(--module-default-x, 75%);
top: var(--module-default-y, 50%);
transform: translate(-50%, -50%);
z-index: 1;
opacity: 0;
animation: fadeIn 0.25s ease forwards;
background-color: var(--interaction-bg-color);
box-shadow: var(--interaction-box-shadow);
border-radius: 10px;
padding: 15px;
}
#ped-interaction-id-card, #ped-interaction-inventory, #vehicle-info {
position: absolute;
left: var(--ped-details-prompt-x, 25%);
top: var(--ped-details-prompt-y, 50%);
transform: translate(-50%, -50%);
z-index: 1;
opacity: 0;
animation: fadeIn 0.25s ease forwards;
}
.spinner-wrapper {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
text-align: center;
padding: 20px;
}
.spinner {
border: 4px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top: 4px solid #ffc107;
width: 40px;
height: 40px;
animation: spin 1s linear infinite;
margin-bottom: 15px;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Waypoint */
.waypoint {
top: -1000;
left: 0;
position: absolute;
display: flex;
row-gap: 5px;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 25px;
transition: 0.1s;
}
/* Zone change */
#zone-change-ui {
position: absolute;
left: var(--zone-change-x, 50%);
top: var(--zone-change-y, 25%);
transform: translate(-50%, -50%);
z-index: 1;
text-align: center;
font-family: inherit;
opacity: 0;
visibility: hidden;
transition: opacity 1s ease-in-out, visibility 1s ease-in-out;
}
#zone-change-ui.show {
opacity: 1;
visibility: visible;
}
#zone-change-ui h3 {
font-size: 1.5em;
margin-bottom: 0.5em;
}
#zone-change-ui p {
font-size: 1.2em;
margin: 0;
}
.new-zone {
font-size: 2.5em;
font-weight: bold;
text-decoration: underline;
position: relative;
display: inline-block;
background: linear-gradient(to right, rgba(255,255,255,0.7), rgba(255,255,255,0.9));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
color: transparent;
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}
.new-zone.show {
opacity: 1;
transform: translateY(0);
}
.new-zone::after {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
background: radial-gradient(ellipse at center, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 70%);
filter: blur(8px);
z-index: -1;
}
.old-zone {
opacity: 0.7;
color: rgba(255,255,255,0.7);
font-size: 1.2em;
}
.zone-arrow {
margin: 0 0.5em;
font-size: 1.5em;
color:#ffbf00;
}
/* Unit waypoint */
.unit-waypoint-container {
position: absolute; /* Ensure the container is positioned absolutely */
transform: translate(-50%, -50%); /* Center the waypoint if needed */
}
.unit-waypoint-container.smooth-transition {
transition: left 0.5s ease, top 0.5s ease; /* Adjust the duration and easing as needed */
}
.unit-waypoint {
top: -1000;
left: 0;
position: absolute;
display: flex;
row-gap: 5px;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 25px;
}
.unit-waypoint-distance {
font-size: 13px;
color: rgb(72, 255, 0);
font-weight: 700;
}
.unit-waypoint-distance-text {
font-size: 11px;
color: rgb(255, 255, 255);
font-weight: 700;
font-family: -apple-system,system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
/* Radial menu */
.circle-menu li {
list-style: none;
display: inline;
}
.circle-menu {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 24em;
height: 24em;
border-radius: 50%;
z-index: 999;
opacity: 0;
animation: fadeIn 0.25s ease forwards;
font-size: 16px !important;
}
.circle-menu a {
display: block;
position: absolute;
top: 50%;
left: 50%;
width: 8em; height: 8em;
line-height:8em;
margin: -3.5em;
-moz-border-radius: 4em;
-webkit-border-radius: 4em;
border-radius: 4em;
text-align: center;
text-decoration: none;
color: white;
box-sizing: border-box;
border: inset rgba(0, 0, 0, 0.5) 1px;
background-color: rgba(0, 0, 0, 0.5);
opacity: 0.8;
transition: opacity 0.3s ease;
}
.circle-menu a i {
font-size: 20px;
}
.circle-menu a:hover i {
font-size: 30px; /* Adjust the size as needed */
transition: font-size 0.3s ease;
}
.circle-menu a:hover {
background-color: rgba(0, 0, 0, 0.9);
opacity: 0.9;
pointer-events: auto;
cursor: pointer;
transition: opacity 0.5s ease;
transition: background-color 0.5s ease;
animation: fillCircle 0.5s forwards;
}
@keyframes fillCircle {
0% {
box-shadow: 0 0 0px 0px rgba(255, 255, 255, 0.8);
}
100% {
box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.8);
}
}
.circle-menu a.animal-rescue-request:hover i {
color: #9bde00;
}
.circle-menu a.coroner-request:hover i {
color: #3D3D3D;
}
.circle-menu a.road-service-request:hover i {
color: #ffbf00;
}
.circle-menu a.taxi-request:hover i {
color: #FF9A18;
}
.circle-menu a.ambulance-request:hover i {
color: #ff0000;
}
.circle-menu a.tow-request:hover i {
color: #782323;
}
.circle-menu a.police-transport:hover i {
color: #0057b9;
}
.circle-menu a.mechanic-request:hover i {
color: #CFCFCF;
}
.circle-menu a.fire-request:hover i {
color: #3b0000;
}
.circle-menu .animal-rescue-request {
transform: rotate(calc(1 * var(--angle))) translate(var(--radius)) rotate(calc(-1 * var(--angle)));
-webkit-transform: rotate(calc(1 * var(--angle))) translate(var(--radius)) rotate(calc(-1 * var(--angle)));
-ms-transform: rotate(calc(1 * var(--angle))) translate(var(--radius)) rotate(calc(-1 * var(--angle)));
}
.circle-menu .coroner-request {
transform: rotate(calc(2 * var(--angle))) translate(var(--radius)) rotate(calc(-2 * var(--angle)));
-webkit-transform: rotate(calc(2 * var(--angle))) translate(var(--radius)) rotate(calc(-2 * var(--angle)));
-ms-transform: rotate(calc(2 * var(--angle))) translate(var(--radius)) rotate(calc(-2 * var(--angle)));
}
.circle-menu .road-service-request {
transform: rotate(calc(3 * var(--angle))) translate(var(--radius)) rotate(calc(-3 * var(--angle)));
-webkit-transform: rotate(calc(3 * var(--angle))) translate(var(--radius)) rotate(calc(-3 * var(--angle)));
-ms-transform: rotate(calc(3 * var(--angle))) translate(var(--radius)) rotate(calc(-3 * var(--angle)));
}
.circle-menu .taxi-request {
transform: rotate(calc(4 * var(--angle))) translate(var(--radius)) rotate(calc(-4 * var(--angle)));
-webkit-transform: rotate(calc(4 * var(--angle))) translate(var(--radius)) rotate(calc(-4 * var(--angle)));
-ms-transform: rotate(calc(4 * var(--angle))) translate(var(--radius)) rotate(calc(-4 * var(--angle)));
}
.circle-menu .ambulance-request {
transform: rotate(calc(5 * var(--angle))) translate(var(--radius)) rotate(calc(-5 * var(--angle)));
-webkit-transform: rotate(calc(5 * var(--angle))) translate(var(--radius)) rotate(calc(-5 * var(--angle)));
-ms-transform: rotate(calc(5 * var(--angle))) translate(var(--radius)) rotate(calc(-5 * var(--angle)));
}
.circle-menu .tow-request {
transform: rotate(calc(6 * var(--angle))) translate(var(--radius)) rotate(calc(-6 * var(--angle)));
-webkit-transform: rotate(calc(6 * var(--angle))) translate(var(--radius)) rotate(calc(-6 * var(--angle)));
-ms-transform: rotate(calc(6 * var(--angle))) translate(var(--radius)) rotate(calc(-6 * var(--angle)));
}
.circle-menu .police-transport {
transform: rotate(calc(7 * var(--angle))) translate(var(--radius)) rotate(calc(-7 * var(--angle)));
-webkit-transform: rotate(calc(7 * var(--angle))) translate(var(--radius)) rotate(calc(-7 * var(--angle)));
-ms-transform: rotate(calc(7 * var(--angle))) translate(var(--radius)) rotate(calc(-7 * var(--angle)));
}
.circle-menu .mechanic-request {
transform: rotate(calc(8 * var(--angle))) translate(var(--radius)) rotate(calc(-8 * var(--angle)));
-webkit-transform: rotate(calc(8 * var(--angle))) translate(var(--radius)) rotate(calc(-8 * var(--angle)));
-ms-transform: rotate(calc(8 * var(--angle))) translate(var(--radius)) rotate(calc(-8 * var(--angle)));
}
.circle-menu .fire-request {
transform: rotate(calc(9 * var(--angle))) translate(var(--radius)) rotate(calc(-9 * var(--angle)));
-webkit-transform: rotate(calc(9 * var(--angle))) translate(var(--radius)) rotate(calc(-9 * var(--angle)));
-ms-transform: rotate(calc(9 * var(--angle))) translate(var(--radius)) rotate(calc(-9 * var(--angle)));
}
/*
TO ADD NEW BACKUP, SIMPLY COPY THE LAST 5 LINES OF ABOVES CODE AND INCREASE THE NUMBER!
MAKE SURE TO ALSO ADD THE ON HOVER COLOR AND ALSO INCREASE THE NUMBER OF ITEMS IN :ROOT
*/
.middle-x, .pursuit-middle-x {
position: absolute;
top: 50%;
left: 52%;
width: 4em;
height: 4em;
transform: translate(-50%, -50%);
border: inset rgba(255, 255, 255, 0.3) 1px;
background-color: rgba(255, 255, 255, 0.3);
border-radius: 50%;
z-index: 1;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transition: background-color 0.3s ease;
box-sizing: border-box; /* Add this to include border in the width and height */
}
.middle-x:hover, .pursuit-middle-x:hover {
background-color: rgba(255, 255, 255, 0.5);
box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.8);
transition: background-color 0.3s ease;
}
.middle-x::before,
.pursuit-middle-x::before,
.middle-x::after,
.pursuit-middle-x::after {
content: '';
position: absolute;
width: 50%;
height: 2px;
background-color: #000;
transition: background-color 0.3s ease;
}
.middle-x::before,
.pursuit-middle-x::before {
transform: rotate(45deg);
}
.middle-x::after,
.pursuit-middle-x::after {
transform: rotate(-45deg);
}
.instruction-title {
position: fixed;
top: 170px;
left: 50%;
transform: translateX(-50%);
padding: 10px;
z-index: 998;
}
.instruction-text {
position: fixed;
bottom: 170px;
left: 50%;
transform: translateX(-50%);
font-size: 16px;
padding: 10px;
z-index: 998;
}
/* Pursuit Backup Radial Menu */
.circle-menu a.pursuit-backup-light:hover i {
color: #0080f8;
}
.circle-menu a.pursuit-backup-medium:hover i {
color: #014b8f;
}
.circle-menu a.pursuit-backup-heavy:hover i {
color: #001e39;
}
.circle-menu a.pursuit-backup-air:hover i {
color: #00a2dd;
}
.circle-menu a.pursuit-backup-army:hover i {
color: #647b32;
}
.circle-menu .pursuit-backup-light {
transform: rotate(calc(1 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-1 * var(--pursuit-angle)));
-webkit-transform: rotate(calc(1 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-1 * var(--pursuit-angle)));
-ms-transform: rotate(calc(1 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-1 * var(--pursuit-angle)));
}
.circle-menu .pursuit-backup-medium {
transform: rotate(calc(2 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-2 * var(--pursuit-angle)));
-webkit-transform: rotate(calc(2 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-2 * var(--pursuit-angle)));
-ms-transform: rotate(calc(2 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-2 * var(--pursuit-angle)));
}
.circle-menu .pursuit-backup-heavy {
transform: rotate(calc(3 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-3 * var(--pursuit-angle)));
-webkit-transform: rotate(calc(3 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-3 * var(--pursuit-angle)));
-ms-transform: rotate(calc(3 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-3 * var(--pursuit-angle)));
}
.circle-menu .pursuit-backup-air {
transform: rotate(calc(4 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-4 * var(--pursuit-angle)));
-webkit-transform: rotate(calc(4 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-4 * var(--pursuit-angle)));
-ms-transform: rotate(calc(4 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-4 * var(--pursuit-angle)));
}
.circle-menu .pursuit-backup-army {
transform: rotate(calc(5 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-5 * var(--pursuit-angle)));
-webkit-transform: rotate(calc(5 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-5 * var(--pursuit-angle)));
-ms-transform: rotate(calc(5 * var(--pursuit-angle))) translate(var(--pursuit-radius)) rotate(calc(-5 * var(--pursuit-angle)));
}
/* Pursuit Mode UI */
.pursuit-container {
position: fixed;
top: 115px;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
display: flex;
flex-direction: column;
align-items: center;
width: 300px; /* Match lightbar width */
}
.lightbar-container {
position: relative;
}
.lightbar {
width: 300px;
height: 40px;
background: linear-gradient(90deg, rgba(0,0,0,0.2), rgba(0,0,0,0.3), rgba(0,0,0,0.2));
border-radius: 10px;
position: relative;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
}
/* Animated gradient background */
.lightbar::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(90deg,
rgba(24, 116, 255, 0.3),
rgba(255, 43, 43, 0.3));
animation: gradientMove 2s infinite;
z-index: 0;
}
@keyframes gradientMove {
0% {
opacity: 0;
background: linear-gradient(90deg,
rgba(24, 116, 255, 0.3),
rgba(255, 43, 43, 0.3));
}
50% {
opacity: 1;
background: linear-gradient(90deg,
rgba(255, 43, 43, 0.3),
rgba(24, 116, 255, 0.3));
}
100% {
opacity: 0;
background: linear-gradient(90deg,
rgba(24, 116, 255, 0.3),
rgba(255, 43, 43, 0.3));
}
}
.pursuit-text {
position: absolute;
width: 100%;
text-align: center;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #fff;
font-weight: 800;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 16px;
text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
animation: pulseText 2s infinite;
z-index: 1;
}
.pursuit-text::before {
content: '»»»';
margin-right: 10px;
animation: arrowPulse 1s infinite;
}
.pursuit-text::after {
content: '«««';
margin-left: 10px;
animation: arrowPulse 1s infinite;
}
@keyframes pulseText {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.7;
}
}
@keyframes arrowPulse {
0%, 100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.5;
transform: scale(0.95);
}
}
.pursuit-hotkey-hint-container {
width: 100%;
text-align: center;
}
.pursuit-hotkey-hint {
font-size: 11px;
font-style: italic;
color: rgba(255, 255, 255, 0.7);
text-align: center;
text-shadow: 0 0 5px rgba(255, 255, 255, 0.5);
font-family: inherit;
margin-top: 2px;
width: 100%;
display: inline-block;
}
/* Screen Flash */
.screen-flash-left {
position: fixed;
left: 0;
top: 0;
bottom: 0;
width: 500px;
background: linear-gradient(90deg, rgba(255,0,0,0.2) 0%, rgba(255,0,0,0) 100%);
animation: screenFlashLeft 2s infinite;
pointer-events: none;
z-index: 9999;
}
.screen-flash-right {
position: fixed;
right: 0;
top: 0;
bottom: 0;
width: 500px;
background: linear-gradient(-90deg, rgba(0,0,255,0.2) 0%, rgba(0,0,255,0) 100%);
animation: screenFlashRight 2s infinite;
pointer-events: none;
z-index: 9999;
}
@keyframes screenFlashLeft {
0%, 100% { opacity: 0; }
12.5% { opacity: 1; }
25% { opacity: 0; }
37.5% { opacity: 1; }
50% { opacity: 0; }
}
@keyframes screenFlashRight {
50%, 100% { opacity: 0; }
62.5% { opacity: 1; }
75% { opacity: 0; }
87.5% { opacity: 1; }
100% { opacity: 0; }
}
/* BLUR / GRADIENT */
.blur-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: radial-gradient(ellipse at center, rgba(255,255,255,0) 0%,rgba(0,0,0,0.8) 100%);
pointer-events: none;
z-index: 0;
}
/* Dispatch message icon */
.dispatchmessageicon {
position: fixed;
right: var(--dispatch-icon-right);
bottom: var(--dispatch-icon-bottom);
z-index: 1;
border-radius: 10px;
background-color: var(--interaction-bg-color);
box-shadow: var(--interaction-box-shadow);
padding: 15px;
animation: fadeIn 0.3s ease-in-out;
}
/* ID card display */
.profile-picture {
background: #2c2c2c; /* Fallback color */
}
.profile-picture[src=""] {
display: none;
}
.license-item {
padding: 5px;
margin: 5px 0;
border-radius: 4px;
background: rgba(255, 255, 255, 0.1);
}
.license-item i {
margin-right: 5px;
}
.license-status {
padding: 5px;
margin: 5px 0;
border-radius: 4px;
background: rgba(255, 255, 255, 0.05);
}
.license-status i {
margin-right: 5px;
}
.license-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.25rem 0.75rem;
border-radius: 4px;
background: rgba(0, 0, 0, 0.3);
font-size: 0.875rem;
}
.license-badge i {
font-size: 1rem;
}
/* Questioning */
#ped-interaction-questioning {
position: fixed;
right: 10px;
top: 50%;
transform: translateY(-50%);
z-index: 1000;
display: flex;
flex-direction: column;
gap: 1.5vh;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
/* QUESTION BUTTONS */
.gold-dot {
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: gold;
box-shadow: 0 0 6px 2px rgba(255, 215, 0, 0.5);
margin-right: 1rem;
}
.btn-glass {
position: relative;
background: transparent;
border: none;
background: linear-gradient(90deg, rgba(0, 0, 0, 0.0) 0%, rgba(0, 0, 0, 0.85) 100%);
/* box-shadow: 0 4px 24px rgba(0,0,0,0.10); */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
transition: transform 0.3s ease;
overflow: hidden;
}
.question-btn {
text-align: left;
white-space: normal;
height: auto;
min-height: 48px;
}
.question-text {
line-height: 1.4;
text-align: left;
white-space: pre-line;
}
/* The sliding background element */
.btn-glass::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 100%;
background: linear-gradient(90deg, rgba(0, 0, 0, 0.0) 0%, rgba(0, 0, 0, 0.85) 100%);
transform: translateX(100%);
transition: transform 0.3s ease;
z-index: -1;
}
.btn-glass:hover {
transform: scale(1.03);
}
.btn-glass:hover::before {
transform: translateX(0);
}
/* Questioning Answers */
#question-answers-list {
position: fixed;
left: 15%;
top: 15%;
z-index: 1000;
display: block;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
max-width: 400px;
}
.chat-history::-webkit-scrollbar {
width: 6px;
}
.chat-history::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
border-radius: 3px;
}
.chat-history::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.2);
border-radius: 3px;
}
.chat-history::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.3);
}
/* Dual steering mode */
#dual-steering-mode {
position: absolute;
bottom: var(--dual-steering-mode-prompt-y, 20px);
right: var(--dual-steering-mode-prompt-x, 20px);
z-index: 1200;
display: flex;
flex-direction: column;
gap: 8px;
padding: 14px 16px;
border-radius: 10px;
background: rgba(0, 0, 0, 0.15);
box-shadow: 0 6px 24px rgba(0,0,0,0.35);
color: #fff;
min-width: 260px;
}
.dual-steering-mode-title {
font-weight: 700;
font-size: 13px;
letter-spacing: .04em;
text-transform: uppercase;
opacity: .9;
}
.dual-steering-mode-hint-row {
display: flex;
align-items: center;
gap: 10px;
}
.dual-steering-mode-key {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 28px;
height: 28px;
padding: 0 8px;
border-radius: 6px;
background: linear-gradient(180deg, rgba(255,255,255,0.12), rgba(255,255,255,0.05));
border: 1px solid rgba(255,255,255,0.15);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15);
font-weight: 700;
font-size: 12px;
}
.dual-steering-mode-action {
font-size: 13px;
opacity: .9;
}
.dual-steering-mode-sep {
height: 1px;
background: rgba(255,255,255,0.5);
margin: 4px 0 6px 0;
}
/* Layout Mode */
.layout-mode-element {
border: 2px dashed #ffc107 !important;
box-shadow: 0 0 10px rgba(255, 193, 7, 0.5) !important;
transition: all 0.2s ease !important;
animation: none !important;
animation-play-state: paused !important;
}
.layout-mode-element.card {
transition: all 0.2s ease !important;
}
.layout-mode-element.card:hover {
filter: brightness(1.2) !important;
transform: none !important;
}
.layout-mode-element * {
pointer-events: none !important;
}
.layout-mode-element {
pointer-events: auto !important;
}
.layout-mode-element:hover {
border-color: #ff6b35 !important;
box-shadow: 0 0 15px rgba(255, 107, 53, 0.7) !important;
}
.layout-mode-element.dragging {
border-color: #28a745 !important;
box-shadow: 0 0 20px rgba(40, 167, 69, 0.8) !important;
opacity: 0.9 !important;
transform-origin: center !important;
animation: none !important;
transition: none !important;
z-index: 9999 !important;
}
.layout-mode-element.dragging.card:hover {
filter: none !important;
transform: none !important;
transition: none !important;
}
.layout-mode-element .btn,
.layout-mode-element .card-header,
.layout-mode-element .card-body,
.layout-mode-element .card-footer {
pointer-events: none !important;
}
.layout-mode-element[class*="fade"],
.layout-mode-element[class*="slide"],
.layout-mode-element[class*="collapse"] {
animation: none !important;
transition: none !important;
}
.layout-mode-element::before {
content: '🖱️';
position: absolute;
top: -15px;
right: -15px;
background: #ffc107;
color: #000;
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
z-index: 1000;
transition: all 0.2s ease;
}
.layout-mode-element:hover::before {
background: #ff6b35;
transform: scale(1.1);
}
.layout-mode-element.dragging::before {
content: '✋';
background: #28a745;
transform: scale(1.2);
}
.layout-control-panel {
scrollbar-width: thin;
scrollbar-color: #ffc107 rgba(255, 255, 255, 0.1);
}
.layout-control-panel::-webkit-scrollbar {
width: 6px;
}
.layout-control-panel::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.1);
border-radius: 3px;
}
.layout-control-panel::-webkit-scrollbar-thumb {
background: #ffc107;
border-radius: 3px;
}
.layout-control-panel::-webkit-scrollbar-thumb:hover {
background: #ff6b35;
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes fadeInOut {
0% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.8);
}
20% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
80% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.8);
}
}