GEOINT-Modus aus Monitor entfernt

Wird als eigenstaendige Anwendung auf separater Subdomain neu aufgebaut.
Alle GEOINT-Dateien entfernt, dashboard.html/components.js/main.py
auf pre-GEOINT Stand zurueckgesetzt.
Dieser Commit ist enthalten in:
Claude Dev
2026-03-24 11:06:19 +01:00
Ursprung 8212617276
Commit e64447ab7f
14 geänderte Dateien mit 4112 neuen und 1999 gelöschten Zeilen

Datei anzeigen

@@ -1,321 +0,0 @@
/* =====================================================================
GEOINT-Modus: Taktische Kartenansicht mit Echtzeit-Datenlayern
===================================================================== */
/* --- Toggle-Checkbox im Card-Header --- */
.geoint-toggle {
display: inline-flex;
align-items: center;
gap: 5px;
cursor: pointer;
user-select: none;
margin-right: 8px;
}
.geoint-toggle input[type="checkbox"] {
accent-color: #00ff88;
width: 13px;
height: 13px;
cursor: pointer;
}
.geoint-toggle-label {
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 12px;
font-weight: 700;
font-weight: 700;
letter-spacing: 1.5px;
text-transform: uppercase;
color: var(--text-secondary);
transition: color 0.2s;
}
.geoint-toggle input:checked + .geoint-toggle-label {
color: #00ff88;
text-shadow: 0 0 6px rgba(0, 255, 136, 0.4);
}
/* --- Taktisches Styling (aktiv) --- */
.geoint-active .leaflet-tile-pane {
filter: brightness(0.88) contrast(1.08) saturate(0.85);
transition: filter 0.4s ease;
}
/* Scanline-Overlay (subtiler Effekt, kein Blocking) */
.geoint-active .map-empty { display: none !important; }
/* Gruener Akzent am Card-Header wenn aktiv */
.map-card.geoint-card-active .card-header {
border-bottom: 2px solid rgba(0, 255, 136, 0.25);
}
/* --- Sub-Layer Control Panel --- */
.geoint-sub-control {
background: rgba(11, 17, 33, 0.92);
border: 1px solid rgba(0, 255, 136, 0.2);
border-radius: 6px;
padding: 10px 12px;
min-width: 170px;
backdrop-filter: blur(8px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}
.geoint-sub-control h4 {
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 9px;
font-weight: 700;
letter-spacing: 2px;
text-transform: uppercase;
color: #00ff88;
margin: 0 0 8px 0;
padding-bottom: 6px;
border-bottom: 1px solid rgba(0, 255, 136, 0.15);
}
.geoint-sub-item {
display: flex;
align-items: center;
gap: 6px;
padding: 3px 0;
}
.geoint-sub-item input[type="checkbox"] {
accent-color: #00ff88;
width: 12px;
height: 12px;
cursor: pointer;
flex-shrink: 0;
}
.geoint-sub-item label {
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 11px;
color: rgba(255, 255, 255, 0.8);
cursor: pointer;
white-space: nowrap;
}
.geoint-sub-item label .geoint-dot {
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
margin-right: 4px;
vertical-align: middle;
}
.geoint-dot-flights { background: #00ff88; }
.geoint-dot-ships { background: #4499ff; }
.geoint-dot-quakes { background: #ff4444; }
.geoint-dot-gdelt { background: #44aaff; }
.geoint-dot-heatmap { background: #ff8800; }
.geoint-dot-coords { background: #aaaaaa; }
.geoint-dot-distance { background: #ff2222; }
.geoint-sub-separator {
height: 1px;
background: rgba(0, 255, 136, 0.1);
margin: 5px 0;
}
/* --- Flugzeug-Icons --- */
.geoint-aircraft {
display: flex;
align-items: center;
justify-content: center;
transition: filter 0.15s;
}
.geoint-aircraft:hover {
filter: drop-shadow(0 0 6px #00ff88);
}
.geoint-aircraft svg {
width: 14px;
height: 14px;
}
/* --- Schiffs-Icons --- */
.geoint-ship {
display: flex;
align-items: center;
justify-content: center;
transition: filter 0.15s;
}
.geoint-ship:hover {
filter: drop-shadow(0 0 4px #4499ff);
}
/* --- Erdbeben Puls-Animation --- */
.geoint-quake-marker {
animation: geoint-pulse 2.5s ease-in-out infinite;
}
@keyframes geoint-pulse {
0%, 100% { opacity: 0.7; }
50% { opacity: 1; }
}
/* --- GDELT Nachrichtenmarker --- */
.geoint-gdelt-icon {
display: flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
background: rgba(68, 170, 255, 0.85);
border: 1.5px solid rgba(68, 170, 255, 1);
border-radius: 50%;
font-size: 12px;
font-weight: 700;
color: #fff;
font-weight: 700;
box-shadow: 0 0 4px rgba(68, 170, 255, 0.5);
}
/* --- Koordinatenanzeige --- */
.geoint-coord-display {
background: rgba(11, 17, 33, 0.88);
border: 1px solid rgba(0, 255, 136, 0.2);
border-radius: 4px;
padding: 4px 8px;
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 11px;
color: #00ff88;
letter-spacing: 0.5px;
white-space: nowrap;
backdrop-filter: blur(4px);
}
/* --- Distanzmessung --- */
.geoint-distance-label {
box-shadow: 0 2px 8px rgba(0,0,0,0.6);
background: rgba(11, 17, 33, 0.9);
border: 1px solid rgba(255, 34, 34, 0.6);
border-radius: 3px;
padding: 2px 6px;
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 12px;
font-weight: 700;
color: #ffffff;
white-space: nowrap;
}
/* --- Timeline-Slider --- */
.geoint-timeline {
display: none;
padding: 6px 12px 8px;
background: rgba(11, 17, 33, 0.6);
border-top: 1px solid rgba(0, 255, 136, 0.1);
}
.geoint-active .geoint-timeline {
display: flex;
align-items: center;
gap: 10px;
}
.geoint-timeline input[type="range"] {
flex: 1;
height: 4px;
-webkit-appearance: none;
appearance: none;
background: rgba(255, 255, 255, 0.12);
border-radius: 2px;
outline: none;
cursor: pointer;
}
.geoint-timeline input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 14px;
height: 14px;
background: #00ff88;
border-radius: 50%;
border: 2px solid rgba(11, 17, 33, 0.8);
cursor: pointer;
box-shadow: 0 0 6px rgba(0, 255, 136, 0.5);
}
.geoint-timeline input[type="range"]::-moz-range-thumb {
width: 14px;
height: 14px;
background: #00ff88;
border-radius: 50%;
border: 2px solid rgba(11, 17, 33, 0.8);
cursor: pointer;
}
.geoint-timeline-label {
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 12px;
font-weight: 700;
color: #00ff88;
min-width: 90px;
text-align: center;
}
.geoint-timeline-btn {
background: none;
border: 1px solid rgba(0, 255, 136, 0.3);
border-radius: 3px;
color: #00ff88;
font-size: 11px;
padding: 2px 6px;
cursor: pointer;
font-family: var(--font-mono, 'Courier New', monospace);
}
.geoint-timeline-btn:hover {
background: rgba(0, 255, 136, 0.1);
}
/* --- Popup-Styling fuer GEOINT-Layer --- */
/* Dunkler Popup-Hintergrund fuer GEOINT-Layer */
.geoint-leaflet-popup .leaflet-popup-content-wrapper {
background: rgba(11, 17, 33, 0.95);
border: 1px solid rgba(0, 255, 136, 0.25);
border-radius: 6px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}
.geoint-leaflet-popup .leaflet-popup-tip {
background: rgba(11, 17, 33, 0.95);
}
.geoint-leaflet-popup .leaflet-popup-close-button {
color: rgba(255, 255, 255, 0.6);
}
.geoint-leaflet-popup .leaflet-popup-close-button:hover {
color: #00ff88;
}
.geoint-popup {
font-family: var(--font-mono, 'Courier New', monospace);
font-size: 12px;
line-height: 1.6;
color: #ffffff;
}
.geoint-popup strong {
color: #00ff88;
font-size: 13px;
}
.geoint-popup .geoint-popup-row {
display: flex;
gap: 8px;
}
.geoint-popup .geoint-popup-key {
color: rgba(255, 255, 255, 0.55);
min-width: 40px;
}
/* --- Light Theme Overrides --- */
[data-theme="light"] .geoint-sub-control {
background: rgba(240, 243, 248, 0.95);
border-color: rgba(0, 160, 80, 0.25);
}
[data-theme="light"] .geoint-sub-control h4 {
color: #008844;
}
[data-theme="light"] .geoint-sub-item label {
color: rgba(0, 0, 0, 0.75);
}
[data-theme="light"] .geoint-coord-display {
background: rgba(240, 243, 248, 0.92);
color: #006633;
border-color: rgba(0, 160, 80, 0.25);
}
[data-theme="light"] .geoint-timeline {
background: rgba(240, 243, 248, 0.7);
border-top-color: rgba(0, 160, 80, 0.15);
}
[data-theme="light"] .geoint-timeline input[type="range"]::-webkit-slider-thumb {
background: #008844;
}
[data-theme="light"] .geoint-timeline-label {
color: #006633;
}
[data-theme="light"] .geoint-toggle input:checked + .geoint-toggle-label {
color: #008844;
text-shadow: none;
}
[data-theme="light"] .geoint-active .leaflet-tile-pane {
filter: brightness(0.95) contrast(1.05) saturate(0.9);
}
/* Light theme scanline overlay disabled */

Datei anzeigen

@@ -0,0 +1,188 @@
/* =================================================================
AegisSight OSINT Monitor - Cluster Graph Styles
Hierarchical country-based network visualization
================================================================= */
/* ---- Breadcrumb ---- */
.cluster-breadcrumb {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
background: rgba(15, 23, 42, 0.6);
border-bottom: 1px solid var(--border, #1e293b);
font-size: 13px;
min-height: 36px;
flex-shrink: 0;
}
.breadcrumb-item {
color: #94a3b8;
font-size: 13px;
}
.breadcrumb-item.active {
color: #f1f5f9;
font-weight: 600;
}
.breadcrumb-item.clickable {
cursor: pointer;
color: #60a5fa;
transition: color 0.15s;
}
.breadcrumb-item.clickable:hover {
color: #93bbfc;
text-decoration: underline;
}
.breadcrumb-separator {
color: #475569;
font-size: 14px;
user-select: none;
}
.cluster-back-btn {
display: inline-flex;
align-items: center;
gap: 4px;
background: transparent;
border: 1px solid #334155;
color: #94a3b8;
padding: 3px 10px;
border-radius: 4px;
cursor: pointer;
font-size: 12px;
font-family: inherit;
transition: all 0.15s;
white-space: nowrap;
}
.cluster-back-btn:hover {
border-color: #60a5fa;
color: #60a5fa;
background: rgba(96, 165, 250, 0.08);
}
/* ---- View Toggle Button ---- */
.network-view-toggle {
display: inline-flex;
align-items: center;
gap: 0;
background: rgba(30, 41, 59, 0.6);
border: 1px solid #334155;
border-radius: 6px;
padding: 2px;
margin-right: 8px;
}
.network-view-toggle-btn {
padding: 5px 12px;
background: transparent;
border: none;
color: #94a3b8;
font-size: 12px;
font-family: inherit;
cursor: pointer;
border-radius: 4px;
transition: all 0.2s;
white-space: nowrap;
}
.network-view-toggle-btn.active {
background: #334155;
color: #f1f5f9;
font-weight: 600;
}
.network-view-toggle-btn:hover:not(.active) {
color: #e2e8f0;
background: rgba(51, 65, 85, 0.4);
}
/* ---- Cluster Graph SVG ---- */
.cg-zoom-layer {
/* Smooth transitions handled by d3 */
}
/* Country nodes */
.cg-country-node {
transition: filter 0.2s;
}
.cg-country-circle {
transition: stroke-width 0.2s, opacity 0.2s;
filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3));
}
.cg-country-node:hover .cg-country-circle {
filter: drop-shadow(0 4px 16px rgba(241, 245, 249, 0.15));
}
.cg-country-label {
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);
user-select: none;
}
.cg-country-count {
user-select: none;
}
/* Detail nodes */
.cg-detail-node circle {
transition: stroke 0.15s, stroke-width 0.15s, opacity 0.15s;
}
.cg-detail-node text {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
user-select: none;
}
/* Links */
.cg-links line,
.cg-detail-links line {
pointer-events: none;
}
/* Legend */
.cg-legend text {
user-select: none;
}
/* ---- Tooltip ---- */
.cg-tooltip {
pointer-events: none;
backdrop-filter: blur(8px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
line-height: 1.5;
}
.cg-tooltip hr {
border: none;
border-top: 1px solid #334155;
margin: 4px 0;
}
/* ---- Responsive ---- */
@media (max-width: 768px) {
.cluster-breadcrumb {
padding: 6px 12px;
font-size: 12px;
}
.cluster-back-btn {
font-size: 11px;
padding: 2px 8px;
}
.network-view-toggle-btn {
padding: 4px 8px;
font-size: 11px;
}
}