:root { /* Brand */ --navy: #0f172a; --dark-blue: #1e293b; --mid-blue: #334155; --accent-green: #10b981; --accent-green-dim: #059669; --light-green: #d1fae5; --teal: #14b8a6; --brand-accent: #6366f1; /* Grays */ --gray-50: #f8fafc; --gray-100: #f1f5f9; --gray-200: #e2e8f0; --gray-300: #cbd5e1; --gray-400: #94a3b8; --gray-500: #64748b; --gray-600: #475569; --gray-700: #334155; --gray-800: #1e293b; --gray-900: #0f172a; --white: #ffffff; /* Semantic */ --red: #ef4444; --red-light: #fee2e2; --green-light: #d1fae5; --amber: #f59e0b; --amber-light: #fef3c7; --blue: #3b82f6; --blue-light: #dbeafe; /* Shadows */ --shadow-xs: 0 1px 3px rgba(15,23,42,0.04); --shadow-sm: 0 2px 8px rgba(15,23,42,0.06); --shadow-md: 0 4px 20px rgba(15,23,42,0.08); --shadow-lg: 0 8px 32px rgba(15,23,42,0.10); /* Radius */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 20px; /* Glass */ --glass-bg: rgba(255,255,255,0.7); --glass-border: rgba(255,255,255,0.5); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; color: var(--gray-800); background: var(--white); -webkit-font-smoothing: antialiased; line-height: 1.6; } /* ── NAV ── */ nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(255,255,255,0.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-bottom: 1px solid rgba(226,232,240,0.7); padding: 0 2rem; height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; transition: background 0.3s, box-shadow 0.3s; } .nav-scrolled { background: rgba(255,255,255,0.97) !important; box-shadow: 0 1px 10px rgba(15,23,42,0.07); } .nav-logo { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 1.2rem; color: var(--navy); text-decoration: none; display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; } .nav-logo-icon { width: 32px; height: 32px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .nav-logo-icon svg { width: 32px; height: 32px; display: block; } /* ── MEGA-MENU TOP-LEVEL LIST ── */ .nav-mega-links { display: flex; gap: 0.125rem; list-style: none; align-items: center; } .nav-mega-item { position: relative; } /* ── MEGA TRIGGER BUTTON ── */ .nav-mega-trigger { display: flex; align-items: center; gap: 0.3rem; font-size: 0.8375rem; font-weight: 500; color: var(--gray-600); background: none; border: none; padding: 0.375rem 0.7rem; border-radius: 7px; cursor: pointer; font-family: inherit; white-space: nowrap; transition: color 0.15s, background 0.15s; line-height: 1; } .nav-mega-trigger:hover { color: var(--navy); background: var(--gray-50); } .nav-mega-trigger.panel-open { color: var(--navy); background: var(--gray-100); } .nav-mega-chevron { width: 11px; height: 11px; transition: transform 0.2s; color: var(--gray-400); flex-shrink: 0; } .nav-mega-trigger.panel-open .nav-mega-chevron { transform: rotate(180deg); } /* ── MEGA PANEL DROPDOWN ── */ .nav-mega-panel { display: none; position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%); background: #fff; border: 1px solid var(--gray-200); border-radius: 14px; box-shadow: 0 8px 40px rgba(15,23,42,0.10), 0 2px 8px rgba(15,23,42,0.05); padding: 1.25rem; min-width: 580px; z-index: 999; animation: megaFadeIn 0.14s ease; } .nav-mega-panel.open { display: block; } .nav-mega-panel.wide { min-width: 740px; } @keyframes megaFadeIn { from { opacity: 0; transform: translateX(-50%) translateY(-8px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } /* First item panel — anchor left not center */ .nav-mega-item:first-child .nav-mega-panel { left: 0; transform: none; } @keyframes megaFadeInLeft { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } .nav-mega-item:first-child .nav-mega-panel.open { animation: megaFadeInLeft 0.14s ease; } /* ── PANEL INNER GRID ── */ .mega-cols { display: grid; gap: 1.25rem; } .mega-cols-2 { grid-template-columns: 1fr 1fr; } .mega-cols-3 { grid-template-columns: 1fr 1fr 1fr; } .mega-cols-4 { grid-template-columns: 1fr 1fr 1fr 1fr; } .mega-col-hd { font-size: 0.67rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.09em; color: var(--gray-400); margin-bottom: 0.5rem; padding-bottom: 0.4rem; border-bottom: 1px solid var(--gray-100); } .mega-links { list-style: none; display: flex; flex-direction: column; gap: 0.1rem; } .mega-links a { display: block; font-size: 0.8125rem; font-weight: 500; color: var(--gray-600); text-decoration: none; padding: 0.26rem 0.5rem; border-radius: 5px; transition: color 0.12s, background 0.12s; white-space: nowrap; } .mega-links a:hover { color: var(--navy); background: var(--gray-50); } .mega-links a.mega-see-all { color: var(--accent-green); font-weight: 600; margin-top: 0.2rem; font-size: 0.775rem; } .mega-links a.mega-see-all:hover { background: rgba(16,185,129,0.06); } /* ── AI TRACKER INPUT (Track the Market panel) ── */ .mega-ai-row { grid-column: 1 / -1; background: linear-gradient(135deg, rgba(16,185,129,0.05) 0%, rgba(99,102,241,0.04) 100%); border: 1px solid rgba(16,185,129,0.16); border-radius: 10px; padding: 0.875rem 1rem; margin-bottom: 0.125rem; } .mega-ai-label { font-size: 0.68rem; font-weight: 700; color: var(--accent-green); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 0.5rem; display: flex; align-items: center; gap: 0.35rem; } .mega-ai-form { display: flex; gap: 0.5rem; } .mega-ai-input { flex: 1; padding: 0.575rem 0.875rem; border: 1px solid var(--gray-200); border-radius: 8px; font-size: 0.8375rem; font-family: inherit; color: var(--navy); background: #fff; outline: none; min-width: 0; transition: border 0.15s, box-shadow 0.15s; } .mega-ai-input:focus { border-color: var(--accent-green); box-shadow: 0 0 0 3px rgba(16,185,129,0.08); } .mega-ai-input::placeholder { color: var(--gray-400); } .mega-ai-btn { padding: 0.575rem 1rem; background: linear-gradient(135deg, var(--accent-green), var(--teal)); color: #fff; border: none; border-radius: 8px; font-size: 0.8rem; font-weight: 700; cursor: pointer; font-family: inherit; white-space: nowrap; transition: box-shadow 0.15s; box-shadow: 0 2px 8px rgba(16,185,129,0.25); } .mega-ai-btn:hover { box-shadow: 0 4px 14px rgba(16,185,129,0.35); } /* ── MY STACK EDGE CTA BUTTON ── */ .nav-edge-cta { display: inline-flex; align-items: center; gap: 0.35rem; background: linear-gradient(135deg, #10b981, #059669); color: #fff !important; font-size: 0.8125rem; font-weight: 700; padding: 0.44rem 1.05rem; border-radius: 8px; text-decoration: none; white-space: nowrap; transition: all 0.15s; box-shadow: 0 2px 10px rgba(16,185,129,0.30); border: 1px solid rgba(5,150,105,0.3); } .nav-edge-cta:hover { box-shadow: 0 4px 16px rgba(16,185,129,0.40); transform: translateY(-1px); } /* ── MOBILE HAMBURGER ── */ .nav-mobile-btn { display: none; background: none; border: 1.5px solid var(--gray-200); border-radius: 7px; width: 36px; height: 36px; cursor: pointer; align-items: center; justify-content: center; flex-shrink: 0; color: var(--navy); } .nav-mobile-btn svg { display: block; } /* ── LEGACY COMPAT ── */ .nav-cta { background: linear-gradient(135deg, var(--accent-green), var(--teal)) !important; color: #fff !important; padding: 0.375rem 0.875rem; border-radius: 7px; font-weight: 600 !important; font-size: 0.8125rem !important; transition: all 0.15s !important; white-space: nowrap; box-shadow: 0 2px 8px rgba(16,185,129,0.25); } .nav-cta:hover { box-shadow: 0 4px 14px rgba(16,185,129,0.3) !important; transform: translateY(-1px); } .nav-advisors-link { background: linear-gradient(135deg, var(--accent-green), var(--teal)) !important; color: #fff !important; padding: 0.375rem 0.875rem; border-radius: 7px; font-weight: 600 !important; font-size: 0.8125rem !important; transition: all 0.15s !important; box-shadow: 0 2px 8px rgba(16,185,129,0.25); } .nav-advisors-link:hover { box-shadow: 0 4px 14px rgba(16,185,129,0.3) !important; } .nav-links { display: flex; gap: 1.5rem; list-style: none; align-items: center; flex-wrap: nowrap; } .nav-links a { font-size: 0.8375rem; font-weight: 500; color: var(--gray-600); text-decoration: none; transition: color 0.15s; white-space: nowrap; } .nav-links a:hover { color: var(--navy); } .nav-links a.active { color: var(--navy); font-weight: 600; } .nav-new-badge { display: inline-block; font-size: 0.55rem; font-weight: 800; padding: 0.1rem 0.35rem; border-radius: 3px; background: linear-gradient(135deg, var(--accent-green), var(--teal)); color: #fff; vertical-align: middle; margin-left: 0.2rem; letter-spacing: 0.04em; } /* ── LAYOUT ── */ .container { max-width: 1200px; margin: 0 auto; padding: 0 2rem; } .page-header { padding: 7rem 0 3rem; } .page-wrap { max-width: 1200px; margin: 0 auto; padding: 7rem 2rem 4rem; } /* ── BREADCRUMB ── */ .breadcrumb { display: flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; color: var(--gray-500); margin-bottom: 1.25rem; } .breadcrumb a { color: var(--gray-500); text-decoration: none; } .breadcrumb a:hover { color: var(--accent-green); } .breadcrumb span { color: var(--gray-400); } /* ── PAGE TYPOGRAPHY ── */ .page-label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--accent-green); margin-bottom: 0.6rem; } .page-title { font-family: 'Space Grotesk', sans-serif; font-size: 2.75rem; font-weight: 700; color: var(--navy); line-height: 1.12; letter-spacing: -0.025em; margin-bottom: 1rem; } .page-subtitle { font-size: 1.05rem; color: var(--gray-500); line-height: 1.75; max-width: 620px; } /* ── SECTION ── */ .section { padding: 3rem 0; border-top: 1px solid var(--gray-100); } .section-label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--accent-green); margin-bottom: 0.5rem; } .section-title { font-family: 'Space Grotesk', sans-serif; font-size: 1.35rem; font-weight: 700; color: var(--navy); margin-bottom: 1.5rem; letter-spacing: -0.01em; } .section-subtitle { font-size: 0.95rem; color: var(--gray-500); margin-bottom: 2rem; line-height: 1.7; max-width: 560px; } /* ── CARDS ── */ .card { background: var(--white); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); overflow: hidden; } .card-hover { transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; } .card-hover:hover { border-color: var(--accent-green); box-shadow: var(--shadow-md); transform: translateY(-2px); } .card-body { padding: 1.5rem; } /* ── BUTTONS ── */ .btn { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.625rem 1.25rem; border-radius: 8px; font-size: 0.875rem; font-weight: 600; font-family: inherit; cursor: pointer; border: none; transition: all 0.15s; text-decoration: none; white-space: nowrap; line-height: 1; } .btn-primary { background: linear-gradient(135deg, var(--accent-green), var(--teal)); color: #fff; box-shadow: 0 2px 8px rgba(16,185,129,0.25); } .btn-primary:hover { box-shadow: 0 4px 14px rgba(16,185,129,0.3); transform: translateY(-1px); } .btn-green { background: var(--accent-green); color: var(--white); } .btn-green:hover { background: var(--accent-green-dim); } .btn-outline { background: var(--white); color: var(--navy); border: 1.5px solid var(--gray-200); } .btn-outline:hover { border-color: var(--navy); background: var(--gray-50); } .btn-ghost { background: var(--gray-100); color: var(--gray-700); } .btn-ghost:hover { background: var(--gray-200); } .btn-danger { background: var(--red-light); color: var(--red); } .btn-danger:hover { background: #fecaca; } .btn-sm { padding: 0.375rem 0.75rem; font-size: 0.8rem; border-radius: 6px; } .btn-lg { padding: 0.8rem 1.75rem; font-size: 1rem; border-radius: 10px; } /* ── BADGES ── */ .badge { display: inline-block; padding: 0.2rem 0.625rem; border-radius: 100px; font-size: 0.72rem; font-weight: 600; line-height: 1.4; } .badge-green { background: var(--green-light); color: #065f46; } .badge-red { background: var(--red-light); color: #991b1b; } .badge-blue { background: var(--blue-light); color: #1d4ed8; } .badge-amber { background: var(--amber-light); color: #92400e; } .badge-gray { background: var(--gray-100); color: var(--gray-600); } .badge-navy { background: linear-gradient(135deg, var(--accent-green), var(--teal)); color: #fff; } /* ── STAT CARDS ── */ .stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 2rem; } .stat-card { background: var(--white); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: 1.25rem 1.5rem; } .stat-label { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gray-400); margin-bottom: 0.5rem; } .stat-value { font-family: 'Space Grotesk', sans-serif; font-size: 1.75rem; font-weight: 700; color: var(--navy); line-height: 1; } .stat-value.green { color: var(--accent-green); } .stat-value.red { color: var(--red); } .stat-sub { font-size: 0.75rem; color: var(--gray-400); margin-top: 0.35rem; } /* ── DATA TABLE ── */ .data-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; } .data-table th { text-align: left; padding: 0.75rem 1rem; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gray-400); border-bottom: 2px solid var(--gray-200); background: var(--gray-50); } .data-table td { padding: 0.9rem 1rem; border-bottom: 1px solid var(--gray-100); color: var(--gray-700); vertical-align: middle; } .data-table tr:last-child td { border-bottom: none; } .data-table tr:hover td { background: var(--gray-50); } .data-table .ticker-col { font-family: 'Space Grotesk', sans-serif; font-weight: 700; color: var(--navy); font-size: 0.9rem; } .risks-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; } .risks-table th { text-align: left; padding: 0.75rem 1rem; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gray-400); border-bottom: 2px solid var(--gray-200); background: var(--gray-50); } .risks-table td { padding: 0.9rem 1rem; border-bottom: 1px solid var(--gray-100); vertical-align: top; color: var(--gray-700); line-height: 1.6; } .risks-table td:first-child { font-weight: 600; color: var(--navy); white-space: nowrap; } .risks-table tr:last-child td { border-bottom: none; } .risks-table tr:hover td { background: var(--gray-50); } /* ── FORMS ── */ .form-group { margin-bottom: 1.1rem; } .form-label { display: block; font-size: 0.8rem; font-weight: 600; color: var(--gray-600); margin-bottom: 0.4rem; } .form-input, .form-select, .form-textarea { width: 100%; padding: 0.65rem 0.9rem; border: 1.5px solid var(--gray-200); border-radius: 8px; font-size: 0.875rem; font-family: inherit; color: var(--gray-800); background: var(--white); transition: border-color 0.15s, box-shadow 0.15s; -webkit-appearance: none; } .form-input:focus, .form-select:focus, .form-textarea:focus { outline: none; border-color: var(--accent-green); box-shadow: 0 0 0 3px rgba(16,185,129,0.1); } .form-textarea { resize: vertical; min-height: 80px; } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; } .form-actions { display: flex; gap: 0.75rem; justify-content: flex-end; margin-top: 1.5rem; } /* ── EMPTY STATE ── */ .empty-state { text-align: center; padding: 4rem 2rem; } .empty-icon { font-size: 2.5rem; margin-bottom: 1rem; opacity: 0.5; } .empty-title { font-family: 'Space Grotesk', sans-serif; font-size: 1.2rem; font-weight: 700; color: var(--navy); margin-bottom: 0.5rem; } .empty-text { font-size: 0.9rem; color: var(--gray-400); margin-bottom: 1.5rem; line-height: 1.6; } /* ── SUB NAV ── */ .sub-nav { display: flex; gap: 0.25rem; margin-bottom: 2rem; border-bottom: 1px solid var(--gray-200); } .sub-nav a { padding: 0.65rem 1.25rem; font-size: 0.875rem; font-weight: 500; color: var(--gray-500); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: all 0.15s; } .sub-nav a:hover { color: var(--navy); } .sub-nav a.active { color: var(--navy); font-weight: 600; border-bottom-color: var(--accent-green); } /* ── MODAL ── */ .modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 200; align-items: center; justify-content: center; backdrop-filter: blur(4px); } .modal-overlay.open { display: flex; } .modal { background: var(--white); border-radius: var(--radius-xl); padding: 2rem; width: 100%; max-width: 520px; max-height: 90vh; overflow-y: auto; box-shadow: var(--shadow-lg); } .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.5rem; } .modal-title { font-family: 'Space Grotesk', sans-serif; font-size: 1.25rem; font-weight: 700; color: var(--navy); } .modal-close { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: var(--gray-400); line-height: 1; padding: 0; } .modal-close:hover { color: var(--gray-700); } /* ── FOOTER ── */ footer { background: var(--gray-50); color: var(--gray-500); padding: 3.5rem 2rem 2rem; margin-top: 5rem; border-top: 1px solid var(--gray-100); } .footer-inner { max-width: 1200px; margin: 0 auto; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; padding-bottom: 2.5rem; border-bottom: 1px solid var(--gray-200); margin-bottom: 2rem; } .footer-brand .footer-logo { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 1.1rem; color: var(--navy); text-decoration: none; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.875rem; } .footer-brand .footer-logo-icon { width: 28px; height: 28px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .footer-brand .footer-logo-icon svg { width: 28px; height: 28px; display: block; } .footer-brand p { font-size: 0.82rem; color: var(--gray-500); line-height: 1.7; max-width: 240px; } .footer-col-title { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--gray-400); margin-bottom: 1rem; } .footer-links { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; } .footer-links a { font-size: 0.82rem; color: var(--gray-500); text-decoration: none; transition: color 0.15s; } .footer-links a:hover { color: var(--accent-green); } .footer-bottom { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; } .footer-bottom p { font-size: 0.78rem; color: var(--gray-500); } .footer-legal { display: flex; gap: 1.25rem; } .footer-legal a { font-size: 0.78rem; color: var(--gray-500); text-decoration: none; transition: color 0.15s; } .footer-legal a:hover { color: var(--navy); } /* ── RESPONSIVE ── */ @media (max-width: 1100px) { .nav-mega-links { gap: 0.05rem; } .nav-mega-trigger { padding: 0.375rem 0.5rem; font-size: 0.8rem; } .footer-grid { grid-template-columns: 1fr 1fr 1fr; } .footer-brand { grid-column: 1 / -1; } .stat-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 900px) { .nav-mega-links { display: none; } .nav-mega-links.open { display: flex; flex-direction: column; position: absolute; top: 64px; left: 0; right: 0; background: #fff; border-bottom: 1px solid var(--gray-200); padding: 0.5rem 0; box-shadow: 0 8px 24px rgba(15,23,42,0.08); z-index: 999; max-height: 80vh; overflow-y: auto; } .nav-mega-item { width: 100%; border-bottom: 1px solid var(--gray-100); } .nav-mega-item:last-child { border-bottom: none; } .nav-mega-trigger { width: 100%; justify-content: space-between; padding: 0.75rem 1.25rem; font-size: 0.9rem; font-weight: 600; border-radius: 0; } .nav-mega-panel { display: none; position: static; transform: none; box-shadow: none; border: none; border-radius: 0; border-top: 1px solid var(--gray-100); padding: 0.75rem 1.25rem 1rem; min-width: 0; animation: none; background: var(--gray-50); } .nav-mega-panel.open { display: block; } .nav-mega-panel.wide { min-width: 0; } .mega-cols { grid-template-columns: 1fr; gap: 0.875rem; } .mega-cols-2, .mega-cols-3, .mega-cols-4 { grid-template-columns: 1fr; } .mega-ai-row { grid-column: 1; } .mega-ai-form { flex-direction: column; } .mega-ai-input { width: 100%; } .mega-ai-btn { width: 100%; justify-content: center; } .nav-edge-cta { display: flex; justify-content: center; margin: 0.625rem 1.25rem; } .nav-mobile-btn { display: flex; } /* Legacy mobile compat */ .nav-links { display: none; } .nav-links.open { display: flex; flex-direction: column; position: absolute; top: 64px; left: 0; right: 0; background: var(--white); border-bottom: 1px solid var(--gray-200); padding: 1rem 2rem; gap: 0.25rem; box-shadow: var(--shadow-md); z-index: 99; } .nav-links.open li { width: 100%; } .nav-links.open a { display: block; padding: 0.5rem 0; font-size: 0.9rem; } .page-title { font-size: 2.1rem; } .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; } } @media (max-width: 600px) { .page-title { font-size: 1.75rem; } .stat-grid { grid-template-columns: 1fr 1fr; } .footer-grid { grid-template-columns: 1fr; gap: 1.5rem; } .footer-bottom { flex-direction: column; align-items: flex-start; gap: 0.5rem; } .form-row { grid-template-columns: 1fr; } } /* ── Data Freshness Badge ─────────────────────────────────────────── */ .dfb-badge { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.22rem 0.7rem; border-radius: 100px; font-size: 0.72rem; font-weight: 600; cursor: pointer; user-select: none; transition: opacity 0.15s; border: 1px solid; position: relative; text-decoration: none; } .dfb-loading { background:rgba(100,116,139,0.1); border-color:rgba(100,116,139,0.2); color:#64748b; } .dfb-green { background:rgba(16,185,129,0.12); border-color:rgba(16,185,129,0.3); color:#10b981; } .dfb-yellow { background:rgba(245,158,11,0.1); border-color:rgba(245,158,11,0.3); color:#f59e0b; } .dfb-red { background:rgba(239,68,68,0.1); border-color:rgba(239,68,68,0.3); color:#ef4444; } .dfb-dot { width:7px; height:7px; border-radius:50%; background:currentColor; flex-shrink:0; } .dfb-loading .dfb-dot { animation: dfb-pulse 1.5s ease-in-out infinite; } @keyframes dfb-pulse { 0%,100%{opacity:0.3} 50%{opacity:1} } .dfb-tooltip { position:absolute; top:calc(100% + 8px); left:50%; transform:translateX(-50%); background:var(--white); border:1px solid var(--gray-200); border-radius:10px; padding:0.75rem 0.875rem; min-width:270px; max-width:340px; z-index:9999; box-shadow:0 8px 32px rgba(15,23,42,0.12); text-align:left; white-space:normal; pointer-events:none; } .dfb-tooltip.dfb-tip-open { pointer-events:auto; } .dfb-tooltip.dfb-hidden { display:none; } .dfb-tip-head { font-size:0.7rem; font-weight:700; color:var(--gray-400); text-transform:uppercase; letter-spacing:0.07em; margin-bottom:0.5rem; } .dfb-tip-row { display:flex; justify-content:space-between; align-items:center; padding:0.2rem 0; font-size:0.75rem; color:var(--gray-700); gap:0.5rem; border-bottom:1px solid var(--gray-100); } .dfb-tip-row:last-of-type { border-bottom:none; } .dfb-tip-meta { color:var(--gray-400); font-size:0.69rem; white-space:nowrap; } .dfb-tip-footer { margin-top:0.6rem; padding-top:0.5rem; border-top:1px solid var(--gray-100); } .dfb-tip-footer a { color:#10b981; font-size:0.75rem; text-decoration:none; font-weight:600; } .dfb-stale-notice { display:none; margin-top:0.75rem; padding:0.6rem 0.875rem; background:rgba(239,68,68,0.06); border:1px solid rgba(239,68,68,0.2); border-radius:8px; font-size:0.8rem; color:#ef4444; line-height:1.5; } .dfb-stale-notice a { color:#ef4444; font-weight:600; }
Not all SBA lenders are equal. Speed, loan size, industry focus, and fee structure vary widely. Compare the top options — from fintech marketplaces to PLP banks to franchise specialists.
Filter by lender type, loan size, or speed to find your best match.
| Lender | Programs | Loan Range | Speed | Rating | Action |
|---|---|---|---|---|---|
| SmartBiz Fintech Marketplace | 7(a) | $30K – $5M | 30–45 days |
★★★★★
4.6 / 5
|
Check Eligibility → |
| Lendio Multi-Lender Marketplace | 7(a), 504, Microloan | $500 – $5M | Varies by lender |
★★★★☆
4.4 / 5
|
Check Eligibility → |
| Live Oak Bank PLP Bank | 7(a), 504 | $100K – $25M | 45–60 days |
★★★★★
4.7 / 5
|
Check Eligibility → |
| Celtic Bank PLP Bank | 7(a), Express | $25K – $5M | 30–45 days |
★★★★☆
4.3 / 5
|
Check Eligibility → |
| Newtek PLP Bank | 7(a) | $25K – $5M | 45–60 days |
★★★★☆
4.2 / 5
|
Check Eligibility → |
| FranFund Franchise Specialist | 7(a), ROBS | $10K – $5M | 30–60 days |
★★★★★
4.5 / 5
|
Check Eligibility → |
| Benetrends Franchise + Retirement Specialist | 7(a), ROBS, 401k Rollover | $50K – $5M | 30–45 days |
★★★★☆
4.4 / 5
|
Check Eligibility → |
Ratings based on FinanceStackHub editorial analysis of loan volume, borrower reviews, program breadth, and speed. [LAST UPDATED: April 2026]
Pros, cons, requirements, and who each lender is best for.
SmartBiz is a fintech marketplace that connects borrowers with SBA 7(a) lenders through a streamlined digital application. Known for fast pre-qualification and a tech-first process that reduces paperwork friction.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Lendio is the largest small business loan marketplace in the US, with 75+ lenders on platform. One application surfaces competing SBA offers so you can compare terms. Covers 7(a), 504, and Microloan programs.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Live Oak Bank is a Preferred Lender Program (PLP) bank and one of the top SBA lenders by volume in the US. Specializes in specific industries with dedicated underwriters per vertical. Consistently in the top 5 SBA lenders nationally.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Celtic Bank is a Utah-based PLP bank and one of the top 10 SBA 7(a) lenders nationally. Known for competitive terms on mid-market deals and a strong SBA Express program for faster working capital needs.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Newtek Business Services (formerly NewtekOne) is a PLP bank offering SBA 7(a) loans bundled with business services including payroll, insurance, and cloud solutions. A good fit for businesses that want banking + services from one provider.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
FranFund specializes exclusively in franchise financing — SBA 7(a) and Rollover for Business Startups (ROBS) plans. Deep expertise in SBA franchise directory navigation, FDD analysis, and lender-franchisor relationships.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Benetrends pioneered the ROBS (Rollover for Business Startups) structure and remains a top provider. Ideal for franchise buyers who want to use 401(k) or IRA funds to capitalize a new franchise without paying early withdrawal penalties.
FinanceStackHub may receive compensation if you apply through our link. This does not affect our editorial rankings.
Straight answers to the most common questions about SBA lenders.
An SBA Preferred Lender Program (PLP) lender has delegated authority to approve SBA loans in-house, without sending the loan file to the SBA for review. This speeds up the approval process significantly — PLP lenders typically close 7(a) loans in 30–45 days versus 60–90 days for standard SBA review. Live Oak Bank, Celtic Bank, and Newtek are all PLP lenders. When speed matters, working with a PLP lender is the single most impactful choice you can make.
For the fastest SBA loan, look at three options: (1) SBA Express through a PLP lender — 36-hour SBA response commitment, though full closing still takes 30–60 days. Celtic Bank is a strong option here. (2) SmartBiz — technology-driven application that can pre-qualify in minutes and close in 30–45 days. (3) Lendio — marketplace that matches you with lenders competing for your deal, which can accelerate timelines. For SBA 7(a) standard loans, any PLP bank is 2–4 weeks faster than a non-PLP lender.
SmartBiz is better if you want a single, streamlined digital application with dedicated SBA specialists guiding you through. Lendio is better if you want to compare multiple lender offers simultaneously — one application goes to 75+ lenders. SmartBiz focuses exclusively on SBA 7(a) and generally offers a more curated experience. Lendio covers 7(a), 504, and Microloans. If you're shopping for the best rate and don't mind handling multiple conversations, Lendio wins. If you want a cleaner, faster process with less back-and-forth, SmartBiz is the call.
Most SBA 7(a) lenders require 2+ years in business. For startups and newer businesses, the best options are: (1) SBA Microloan — available to startups with 0 months in business, administered by nonprofit intermediaries. (2) Lendio — some lenders in their network accept businesses as young as 6 months. (3) FranFund and Benetrends — if you're buying a franchise, startup businesses qualify because the franchisor track record substitutes for your personal business history. (4) SBA Express — some lenders accept 1 year with strong personal financials.
FranFund and Benetrends both specialize exclusively in franchise financing. FranFund offers SBA 7(a) with deep expertise in the SBA franchise directory and lender-franchisor relationships. Benetrends pioneered the ROBS (Rollover for Business Startups) structure, allowing you to use 401(k) or IRA funds to capitalize a franchise without early withdrawal penalties — and can stack ROBS with an SBA 7(a) loan to reduce the cash injection required. Both are strong options for anyone acquiring a franchise for the first time.
You can use either. All SBA loans must go through an SBA-approved lender — this can be a traditional bank (like Live Oak Bank or Celtic Bank), a fintech marketplace (like SmartBiz or Lendio), or a specialist (like FranFund). The SBA approval process is the same regardless of lender type. Fintech options typically offer faster digital applications and more transparent pricing. Traditional banks often have stronger relationships with specific industries. The right choice depends on your loan size, business type, and how much you value speed vs. breadth of options.
Market pulse, stock spotlights, and actionable frameworks — delivered every week.
No spam · Unsubscribe anytime · View all issues →