t2-mapper/app/style.css
2025-12-16 23:42:45 -08:00

420 lines
7.1 KiB
CSS

html {
box-sizing: border-box;
margin: 0;
padding: 0;
background: black;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
html {
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
Oxygen,
Ubuntu,
Cantarell,
"Open Sans",
"Helvetica Neue",
sans-serif;
font-size: 100%;
}
body {
margin: 0;
padding: 0;
}
main {
width: 100vw;
height: 100vh;
}
#canvasContainer {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
}
#controls {
display: flex;
align-items: center;
gap: 20px;
position: fixed;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.5);
color: #fff;
padding: 8px 12px 8px 8px;
border-radius: 0 0 4px 0;
font-size: 13px;
z-index: 1;
}
input[type="range"] {
max-width: 80px;
}
.CheckboxField {
display: flex;
align-items: center;
gap: 6px;
}
.Field {
display: flex;
align-items: center;
gap: 6px;
}
.IconButton {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
margin: 0 0 0 -12px;
font-size: 15px;
padding: 0;
border-top: 1px solid rgba(255, 255, 255, 0.3);
border-left: 1px solid rgba(255, 255, 255, 0.3);
border-right: 1px solid rgba(200, 200, 200, 0.3);
border-bottom: 1px solid rgba(200, 200, 200, 0.3);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
border-radius: 4px;
background: rgba(3, 82, 147, 0.6);
color: #fff;
cursor: pointer;
transform: translate(0, 0);
transition:
background 0.2s,
border-color 0.2s;
}
.IconButton:hover {
background: rgba(0, 98, 179, 0.8);
border-color: rgba(255, 255, 255, 0.4);
}
.IconButton:active {
background: rgba(0, 98, 179, 0.7);
border-color: rgba(255, 255, 255, 0.3);
transform: translate(0, 1px);
}
.CopyCoordinatesButton[data-copied="true"] {
background: rgba(0, 117, 213, 0.9);
border-color: rgba(255, 255, 255, 0.4);
}
.CopyCoordinatesButton .ClipboardCheck {
display: none;
opacity: 1;
}
.CopyCoordinatesButton[data-copied="true"] .ClipboardCheck {
display: block;
animation: showClipboardCheck 220ms linear infinite;
}
.CopyCoordinatesButton[data-copied="true"] .MapPin {
display: none;
}
.StaticShapeLabel {
background: rgba(0, 0, 0, 0.5);
color: #fff;
font-size: 11px;
white-space: nowrap;
padding: 1px 3px;
border-radius: 1px;
text-align: center;
}
.StatsPanel {
left: auto !important;
right: 0;
}
.AxisLabel {
font-size: 12px;
pointer-events: none;
}
.AxisLabel[data-axis="x"] {
color: rgb(255, 153, 0);
}
.AxisLabel[data-axis="y"] {
color: rgb(153, 255, 0);
}
.AxisLabel[data-axis="z"] {
color: rgb(0, 153, 255);
}
/* MissionSelect combobox styles */
.MissionSelect-inputWrapper {
position: relative;
display: flex;
align-items: center;
}
.MissionSelect-shortcut {
position: absolute;
right: 7px;
font-family: system-ui, sans-serif;
font-size: 11px;
padding: 1px 4px;
border-radius: 3px;
background: rgba(255, 255, 255, 0.15);
color: rgba(255, 255, 255, 0.6);
pointer-events: none;
}
.MissionSelect-input[aria-expanded="true"] ~ .MissionSelect-shortcut {
display: none;
}
.MissionSelect-input {
width: 280px;
padding: 6px 36px 6px 8px;
font-size: 14px;
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 3px;
background: rgba(0, 0, 0, 0.6);
color: #fff;
outline: none;
}
.MissionSelect-input[aria-expanded="true"] {
padding-right: 8px;
}
.MissionSelect-input:focus {
border-color: rgba(255, 255, 255, 0.6);
}
.MissionSelect-input::placeholder {
color: transparent;
}
.MissionSelect-selectedValue {
position: absolute;
left: 8px;
right: 36px;
display: flex;
align-items: center;
gap: 6px;
pointer-events: none;
overflow: hidden;
}
.MissionSelect-input[aria-expanded="true"] ~ .MissionSelect-selectedValue {
display: none;
}
.MissionSelect-selectedName {
color: #fff;
font-weight: 600;
font-size: 14px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex-shrink: 1;
min-width: 0;
}
.MissionSelect-selectedValue > .MissionSelect-itemType {
flex-shrink: 0;
}
.MissionSelect-popover {
z-index: 100;
min-width: 320px;
max-height: var(--popover-available-height, 90vh);
overflow-y: auto;
overscroll-behavior: contain;
background: rgba(20, 20, 20, 0.95);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 3px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
}
.MissionSelect-list {
padding: 4px 0;
}
.MissionSelect-list:has(> .MissionSelect-group:first-child) {
padding-top: 0;
}
.MissionSelect-group {
padding-bottom: 4px;
}
.MissionSelect-groupLabel {
position: sticky;
top: 0;
padding: 6px 8px 6px 12px;
font-size: 13px;
font-weight: 600;
color: rgb(198, 202, 202);
background: rgba(58, 69, 72, 0.95);
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
z-index: 1;
}
.MissionSelect-group:not(:last-child) {
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}
.MissionSelect-item {
display: flex;
flex-direction: column;
gap: 1px;
margin: 4px 4px 0;
padding: 6px 8px;
border-radius: 4px;
cursor: pointer;
outline: none;
scroll-margin-top: 32px;
}
.MissionSelect-list > .MissionSelect-item:first-child {
margin-top: 0;
}
.MissionSelect-item[data-active-item] {
background: rgba(255, 255, 255, 0.15);
}
.MissionSelect-item[aria-selected="true"] {
background: rgba(100, 150, 255, 0.3);
}
.MissionSelect-itemHeader {
display: flex;
align-items: center;
gap: 6px;
}
.MissionSelect-itemName {
font-size: 14px;
font-weight: 600;
color: #fff;
}
.MissionSelect-itemTypes {
display: flex;
gap: 3px;
}
.MissionSelect-itemType {
font-size: 10px;
font-weight: 600;
padding: 2px 5px;
border-radius: 3px;
background: rgba(255, 157, 0, 0.4);
color: #fff;
}
.MissionSelect-itemType:hover {
background: rgba(255, 157, 0, 0.7);
}
.MissionSelect-itemMissionName {
font-size: 12px;
color: rgba(255, 255, 255, 0.5);
}
.MissionSelect-noResults {
padding: 12px 8px;
font-size: 13px;
color: rgba(255, 255, 255, 0.5);
text-align: center;
}
.LoadingSpinner {
width: 48px;
height: 48px;
border: 4px solid rgba(255, 255, 255, 0.2);
border-top-color: white;
border-radius: 50%;
animation: LoadingSpinner-spin 1s linear infinite;
}
@keyframes LoadingSpinner-spin {
to {
transform: rotate(360deg);
}
}
#loadingIndicator {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
pointer-events: none;
z-index: 1;
opacity: 0.8;
}
#loadingIndicator[data-complete="true"] {
animation: loadingComplete 0.3s ease-out forwards;
}
@keyframes loadingComplete {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.LoadingProgress {
width: 200px;
height: 4px;
background: rgba(255, 255, 255, 0.2);
border-radius: 2px;
overflow: hidden;
}
.LoadingProgress-bar {
height: 100%;
background: white;
border-radius: 2px;
transition: width 0.1s ease-out;
}
.LoadingProgress-text {
font-size: 14px;
color: rgba(255, 255, 255, 0.7);
font-variant-numeric: tabular-nums;
}
@keyframes showClipboardCheck {
0% {
opacity: 1;
}
100% {
opacity: 0.2;
}
}