/* Space Weather Mode Styles */ /* Main container */ .sw-visuals-container { display: flex; flex-direction: column; gap: 12px; padding: 12px; height: 100%; overflow-y: auto; } /* Header metrics strip */ .sw-header-strip { display: flex; align-items: center; gap: 2px; background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 8px 12px; flex-wrap: wrap; } .sw-header-stat { display: flex; flex-direction: column; align-items: center; padding: 4px 12px; min-width: 60px; } .sw-header-stat + .sw-header-stat { border-left: 1px solid var(--border-color); } .sw-header-value { font-family: var(--font-mono, 'Roboto Condensed', monospace); font-size: 18px; font-weight: 700; color: var(--text-primary); line-height: 1.2; } .sw-header-label { font-size: 9px; font-weight: 600; letter-spacing: 0.5px; color: var(--text-dim); text-transform: uppercase; } .sw-header-value.accent-cyan { color: var(--accent-cyan); } .sw-header-value.accent-green { color: #00ff88; } .sw-header-value.accent-yellow { color: #ffcc00; } .sw-header-value.accent-orange { color: #ff8800; } .sw-header-value.accent-red { color: #ff3366; } /* Refresh controls in strip */ .sw-strip-controls { display: flex; align-items: center; gap: 8px; margin-left: auto; padding-left: 12px; } .sw-refresh-btn { background: transparent; border: 1px solid var(--border-color); color: var(--text-secondary); padding: 4px 10px; border-radius: 4px; font-size: 11px; cursor: pointer; font-family: var(--font-mono, 'Roboto Condensed', monospace); transition: border-color 0.2s, color 0.2s; } .sw-refresh-btn:hover { border-color: var(--accent-cyan); color: var(--accent-cyan); } .sw-last-update { font-size: 10px; color: var(--text-dim); font-family: var(--font-mono, 'Roboto Condensed', monospace); } /* NOAA G/S/R Scale cards */ .sw-scales-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .sw-scale-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 10px; text-align: center; } .sw-scale-label { font-size: 10px; font-weight: 600; letter-spacing: 0.5px; color: var(--text-dim); text-transform: uppercase; margin-bottom: 4px; } .sw-scale-value { font-family: var(--font-mono, 'Roboto Condensed', monospace); font-size: 24px; font-weight: 700; line-height: 1.2; } .sw-scale-desc { font-size: 10px; color: var(--text-dim); margin-top: 2px; } /* Scale severity colors */ .sw-scale-0 { color: #00ff88; border-color: #00ff8833; } .sw-scale-1 { color: #88ff00; border-color: #88ff0033; } .sw-scale-2 { color: #ffcc00; border-color: #ffcc0033; } .sw-scale-3 { color: #ff8800; border-color: #ff880033; } .sw-scale-4 { color: #ff4400; border-color: #ff440033; } .sw-scale-5 { color: #ff0044; border-color: #ff004433; } /* HF Band conditions grid */ .sw-band-panel { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 12px; } .sw-band-title { font-size: 11px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; } .sw-band-grid { display: grid; grid-template-columns: auto repeat(2, 1fr); gap: 4px 8px; font-size: 11px; font-family: var(--font-mono, 'Roboto Condensed', monospace); } .sw-band-header { font-size: 10px; font-weight: 600; color: var(--text-dim); text-transform: uppercase; padding-bottom: 4px; border-bottom: 1px solid var(--border-color); } .sw-band-name { color: var(--text-secondary); font-weight: 500; } .sw-band-cond { text-align: center; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600; } .sw-band-good { color: #00ff88; background: #00ff8815; } .sw-band-fair { color: #ffcc00; background: #ffcc0015; } .sw-band-poor { color: #ff3366; background: #ff336615; } /* 2-column dashboard grid */ .sw-dashboard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } /* Chart containers */ .sw-chart-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 12px; } .sw-chart-title { font-size: 11px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; } .sw-chart-wrap { position: relative; height: 180px; } .sw-chart-wrap canvas { width: 100% !important; height: 100% !important; } /* Flare probability table */ .sw-prob-table { width: 100%; border-collapse: collapse; font-size: 11px; font-family: var(--font-mono, 'Roboto Condensed', monospace); } .sw-prob-table th { font-size: 10px; font-weight: 600; color: var(--text-dim); text-transform: uppercase; text-align: left; padding: 4px 6px; border-bottom: 1px solid var(--border-color); } .sw-prob-table td { padding: 4px 6px; color: var(--text-secondary); border-bottom: 1px solid var(--border-color); } /* Solar image gallery */ .sw-image-panel { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 12px; } .sw-image-tabs { display: flex; gap: 4px; margin-bottom: 8px; } .sw-image-tab { background: transparent; border: 1px solid var(--border-color); color: var(--text-dim); padding: 4px 10px; border-radius: 4px; font-size: 10px; font-weight: 600; cursor: pointer; font-family: var(--font-mono, 'Roboto Condensed', monospace); transition: all 0.2s; } .sw-image-tab:hover { border-color: var(--text-secondary); color: var(--text-secondary); } .sw-image-tab.active { border-color: var(--accent-cyan); color: var(--accent-cyan); background: var(--accent-cyan)10; } .sw-image-frame { display: flex; align-items: center; justify-content: center; min-height: 200px; background: var(--bg-primary); border-radius: 4px; overflow: hidden; } .sw-image-frame img { max-width: 100%; max-height: 400px; object-fit: contain; border-radius: 4px; } /* D-RAP frequency selector */ .sw-drap-freqs { display: flex; gap: 4px; margin-bottom: 8px; flex-wrap: wrap; } .sw-drap-freq-btn { background: transparent; border: 1px solid var(--border-color); color: var(--text-dim); padding: 3px 8px; border-radius: 3px; font-size: 10px; cursor: pointer; font-family: var(--font-mono, 'Roboto Condensed', monospace); transition: all 0.2s; } .sw-drap-freq-btn:hover { border-color: var(--text-secondary); color: var(--text-secondary); } .sw-drap-freq-btn.active { border-color: var(--accent-cyan); color: var(--accent-cyan); } /* Alerts list */ .sw-alerts-panel { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 12px; max-height: 300px; overflow-y: auto; } .sw-alert-item { padding: 8px; border-bottom: 1px solid var(--border-color); font-size: 11px; font-family: var(--font-mono, 'Roboto Condensed', monospace); } .sw-alert-item:last-child { border-bottom: none; } .sw-alert-type { font-weight: 600; color: var(--accent-cyan); font-size: 10px; text-transform: uppercase; margin-bottom: 2px; } .sw-alert-time { font-size: 10px; color: var(--text-dim); margin-bottom: 4px; } .sw-alert-msg { color: var(--text-secondary); line-height: 1.4; white-space: pre-wrap; font-size: 10px; } /* Active regions table */ .sw-regions-panel { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 12px; max-height: 300px; overflow-y: auto; } .sw-regions-table { width: 100%; border-collapse: collapse; font-size: 10px; font-family: var(--font-mono, 'Roboto Condensed', monospace); } .sw-regions-table th { font-weight: 600; color: var(--text-dim); text-transform: uppercase; text-align: left; padding: 4px 6px; border-bottom: 1px solid var(--border-color); position: sticky; top: 0; background: var(--bg-card); } .sw-regions-table td { padding: 4px 6px; color: var(--text-secondary); border-bottom: 1px solid var(--border-color); } /* Empty / loading states */ .sw-empty { text-align: center; padding: 20px; color: var(--text-dim); font-size: 11px; font-family: var(--font-mono, 'Roboto Condensed', monospace); } .sw-loading { text-align: center; padding: 20px; color: var(--text-dim); font-size: 11px; } .sw-loading::after { content: ''; display: inline-block; width: 12px; height: 12px; border: 2px solid var(--border-color); border-top-color: var(--accent-cyan); border-radius: 50%; animation: sw-spin 0.8s linear infinite; margin-left: 8px; vertical-align: middle; } @keyframes sw-spin { to { transform: rotate(360deg); } } /* Full-width card */ .sw-full-width { grid-column: 1 / -1; } /* Responsive */ @media (max-width: 768px) { .sw-dashboard-grid { grid-template-columns: 1fr; } .sw-scales-row { grid-template-columns: 1fr; } .sw-header-strip { gap: 0; } .sw-header-stat { padding: 4px 8px; min-width: 50px; } .sw-header-value { font-size: 14px; } }