7736 lines
144 KiB
CSS
7736 lines
144 KiB
CSS
:root {
|
|
--font-sans: "Bahnschrift", "Segoe UI Variable", "Segoe UI", Tahoma, sans-serif;
|
|
--font-mono: "JetBrains Mono", "Cascadia Code", Consolas, monospace;
|
|
--color-bg: #eef2f7;
|
|
--color-panel-bg: #ffffff;
|
|
--color-panel-muted: #f2f6fb;
|
|
--color-border: #d5dfeb;
|
|
--color-border-strong: #c3cfdf;
|
|
--color-text-primary: #0f172a;
|
|
--color-text-secondary: #4b5a70;
|
|
--color-text-muted: #6b7a90;
|
|
--color-accent: #2563eb;
|
|
--color-accent-strong: #1e40af;
|
|
--color-accent-soft: #e7efff;
|
|
--color-accent-glow: rgba(37, 99, 235, 0.18);
|
|
--color-success: #16a34a;
|
|
--color-danger: #dc2626;
|
|
--color-warning: #f59e0b;
|
|
--color-info: #0ea5e9;
|
|
--color-envi: #0ea5a4;
|
|
--shadow-panel: 0 8px 18px rgba(15, 23, 42, 0.08);
|
|
--shadow-soft: 0 2px 8px rgba(15, 23, 42, 0.07);
|
|
}
|
|
|
|
*, *::before, *::after {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html, body {
|
|
margin: 0;
|
|
padding: 0;
|
|
height: 100vh;
|
|
width: 100vw;
|
|
overflow: hidden;
|
|
font-family: var(--font-sans);
|
|
font-size: 14px;
|
|
background-color: var(--color-bg);
|
|
background-image: linear-gradient(180deg, #eef2f7 0%, #f7f9fc 100%);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
#app-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100vh;
|
|
width: 100vw;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.main-layout {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.main-layout--standalone {
|
|
padding: 12px 14px 16px;
|
|
align-items: stretch;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.center-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 1;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.panel {
|
|
width: 300px;
|
|
flex-shrink: 0;
|
|
background-color: var(--color-panel-bg);
|
|
border-right: 1px solid var(--color-border-strong);
|
|
box-shadow: var(--shadow-panel);
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
.panel header {
|
|
padding: 10px 15px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: linear-gradient(135deg, #f9fbff 0%, #eef4ff 100%);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.panel h3 {
|
|
margin: 0;
|
|
font-size: 1.1em;
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
letter-spacing: 0.2px;
|
|
}
|
|
|
|
.header-buttons {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.panel-content {
|
|
overflow-y: auto;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.panel-footer {
|
|
padding: 10px 15px;
|
|
border-top: 1px solid var(--color-border);
|
|
background-color: var(--color-panel-muted);
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.footer-button {
|
|
flex: 1;
|
|
padding: 8px;
|
|
font-weight: 600;
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
background-color: #fff;
|
|
box-shadow: 0 6px 16px rgba(37, 99, 235, 0.12);
|
|
}
|
|
|
|
.footer-button:hover:not(:disabled) {
|
|
background-color: var(--color-accent-strong);
|
|
color: white;
|
|
box-shadow: 0 10px 20px rgba(37, 99, 235, 0.2);
|
|
}
|
|
|
|
#map-container {
|
|
flex-grow: 1;
|
|
width: 100%;
|
|
position: relative;
|
|
}
|
|
#map {
|
|
height: 100%;
|
|
width: 100%;
|
|
background-color: #dde6f4;
|
|
}
|
|
|
|
.map-region-locator {
|
|
position: absolute;
|
|
top: 12px;
|
|
left: 12px;
|
|
z-index: 820;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.map-region-toggle-btn {
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(255, 255, 255, 0.95);
|
|
color: var(--color-text-primary);
|
|
border-radius: 999px;
|
|
padding: 6px 12px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
box-shadow: var(--shadow-soft);
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
|
|
.map-region-toggle-btn.active {
|
|
border-color: var(--color-accent);
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.map-region-locator-panel {
|
|
width: min(320px, calc(100vw - 32px));
|
|
background: rgba(255, 255, 255, 0.97);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
padding: 10px;
|
|
box-shadow: var(--shadow-soft);
|
|
backdrop-filter: blur(6px);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.map-region-locator-title {
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.map-region-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.map-region-grid select {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.map-region-locator-hint {
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.map-region-locator-current {
|
|
font-size: 12px;
|
|
color: var(--color-accent-strong);
|
|
background: var(--color-accent-soft);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 5px 8px;
|
|
}
|
|
|
|
.map-region-locator-error {
|
|
font-size: 12px;
|
|
color: var(--color-danger);
|
|
word-break: break-word;
|
|
}
|
|
|
|
.map-region-locate-btn {
|
|
flex: 1;
|
|
padding: 7px 10px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.map-region-locator-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.map-region-clear-btn {
|
|
flex: 1;
|
|
padding: 7px 10px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.map-layer-switch {
|
|
position: absolute;
|
|
top: 12px;
|
|
right: 72px;
|
|
z-index: 800;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
padding: 8px 10px;
|
|
box-shadow: var(--shadow-soft);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
|
|
.map-layer-title {
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
color: var(--color-text-muted);
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.map-layer-buttons {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.map-layer-switch button {
|
|
font-size: 11px;
|
|
padding: 4px 8px;
|
|
border-radius: 999px;
|
|
border: 1px solid var(--color-border);
|
|
background-color: #fff;
|
|
color: var(--color-text-secondary);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.map-layer-switch button:hover:not(:disabled) {
|
|
background-color: var(--color-panel-muted);
|
|
}
|
|
|
|
.map-layer-switch button.active {
|
|
background-color: var(--color-accent-soft);
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.bottom-panel {
|
|
/* height 由内联样式控制 */
|
|
background-color: var(--color-panel-bg);
|
|
border-top: 1px solid var(--color-border);
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-shrink: 0;
|
|
z-index: 1000; /* 确保在地图之上 */
|
|
box-shadow: 0 -12px 30px rgba(15, 23, 42, 0.08);
|
|
}
|
|
|
|
.bottom-panel-header {
|
|
padding: 5px 15px;
|
|
background-color: var(--color-panel-muted);
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
cursor: row-resize;
|
|
user-select: none; /* 防止拖拽时选中文本 */
|
|
}
|
|
|
|
.bottom-panel-content {
|
|
flex-grow: 1;
|
|
overflow: auto;
|
|
padding: 0;
|
|
}
|
|
|
|
button {
|
|
font-size: 0.9em;
|
|
padding: 5px 10px;
|
|
border: 1px solid var(--color-border);
|
|
background-color: #fff;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
color: var(--color-text-primary);
|
|
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
|
|
transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
|
|
}
|
|
button:hover:not(:disabled) {
|
|
background-color: var(--color-panel-muted);
|
|
border-color: var(--color-border-strong);
|
|
box-shadow: 0 4px 10px rgba(15, 23, 42, 0.12);
|
|
}
|
|
button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.6;
|
|
}
|
|
button:focus-visible {
|
|
outline: none;
|
|
box-shadow: 0 0 0 3px var(--color-accent-glow);
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.data-list {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.panel-scroll-shell {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.virtual-list-viewport {
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.virtual-list-spacer {
|
|
position: relative;
|
|
width: 100%;
|
|
}
|
|
|
|
.virtual-list-content {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
will-change: transform;
|
|
}
|
|
|
|
.data-item, .pair-item {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 8px 15px;
|
|
min-height: 48px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
cursor: pointer;
|
|
box-shadow: inset 3px 0 0 transparent;
|
|
transition: background-color 0.15s, box-shadow 0.2s;
|
|
}
|
|
|
|
.batch-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 12px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
.batch-item-main {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.batch-item-main strong {
|
|
display: block;
|
|
font-size: 12px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.batch-item-meta {
|
|
font-size: 11px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.batch-engine-results,
|
|
.dinsar-engine-result-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.batch-engine-chip,
|
|
.dinsar-engine-result-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 22px;
|
|
padding: 3px 8px;
|
|
border-radius: 999px;
|
|
border: 1px solid rgba(100, 116, 139, 0.24);
|
|
background: rgba(148, 163, 184, 0.1);
|
|
color: #475569;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.batch-engine-chip.tone-ready,
|
|
.dinsar-engine-result-chip.tone-ready {
|
|
border-color: rgba(22, 163, 74, 0.26);
|
|
background: rgba(22, 163, 74, 0.1);
|
|
color: #166534;
|
|
}
|
|
|
|
.batch-engine-chip.tone-error,
|
|
.dinsar-engine-result-chip.tone-error {
|
|
border-color: rgba(220, 38, 38, 0.26);
|
|
background: rgba(220, 38, 38, 0.1);
|
|
color: #991b1b;
|
|
}
|
|
|
|
.batch-engine-chip.tone-warn,
|
|
.dinsar-engine-result-chip.tone-warn {
|
|
border-color: rgba(217, 119, 6, 0.28);
|
|
background: rgba(245, 158, 11, 0.12);
|
|
color: #92400e;
|
|
}
|
|
|
|
.batch-engine-chip.tone-info,
|
|
.dinsar-engine-result-chip.tone-info {
|
|
border-color: rgba(37, 99, 235, 0.26);
|
|
background: rgba(37, 99, 235, 0.1);
|
|
color: #1d4ed8;
|
|
}
|
|
|
|
.dinsar-catalog-cleanup-head {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
}
|
|
|
|
.dinsar-catalog-cleanup-plan {
|
|
display: grid;
|
|
gap: 10px;
|
|
margin-top: 10px;
|
|
}
|
|
.batch-item select,
|
|
.batch-item input {
|
|
font-size: 12px;
|
|
padding: 4px 6px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
}
|
|
.data-item:hover, .pair-item:hover {
|
|
background-color: var(--color-panel-muted);
|
|
box-shadow: inset 3px 0 0 var(--color-accent);
|
|
}
|
|
|
|
.data-item-name {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
flex-grow: 1;
|
|
margin-right: 10px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.radar-data-item {
|
|
align-items: flex-start;
|
|
gap: 10px;
|
|
}
|
|
|
|
.radar-data-item .data-item-name {
|
|
white-space: normal;
|
|
overflow: visible;
|
|
text-overflow: clip;
|
|
overflow-wrap: anywhere;
|
|
word-break: break-word;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.radar-data-item .data-item-controls {
|
|
padding-top: 1px;
|
|
}
|
|
|
|
.data-item-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: nowrap;
|
|
white-space: nowrap;
|
|
}
|
|
.preview-status-chip {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 999px;
|
|
font-size: 10px;
|
|
line-height: 1;
|
|
padding: 3px 7px;
|
|
color: var(--color-text-muted);
|
|
background: #fff;
|
|
}
|
|
.preview-status-chip.ready {
|
|
border-color: #a7f3d0;
|
|
color: #047857;
|
|
background: #ecfdf5;
|
|
}
|
|
.preview-status-chip.fallback {
|
|
border-color: #fde68a;
|
|
color: #92400e;
|
|
background: #fffbeb;
|
|
}
|
|
.preview-status-chip.failed {
|
|
border-color: #fecaca;
|
|
color: #b91c1c;
|
|
background: #fef2f2;
|
|
}
|
|
.preview-status-chip.none {
|
|
border-color: var(--color-border);
|
|
color: var(--color-text-muted);
|
|
background: #fff;
|
|
}
|
|
.data-info-btn {
|
|
border: 1px solid var(--color-border);
|
|
background: white;
|
|
color: var(--color-text-secondary);
|
|
font-size: 10px;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
}
|
|
.data-info-btn:hover {
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.data-preview-btn {
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
color: var(--color-text-secondary);
|
|
font-size: 10px;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.data-preview-btn.active {
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
background: var(--color-accent-soft);
|
|
}
|
|
|
|
.data-preview-btn:hover {
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
.data-rebuild-btn {
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
color: var(--color-text-secondary);
|
|
font-size: 10px;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
}
|
|
.data-rebuild-btn:hover:not(:disabled) {
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.dinsar-item {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 5px;
|
|
min-height: 102px;
|
|
}
|
|
.dinsar-info {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
align-items: center;
|
|
}
|
|
.dinsar-item .data-item-controls {
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
}
|
|
.dinsar-trace-info {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
font-size: 11px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.dinsar-trace-line {
|
|
display: flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
width: 100%;
|
|
flex-wrap: wrap;
|
|
word-break: break-all;
|
|
}
|
|
.dinsar-trace-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 1px 6px;
|
|
border-radius: 999px;
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
border: 1px solid #c7ddff;
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.ai-score {
|
|
font-size: 10px;
|
|
padding: 2px 5px;
|
|
border-radius: 4px;
|
|
font-weight: bold;
|
|
color: white;
|
|
}
|
|
.ai-score.good { background-color: var(--color-success); }
|
|
.ai-score.bad { background-color: var(--color-danger); }
|
|
.ai-score.medium { background-color: var(--color-warning); color: #111827; }
|
|
|
|
.ai-analyze-btn {
|
|
padding: 4px 8px;
|
|
font-size: 11px;
|
|
background-color: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
border: 1px solid #c7ddff;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
transition: all 0.2s;
|
|
}
|
|
.ai-analyze-btn:hover:not(:disabled) {
|
|
background-color: #d8e7ff;
|
|
color: var(--color-accent-strong);
|
|
}
|
|
.ai-analyze-btn:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.ai-analyze-btn.has-report {
|
|
background-color: #ecfdf3;
|
|
color: #15803d;
|
|
border-color: #bbf7d0;
|
|
}
|
|
.ai-analyze-btn.has-report:hover {
|
|
background-color: #d1fae5;
|
|
}
|
|
|
|
.result-analysis-box {
|
|
margin-top: 12px;
|
|
background-color: #fff;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
width: 100%;
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.analysis-header {
|
|
background-color: var(--color-panel-muted);
|
|
padding: 8px 12px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.analysis-header button {
|
|
padding: 2px 8px;
|
|
font-size: 10px;
|
|
background-color: #fff;
|
|
border: 1px solid var(--color-border);
|
|
color: var(--color-text-secondary);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.analysis-header button:hover {
|
|
background-color: #fff5f5;
|
|
color: var(--color-danger);
|
|
border-color: #fca5a5;
|
|
}
|
|
|
|
.analysis-body {
|
|
padding: 16px;
|
|
max-height: 450px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.label-buttons {
|
|
display: flex;
|
|
gap: 5px;
|
|
}
|
|
.label-btn {
|
|
padding: 4px 8px;
|
|
font-size: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-muted);
|
|
opacity: 0.8;
|
|
cursor: pointer;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.label-btn:hover { opacity: 1; }
|
|
.label-btn.active { opacity: 1; border-color: var(--color-accent); color: var(--color-accent-strong); }
|
|
.label-btn.good.active { background-color: #dcfce7; border-color: var(--color-success); color: #166534; }
|
|
.label-btn.bad.active { background-color: #fee2e2; border-color: var(--color-danger); color: #b91c1c; }
|
|
|
|
.ai-panel {
|
|
padding: 15px;
|
|
}
|
|
.ai-panel h4 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
}
|
|
.ollama-status-tag {
|
|
font-size: 12px;
|
|
padding: 2px 8px;
|
|
border-radius: 12px;
|
|
font-weight: bold;
|
|
}
|
|
.ollama-status-tag.online {
|
|
background-color: #ecfdf3;
|
|
color: #15803d;
|
|
border: 1px solid #bbf7d0;
|
|
}
|
|
.ollama-status-tag.offline {
|
|
background-color: #fee2e2;
|
|
color: #b91c1c;
|
|
border: 1px solid #fecaca;
|
|
}
|
|
.ai-desc {
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
margin-bottom: 15px;
|
|
}
|
|
.ai-stats {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
margin-bottom: 20px;
|
|
background: var(--color-panel-muted);
|
|
padding: 10px;
|
|
border-radius: 6px;
|
|
}
|
|
.stat-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
}
|
|
.stat-label {
|
|
font-size: 11px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.stat-value {
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
}
|
|
.stat-value.good { color: var(--color-success); }
|
|
.stat-value.bad { color: var(--color-danger); }
|
|
|
|
.ai-actions {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-analysis-panel {
|
|
padding: 0;
|
|
}
|
|
|
|
.dinsar-analysis-toolbar {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
padding: 14px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: var(--color-panel);
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 1;
|
|
}
|
|
|
|
.dinsar-analysis-toolbar h3 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
font-size: 16px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.dinsar-analysis-toolbar p {
|
|
margin: 4px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.dinsar-analysis-tabs {
|
|
display: inline-flex;
|
|
flex-shrink: 0;
|
|
gap: 4px;
|
|
padding: 3px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: var(--color-panel-muted);
|
|
}
|
|
|
|
.dinsar-analysis-tabs button {
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--color-text-secondary);
|
|
border-radius: 4px;
|
|
padding: 6px 10px;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.dinsar-analysis-tabs button.active-tab {
|
|
background: var(--color-panel);
|
|
color: var(--color-accent-strong);
|
|
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12);
|
|
}
|
|
|
|
.dinsar-analysis-body {
|
|
padding: 0;
|
|
}
|
|
|
|
.dinsar-analysis-body > .panel-content,
|
|
.dinsar-analysis-body > div {
|
|
min-height: 0;
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.dinsar-analysis-toolbar {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.dinsar-analysis-tabs {
|
|
width: 100%;
|
|
}
|
|
|
|
.dinsar-analysis-tabs button {
|
|
flex: 1;
|
|
}
|
|
}
|
|
.primary-btn {
|
|
background-color: var(--color-accent);
|
|
color: white;
|
|
border: none;
|
|
padding: 10px;
|
|
}
|
|
.primary-btn:hover:not(:disabled) {
|
|
background-color: var(--color-accent-strong);
|
|
}
|
|
.warmup-btn {
|
|
background-color: #fff7ed;
|
|
border: 1px solid #fdba74;
|
|
color: #c2410c;
|
|
padding: 10px;
|
|
font-weight: 600;
|
|
transition: all 0.2s;
|
|
}
|
|
.warmup-btn:hover:not(:disabled) {
|
|
background-color: #ffedd5;
|
|
border-color: #fb923c;
|
|
}
|
|
.secondary-btn {
|
|
background-color: white;
|
|
border: 1px solid var(--color-accent);
|
|
color: var(--color-accent);
|
|
padding: 10px;
|
|
}
|
|
.secondary-btn:hover:not(:disabled) {
|
|
background-color: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
border-color: var(--color-accent-strong);
|
|
}
|
|
.hint {
|
|
font-size: 11px;
|
|
color: var(--color-text-secondary);
|
|
margin: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.orbit-status {
|
|
font-size: 1.2em;
|
|
color: var(--color-danger);
|
|
}
|
|
.orbit-status.has-orbit {
|
|
color: var(--color-success);
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
margin: 0;
|
|
}
|
|
|
|
.tabs-header {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: nowrap;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 10px;
|
|
position: relative;
|
|
background-color: var(--color-panel-muted);
|
|
border-bottom: 1px solid var(--color-border);
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
scrollbar-width: thin;
|
|
}
|
|
.panel-tabs {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
padding: 10px 12px 12px;
|
|
background: #f8fafc;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.panel-tabs .tabs-header {
|
|
padding: 0;
|
|
background-color: transparent;
|
|
border-bottom: none;
|
|
scrollbar-gutter: stable both-edges;
|
|
}
|
|
|
|
.panel-tabs .group-tabs {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 6px;
|
|
overflow: visible;
|
|
}
|
|
|
|
.panel-tabs .group-tabs button {
|
|
width: 100%;
|
|
font-size: 12px;
|
|
padding: 8px 8px;
|
|
font-weight: 700;
|
|
background: #fff;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.panel-tabs .group-tabs button.active-tab {
|
|
background-color: #172033;
|
|
border-color: #172033;
|
|
color: #fff;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.panel-tabs .section-tabs button {
|
|
font-size: 12px;
|
|
padding: 6px 10px;
|
|
font-weight: 700;
|
|
background-color: #fff;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.panel-tabs .section-tabs button.active-tab {
|
|
background-color: #eaf1ff;
|
|
color: var(--color-accent-strong);
|
|
border-color: rgba(37, 99, 235, 0.28);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.panel-tabs .sub-tabs button {
|
|
font-size: 12px;
|
|
padding: 7px 10px;
|
|
background: #fff;
|
|
border: 1px solid transparent;
|
|
border-radius: 6px;
|
|
box-shadow: none;
|
|
}
|
|
.tabs-header button {
|
|
flex: 0 0 auto;
|
|
padding: 8px 12px;
|
|
border: none;
|
|
background-color: transparent;
|
|
font-size: 0.85em;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s, color 0.2s, border-color 0.2s;
|
|
border-radius: 6px;
|
|
color: var(--color-text-secondary);
|
|
min-height: 34px;
|
|
line-height: 1.1;
|
|
white-space: nowrap;
|
|
}
|
|
.tabs-header button:hover {
|
|
background-color: #eef3fb;
|
|
color: var(--color-text-primary);
|
|
}
|
|
.tabs-header button.active-tab {
|
|
color: var(--color-accent-strong);
|
|
background-color: #eaf1ff;
|
|
border-color: rgba(37, 99, 235, 0.28);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.left-tabs button {
|
|
font-size: 0.82em;
|
|
}
|
|
|
|
.tabs-header::-webkit-scrollbar {
|
|
height: 6px;
|
|
}
|
|
.tabs-header::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
.tabs-header::-webkit-scrollbar-thumb {
|
|
background: rgba(15, 23, 42, 0.18);
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.ps-stack {
|
|
padding: 10px 15px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.ps-stack-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 8px;
|
|
}
|
|
.ps-stack-header h4 {
|
|
margin: 0;
|
|
font-size: 1em;
|
|
}
|
|
.preview-button {
|
|
font-size: 0.8em;
|
|
padding: 3px 8px;
|
|
}
|
|
.ps-stack-preview-actions {
|
|
display: flex;
|
|
gap: 6px;
|
|
flex: 0 0 auto;
|
|
}
|
|
.preview-button-secondary {
|
|
background: var(--color-panel-muted);
|
|
color: var(--color-text-primary);
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
.ps-stack-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0;
|
|
min-height: 0;
|
|
}
|
|
.ps-stack-list-viewport {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: var(--color-panel-muted);
|
|
}
|
|
.ps-stack-list-content {
|
|
list-style: none;
|
|
padding-left: 0;
|
|
margin: 0;
|
|
}
|
|
.ps-stack-item {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
padding: 4px 10px;
|
|
min-height: 24px;
|
|
border-bottom: 1px solid rgba(15, 23, 42, 0.05);
|
|
}
|
|
.ps-stack-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
.ps-stack-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.pair-item {
|
|
padding: 10px 14px;
|
|
min-height: 176px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
gap: 10px;
|
|
align-items: flex-start;
|
|
}
|
|
.pair-item:hover .pair-info {
|
|
cursor: pointer;
|
|
}
|
|
.pair-info {
|
|
font-size: 13px;
|
|
flex-grow: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.visibility-toggle {
|
|
background: none;
|
|
border: 1px solid transparent;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
padding: 2px 6px;
|
|
color: var(--color-text-secondary);
|
|
transition: all 0.2s;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.visibility-toggle:hover {
|
|
background-color: var(--color-panel-muted);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.visibility-toggle.visible {
|
|
color: var(--color-accent-strong);
|
|
background-color: var(--color-accent-soft);
|
|
border-color: #c7ddff;
|
|
font-weight: 500;
|
|
}
|
|
.pair-info strong {
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
display: block;
|
|
margin-bottom: 5px;
|
|
color: var(--color-text-primary);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.pair-scenes {
|
|
display: grid;
|
|
gap: 3px;
|
|
margin-bottom: 7px;
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
color: var(--color-text-secondary);
|
|
line-height: 1.35;
|
|
}
|
|
.pair-scenes span {
|
|
overflow-wrap: anywhere;
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 3;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
}
|
|
.pair-details {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px 10px;
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.pair-status-line {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
margin-top: 7px;
|
|
font-size: 11px;
|
|
}
|
|
.pair-production-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 20px;
|
|
padding: 2px 7px;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-muted);
|
|
color: var(--color-text-secondary);
|
|
font-weight: 600;
|
|
}
|
|
.pair-production-badge.ready {
|
|
color: #166534;
|
|
background: #dcfce7;
|
|
border-color: #bbf7d0;
|
|
}
|
|
.pair-production-badge.running {
|
|
color: #92400e;
|
|
background: #fef3c7;
|
|
border-color: #fde68a;
|
|
}
|
|
.pair-production-badge.failed {
|
|
color: #991b1b;
|
|
background: #fee2e2;
|
|
border-color: #fecaca;
|
|
}
|
|
.pair-production-badge.missing {
|
|
color: #475569;
|
|
background: #f1f5f9;
|
|
}
|
|
.pair-production-badge.unknown {
|
|
color: #64748b;
|
|
background: transparent;
|
|
}
|
|
.pair-engine-text {
|
|
color: var(--color-text-secondary);
|
|
font-family: var(--font-mono);
|
|
}
|
|
.pair-planning-layout {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 12px;
|
|
min-height: 0;
|
|
}
|
|
.pair-planning-layout.with-map {
|
|
grid-template-columns: minmax(360px, 1fr) minmax(320px, 0.9fr);
|
|
align-items: start;
|
|
}
|
|
.pair-planning-list-pane {
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.pair-planning-list-viewport {
|
|
height: min(420px, calc(100vh - 310px));
|
|
max-height: 420px;
|
|
min-height: 260px;
|
|
flex: 0 0 auto;
|
|
}
|
|
.pair-planning-map-pane {
|
|
position: sticky;
|
|
top: 0;
|
|
align-self: start;
|
|
max-height: 420px;
|
|
overflow: hidden;
|
|
}
|
|
.pair-planning-map-pane section {
|
|
max-height: 420px;
|
|
}
|
|
.pair-planning-map-pane .leaflet-container {
|
|
max-height: 372px;
|
|
}
|
|
|
|
.list-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 15px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background-color: var(--color-panel-muted);
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.list-toolbar.column-layout {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
gap: 10px;
|
|
}
|
|
.filter-banner {
|
|
background-color: var(--color-accent-soft);
|
|
border: 1px solid #c7ddff;
|
|
color: var(--color-accent-strong);
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
font-size: 12px;
|
|
}
|
|
.clear-filter-btn {
|
|
background-color: #fff;
|
|
border: 1px solid #c7ddff;
|
|
color: var(--color-accent-strong);
|
|
padding: 2px 8px;
|
|
font-size: 11px;
|
|
cursor: pointer;
|
|
}
|
|
.clear-filter-btn:hover {
|
|
background-color: #d8e7ff;
|
|
}
|
|
.toolbar-row {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
.toolbar-row button.active-tool {
|
|
background: var(--color-accent-soft);
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
.filter-row {
|
|
justify-content: space-between;
|
|
}
|
|
.filter-row input[type="range"] {
|
|
flex-grow: 1;
|
|
max-width: 120px;
|
|
}
|
|
.list-toolbar label {
|
|
cursor: pointer;
|
|
}
|
|
.model-status-banner {
|
|
background-color: #ecfdf3;
|
|
color: #15803d;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
margin-bottom: 15px;
|
|
font-size: 12px;
|
|
text-align: center;
|
|
border: 1px solid #bbf7d0;
|
|
}
|
|
|
|
.log-entries {
|
|
padding: 10px 15px;
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
}
|
|
.log-entry {
|
|
display: flex;
|
|
gap: 10px;
|
|
margin-bottom: 5px;
|
|
}
|
|
.log-time {
|
|
color: var(--color-text-secondary);
|
|
flex-shrink: 0;
|
|
}
|
|
.log-message[data-log-type="success"] { color: var(--color-success); }
|
|
.log-message[data-log-type="error"] { color: var(--color-danger); }
|
|
.log-message[data-log-type="warn"] { color: var(--color-warning); }
|
|
|
|
.empty-state {
|
|
color: var(--color-text-secondary);
|
|
text-align: center;
|
|
padding: 2rem 1rem;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.leaflet-popup-content-wrapper {
|
|
border-radius: 4px;
|
|
border: 1px solid var(--color-border);
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
.leaflet-popup-content {
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
}
|
|
.leaflet-popup-content strong {
|
|
color: var(--color-text-primary);
|
|
}
|
|
.dinsar-popup {
|
|
min-width: 240px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
.dinsar-popup-title {
|
|
font-weight: 700;
|
|
margin-bottom: 4px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
.dinsar-popup .mono {
|
|
font-family: var(--font-mono);
|
|
word-break: break-all;
|
|
}
|
|
|
|
.modal-overlay {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(15, 23, 42, 0.45);
|
|
backdrop-filter: blur(6px);
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
z-index: 1000;
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
transition: visibility 0s 0.2s, opacity 0.2s linear;
|
|
}
|
|
.modal-overlay.visible {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition-delay: 0s;
|
|
}
|
|
|
|
.modal-content {
|
|
background-color: white;
|
|
padding: 25px;
|
|
border-radius: 8px;
|
|
box-shadow: var(--shadow-panel);
|
|
border: 1px solid var(--color-border);
|
|
width: min(560px, calc(100vw - 24px));
|
|
max-height: calc(100vh - 24px);
|
|
overflow-y: auto;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
/* AI Report Modal Specific Styles */
|
|
.ai-report-modal .modal-content {
|
|
width: 850px;
|
|
max-width: 95vw;
|
|
max-height: 90vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
border: none;
|
|
}
|
|
|
|
.report-header {
|
|
padding: 15px 25px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
background-color: var(--color-panel-muted);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.report-header h3 {
|
|
margin: 0;
|
|
color: var(--color-accent-strong);
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.report-body {
|
|
padding: 30px;
|
|
overflow-y: auto;
|
|
flex-grow: 1;
|
|
background-color: white;
|
|
}
|
|
|
|
.report-footer {
|
|
padding: 15px 25px;
|
|
border-top: 1px solid var(--color-border);
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
background-color: var(--color-panel-muted);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.report-footer button {
|
|
background-color: var(--color-accent);
|
|
color: white;
|
|
padding: 8px 20px;
|
|
font-weight: 600;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.report-footer button:hover {
|
|
background-color: var(--color-accent-strong);
|
|
}
|
|
|
|
.close-btn {
|
|
background-color: transparent;
|
|
border: 1px solid var(--color-border);
|
|
color: var(--color-text-secondary);
|
|
padding: 4px 12px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.close-btn:hover {
|
|
background-color: #fff5f5;
|
|
color: var(--color-danger);
|
|
border-color: #fca5a5;
|
|
}
|
|
.modal-content h3 {
|
|
margin-top: 0;
|
|
margin-bottom: 20px;
|
|
text-align: center;
|
|
}
|
|
.form-group {
|
|
margin-bottom: 15px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.form-group label {
|
|
margin-bottom: 5px;
|
|
font-weight: 500;
|
|
}
|
|
.form-group input, .form-group select {
|
|
padding: 8px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
background-color: white;
|
|
color: var(--color-text-primary);
|
|
transition: border-color 0.2s, box-shadow 0.2s;
|
|
}
|
|
.form-group input:focus, .form-group select:focus {
|
|
outline: none;
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px var(--color-accent-glow);
|
|
}
|
|
|
|
.unified-date-picker {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.unified-date-picker .unified-date-picker-source-input {
|
|
display: none !important;
|
|
}
|
|
|
|
.unified-date-picker .unified-date-picker-visible-input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding: 8px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
background-color: #fff;
|
|
color: var(--color-text-primary);
|
|
transition: border-color 0.2s, box-shadow 0.2s;
|
|
}
|
|
|
|
.unified-date-picker .unified-date-picker-visible-input:focus {
|
|
outline: none;
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px var(--color-accent-glow);
|
|
}
|
|
|
|
.unified-date-picker-clear {
|
|
flex: 0 0 auto;
|
|
padding: 6px 10px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
background: #fff;
|
|
color: var(--color-text-secondary);
|
|
cursor: pointer;
|
|
transition: background-color 0.2s, color 0.2s, border-color 0.2s;
|
|
}
|
|
|
|
.unified-date-picker-clear:hover:not(:disabled) {
|
|
background-color: var(--color-accent-soft);
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.unified-date-picker-clear:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.flatpickr-calendar {
|
|
font-family: var(--font-sans);
|
|
}
|
|
|
|
.flatpickr-year-jump {
|
|
align-items: center;
|
|
background: transparent;
|
|
border: 0;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
flex: 0 0 auto;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
height: 34px;
|
|
justify-content: center;
|
|
line-height: 1;
|
|
padding: 0 7px;
|
|
}
|
|
|
|
.flatpickr-year-jump:hover {
|
|
color: var(--color-accent);
|
|
}
|
|
|
|
.flatpickr-day.selected,
|
|
.flatpickr-day.startRange,
|
|
.flatpickr-day.endRange,
|
|
.flatpickr-day.selected.inRange,
|
|
.flatpickr-day.startRange.inRange,
|
|
.flatpickr-day.endRange.inRange,
|
|
.flatpickr-day.selected:focus,
|
|
.flatpickr-day.startRange:focus,
|
|
.flatpickr-day.endRange:focus,
|
|
.flatpickr-day.selected:hover,
|
|
.flatpickr-day.startRange:hover,
|
|
.flatpickr-day.endRange:hover {
|
|
background: var(--color-accent);
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.aoi-region-select-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
|
|
gap: 8px;
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.aoi-region-select-grid select {
|
|
width: 100%;
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.aoi-region-select-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
.modal-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.checkbox-group {
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-bottom: 20px;
|
|
}
|
|
.checkbox-group label {
|
|
margin-bottom: 0;
|
|
font-weight: normal;
|
|
cursor: pointer;
|
|
}
|
|
.checkbox-group input[type="checkbox"] {
|
|
width: 16px;
|
|
height: 16px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.file-upload-button {
|
|
display: inline-block;
|
|
padding: 8px 12px;
|
|
cursor: pointer;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
background-color: #fff;
|
|
text-align: center;
|
|
transition: background-color 0.2s;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.file-upload-button:hover {
|
|
background-color: var(--color-panel-muted);
|
|
}
|
|
|
|
.file-list {
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
margin-top: 8px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.statistics-workspace {
|
|
min-height: 100%;
|
|
background: #eef2f7;
|
|
padding: 16px;
|
|
}
|
|
|
|
.statistics-content {
|
|
width: min(100%, 1480px);
|
|
margin: 0 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.statistics-hero {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 18px;
|
|
background: #ffffff;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
padding: 16px 18px;
|
|
}
|
|
|
|
.statistics-hero h1 {
|
|
margin: 0;
|
|
color: #0f172a;
|
|
font-size: 23px;
|
|
line-height: 1.25;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.statistics-hero p {
|
|
margin: 6px 0 0;
|
|
color: #475569;
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
max-width: 78ch;
|
|
}
|
|
|
|
.statistics-hero-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.statistics-hero-actions span {
|
|
color: #475569;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.statistics-hero-actions button {
|
|
border: 1px solid #1d4ed8;
|
|
border-radius: 6px;
|
|
background: #1d4ed8;
|
|
color: #ffffff;
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
padding: 7px 12px;
|
|
}
|
|
|
|
.statistics-hero-actions button:disabled {
|
|
border-color: #94a3b8;
|
|
background: #94a3b8;
|
|
cursor: wait;
|
|
}
|
|
|
|
.statistics-state {
|
|
background: #ffffff;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
color: #475569;
|
|
padding: 14px;
|
|
text-align: center;
|
|
}
|
|
|
|
.statistics-state--error {
|
|
color: #991b1b;
|
|
background: #fef2f2;
|
|
border-color: #fecaca;
|
|
}
|
|
|
|
.statistics-skeleton-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.statistics-skeleton {
|
|
min-height: 130px;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.statistics-skeleton::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.08), transparent);
|
|
transform: translateX(-100%);
|
|
animation: statistics-skeleton 1.3s ease-out infinite;
|
|
}
|
|
|
|
@keyframes statistics-skeleton {
|
|
to {
|
|
transform: translateX(100%);
|
|
}
|
|
}
|
|
|
|
.statistics-kpi-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.statistics-kpi-card {
|
|
background: #ffffff;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
padding: 12px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.statistics-kpi-card--success {
|
|
background: #f0fdf4;
|
|
border-color: #bbf7d0;
|
|
}
|
|
|
|
.statistics-kpi-card--warning {
|
|
background: #fffbeb;
|
|
border-color: #fde68a;
|
|
}
|
|
|
|
.statistics-kpi-card--danger {
|
|
background: #fef2f2;
|
|
border-color: #fecaca;
|
|
}
|
|
|
|
.statistics-kpi-label {
|
|
color: #475569;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.statistics-kpi-main {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 5px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.statistics-kpi-main strong {
|
|
color: #0f172a;
|
|
font-size: 25px;
|
|
line-height: 1.05;
|
|
font-weight: 850;
|
|
}
|
|
|
|
.statistics-kpi-main span {
|
|
color: #475569;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.statistics-kpi-note {
|
|
margin-top: 7px;
|
|
color: #475569;
|
|
font-size: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.statistics-command-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 2.05fr) minmax(360px, 0.95fr);
|
|
gap: 12px;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.statistics-map-panel {
|
|
min-height: 520px;
|
|
background: #ffffff;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
padding: 14px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.statistics-map-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 16px;
|
|
}
|
|
|
|
.statistics-map-tools {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
gap: 8px;
|
|
}
|
|
|
|
.statistics-segmented-control {
|
|
display: inline-flex;
|
|
padding: 2px;
|
|
border: 1px solid #cbd5e1;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.statistics-segmented-control button {
|
|
border: 0;
|
|
border-radius: 4px;
|
|
background: transparent;
|
|
color: #475569;
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
line-height: 1;
|
|
padding: 7px 10px;
|
|
}
|
|
|
|
.statistics-segmented-control button:hover {
|
|
color: #0f172a;
|
|
}
|
|
|
|
.statistics-segmented-control button.is-active {
|
|
background: #1d4ed8;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.statistics-map-header h2 {
|
|
margin: 0;
|
|
color: #0f172a;
|
|
font-size: 17px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.statistics-map-header span {
|
|
display: inline-block;
|
|
margin-top: 4px;
|
|
color: #475569;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.statistics-map-chart {
|
|
flex: 1 1 auto;
|
|
min-height: 440px;
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 6px;
|
|
background:
|
|
linear-gradient(#edf2f7 1px, transparent 1px),
|
|
linear-gradient(90deg, #edf2f7 1px, transparent 1px),
|
|
#f8fafc;
|
|
background-size: 34px 34px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.statistics-family-list {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.statistics-family-item {
|
|
display: grid;
|
|
grid-template-columns: 10px minmax(72px, 1fr) minmax(42px, auto);
|
|
column-gap: 6px;
|
|
row-gap: 3px;
|
|
align-items: center;
|
|
color: #334155;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
min-width: 144px;
|
|
padding: 6px 8px;
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.statistics-family-item strong {
|
|
color: #0f172a;
|
|
justify-self: end;
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.statistics-family-item em {
|
|
grid-column: 2 / 4;
|
|
justify-self: end;
|
|
color: #64748b;
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.statistics-family-swatch {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
justify-self: center;
|
|
}
|
|
|
|
.statistics-side-stack,
|
|
.statistics-dashboard-grid,
|
|
.statistics-bottom-grid {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.statistics-side-stack {
|
|
grid-template-rows: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.statistics-dashboard-grid {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.statistics-bottom-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.statistics-section {
|
|
background: #ffffff;
|
|
border: 1px solid #d5dfeb;
|
|
border-radius: 8px;
|
|
padding: 12px;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.statistics-section-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 12px;
|
|
border-bottom: 1px solid #e2e8f0;
|
|
padding-bottom: 8px;
|
|
}
|
|
|
|
.statistics-section-header h2 {
|
|
margin: 0;
|
|
color: #0f172a;
|
|
font-size: 15px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.statistics-section-header span {
|
|
color: #64748b;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
text-align: right;
|
|
}
|
|
|
|
.statistics-echart {
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 260px;
|
|
}
|
|
|
|
.statistics-echart-canvas {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: inherit;
|
|
}
|
|
|
|
.statistics-chart-sm {
|
|
min-height: 205px;
|
|
}
|
|
|
|
.statistics-chart-md {
|
|
min-height: 245px;
|
|
}
|
|
|
|
.statistics-chart-empty {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
color: #64748b;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.statistics-chart-empty--error {
|
|
color: #b91c1c;
|
|
background: rgba(255, 255, 255, 0.78);
|
|
text-align: center;
|
|
}
|
|
|
|
.statistics-orbit-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.statistics-orbit-summary div {
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
padding: 8px;
|
|
}
|
|
|
|
.statistics-orbit-summary span {
|
|
display: block;
|
|
color: #64748b;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.statistics-orbit-summary strong {
|
|
display: block;
|
|
margin-top: 3px;
|
|
color: #0f172a;
|
|
font-size: 17px;
|
|
}
|
|
|
|
.statistics-mini-bars {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.statistics-mini-bars div {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: 82px 56px 1fr;
|
|
gap: 8px;
|
|
align-items: center;
|
|
color: #334155;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.statistics-mini-bars i {
|
|
display: block;
|
|
height: 9px;
|
|
border-radius: 999px;
|
|
background: #16a34a;
|
|
}
|
|
|
|
.statistics-run-list,
|
|
.statistics-inventory-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
max-height: 310px;
|
|
overflow: auto;
|
|
padding-right: 2px;
|
|
}
|
|
|
|
.statistics-run-row,
|
|
.statistics-inventory-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
padding: 8px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.statistics-run-row strong,
|
|
.statistics-inventory-row strong {
|
|
display: block;
|
|
color: #0f172a;
|
|
font-size: 12px;
|
|
line-height: 1.35;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.statistics-run-row span,
|
|
.statistics-inventory-row span {
|
|
display: block;
|
|
color: #64748b;
|
|
font-size: 11px;
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.statistics-run-row b,
|
|
.statistics-inventory-row b {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.statistics-run-row em,
|
|
.statistics-inventory-row em {
|
|
color: #475569;
|
|
font-style: normal;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.statistics-empty-line {
|
|
color: #64748b;
|
|
font-size: 13px;
|
|
padding: 16px 4px;
|
|
text-align: center;
|
|
}
|
|
|
|
.statistics-footer-note {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
color: #64748b;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
padding: 2px 2px 6px;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.statistics-skeleton::after {
|
|
animation: none;
|
|
}
|
|
}
|
|
|
|
.chart-container-full {
|
|
grid-column: 1 / -1; /* Span full width */
|
|
background: var(--color-panel-muted);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 15px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
min-height: 400px;
|
|
}
|
|
|
|
.date-info {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
margin-top: 4px;
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
color: var(--color-text-secondary);
|
|
width: 100%;
|
|
}
|
|
.date-tag {
|
|
background-color: var(--color-panel-muted);
|
|
padding: 1px 4px;
|
|
border-radius: 3px;
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
.date-arrow {
|
|
color: var(--color-text-muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
/* 地图上的日期标注样式 */
|
|
.leaflet-tooltip.date-tooltip {
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
border: 1px solid var(--color-border-strong);
|
|
color: var(--color-text-primary);
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
white-space: nowrap;
|
|
}
|
|
.leaflet-tooltip.date-tooltip::before {
|
|
border-top-color: var(--color-border-strong);
|
|
}
|
|
|
|
/* AI Analysis Panel Styles */
|
|
.ai-analysis-panel {
|
|
padding: 15px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
}
|
|
|
|
.panel-section h4 {
|
|
margin: 0 0 10px 0;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.full-width {
|
|
width: 100%;
|
|
}
|
|
|
|
.analysis-result-container {
|
|
background-color: var(--color-panel-muted);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 15px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.analysis-result-container h5 {
|
|
margin: 0;
|
|
color: var(--color-accent-strong);
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding-bottom: 8px;
|
|
}
|
|
|
|
.markdown-body {
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
color: var(--color-text-primary);
|
|
max-height: 500px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.markdown-body h1, .markdown-body h2, .markdown-body h3 {
|
|
margin-top: 16px;
|
|
margin-bottom: 8px;
|
|
font-weight: 600;
|
|
line-height: 1.25;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.markdown-body h3 {
|
|
font-size: 1.15em;
|
|
border-bottom: 2px solid var(--color-border);
|
|
padding-bottom: 4px;
|
|
color: var(--color-accent-strong);
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.markdown-body p {
|
|
margin: 0 0 12px 0;
|
|
text-align: justify;
|
|
}
|
|
|
|
.markdown-body ul, .markdown-body ol {
|
|
padding-left: 20px;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.markdown-body li {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.markdown-body strong {
|
|
color: var(--color-text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.markdown-body blockquote {
|
|
padding: 0.8em 1em;
|
|
color: var(--color-text-secondary);
|
|
border-left: 0.4em solid var(--color-border-strong);
|
|
background-color: var(--color-panel-muted);
|
|
margin: 0 0 16px 0;
|
|
font-style: italic;
|
|
}
|
|
|
|
/* 针对免责声明的特殊样式 */
|
|
.markdown-body strong.disclaimer {
|
|
color: var(--color-danger);
|
|
display: block;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.markdown-body code {
|
|
padding: 0.2em 0.4em;
|
|
margin: 0;
|
|
font-size: 85%;
|
|
background-color: var(--color-panel-muted);
|
|
border-radius: 3px;
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.small {
|
|
padding: 4px 8px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.button-group {
|
|
display: flex;
|
|
gap: 5px;
|
|
}
|
|
|
|
.danger-text {
|
|
color: var(--color-danger) !important;
|
|
border-color: var(--color-danger) !important;
|
|
}
|
|
|
|
.danger-text:hover {
|
|
background-color: #fff5f5 !important;
|
|
}
|
|
|
|
.analysis-capture-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
margin-top: 15px;
|
|
}
|
|
|
|
.capture-item {
|
|
background: var(--color-panel-muted);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 10px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.capture-controls {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.config-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.config-item input[type="checkbox"] {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.capture-preview {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 120px;
|
|
border-radius: 4px;
|
|
overflow: hidden;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.capture-preview img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.status-tag {
|
|
position: absolute;
|
|
top: 5px;
|
|
right: 5px;
|
|
background: var(--color-success);
|
|
color: white;
|
|
font-size: 10px;
|
|
padding: 2px 6px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
|
}
|
|
|
|
.capture-preview.placeholder {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
background: var(--color-panel-muted);
|
|
color: var(--color-text-secondary);
|
|
font-size: 12px;
|
|
gap: 10px;
|
|
}
|
|
|
|
.spinner {
|
|
width: 20px;
|
|
height: 20px;
|
|
border: 2px solid var(--color-border);
|
|
border-top: 2px solid var(--color-accent);
|
|
border-radius: 50%;
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
0% { transform: rotate(0deg); }
|
|
100% { transform: rotate(360deg); }
|
|
}
|
|
|
|
/* Global task center */
|
|
.global-task-overlay {
|
|
position: fixed;
|
|
right: 18px;
|
|
bottom: 18px;
|
|
z-index: 1200;
|
|
color: #0f172a;
|
|
pointer-events: none;
|
|
}
|
|
|
|
@media (max-width: 980px) {
|
|
.statistics-kpi-grid,
|
|
.statistics-grid,
|
|
.statistics-plan-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.statistics-header {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.statistics-header-meta {
|
|
justify-content: flex-start;
|
|
}
|
|
}
|
|
|
|
.task-center-button {
|
|
pointer-events: auto;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 38px;
|
|
padding: 8px 12px;
|
|
border: 1px solid #cbd5e1;
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
color: #0f172a;
|
|
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.task-center-button strong {
|
|
color: #2563eb;
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.task-center-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
background: #2563eb;
|
|
box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
|
|
animation: pulse 1.6s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0%, 100% { opacity: 0.55; }
|
|
50% { opacity: 1; }
|
|
}
|
|
|
|
.overlay-content {
|
|
pointer-events: auto;
|
|
background: #ffffff;
|
|
padding: 14px;
|
|
border-radius: 8px;
|
|
width: min(440px, calc(100vw - 36px));
|
|
max-height: min(70vh, 620px);
|
|
overflow: auto;
|
|
text-align: left;
|
|
box-shadow: 0 18px 44px rgba(15, 23, 42, 0.24);
|
|
border: 1px solid #cbd5e1;
|
|
}
|
|
|
|
.loading-spinner-large {
|
|
width: 60px;
|
|
height: 60px;
|
|
border: 4px solid rgba(255, 255, 255, 0.1);
|
|
border-top-color: rgba(37, 99, 235, 0.9);
|
|
border-radius: 50%;
|
|
animation: spin 1s linear infinite;
|
|
margin: 0 auto 20px;
|
|
}
|
|
|
|
.task-center-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: flex-start;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.task-center-header h3 {
|
|
margin: 0;
|
|
font-size: 15px;
|
|
color: #0f172a;
|
|
}
|
|
|
|
.task-center-header p {
|
|
margin: 4px 0 0;
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
color: #64748b;
|
|
}
|
|
|
|
.task-center-close {
|
|
width: 28px;
|
|
height: 28px;
|
|
border: 1px solid #cbd5e1;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
color: #334155;
|
|
cursor: pointer;
|
|
font-size: 18px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.active-tasks-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
margin-bottom: 12px;
|
|
text-align: left;
|
|
}
|
|
|
|
.task-runtime-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 8px;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.task-runtime-summary > div {
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 8px;
|
|
background: #f8fafc;
|
|
padding: 8px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-runtime-summary span {
|
|
display: block;
|
|
color: #64748b;
|
|
font-size: 11px;
|
|
margin-bottom: 3px;
|
|
}
|
|
|
|
.task-runtime-summary strong {
|
|
color: #0f172a;
|
|
font-size: 15px;
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.active-jobs-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.job-runtime-row {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) minmax(92px, 0.8fr);
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 7px 8px;
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 7px;
|
|
background: #ffffff;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.job-status-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 58px;
|
|
padding: 2px 6px;
|
|
border-radius: 999px;
|
|
border: 1px solid #cbd5e1;
|
|
color: #475569;
|
|
background: #f8fafc;
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.job-status-chip.running {
|
|
border-color: rgba(37, 99, 235, 0.22);
|
|
color: #1d4ed8;
|
|
background: rgba(37, 99, 235, 0.08);
|
|
}
|
|
|
|
.job-status-chip.retry {
|
|
border-color: rgba(217, 119, 6, 0.24);
|
|
color: #b45309;
|
|
background: rgba(245, 158, 11, 0.1);
|
|
}
|
|
|
|
.job-runtime-title,
|
|
.job-runtime-worker {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.job-runtime-title {
|
|
color: #334155;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.job-runtime-worker {
|
|
color: #64748b;
|
|
text-align: right;
|
|
}
|
|
|
|
.task-progress-item {
|
|
background: #f8fafc;
|
|
padding: 10px;
|
|
border-radius: 8px;
|
|
border: 1px solid #e2e8f0;
|
|
}
|
|
|
|
.task-progress-item--muted {
|
|
background: #ffffff;
|
|
}
|
|
|
|
.task-info-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
margin-bottom: 10px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.task-label {
|
|
font-weight: 600;
|
|
color: #334155;
|
|
}
|
|
|
|
.task-percent {
|
|
color: var(--color-accent);
|
|
font-family: var(--font-mono);
|
|
font-weight: bold;
|
|
}
|
|
|
|
.task-progress-bar {
|
|
height: 7px;
|
|
background-color: #e2e8f0;
|
|
border-radius: 4px;
|
|
overflow: hidden;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.task-progress-fill {
|
|
height: 100%;
|
|
background-color: var(--color-accent);
|
|
box-shadow: 0 0 14px rgba(37, 99, 235, 0.6);
|
|
}
|
|
|
|
.task-status-msg {
|
|
margin: 0;
|
|
font-size: 12px;
|
|
color: #64748b;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.overlay-footer-hint {
|
|
font-size: 12px;
|
|
color: #64748b;
|
|
margin: 0;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.panel-error-banner {
|
|
background-color: #fee2e2;
|
|
border: 1px solid #fecaca;
|
|
color: #b91c1c;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
animation: slideDown 0.3s ease-out;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.pairing-alert {
|
|
margin: 12px 15px 0;
|
|
padding: 10px 12px;
|
|
border-radius: 8px;
|
|
border: 1px solid transparent;
|
|
box-shadow: var(--shadow-soft);
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.pairing-alert.warning {
|
|
background-color: #fffbeb;
|
|
border-color: #f59e0b;
|
|
color: #92400e;
|
|
}
|
|
|
|
.pairing-alert.danger {
|
|
background-color: #fee2e2;
|
|
border-color: #dc2626;
|
|
color: #991b1b;
|
|
}
|
|
|
|
.pairing-alert-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
}
|
|
|
|
.pairing-alert-title {
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.pairing-alert-badge {
|
|
background: rgba(220, 38, 38, 0.12);
|
|
color: #b91c1c;
|
|
border: 1px solid rgba(220, 38, 38, 0.4);
|
|
padding: 2px 8px;
|
|
border-radius: 999px;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.pairing-alert ul {
|
|
margin: 0;
|
|
padding-left: 18px;
|
|
}
|
|
|
|
.pairing-alert li {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.panel-error-banner button {
|
|
background: none;
|
|
border: none;
|
|
color: #b91c1c;
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
padding: 0 5px;
|
|
}
|
|
|
|
@keyframes slideDown {
|
|
from { transform: translateY(-10px); opacity: 0; }
|
|
to { transform: translateY(0); opacity: 1; }
|
|
}
|
|
|
|
/* Health Check Panel */
|
|
.health-panel {
|
|
padding: 16px;
|
|
background: #f8fafc;
|
|
border-top: 1px solid var(--color-border);
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 14px;
|
|
overflow: auto;
|
|
}
|
|
|
|
.health-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 2px 0 4px;
|
|
}
|
|
|
|
.health-title {
|
|
font-size: 1.15em;
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.health-subtitle {
|
|
font-size: 0.85em;
|
|
color: var(--color-text-secondary);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.health-refresh {
|
|
padding: 7px 12px;
|
|
background: var(--color-accent);
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
font-size: 0.85em;
|
|
}
|
|
|
|
.health-refresh:disabled {
|
|
opacity: 0.7;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.health-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(150px, 1fr));
|
|
gap: 10px;
|
|
padding: 12px;
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
|
|
.health-summary-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 10px;
|
|
font-size: 0.9em;
|
|
color: var(--color-text-secondary);
|
|
min-width: 0;
|
|
}
|
|
|
|
.health-summary-item > span:last-child {
|
|
text-align: right;
|
|
}
|
|
|
|
.health-signal-row {
|
|
grid-column: 1 / -1;
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
|
gap: 8px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--color-border);
|
|
}
|
|
|
|
.health-signal {
|
|
display: grid;
|
|
gap: 2px;
|
|
padding: 8px 10px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.health-signal strong {
|
|
font-size: 0.9em;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.health-signal-label,
|
|
.health-signal-detail {
|
|
color: var(--color-text-muted);
|
|
font-size: 0.76em;
|
|
}
|
|
|
|
.health-signal.ok {
|
|
border-color: rgba(22, 163, 74, 0.26);
|
|
background: rgba(22, 163, 74, 0.06);
|
|
}
|
|
|
|
.health-signal.fail {
|
|
border-color: rgba(220, 38, 38, 0.26);
|
|
background: rgba(220, 38, 38, 0.06);
|
|
}
|
|
|
|
.health-sections {
|
|
display: grid;
|
|
gap: 14px;
|
|
}
|
|
|
|
.health-section {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.health-section-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: flex-end;
|
|
padding: 0 2px;
|
|
}
|
|
|
|
.health-section-header h3 {
|
|
margin: 0;
|
|
font-size: 0.98em;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.health-section-header p {
|
|
margin: 3px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.82em;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.health-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.health-grid--ops {
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
}
|
|
|
|
.health-card {
|
|
padding: 12px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.health-card-title {
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
margin-bottom: 2px;
|
|
font-size: 0.95em;
|
|
}
|
|
|
|
.health-card-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
font-size: 0.85em;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.health-card-row > span:last-child {
|
|
text-align: right;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.health-card-note {
|
|
font-size: 0.8em;
|
|
color: var(--color-text-muted);
|
|
word-break: break-all;
|
|
}
|
|
|
|
.health-card-note.error {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.health-card-note.warn {
|
|
color: #92400e;
|
|
}
|
|
|
|
.health-card-note.ok {
|
|
color: var(--color-success);
|
|
}
|
|
|
|
.health-legacy-diagnostic {
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.health-legacy-diagnostic summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
cursor: pointer;
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
list-style: none;
|
|
}
|
|
|
|
.health-legacy-diagnostic summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
|
|
.health-legacy-diagnostic[open] summary {
|
|
padding-bottom: 8px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.health-inline-button {
|
|
padding: 4px 9px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
background: #ffffff;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.78em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.health-inline-button:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.health-maintenance-stack {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.health-action-card {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
padding: 12px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.health-action-card h4 {
|
|
margin: 0;
|
|
font-size: 0.92em;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.health-action-card p {
|
|
margin: 4px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.82em;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.health-action-button {
|
|
flex: 0 0 auto;
|
|
padding: 7px 12px;
|
|
border: 1px solid #1d4ed8;
|
|
border-radius: 6px;
|
|
background: #1d4ed8;
|
|
color: #fff;
|
|
font-size: 0.82em;
|
|
font-weight: 700;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.health-action-button:disabled {
|
|
opacity: 0.62;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.log-management-panel {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 12px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.log-management-header {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
}
|
|
|
|
.log-management-header h3,
|
|
.log-modal-header h3 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
font-size: 0.95em;
|
|
}
|
|
|
|
.log-management-header p,
|
|
.log-modal-header p {
|
|
margin: 4px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.82em;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.log-management-controls {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.ops-field {
|
|
display: grid;
|
|
gap: 4px;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.78em;
|
|
}
|
|
|
|
.ops-field select,
|
|
.log-modal-tools input {
|
|
min-height: 32px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: #fff;
|
|
color: var(--color-text-primary);
|
|
font-size: 0.86em;
|
|
}
|
|
|
|
.ops-field select {
|
|
min-width: 120px;
|
|
padding: 5px 28px 5px 9px;
|
|
}
|
|
|
|
.log-modal-tools input {
|
|
min-width: 220px;
|
|
flex: 1 1 260px;
|
|
padding: 6px 10px;
|
|
}
|
|
|
|
.ops-button {
|
|
min-height: 32px;
|
|
padding: 6px 11px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
color: var(--color-text-primary);
|
|
font-size: 0.82em;
|
|
font-weight: 700;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.ops-button--primary {
|
|
border-color: #1d4ed8;
|
|
background: #1d4ed8;
|
|
color: #fff;
|
|
}
|
|
|
|
.ops-button--secondary {
|
|
border-color: var(--color-border);
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.ops-button--danger {
|
|
border-color: rgba(220, 38, 38, 0.28);
|
|
background: rgba(220, 38, 38, 0.08);
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.ops-button--sm {
|
|
min-height: 28px;
|
|
padding: 4px 9px;
|
|
font-size: 0.78em;
|
|
}
|
|
|
|
.ops-button:disabled {
|
|
opacity: 0.58;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.ops-message {
|
|
padding: 8px 10px;
|
|
border-radius: 6px;
|
|
font-size: 0.82em;
|
|
}
|
|
|
|
.ops-message--success {
|
|
border: 1px solid rgba(22, 163, 74, 0.25);
|
|
background: rgba(22, 163, 74, 0.08);
|
|
color: var(--color-success);
|
|
}
|
|
|
|
.ops-message--error {
|
|
border: 1px solid rgba(220, 38, 38, 0.25);
|
|
background: rgba(220, 38, 38, 0.08);
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.log-empty-state {
|
|
display: flex;
|
|
min-height: 96px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 1px dashed var(--color-border);
|
|
border-radius: 8px;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.86em;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.log-table-wrap {
|
|
overflow-x: auto;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.log-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
min-width: 760px;
|
|
background: #fff;
|
|
}
|
|
|
|
.log-table th {
|
|
padding: 9px 10px;
|
|
background: #f8fafc;
|
|
border-bottom: 1px solid var(--color-border);
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.78em;
|
|
font-weight: 700;
|
|
text-align: left;
|
|
}
|
|
|
|
.log-table td {
|
|
padding: 9px 10px;
|
|
border-bottom: 1px solid #eef2f7;
|
|
color: var(--color-text-primary);
|
|
font-size: 0.82em;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.log-table tbody tr:last-child td {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.log-file-name,
|
|
.log-number-cell {
|
|
font-family: Consolas, Monaco, "Courier New", monospace;
|
|
}
|
|
|
|
.log-file-name {
|
|
max-width: 420px;
|
|
word-break: break-all;
|
|
color: #0f172a;
|
|
}
|
|
|
|
.log-number-cell {
|
|
text-align: right;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.log-type-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 22px;
|
|
padding: 2px 8px;
|
|
border-radius: 999px;
|
|
font-size: 0.75em;
|
|
font-weight: 700;
|
|
border: 1px solid transparent;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.log-type-badge--app {
|
|
color: #1d4ed8;
|
|
background: rgba(37, 99, 235, 0.1);
|
|
border-color: rgba(37, 99, 235, 0.22);
|
|
}
|
|
|
|
.log-type-badge--task {
|
|
color: #047857;
|
|
background: rgba(5, 150, 105, 0.1);
|
|
border-color: rgba(5, 150, 105, 0.22);
|
|
}
|
|
|
|
.log-type-badge--error {
|
|
color: var(--color-danger);
|
|
background: rgba(220, 38, 38, 0.1);
|
|
border-color: rgba(220, 38, 38, 0.22);
|
|
}
|
|
|
|
.log-type-badge--other {
|
|
color: #475569;
|
|
background: #f1f5f9;
|
|
border-color: var(--color-border);
|
|
}
|
|
|
|
.log-row-actions {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.log-modal-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 1100;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 24px;
|
|
background: rgba(15, 23, 42, 0.48);
|
|
}
|
|
|
|
.log-modal {
|
|
width: min(1180px, 100%);
|
|
max-height: 90vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
|
|
.log-modal-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
padding: 14px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.log-modal-header h3 {
|
|
font-family: Consolas, Monaco, "Courier New", monospace;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.log-modal-tools {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
padding: 10px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.log-page-info {
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.8em;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.log-content-view {
|
|
flex: 1;
|
|
overflow: auto;
|
|
background: #111827;
|
|
padding: 14px 16px;
|
|
}
|
|
|
|
.log-content-view pre {
|
|
margin: 0;
|
|
color: #d1d5db;
|
|
font-family: Consolas, Monaco, "Courier New", monospace;
|
|
font-size: 0.76em;
|
|
line-height: 1.55;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.health-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2px 8px;
|
|
border-radius: 999px;
|
|
font-size: 0.75em;
|
|
font-weight: 600;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.health-badge.ok {
|
|
background: rgba(22, 163, 74, 0.12);
|
|
color: var(--color-success);
|
|
border-color: rgba(22, 163, 74, 0.4);
|
|
}
|
|
|
|
.health-badge.fail {
|
|
background: rgba(220, 38, 38, 0.12);
|
|
color: var(--color-danger);
|
|
border-color: rgba(220, 38, 38, 0.4);
|
|
}
|
|
|
|
.health-error {
|
|
padding: 8px 10px;
|
|
border-radius: 8px;
|
|
background: rgba(220, 38, 38, 0.08);
|
|
color: var(--color-danger);
|
|
font-size: 0.85em;
|
|
border: 1px solid rgba(220, 38, 38, 0.2);
|
|
}
|
|
|
|
.health-empty {
|
|
font-size: 0.9em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
@media (max-width: 760px) {
|
|
.health-summary {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.health-header,
|
|
.health-section-header {
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.health-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
/* Top Status Bar */
|
|
.top-status-bar {
|
|
display: grid;
|
|
grid-template-columns: minmax(320px, 1.4fr) minmax(260px, 0.9fr) minmax(320px, 1.2fr);
|
|
align-items: center;
|
|
gap: 16px;
|
|
padding: 9px 16px;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
border-bottom: 1px solid var(--color-border);
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.status-brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.status-brand-logo {
|
|
width: 38px;
|
|
height: 38px;
|
|
object-fit: contain;
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.status-brand-copy {
|
|
min-width: 0;
|
|
}
|
|
|
|
.brand-org {
|
|
font-size: 0.82em;
|
|
color: var(--color-text-secondary);
|
|
line-height: 1.3;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.brand-title {
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
font-size: 1.05em;
|
|
line-height: 1.35;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.status-system-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.8em;
|
|
min-width: 0;
|
|
}
|
|
|
|
.status-license-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 3px 7px;
|
|
border-radius: 999px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-muted);
|
|
color: var(--color-text-secondary);
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.status-license-chip.ok {
|
|
border-color: rgba(22, 163, 74, 0.24);
|
|
background: rgba(22, 163, 74, 0.08);
|
|
color: #166534;
|
|
}
|
|
|
|
.status-license-chip.fail {
|
|
border-color: rgba(220, 38, 38, 0.24);
|
|
background: rgba(220, 38, 38, 0.08);
|
|
color: #991b1b;
|
|
}
|
|
|
|
.status-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
gap: 12px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.status-lang-switch {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
background: var(--color-panel-bg);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.status-lang-btn {
|
|
border: none;
|
|
background: transparent;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.8em;
|
|
padding: 6px 10px;
|
|
cursor: pointer;
|
|
min-width: 44px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
white-space: nowrap;
|
|
line-height: 1;
|
|
}
|
|
|
|
.status-lang-btn + .status-lang-btn {
|
|
border-left: 1px solid var(--color-border);
|
|
}
|
|
|
|
.status-lang-btn.active {
|
|
background: rgba(37, 99, 235, 0.1);
|
|
color: var(--color-accent);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.status-task {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
font-size: 0.8em;
|
|
color: var(--color-text-secondary);
|
|
padding: 4px 8px;
|
|
border-radius: 6px;
|
|
min-width: 132px;
|
|
}
|
|
|
|
.status-task.has-active-tasks {
|
|
background: rgba(24, 144, 255, 0.1);
|
|
color: #1890ff;
|
|
}
|
|
|
|
.status-task small {
|
|
color: var(--color-text-muted);
|
|
font-size: 0.86em;
|
|
line-height: 1.25;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.status-license {
|
|
font-size: 0.75em;
|
|
color: var(--color-text-muted);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.status-task-bar {
|
|
width: 120px;
|
|
height: 6px;
|
|
border-radius: 999px;
|
|
background: var(--color-panel-muted);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.status-task-fill {
|
|
height: 100%;
|
|
background: var(--color-accent);
|
|
}
|
|
|
|
.status-refresh {
|
|
padding: 6px 10px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-bg);
|
|
font-size: 0.8em;
|
|
cursor: pointer;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.status-refresh:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
@media (max-width: 1080px) {
|
|
.top-status-bar {
|
|
grid-template-columns: 1fr;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.status-system-meta {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.status-actions {
|
|
justify-content: flex-start;
|
|
flex-wrap: wrap;
|
|
}
|
|
}
|
|
|
|
/* Workflow Sidebar */
|
|
.workflow-header {
|
|
padding: 12px 12px 8px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: var(--color-panel-bg);
|
|
display: block;
|
|
}
|
|
|
|
.workflow-title {
|
|
font-size: 0.85em;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: var(--color-text-muted);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.workflow-title.tool-title {
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.workflow-steps,
|
|
.workflow-tools {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 8px 10px;
|
|
}
|
|
|
|
.workflow-steps button,
|
|
.workflow-tools button {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 10px;
|
|
min-height: 36px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-muted);
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.85em;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
width: 100%;
|
|
}
|
|
|
|
.workflow-steps button:hover,
|
|
.workflow-tools button:hover {
|
|
border-color: var(--color-border-strong);
|
|
background: #fff;
|
|
}
|
|
|
|
.workflow-steps button.active-step,
|
|
.workflow-tools button.active-tool {
|
|
background: var(--color-accent-soft);
|
|
border-color: var(--color-accent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.step-index {
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
background: rgba(37, 99, 235, 0.15);
|
|
color: var(--color-accent);
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 0.75em;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* Panel cards */
|
|
.panel-card {
|
|
padding: 12px;
|
|
border-radius: 10px;
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-panel-bg);
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.panel-card-title {
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.panel-card-desc {
|
|
font-size: 0.85em;
|
|
color: var(--color-text-muted);
|
|
margin: 0;
|
|
}
|
|
|
|
.panel-card-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-size: 0.85em;
|
|
color: var(--color-text-secondary);
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.asset-inventory-panel {
|
|
width: 100%;
|
|
max-width: 1280px;
|
|
margin: 0 auto;
|
|
padding: 6px 0 24px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 14px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.asset-toolbar {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
align-items: flex-start;
|
|
padding: 16px 18px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.asset-toolbar h3 {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
line-height: 1.35;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.asset-toolbar p {
|
|
max-width: 76ch;
|
|
margin: 8px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.asset-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
gap: 6px;
|
|
}
|
|
|
|
.asset-actions select,
|
|
.asset-actions button {
|
|
height: 30px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.asset-message {
|
|
border: 1px solid var(--color-border);
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
border-radius: 6px;
|
|
padding: 8px 10px;
|
|
font-size: 12px;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.asset-message--error {
|
|
background: #fee2e2;
|
|
color: #991b1b;
|
|
border-color: #fecaca;
|
|
}
|
|
|
|
.asset-metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.asset-metric {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
padding: 8px;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.asset-metric span,
|
|
.asset-metric small {
|
|
display: block;
|
|
color: var(--color-text-muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.asset-metric strong {
|
|
display: block;
|
|
margin: 2px 0;
|
|
font-size: 20px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.asset-root-strip {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.asset-root-item {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 8px;
|
|
align-items: center;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 7px 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.asset-root-item strong,
|
|
.asset-root-item span {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.asset-root-item span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
color: var(--color-text-muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.asset-tabbar {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.asset-tabbar button {
|
|
flex: 1;
|
|
font-size: 12px;
|
|
padding: 7px 6px;
|
|
}
|
|
|
|
.asset-tabbar button.active-tab {
|
|
background: var(--color-accent);
|
|
color: #fff;
|
|
border-color: var(--color-accent-strong);
|
|
}
|
|
|
|
.asset-table-wrap {
|
|
overflow-x: auto;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.asset-table {
|
|
width: 100%;
|
|
min-width: 760px;
|
|
border-collapse: collapse;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.asset-table th,
|
|
.asset-table td {
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding: 7px 8px;
|
|
text-align: left;
|
|
vertical-align: top;
|
|
}
|
|
|
|
.asset-table th {
|
|
background: #f8fafc;
|
|
color: var(--color-text-secondary);
|
|
font-weight: 700;
|
|
}
|
|
|
|
.asset-table td small {
|
|
display: block;
|
|
margin-top: 2px;
|
|
color: var(--color-text-muted);
|
|
max-width: 280px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.asset-inline-action {
|
|
min-width: 46px;
|
|
height: 26px;
|
|
padding: 0 8px;
|
|
font-size: 12px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.asset-action-placeholder {
|
|
color: var(--color-text-muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.asset-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
max-width: 100%;
|
|
border-radius: 999px;
|
|
padding: 2px 7px;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
border: 1px solid var(--color-border);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.asset-badge--ok {
|
|
background: #dcfce7;
|
|
color: #166534;
|
|
border-color: #bbf7d0;
|
|
}
|
|
|
|
.asset-badge--warn {
|
|
background: #fef3c7;
|
|
color: #92400e;
|
|
border-color: #fde68a;
|
|
}
|
|
|
|
.asset-badge--bad {
|
|
background: #fee2e2;
|
|
color: #991b1b;
|
|
border-color: #fecaca;
|
|
}
|
|
|
|
.asset-badge--neutral {
|
|
background: #f1f5f9;
|
|
color: #475569;
|
|
}
|
|
|
|
.asset-pager {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
padding: 8px;
|
|
color: var(--color-text-muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.asset-pager button {
|
|
padding: 5px 9px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.data-ingest-panel {
|
|
width: 100%;
|
|
max-width: 1280px;
|
|
margin: 0 auto;
|
|
padding: 6px 0 24px;
|
|
background: #f8fafc;
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.data-ingest-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
align-items: flex-start;
|
|
margin-bottom: 14px;
|
|
padding: 16px 18px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.data-ingest-header h3 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
font-size: 18px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.data-ingest-header p {
|
|
max-width: 76ch;
|
|
margin: 8px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.data-ingest-signals {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(116px, 1fr));
|
|
gap: 8px;
|
|
min-width: 280px;
|
|
}
|
|
|
|
.data-ingest-notice {
|
|
margin: 0 0 12px;
|
|
padding: 10px 12px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.data-ingest-notice.ok {
|
|
border-color: rgba(22, 163, 74, 0.22);
|
|
background: rgba(240, 253, 244, 0.82);
|
|
color: #166534;
|
|
}
|
|
|
|
.data-ingest-notice.warn {
|
|
border-color: rgba(245, 158, 11, 0.28);
|
|
background: #fffbeb;
|
|
color: #92400e;
|
|
}
|
|
|
|
.data-ingest-directory summary {
|
|
cursor: pointer;
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.data-ingest-directory p {
|
|
margin: 8px 0 10px;
|
|
color: var(--color-text-muted);
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
@media (max-width: 1200px) {
|
|
.asset-metrics {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.top-status-bar {
|
|
grid-template-columns: 1fr;
|
|
text-align: left;
|
|
}
|
|
|
|
.status-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 760px) {
|
|
.data-ingest-header {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.data-ingest-signals {
|
|
grid-template-columns: 1fr;
|
|
min-width: 0;
|
|
width: 100%;
|
|
}
|
|
|
|
.asset-toolbar {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.asset-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.asset-metrics {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
.login-page-wrapper {
|
|
min-height: 100vh;
|
|
background: #020617;
|
|
display: grid;
|
|
padding: 0;
|
|
}
|
|
|
|
.login-shell {
|
|
grid-area: 1 / 1;
|
|
width: 100%;
|
|
min-height: 100vh;
|
|
display: grid;
|
|
grid-template-columns: clamp(360px, 32vw, 480px) minmax(0, 1fr);
|
|
background: #ffffff;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.login-card {
|
|
width: 100%;
|
|
min-height: 100vh;
|
|
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
|
|
border-right: 1px solid #dbe4f3;
|
|
padding: clamp(32px, 5vh, 56px) clamp(28px, 4vw, 52px);
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
gap: 16px;
|
|
}
|
|
|
|
.login-card--checking {
|
|
place-self: center;
|
|
width: min(420px, 94vw);
|
|
min-height: auto;
|
|
border: 1px solid #dbe4f3;
|
|
border-radius: 14px;
|
|
box-shadow: var(--shadow-panel);
|
|
padding: 28px;
|
|
}
|
|
|
|
.login-card h2 {
|
|
margin: 0;
|
|
font-size: 1.55em;
|
|
line-height: 1.25;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.login-card-header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.login-brand-tag {
|
|
width: fit-content;
|
|
border-radius: 999px;
|
|
border: 1px solid rgba(37, 99, 235, 0.25);
|
|
background: rgba(37, 99, 235, 0.08);
|
|
color: var(--color-accent-strong);
|
|
font-weight: 700;
|
|
font-size: 0.75em;
|
|
letter-spacing: 0;
|
|
padding: 4px 10px;
|
|
}
|
|
|
|
.login-subtitle {
|
|
margin: 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.92em;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.login-form-grid {
|
|
display: grid;
|
|
row-gap: 12px;
|
|
}
|
|
|
|
.login-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.login-field span {
|
|
font-size: 0.85em;
|
|
color: var(--color-text-secondary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.login-card input,
|
|
.login-card select {
|
|
width: 100%;
|
|
padding: 11px 12px;
|
|
border: 1px solid #cbd5e1;
|
|
border-radius: 8px;
|
|
font-size: 0.95em;
|
|
background: #fff;
|
|
}
|
|
|
|
.login-card input:focus,
|
|
.login-card select:focus {
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.14);
|
|
outline: none;
|
|
}
|
|
|
|
.login-alert {
|
|
border-radius: 10px;
|
|
padding: 10px 12px;
|
|
font-size: 0.88em;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.login-alert.warn {
|
|
color: #9a3412;
|
|
background: #fff7ed;
|
|
border: 1px solid #fed7aa;
|
|
}
|
|
|
|
.login-alert.error {
|
|
color: #b91c1c;
|
|
background: #fef2f2;
|
|
border: 1px solid #fecaca;
|
|
}
|
|
|
|
.login-tips {
|
|
display: grid;
|
|
gap: 4px;
|
|
padding: 10px 12px;
|
|
border-radius: 10px;
|
|
border: 1px dashed #bfdbfe;
|
|
background: #eff6ff;
|
|
font-size: 0.84em;
|
|
color: #1e3a8a;
|
|
}
|
|
|
|
.login-submit-btn {
|
|
min-height: 42px;
|
|
border-radius: 8px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.login-visual-panel {
|
|
position: relative;
|
|
min-width: 0;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
overflow: hidden;
|
|
padding: clamp(32px, 5vw, 72px);
|
|
background: #020617;
|
|
color: #f8fafc;
|
|
}
|
|
|
|
.login-visual-panel::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background:
|
|
linear-gradient(90deg, rgba(2, 6, 23, 0.68) 0%, rgba(2, 6, 23, 0.34) 38%, rgba(2, 6, 23, 0.08) 100%),
|
|
linear-gradient(0deg, rgba(2, 6, 23, 0.72) 0%, rgba(2, 6, 23, 0.18) 52%, rgba(2, 6, 23, 0.18) 100%);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.login-slide-copy {
|
|
position: relative;
|
|
z-index: 2;
|
|
max-width: min(720px, 74%);
|
|
padding-bottom: 36px;
|
|
}
|
|
|
|
.login-slide-copy span {
|
|
color: #7dd3fc;
|
|
font-size: 0.82em;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.login-slide-copy h3 {
|
|
margin: 8px 0 8px;
|
|
color: #f8fafc;
|
|
font-size: 3.4rem;
|
|
line-height: 1.08;
|
|
text-shadow: 0 18px 40px rgba(0, 0, 0, 0.28);
|
|
}
|
|
|
|
.login-slide-copy p {
|
|
margin: 0;
|
|
max-width: 680px;
|
|
color: #dbeafe;
|
|
font-size: 1.02em;
|
|
line-height: 1.68;
|
|
text-shadow: 0 10px 26px rgba(0, 0, 0, 0.38);
|
|
}
|
|
|
|
.login-slide-frame {
|
|
position: absolute;
|
|
inset: 0;
|
|
overflow: hidden;
|
|
background: #0f172a;
|
|
}
|
|
|
|
.login-slide-image {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
opacity: 0;
|
|
transform: scale(1.018);
|
|
transition: opacity 0.45s ease, transform 0.7s ease;
|
|
}
|
|
|
|
.login-slide-image.active {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
.login-slide-dots {
|
|
position: absolute;
|
|
z-index: 2;
|
|
right: clamp(28px, 4vw, 60px);
|
|
bottom: clamp(28px, 4vw, 56px);
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.login-slide-dots button {
|
|
width: 30px;
|
|
height: 8px;
|
|
border: 1px solid #93a4bd;
|
|
border-radius: 999px;
|
|
background: #e2e8f0;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.login-slide-dots button.active {
|
|
width: 42px;
|
|
border-color: var(--color-accent);
|
|
background: var(--color-accent);
|
|
}
|
|
|
|
@media (max-width: 1240px) {
|
|
.login-slide-copy h3 {
|
|
font-size: 2.8rem;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 920px) {
|
|
.login-page-wrapper {
|
|
align-items: flex-start;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.login-shell {
|
|
min-height: 100vh;
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.login-card {
|
|
min-height: auto;
|
|
border-right: none;
|
|
border-bottom: 1px solid #dbe4f3;
|
|
padding: 24px;
|
|
}
|
|
|
|
.login-visual-panel {
|
|
min-height: min(58vh, 560px);
|
|
padding: 24px;
|
|
}
|
|
|
|
.login-slide-copy {
|
|
max-width: 100%;
|
|
padding-bottom: 34px;
|
|
}
|
|
|
|
.login-slide-copy h3 {
|
|
font-size: 2.2rem;
|
|
}
|
|
|
|
.login-slide-dots {
|
|
right: auto;
|
|
left: 24px;
|
|
bottom: 20px;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.login-card,
|
|
.login-visual-panel {
|
|
padding: 18px;
|
|
}
|
|
|
|
.login-card h2,
|
|
.login-slide-copy h3 {
|
|
font-size: 1.28rem;
|
|
}
|
|
|
|
.login-visual-panel {
|
|
min-height: 360px;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.login-slide-image {
|
|
transition: opacity 0.15s ease;
|
|
transform: none;
|
|
}
|
|
|
|
.login-slide-image.active {
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
.user-role-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 6px 10px;
|
|
border-radius: 999px;
|
|
font-size: 0.8em;
|
|
border: 1px solid transparent;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.user-role-chip.admin {
|
|
background: rgba(22, 163, 74, 0.12);
|
|
color: #166534;
|
|
border-color: rgba(22, 163, 74, 0.3);
|
|
}
|
|
|
|
.user-role-chip.viewer {
|
|
background: rgba(245, 158, 11, 0.12);
|
|
color: #92400e;
|
|
border-color: rgba(245, 158, 11, 0.35);
|
|
}
|
|
|
|
.user-role-name {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.user-role-divider {
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.read-only-banner {
|
|
background: #fffbeb;
|
|
color: #92400e;
|
|
border-bottom: 1px solid #fde68a;
|
|
padding: 8px 12px;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.panel-inline-message {
|
|
padding: 10px 12px;
|
|
border-radius: 10px;
|
|
font-size: 0.9em;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.panel-inline-message.success {
|
|
background: rgba(34, 197, 94, 0.1);
|
|
border-color: rgba(34, 197, 94, 0.3);
|
|
color: #166534;
|
|
}
|
|
|
|
.panel-inline-message.error {
|
|
background: rgba(239, 68, 68, 0.1);
|
|
border-color: rgba(239, 68, 68, 0.25);
|
|
color: #b91c1c;
|
|
}
|
|
|
|
.user-admin-layout {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
padding: 14px;
|
|
gap: 12px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.user-admin-hero {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.user-admin-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 10px;
|
|
}
|
|
|
|
.user-admin-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.user-admin-stat {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
background: var(--color-panel-muted);
|
|
padding: 9px 10px;
|
|
display: grid;
|
|
gap: 4px;
|
|
}
|
|
|
|
.user-admin-stat span {
|
|
font-size: 0.8em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.user-admin-stat strong {
|
|
font-size: 1.02em;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.user-admin-create-form {
|
|
margin-top: 10px;
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.user-admin-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.user-admin-field span {
|
|
font-size: 0.82em;
|
|
color: var(--color-text-secondary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.user-admin-field input,
|
|
.user-admin-field select,
|
|
.audit-filter-field input,
|
|
.audit-filter-field select {
|
|
width: 100%;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
padding: 9px 10px;
|
|
background: #fff;
|
|
}
|
|
|
|
.user-admin-field input:focus,
|
|
.user-admin-field select:focus,
|
|
.audit-filter-field input:focus,
|
|
.audit-filter-field select:focus {
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
|
|
outline: none;
|
|
}
|
|
|
|
.user-admin-field.compact {
|
|
min-width: 140px;
|
|
}
|
|
|
|
.user-admin-form-row {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.user-admin-checkbox {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.user-admin-list-card {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.user-admin-list-toolbar {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.user-admin-list-toolbar input {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.user-admin-list {
|
|
flex: 1;
|
|
min-height: 0;
|
|
overflow: auto;
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.user-entry-card {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
padding: 10px;
|
|
display: grid;
|
|
gap: 9px;
|
|
background: #fff;
|
|
}
|
|
|
|
.user-entry-header {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.user-entry-name-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 7px;
|
|
}
|
|
|
|
.role-pill,
|
|
.state-pill {
|
|
padding: 2px 8px;
|
|
border-radius: 999px;
|
|
font-size: 0.78em;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.role-pill.admin {
|
|
background: rgba(16, 185, 129, 0.15);
|
|
border-color: rgba(16, 185, 129, 0.35);
|
|
color: #065f46;
|
|
}
|
|
|
|
.role-pill.viewer {
|
|
background: rgba(251, 191, 36, 0.2);
|
|
border-color: rgba(251, 191, 36, 0.42);
|
|
color: #92400e;
|
|
}
|
|
|
|
.state-pill {
|
|
background: #f3f4f6;
|
|
border-color: #d1d5db;
|
|
color: #4b5563;
|
|
}
|
|
|
|
.state-pill.self {
|
|
background: #eff6ff;
|
|
border-color: #bfdbfe;
|
|
color: #1d4ed8;
|
|
}
|
|
|
|
.user-entry-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
font-size: 0.82em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.user-entry-controls {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.password-field {
|
|
flex: 1;
|
|
min-width: 220px;
|
|
}
|
|
|
|
.user-entry-note {
|
|
font-size: 0.82em;
|
|
color: #92400e;
|
|
background: #fffbeb;
|
|
border: 1px solid #fde68a;
|
|
border-radius: 8px;
|
|
padding: 6px 8px;
|
|
}
|
|
|
|
.audit-panel {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
padding: 14px;
|
|
gap: 12px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.audit-panel-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
}
|
|
|
|
.audit-header-title {
|
|
min-width: 0;
|
|
}
|
|
|
|
.audit-header-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.audit-switch {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 0.86em;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.audit-summary-card,
|
|
.audit-filter-card {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.audit-summary-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.audit-summary-item {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
background: var(--color-panel-muted);
|
|
padding: 9px 10px;
|
|
display: grid;
|
|
gap: 4px;
|
|
}
|
|
|
|
.audit-summary-item span {
|
|
font-size: 0.8em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.audit-summary-item strong {
|
|
font-size: 1.02em;
|
|
}
|
|
|
|
.audit-summary-item.ok strong {
|
|
color: #166534;
|
|
}
|
|
|
|
.audit-summary-item.blocked strong {
|
|
color: #b91c1c;
|
|
}
|
|
|
|
.audit-filter-grid {
|
|
display: grid;
|
|
grid-template-columns: 2fr 1fr 1fr 1fr;
|
|
gap: 8px;
|
|
}
|
|
|
|
.audit-filter-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.audit-filter-field span {
|
|
font-size: 0.82em;
|
|
color: var(--color-text-secondary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.audit-list-card {
|
|
flex: 1;
|
|
min-height: 0;
|
|
}
|
|
|
|
.audit-list {
|
|
height: 100%;
|
|
overflow: auto;
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.audit-log-item {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 10px;
|
|
padding: 10px;
|
|
display: grid;
|
|
gap: 7px;
|
|
background: #fff;
|
|
}
|
|
|
|
.audit-log-top {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.audit-log-main {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.audit-operator {
|
|
color: var(--color-text-muted);
|
|
font-size: 0.84em;
|
|
}
|
|
|
|
.audit-time {
|
|
font-size: 0.82em;
|
|
color: var(--color-text-muted);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.audit-outcome {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2px 8px;
|
|
border-radius: 999px;
|
|
font-size: 0.75em;
|
|
font-weight: 600;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.audit-outcome.ok {
|
|
color: #166534;
|
|
background: rgba(22, 163, 74, 0.12);
|
|
border-color: rgba(22, 163, 74, 0.3);
|
|
}
|
|
|
|
.audit-outcome.blocked {
|
|
color: #b91c1c;
|
|
background: rgba(239, 68, 68, 0.12);
|
|
border-color: rgba(239, 68, 68, 0.35);
|
|
}
|
|
|
|
.audit-log-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
font-size: 0.82em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.audit-log-detail {
|
|
font-size: 0.84em;
|
|
color: var(--color-text-secondary);
|
|
word-break: break-word;
|
|
}
|
|
|
|
@media (max-width: 1120px) {
|
|
.user-admin-summary,
|
|
.audit-summary-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.audit-filter-grid {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
.user-entry-controls {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.password-field {
|
|
min-width: 0;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 780px) {
|
|
.audit-panel-header {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.audit-filter-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.user-admin-list-toolbar {
|
|
flex-direction: column;
|
|
}
|
|
}
|
|
|
|
/* ========== Map Export ========== */
|
|
|
|
.map-export-btn {
|
|
position: absolute;
|
|
bottom: 12px;
|
|
right: 12px;
|
|
z-index: 800;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 20px;
|
|
padding: 6px 16px;
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
color: var(--color-text-primary);
|
|
cursor: pointer;
|
|
box-shadow: var(--shadow-soft);
|
|
backdrop-filter: blur(6px);
|
|
transition: background 0.15s, box-shadow 0.15s;
|
|
}
|
|
|
|
.map-export-btn:hover {
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent);
|
|
box-shadow: 0 2px 8px var(--color-accent-glow);
|
|
}
|
|
|
|
.map-export-modal .export-content {
|
|
width: min(1100px, calc(100vw - 32px));
|
|
max-height: calc(100vh - 48px);
|
|
padding: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.export-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 16px 20px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.export-header h3 {
|
|
margin: 0;
|
|
font-size: 16px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.export-close-btn {
|
|
background: none;
|
|
border: none;
|
|
font-size: 22px;
|
|
color: var(--color-text-muted);
|
|
cursor: pointer;
|
|
padding: 0 4px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.export-close-btn:hover {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.export-body {
|
|
display: flex;
|
|
flex: 1;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.export-config {
|
|
width: 320px;
|
|
min-width: 320px;
|
|
padding: 16px 20px;
|
|
overflow-y: auto;
|
|
border-right: 1px solid var(--color-border);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
}
|
|
|
|
.export-section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.export-label {
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: var(--color-text-secondary);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.export-input {
|
|
padding: 7px 10px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
background: var(--color-panel-bg);
|
|
color: var(--color-text-primary);
|
|
outline: none;
|
|
transition: border-color 0.15s;
|
|
}
|
|
|
|
.export-input:focus {
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.export-format-btns {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.export-format-btns button {
|
|
flex: 1;
|
|
padding: 6px 0;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: var(--color-panel-bg);
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
color: var(--color-text-secondary);
|
|
cursor: pointer;
|
|
transition: all 0.15s;
|
|
}
|
|
|
|
.export-format-btns button.active {
|
|
background: var(--color-accent);
|
|
color: #fff;
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.export-toggles {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.export-toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 13px;
|
|
color: var(--color-text-primary);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.export-toggle input[type="checkbox"] {
|
|
accent-color: var(--color-accent);
|
|
width: 15px;
|
|
height: 15px;
|
|
}
|
|
|
|
.export-legend-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.export-legend-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.export-legend-color {
|
|
width: 28px;
|
|
height: 28px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
padding: 1px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.export-legend-label-input {
|
|
flex: 1;
|
|
padding: 4px 8px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
font-family: var(--font-sans);
|
|
background: var(--color-panel-bg);
|
|
color: var(--color-text-primary);
|
|
outline: none;
|
|
}
|
|
|
|
.export-legend-label-input:focus {
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.export-legend-remove {
|
|
background: none;
|
|
border: none;
|
|
color: var(--color-text-muted);
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
padding: 0 4px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.export-legend-remove:hover {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.export-legend-empty {
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
padding: 8px 0;
|
|
}
|
|
|
|
.export-legend-add {
|
|
background: none;
|
|
border: 1px dashed var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 5px 0;
|
|
font-size: 12px;
|
|
color: var(--color-accent);
|
|
cursor: pointer;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.export-legend-add:hover {
|
|
background: var(--color-accent-soft);
|
|
}
|
|
|
|
.export-preview {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: #f0f2f5;
|
|
min-height: 400px;
|
|
padding: 20px;
|
|
overflow: auto;
|
|
}
|
|
|
|
.export-preview-img {
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
object-fit: contain;
|
|
border-radius: 4px;
|
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
|
|
}
|
|
|
|
.export-preview-loading {
|
|
font-size: 14px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.export-footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
padding: 12px 20px;
|
|
border-top: 1px solid var(--color-border);
|
|
}
|
|
|
|
.export-btn-cancel {
|
|
padding: 7px 18px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: var(--color-panel-bg);
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
color: var(--color-text-secondary);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.export-btn-cancel:hover {
|
|
background: var(--color-panel-muted);
|
|
}
|
|
|
|
.export-btn-submit {
|
|
padding: 7px 24px;
|
|
border: none;
|
|
border-radius: 6px;
|
|
background: var(--color-accent);
|
|
color: #fff;
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.export-btn-submit:hover {
|
|
background: var(--color-accent-strong);
|
|
}
|
|
|
|
.export-btn-submit:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.export-legend-colorbar-preview {
|
|
width: 28px;
|
|
height: 28px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
background: linear-gradient(to right, rgb(255,20,0), rgb(240,137,0), rgb(232,240,70), rgb(24,255,0), rgb(101,185,241), rgb(0,104,200));
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.export-logo-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.export-logo-thumb {
|
|
height: 36px;
|
|
max-width: 120px;
|
|
object-fit: contain;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 4px;
|
|
padding: 2px;
|
|
background: #fff;
|
|
}
|
|
|
|
/* ============ AI Diagnosis Modal ============ */
|
|
|
|
.ai-diagnosis-modal {
|
|
position: relative;
|
|
width: min(900px, calc(100vw - 32px));
|
|
max-height: calc(100vh - 64px);
|
|
background: var(--color-panel-bg);
|
|
border-radius: 8px;
|
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.ai-diagnosis-modal-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 16px 20px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: var(--color-panel-bg);
|
|
}
|
|
|
|
.ai-diagnosis-modal-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.ai-diagnosis-icon {
|
|
font-size: 24px;
|
|
}
|
|
|
|
.ai-diagnosis-meta {
|
|
padding: 16px 20px;
|
|
background: #f7fafc;
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
gap: 12px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.ai-diagnosis-meta-row {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.ai-diagnosis-meta-label {
|
|
font-weight: 600;
|
|
color: var(--color-text-secondary);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.ai-diagnosis-meta-value {
|
|
color: var(--color-text-primary);
|
|
word-break: break-word;
|
|
}
|
|
|
|
.ai-diagnosis-risk-badge {
|
|
display: inline-block;
|
|
padding: 2px 10px;
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: #fff;
|
|
}
|
|
|
|
.ai-diagnosis-content {
|
|
flex: 1;
|
|
overflow: auto;
|
|
padding: 20px;
|
|
background: var(--color-panel-bg);
|
|
}
|
|
|
|
.ai-diagnosis-markdown {
|
|
font-size: 14px;
|
|
line-height: 1.7;
|
|
color: var(--color-text-primary);
|
|
max-width: 100%;
|
|
word-wrap: break-word;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
.ai-diagnosis-markdown * {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.ai-diagnosis-markdown details {
|
|
margin-bottom: 12px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
padding: 12px;
|
|
background: #f7fafc;
|
|
}
|
|
|
|
.ai-diagnosis-markdown summary {
|
|
cursor: pointer;
|
|
font-weight: 600;
|
|
margin-bottom: 8px;
|
|
user-select: none;
|
|
list-style-position: outside;
|
|
padding-left: 4px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown summary::-webkit-details-marker {
|
|
margin-right: 8px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown h1,
|
|
.ai-diagnosis-markdown h2,
|
|
.ai-diagnosis-markdown h3,
|
|
.ai-diagnosis-markdown h4 {
|
|
margin-top: 24px;
|
|
margin-bottom: 12px;
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.ai-diagnosis-markdown h1 {
|
|
font-size: 24px;
|
|
border-bottom: 2px solid var(--color-border);
|
|
padding-bottom: 8px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown h2 {
|
|
font-size: 20px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding-bottom: 6px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown h3 {
|
|
font-size: 17px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown h4 {
|
|
font-size: 15px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown p {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown ul,
|
|
.ai-diagnosis-markdown ol {
|
|
margin-bottom: 12px;
|
|
padding-left: 24px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown li {
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown code {
|
|
background: #f1f5f9;
|
|
padding: 2px 6px;
|
|
border-radius: 3px;
|
|
font-family: 'Consolas', 'Monaco', monospace;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown pre {
|
|
background: #1e293b;
|
|
color: #e2e8f0;
|
|
padding: 12px;
|
|
border-radius: 6px;
|
|
overflow-x: auto;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.ai-diagnosis-markdown pre code {
|
|
background: none;
|
|
padding: 0;
|
|
color: inherit;
|
|
}
|
|
|
|
.ai-diagnosis-markdown blockquote {
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
padding: 10px 12px;
|
|
margin: 12px 0;
|
|
background: rgba(248, 250, 252, 0.9);
|
|
color: var(--color-text-secondary);
|
|
font-style: italic;
|
|
}
|
|
|
|
.ai-diagnosis-markdown strong {
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.ai-diagnosis-error {
|
|
padding: 16px;
|
|
background: #fed7d7;
|
|
color: #c53030;
|
|
border-radius: 6px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.ai-diagnosis-empty {
|
|
text-align: center;
|
|
padding: 48px;
|
|
color: var(--color-text-muted);
|
|
font-size: 14px;
|
|
}
|
|
|
|
.ai-diagnosis-modal-footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
padding: 12px 20px;
|
|
border-top: 1px solid var(--color-border);
|
|
background: var(--color-panel-bg);
|
|
}
|
|
|
|
/* ========================================
|
|
Pairing Modal - Wide Layout with Strategy Info
|
|
======================================== */
|
|
|
|
.modal-content.pairing-modal-wide {
|
|
width: min(1100px, calc(100vw - 48px));
|
|
max-width: 1100px;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.pairing-modal-layout {
|
|
display: flex;
|
|
gap: 0;
|
|
height: 100%;
|
|
max-height: calc(100vh - 48px);
|
|
}
|
|
|
|
.pairing-modal-form {
|
|
flex: 1;
|
|
padding: 25px;
|
|
overflow-y: auto;
|
|
border-right: 1px solid var(--color-border);
|
|
}
|
|
|
|
.pairing-modal-info {
|
|
width: 360px;
|
|
flex-shrink: 0;
|
|
background: var(--color-panel-muted);
|
|
padding: 25px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.strategy-info-panel {
|
|
position: sticky;
|
|
top: 0;
|
|
}
|
|
|
|
.strategy-info-panel h4 {
|
|
margin: 0 0 12px 0;
|
|
color: var(--color-accent-strong);
|
|
font-size: 1.1rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.strategy-description {
|
|
margin: 0 0 16px 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 14px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.strategy-details {
|
|
margin: 16px 0;
|
|
padding: 16px;
|
|
background: white;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
|
|
.strategy-details p {
|
|
margin: 8px 0;
|
|
color: var(--color-text-primary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.strategy-params {
|
|
margin-top: 16px;
|
|
padding: 12px;
|
|
background: var(--color-accent-soft);
|
|
border-radius: 6px;
|
|
border: 1px solid rgba(37, 99, 235, 0.22);
|
|
}
|
|
|
|
.strategy-params strong {
|
|
display: block;
|
|
margin-bottom: 6px;
|
|
color: var(--color-accent-strong);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.strategy-params p {
|
|
margin: 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* 日期选择器在配对 Modal 中的样式调整 */
|
|
.pairing-modal-form .unified-date-picker {
|
|
flex: 1;
|
|
}
|
|
|
|
.pairing-modal-form .form-group {
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.pairing-modal-form .form-group label {
|
|
display: block;
|
|
margin-bottom: 8px;
|
|
font-weight: 500;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
/* 响应式:小屏幕时垂直布局 */
|
|
@media (max-width: 900px) {
|
|
.pairing-modal-layout {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.pairing-modal-form {
|
|
border-right: none;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.pairing-modal-info {
|
|
width: 100%;
|
|
}
|
|
|
|
.strategy-info-panel {
|
|
position: static;
|
|
}
|
|
}
|
|
|
|
/* ============ D-InSAR Results Workspace ============ */
|
|
|
|
.dinsar-results-toolbar {
|
|
gap: 12px;
|
|
padding: 12px 15px 14px;
|
|
background:
|
|
linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(242, 246, 251, 0.98)),
|
|
var(--color-panel-muted);
|
|
}
|
|
|
|
.dinsar-toolbar-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.dinsar-toolbar-panel {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 12px 14px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 12px;
|
|
background:
|
|
linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 252, 0.98));
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.dinsar-toolbar-kicker {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-toolbar-value {
|
|
font-size: 1.25rem;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-toolbar-note {
|
|
margin: 0;
|
|
font-size: 12px;
|
|
line-height: 1.55;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-toolbar-chip-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-toolbar-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 4px 10px;
|
|
border-radius: 999px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(255, 255, 255, 0.92);
|
|
color: var(--color-text-secondary);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.dinsar-toolbar-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-filter-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.6fr);
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-filter-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.dinsar-filter-field span,
|
|
.dinsar-pagination-field span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-filter-field input,
|
|
.dinsar-filter-field select,
|
|
.dinsar-pagination-field input,
|
|
.dinsar-pagination-field select,
|
|
.dinsar-catalog-filter-field input,
|
|
.dinsar-catalog-filter-field select,
|
|
.dinsar-catalog-manage-form textarea,
|
|
.dinsar-catalog-manage-form input,
|
|
.dinsar-products-field input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
padding: 8px 10px;
|
|
font-size: 13px;
|
|
font-family: var(--font-sans);
|
|
color: var(--color-text-primary);
|
|
background: #fff;
|
|
}
|
|
|
|
.dinsar-filter-field input:focus,
|
|
.dinsar-filter-field select:focus,
|
|
.dinsar-pagination-field input:focus,
|
|
.dinsar-pagination-field select:focus,
|
|
.dinsar-catalog-filter-field input:focus,
|
|
.dinsar-catalog-filter-field select:focus,
|
|
.dinsar-catalog-manage-form textarea:focus,
|
|
.dinsar-catalog-manage-form input:focus,
|
|
.dinsar-products-field input:focus {
|
|
outline: none;
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px var(--color-accent-glow);
|
|
}
|
|
|
|
.dinsar-score-filter {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
}
|
|
|
|
.dinsar-score-filter strong {
|
|
min-width: 42px;
|
|
text-align: center;
|
|
padding: 7px 8px;
|
|
border-radius: 8px;
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.dinsar-engine-filter-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-engine-filter-row button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 6px 12px;
|
|
border-radius: 999px;
|
|
background: rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
.dinsar-engine-filter-row button strong {
|
|
min-width: 24px;
|
|
text-align: center;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-engine-filter-row button.active {
|
|
border-color: var(--color-accent);
|
|
background: var(--color-accent-soft);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.dinsar-toolbar-footer {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-toolbar-footer-main {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: flex-end;
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-pagination-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-width: 120px;
|
|
}
|
|
|
|
.dinsar-pagination-field-jump {
|
|
min-width: 240px;
|
|
}
|
|
|
|
.dinsar-page-jump-input {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-page-jump-input input.has-error {
|
|
border-color: var(--color-danger);
|
|
box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.12);
|
|
}
|
|
|
|
.dinsar-toolbar-hint {
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-toolbar-hint.error {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.dinsar-row-header {
|
|
display: flex;
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.dinsar-item {
|
|
gap: 8px;
|
|
min-height: 118px;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
.dinsar-item .data-item-controls {
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.dinsar-row-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
gap: 6px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.dinsar-engine-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 3px 9px;
|
|
border-radius: 999px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(255, 255, 255, 0.9);
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
line-height: 1;
|
|
}
|
|
|
|
.dinsar-engine-badge.tone-envi {
|
|
border-color: rgba(14, 165, 164, 0.34);
|
|
background: rgba(14, 165, 164, 0.12);
|
|
color: #0f766e;
|
|
}
|
|
|
|
.dinsar-engine-badge.tone-isce2 {
|
|
border-color: rgba(37, 99, 235, 0.32);
|
|
background: rgba(37, 99, 235, 0.12);
|
|
color: #1d4ed8;
|
|
}
|
|
|
|
.dinsar-engine-badge.tone-pyint {
|
|
border-color: rgba(190, 24, 93, 0.28);
|
|
background: rgba(244, 63, 94, 0.12);
|
|
color: #be123c;
|
|
}
|
|
|
|
.dinsar-engine-badge.tone-landsar {
|
|
border-color: rgba(217, 119, 6, 0.32);
|
|
background: rgba(245, 158, 11, 0.14);
|
|
color: #b45309;
|
|
}
|
|
|
|
.dinsar-engine-badge.tone-unknown {
|
|
border-color: rgba(100, 116, 139, 0.28);
|
|
background: rgba(148, 163, 184, 0.12);
|
|
color: #475569;
|
|
}
|
|
|
|
.dinsar-trace-stat {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 3px 8px;
|
|
border-radius: 999px;
|
|
background: rgba(148, 163, 184, 0.12);
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-trace-stat strong {
|
|
font-size: 10px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-control-cluster {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-toggle-label {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 5px 8px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
color: var(--color-text-secondary);
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.dinsar-toggle-label input[type="checkbox"] {
|
|
accent-color: var(--color-accent);
|
|
}
|
|
|
|
/* ============ D-InSAR Production ============ */
|
|
|
|
.dinsar-production-shell {
|
|
width: 100%;
|
|
max-width: 1280px;
|
|
margin: 0 auto;
|
|
padding: 16px;
|
|
display: grid;
|
|
gap: 14px;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.production-workspace-shell .dinsar-production-shell,
|
|
.production-workspace-shell .dinsar-products-page {
|
|
max-width: none;
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
|
|
.production-workspace-shell .dinsar-production-shell {
|
|
padding: 0;
|
|
}
|
|
|
|
.dinsar-production-header {
|
|
display: grid;
|
|
grid-template-columns: minmax(280px, 1fr) minmax(420px, 0.95fr);
|
|
gap: 14px;
|
|
align-items: stretch;
|
|
padding: 14px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.dinsar-production-header h3,
|
|
.dinsar-production-section-header h4 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.dinsar-production-header h3 {
|
|
font-size: 1.08em;
|
|
}
|
|
|
|
.dinsar-production-header p,
|
|
.dinsar-production-section-header p {
|
|
margin: 4px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 0.84em;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.dinsar-production-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(92px, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-production-signal {
|
|
display: grid;
|
|
gap: 3px;
|
|
min-height: 54px;
|
|
padding: 8px 10px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--color-border);
|
|
background: #f8fafc;
|
|
align-content: center;
|
|
}
|
|
|
|
.dinsar-production-signal span {
|
|
color: var(--color-text-muted);
|
|
font-size: 0.76em;
|
|
}
|
|
|
|
.dinsar-production-signal strong {
|
|
color: var(--color-text-primary);
|
|
font-size: 0.9em;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.dinsar-production-signal.ok {
|
|
border-color: rgba(22, 163, 74, 0.26);
|
|
background: rgba(22, 163, 74, 0.06);
|
|
}
|
|
|
|
.dinsar-production-signal.warn {
|
|
border-color: rgba(245, 158, 11, 0.28);
|
|
background: rgba(245, 158, 11, 0.08);
|
|
}
|
|
|
|
.dinsar-production-section {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-production-section-header {
|
|
padding: 0 2px;
|
|
}
|
|
|
|
.dinsar-production-section-header h4 {
|
|
font-size: 0.96em;
|
|
}
|
|
|
|
@media (max-width: 1180px) {
|
|
.dinsar-production-header {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 760px) {
|
|
.dinsar-production-shell {
|
|
padding: 12px;
|
|
}
|
|
|
|
.dinsar-production-summary {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
/* ============ D-InSAR Catalog ============ */
|
|
|
|
.dinsar-status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 3px 10px;
|
|
border-radius: 999px;
|
|
border: 1px solid transparent;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.dinsar-status-pill.tone-ready {
|
|
background: rgba(22, 163, 74, 0.12);
|
|
color: #166534;
|
|
border-color: rgba(22, 163, 74, 0.25);
|
|
}
|
|
|
|
.dinsar-status-pill.tone-info {
|
|
background: rgba(14, 165, 233, 0.12);
|
|
color: #0369a1;
|
|
border-color: rgba(14, 165, 233, 0.24);
|
|
}
|
|
|
|
.dinsar-status-pill.tone-warn {
|
|
background: rgba(245, 158, 11, 0.14);
|
|
color: #b45309;
|
|
border-color: rgba(245, 158, 11, 0.25);
|
|
}
|
|
|
|
.dinsar-status-pill.tone-partial {
|
|
background: rgba(217, 119, 6, 0.13);
|
|
color: #92400e;
|
|
border-color: rgba(217, 119, 6, 0.28);
|
|
}
|
|
|
|
.dinsar-status-pill.tone-error {
|
|
background: rgba(220, 38, 38, 0.12);
|
|
color: #b91c1c;
|
|
border-color: rgba(220, 38, 38, 0.24);
|
|
}
|
|
|
|
.dinsar-status-pill.tone-neutral {
|
|
background: rgba(148, 163, 184, 0.12);
|
|
color: #475569;
|
|
border-color: rgba(148, 163, 184, 0.24);
|
|
}
|
|
|
|
.dinsar-catalog-shell,
|
|
.dinsar-products-card,
|
|
.dinsar-products-hero {
|
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(249, 251, 255, 0.98));
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 14px;
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.dinsar-catalog-shell {
|
|
padding: 16px;
|
|
display: grid;
|
|
gap: 14px;
|
|
}
|
|
|
|
.dinsar-catalog-header,
|
|
.dinsar-products-hero {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.dinsar-catalog-header-copy strong,
|
|
.dinsar-products-hero strong {
|
|
display: block;
|
|
font-size: 16px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-catalog-header-copy p,
|
|
.dinsar-products-hero p {
|
|
margin: 6px 0 0;
|
|
max-width: 760px;
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-catalog-header-actions,
|
|
.dinsar-products-hero-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
.dinsar-catalog-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-catalog-stat-card {
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 12px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.95);
|
|
}
|
|
|
|
.dinsar-catalog-stat-card span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-stat-card strong {
|
|
font-size: 18px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-catalog-stat-card small {
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-catalog-meta-strip {
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 12px;
|
|
border-radius: 12px;
|
|
background: rgba(239, 246, 255, 0.75);
|
|
color: var(--color-text-secondary);
|
|
font-size: 12px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.dinsar-catalog-message,
|
|
.dinsar-products-message {
|
|
padding: 10px 12px;
|
|
border-radius: 12px;
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.dinsar-catalog-message.tone-success,
|
|
.dinsar-products-message.tone-success {
|
|
background: rgba(22, 163, 74, 0.12);
|
|
color: #166534;
|
|
border: 1px solid rgba(22, 163, 74, 0.24);
|
|
}
|
|
|
|
.dinsar-catalog-message.tone-error,
|
|
.dinsar-products-message.tone-error {
|
|
background: rgba(220, 38, 38, 0.12);
|
|
color: #b91c1c;
|
|
border: 1px solid rgba(220, 38, 38, 0.24);
|
|
}
|
|
|
|
.dinsar-catalog-manage {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.15fr) minmax(0, 1.85fr);
|
|
gap: 14px;
|
|
padding: 14px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 14px;
|
|
background: rgba(248, 250, 252, 0.92);
|
|
}
|
|
|
|
.dinsar-catalog-manage-copy strong {
|
|
display: block;
|
|
margin-bottom: 6px;
|
|
font-size: 14px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-catalog-manage-copy p {
|
|
margin: 0;
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-catalog-manage-form {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-catalog-manage-form textarea {
|
|
min-height: 94px;
|
|
resize: vertical;
|
|
}
|
|
|
|
.dinsar-catalog-manage-actions,
|
|
.dinsar-products-actions,
|
|
.dinsar-catalog-filter-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dinsar-catalog-manage-actions .primary,
|
|
.dinsar-products-actions .primary {
|
|
background: var(--color-accent);
|
|
color: #fff;
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.dinsar-catalog-manage-actions .primary:hover:not(:disabled),
|
|
.dinsar-products-actions .primary:hover:not(:disabled) {
|
|
background: var(--color-accent-strong);
|
|
}
|
|
|
|
.dinsar-catalog-workspace {
|
|
display: grid;
|
|
grid-template-columns: minmax(300px, 340px) minmax(0, 1fr);
|
|
gap: 14px;
|
|
min-height: 0;
|
|
align-items: stretch;
|
|
height: min(760px, calc(100vh - 180px));
|
|
}
|
|
|
|
.panel--standalone .dinsar-catalog-workspace {
|
|
grid-template-columns: minmax(300px, 340px) minmax(0, 1fr);
|
|
height: min(820px, calc(100vh - 148px));
|
|
}
|
|
|
|
.dinsar-catalog-list-card,
|
|
.dinsar-catalog-detail-card {
|
|
min-height: 0;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 14px;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.dinsar-catalog-list-card {
|
|
min-height: 0;
|
|
}
|
|
|
|
.panel--standalone {
|
|
width: 100%;
|
|
border-right: none;
|
|
border-left: none;
|
|
box-shadow: none;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.panel--standalone .panel-tabs {
|
|
padding-left: 0;
|
|
padding-right: 0;
|
|
background: transparent;
|
|
border-bottom: none;
|
|
}
|
|
|
|
.panel--standalone .panel-content {
|
|
overflow-y: auto;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.panel-standalone-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 14px;
|
|
padding: 4px 0 14px;
|
|
}
|
|
|
|
.panel-standalone-header-main {
|
|
display: grid;
|
|
gap: 5px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.panel-standalone-eyebrow {
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
letter-spacing: 0;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.panel-standalone-header-main strong {
|
|
font-size: 20px;
|
|
line-height: 1.2;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.panel-standalone-header-main p {
|
|
margin: 0;
|
|
max-width: 860px;
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.panel-standalone-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
}
|
|
|
|
.panel-standalone-actions button {
|
|
padding: 8px 14px;
|
|
border-radius: 6px;
|
|
background: rgba(255, 255, 255, 0.92);
|
|
border: 1px solid var(--color-border);
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.panel-standalone-actions button.panel-standalone-return {
|
|
background: rgba(15, 23, 42, 0.86);
|
|
border-color: rgba(15, 23, 42, 0.92);
|
|
color: #fff;
|
|
}
|
|
|
|
.panel-standalone-actions button.active-tab {
|
|
background: var(--color-accent);
|
|
border-color: var(--color-accent);
|
|
color: #fff;
|
|
}
|
|
|
|
.dinsar-catalog-card-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
padding: 12px 14px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.94);
|
|
}
|
|
|
|
.dinsar-catalog-card-head strong {
|
|
display: block;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.dinsar-catalog-card-head span {
|
|
display: block;
|
|
margin-top: 4px;
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-filter-bar {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) auto;
|
|
gap: 10px;
|
|
padding: 12px 14px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.dinsar-catalog-filter-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.dinsar-catalog-filter-field span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-empty {
|
|
padding: 20px 14px;
|
|
color: var(--color-text-muted);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.dinsar-catalog-empty.inline {
|
|
padding: 8px 0 0;
|
|
}
|
|
|
|
.dinsar-catalog-empty.error {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.dinsar-catalog-empty.ok {
|
|
color: #166534;
|
|
}
|
|
|
|
.dinsar-catalog-list {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 12px;
|
|
min-height: 0;
|
|
flex: 1 1 auto;
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
scrollbar-gutter: stable;
|
|
}
|
|
|
|
.dinsar-catalog-list-item {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 12px;
|
|
text-align: left;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.dinsar-catalog-list-item.active {
|
|
border-color: rgba(37, 99, 235, 0.3);
|
|
background: rgba(239, 246, 255, 0.92);
|
|
box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.08);
|
|
}
|
|
|
|
.dinsar-catalog-list-item-top,
|
|
.dinsar-catalog-asset-top,
|
|
.dinsar-catalog-issue-top,
|
|
.dinsar-monitor-top,
|
|
.dinsar-monitor-log-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: center;
|
|
}
|
|
|
|
.dinsar-catalog-list-item-top strong {
|
|
min-width: 0;
|
|
font-size: 13px;
|
|
line-height: 1.5;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.dinsar-catalog-list-item-badges,
|
|
.dinsar-catalog-hero-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
align-items: center;
|
|
font-size: 11px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-list-item-meta,
|
|
.dinsar-catalog-list-item-trace,
|
|
.dinsar-monitor-message,
|
|
.dinsar-monitor-log-message,
|
|
.dinsar-catalog-asset-item,
|
|
.dinsar-catalog-issue-item {
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
color: var(--color-text-secondary);
|
|
word-break: break-all;
|
|
}
|
|
|
|
.dinsar-catalog-list-item-trace {
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-detail-body {
|
|
padding: 14px;
|
|
display: grid;
|
|
gap: 14px;
|
|
min-height: 0;
|
|
flex: 1 1 auto;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.dinsar-catalog-hero {
|
|
display: grid;
|
|
grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
|
|
gap: 14px;
|
|
}
|
|
|
|
.dinsar-catalog-preview-frame {
|
|
overflow: hidden;
|
|
min-height: 180px;
|
|
border-radius: 14px;
|
|
border: 1px solid var(--color-border);
|
|
background:
|
|
linear-gradient(135deg, rgba(226, 232, 240, 0.86), rgba(241, 245, 249, 0.96));
|
|
}
|
|
|
|
.dinsar-catalog-preview-frame img {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.dinsar-catalog-hero-meta {
|
|
display: grid;
|
|
gap: 12px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.dinsar-catalog-hero-title-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.dinsar-catalog-hero-title-row h4 {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
}
|
|
|
|
.dinsar-catalog-hero-title-row p {
|
|
margin: 6px 0 0;
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-kv-grid,
|
|
.dinsar-catalog-detail-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.dinsar-catalog-meta-field {
|
|
display: grid;
|
|
gap: 4px;
|
|
padding: 10px 12px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.88);
|
|
}
|
|
|
|
.dinsar-catalog-meta-field span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-catalog-meta-field strong {
|
|
font-size: 12px;
|
|
line-height: 1.55;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.break-all {
|
|
word-break: break-all;
|
|
}
|
|
|
|
.dinsar-catalog-section-card {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 12px;
|
|
border-radius: 14px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(255, 255, 255, 0.95);
|
|
}
|
|
|
|
.dinsar-catalog-section-card.nested {
|
|
background: rgba(248, 250, 252, 0.92);
|
|
}
|
|
|
|
.dinsar-catalog-section-title {
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-catalog-asset-list,
|
|
.dinsar-catalog-issue-list,
|
|
.dinsar-monitor-log-list {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-catalog-asset-item,
|
|
.dinsar-catalog-issue-item {
|
|
padding: 10px 12px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.92);
|
|
}
|
|
|
|
.dinsar-catalog-asset-item.ok {
|
|
border-color: rgba(22, 163, 74, 0.22);
|
|
}
|
|
|
|
.dinsar-catalog-asset-item.missing,
|
|
.dinsar-catalog-issue-item.error {
|
|
border-color: rgba(220, 38, 38, 0.2);
|
|
background: rgba(254, 242, 242, 0.92);
|
|
}
|
|
|
|
.dinsar-catalog-issue-item.warn {
|
|
border-color: rgba(245, 158, 11, 0.22);
|
|
background: rgba(255, 247, 237, 0.92);
|
|
}
|
|
|
|
.dinsar-catalog-asset-top span,
|
|
.dinsar-catalog-issue-top span,
|
|
.dinsar-catalog-issue-action,
|
|
.dinsar-monitor-log-time {
|
|
font-size: 11px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-products-page {
|
|
width: 100%;
|
|
max-width: 1480px;
|
|
margin: 0 auto;
|
|
padding: 6px 0 24px;
|
|
display: grid;
|
|
gap: 14px;
|
|
}
|
|
|
|
.panel--standalone .dinsar-products-page {
|
|
max-width: 1480px;
|
|
}
|
|
|
|
.dinsar-products-hero {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
align-items: flex-start;
|
|
padding: 16px 18px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.dinsar-products-hero strong {
|
|
display: block;
|
|
font-size: 18px;
|
|
line-height: 1.35;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-products-hero p {
|
|
max-width: 72ch;
|
|
margin: 8px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.dinsar-products-signals {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(116px, 1fr));
|
|
gap: 8px;
|
|
min-width: 280px;
|
|
}
|
|
|
|
.dinsar-products-section-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
align-items: flex-end;
|
|
padding: 2px 2px 0;
|
|
}
|
|
|
|
.dinsar-products-section-head strong {
|
|
display: block;
|
|
font-size: 14px;
|
|
line-height: 1.45;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-products-section-head span {
|
|
display: block;
|
|
margin-top: 3px;
|
|
font-size: 12px;
|
|
line-height: 1.55;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-products-top-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(420px, 0.95fr) minmax(460px, 1.05fr);
|
|
gap: 16px;
|
|
align-items: start;
|
|
}
|
|
|
|
.dinsar-products-card {
|
|
padding: 14px;
|
|
display: grid;
|
|
gap: 12px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.dinsar-products-card.monitor.tone-warn {
|
|
border-color: rgba(245, 158, 11, 0.28);
|
|
}
|
|
|
|
.dinsar-products-card-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.dinsar-products-card-head strong {
|
|
display: block;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.dinsar-products-card-head span {
|
|
display: block;
|
|
margin-top: 4px;
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-products-form-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
|
|
gap: 10px;
|
|
}
|
|
|
|
.dinsar-products-controlled-source {
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 12px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.96);
|
|
}
|
|
|
|
.dinsar-products-controlled-source span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-products-controlled-source strong {
|
|
font-size: 14px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.dinsar-products-controlled-source p,
|
|
.dinsar-products-action-hint {
|
|
margin: 0;
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.dinsar-products-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.dinsar-products-field span {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-products-result-card {
|
|
padding: 12px;
|
|
border-radius: 12px;
|
|
font-size: 13px;
|
|
line-height: 1.65;
|
|
}
|
|
|
|
.dinsar-products-result-card.success {
|
|
background: rgba(22, 163, 74, 0.1);
|
|
color: #166534;
|
|
}
|
|
|
|
.dinsar-products-result-card.error {
|
|
background: rgba(220, 38, 38, 0.1);
|
|
color: #b91c1c;
|
|
}
|
|
|
|
.dinsar-products-empty {
|
|
color: var(--color-text-muted);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.dinsar-products-catalog-section {
|
|
display: grid;
|
|
gap: 10px;
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.dinsar-products-catalog-section .dinsar-catalog-shell {
|
|
width: 100%;
|
|
min-width: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.dinsar-products-catalog-section .dinsar-catalog-workspace {
|
|
grid-template-columns: minmax(360px, 420px) minmax(0, 1fr);
|
|
}
|
|
|
|
.sbas-products-page {
|
|
width: 100%;
|
|
max-width: 1280px;
|
|
margin: 0 auto;
|
|
padding: 6px 0 24px;
|
|
display: grid;
|
|
gap: 14px;
|
|
}
|
|
|
|
.sbas-products-header {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 16px 18px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: #fff;
|
|
}
|
|
|
|
.sbas-products-header-main {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.sbas-products-header h3 {
|
|
margin: 0;
|
|
color: var(--color-text-primary);
|
|
font-size: 18px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.sbas-products-header p {
|
|
max-width: 76ch;
|
|
margin: 8px 0 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.sbas-products-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.sbas-products-signals,
|
|
.sbas-products-metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.sbas-products-section-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
align-items: flex-end;
|
|
padding: 2px 2px 0;
|
|
}
|
|
|
|
.sbas-products-section-head strong {
|
|
display: block;
|
|
font-size: 14px;
|
|
line-height: 1.45;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.sbas-products-section-head span {
|
|
display: block;
|
|
margin-top: 3px;
|
|
font-size: 12px;
|
|
line-height: 1.55;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.sbas-products-workspace {
|
|
display: grid;
|
|
grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
|
|
gap: 12px;
|
|
align-items: start;
|
|
}
|
|
|
|
.dinsar-monitor-card {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 12px;
|
|
border-radius: 14px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(248, 250, 252, 0.92);
|
|
}
|
|
|
|
.dinsar-monitor-top strong {
|
|
display: block;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.dinsar-monitor-top span,
|
|
.dinsar-monitor-task-id {
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.dinsar-monitor-task-id {
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.dinsar-monitor-progress {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
}
|
|
|
|
.dinsar-monitor-progress-track {
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
overflow: hidden;
|
|
background: rgba(148, 163, 184, 0.2);
|
|
}
|
|
|
|
.dinsar-monitor-progress-bar {
|
|
height: 100%;
|
|
background: linear-gradient(90deg, #38bdf8, #2563eb);
|
|
}
|
|
|
|
.dinsar-monitor-log-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: flex-start;
|
|
padding: 10px 12px;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--color-border);
|
|
background: rgba(255, 255, 255, 0.96);
|
|
}
|
|
|
|
.dinsar-monitor-log-item.tone-error {
|
|
border-color: rgba(220, 38, 38, 0.22);
|
|
background: rgba(254, 242, 242, 0.92);
|
|
}
|
|
|
|
.dinsar-monitor-log-item.tone-warn {
|
|
border-color: rgba(245, 158, 11, 0.22);
|
|
background: rgba(255, 247, 237, 0.92);
|
|
}
|
|
|
|
.dinsar-monitor-log-item .danger {
|
|
color: #b91c1c;
|
|
border-color: rgba(220, 38, 38, 0.2);
|
|
background: rgba(254, 242, 242, 0.92);
|
|
}
|
|
|
|
.dinsar-monitor-log-main {
|
|
min-width: 0;
|
|
}
|
|
|
|
.export-result-item label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.export-result-item .dinsar-engine-badge {
|
|
margin-left: auto;
|
|
}
|
|
|
|
/* ============ Unified Result Extraction Workspace ============ */
|
|
.result-extraction-page {
|
|
min-height: 100%;
|
|
padding: 16px;
|
|
display: grid;
|
|
gap: 14px;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.result-extraction-hero {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 16px;
|
|
padding: 18px 20px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
}
|
|
|
|
.result-extraction-hero div:first-child {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.result-extraction-hero span {
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-hero strong {
|
|
font-size: 22px;
|
|
line-height: 1.2;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-hero p {
|
|
max-width: 900px;
|
|
margin: 0;
|
|
color: var(--color-text-secondary);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.result-extraction-hero-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
min-width: 240px;
|
|
}
|
|
|
|
.result-extraction-hero-meta span {
|
|
padding: 7px 10px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.result-extraction-metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.result-extraction-metric {
|
|
padding: 14px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
border-left-width: 4px;
|
|
}
|
|
|
|
.result-extraction-metric.tone-primary {
|
|
border-left-color: #2563eb;
|
|
}
|
|
|
|
.result-extraction-metric.tone-neutral {
|
|
border-left-color: #64748b;
|
|
}
|
|
|
|
.result-extraction-metric.tone-warning {
|
|
border-left-color: #d97706;
|
|
}
|
|
|
|
.result-extraction-metric span {
|
|
display: block;
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-metric strong {
|
|
display: block;
|
|
margin-top: 8px;
|
|
font-size: 24px;
|
|
line-height: 1;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-metric p {
|
|
margin: 8px 0 0;
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.result-extraction-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(260px, 310px) minmax(0, 1fr);
|
|
gap: 14px;
|
|
min-height: min(720px, calc(100vh - 270px));
|
|
}
|
|
|
|
.result-extraction-channel-list {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 10px;
|
|
}
|
|
|
|
.result-extraction-channel-list button {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 4px 10px;
|
|
padding: 13px;
|
|
text-align: left;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-channel-list button.active {
|
|
border-color: rgba(37, 99, 235, 0.45);
|
|
background: #eff6ff;
|
|
box-shadow: inset 3px 0 0 #2563eb;
|
|
}
|
|
|
|
.result-extraction-channel-list span {
|
|
grid-column: 1 / -1;
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-channel-list strong {
|
|
min-width: 0;
|
|
font-size: 14px;
|
|
line-height: 1.25;
|
|
}
|
|
|
|
.result-extraction-channel-list em,
|
|
.result-extraction-state {
|
|
justify-self: end;
|
|
align-self: center;
|
|
padding: 4px 8px;
|
|
border-radius: 999px;
|
|
font-size: 11px;
|
|
font-style: normal;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.result-extraction-channel-list em.ready,
|
|
.result-extraction-state.ready {
|
|
color: #166534;
|
|
background: #dcfce7;
|
|
}
|
|
|
|
.result-extraction-channel-list em.planned,
|
|
.result-extraction-state.planned {
|
|
color: #0f766e;
|
|
background: #ccfbf1;
|
|
}
|
|
|
|
.result-extraction-channel-list em.pending,
|
|
.result-extraction-state.pending {
|
|
color: #92400e;
|
|
background: #fef3c7;
|
|
}
|
|
|
|
.result-extraction-main-card {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.result-extraction-card-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
padding: 14px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.result-extraction-card-head div {
|
|
display: grid;
|
|
gap: 4px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.result-extraction-card-head span,
|
|
.result-extraction-list-head span {
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-card-head strong {
|
|
font-size: 15px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-card-head button,
|
|
.result-extraction-action-stack button {
|
|
padding: 8px 12px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: #ffffff;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.result-extraction-action-stack button.primary {
|
|
border-color: #2563eb;
|
|
background: #2563eb;
|
|
color: #ffffff;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.result-extraction-card-head button:disabled,
|
|
.result-extraction-action-stack button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.result-extraction-controls {
|
|
display: grid;
|
|
grid-template-columns: minmax(180px, 0.9fr) minmax(150px, 0.45fr) minmax(160px, auto) auto;
|
|
gap: 12px;
|
|
padding: 14px 16px 10px;
|
|
}
|
|
|
|
.result-extraction-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.result-extraction-field span {
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-field input,
|
|
.result-extraction-field select {
|
|
width: 100%;
|
|
min-width: 0;
|
|
box-sizing: border-box;
|
|
padding: 9px 10px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 6px;
|
|
background: #ffffff;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-checkbox {
|
|
display: inline-flex;
|
|
align-items: end;
|
|
gap: 8px;
|
|
min-height: 55px;
|
|
color: var(--color-text-secondary);
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.result-extraction-checkbox input {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
.result-extraction-action-stack {
|
|
display: flex;
|
|
align-items: end;
|
|
gap: 8px;
|
|
}
|
|
|
|
.result-extraction-hint {
|
|
margin: 0 16px 12px;
|
|
padding: 9px 10px;
|
|
border: 1px solid rgba(37, 99, 235, 0.16);
|
|
border-radius: 6px;
|
|
background: #eff6ff;
|
|
color: #1e3a8a;
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.result-extraction-message {
|
|
display: grid;
|
|
gap: 5px;
|
|
margin: 0 16px 12px;
|
|
padding: 10px 12px;
|
|
border-radius: 6px;
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.result-extraction-message.error {
|
|
border: 1px solid #fecaca;
|
|
background: #fef2f2;
|
|
color: #b91c1c;
|
|
}
|
|
|
|
.result-extraction-message.success {
|
|
border: 1px solid #bbf7d0;
|
|
background: #f0fdf4;
|
|
color: #166534;
|
|
}
|
|
|
|
.result-extraction-message code {
|
|
color: var(--color-text-primary);
|
|
word-break: break-all;
|
|
}
|
|
|
|
.result-extraction-list-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
padding: 0 16px 10px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.result-extraction-list-head strong {
|
|
font-size: 12px;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.result-extraction-result-list {
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
scrollbar-gutter: stable;
|
|
display: grid;
|
|
align-content: start;
|
|
}
|
|
|
|
.result-extraction-workspace-split {
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.25fr) minmax(330px, 0.75fr);
|
|
border-top: 1px solid var(--color-border);
|
|
}
|
|
|
|
.result-extraction-result-column {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.result-delivery-panel {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border-left: 1px solid var(--color-border);
|
|
background: #fbfdff;
|
|
}
|
|
|
|
.result-delivery-list {
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
scrollbar-gutter: stable;
|
|
}
|
|
|
|
.result-delivery-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: start;
|
|
padding: 11px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.result-delivery-row-main {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 5px;
|
|
}
|
|
|
|
.result-delivery-row-main strong {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 13px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-delivery-row-main span,
|
|
.result-delivery-row-main em {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-delivery-row-main em {
|
|
color: #b91c1c;
|
|
font-style: normal;
|
|
}
|
|
|
|
.result-delivery-downloads {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
}
|
|
|
|
.result-delivery-downloads a {
|
|
max-width: 150px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
padding: 4px 7px;
|
|
border: 1px solid rgba(37, 99, 235, 0.2);
|
|
border-radius: 6px;
|
|
background: #eff6ff;
|
|
color: #1d4ed8;
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.result-extraction-result-row {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
padding: 11px 16px;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.result-extraction-result-main {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 4px;
|
|
}
|
|
|
|
.result-extraction-result-main strong {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 13px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-result-main span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-status-chip {
|
|
padding: 4px 7px;
|
|
border-radius: 999px;
|
|
background: #f1f5f9;
|
|
color: var(--color-text-secondary);
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.result-extraction-empty {
|
|
padding: 22px 16px;
|
|
color: var(--color-text-muted);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.result-extraction-placeholder {
|
|
display: grid;
|
|
gap: 14px;
|
|
align-content: start;
|
|
padding: 22px;
|
|
}
|
|
|
|
.result-extraction-placeholder > strong {
|
|
font-size: 20px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-placeholder > p {
|
|
max-width: 720px;
|
|
margin: 0;
|
|
color: var(--color-text-secondary);
|
|
line-height: 1.7;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.result-extraction-state {
|
|
justify-self: start;
|
|
}
|
|
|
|
.result-extraction-contract {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.result-extraction-contract div,
|
|
.result-extraction-sbas-sample {
|
|
padding: 12px;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: 8px;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.result-extraction-contract span,
|
|
.result-extraction-sbas-sample > span {
|
|
display: block;
|
|
margin-bottom: 7px;
|
|
font-size: 11px;
|
|
font-weight: 800;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.result-extraction-contract strong {
|
|
font-size: 13px;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.result-extraction-sbas-sample {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.result-extraction-sbas-sample p {
|
|
margin: 0;
|
|
color: var(--color-text-muted);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.result-extraction-sbas-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
padding: 8px 0;
|
|
border-top: 1px solid var(--color-border);
|
|
}
|
|
|
|
.result-extraction-sbas-row strong {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.result-extraction-sbas-row span {
|
|
font-size: 12px;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
@media (max-width: 1200px) {
|
|
.dinsar-toolbar-grid,
|
|
.dinsar-catalog-summary,
|
|
.dinsar-products-top-grid,
|
|
.dinsar-catalog-manage,
|
|
.dinsar-catalog-hero,
|
|
.dinsar-catalog-detail-grid,
|
|
.dinsar-catalog-kv-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.result-extraction-metrics {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.result-extraction-layout {
|
|
grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
|
|
}
|
|
|
|
.result-extraction-workspace-split {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.result-delivery-panel {
|
|
border-left: 0;
|
|
border-top: 1px solid var(--color-border);
|
|
min-height: 260px;
|
|
}
|
|
|
|
.dinsar-filter-layout {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.dinsar-catalog-workspace {
|
|
grid-template-columns: minmax(0, 320px) minmax(0, 1fr);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1500px) {
|
|
.panel--standalone .dinsar-products-top-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 900px) {
|
|
.pair-planning-layout.with-map {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.pair-planning-map-pane {
|
|
position: static;
|
|
}
|
|
.dinsar-toolbar-grid,
|
|
.dinsar-filter-layout,
|
|
.dinsar-catalog-summary,
|
|
.dinsar-catalog-workspace,
|
|
.dinsar-products-catalog-section .dinsar-catalog-workspace,
|
|
.dinsar-catalog-manage,
|
|
.dinsar-catalog-filter-bar,
|
|
.dinsar-catalog-hero,
|
|
.dinsar-catalog-detail-grid,
|
|
.dinsar-catalog-kv-grid,
|
|
.dinsar-products-top-grid,
|
|
.dinsar-products-form-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.dinsar-catalog-header,
|
|
.dinsar-products-hero,
|
|
.dinsar-catalog-card-head,
|
|
.dinsar-products-card-head,
|
|
.dinsar-catalog-hero-title-row,
|
|
.dinsar-monitor-top,
|
|
.dinsar-monitor-log-head,
|
|
.dinsar-row-header,
|
|
.dinsar-item .data-item-controls {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.dinsar-row-badges {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.dinsar-toolbar-footer-main {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.panel-standalone-header {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.panel-standalone-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.dinsar-catalog-list-card {
|
|
position: static;
|
|
max-height: none;
|
|
}
|
|
|
|
.dinsar-catalog-list {
|
|
max-height: 48vh;
|
|
}
|
|
|
|
.result-extraction-layout,
|
|
.result-extraction-controls,
|
|
.result-extraction-contract {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.result-extraction-channel-list {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.result-extraction-action-stack {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.result-extraction-checkbox {
|
|
align-items: center;
|
|
min-height: auto;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.dinsar-products-page {
|
|
padding: 12px;
|
|
}
|
|
|
|
.dinsar-results-toolbar,
|
|
.dinsar-catalog-shell,
|
|
.dinsar-products-card,
|
|
.dinsar-products-hero {
|
|
padding-left: 12px;
|
|
padding-right: 12px;
|
|
}
|
|
|
|
.dinsar-engine-filter-row,
|
|
.dinsar-toolbar-actions,
|
|
.dinsar-catalog-manage-actions,
|
|
.dinsar-products-actions {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.dinsar-engine-filter-row button,
|
|
.dinsar-toolbar-actions button,
|
|
.dinsar-catalog-manage-actions button,
|
|
.dinsar-products-actions button {
|
|
width: 100%;
|
|
}
|
|
|
|
.result-extraction-page {
|
|
padding: 12px;
|
|
}
|
|
|
|
.result-extraction-hero,
|
|
.result-extraction-card-head {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.result-extraction-hero-meta,
|
|
.result-extraction-channel-list,
|
|
.result-extraction-metrics {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.result-extraction-result-row {
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
}
|
|
|
|
.result-extraction-result-row .dinsar-engine-badge,
|
|
.result-extraction-status-chip {
|
|
grid-column: 2;
|
|
justify-self: start;
|
|
}
|
|
}
|