@import "tailwindcss"; @custom-variant dark (&:where(.dark, .dark *)); @theme inline { --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "PingFang SC", system-ui, sans-serif; --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; --color-page: var(--page); --color-auth: var(--auth); --color-sidebar: var(--sidebar); --color-surface: var(--surface); --color-surface-elevated: var(--surface-elevated); --color-surface-muted: var(--surface-muted); --color-input: var(--input); --color-foreground: var(--foreground); --color-muted: var(--muted); --color-border: var(--border); --color-border-strong: var(--border-strong); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-primary-soft: var(--primary-soft); --color-violet: var(--violet); --color-violet-soft: var(--violet-soft); --color-success: var(--success); --color-success-soft: var(--success-soft); --color-warning: var(--warning); --color-warning-soft: var(--warning-soft); --color-danger: var(--danger); --color-danger-soft: var(--danger-soft); } :root { color-scheme: light; font-family: var(--font-sans); font-synthesis: none; text-rendering: optimizeLegibility; --page: #f5f7fb; --auth: #f4f7fc; --sidebar: rgb(248 250 253 / 92%); --surface: #ffffff; --surface-elevated: #ffffff; --surface-muted: #f1f4f8; --input: #ffffff; --foreground: #111827; --muted: #667085; --border: rgb(15 23 42 / 9%); --border-strong: rgb(15 23 42 / 17%); --primary: #1769e0; --primary-foreground: #ffffff; --primary-soft: #eaf2ff; --violet: #7655d8; --violet-soft: #f1edff; --success: #138653; --success-soft: #e8f8ef; --warning: #a76808; --warning-soft: #fff4d9; --danger: #d13a4b; --danger-soft: #fff0f1; } .dark { color-scheme: dark; --page: #0a0c10; --auth: #090b10; --sidebar: rgb(15 18 24 / 94%); --surface: #12161d; --surface-elevated: #171b23; --surface-muted: #1b2029; --input: #10141a; --foreground: #f5f7fa; --muted: #9ca6b5; --border: rgb(255 255 255 / 9%); --border-strong: rgb(255 255 255 / 16%); --primary: #5b9cff; --primary-foreground: #061124; --primary-soft: rgb(91 156 255 / 14%); --violet: #a78bfa; --violet-soft: rgb(167 139 250 / 14%); --success: #4ed69a; --success-soft: rgb(78 214 154 / 13%); --warning: #f5b94c; --warning-soft: rgb(245 185 76 / 13%); --danger: #ff6b7a; --danger-soft: rgb(255 107 122 / 13%); } * { box-sizing: border-box; } html { min-width: 320px; min-height: 100%; background: var(--page); } body { min-width: 320px; min-height: 100vh; margin: 0; background: var(--page); } button, input, textarea, select { font: inherit; } button, a, select { -webkit-tap-highlight-color: transparent; } button { cursor: pointer; } button:disabled { cursor: not-allowed; } ::selection { color: var(--primary-foreground); background: var(--primary); } *:focus-visible { outline: none; } .brand-symbol { display: grid; color: white; background: radial-gradient(circle at 25% 15%, rgb(255 255 255 / 44%), transparent 24%), linear-gradient(145deg, #2e82ff 0%, #1769e0 46%, #7655d8 100%); box-shadow: 0 12px 30px -14px rgb(23 105 224 / 75%), inset 0 1px 0 rgb(255 255 255 / 25%); font-weight: 850; letter-spacing: -0.06em; place-items: center; } .auth-orb { position: absolute; border-radius: 999px; filter: blur(2px); pointer-events: none; } .auth-orb--one { top: -24rem; left: -18rem; width: 48rem; height: 48rem; background: radial-gradient(circle, rgb(91 156 255 / 18%), transparent 68%); } .auth-orb--two { right: -20rem; bottom: -24rem; width: 52rem; height: 52rem; background: radial-gradient(circle, rgb(167 139 250 / 16%), transparent 68%); } .stat-glow { position: absolute; top: -5rem; right: -5rem; width: 10rem; height: 10rem; border-radius: 999px; opacity: 0.13; filter: blur(8px); transition: opacity 250ms ease, transform 250ms ease; } .group:hover .stat-glow { opacity: 0.2; transform: scale(1.08); } .stat-glow--primary { background: var(--primary); } .stat-glow--success { background: var(--success); } .stat-glow--violet { background: var(--violet); } .stat-glow--warning { background: var(--warning); } .stat-icon { display: grid; width: 2.25rem; height: 2.25rem; border-radius: 0.75rem; place-items: center; } .stat-icon--primary { color: var(--primary); background: var(--primary-soft); } .stat-icon--success { color: var(--success); background: var(--success-soft); } .stat-icon--violet { color: var(--violet); background: var(--violet-soft); } .stat-icon--warning { color: var(--warning); background: var(--warning-soft); } .osg-toast { border-color: var(--border) !important; border-radius: 1rem !important; background: var(--surface-elevated) !important; color: var(--foreground) !important; box-shadow: 0 18px 50px rgb(15 23 42 / 18%) !important; } @keyframes page-in { from { opacity: 0; transform: translateY(6px); } } @keyframes card-in { from { opacity: 0; transform: translateY(10px) scale(0.985); } } .animate-page-in { animation: page-in 260ms ease-out both; } .animate-card-in { animation: card-in 320ms ease-out both; } .chart-grid-line { stroke: var(--border); stroke-width: 1; stroke-dasharray: 3 5; } .chart-label { fill: var(--muted); font-size: 11px; } .chart-line { fill: none; stroke-linecap: round; stroke-linejoin: round; } .chart-line--primary { stroke: var(--primary); stroke-width: 3; } .chart-line--violet { stroke: var(--violet); stroke-width: 2.5; } .chart-dot { fill: var(--surface); } .chart-dot--primary { stroke: var(--primary); stroke-width: 3; } .chart-dot--violet { stroke: var(--violet); stroke-width: 2.5; } .chart-legend-dot { width: 0.5rem; height: 0.5rem; border-radius: 999px; } .chart-legend-dot--primary { background: var(--primary); } .chart-legend-dot--violet { background: var(--violet); } .chart-legend-dot--success { background: var(--success); } .chart-legend-dot--warning { background: var(--warning); } .bar-progress, .funnel-progress { border: 0; appearance: none; } .bar-progress::-webkit-progress-bar, .funnel-progress::-webkit-progress-bar { border-radius: 999px; background: var(--surface-muted); } .bar-progress::-webkit-progress-value, .funnel-progress::-webkit-progress-value { border-radius: 999px; } .bar-progress--primary::-webkit-progress-value { background: var(--primary); } .bar-progress--violet::-webkit-progress-value { background: var(--violet); } .bar-progress--success::-webkit-progress-value { background: var(--success); } .bar-progress--warning::-webkit-progress-value { background: var(--warning); } .funnel-progress::-webkit-progress-value { background: linear-gradient(90deg, var(--primary), var(--violet)); } .bar-progress::-moz-progress-bar, .funnel-progress::-moz-progress-bar { border-radius: 999px; } .bar-progress--primary::-moz-progress-bar { background: var(--primary); } .bar-progress--violet::-moz-progress-bar { background: var(--violet); } .bar-progress--success::-moz-progress-bar { background: var(--success); } .bar-progress--warning::-moz-progress-bar { background: var(--warning); } .funnel-progress::-moz-progress-bar { background: linear-gradient(90deg, var(--primary), var(--violet)); } .radial-track, .radial-value { fill: none; stroke-width: 11; } .radial-track { stroke: var(--surface-muted); } .radial-value { stroke-linecap: round; } .radial-value--primary { stroke: var(--primary); } .radial-value--success { stroke: var(--success); } .radial-value--violet { stroke: var(--violet); } .radial-value--warning { stroke: var(--warning); } .radial-label { fill: var(--foreground); font-size: 20px; font-weight: 750; letter-spacing: -0.04em; } .heatmap-cell { display: block; min-width: 4.25rem; border-radius: 0.65rem; padding: 0.65rem 0.5rem; font-size: 0.75rem; font-weight: 700; font-variant-numeric: tabular-nums; } .heatmap-cell--high { color: var(--success); background: var(--success-soft); } .heatmap-cell--medium { color: var(--warning); background: var(--warning-soft); } .heatmap-cell--low { color: var(--danger); background: var(--danger-soft); } .heatmap-cell--unavailable { color: var(--muted); background: var(--surface-muted); } .heatmap-key { width: 1rem; height: 1rem; border-radius: 0.3rem; } .heatmap-key--high { background: var(--success-soft); } .heatmap-key--medium { background: var(--warning-soft); } .heatmap-key--low { background: var(--danger-soft); } .heatmap-key--unavailable { background: var(--surface-muted); } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } @media (prefers-contrast: more) { :root { --border: rgb(15 23 42 / 38%); --border-strong: rgb(15 23 42 / 58%); --muted: #414b5a; } .dark { --border: rgb(255 255 255 / 40%); --border-strong: rgb(255 255 255 / 65%); --muted: #c0c7d1; } } @media (forced-colors: active) { .brand-symbol, .stat-icon { border: 1px solid ButtonText; } }