/* Modern Chrono CCG Database Test Dashboard Styles */ :root { --chrono-bg: #0d1117; --chrono-card-bg: #161b22; --chrono-card-border: #30363d; --chrono-primary: #58a6ff; --chrono-success: #3fb950; --chrono-warning: #d29922; --chrono-danger: #f85149; --chrono-purple: #bc8cff; --chrono-cyan: #39c5cf; --chrono-text-primary: #c9d1d9; --chrono-text-secondary: #8b949e; --chrono-hover-bg: #21262d; } body { background-color: var(--chrono-bg); color: var(--chrono-text-primary); font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; } .page { position: relative; display: flex; flex-direction: row; min-height: 100vh; } .sidebar { width: 260px; background-color: #010409; border-right: 1px solid var(--chrono-card-border); flex-shrink: 0; display: flex; flex-direction: column; } main { flex: 1; display: flex; flex-direction: column; min-width: 0; } .top-navbar { background-color: #161b22; border-bottom: 1px solid var(--chrono-card-border); padding: 0.75rem 1.5rem; display: flex; align-items: center; justify-content: space-between; } .content-container { padding: 1.5rem 2rem; flex: 1; } /* Sidebar Styling */ .nav-brand { padding: 1.25rem 1rem; display: flex; align-items: center; gap: 0.75rem; border-bottom: 1px solid var(--chrono-card-border); color: #f0f6fc; font-size: 1.15rem; font-weight: 700; text-decoration: none; } .nav-brand i { color: var(--chrono-primary); font-size: 1.4rem; } .nav-menu { padding: 1rem 0.5rem; display: flex; flex-direction: column; gap: 0.25rem; } .nav-menu .nav-link { display: flex; align-items: center; gap: 0.75rem; padding: 0.6rem 0.9rem; color: var(--chrono-text-secondary); border-radius: 6px; font-weight: 500; font-size: 0.92rem; text-decoration: none; transition: all 0.15s ease-in-out; } .nav-menu .nav-link:hover { color: #f0f6fc; background-color: var(--chrono-hover-bg); } .nav-menu .nav-link.active { color: #f0f6fc; background-color: #1f6feb; font-weight: 600; } .nav-menu .nav-link i { font-size: 1.1rem; width: 20px; text-align: center; } .sidebar-footer { margin-top: auto; padding: 1rem; border-top: 1px solid var(--chrono-card-border); font-size: 0.8rem; color: var(--chrono-text-secondary); } /* Status Badges */ .status-pill { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.35rem 0.75rem; border-radius: 9999px; font-size: 0.82rem; font-weight: 600; } .status-connected { background-color: rgba(63, 185, 80, 0.15); color: #3fb950; border: 1px solid rgba(63, 185, 80, 0.4); } .status-disconnected { background-color: rgba(248, 81, 73, 0.15); color: #f85149; border: 1px solid rgba(248, 81, 73, 0.4); } .status-inmemory { background-color: rgba(188, 140, 255, 0.15); color: #bc8cff; border: 1px solid rgba(188, 140, 255, 0.4); } .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; } .status-dot.green { background-color: #3fb950; box-shadow: 0 0 8px #3fb950; } .status-dot.red { background-color: #f85149; box-shadow: 0 0 8px #f85149; } .status-dot.purple { background-color: #bc8cff; box-shadow: 0 0 8px #bc8cff; } /* Chrono Cards & Containers */ .chrono-card { background-color: var(--chrono-card-bg); border: 1px solid var(--chrono-card-border); border-radius: 8px; padding: 1.25rem; margin-bottom: 1.5rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } .chrono-card-header { display: flex; align-items: center; justify-content: space-between; padding-bottom: 0.9rem; margin-bottom: 1rem; border-bottom: 1px solid var(--chrono-card-border); } .chrono-card-title { font-size: 1.1rem; font-weight: 600; color: #f0f6fc; margin: 0; display: flex; align-items: center; gap: 0.5rem; } /* Metric Cards */ .metric-card { background-color: var(--chrono-card-bg); border: 1px solid var(--chrono-card-border); border-radius: 8px; padding: 1.25rem; display: flex; align-items: center; gap: 1rem; transition: transform 0.15s ease, border-color 0.15s ease; } .metric-card:hover { transform: translateY(-2px); border-color: var(--chrono-primary); } .metric-icon-box { width: 48px; height: 48px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; flex-shrink: 0; } .metric-icon-blue { background-color: rgba(88, 166, 255, 0.15); color: var(--chrono-primary); } .metric-icon-green { background-color: rgba(63, 185, 80, 0.15); color: var(--chrono-success); } .metric-icon-purple { background-color: rgba(188, 140, 255, 0.15); color: var(--chrono-purple); } .metric-icon-yellow { background-color: rgba(210, 153, 34, 0.15); color: var(--chrono-warning); } .metric-value { font-size: 1.6rem; font-weight: 700; color: #f0f6fc; line-height: 1.1; } .metric-label { font-size: 0.82rem; color: var(--chrono-text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-top: 0.2rem; } /* Custom Table */ .chrono-table { width: 100%; color: var(--chrono-text-primary); border-collapse: separate; border-spacing: 0; } .chrono-table th { background-color: #0d1117; color: var(--chrono-text-secondary); font-weight: 600; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; padding: 0.75rem 1rem; border-bottom: 1px solid var(--chrono-card-border); } .chrono-table td { padding: 0.85rem 1rem; border-bottom: 1px solid #21262d; font-size: 0.9rem; vertical-align: middle; } .chrono-table tbody tr:hover { background-color: var(--chrono-hover-bg); } /* Custom Modals */ .modal-backdrop-custom { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 1050; padding: 1rem; backdrop-filter: blur(2px); } .modal-dialog-custom { background-color: #161b22; border: 1px solid var(--chrono-card-border); border-radius: 10px; width: 100%; max-width: 650px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); display: flex; flex-direction: column; max-height: 90vh; } .modal-header-custom { padding: 1rem 1.25rem; border-bottom: 1px solid var(--chrono-card-border); display: flex; align-items: center; justify-content: space-between; } .modal-title-custom { font-size: 1.15rem; font-weight: 600; color: #f0f6fc; margin: 0; } .modal-body-custom { padding: 1.25rem; overflow-y: auto; } .modal-footer-custom { padding: 0.9rem 1.25rem; border-top: 1px solid var(--chrono-card-border); display: flex; justify-content: flex-end; gap: 0.75rem; } /* Form Controls */ .form-control-chrono, .form-select-chrono { background-color: #0d1117; border: 1px solid #30363d; color: #f0f6fc; border-radius: 6px; padding: 0.55rem 0.85rem; font-size: 0.9rem; width: 100%; } .form-control-chrono:focus, .form-select-chrono:focus { background-color: #0d1117; border-color: var(--chrono-primary); color: #f0f6fc; outline: none; box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.25); } /* Log Console */ .log-console { background-color: #090d13; border: 1px solid var(--chrono-card-border); border-radius: 6px; padding: 1rem; font-family: 'Consolas', 'Courier New', monospace; font-size: 0.85rem; color: #7ee787; max-height: 350px; overflow-y: auto; white-space: pre-wrap; word-break: break-all; } .code-block { background-color: #090d13; border: 1px solid #30363d; border-radius: 6px; padding: 0.75rem 1rem; font-family: 'Consolas', 'Courier New', monospace; font-size: 0.84rem; color: #a5d6ff; overflow-x: auto; } /* Buttons */ .btn-chrono-primary { background-color: #238636; border: 1px solid rgba(240, 246, 252, 0.1); color: #ffffff; font-weight: 500; padding: 0.45rem 0.9rem; border-radius: 6px; font-size: 0.88rem; transition: background-color 0.15s ease; } .btn-chrono-primary:hover { background-color: #2ea043; color: #ffffff; } .btn-chrono-secondary { background-color: #21262d; border: 1px solid #363b42; color: #c9d1d9; font-weight: 500; padding: 0.45rem 0.9rem; border-radius: 6px; font-size: 0.88rem; transition: background-color 0.15s ease, color 0.15s ease; } .btn-chrono-secondary:hover { background-color: #30363d; color: #f0f6fc; } .btn-chrono-danger { background-color: #b62324; border: 1px solid rgba(240, 246, 252, 0.1); color: #ffffff; font-weight: 500; padding: 0.45rem 0.9rem; border-radius: 6px; font-size: 0.88rem; transition: background-color 0.15s ease; } .btn-chrono-danger:hover { background-color: #da3633; color: #ffffff; } .btn-chrono-outline-primary { background-color: transparent; border: 1px solid var(--chrono-primary); color: var(--chrono-primary); font-weight: 500; padding: 0.45rem 0.9rem; border-radius: 6px; font-size: 0.88rem; } .btn-chrono-outline-primary:hover { background-color: rgba(88, 166, 255, 0.15); color: #ffffff; }