@import url('https://fonts.googleapis.com/css2?family=TeleNeo:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); @import "tw-animate-css"; @import "tailwindcss"; @custom-variant dark (&:is(.dark *)); /* Light mode (default) */ :root { --t-bg: #ffffff; --t-bg-card: #ffffff; --t-bg-hover: #f8f8fc; --t-bg-elevated: #fafafa; --t-border: #e8e8f0; --t-border-light: #d0d0d8; --t-text: #1a1a2e; --t-text2: #4a4a5a; --t-text3: #7a7a8a; --t-green: #00b89c; --t-orange: #ff7700; --t-accent-glow: rgba(226,0,116,0.08); --t-pattern-opacity: 0.04; --background: var(--t-bg); --foreground: var(--t-text); --card: var(--t-bg-card); --card-foreground: var(--t-text); --popover: var(--t-bg-card); --popover-foreground: var(--t-text); --primary: #e20074; --primary-foreground: #ffffff; --secondary: var(--t-bg-hover); --secondary-foreground: var(--t-text); --muted: var(--t-bg-hover); --muted-foreground: var(--t-text3); --accent: rgba(226, 0, 116, 0.08); --accent-foreground: #e20074; --destructive: #ff4444; --border: var(--t-border); --input: var(--t-border); --ring: rgba(226, 0, 116, 0.35); --chart-1: #e20074; --chart-2: #be0060; --chart-3: #00b89c; --chart-4: #ff7700; --chart-5: #4a4a5a; --radius: 0.625rem; --sidebar: var(--t-bg-card); --sidebar-foreground: var(--t-text); --sidebar-primary: #e20074; --sidebar-primary-foreground: #ffffff; --sidebar-accent: var(--t-bg-hover); --sidebar-accent-foreground: var(--t-text); --sidebar-border: var(--t-border); --sidebar-ring: rgba(226, 0, 116, 0.35); } /* Dark mode */ .dark { --t-bg: #0a0a12; --t-bg-card: #12121f; --t-bg-hover: #1a1a2e; --t-bg-elevated: #1e1e30; --t-border: #2a2a40; --t-border-light: #4a4a60; --t-text: #ffffff; --t-text2: #c0c0d0; --t-text3: #9a9aaa; --t-green: #00d4aa; --t-orange: #ff8800; --t-accent-glow: rgba(226,0,116,0.12); --t-pattern-opacity: 0.03; --background: var(--t-bg); --foreground: var(--t-text); --card: var(--t-bg-card); --card-foreground: var(--t-text); --popover: var(--t-bg-card); --popover-foreground: var(--t-text); --primary: #e20074; --primary-foreground: #ffffff; --secondary: var(--t-bg-hover); --secondary-foreground: var(--t-text); --muted: var(--t-bg-hover); --muted-foreground: var(--t-text3); --accent: rgba(226, 0, 116, 0.14); --accent-foreground: #ff7abf; --destructive: #ff4444; --border: var(--t-border); --input: var(--t-border-light); --ring: rgba(226, 0, 116, 0.45); --chart-1: #e20074; --chart-2: #f04090; --chart-3: #00d4aa; --chart-4: #ff8800; --chart-5: #c0c0d0; --sidebar: var(--t-bg-card); --sidebar-foreground: var(--t-text); --sidebar-primary: #e20074; --sidebar-primary-foreground: #ffffff; --sidebar-accent: var(--t-bg-hover); --sidebar-accent-foreground: var(--t-text); --sidebar-border: var(--t-border); --sidebar-ring: rgba(226, 0, 116, 0.45); } /* Dim mode — Indigo Dusk: deep navy-purple mid-tone between dark and light */ .dim { --t-bg: #1e1b2e; --t-bg-card: #252237; --t-bg-hover: #2d2945; --t-bg-elevated: #292541; --t-border: #3a3650; --t-border-light: #504c6e; --t-text: #f0eeff; --t-text2: #b8b4d8; --t-text3: #7a7698; --t-green: #00c4a0; --t-orange: #ff8820; --t-accent-glow: rgba(226,0,116,0.14); --t-pattern-opacity: 0.04; --background: var(--t-bg); --foreground: var(--t-text); --card: var(--t-bg-card); --card-foreground: var(--t-text); --popover: var(--t-bg-card); --popover-foreground: var(--t-text); --primary: #e20074; --primary-foreground: #ffffff; --secondary: var(--t-bg-hover); --secondary-foreground: var(--t-text); --muted: var(--t-bg-hover); --muted-foreground: var(--t-text3); --accent: rgba(226, 0, 116, 0.12); --accent-foreground: #f04090; --destructive: #ff4444; --border: var(--t-border); --input: var(--t-border-light); --ring: rgba(226, 0, 116, 0.40); --sidebar: var(--t-bg-card); --sidebar-foreground: var(--t-text); --sidebar-primary: #e20074; --sidebar-primary-foreground: #ffffff; --sidebar-accent: var(--t-bg-hover); --sidebar-accent-foreground: var(--t-text); --sidebar-border: var(--t-border); --sidebar-ring: rgba(226, 0, 116, 0.40); } /* Base styles */ * { box-sizing: border-box; margin: 0; padding: 0; } html, body, #root { height: 100%; } body { font-family: 'TeleNeo', 'Segoe UI', system-ui, sans-serif; overflow-x: hidden; font-feature-settings: 'kern' 1; color: #1a1a2e; background: #ffffff; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Dark mode body */ .dark body, body.dark-mode { color: #fff; background: #0a0a12; } /* Dim mode body */ .dim body, body.dim-mode { color: #f0eeff; background: #1e1b2e; } /* Selection */ ::selection { background: rgba(226, 0, 116, 0.3); } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #e20074, #be0060); border-radius: 4px; } /* Monospace font class */ .mono { font-family: 'JetBrains Mono', monospace; } /* Smooth transitions for theme */ * { transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease; } /* Exclude buttons from auto-transition for custom hover effects */ button, input { transition: none; } /* Shell navigation manages its own transition timing. */ [data-shell-tab='true'] { transition: color 0.2s ease-out; } /* T-Systems Button Style */ .t-btn, .t-btn:hover { transition: all 0.3s ease; } .t-btn { background: linear-gradient(135deg, #e20074 0%, #be0060 100%); } .t-btn:hover { background: linear-gradient(135deg, #f0208a 0%, #d01070 100%); box-shadow: 0 4px 20px rgba(226,0,116,0.4); transform: translateY(-1px); } /* T-Systems Gradient Background */ .t-gradient-bg { background: linear-gradient(135deg, #0a0a12 0%, #1a1a2e 50%, #0a0a12 100%); } /* Magenta Glow */ .magenta-glow { box-shadow: 0 0 20px rgba(226,0,116,0.15), 0 0 40px rgba(226,0,116,0.05); } /* Card gradient for dark mode */ .dark .t-card-gradient { background: linear-gradient(180deg, #12121f, #0a0a12); } /* Card gradient for dim mode */ .dim .t-card-gradient { background: linear-gradient(180deg, #e8e5f4, #f0eef8); } /* Card gradient for light mode */ :not(.dark):not(.dim) .t-card-gradient { background: linear-gradient(180deg, #ffffff, #fafafa); } /* Light mode shadow for cards */ :not(.dark):not(.dim) .t-card-shadow { box-shadow: 0 2px 8px rgba(226,0,116,0.04); } :not(.dark):not(.dim) .t-card-shadow-lg { box-shadow: 0 4px 16px rgba(226,0,116,0.08); } /* Accent glow */ .t-accent-glow { box-shadow: 0 0 12px rgba(226,0,116,0.5), 0 0 24px rgba(226,0,116,0.2); } /* High risk glow */ .t-risk-high-glow { box-shadow: 0 0 8px rgba(255,68,68,0.3); } /* Medium risk glow */ .t-risk-medium-glow { box-shadow: 0 0 6px rgba(255,136,0,0.2); } /* Low risk glow */ .t-risk-low-glow { box-shadow: 0 0 4px rgba(0,212,170,0.15); } /* Pulse glow animation */ @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 12px rgba(226,0,116,0.5), 0 0 24px rgba(226,0,116,0.2); } 50% { box-shadow: 0 0 16px rgba(226,0,116,0.7), 0 0 32px rgba(226,0,116,0.3); } } .animate-pulse-glow { animation: pulse-glow 2s infinite; } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 12px rgba(226,0,116,0.5), 0 0 24px rgba(226,0,116,0.2); } 50% { box-shadow: 0 0 16px rgba(226,0,116,0.7), 0 0 32px rgba(226,0,116,0.3); } } /* Slide up animation */ @keyframes slideUp { 0% { opacity: 0; transform: translateY(10px); } 100% { opacity: 1; transform: translateY(0); } } .animate-slide-up { animation: slideUp 0.3s ease; } /* Slide in animation */ @keyframes slideIn { 0% { transform: translateX(100%); } 100% { transform: translateX(0); } } .animate-slide-in { animation: slideIn 0.3s ease-out forwards; } /* Slide out animation */ @keyframes slideOut { 0% { transform: translateX(0); } 100% { transform: translateX(100%); } } .animate-slide-out { animation: slideOut 0.3s ease-in forwards; } /* Pulse animation for processing steps */ @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.8; transform: scale(0.95); } } .animate-pulse { animation: pulse 0.6s ease-in-out infinite; } /* Spin animation for loading icons */ @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Custom utility classes */ @layer utilities { .gradient-accent { background: linear-gradient(135deg, #e20074 0%, #be0060 100%); } .gradient-accent-hover { background: linear-gradient(135deg, #f0208a 0%, #d01070 100%); } } @theme inline { --font-heading: 'TeleNeo', 'Segoe UI', system-ui, sans-serif; --font-sans: 'TeleNeo', 'Segoe UI', system-ui, sans-serif; --font-mono: 'JetBrains Mono', monospace; --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar: var(--sidebar); --color-chart-5: var(--chart-5); --color-chart-4: var(--chart-4); --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); --color-ring: var(--ring); --color-input: var(--input); --color-border: var(--border); --color-destructive: var(--destructive); --color-accent-foreground: var(--accent-foreground); --color-accent: var(--accent); --color-muted-foreground: var(--muted-foreground); --color-muted: var(--muted); --color-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-primary: var(--primary); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --color-foreground: var(--foreground); --color-background: var(--background); --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8); --radius-3xl: calc(var(--radius) * 2.2); --radius-4xl: calc(var(--radius) * 2.6); } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; } html { @apply font-sans; } }