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; } }