Spaces:
Running
Running
github-actions[bot]
Deploy from MaciSekander/fed-sentiment-analyzer@f9d4abf19279af4ef78eea9d53844dd022994fbb
d0622ef | :root { | |
| color-scheme: light dark; | |
| --hawkish: #d9534f; | |
| --dovish: #3b82c4; | |
| --neutral: #8a8f98; | |
| --bg: #0f1115; | |
| --panel: #1a1d24; | |
| --border: #2a2e37; | |
| --text: #e6e8eb; | |
| --muted: #9aa0aa; | |
| --accent: #3b6ea5; | |
| --space-1: 0.5rem; | |
| --space-2: 1rem; | |
| --space-3: 1.5rem; | |
| --space-4: 2.5rem; | |
| --space-5: 4rem; | |
| --space-6: 6rem; | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; | |
| --font-serif: Georgia, Cambria, "Times New Roman", Times, serif; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| background: var(--bg); | |
| color: var(--text); | |
| } | |
| .app { | |
| max-width: 1220px; | |
| margin: 0 auto; | |
| padding: 0 1.5rem 4rem; | |
| } | |
| .prose { | |
| max-width: 68ch; | |
| } | |
| .app-header { | |
| margin: 0 -1.5rem var(--space-3); | |
| padding: var(--space-3) 1.5rem; | |
| background: var(--panel); | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .eyebrow { | |
| margin: 0 0 0.3rem; | |
| font-size: 0.75rem; | |
| font-weight: 700; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| color: var(--muted); | |
| } | |
| .app-header h1 { | |
| margin: 0 0 0.35rem; | |
| font-family: var(--font-serif); | |
| font-size: 2.1rem; | |
| font-weight: 700; | |
| letter-spacing: -0.01em; | |
| } | |
| .subtitle { | |
| color: var(--muted); | |
| margin-top: 0; | |
| max-width: 65ch; | |
| } | |
| .tabs { | |
| display: flex; | |
| gap: 0.4rem; | |
| margin-top: var(--space-2); | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .tab-btn { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| padding: 0.5rem 0.9rem; | |
| font-size: 0.95rem; | |
| cursor: pointer; | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -1px; | |
| } | |
| .tab-btn:hover { | |
| color: var(--text); | |
| } | |
| .tab-btn.active { | |
| color: var(--text); | |
| border-bottom-color: var(--accent); | |
| font-weight: 600; | |
| } | |
| .warning { | |
| background: #3a2a1a; | |
| border: 1px solid #6b4a20; | |
| color: #f0c987; | |
| padding: 0.6rem 1rem; | |
| border-radius: 6px; | |
| font-size: 0.9rem; | |
| } | |
| .input-section { | |
| margin-top: 1.5rem; | |
| } | |
| .examples { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| margin-bottom: 0.6rem; | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| flex-wrap: wrap; | |
| } | |
| .example-btn { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| color: var(--text); | |
| padding: 0.25rem 0.7rem; | |
| border-radius: 999px; | |
| cursor: pointer; | |
| font-size: 0.85rem; | |
| } | |
| .example-btn:hover { | |
| border-color: var(--muted); | |
| } | |
| textarea { | |
| width: 100%; | |
| background: var(--panel); | |
| color: var(--text); | |
| border: 1px solid var(--border); | |
| border-radius: 8px; | |
| padding: 0.8rem; | |
| font-size: 1rem; | |
| resize: vertical; | |
| } | |
| .analyze-btn { | |
| margin-top: 0.75rem; | |
| background: var(--accent); | |
| color: white; | |
| border: none; | |
| padding: 0.6rem 1.4rem; | |
| border-radius: 6px; | |
| font-size: 1rem; | |
| cursor: pointer; | |
| transition: background 150ms ease; | |
| } | |
| .analyze-btn:hover:not(:disabled) { | |
| background: #4a7fba; | |
| } | |
| .analyze-btn:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 2px; | |
| } | |
| .analyze-btn:disabled { | |
| opacity: 0.5; | |
| cursor: default; | |
| } | |
| .error { | |
| color: var(--hawkish); | |
| margin-top: 1rem; | |
| } | |
| .results { | |
| margin-top: 2rem; | |
| } | |
| .score-gauge { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| border-radius: 10px; | |
| padding: 1.2rem; | |
| text-align: center; | |
| } | |
| .score-gauge-label { | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| letter-spacing: 0.05em; | |
| margin-bottom: 0.6rem; | |
| } | |
| .score-gauge-track { | |
| position: relative; | |
| height: 14px; | |
| border-radius: 999px; | |
| background: linear-gradient(to right, var(--dovish), var(--neutral), var(--hawkish)); | |
| margin: 0.6rem 0; | |
| } | |
| .score-gauge-midline { | |
| position: absolute; | |
| left: 50%; | |
| top: -4px; | |
| bottom: -4px; | |
| width: 1px; | |
| background: rgba(255, 255, 255, 0.35); | |
| } | |
| .score-gauge-tick { | |
| position: absolute; | |
| top: -2px; | |
| bottom: -2px; | |
| width: 1px; | |
| background: rgba(255, 255, 255, 0.2); | |
| } | |
| .score-gauge-marker { | |
| position: absolute; | |
| top: -3px; | |
| width: 20px; | |
| height: 20px; | |
| background: white; | |
| border-radius: 999px; | |
| border: 2px solid var(--panel); | |
| transform: translateX(-10px); | |
| box-shadow: 0 0 4px rgba(0, 0, 0, 0.6); | |
| transition: left 400ms ease; | |
| } | |
| .score-gauge-ends { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| } | |
| .results-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 1rem; | |
| margin-top: 1.2rem; | |
| } | |
| @media (max-width: 700px) { | |
| .results-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| .card { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| border-radius: 10px; | |
| padding: 1rem 1.2rem; | |
| transition: box-shadow 150ms ease; | |
| } | |
| .card:hover { | |
| box-shadow: 0 2px 12px rgba(0, 0, 0, 0.25); | |
| } | |
| .card h3 { | |
| margin-top: 0; | |
| } | |
| .score-line { | |
| font-size: 0.95rem; | |
| } | |
| .muted { | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| } | |
| .label-hawkish { | |
| color: var(--hawkish); | |
| } | |
| .label-dovish { | |
| color: var(--dovish); | |
| } | |
| .label-neutral { | |
| color: var(--neutral); | |
| } | |
| .lexicon-hits ul { | |
| padding-left: 1.1rem; | |
| margin: 0.3rem 0 0.8rem; | |
| font-size: 0.88rem; | |
| } | |
| .sentence-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0.5rem 0 0; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.4rem; | |
| } | |
| .sentence-item { | |
| border-left: 3px solid var(--border); | |
| padding: 0.35rem 0.6rem; | |
| font-size: 0.85rem; | |
| display: flex; | |
| gap: 0.5rem; | |
| align-items: baseline; | |
| } | |
| .sentence-item.label-hawkish { | |
| border-left-color: var(--hawkish); | |
| } | |
| .sentence-item.label-dovish { | |
| border-left-color: var(--dovish); | |
| } | |
| .sentence-item.label-neutral { | |
| border-left-color: var(--neutral); | |
| } | |
| .sentence-tag { | |
| text-transform: uppercase; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| min-width: 4.5rem; | |
| } | |
| .sentence-text { | |
| flex: 1; | |
| color: var(--text); | |
| } | |
| .sentence-score { | |
| color: var(--muted); | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .history-section { | |
| margin-top: var(--space-3); | |
| } | |
| .lede { | |
| font-family: var(--font-serif); | |
| font-size: 1.25rem; | |
| line-height: 1.55; | |
| color: var(--text); | |
| margin: 0 0 var(--space-5); | |
| } | |
| .section-heading { | |
| font-family: var(--font-serif); | |
| font-size: 1.3rem; | |
| font-weight: 700; | |
| margin: var(--space-5) 0 var(--space-2); | |
| } | |
| .chart-block { | |
| display: flex; | |
| flex-direction: column; | |
| gap: var(--space-2); | |
| margin-bottom: var(--space-5); | |
| } | |
| .drilldown { | |
| margin-bottom: var(--space-5); | |
| } | |
| .chart-caption { | |
| margin: 0 0 0.4rem; | |
| color: var(--muted); | |
| font-size: 0.8rem; | |
| } | |
| .timeline { | |
| width: 100%; | |
| } | |
| .chart-clickable { | |
| cursor: pointer; | |
| } | |
| .fedfunds-chart { | |
| width: 100%; | |
| } | |
| .timeline-tooltip { | |
| background: var(--bg); | |
| border: 1px solid var(--border); | |
| border-radius: 6px; | |
| padding: 0.5rem 0.7rem; | |
| font-size: 0.85rem; | |
| line-height: 1.4; | |
| } | |
| .timeline-tooltip-date { | |
| font-variant-numeric: tabular-nums; | |
| color: var(--text); | |
| font-weight: 600; | |
| } | |
| .timeline-tooltip-hint { | |
| color: var(--muted); | |
| font-size: 0.75rem; | |
| margin-top: 0.3rem; | |
| font-style: italic; | |
| } | |
| .drilldown { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| border-radius: 10px; | |
| padding: 1.2rem 1.4rem; | |
| } | |
| .drilldown-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: baseline; | |
| gap: 1rem; | |
| margin-bottom: 0.5rem; | |
| } | |
| .drilldown-close { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| font-size: 1.4rem; | |
| line-height: 1; | |
| cursor: pointer; | |
| padding: 0.1rem 0.4rem; | |
| } | |
| .drilldown-close:hover { | |
| color: var(--text); | |
| } | |
| .drilldown-text { | |
| font-size: 0.92rem; | |
| line-height: 1.7; | |
| white-space: pre-wrap; | |
| max-height: 60vh; | |
| overflow-y: auto; | |
| margin: 0.8rem 0; | |
| } | |
| mark.highlight-hawkish { | |
| background: color-mix(in srgb, var(--hawkish) 30%, transparent); | |
| color: var(--text); | |
| border-radius: 3px; | |
| padding: 0 0.1rem; | |
| } | |
| mark.highlight-dovish { | |
| background: color-mix(in srgb, var(--dovish) 30%, transparent); | |
| color: var(--text); | |
| border-radius: 3px; | |
| padding: 0 0.1rem; | |
| } | |
| .highlights-dashboard { | |
| display: flex; | |
| flex-direction: column; | |
| gap: var(--space-2); | |
| } | |
| .stat-tile { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| border-radius: 10px; | |
| padding: 1rem 1.2rem; | |
| } | |
| .stat-tile-hero { | |
| padding: 1.5rem 1.6rem; | |
| } | |
| .stat-tile-label { | |
| color: var(--muted); | |
| font-size: 0.8rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| margin-bottom: 0.3rem; | |
| } | |
| .stat-tile-value { | |
| font-size: 1.3rem; | |
| font-weight: 600; | |
| font-variant-numeric: proportional-nums; | |
| } | |
| .stat-tile-hero-value { | |
| font-size: 3rem; | |
| letter-spacing: 0.02em; | |
| } | |
| .stat-tile-sub { | |
| margin-top: 0.3rem; | |
| font-size: 0.82rem; | |
| } | |
| .stat-tile-row { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: var(--space-2); | |
| } | |
| .regime-legend { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: var(--space-2); | |
| margin-top: var(--space-2); | |
| } | |
| .regime-legend-col h4 { | |
| margin: 0 0 0.4rem; | |
| color: var(--muted); | |
| font-size: 0.8rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| } | |
| .regime-legend-col ul { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.3rem; | |
| } | |
| .regime-legend-col li { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 1rem; | |
| font-size: 0.88rem; | |
| border-bottom: 1px solid var(--border); | |
| padding-bottom: 0.3rem; | |
| } | |
| .regime-legend-numbers { | |
| display: flex; | |
| gap: 0.7rem; | |
| font-variant-numeric: tabular-nums; | |
| flex-shrink: 0; | |
| } | |
| .regime-legend-score { | |
| min-width: 5.5rem; | |
| text-align: right; | |
| } | |
| @media (max-width: 700px) { | |
| .regime-legend { | |
| grid-template-columns: 1fr; | |
| } | |
| .app-header { | |
| margin: 0 -1rem var(--space-3); | |
| padding: var(--space-2) 1rem; | |
| } | |
| .stat-tile-row { | |
| grid-template-columns: 1fr; | |
| } | |
| .stat-tile-hero-value { | |
| font-size: 2.2rem; | |
| } | |
| .lede { | |
| font-size: 1.1rem; | |
| } | |
| .section-heading { | |
| margin-top: var(--space-4); | |
| } | |
| } | |