/* Modern Dark Mode & Glassmorphic CSS System for DocVerify AI */ :root { --bg-dark: #090d16; --bg-card: rgba(17, 24, 39, 0.7); --bg-card-border: rgba(255, 255, 255, 0.08); --bg-input: #1e293b; --text-main: #f8fafc; --text-muted: #94a3b8; --primary: #6366f1; --primary-hover: #4f46e5; --emerald: #10b981; --emerald-hover: #059669; --amber: #f59e0b; --rose: #f43f5e; --font-inter: 'Inter', sans-serif; --font-outfit: 'Outfit', sans-serif; --font-code: 'Fira Code', monospace; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: var(--bg-dark); color: var(--text-main); font-family: var(--font-inter); min-height: 100vh; overflow-x: hidden; } .app-container { display: flex; min-height: 100vh; } /* Sidebar Styling */ .sidebar { width: 280px; background: rgba(15, 23, 42, 0.85); backdrop-filter: blur(12px); border-right: 1px solid var(--bg-card-border); padding: 1.5rem 1rem; display: flex; flex-direction: column; justify-content: space-between; shrink: 0; } .brand { display: flex; align-items: center; gap: 0.75rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--bg-card-border); } .logo-icon { width: 42px; height: 42px; background: linear-gradient(135deg, var(--primary), #818cf8); border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; color: #fff; box-shadow: 0 4px 14px rgba(99, 102, 241, 0.4); } .brand-text h2 { font-family: var(--font-outfit); font-size: 1.2rem; font-weight: 700; line-height: 1.2; } .badge-tag { font-size: 0.7rem; background: rgba(99, 102, 241, 0.2); color: var(--primary); padding: 2px 6px; border-radius: 6px; border: 1px solid rgba(99, 102, 241, 0.4); } .brand-sub { font-size: 0.75rem; color: var(--text-muted); } /* Navigation Menu */ .nav-menu { margin-top: 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; } .menu-label { font-size: 0.68rem; font-weight: 700; letter-spacing: 0.05em; color: #64748b; padding: 0.5rem 0.75rem 0.25rem 0.75rem; } .nav-btn { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; border: none; background: transparent; color: var(--text-muted); font-family: var(--font-inter); font-size: 0.9rem; font-weight: 500; border-radius: 10px; cursor: pointer; transition: all 0.2s ease; text-align: left; } .nav-btn i { font-size: 1.1rem; width: 20px; } .nav-btn:hover { background: rgba(255, 255, 255, 0.04); color: var(--text-main); } .nav-btn.active { background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(99, 102, 241, 0.05)); color: #818cf8; border: 1px solid rgba(99, 102, 241, 0.3); font-weight: 600; } /* Env Card */ .env-status-card { background: rgba(30, 41, 59, 0.6); border: 1px solid var(--bg-card-border); border-radius: 12px; padding: 0.85rem; margin-top: auto; } .env-header { display: flex; align-items: center; gap: 0.5rem; font-family: var(--font-outfit); font-size: 0.8rem; font-weight: 700; letter-spacing: 0.05em; color: #cbd5e1; } .pulse-dot { width: 8px; height: 8px; background-color: var(--emerald); border-radius: 50%; box-shadow: 0 0 8px var(--emerald); } .env-details { font-size: 0.75rem; color: var(--text-muted); margin-top: 0.4rem; } /* Main Content Area */ .main-content { flex: 1; padding: 2rem; overflow-y: auto; } .top-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 2rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--bg-card-border); } .header-title h1 { font-family: var(--font-outfit); font-size: 1.8rem; font-weight: 700; } .header-desc { font-size: 0.9rem; color: var(--text-muted); margin-top: 0.25rem; } .api-badge { background: rgba(30, 41, 59, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); color: #a5b4fc; font-family: var(--font-code); font-size: 0.8rem; padding: 0.4rem 0.8rem; border-radius: 8px; } /* Grid Layout */ .grid-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } @media (max-width: 1024px) { .grid-layout { grid-template-columns: 1fr; } } /* Glass Card */ .glass-card { background: var(--bg-card); backdrop-filter: blur(16px); border: 1px solid var(--bg-card-border); border-radius: 16px; padding: 1.5rem; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.37); } .card-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; padding-bottom: 0.75rem; border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .card-header i { font-size: 1.25rem; } .card-header h3 { font-family: var(--font-outfit); font-size: 1.2rem; font-weight: 600; } /* Forms */ .tab-pane { display: none; } .tab-pane.active { display: block; } .form-group { margin-bottom: 1.2rem; } .form-group label { display: block; font-size: 0.85rem; font-weight: 500; color: #cbd5e1; margin-bottom: 0.4rem; } .required { color: var(--rose); } .form-control { width: 100%; padding: 0.75rem 1rem; background-color: var(--bg-input); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; color: var(--text-main); font-family: var(--font-inter); font-size: 0.95rem; outline: none; transition: all 0.2s ease; } .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.25); } .text-uppercase { text-transform: uppercase; } .radio-group { display: flex; gap: 1.5rem; padding: 0.4rem 0; } .radio-label { font-size: 0.85rem; color: #cbd5e1; cursor: pointer; display: flex; align-items: center; gap: 0.4rem; } /* Sample Pills */ .sample-pills-container { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-top: 1rem; padding: 0.75rem; background: rgba(255, 255, 255, 0.02); border-radius: 10px; border: 1px dashed rgba(255, 255, 255, 0.08); } .sample-label { font-size: 0.75rem; color: var(--text-muted); font-weight: 600; } .pill-btn { background: rgba(99, 102, 241, 0.15); border: 1px solid rgba(99, 102, 241, 0.3); color: #a5b4fc; font-size: 0.75rem; font-weight: 500; padding: 4px 10px; border-radius: 20px; cursor: pointer; transition: all 0.2s ease; } .pill-btn:hover { background: var(--primary); color: #fff; } .pill-btn-danger { background: rgba(244, 63, 94, 0.15); border-color: rgba(244, 63, 94, 0.3); color: #fda4af; } .pill-btn-danger:hover { background: var(--rose); color: #fff; } /* Buttons */ .btn { padding: 0.8rem 1.25rem; font-family: var(--font-inter); font-size: 0.95rem; font-weight: 600; border-radius: 10px; border: none; cursor: pointer; transition: all 0.2s ease; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; } .btn-primary { background: linear-gradient(135deg, var(--primary), var(--primary-hover)); color: #fff; box-shadow: 0 4px 14px rgba(99, 102, 241, 0.35); } .btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.5); } .btn-emerald { background: linear-gradient(135deg, var(--emerald), var(--emerald-hover)); color: #fff; box-shadow: 0 4px 14px rgba(16, 185, 129, 0.35); } .btn-emerald:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(16, 185, 129, 0.5); } .w-100 { width: 100%; } .mt-3 { margin-top: 1rem; } .mt-4 { margin-top: 1.5rem; } /* Inspector Column */ .inspector-card { height: 100%; display: flex; flex-direction: column; } .inspector-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .status-indicator { display: flex; align-items: center; gap: 0.75rem; } .badge { font-size: 0.75rem; font-weight: 700; padding: 4px 10px; border-radius: 6px; background: rgba(148, 163, 184, 0.2); color: var(--text-muted); } .badge-success { background: rgba(16, 185, 129, 0.2); color: var(--emerald); border: 1px solid rgba(16, 185, 129, 0.4); } .badge-error { background: rgba(244, 63, 94, 0.2); color: var(--rose); border: 1px solid rgba(244, 63, 94, 0.4); } .latency-text { font-size: 0.75rem; color: var(--text-muted); } .source-tag { font-size: 0.7rem; padding: 2px 8px; border-radius: 4px; background: rgba(255, 255, 255, 0.05); color: #a5b4fc; } .copy-btn { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--text-muted); padding: 4px 10px; border-radius: 6px; font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .copy-btn:hover { background: rgba(255, 255, 255, 0.1); color: var(--text-main); } .code-box-container { flex: 1; display: flex; flex-direction: column; } .code-box-title { font-size: 0.75rem; font-weight: 600; color: #64748b; margin-bottom: 0.4rem; } .code-box { background: #020617; border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 10px; padding: 1rem; font-family: var(--font-code); font-size: 0.82rem; color: #38bdf8; white-space: pre-wrap; word-break: break-all; overflow-x: auto; max-height: 200px; } .json-box { flex: 1; max-height: 420px; color: #e2e8f0; } /* Utilities */ .text-indigo { color: var(--primary); } .text-emerald { color: var(--emerald); } .text-amber { color: var(--amber); }