Spaces:
Running
Running
| @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap'); | |
| /* ββ Reset & base ββββββββββββββββββββββββββββββββββββββββ */ | |
| *, | |
| *::before, | |
| *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| :root { | |
| --sidebar-width: 260px; | |
| --sidebar-collapsed-width: 64px; | |
| --header-height: 48px; | |
| /* HeatTransPlan Signature Brand Colors */ | |
| --primary: #2B589C; | |
| --primary-hover: #1b3d73; | |
| --primary-light: #F4F6FB; | |
| --primary-gradient: linear-gradient(90deg, #2B589C 0%, #B4396E 50%, #E13945 100%); | |
| --brand-red: #E13945; | |
| --brand-magenta: #B4396E; | |
| --danger: #EF4444; | |
| --success: #10B981; | |
| --warning: #F59E0B; | |
| /* Core Surfaces - Azure Tinted */ | |
| --bg: #F8FAFC; | |
| --surface: #FFFFFF; | |
| --surface-hover: #F1F5F9; | |
| --surface-active: #E2E8F0; | |
| --surface-rgb: 255, 255, 255; | |
| /* Typography - Deep Slate instead of Gray */ | |
| --text-main: #0F172A; | |
| --text-muted: #64748B; | |
| --text-on-primary: #FFFFFF; | |
| /* Borders - Softer blue-gray */ | |
| --border: #E2E8F0; | |
| --border-strong: #CBD5E1; | |
| --radius-sm: 4px; | |
| --radius: 8px; | |
| --radius-lg: 12px; | |
| /* Modern Layered Shadows */ | |
| --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); | |
| --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); | |
| --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); | |
| font-size: 13px; | |
| } | |
| .dark { | |
| --primary: #60A5FA; /* Brighter blue for navy backgrounds */ | |
| --primary-hover: #93C5FD; | |
| --primary-light: rgba(96, 165, 250, 0.1); | |
| --primary-gradient: linear-gradient(90deg, #60A5FA 0%, #B4396E 50%, #E13945 100%); | |
| --bg: #0F172A; /* Deep Navy Slate */ | |
| --surface: #1E293B; /* Lighter Slate Blue */ | |
| --surface-hover: #334155; | |
| --surface-active: #475569; | |
| --surface-rgb: 30, 41, 59; | |
| --text-main: #F8FAFC; | |
| --text-muted: #94A3B8; | |
| --text-on-primary: #FFFFFF; | |
| --border: #334155; | |
| --border-strong: #475569; | |
| --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4); | |
| --shadow: 0 4px 6px rgba(0, 0, 0, 0.5); | |
| --shadow-lg: 0 10px 20px rgba(0, 0, 0, 0.6); | |
| } | |
| body { | |
| font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; | |
| color: var(--text-main); | |
| background: var(--bg); | |
| line-height: 1.6; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| a { | |
| color: var(--primary); | |
| text-decoration: none; | |
| transition: color 0.2s ease; | |
| } | |
| a:hover { | |
| color: var(--primary-hover); | |
| } | |
| button { | |
| cursor: pointer; | |
| font-family: inherit; | |
| } | |
| /* ββ Utility classes ββββββββββββββββββββββββββββββββββββ */ | |
| .flex { display: flex; } | |
| .flex-col { display: flex; flex-direction: column; } | |
| .items-center { align-items: center; } | |
| .justify-between { justify-content: space-between; } | |
| .gap-xs { gap: 2px; } | |
| .gap-sm { gap: 4px; } | |
| .gap-md { gap: 8px; } | |
| .gap-lg { gap: 16px; } | |
| .p-sm { padding: 4px; } | |
| .p-md { padding: 8px; } | |
| .p-lg { padding: 12px; } | |
| .mt-sm { margin-top: 4px; } | |
| .mt-md { margin-top: 8px; } | |
| .mb-sm { margin-bottom: 4px; } | |
| .mb-md { margin-bottom: 8px; } | |
| /* ββ Card ββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .card { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-lg); | |
| box-shadow: var(--shadow); | |
| padding: 12px; | |
| transition: box-shadow 0.3s ease, transform 0.3s ease; | |
| } | |
| .card:hover { | |
| box-shadow: var(--shadow-lg); | |
| transform: translateY(-2px); | |
| } | |
| /* ββ Buttons ββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .body { | |
| margin: 0; | |
| display: flex; | |
| place-items: center; | |
| min-width: 320px; | |
| min-height: 100vh; | |
| top: 0 ; /* Prevent Google Translate from pushing body down */ | |
| } | |
| /* Hide Google Translate UI elements */ | |
| .skiptranslate iframe { | |
| display: none ; | |
| } | |
| body { | |
| top: 0 ; | |
| } | |
| .goog-te-combo { | |
| display: none ; | |
| } | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 16px; | |
| border-radius: var(--radius); | |
| border: 1px solid var(--border); | |
| background: var(--surface); | |
| color: var(--text-main); | |
| font-size: 13px; | |
| font-weight: 500; | |
| transition: all 0.1s ease-out; | |
| } | |
| .btn:hover { | |
| background: var(--surface-hover); | |
| border-color: var(--border-strong); | |
| } | |
| .btn:active { | |
| background: var(--border); | |
| transform: none; | |
| } | |
| .btn-primary { | |
| background: var(--primary-gradient); | |
| color: #fff; | |
| border: none; | |
| box-shadow: 0 2px 4px rgba(43, 88, 156, 0.2); | |
| } | |
| .btn-primary:hover { | |
| background: linear-gradient(90deg, #1b3d73 0%, #902956 50%, #c42634 100%); | |
| color: #fff; | |
| box-shadow: 0 4px 8px rgba(43, 88, 156, 0.3); | |
| } | |
| .btn-danger { | |
| background: var(--danger); | |
| color: #fff; | |
| border: none; | |
| } | |
| .btn-danger:hover { | |
| background: #DC2626; | |
| color: #fff; | |
| } | |
| .btn-sm { | |
| padding: 4px 10px; | |
| font-size: 12px; | |
| border-radius: var(--radius-sm); | |
| } | |
| /* ββ Form controls ββββββββββββββββββββββββββββββββββββββ */ | |
| input[type='text'], | |
| input[type='number'], | |
| input[type='search'], | |
| select, | |
| textarea { | |
| padding: 6px 10px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| font-size: 12px; | |
| font-family: inherit; | |
| background: var(--surface); | |
| color: var(--text-main); | |
| transition: border-color 0.15s; | |
| } | |
| input:focus, | |
| select:focus, | |
| textarea:focus { | |
| outline: none; | |
| border-color: var(--primary); | |
| box-shadow: 0 0 0 2px var(--primary-light); | |
| } | |
| label { | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| /* ββ Tables βββββββββββββββββββββββββββββββββββββββββββββ */ | |
| table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 14px; | |
| } | |
| th, | |
| td { | |
| padding: 10px 14px; | |
| border-bottom: 1px solid var(--border); | |
| text-align: left; | |
| } | |
| th { | |
| background: var(--bg); | |
| font-weight: 600; | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| color: var(--text-muted); | |
| } | |
| tr:hover td { | |
| background: var(--surface-hover); | |
| } | |
| /* ββ Tabs βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .tabs { | |
| display: flex; | |
| border-bottom: 2px solid var(--border); | |
| gap: 0; | |
| } | |
| .tab { | |
| padding: 8px 16px; | |
| border: none; | |
| background: none; | |
| font-size: 12px; | |
| font-weight: 500; | |
| color: var(--text-muted); | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -2px; | |
| transition: all 0.15s; | |
| } | |
| .tab:hover { | |
| color: var(--text); | |
| } | |
| .tab.active { | |
| color: var(--primary); | |
| border-bottom-color: var(--primary); | |
| font-weight: 600; | |
| } | |
| /* ββ Collapsible sections βββββββββββββββββββββββββββββββ */ | |
| .collapsible-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 8px 12px; | |
| cursor: pointer; | |
| user-select: none; | |
| border-radius: var(--radius); | |
| transition: background 0.15s; | |
| } | |
| .collapsible-header:hover { | |
| background: var(--surface-hover); | |
| } | |
| .collapsible-arrow { | |
| transition: transform 0.2s; | |
| font-size: 10px; | |
| } | |
| .collapsible-arrow.open { | |
| transform: rotate(90deg); | |
| } | |
| /* ββ Scrollbar ββββββββββββββββββββββββββββββββββββββββββ */ | |
| ::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--border-strong); | |
| border-radius: 10px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: var(--text-muted); | |
| } | |
| /* ββ Leaflet overrides ββββββββββββββββββββββββββββββββββ */ | |
| .leaflet-container { | |
| border-radius: var(--radius); | |
| border: 1px solid var(--border); | |
| } | |
| /* ββ Plotly overrides βββββββββββββββββββββββββββββββββββ */ | |
| .js-plotly-plot .plotly .modebar { | |
| top: 4px ; | |
| right: 4px ; | |
| } | |
| /* ββ Loading spinner ββββββββββββββββββββββββββββββββββββ */ | |
| .spinner { | |
| display: inline-block; | |
| width: 20px; | |
| height: 20px; | |
| border: 2px solid var(--border); | |
| border-top-color: var(--primary); | |
| border-radius: 50%; | |
| animation: spin 0.6s linear infinite; | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| /* ββ Toast / notification βββββββββββββββββββββββββββββββ */ | |
| .toast { | |
| position: fixed; | |
| bottom: 20px; | |
| right: 20px; | |
| padding: 10px 18px; | |
| border-radius: var(--radius); | |
| color: #fff; | |
| font-size: 12px; | |
| z-index: 10000; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | |
| animation: slide-up 0.3s ease; | |
| } | |
| .toast.success { | |
| background: var(--success); | |
| } | |
| .toast.error { | |
| background: var(--danger); | |
| } | |
| .toast.warning { | |
| background: var(--warning); | |
| } | |
| @keyframes slide-up { | |
| from { | |
| transform: translateY(20px); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: translateY(0); | |
| opacity: 1; | |
| } | |
| } | |