Download frontend/src/styles/layout.css from KSS-1227/TradeMind: direct link, hf CLI and curl.
- Browser
- Download file 6.21 kB
-
https://huggingface.co/spaces/KSS-1227/TradeMind/resolve/main/frontend/src/styles/layout.css
- Command line
-
hf download hf://spaces/KSS-1227/TradeMind/frontend/src/styles/layout.css
-
curl -L -o layout.css https://huggingface.co/spaces/KSS-1227/TradeMind/resolve/main/frontend/src/styles/layout.css
6.21 kB
| /* ========================================================== | |
| TradeMind Shell Layout | |
| All layout primitives — no colours, no business styles. | |
| ========================================================== */ | |
| /* ---------------------------------------------------------- | |
| CSS variable aliases — bridge components that use the old | |
| names (--border-color, --bg-raised, etc.) to the design | |
| system tokens defined in theme.css | |
| ---------------------------------------------------------- */ | |
| :root { | |
| --border-color: var(--border); | |
| --bg-raised: var(--bg-elevated); | |
| --color-danger: var(--danger); | |
| --color-danger-bg: var(--danger-bg); | |
| --color-danger-border: var(--danger-border); | |
| --color-teal-bg: var(--color-teal-bg, rgba(0, 201, 167, 0.12)); | |
| --color-teal-border: var(--color-teal-border, rgba(0, 201, 167, 0.3)); | |
| --color-gold-bg: var(--color-gold-bg, rgba(246, 201, 14, 0.12)); | |
| --color-gold-border: var(--color-gold-border, rgba(246, 201, 14, 0.3)); | |
| --text-dim: var(--border); | |
| } | |
| /* ---------------------------------------------------------- | |
| App shell containers | |
| ---------------------------------------------------------- */ | |
| .app-shell { | |
| display: block; | |
| min-height: 100vh; | |
| } | |
| /* ---------------------------------------------------------- | |
| Sidebar — used by the CSS-in-JS Sidebar component. | |
| These classes exist as semantic hooks; sizing is in JSX. | |
| ---------------------------------------------------------- */ | |
| .sidebar-item { | |
| display: flex; | |
| align-items: center; | |
| text-decoration: none; | |
| } | |
| .sidebar-item:hover { | |
| background: var(--bg-elevated); | |
| color: var(--text-primary); | |
| } | |
| .sidebar-item:focus-visible { | |
| outline: 2px solid var(--border-focus); | |
| outline-offset: -2px; | |
| border-radius: var(--radius-md); | |
| } | |
| /* ---------------------------------------------------------- | |
| Main content area | |
| Used as a fallback; actual inline styles in AppLayout.jsx | |
| ---------------------------------------------------------- */ | |
| .app-main { | |
| box-sizing: border-box; | |
| width: 100%; | |
| } | |
| /* ---------------------------------------------------------- | |
| Utility grid classes | |
| ---------------------------------------------------------- */ | |
| .grid-2 { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: var(--space-3); | |
| } | |
| .grid-3 { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: var(--space-3); | |
| } | |
| .grid-4 { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: var(--space-3); | |
| } | |
| @media (max-width: 900px) { | |
| .grid-4 { grid-template-columns: repeat(2, 1fr); } | |
| .grid-3 { grid-template-columns: repeat(2, 1fr); } | |
| } | |
| @media (max-width: 540px) { | |
| .grid-4, | |
| .grid-3, | |
| .grid-2 { grid-template-columns: 1fr; } | |
| } | |
| /* ---------------------------------------------------------- | |
| Stock selector row | |
| ---------------------------------------------------------- */ | |
| .stocks-scroll { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: var(--space-2); | |
| } | |
| .stock-btn { | |
| padding: 5px 12px; | |
| border-radius: var(--radius-md); | |
| border: 1px solid var(--border); | |
| background: var(--bg-surface); | |
| color: var(--text-muted); | |
| font-size: 12px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| font-family: var(--font-sans); | |
| transition: all var(--transition-fast); | |
| white-space: nowrap; | |
| } | |
| .stock-btn:hover { | |
| border-color: var(--color-teal); | |
| color: var(--text-primary); | |
| } | |
| .stock-btn.active { | |
| background: var(--color-teal-bg); | |
| border-color: var(--color-teal); | |
| color: var(--color-teal); | |
| } | |
| .stock-btn:focus-visible { | |
| outline: 2px solid var(--border-focus); | |
| outline-offset: 2px; | |
| } | |
| /* ---------------------------------------------------------- | |
| Metric card — used with MetricCard component | |
| ---------------------------------------------------------- */ | |
| .metric-card { | |
| background: var(--bg-surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-card); | |
| padding: var(--space-4) var(--space-3); | |
| text-align: center; | |
| transition: border-color var(--transition-fast); | |
| } | |
| .metric-card:hover { | |
| border-color: var(--border-hover); | |
| } | |
| .metric-value { | |
| font-family: var(--font-mono); | |
| font-size: 22px; | |
| font-weight: 700; | |
| margin-bottom: 4px; | |
| line-height: 1.2; | |
| } | |
| .metric-label { | |
| font-size: 10px; | |
| color: var(--text-muted); | |
| letter-spacing: 0.5px; | |
| text-transform: uppercase; | |
| font-weight: 600; | |
| } | |
| /* ---------------------------------------------------------- | |
| Tab bar | |
| ---------------------------------------------------------- */ | |
| .tab-bar { | |
| display: flex; | |
| gap: 2px; | |
| border-bottom: 1px solid var(--border); | |
| margin-bottom: var(--space-5); | |
| } | |
| .tab { | |
| padding: 9px 16px; | |
| font-size: 12.5px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| cursor: pointer; | |
| background: none; | |
| border: none; | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -1px; | |
| font-family: var(--font-sans); | |
| transition: color var(--transition-fast), border-color var(--transition-fast); | |
| position: relative; | |
| } | |
| .tab:hover { | |
| color: var(--text-primary); | |
| } | |
| .tab.active { | |
| color: var(--color-teal); | |
| border-bottom-color: var(--color-teal); | |
| } | |
| .tab:focus-visible { | |
| outline: 2px solid var(--border-focus); | |
| outline-offset: -2px; | |
| border-radius: var(--radius-sm) var(--radius-sm) 0 0; | |
| } | |
| /* ---------------------------------------------------------- | |
| Mono utility | |
| ---------------------------------------------------------- */ | |
| .mono { | |
| font-family: var(--font-mono); | |
| } | |
| /* ---------------------------------------------------------- | |
| Signal header layout | |
| ---------------------------------------------------------- */ | |
| .signal-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| } | |
| /* ---------------------------------------------------------- | |
| Page transition wrapper | |
| ---------------------------------------------------------- */ | |
| .page-transition-wrapper { | |
| width: 100%; | |
| } | |
| /* ---------------------------------------------------------- | |
| Reduce motion | |
| ---------------------------------------------------------- */ | |
| @media (prefers-reduced-motion: reduce) { | |
| * { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |