| |
| :root { |
| --bg-void: #070C08; |
| --bg-panel: rgba(14, 22, 16, 0.82); |
| --border-color: rgba(112, 173, 71, 0.18); |
| --border-hover: rgba(112, 173, 71, 0.4); |
| |
| --text-main: #F1F8F0; |
| --text-muted: #88A385; |
| |
| |
| --cyan: #70AD47; |
| --cyan-glow: rgba(112, 173, 71, 0.35); |
| --green: #70AD47; |
| --green-glow: rgba(112, 173, 71, 0.25); |
| --yellow: #F59E0B; |
| --yellow-glow: rgba(245, 158, 11, 0.2); |
| --red: #EF4444; |
| --red-glow: rgba(239, 68, 68, 0.2); |
| |
| |
| --font-display: 'Outfit', 'Space Grotesk', system-ui, sans-serif; |
| --font-body: 'Space Grotesk', system-ui, sans-serif; |
| --font-mono: 'JetBrains Mono', monospace; |
| } |
|
|
| |
| * { |
| box-sizing: border-box; |
| margin: 0; |
| padding: 0; |
| } |
|
|
| body { |
| background-color: var(--bg-void); |
| color: var(--text-main); |
| font-family: var(--font-body); |
| overflow-x: hidden; |
| min-height: 100vh; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| |
| #rain-canvas { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| z-index: 0; |
| pointer-events: none; |
| opacity: 0.12; |
| } |
|
|
| |
| |
| |
| .app-layout { |
| display: flex; |
| flex-direction: column; |
| min-height: 100vh; |
| width: 100%; |
| position: relative; |
| } |
|
|
| |
| .app-top-bar { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| height: 58px; |
| min-height: 58px; |
| padding: 0 1.4rem; |
| background: rgba(6, 10, 7, 0.95); |
| backdrop-filter: blur(20px); |
| -webkit-backdrop-filter: blur(20px); |
| border-bottom: 1px solid var(--border-subtle); |
| position: sticky; |
| top: 0; |
| z-index: 1000; |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6); |
| flex-wrap: nowrap; |
| box-sizing: border-box; |
| width: 100%; |
| } |
|
|
| .top-bar-left { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| flex-shrink: 0; |
| } |
|
|
| .top-bar-brand { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| cursor: pointer; |
| user-select: none; |
| } |
|
|
| .top-bar-brand .logo-text { |
| font-size: 1.3rem; |
| line-height: 1; |
| font-weight: 800; |
| } |
|
|
| .top-bar-brand .version-tag { |
| font-size: 0.65rem; |
| } |
|
|
| .menu-toggle-btn { |
| display: flex; |
| flex-direction: column; |
| justify-content: center; |
| align-items: center; |
| gap: 4px; |
| width: 36px; |
| height: 36px; |
| background: rgba(255, 255, 255, 0.04); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| cursor: pointer; |
| padding: 0; |
| transition: all 0.2s ease; |
| flex-shrink: 0; |
| } |
|
|
| .menu-toggle-btn span { |
| display: block; |
| width: 18px; |
| height: 2px; |
| background: var(--text-primary); |
| border-radius: 2px; |
| transition: all 0.2s ease; |
| } |
|
|
| .menu-toggle-btn:hover { |
| background: rgba(112, 173, 71, 0.15); |
| border-color: var(--accent-primary); |
| } |
|
|
| .menu-toggle-btn:hover span { |
| background: var(--accent-primary); |
| } |
|
|
| .top-bar-center { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| flex: 1; |
| padding: 0 12px; |
| min-width: 0; |
| } |
|
|
| .active-page-pill { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| font-weight: 700; |
| letter-spacing: 1px; |
| color: var(--accent-primary); |
| background: rgba(112, 173, 71, 0.1); |
| border: 1px solid rgba(112, 173, 71, 0.3); |
| padding: 3px 12px; |
| border-radius: 20px; |
| text-transform: uppercase; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| .top-bar-right { |
| display: flex; |
| align-items: center; |
| gap: 10px; |
| flex-shrink: 0; |
| } |
|
|
| .top-nav-quick-btn { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| padding: 6px 12px; |
| background: rgba(112, 173, 71, 0.12); |
| border: 1px solid rgba(112, 173, 71, 0.4); |
| border-radius: 7px; |
| color: var(--accent-primary); |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| font-weight: 700; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| white-space: nowrap; |
| } |
|
|
| .top-nav-quick-btn:hover { |
| background: var(--accent-primary); |
| color: #050B08; |
| box-shadow: 0 0 14px rgba(112, 173, 71, 0.4); |
| } |
|
|
| |
| @media (max-width: 768px) { |
| .app-top-bar { |
| height: 52px; |
| min-height: 52px; |
| padding: 0 0.85rem; |
| } |
| |
| .top-bar-brand .version-tag { |
| display: none; |
| } |
| |
| .top-bar-brand .logo-text { |
| font-size: 1.15rem; |
| } |
| |
| .top-bar-right .system-status { |
| display: none; |
| } |
| |
| .top-nav-quick-btn { |
| padding: 5px 8px; |
| font-size: 0.68rem; |
| } |
| |
| .active-page-pill { |
| font-size: 0.62rem; |
| padding: 2px 8px; |
| } |
| } |
|
|
| @media (max-width: 480px) { |
| .top-bar-center { |
| display: none; |
| } |
| } |
|
|
| |
| .app-sidebar { |
| width: 285px; |
| min-width: 285px; |
| height: 100vh; |
| position: fixed; |
| top: 0; |
| left: 0; |
| background: rgba(7, 12, 8, 0.98); |
| backdrop-filter: blur(28px); |
| -webkit-backdrop-filter: blur(28px); |
| border-right: 1px solid var(--border-color); |
| display: flex; |
| flex-direction: column; |
| z-index: 10001; |
| box-shadow: 10px 0 45px rgba(0, 0, 0, 0.85); |
| padding: 1.5rem 1.1rem; |
| overflow-y: auto; |
| scrollbar-width: thin; |
| scrollbar-color: rgba(255, 255, 255, 0.1) transparent; |
| transform: translateX(-100%); |
| transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); |
| } |
|
|
| .app-sidebar.open { |
| transform: translateX(0); |
| } |
|
|
| .app-sidebar::-webkit-scrollbar { |
| width: 4px; |
| } |
| .app-sidebar::-webkit-scrollbar-thumb { |
| background: rgba(255, 255, 255, 0.1); |
| border-radius: 4px; |
| } |
|
|
| |
| .sidebar-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| margin-bottom: 1.5rem; |
| padding-bottom: 1.2rem; |
| border-bottom: 1px solid rgba(255, 255, 255, 0.07); |
| } |
|
|
| .sidebar-close-btn { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| width: 34px; |
| height: 34px; |
| background: rgba(255, 255, 255, 0.05); |
| border: 1px solid rgba(255, 255, 255, 0.1); |
| border-radius: 8px; |
| color: var(--text-muted); |
| cursor: pointer; |
| transition: all 0.2s ease; |
| } |
|
|
| .sidebar-close-btn:hover { |
| color: #fff; |
| background: rgba(255, 255, 255, 0.12); |
| border-color: rgba(255, 255, 255, 0.2); |
| } |
|
|
| .logo-container { |
| display: flex; |
| flex-direction: column; |
| gap: 4px; |
| } |
|
|
| .logo-text { |
| font-family: var(--font-display); |
| font-size: 1.65rem; |
| font-weight: 800; |
| letter-spacing: 1.5px; |
| background: linear-gradient(135deg, #FFFFFF 40%, var(--cyan) 100%); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| cursor: pointer; |
| line-height: 1; |
| } |
|
|
| .logo-text .highlight { |
| font-weight: 300; |
| letter-spacing: 0px; |
| color: var(--cyan); |
| margin-left: 2px; |
| } |
|
|
| .version-tag { |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| color: var(--text-muted); |
| background: rgba(255, 255, 255, 0.04); |
| padding: 2px 6px; |
| border-radius: 4px; |
| border: 1px solid rgba(255, 255, 255, 0.06); |
| display: inline-block; |
| width: fit-content; |
| } |
|
|
| |
| .sidebar-menu-label { |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| font-weight: 700; |
| letter-spacing: 1.5px; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| margin-bottom: 0.65rem; |
| padding-left: 0.6rem; |
| opacity: 0.65; |
| } |
|
|
| .sidebar-nav { |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| flex: 1; |
| } |
|
|
| .sidebar-nav .nav-btn { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| width: 100%; |
| padding: 11px 14px; |
| background: transparent; |
| border: 1px solid transparent; |
| border-radius: 10px; |
| color: var(--text-muted); |
| font-family: var(--font-mono); |
| font-size: 0.78rem; |
| font-weight: 600; |
| text-align: left; |
| cursor: pointer; |
| transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1); |
| letter-spacing: 0.5px; |
| text-transform: uppercase; |
| } |
|
|
| .sidebar-nav .nav-btn .nav-icon { |
| width: 18px; |
| height: 18px; |
| stroke: currentColor; |
| flex-shrink: 0; |
| transition: transform 0.2s, stroke 0.2s; |
| } |
|
|
| .sidebar-nav .nav-btn:hover { |
| color: var(--text-main); |
| background: rgba(255, 255, 255, 0.05); |
| border-color: rgba(255, 255, 255, 0.08); |
| transform: translateX(4px); |
| } |
|
|
| .sidebar-nav .nav-btn:hover .nav-icon { |
| stroke: var(--cyan); |
| } |
|
|
| .sidebar-nav .nav-btn.active { |
| color: #050B08; |
| background: var(--cyan); |
| border-color: var(--cyan); |
| font-weight: 700; |
| box-shadow: 0 0 20px rgba(0, 242, 254, 0.35); |
| } |
|
|
| .sidebar-nav .nav-btn.active .nav-icon { |
| stroke: #050B08; |
| } |
|
|
| |
| .sidebar-footer { |
| margin-top: auto; |
| padding-top: 1.2rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.07); |
| } |
|
|
| .sidebar-status-card { |
| display: flex; |
| align-items: center; |
| gap: 10px; |
| background: rgba(255, 255, 255, 0.03); |
| border: 1px solid rgba(255, 255, 255, 0.06); |
| border-radius: 8px; |
| padding: 10px 12px; |
| } |
|
|
| .sidebar-status-text { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .sidebar-status-title { |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| font-weight: 700; |
| color: #f59e0b; |
| letter-spacing: 0.5px; |
| } |
|
|
| .sidebar-status-sub { |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| color: var(--text-muted); |
| } |
|
|
| |
| .app-main-content { |
| flex: 1; |
| width: 100%; |
| min-width: 0; |
| display: flex; |
| flex-direction: column; |
| position: relative; |
| z-index: 5; |
| } |
|
|
| |
| .sidebar-backdrop { |
| display: block; |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100vw; |
| height: 100vh; |
| background: rgba(0, 0, 0, 0.75); |
| backdrop-filter: blur(6px); |
| -webkit-backdrop-filter: blur(6px); |
| z-index: 10000; |
| opacity: 0; |
| pointer-events: none; |
| transition: opacity 0.28s ease; |
| } |
|
|
| .sidebar-backdrop.active { |
| opacity: 1; |
| pointer-events: auto; |
| } |
|
|
| |
| .control-label-row { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.45rem; |
| } |
|
|
| .control-label-row label { |
| margin-bottom: 0; |
| font-size: 0.8rem; |
| font-family: var(--font-mono); |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| } |
|
|
| .control-val-badge { |
| font-family: var(--font-mono); |
| font-size: 0.78rem; |
| color: var(--cyan); |
| background: rgba(0, 242, 254, 0.08); |
| border: 1px solid rgba(0, 242, 254, 0.22); |
| padding: 2px 8px; |
| border-radius: 4px; |
| white-space: nowrap; |
| } |
|
|
| |
| |
| |
|
|
| |
| :root { |
| --bg-primary: #060A07; |
| --bg-surface: rgba(13, 20, 15, 0.88); |
| --bg-elevated: rgba(20, 30, 23, 0.95); |
| --border-subtle: rgba(255, 255, 255, 0.08); |
| --border-hover: rgba(112, 173, 71, 0.35); |
| --border-focus: rgba(112, 173, 71, 0.6); |
| |
| --text-primary: #F8FAF9; |
| --text-secondary: #94A398; |
| --text-muted: #64746B; |
| |
| --accent-primary: #70AD47; |
| --accent-hover: #5d9239; |
| |
| --status-live: #00F0FF; |
| --status-estimated: #F59E0B; |
| --status-forecast: #22C55E; |
| --status-simulation: #38BDF8; |
| --status-derived: #A855F7; |
| --status-warning: #F59E0B; |
| --status-danger: #EF4444; |
| } |
|
|
| |
| .dashboard-grid-12 { |
| display: grid; |
| grid-template-columns: repeat(12, 1fr); |
| gap: 1rem; |
| width: 100%; |
| margin-bottom: 1rem; |
| } |
|
|
| .col-12 { grid-column: span 12; } |
| .col-8 { grid-column: span 8; } |
| .col-7 { grid-column: span 7; } |
| .col-6 { grid-column: span 6; } |
| .col-5 { grid-column: span 5; } |
| .col-4 { grid-column: span 4; } |
| .col-3 { grid-column: span 3; } |
|
|
| |
| .page-header-hud { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 1.1rem; |
| padding-bottom: 0.85rem; |
| border-bottom: 1px solid var(--border-subtle); |
| flex-wrap: wrap; |
| gap: 12px; |
| } |
|
|
| .page-title-hud { |
| font-family: var(--font-display); |
| font-size: 1.55rem; |
| font-weight: 700; |
| letter-spacing: 0.5px; |
| color: var(--text-primary); |
| margin: 0; |
| line-height: 1.2; |
| } |
|
|
| .page-subtitle-hud { |
| font-size: 0.82rem; |
| color: var(--text-secondary); |
| margin: 3px 0 0 0; |
| } |
|
|
| .header-context-badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 8px; |
| background: rgba(112, 173, 71, 0.08); |
| border: 1px solid rgba(112, 173, 71, 0.25); |
| padding: 6px 14px; |
| border-radius: 20px; |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| color: var(--text-primary); |
| } |
|
|
| .context-dot { |
| width: 6px; |
| height: 6px; |
| border-radius: 50%; |
| background: var(--accent-primary); |
| box-shadow: 0 0 8px var(--accent-primary); |
| } |
|
|
| .context-divider { |
| color: var(--text-muted); |
| opacity: 0.5; |
| } |
|
|
| |
| .control-panel-hud { |
| margin-bottom: 1rem; |
| background: var(--bg-surface); |
| border: 1px solid var(--border-subtle); |
| border-radius: 10px; |
| padding: 1.1rem 1.3rem; |
| } |
|
|
| .control-grid-top { |
| display: grid; |
| grid-template-columns: 1fr 1.2fr 1.1fr; |
| gap: 1.2rem; |
| align-items: flex-start; |
| } |
|
|
| .hud-label { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| font-family: var(--font-mono); |
| font-size: 0.74rem; |
| font-weight: 600; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| margin-bottom: 6px; |
| } |
|
|
| .hud-label svg { |
| color: var(--accent-primary); |
| } |
|
|
| .form-control-hud { |
| width: 100%; |
| background: rgba(0, 0, 0, 0.45); |
| border: 1px solid var(--border-subtle); |
| color: var(--text-primary); |
| padding: 8px 12px; |
| border-radius: 7px; |
| outline: none; |
| font-family: var(--font-body); |
| font-size: 0.84rem; |
| transition: all 0.2s ease; |
| box-sizing: border-box; |
| } |
|
|
| .form-control-hud:focus { |
| border-color: var(--accent-primary); |
| box-shadow: 0 0 0 2px rgba(112, 173, 71, 0.2); |
| } |
|
|
| |
| .horizon-pill-group { |
| display: flex; |
| gap: 6px; |
| width: 100%; |
| } |
|
|
| .horizon-pill { |
| flex: 1; |
| padding: 7px 4px; |
| background: rgba(255, 255, 255, 0.04); |
| border: 1px solid var(--border-subtle); |
| border-radius: 6px; |
| color: var(--text-secondary); |
| font-family: var(--font-mono); |
| font-size: 0.76rem; |
| font-weight: 600; |
| cursor: pointer; |
| text-align: center; |
| transition: all 0.2s ease; |
| } |
|
|
| .horizon-pill:hover { |
| background: rgba(255, 255, 255, 0.08); |
| color: var(--text-primary); |
| border-color: rgba(255, 255, 255, 0.15); |
| } |
|
|
| .horizon-pill.active { |
| background: var(--accent-primary); |
| border-color: var(--accent-primary); |
| color: #050B08; |
| font-weight: 700; |
| box-shadow: 0 0 12px rgba(112, 173, 71, 0.4); |
| } |
|
|
| |
| .advanced-scenario-wrapper { |
| margin-top: 1rem; |
| padding-top: 0.85rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.06); |
| } |
|
|
| .advanced-toggle-btn { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| background: transparent; |
| border: none; |
| color: var(--text-secondary); |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| cursor: pointer; |
| padding: 0; |
| transition: color 0.2s; |
| } |
|
|
| .advanced-toggle-btn:hover { |
| color: var(--text-primary); |
| } |
|
|
| .advanced-toggle-btn .toggle-icon { |
| font-size: 0.7rem; |
| transition: transform 0.2s ease; |
| } |
|
|
| .advanced-toggle-btn.open .toggle-icon { |
| transform: rotate(90deg); |
| } |
|
|
| .advanced-toggle-btn .toggle-hint { |
| color: var(--text-muted); |
| font-size: 0.7rem; |
| } |
|
|
| .advanced-scenario-drawer { |
| margin-top: 0.85rem; |
| padding: 1rem; |
| background: rgba(0, 0, 0, 0.35); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| } |
|
|
| .scenario-grid-hud { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 1.2rem; |
| } |
|
|
| .scenario-card { |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| } |
|
|
| .scenario-card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 2px; |
| } |
|
|
| .scenario-label { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| } |
|
|
| .toggle-pill-wrap { |
| display: inline-flex; |
| background: rgba(0, 0, 0, 0.4); |
| border: 1px solid var(--border-subtle); |
| border-radius: 4px; |
| padding: 2px; |
| gap: 2px; |
| } |
|
|
| .mode-toggle-btn { |
| background: transparent; |
| border: none; |
| color: var(--text-muted); |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| padding: 2px 6px; |
| border-radius: 3px; |
| cursor: pointer; |
| transition: all 0.15s ease; |
| } |
|
|
| .mode-toggle-btn.active { |
| background: rgba(112, 173, 71, 0.2); |
| color: var(--accent-primary); |
| font-weight: 700; |
| } |
|
|
| .slider-with-val { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| } |
|
|
| .slider-with-val input[type="range"] { |
| flex: 1; |
| } |
|
|
| .scenario-val-display { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| color: var(--text-secondary); |
| white-space: nowrap; |
| min-width: 110px; |
| text-align: right; |
| } |
|
|
| |
| .control-actions-bar { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-top: 1.1rem; |
| padding-top: 0.85rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.06); |
| flex-wrap: wrap; |
| gap: 10px; |
| } |
|
|
| .model-info-link { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| background: transparent; |
| border: none; |
| color: var(--text-muted); |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| cursor: pointer; |
| transition: color 0.2s ease; |
| } |
|
|
| .model-info-link:hover { |
| color: var(--accent-primary); |
| } |
|
|
| .right-actions { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| } |
|
|
| .btn-hud-primary { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| padding: 9px 20px; |
| background: var(--accent-primary); |
| border: 1px solid var(--accent-primary); |
| color: #050B08; |
| font-family: var(--font-display); |
| font-size: 0.85rem; |
| font-weight: 700; |
| letter-spacing: 0.5px; |
| border-radius: 7px; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| box-shadow: 0 0 16px rgba(112, 173, 71, 0.35); |
| } |
|
|
| .btn-hud-primary:hover { |
| background: var(--accent-hover); |
| box-shadow: 0 0 22px rgba(112, 173, 71, 0.55); |
| transform: translateY(-1px); |
| } |
|
|
| .btn-hud-primary:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| transform: none; |
| } |
|
|
| .btn-hud-secondary { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| padding: 8px 14px; |
| background: rgba(255, 255, 255, 0.04); |
| border: 1px solid var(--border-subtle); |
| color: var(--text-secondary); |
| font-family: var(--font-mono); |
| font-size: 0.76rem; |
| font-weight: 600; |
| border-radius: 7px; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| } |
|
|
| .btn-hud-secondary:hover { |
| background: rgba(255, 255, 255, 0.08); |
| border-color: rgba(255, 255, 255, 0.2); |
| color: var(--text-primary); |
| } |
|
|
| |
| .decision-kpi-grid { |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| gap: 0.9rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .kpi-card-hud { |
| padding: 0.9rem 1.1rem; |
| background: var(--bg-surface); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| display: flex; |
| flex-direction: column; |
| justify-content: space-between; |
| min-height: 88px; |
| transition: border-color 0.2s, box-shadow 0.2s; |
| } |
|
|
| .kpi-card-hud:hover { |
| border-color: var(--border-hover); |
| } |
|
|
| .kpi-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 4px; |
| } |
|
|
| .kpi-label { |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| font-weight: 600; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| } |
|
|
| .kpi-body { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .kpi-value { |
| font-family: var(--font-display); |
| font-size: 1.55rem; |
| font-weight: 800; |
| color: var(--text-primary); |
| line-height: 1.15; |
| } |
|
|
| .kpi-value .unit { |
| font-size: 0.8rem; |
| font-weight: 400; |
| color: var(--text-muted); |
| } |
|
|
| .kpi-value.highlight-cyan { |
| color: var(--status-live); |
| } |
|
|
| .kpi-status-badge { |
| display: inline-block; |
| padding: 3px 10px; |
| border-radius: 5px; |
| font-size: 0.88rem; |
| font-weight: 700; |
| font-family: var(--font-mono); |
| width: fit-content; |
| } |
|
|
| .kpi-status-badge.safe { |
| background: rgba(34, 197, 94, 0.15); |
| border: 1px solid rgba(34, 197, 94, 0.4); |
| color: #4ade80; |
| } |
|
|
| .kpi-status-badge.warning { |
| background: rgba(245, 158, 11, 0.15); |
| border: 1px solid rgba(245, 158, 11, 0.4); |
| color: #fbbf24; |
| } |
|
|
| .kpi-status-badge.critical { |
| background: rgba(239, 68, 68, 0.15); |
| border: 1px solid rgba(239, 68, 68, 0.4); |
| color: #f87171; |
| } |
|
|
| .kpi-subtext { |
| font-family: var(--font-mono); |
| font-size: 0.66rem; |
| color: var(--text-muted); |
| margin-top: 3px; |
| } |
|
|
| |
| .panel-header-hud { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.85rem; |
| flex-wrap: wrap; |
| gap: 6px; |
| } |
|
|
| .panel-heading { |
| font-family: var(--font-display); |
| font-size: 0.88rem; |
| font-weight: 700; |
| letter-spacing: 1px; |
| color: var(--text-primary); |
| margin: 0; |
| border-left: 3px solid var(--accent-primary); |
| padding-left: 7px; |
| text-transform: uppercase; |
| line-height: 1.2; |
| } |
|
|
| .panel-caption { |
| display: block; |
| font-size: 0.74rem; |
| color: var(--text-muted); |
| margin-top: 2px; |
| } |
|
|
| |
| .map-panel-hud { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .map-container-hud { |
| position: relative; |
| width: 100%; |
| height: 420px; |
| background: #111; |
| border-radius: 8px; |
| overflow: hidden; |
| border: 1px solid var(--border-subtle); |
| } |
|
|
| #map { |
| width: 100%; |
| height: 100%; |
| background: #111 !important; |
| } |
|
|
| .map-overlay-status { |
| position: absolute; |
| bottom: 12px; |
| left: 12px; |
| right: 12px; |
| background: rgba(7, 12, 8, 0.9); |
| backdrop-filter: blur(14px); |
| -webkit-backdrop-filter: blur(14px); |
| border: 1px solid var(--border-subtle); |
| border-radius: 6px; |
| padding: 8px 14px; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| z-index: 1000; |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6); |
| } |
|
|
| .overlay-item { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .overlay-label { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| } |
|
|
| .overlay-val { |
| font-family: var(--font-mono); |
| font-size: 0.78rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| } |
|
|
| .overlay-val.highlight { |
| color: var(--status-live); |
| } |
|
|
| .overlay-divider { |
| width: 1px; |
| height: 24px; |
| background: rgba(255, 255, 255, 0.1); |
| } |
|
|
| |
| .context-panel-hud { |
| display: flex; |
| flex-direction: column; |
| gap: 0.85rem; |
| } |
|
|
| .context-card-hud { |
| background: rgba(0, 0, 0, 0.3); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| padding: 0.9rem 1rem; |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| } |
|
|
| .context-card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| } |
|
|
| .context-card-title { |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| font-weight: 700; |
| color: var(--text-secondary); |
| letter-spacing: 0.6px; |
| text-transform: uppercase; |
| } |
|
|
| .weather-display-row { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| gap: 10px; |
| } |
|
|
| .weather-temp-hud { |
| font-family: var(--font-display); |
| font-size: 1.15rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| display: block; |
| } |
|
|
| .weather-sub-hud { |
| font-size: 0.72rem; |
| color: var(--text-muted); |
| } |
|
|
| .weather-metrics { |
| display: flex; |
| flex-direction: column; |
| gap: 3px; |
| text-align: right; |
| } |
|
|
| .metric-row { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| color: var(--text-muted); |
| } |
|
|
| .metric-val { |
| color: var(--status-live); |
| font-weight: 600; |
| } |
|
|
| .event-desc-hud { |
| font-size: 0.78rem; |
| color: var(--text-primary); |
| margin: 0; |
| line-height: 1.4; |
| } |
|
|
| .context-source-tag { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| color: var(--text-muted); |
| border-top: 1px solid rgba(255, 255, 255, 0.05); |
| padding-top: 6px; |
| } |
|
|
| |
| .timeline-chart-panel-hud { |
| margin-bottom: 1rem; |
| } |
|
|
| .chart-wrapper-hud { |
| width: 100%; |
| position: relative; |
| height: 200px; |
| margin: 0.5rem 0; |
| } |
|
|
| .chart-summary-bar { |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| gap: 0.8rem; |
| margin-top: 0.85rem; |
| padding-top: 0.85rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.06); |
| } |
|
|
| .chart-summary-item { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .summary-label { |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| } |
|
|
| .summary-val { |
| font-family: var(--font-mono); |
| font-size: 0.85rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| margin-top: 2px; |
| } |
|
|
| .summary-val.highlight-amber { color: var(--status-warning); } |
| .summary-val.highlight-green { color: var(--status-forecast); } |
|
|
| |
| .operational-panel-hud { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .operational-grid-hud { |
| display: grid; |
| grid-template-columns: repeat(3, 1fr); |
| gap: 0.7rem; |
| margin-top: 0.5rem; |
| } |
|
|
| .op-card { |
| background: rgba(0, 0, 0, 0.3); |
| border: 1px solid var(--border-subtle); |
| border-radius: 7px; |
| padding: 0.75rem 0.85rem; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .op-label { |
| font-family: var(--font-mono); |
| font-size: 0.66rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| margin-bottom: 2px; |
| } |
|
|
| .op-val { |
| font-family: var(--font-display); |
| font-size: 1.15rem; |
| font-weight: 800; |
| color: var(--text-primary); |
| line-height: 1.2; |
| } |
|
|
| .op-val.highlight { |
| color: var(--accent-primary); |
| } |
|
|
| .op-sub { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| color: var(--text-muted); |
| margin-top: 2px; |
| } |
|
|
| .operational-assumptions-strip { |
| margin-top: 0.85rem; |
| padding-top: 0.75rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.05); |
| display: flex; |
| flex-direction: column; |
| gap: 3px; |
| } |
|
|
| .assumptions-tag { |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| color: var(--text-muted); |
| } |
|
|
| .disclaimer-micro { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| color: var(--status-warning); |
| font-weight: 600; |
| } |
|
|
| .btn-formula-toggle { |
| display: inline-flex; |
| align-items: center; |
| gap: 4px; |
| background: rgba(255, 255, 255, 0.04); |
| border: 1px solid var(--border-subtle); |
| color: var(--text-secondary); |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| padding: 3px 8px; |
| border-radius: 5px; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| } |
|
|
| .btn-formula-toggle:hover { |
| background: rgba(255, 255, 255, 0.08); |
| color: var(--text-primary); |
| border-color: var(--accent-primary); |
| } |
|
|
| |
| .composition-panel-hud { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .composition-stacked-bar { |
| width: 100%; |
| height: 12px; |
| background: rgba(0, 0, 0, 0.3); |
| border-radius: 6px; |
| overflow: hidden; |
| display: flex; |
| margin: 0.6rem 0 1rem 0; |
| border: 1px solid var(--border-subtle); |
| } |
|
|
| .segment { |
| height: 100%; |
| transition: width 0.6s ease; |
| } |
|
|
| .segment.organic { background: #22C55E; } |
| .segment.plastic { background: #00F0FF; } |
| .segment.paper { background: #F59E0B; } |
| .segment.glass { background: #EC4899; } |
| .segment.textile { background: #A855F7; } |
| .segment.metal { background: #94A3B8; } |
|
|
| .composition-rows-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 0.65rem 1.2rem; |
| } |
|
|
| .comp-row { |
| display: flex; |
| flex-direction: column; |
| gap: 3px; |
| } |
|
|
| .comp-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| font-size: 0.72rem; |
| } |
|
|
| .comp-name { |
| font-family: var(--font-mono); |
| color: var(--text-secondary); |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| } |
|
|
| .comp-ton { |
| font-family: var(--font-mono); |
| color: var(--text-primary); |
| font-weight: 700; |
| } |
|
|
| .dot-organic { background: #22C55E; } |
| .dot-plastic { background: #00F0FF; } |
| .dot-paper { background: #F59E0B; } |
| .dot-glass { background: #EC4899; } |
| .dot-textile { background: #A855F7; } |
| .dot-metal { background: #94A3B8; } |
|
|
| .comp-bar-bg { |
| width: 100%; |
| height: 5px; |
| background: rgba(255, 255, 255, 0.06); |
| border-radius: 3px; |
| overflow: hidden; |
| } |
|
|
| .comp-bar-fill { |
| height: 100%; |
| border-radius: 3px; |
| width: 0%; |
| transition: width 0.8s cubic-bezier(0.16, 1, 0.3, 1); |
| } |
|
|
| .comp-bar-fill.organic { background: #22C55E; } |
| .comp-bar-fill.plastic { background: #00F0FF; } |
| .comp-bar-fill.paper { background: #F59E0B; } |
| .comp-bar-fill.glass { background: #EC4899; } |
| .comp-bar-fill.textile { background: #A855F7; } |
| .comp-bar-fill.metal { background: #94A3B8; } |
|
|
| |
| .hourly-panel-hud { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .hourly-footer-hud { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-top: 0.75rem; |
| padding-top: 0.65rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.05); |
| flex-wrap: wrap; |
| gap: 8px; |
| } |
|
|
| .hourly-legend { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| } |
|
|
| .legend-item { |
| display: inline-flex; |
| align-items: center; |
| gap: 5px; |
| font-family: var(--font-mono); |
| font-size: 0.65rem; |
| color: var(--text-secondary); |
| } |
|
|
| .legend-swatch { |
| width: 8px; |
| height: 8px; |
| border-radius: 2px; |
| } |
|
|
| .legend-swatch.low { background: #22C55E; } |
| .legend-swatch.medium { background: #F59E0B; } |
| .legend-swatch.high { background: #EF4444; } |
|
|
| .hourly-factors-note { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| color: var(--text-muted); |
| } |
|
|
| |
| .provenance-panel-hud { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .btn-methodology-link { |
| background: transparent; |
| border: none; |
| color: var(--status-live); |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| cursor: pointer; |
| padding: 0; |
| transition: all 0.2s ease; |
| } |
|
|
| .btn-methodology-link:hover { |
| text-decoration: underline; |
| } |
|
|
| .provenance-status-table { |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| margin: 0.5rem 0; |
| } |
|
|
| .prov-row { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| background: rgba(0, 0, 0, 0.25); |
| border: 1px solid var(--border-subtle); |
| border-radius: 6px; |
| padding: 6px 10px; |
| } |
|
|
| .prov-source { |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| color: var(--text-secondary); |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| } |
|
|
| .dot { |
| width: 6px; |
| height: 6px; |
| border-radius: 50%; |
| } |
|
|
| .dot-live { background: var(--status-live); box-shadow: 0 0 6px var(--status-live); } |
| .dot-ref { background: #94A3B8; } |
| .dot-est { background: var(--status-estimated); } |
| .dot-model { background: var(--status-forecast); } |
| .dot-pending { background: #64748B; } |
|
|
| .research-disclaimer-box { |
| display: flex; |
| gap: 8px; |
| background: rgba(245, 158, 11, 0.06); |
| border: 1px solid rgba(245, 158, 11, 0.2); |
| border-radius: 6px; |
| padding: 8px 10px; |
| margin-top: 0.6rem; |
| } |
|
|
| .disclaimer-icon { |
| font-size: 0.85rem; |
| line-height: 1; |
| } |
|
|
| .disclaimer-text { |
| font-size: 0.72rem; |
| color: var(--text-secondary); |
| margin: 0; |
| line-height: 1.35; |
| } |
|
|
| .disclaimer-text strong { |
| color: var(--status-warning); |
| } |
|
|
| |
| .badge { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| font-weight: 700; |
| padding: 2px 6px; |
| border-radius: 4px; |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| display: inline-block; |
| width: fit-content; |
| } |
|
|
| .badge-live { background: rgba(0, 240, 255, 0.12); color: var(--status-live); border: 1px solid rgba(0, 240, 255, 0.3); } |
| .badge-forecast { background: rgba(34, 197, 94, 0.12); color: var(--status-forecast); border: 1px solid rgba(34, 197, 94, 0.3); } |
| .badge-derived { background: rgba(168, 85, 247, 0.12); color: var(--status-derived); border: 1px solid rgba(168, 85, 247, 0.3); } |
| .badge-simulation { background: rgba(56, 189, 248, 0.12); color: var(--status-simulation); border: 1px solid rgba(56, 189, 248, 0.3); } |
| .badge-unverified { background: rgba(148, 163, 184, 0.12); color: #94A3B8; border: 1px solid rgba(148, 163, 184, 0.3); } |
| .badge-estimated { background: rgba(245, 158, 11, 0.12); color: var(--status-estimated); border: 1px solid rgba(245, 158, 11, 0.3); } |
| .badge-pending { background: rgba(100, 116, 139, 0.12); color: #64748B; border: 1px solid rgba(100, 116, 139, 0.3); } |
| .badge-observed { background: rgba(0, 240, 255, 0.12); color: var(--status-live); border: 1px solid rgba(0, 240, 255, 0.3); } |
|
|
| |
| @media (max-width: 1200px) { |
| .col-8, .col-7, .col-6, .col-5, .col-4, .col-3 { |
| grid-column: span 12; |
| } |
| |
| .control-grid-top { |
| grid-template-columns: 1fr 1fr; |
| } |
| |
| .control-item:last-child { |
| grid-column: span 2; |
| } |
| |
| .decision-kpi-grid { |
| grid-template-columns: repeat(2, 1fr); |
| } |
| |
| .chart-summary-bar { |
| grid-template-columns: repeat(2, 1fr); |
| } |
| } |
|
|
| @media (max-width: 768px) { |
| .control-grid-top { |
| grid-template-columns: 1fr; |
| } |
| |
| .control-item:last-child { |
| grid-column: span 1; |
| } |
| |
| .scenario-grid-hud { |
| grid-template-columns: 1fr; |
| } |
| |
| .decision-kpi-grid { |
| grid-template-columns: 1fr; |
| } |
| |
| .operational-grid-hud { |
| grid-template-columns: 1fr 1fr; |
| } |
| |
| .composition-rows-grid { |
| grid-template-columns: 1fr; |
| } |
| |
| .map-container-hud { |
| height: 300px; |
| } |
| |
| .map-overlay-status { |
| flex-direction: column; |
| align-items: flex-start; |
| gap: 6px; |
| } |
| |
| .overlay-divider { |
| display: none; |
| } |
| |
| .chart-summary-bar { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| |
| .route-popup { |
| font-family: var(--font-body); |
| font-size: 0.8rem; |
| color: var(--text-main); |
| background: rgba(14, 22, 16, 0.95); |
| padding: 8px 10px; |
| border-radius: 6px; |
| border: 1px solid var(--border-color); |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6); |
| } |
|
|
| .route-popup h3 { |
| font-family: var(--font-display); |
| font-size: 0.85rem; |
| color: var(--cyan); |
| margin-bottom: 4px; |
| } |
|
|
| .route-popup .highlight { |
| color: var(--cyan); |
| font-weight: 700; |
| } |
|
|
| |
| .timeline-cards-row { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(115px, 1fr)); |
| gap: 0.6rem; |
| width: 100%; |
| } |
|
|
| .timeline-card { |
| background: rgba(0, 0, 0, 0.35); |
| border: 1px solid rgba(255, 255, 255, 0.08); |
| border-radius: 7px; |
| padding: 0.65rem 0.75rem; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| text-align: center; |
| gap: 2px; |
| transition: all 0.2s ease; |
| } |
|
|
| .timeline-card:hover { |
| border-color: var(--cyan); |
| transform: translateY(-2px); |
| background: rgba(0, 242, 254, 0.05); |
| } |
|
|
| .timeline-date { |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| color: var(--text-muted); |
| } |
|
|
| .timeline-vol { |
| font-family: var(--font-display); |
| font-size: 1.15rem; |
| font-weight: 800; |
| color: var(--text-main); |
| } |
|
|
| .timeline-status { |
| font-family: var(--font-mono); |
| font-size: 0.62rem; |
| font-weight: 700; |
| padding: 2px 7px; |
| border-radius: 4px; |
| text-transform: uppercase; |
| } |
|
|
| .timeline-status.safe { background: rgba(34, 197, 94, 0.15); color: #4ade80; } |
| .timeline-status.warning { background: rgba(245, 158, 11, 0.15); color: #fbbf24; } |
| .timeline-status.critical { background: rgba(239, 68, 68, 0.15); color: #f87171; } |
|
|
| .empty-timeline { |
| width: 100%; |
| text-align: center; |
| padding: 1.5rem; |
| color: var(--text-muted); |
| font-family: var(--font-mono); |
| font-size: 0.8rem; |
| } |
|
|
| |
| .hourly-cells-grid { |
| display: grid; |
| grid-template-columns: repeat(24, 1fr); |
| gap: 3px; |
| min-width: 580px; |
| padding: 6px 0; |
| } |
|
|
| .hourly-cell { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| gap: 3px; |
| } |
|
|
| .cell-block { |
| width: 100%; |
| height: 22px; |
| border-radius: 3px; |
| transition: transform 0.15s; |
| cursor: pointer; |
| } |
|
|
| .cell-block:hover { |
| transform: scaleY(1.3); |
| } |
|
|
| .cell-block.low { background-color: rgba(34, 197, 94, 0.4); border: 1px solid #22c55e; } |
| .cell-block.medium { background-color: rgba(245, 158, 11, 0.4); border: 1px solid #f59e0b; } |
| .cell-block.high { background-color: rgba(239, 68, 68, 0.4); border: 1px solid #ef4444; } |
|
|
| .cell-time { |
| font-family: var(--font-mono); |
| font-size: 0.58rem; |
| color: var(--text-muted); |
| } |
|
|
| |
| .page-container { |
| display: none; |
| opacity: 0; |
| transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1); |
| animation: fade-in 0.4s forwards; |
| padding: 0.75rem 1rem; |
| flex: 1; |
| z-index: 5; |
| position: relative; |
| } |
|
|
| .page-container.active { |
| display: block; |
| opacity: 1; |
| } |
|
|
| @keyframes fade-in { |
| from { opacity: 0; transform: translateY(8px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
|
|
| |
| .nav-links { |
| display: flex; |
| gap: 1.25rem; |
| background: rgba(255, 255, 255, 0.03); |
| border: 1px solid rgba(255, 255, 255, 0.06); |
| padding: 4px; |
| border-radius: 8px; |
| } |
|
|
| .nav-btn { |
| background: transparent; |
| border: none; |
| color: var(--text-muted); |
| font-family: var(--font-display); |
| font-size: 0.85rem; |
| font-weight: 600; |
| letter-spacing: 1px; |
| padding: 8px 16px; |
| cursor: pointer; |
| border-radius: 6px; |
| transition: color 0.3s, background 0.3s, box-shadow 0.3s; |
| } |
|
|
| .nav-btn:hover { |
| color: var(--cyan); |
| background: rgba(255, 255, 255, 0.02); |
| } |
|
|
| .nav-btn.active { |
| color: var(--bg-void); |
| background: var(--cyan); |
| box-shadow: 0 0 15px var(--cyan-glow); |
| } |
|
|
| |
| .hero-section { |
| display: grid; |
| grid-template-columns: 1.2fr 0.8fr; |
| gap: 2rem; |
| align-items: center; |
| padding: 3rem 0; |
| } |
|
|
| @media (max-width: 900px) { |
| .hero-section { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| .hero-content { |
| display: flex; |
| flex-direction: column; |
| gap: 1.5rem; |
| } |
|
|
| .hero-title { |
| font-family: var(--font-display); |
| font-size: 3rem; |
| font-weight: 800; |
| letter-spacing: 2px; |
| line-height: 1.1; |
| background: linear-gradient(135deg, #FFF 40%, var(--cyan) 100%); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| text-shadow: 0 0 30px rgba(0, 240, 255, 0.15); |
| } |
|
|
| .hero-subtitle { |
| font-size: 1.1rem; |
| color: var(--text-muted); |
| line-height: 1.6; |
| } |
|
|
| .hero-actions { |
| display: flex; |
| gap: 1rem; |
| max-width: 400px; |
| } |
|
|
| .hero-stats-panel { |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| } |
|
|
| .hero-stat-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 1rem; |
| } |
|
|
| .hero-stat-card { |
| background: rgba(0, 0, 0, 0.02); |
| border: 1px solid var(--border-color); |
| padding: 1.2rem; |
| border-radius: 8px; |
| display: flex; |
| flex-direction: column; |
| gap: 4px; |
| } |
|
|
| .h-stat-label { |
| font-size: 0.75rem; |
| font-family: var(--font-mono); |
| color: var(--text-muted); |
| text-transform: uppercase; |
| } |
|
|
| .h-stat-value { |
| font-size: 1.8rem; |
| font-family: var(--font-display); |
| font-weight: 800; |
| color: var(--text-main); |
| } |
|
|
| |
| .features-section { |
| padding: 2rem 0; |
| } |
|
|
| .section-title { |
| font-family: var(--font-display); |
| font-size: 1.4rem; |
| font-weight: 700; |
| letter-spacing: 1.5px; |
| margin-bottom: 2rem; |
| color: var(--text-main); |
| border-left: 3px solid var(--cyan); |
| padding-left: 10px; |
| } |
|
|
| .features-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); |
| gap: 1.5rem; |
| } |
|
|
| .feature-card { |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| transition: transform 0.3s; |
| } |
|
|
| .feature-card:hover { |
| transform: translateY(-4px); |
| } |
|
|
| .feature-icon { |
| font-size: 2rem; |
| font-weight: 800; |
| color: rgba(0, 240, 255, 0.25); |
| text-shadow: 0 0 10px rgba(0, 240, 255, 0.05); |
| } |
|
|
| .feature-name { |
| font-family: var(--font-display); |
| font-size: 1.05rem; |
| font-weight: 600; |
| color: var(--cyan); |
| } |
|
|
| .feature-desc { |
| font-size: 0.85rem; |
| color: var(--text-muted); |
| line-height: 1.6; |
| } |
|
|
| |
| .page-header-section { |
| padding: 2rem 0 1rem 0; |
| } |
|
|
| .section-subtitle { |
| font-size: 0.95rem; |
| color: var(--text-muted); |
| margin-top: 6px; |
| } |
|
|
| |
| .news-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); |
| gap: 1.5rem; |
| padding: 1.5rem 0; |
| } |
|
|
| .news-card { |
| background: var(--bg-panel); |
| border: 1px solid var(--border-color); |
| border-radius: 12px; |
| padding: 1.5rem; |
| backdrop-filter: blur(16px); |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| transition: transform 0.3s, border-color 0.3s, box-shadow 0.3s; |
| } |
|
|
| .news-card:hover { |
| transform: translateY(-3px); |
| border-color: var(--border-hover); |
| box-shadow: 0 8px 32px 0 rgba(0, 240, 255, 0.05); |
| } |
|
|
| .news-card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| } |
|
|
| .news-source { |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| background: rgba(0, 240, 255, 0.08); |
| color: var(--cyan); |
| padding: 2px 8px; |
| border-radius: 4px; |
| border: 1px solid rgba(0, 240, 255, 0.2); |
| } |
|
|
| .news-date { |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| } |
|
|
| .news-title { |
| font-family: var(--font-display); |
| font-size: 1.1rem; |
| font-weight: 600; |
| color: #FFF; |
| line-height: 1.4; |
| } |
|
|
| .news-summary { |
| font-size: 0.85rem; |
| color: var(--text-muted); |
| line-height: 1.6; |
| } |
|
|
| .news-link { |
| margin-top: auto; |
| display: inline-flex; |
| align-items: center; |
| color: var(--cyan); |
| text-decoration: none; |
| font-family: var(--font-mono); |
| font-size: 0.8rem; |
| font-weight: bold; |
| gap: 6px; |
| transition: gap 0.2s; |
| } |
|
|
| .news-link:hover { |
| gap: 10px; |
| } |
|
|
| .loading-news, .loading-alerts { |
| grid-column: 1 / -1; |
| text-align: center; |
| padding: 3rem; |
| color: var(--text-muted); |
| font-family: var(--font-mono); |
| font-size: 0.9rem; |
| } |
|
|
| |
| .alerts-summary { |
| margin-top: 1.5rem; |
| } |
|
|
| .alerts-list-group { |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| } |
|
|
| .alert-row { |
| display: grid; |
| grid-template-columns: 120px 180px 100px 1fr; |
| gap: 1rem; |
| align-items: center; |
| background: rgba(0, 0, 0, 0.2); |
| border: 1px solid rgba(255, 255, 255, 0.04); |
| padding: 1rem 1.5rem; |
| border-radius: 8px; |
| transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1); |
| cursor: pointer; |
| } |
|
|
| .autopilot-row { |
| grid-template-columns: 60px 180px 100px 1fr !important; |
| } |
|
|
| .alert-row:hover { |
| background: rgba(0, 240, 255, 0.04) !important; |
| border-color: var(--cyan) !important; |
| box-shadow: 0 0 15px rgba(0, 240, 255, 0.1) !important; |
| transform: translateX(6px); |
| } |
|
|
| .alert-date { |
| font-family: var(--font-mono); |
| font-size: 0.85rem; |
| color: var(--text-muted); |
| } |
|
|
| .alert-location { |
| font-family: var(--font-display); |
| font-weight: 600; |
| color: #FFF; |
| } |
|
|
| .alert-badge { |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| font-weight: bold; |
| padding: 3px 8px; |
| border-radius: 4px; |
| text-align: center; |
| } |
|
|
| .alert-badge.critical { |
| background: rgba(255, 0, 85, 0.12); |
| color: var(--red); |
| border: 1px solid var(--red); |
| box-shadow: 0 0 10px rgba(255, 0, 85, 0.1); |
| } |
|
|
| .alert-badge.warning { |
| background: rgba(255, 230, 0, 0.12); |
| color: var(--yellow); |
| border: 1px solid var(--yellow); |
| box-shadow: 0 0 10px rgba(255, 230, 0, 0.1); |
| } |
|
|
| .alert-desc { |
| font-size: 0.85rem; |
| color: var(--text-muted); |
| } |
|
|
| |
| |
| |
| #cursor-dot, |
| #cursor-ring { |
| position: fixed; |
| top: 0; |
| left: 0; |
| pointer-events: none; |
| z-index: 10000; |
| border-radius: 50%; |
| display: none; |
| backface-visibility: hidden; |
| } |
|
|
| #cursor-dot { |
| width: 6px; |
| height: 6px; |
| background: var(--cyan); |
| box-shadow: 0 0 10px var(--cyan); |
| } |
|
|
| #cursor-ring { |
| width: 40px; |
| height: 40px; |
| border: 1px solid var(--border-hover); |
| transition: width 0.25s cubic-bezier(0.25, 1, 0.5, 1), |
| height 0.25s cubic-bezier(0.25, 1, 0.5, 1), |
| border-color 0.25s ease, |
| background 0.25s ease; |
| } |
|
|
| |
| #cursor-ring.hover-state { |
| width: 55px; |
| height: 55px; |
| border-color: var(--cyan); |
| background: rgba(0, 240, 255, 0.04); |
| box-shadow: 0 0 15px rgba(0, 240, 255, 0.15); |
| } |
|
|
| @media (pointer: coarse) { |
| #cursor-dot, |
| #cursor-ring { |
| display: none !important; |
| } |
| * { |
| cursor: auto !important; |
| } |
| } |
|
|
| |
| @media (pointer: fine) { |
| body, a, button, select, input, [role="button"], .leaflet-interactive { |
| cursor: none !important; |
| } |
| } |
|
|
| |
| |
| |
| .map-container { |
| position: relative; |
| } |
|
|
| .map-container::after { |
| content: ''; |
| position: absolute; |
| inset: 0; |
| pointer-events: none; |
| z-index: 1000; |
| background: conic-gradient(from 0deg at 50% 50%, rgba(0, 240, 255, 0.08) 0deg, transparent 90deg, transparent 360deg); |
| animation: radar-sweep 8s linear infinite; |
| opacity: 0.7; |
| border-radius: 8px; |
| mix-blend-mode: screen; |
| } |
|
|
| @keyframes radar-sweep { |
| from { |
| transform: rotate(0deg); |
| } |
| to { |
| transform: rotate(360deg); |
| } |
| } |
|
|
| |
| |
| |
| body::before { |
| content: ''; |
| position: fixed; |
| top: -10%; |
| left: -10%; |
| width: 50%; |
| height: 50%; |
| background: radial-gradient(circle, rgba(0, 240, 255, 0.05) 0%, transparent 70%); |
| z-index: 0; |
| pointer-events: none; |
| } |
|
|
| body::after { |
| content: ''; |
| position: fixed; |
| bottom: -10%; |
| right: -10%; |
| width: 60%; |
| height: 60%; |
| background: radial-gradient(circle, rgba(0, 102, 255, 0.04) 0%, transparent 70%); |
| z-index: 0; |
| pointer-events: none; |
| } |
|
|
| |
| .progress-bar-fill.organic { |
| box-shadow: 0 0 8px var(--green-glow); |
| } |
| .progress-bar-fill.plastic { |
| box-shadow: 0 0 8px var(--cyan-glow); |
| } |
| .progress-bar-fill.paper { |
| box-shadow: 0 0 8px var(--yellow-glow); |
| } |
| .progress-bar-fill.glass { |
| box-shadow: 0 0 8px rgba(0, 240, 255, 0.25); |
| } |
| .progress-bar-fill.textile { |
| box-shadow: 0 0 8px rgba(255, 0, 85, 0.25); |
| } |
| .progress-bar-fill.metal { |
| box-shadow: 0 0 8px rgba(255, 255, 255, 0.25); |
| } |
|
|
| |
| .logo-text { |
| position: relative; |
| -webkit-box-reflect: below -4px linear-gradient(transparent, rgba(255, 255, 255, 0.08)); |
| } |
|
|
| |
| |
| |
| .developers-section { |
| padding: 2.5rem 0; |
| margin-top: 3.5rem; |
| border-top: 1px solid var(--border-color); |
| } |
|
|
| .developers-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); |
| gap: 1.5rem; |
| margin-top: 1.5rem; |
| } |
|
|
| .developer-card { |
| position: relative; |
| background: var(--bg-panel) !important; |
| border: 1px solid var(--border-color) !important; |
| border-radius: 12px; |
| padding: 2.2rem; |
| text-align: center; |
| transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); |
| overflow: hidden; |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.02); |
| } |
|
|
| .developer-card::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| height: 3px; |
| background: linear-gradient(90deg, transparent, var(--cyan), transparent); |
| opacity: 0.7; |
| } |
|
|
| .developer-card:hover { |
| transform: translateY(-6px); |
| border-color: var(--cyan) !important; |
| box-shadow: 0 10px 25px rgba(5, 150, 105, 0.1) !important; |
| } |
|
|
| .dev-role { |
| font-size: 0.75rem; |
| text-transform: uppercase; |
| letter-spacing: 2px; |
| color: var(--cyan); |
| font-weight: 700; |
| margin-bottom: 0.6rem; |
| font-family: var(--font-mono); |
| } |
|
|
| .dev-name { |
| font-size: 1.25rem; |
| color: var(--text-main); |
| font-weight: 800; |
| margin-bottom: 0.8rem; |
| font-family: var(--font-display); |
| } |
|
|
| .dev-desc { |
| font-size: 0.82rem; |
| color: var(--text-muted); |
| line-height: 1.6; |
| } |
|
|
| |
| .bin-btn { |
| transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1) !important; |
| } |
|
|
| .organic-bin:hover { |
| background: rgba(74, 222, 128, 0.15) !important; |
| box-shadow: 0 0 15px rgba(74, 222, 128, 0.3) !important; |
| transform: translateY(-2px); |
| } |
|
|
| .inorganic-bin:hover { |
| background: rgba(56, 189, 248, 0.15) !important; |
| box-shadow: 0 0 15px rgba(56, 189, 248, 0.3) !important; |
| transform: translateY(-2px); |
| } |
|
|
| .hazard-bin:hover { |
| background: rgba(251, 113, 133, 0.15) !important; |
| box-shadow: 0 0 15px rgba(251, 113, 133, 0.3) !important; |
| transform: translateY(-2px); |
| } |
|
|
| .bin-btn:active { |
| transform: scale(0.95) !important; |
| } |
|
|
| |
| .fact-item { |
| background: rgba(0, 0, 0, 0.01); |
| border: 1px solid var(--border-color); |
| border-radius: 10px; |
| padding: 0.8rem 1rem; |
| transition: border-color 0.3s, background 0.3s; |
| } |
|
|
| .fact-item:hover { |
| background: rgba(0, 0, 0, 0.02); |
| border-color: var(--cyan); |
| } |
|
|
| |
| @media (max-width: 992px) { |
| .education-grid { |
| grid-template-columns: 1fr !important; |
| gap: 1.5rem !important; |
| } |
| } |
|
|
| |
| |
| |
| @media (max-width: 1200px) { |
| .dashboard-grid { |
| display: flex !important; |
| flex-direction: column !important; |
| height: auto !important; |
| overflow: visible !important; |
| gap: 1.5rem !important; |
| } |
| |
| .map-and-stats { |
| order: -1 !important; |
| } |
| .control-panel { |
| order: 0 !important; |
| } |
| .analysis-panel { |
| order: 1 !important; |
| } |
| .page-container { |
| height: auto !important; |
| overflow: visible !important; |
| } |
| } |
|
|
| @media (max-width: 992px) { |
| .autopilot-grid { |
| grid-template-columns: 1fr !important; |
| gap: 1.5rem !important; |
| } |
| .hero-section { |
| grid-template-columns: 1fr !important; |
| text-align: center; |
| } |
| .hero-actions { |
| justify-content: center; |
| margin: 0 auto; |
| } |
| } |
|
|
| @media (max-width: 768px) { |
| header { |
| flex-direction: column !important; |
| gap: 1.2rem !important; |
| padding: 1.2rem 1.5rem !important; |
| text-align: center; |
| } |
| .logo-container { |
| justify-content: center; |
| flex-wrap: wrap; |
| } |
| |
| .nav-links { |
| display: grid !important; |
| grid-template-columns: repeat(3, 1fr) !important; |
| gap: 0.5rem !important; |
| width: 100% !important; |
| background: rgba(0, 0, 0, 0.04); |
| padding: 4px; |
| border-radius: 8px; |
| border: 1px solid var(--border-color); |
| } |
| .nav-btn { |
| width: 100% !important; |
| padding: 8px 4px !important; |
| font-size: 0.72rem !important; |
| text-align: center !important; |
| justify-content: center !important; |
| margin: 0 !important; |
| } |
| .system-status { |
| justify-content: center; |
| width: 100%; |
| margin-top: 0.2rem; |
| } |
| .page-container { |
| padding: 1rem 1.2rem !important; |
| } |
| .stats-row { |
| grid-template-columns: 1fr !important; |
| gap: 1rem !important; |
| } |
| .hero-stat-grid { |
| grid-template-columns: 1fr !important; |
| } |
| .hero-title { |
| font-size: 2.2rem !important; |
| } |
| .hero-subtitle { |
| font-size: 0.95rem !important; |
| } |
| .map-panel { |
| height: 350px !important; |
| } |
| .logistics-grid { |
| grid-template-columns: 1fr !important; |
| } |
| |
| .progress-container { |
| grid-template-columns: 1fr !important; |
| gap: 1rem !important; |
| } |
| |
| .alert-row, .autopilot-row { |
| display: flex !important; |
| flex-direction: column !important; |
| align-items: flex-start !important; |
| gap: 0.5rem !important; |
| padding: 1rem 1.2rem !important; |
| } |
| .alert-row > *, .autopilot-row > * { |
| width: auto !important; |
| margin: 0 !important; |
| text-align: left !important; |
| } |
| .alert-desc, .alert-location { |
| font-size: 0.8rem !important; |
| word-break: break-word !important; |
| line-height: 1.4 !important; |
| } |
| .alert-badge { |
| align-self: flex-start !important; |
| } |
| } |
|
|
| @media (max-width: 480px) { |
| .logo-text { |
| font-size: 1.5rem !important; |
| } |
| .nav-btn { |
| font-size: 0.68rem !important; |
| padding: 6px 2px !important; |
| } |
| .section-title { |
| font-size: 1.2rem !important; |
| } |
| .developer-card { |
| padding: 1.5rem !important; |
| } |
| } |
|
|
| @keyframes steam-pulse { |
| 0% { opacity: 0.3; transform: scaleY(0.9); } |
| 100% { opacity: 0.75; transform: scaleY(1.1); } |
| } |
|
|
| @media (max-width: 992px) { |
| .crisis-story-section { |
| grid-template-columns: 1fr !important; |
| gap: 2rem !important; |
| } |
| .sticky-visualizer-panel { |
| position: relative !important; |
| top: 0 !important; |
| height: auto !important; |
| padding: 1.5rem !important; |
| } |
| .story-scroll-cards { |
| gap: 3rem !important; |
| padding-bottom: 2rem !important; |
| } |
| } |
|
|
|
|
|
|
|
|
| |
| |
| |
|
|
| |
| .badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 4px; |
| padding: 3px 8px; |
| border-radius: 4px; |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| font-weight: 700; |
| letter-spacing: 0.5px; |
| text-transform: uppercase; |
| white-space: nowrap; |
| } |
|
|
| .badge-observed { |
| background: rgba(56, 189, 248, 0.12); |
| color: #38bdf8; |
| border: 1px solid rgba(56, 189, 248, 0.4); |
| } |
|
|
| .badge-derived { |
| background: rgba(168, 85, 247, 0.12); |
| color: #c084fc; |
| border: 1px solid rgba(168, 85, 247, 0.4); |
| } |
|
|
| .badge-estimated { |
| background: rgba(245, 158, 11, 0.12); |
| color: #fbbf24; |
| border: 1px solid rgba(245, 158, 11, 0.4); |
| } |
|
|
| .badge-forecast { |
| background: rgba(112, 173, 71, 0.15); |
| color: #70AD47; |
| border: 1px solid rgba(112, 173, 71, 0.4); |
| } |
|
|
| .badge-simulation { |
| background: rgba(20, 184, 166, 0.12); |
| color: #2dd4bf; |
| border: 1px solid rgba(20, 184, 166, 0.4); |
| } |
|
|
| .badge-unverified { |
| background: rgba(239, 68, 68, 0.12); |
| color: #f87171; |
| border: 1px solid rgba(239, 68, 68, 0.4); |
| } |
|
|
| .badge-pending { |
| background: rgba(148, 163, 184, 0.12); |
| color: #94a3b8; |
| border: 1px solid rgba(148, 163, 184, 0.3); |
| } |
|
|
| .badge-prototype { |
| background: rgba(245, 158, 11, 0.15); |
| color: #f59e0b; |
| border: 1px solid rgba(245, 158, 11, 0.5); |
| } |
|
|
| |
| .status-indicator.prototype { |
| background-color: #f59e0b; |
| box-shadow: 0 0 8px #f59e0b; |
| } |
|
|
| |
| .hero-badge-container { |
| display: flex; |
| gap: 8px; |
| margin-bottom: 1.2rem; |
| flex-wrap: wrap; |
| } |
|
|
| .feature-badge { |
| margin-top: 1rem; |
| } |
|
|
| |
| .stat-card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.4rem; |
| width: 100%; |
| } |
|
|
| .log-header-row { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.3rem; |
| width: 100%; |
| } |
|
|
| |
| .data-status-banner { |
| background: rgba(245, 158, 11, 0.06); |
| border: 1px solid rgba(245, 158, 11, 0.35); |
| border-radius: 10px; |
| padding: 1.2rem 1.5rem; |
| margin-bottom: 1.5rem; |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); |
| } |
|
|
| .status-banner-content { |
| display: flex; |
| gap: 14px; |
| align-items: flex-start; |
| } |
|
|
| .status-banner-icon { |
| font-size: 1.5rem; |
| line-height: 1; |
| } |
|
|
| .status-banner-title { |
| font-family: var(--font-mono); |
| font-size: 0.85rem; |
| color: #fbbf24; |
| margin-bottom: 0.4rem; |
| } |
|
|
| .status-highlight { |
| color: #fef08a; |
| font-weight: 700; |
| margin-left: 6px; |
| } |
|
|
| .status-banner-disclaimer { |
| font-size: 0.8rem; |
| color: rgba(241, 248, 240, 0.82); |
| line-height: 1.5; |
| margin: 0; |
| } |
|
|
| |
| .sources-strip { |
| border-radius: 8px; |
| } |
|
|
| .source-tag { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| font-family: var(--font-mono); |
| font-size: 0.74rem; |
| color: var(--text-muted); |
| padding: 4px 8px; |
| border-radius: 4px; |
| background: rgba(255, 255, 255, 0.02); |
| border: 1px solid rgba(255, 255, 255, 0.06); |
| } |
|
|
| .source-tag .dot { |
| width: 6px; |
| height: 6px; |
| border-radius: 50%; |
| background: #64748b; |
| } |
|
|
| .source-tag.active .dot { |
| background: #38bdf8; |
| box-shadow: 0 0 6px #38bdf8; |
| } |
|
|
| |
| .info-pill-btn { |
| background: rgba(112, 173, 71, 0.08); |
| border: 1px solid rgba(112, 173, 71, 0.35); |
| color: var(--cyan); |
| border-radius: 6px; |
| padding: 4px 10px; |
| cursor: pointer; |
| display: inline-flex; |
| align-items: center; |
| gap: 5px; |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| font-weight: 600; |
| transition: all 0.2s; |
| } |
|
|
| .info-pill-btn:hover { |
| background: rgba(112, 173, 71, 0.2); |
| border-color: var(--cyan); |
| } |
|
|
| |
| .modal-overlay { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100vw; |
| height: 100vh; |
| background: rgba(0, 0, 0, 0.78); |
| backdrop-filter: blur(8px); |
| -webkit-backdrop-filter: blur(8px); |
| display: flex; |
| justify-content: center; |
| align-items: center; |
| z-index: 9999; |
| padding: 1.5rem; |
| } |
|
|
| .modal-card { |
| width: 100%; |
| max-width: 680px; |
| max-height: 90vh; |
| overflow-y: auto; |
| padding: 2.2rem; |
| border-radius: 16px; |
| background: #0B130E; |
| border: 1px solid var(--border-color); |
| box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6); |
| } |
|
|
| .modal-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 1.5rem; |
| } |
|
|
| .modal-title { |
| font-family: var(--font-display); |
| font-size: 1.15rem; |
| color: var(--text-main); |
| letter-spacing: 1px; |
| } |
|
|
| .modal-close-btn { |
| background: none; |
| border: none; |
| font-size: 1.8rem; |
| color: var(--text-muted); |
| cursor: pointer; |
| line-height: 1; |
| transition: color 0.2s; |
| } |
|
|
| .modal-close-btn:hover { |
| color: #fff; |
| } |
|
|
| .modal-meta-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 1.2rem; |
| } |
|
|
| .meta-item { |
| display: flex; |
| flex-direction: column; |
| gap: 4px; |
| } |
|
|
| .meta-label { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| } |
|
|
| .meta-val { |
| font-size: 0.9rem; |
| color: var(--text-main); |
| font-weight: 600; |
| } |
|
|
| |
| .pipeline-steps-grid { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 8px; |
| flex-wrap: wrap; |
| } |
|
|
| .pipeline-step-card { |
| flex: 1; |
| min-width: 140px; |
| background: rgba(255, 255, 255, 0.02); |
| border: 1px solid var(--border-color); |
| border-radius: 8px; |
| padding: 1.2rem 1rem; |
| text-align: center; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| gap: 8px; |
| transition: transform 0.2s, border-color 0.2s; |
| } |
|
|
| .pipeline-step-card:hover { |
| transform: translateY(-2px); |
| border-color: rgba(112, 173, 71, 0.4); |
| } |
|
|
| .pipeline-step-card.highlight-card { |
| background: rgba(112, 173, 71, 0.06); |
| border-color: rgba(112, 173, 71, 0.4); |
| } |
|
|
| .step-num { |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| color: var(--cyan); |
| font-weight: 700; |
| } |
|
|
| .pipeline-step-card h4 { |
| font-family: var(--font-display); |
| font-size: 0.82rem; |
| color: var(--text-main); |
| margin: 0; |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| } |
|
|
| .pipeline-step-card p { |
| font-size: 0.72rem; |
| color: var(--text-muted); |
| line-height: 1.4; |
| margin: 0; |
| } |
|
|
| .pipeline-arrow { |
| color: var(--cyan); |
| font-size: 1.2rem; |
| font-weight: 700; |
| opacity: 0.7; |
| } |
|
|
| |
| .provenance-cards-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); |
| gap: 1rem; |
| } |
|
|
| .prov-card { |
| background: rgba(255, 255, 255, 0.02); |
| border: 1px solid var(--border-color); |
| border-radius: 8px; |
| padding: 1.2rem; |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| align-items: flex-start; |
| } |
|
|
| .prov-card h4 { |
| font-family: var(--font-display); |
| font-size: 0.95rem; |
| color: var(--text-main); |
| margin: 0; |
| } |
|
|
| .prov-card p { |
| font-size: 0.8rem; |
| color: var(--text-muted); |
| line-height: 1.5; |
| margin: 0; |
| } |
|
|
| .table-responsive { |
| width: 100%; |
| overflow-x: auto; |
| } |
|
|
| .prov-table { |
| width: 100%; |
| border-collapse: collapse; |
| font-size: 0.85rem; |
| } |
|
|
| .prov-table th, .prov-table td { |
| padding: 10px 14px; |
| text-align: left; |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); |
| } |
|
|
| .prov-table th { |
| font-family: var(--font-mono); |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| background: rgba(0, 0, 0, 0.25); |
| } |
|
|
| .prov-table td { |
| color: var(--text-main); |
| } |
|
|
| .status-tag { |
| display: inline-block; |
| padding: 2px 6px; |
| border-radius: 4px; |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| font-weight: 600; |
| } |
|
|
| .status-tag.active { |
| background: rgba(34, 197, 94, 0.15); |
| color: #22c55e; |
| } |
|
|
| .status-tag.pending { |
| background: rgba(245, 158, 11, 0.15); |
| color: #f59e0b; |
| } |
|
|
| @media (max-width: 768px) { |
| .pipeline-arrow { |
| display: none; |
| } |
| .modal-meta-grid { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
|
|
| |
| |
| |
|
|
| |
| .hero-section-hud { |
| display: grid; |
| grid-template-columns: 1.25fr 0.85fr; |
| gap: 1.4rem; |
| margin-bottom: 2rem; |
| align-items: stretch; |
| } |
|
|
| .hero-content-hud { |
| display: flex; |
| flex-direction: column; |
| justify-content: center; |
| } |
|
|
| .hero-badge-container { |
| display: flex; |
| gap: 6px; |
| flex-wrap: wrap; |
| align-items: center; |
| margin-bottom: 0.6rem; |
| } |
|
|
| .hero-title-hud { |
| font-family: var(--font-display); |
| font-size: 2.1rem; |
| font-weight: 800; |
| line-height: 1.2; |
| color: #FFFFFF; |
| background: linear-gradient(135deg, #FFFFFF 40%, var(--accent-primary) 100%); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| margin: 0.4rem 0 0.8rem 0; |
| letter-spacing: 0.5px; |
| } |
|
|
| .hero-subtitle-hud { |
| font-size: 0.88rem; |
| color: var(--text-secondary); |
| line-height: 1.6; |
| margin-bottom: 1.2rem; |
| max-width: 640px; |
| } |
|
|
| .hero-actions-hud { |
| display: flex; |
| gap: 10px; |
| align-items: center; |
| flex-wrap: wrap; |
| } |
|
|
| |
| .hero-context-panel { |
| display: flex; |
| flex-direction: column; |
| justify-content: space-between; |
| padding: 1.2rem 1.3rem; |
| } |
|
|
| .hero-stat-grid-hud { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 0.9rem; |
| margin: 0.85rem 0; |
| } |
|
|
| .hero-stat-card-hud { |
| background: rgba(0, 0, 0, 0.3); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| padding: 0.9rem 1rem; |
| display: flex; |
| flex-direction: column; |
| gap: 2px; |
| } |
|
|
| .h-stat-label { |
| font-family: var(--font-mono); |
| font-size: 0.66rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| } |
|
|
| .h-stat-value { |
| font-family: var(--font-display); |
| font-size: 1.5rem; |
| font-weight: 800; |
| color: var(--text-primary); |
| line-height: 1.2; |
| } |
|
|
| .h-stat-value .unit { |
| font-size: 0.78rem; |
| font-weight: 400; |
| color: var(--text-muted); |
| } |
|
|
| .h-stat-meta { |
| margin-top: 4px; |
| } |
|
|
| .hero-context-footer { |
| display: flex; |
| flex-direction: column; |
| gap: 4px; |
| border-top: 1px solid rgba(255, 255, 255, 0.06); |
| padding-top: 0.75rem; |
| } |
|
|
| .ctx-tag { |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| color: var(--text-muted); |
| } |
|
|
| |
| .features-section-hud { |
| margin-bottom: 2.2rem; |
| } |
|
|
| .section-header-hud { |
| margin-bottom: 1rem; |
| } |
|
|
| .section-title-hud { |
| font-family: var(--font-display); |
| font-size: 1.15rem; |
| font-weight: 800; |
| color: var(--text-primary); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| border-left: 3px solid var(--accent-primary); |
| padding-left: 8px; |
| margin: 0; |
| line-height: 1.2; |
| } |
|
|
| .section-subtitle-hud { |
| font-size: 0.78rem; |
| color: var(--text-muted); |
| margin: 3px 0 0 0; |
| } |
|
|
| .features-grid-hud { |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| gap: 0.9rem; |
| margin-top: 0.85rem; |
| } |
|
|
| .feature-card-hud { |
| background: var(--bg-surface); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| padding: 1.1rem; |
| display: flex; |
| flex-direction: column; |
| transition: all 0.22s ease; |
| } |
|
|
| .feature-card-hud:hover { |
| border-color: var(--border-hover); |
| transform: translateY(-2px); |
| } |
|
|
| .feature-header-hud { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.5rem; |
| } |
|
|
| .feature-num-hud { |
| font-family: var(--font-display); |
| font-size: 1.35rem; |
| font-weight: 800; |
| color: var(--accent-primary); |
| } |
|
|
| .feature-name-hud { |
| font-family: var(--font-display); |
| font-size: 0.92rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| margin: 0.3rem 0; |
| } |
|
|
| .feature-desc-hud { |
| font-size: 0.78rem; |
| color: var(--text-secondary); |
| line-height: 1.5; |
| margin: 0; |
| } |
|
|
| |
| .crisis-story-section-hud { |
| display: grid; |
| grid-template-columns: 1fr 1.3fr; |
| gap: 1.4rem; |
| margin-bottom: 2.2rem; |
| align-items: flex-start; |
| } |
|
|
| .sticky-visualizer-panel-hud { |
| position: sticky; |
| top: 80px; |
| padding: 1.2rem 1.4rem; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| } |
|
|
| .threejs-container-hud { |
| width: 100%; |
| max-width: 240px; |
| height: 240px; |
| position: relative; |
| background: rgba(0, 0, 0, 0.35); |
| border-radius: 8px; |
| border: 1px solid var(--border-subtle); |
| display: flex; |
| justify-content: center; |
| align-items: center; |
| overflow: hidden; |
| } |
|
|
| .tower-label { |
| position: absolute; |
| right: 8px; |
| font-family: var(--font-mono); |
| font-size: 8px; |
| font-weight: 700; |
| padding: 2px 5px; |
| border-radius: 3px; |
| pointer-events: none; |
| z-index: 2; |
| } |
|
|
| .tower-label.critical { |
| top: 10px; |
| color: var(--status-danger); |
| background: rgba(239, 68, 68, 0.15); |
| border: 1px solid rgba(239, 68, 68, 0.3); |
| } |
|
|
| .tower-label.warning { |
| top: 50%; |
| transform: translateY(-50%); |
| color: var(--status-warning); |
| background: rgba(245, 158, 11, 0.15); |
| border: 1px solid rgba(245, 158, 11, 0.3); |
| } |
|
|
| .tower-label.normal { |
| bottom: 10px; |
| color: var(--status-forecast); |
| background: rgba(34, 197, 94, 0.15); |
| border: 1px solid rgba(34, 197, 94, 0.3); |
| } |
|
|
| .tower-status-hud { |
| margin-top: 1rem; |
| text-align: center; |
| } |
|
|
| .tower-status-label { |
| display: block; |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 0.4px; |
| } |
|
|
| .tower-status-val { |
| font-family: var(--font-display); |
| font-size: 1.6rem; |
| font-weight: 800; |
| color: var(--status-warning); |
| } |
|
|
| .story-scroll-cards-hud { |
| display: flex; |
| flex-direction: column; |
| gap: 0.9rem; |
| } |
|
|
| .story-card-hud { |
| padding: 1.2rem 1.4rem; |
| background: var(--bg-surface); |
| border: 1px solid var(--border-subtle); |
| border-radius: 8px; |
| border-left: 4px solid var(--border-subtle); |
| transition: all 0.22s ease; |
| } |
|
|
| .story-card-hud:hover { |
| border-color: var(--border-hover); |
| transform: translateX(3px); |
| } |
|
|
| .story-card-hud.stage-morning { border-left-color: #22C55E; } |
| .story-card-hud.stage-midday { border-left-color: #F59E0B; } |
| .story-card-hud.stage-eod { border-left-color: #EF4444; } |
|
|
| .story-card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin-bottom: 0.3rem; |
| } |
|
|
| .stage-tag { |
| font-family: var(--font-mono); |
| font-size: 0.7rem; |
| font-weight: 700; |
| letter-spacing: 0.5px; |
| text-transform: uppercase; |
| } |
|
|
| .stage-tag.morning { color: #22C55E; } |
| .stage-tag.midday { color: #F59E0B; } |
| .stage-tag.eod { color: #EF4444; } |
|
|
| .stage-volume { |
| font-family: var(--font-mono); |
| font-size: 0.76rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| } |
|
|
| .story-title { |
| font-family: var(--font-display); |
| font-size: 1.05rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| margin: 0.2rem 0 0.35rem 0; |
| } |
|
|
| .story-desc { |
| font-size: 0.8rem; |
| color: var(--text-secondary); |
| line-height: 1.55; |
| margin: 0; |
| } |
|
|
| |
| .developers-section-hud { |
| margin-bottom: 2rem; |
| display: flex; |
| justify-content: center; |
| } |
|
|
| .developer-card-hud { |
| max-width: 640px; |
| width: 100%; |
| text-align: center; |
| padding: 1.8rem 2rem; |
| background: var(--bg-surface); |
| border: 1px solid var(--border-subtle); |
| border-radius: 10px; |
| } |
|
|
| .dev-role-hud { |
| font-family: var(--font-mono); |
| font-size: 0.72rem; |
| color: var(--accent-primary); |
| letter-spacing: 1px; |
| text-transform: uppercase; |
| font-weight: 600; |
| display: block; |
| margin-bottom: 4px; |
| } |
|
|
| .dev-name-hud { |
| font-family: var(--font-display); |
| font-size: 1.35rem; |
| font-weight: 800; |
| color: var(--text-primary); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .dev-desc-hud { |
| font-size: 0.82rem; |
| color: var(--text-secondary); |
| line-height: 1.6; |
| margin-bottom: 1.1rem; |
| } |
|
|
| .dev-links-hud { |
| display: flex; |
| gap: 10px; |
| justify-content: center; |
| align-items: center; |
| flex-wrap: wrap; |
| } |
|
|
| |
| .chart-summary-bar { |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| gap: 0.75rem; |
| margin-top: 0.85rem; |
| padding-top: 0.85rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.06); |
| } |
|
|
| .chart-summary-item { |
| background: rgba(0, 0, 0, 0.3); |
| border: 1px solid var(--border-subtle); |
| border-radius: 7px; |
| padding: 8px 12px; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .visually-hidden { |
| display: none !important; |
| } |
|
|
| |
| @media (max-width: 1100px) { |
| .hero-section-hud { |
| grid-template-columns: 1fr; |
| } |
| .features-grid-hud { |
| grid-template-columns: repeat(2, 1fr); |
| } |
| .crisis-story-section-hud { |
| grid-template-columns: 1fr; |
| } |
| .sticky-visualizer-panel-hud { |
| position: relative; |
| top: 0; |
| } |
| } |
|
|
| @media (max-width: 640px) { |
| .features-grid-hud { |
| grid-template-columns: 1fr; |
| } |
| .hero-stat-grid-hud { |
| grid-template-columns: 1fr; |
| } |
| .hero-title-hud { |
| font-size: 1.6rem; |
| } |
| } |
|
|