| @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,600;0,700;1,400;1,600&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); |
|
|
| |
| :root { |
| --bg-base: #0A090D; |
| --bg-card: rgba(18, 16, 23, 0.75); |
| --bg-card-hover: rgba(26, 23, 33, 0.85); |
| --bg-elevated: #15131C; |
| --bg-border: rgba(255, 255, 255, 0.08); |
| --bg-border-active: rgba(255, 51, 102, 0.3); |
|
|
| --text-primary: #FFFFFF; |
| --text-secondary: #9E9AA7; |
| --text-muted: #686373; |
|
|
| --accent-coral: #FF3366; |
| --accent-coral-pink: #FF4D6D; |
| --accent-gradient: linear-gradient(135deg, #FF3366 0%, #FF4D6D 100%); |
| --accent-coral-glow: rgba(255, 51, 102, 0.4); |
|
|
| --accent-emerald: #00E475; |
| --accent-amber: #FFB300; |
|
|
| --font-serif: 'Playfair Display', Georgia, serif; |
| --font-sans: 'Plus Jakarta Sans', sans-serif; |
| --font-mono: 'JetBrains Mono', monospace; |
|
|
| |
| --surface-base: #0A090D; |
| --surface-panel: rgba(18, 16, 23, 0.75); |
| --surface-elevated: #15131C; |
| --border-glass: rgba(255, 255, 255, 0.08); |
| --border-active: rgba(255, 51, 102, 0.3); |
|
|
| --primary: #FF3366; |
| --primary-dim: #CC0044; |
| --primary-glow: rgba(255, 51, 102, 0.4); |
| --accent: #00E475; |
| --warning: #FFB300; |
| --danger: #FF3366; |
|
|
| --on-surface: #FFFFFF; |
| --on-surface-variant: #9E9AA7; |
|
|
| --font-body: 'Plus Jakarta Sans', sans-serif; |
|
|
| --radius-sm: 8px; |
| --radius-md: 14px; |
| --radius-lg: 18px; |
| --radius-pill: 9999px; |
| } |
|
|
| *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } |
|
|
| body { |
| font-family: var(--font-sans); |
| background: var(--bg-base); |
| background-image: |
| radial-gradient(circle at 15% 15%, rgba(255, 51, 102, 0.08) 0%, transparent 45%), |
| radial-gradient(circle at 85% 85%, rgba(0, 228, 117, 0.04) 0%, transparent 50%); |
| color: var(--text-primary); |
| min-height: 100vh; |
| overflow-x: hidden; |
| -webkit-font-smoothing: antialiased; |
| } |
|
|
| |
| .app-shell { |
| display: flex; |
| flex-direction: column; |
| height: 100vh; |
| overflow: hidden; |
| background: var(--bg-base); |
| } |
|
|
| .app-body { |
| display: flex; |
| flex: 1; |
| overflow: hidden; |
| } |
|
|
| .app-main { |
| flex: 1; |
| overflow-y: auto; |
| background: transparent; |
| } |
|
|
| |
| .glass { |
| background: var(--bg-card); |
| border: 1px solid var(--bg-border); |
| border-radius: var(--radius-lg); |
| backdrop-filter: blur(20px); |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); |
| transition: all 0.25s ease; |
| } |
|
|
| .glass:hover { |
| border-color: rgba(255, 51, 102, 0.25); |
| box-shadow: 0 12px 36px rgba(255, 51, 102, 0.12); |
| } |
|
|
| |
| .page { |
| display: flex; |
| flex-direction: column; |
| height: 100%; |
| padding: 24px 28px; |
| gap: 20px; |
| overflow-y: auto; |
| } |
|
|
| .page-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| flex-shrink: 0; |
| } |
|
|
| .page-title { |
| font-family: var(--font-serif); |
| font-size: 26px; |
| font-weight: 700; |
| color: var(--text-primary); |
| letter-spacing: -0.02em; |
| } |
|
|
| .page-subtitle { |
| font-family: var(--font-sans); |
| font-size: 13px; |
| color: var(--text-secondary); |
| margin-top: 2px; |
| } |
|
|
| |
| .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; } |
| .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; } |
|
|
| |
| .kpi-card { |
| background: var(--bg-card); |
| border: 1px solid var(--bg-border); |
| border-radius: var(--radius-md); |
| padding: 18px; |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); |
| } |
|
|
| .kpi-label { |
| font-family: var(--font-sans); |
| font-size: 11px; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 0.08em; |
| color: var(--text-secondary); |
| } |
|
|
| .kpi-value { |
| font-family: var(--font-serif); |
| font-size: 28px; |
| font-weight: 700; |
| color: var(--text-primary); |
| } |
|
|
| .kpi-change { |
| font-family: var(--font-sans); |
| font-size: 12px; |
| color: var(--text-muted); |
| } |
|
|
| |
| .pill-tag { |
| display: inline-flex; |
| align-items: center; |
| gap: 8px; |
| padding: 6px 14px; |
| background: rgba(255, 51, 102, 0.08); |
| border: 1px solid rgba(255, 51, 102, 0.25); |
| border-radius: var(--radius-pill); |
| font-family: var(--font-sans); |
| font-size: 11px; |
| font-weight: 600; |
| color: var(--accent-coral-pink); |
| text-transform: uppercase; |
| letter-spacing: 0.08em; |
| } |
|
|
| .badge { |
| display: inline-flex; |
| align-items: center; |
| padding: 4px 10px; |
| border-radius: var(--radius-pill); |
| font-size: 11px; |
| font-weight: 600; |
| font-family: var(--font-sans); |
| } |
|
|
| .badge-green { background: rgba(0, 228, 117, 0.12); color: var(--accent-emerald); border: 1px solid rgba(0, 228, 117, 0.25); } |
| .badge-coral { background: rgba(255, 51, 102, 0.12); color: var(--accent-coral-pink); border: 1px solid rgba(255, 51, 102, 0.25); } |
| .badge-gray { background: rgba(255, 255, 255, 0.04); color: var(--text-secondary); border: 1px solid var(--bg-border); } |
| .badge-orange { background: rgba(255, 179, 0, 0.15); color: var(--accent-amber); border: 1px solid rgba(255, 179, 0, 0.3); } |
| .badge-red { background: rgba(255, 51, 102, 0.15); color: var(--accent-coral); border: 1px solid rgba(255, 51, 102, 0.3); } |
|
|
| |
| .btn { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| padding: 10px 22px; |
| border-radius: var(--radius-pill); |
| font-family: var(--font-sans); |
| font-size: 13px; |
| font-weight: 600; |
| cursor: pointer; |
| border: none; |
| transition: all 0.25s ease; |
| text-decoration: none; |
| } |
|
|
| .btn-coral { |
| background: var(--accent-gradient); |
| color: #FFFFFF; |
| box-shadow: 0 4px 20px var(--accent-coral-glow); |
| } |
|
|
| .btn-coral:hover { |
| transform: translateY(-1px); |
| box-shadow: 0 6px 26px rgba(255, 51, 102, 0.55); |
| } |
|
|
| .btn-dark { |
| background: rgba(255, 255, 255, 0.04); |
| border: 1px solid rgba(255, 255, 255, 0.15); |
| color: var(--text-primary); |
| backdrop-filter: blur(10px); |
| } |
|
|
| .btn-dark:hover { |
| background: rgba(255, 255, 255, 0.08); |
| border-color: rgba(255, 255, 255, 0.3); |
| } |
|
|
| |
| ::-webkit-scrollbar { width: 6px; height: 6px; } |
| ::-webkit-scrollbar-track { background: var(--bg-base); } |
| ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.12); border-radius: 3px; } |
| ::-webkit-scrollbar-thumb:hover { background: rgba(255, 51, 102, 0.4); } |
|
|