: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; }
Goldman Sachs Marcus holds the APY edge (~3.90%). Ally Bank leads on features, app quality, and checking integration. Here's what actually matters for your savings decision.
Current rates as of May 2026. Both accounts have $0 minimum deposit and $0 monthly fees. FDIC insured up to $250,000.
Side-by-side on every dimension that matters for a high-yield savings account. Rates as of May 2026.
| Category | Marcus by Goldman Sachs | Ally Bank |
|---|---|---|
| APY (May 2026) | ~3.90% WINS | 3.10–3.30% |
| Monthly Fee | $0 TIE | $0 |
| Minimum Opening Deposit | $0 TIE | $0 |
| Minimum Balance for APY | None TIE | None |
| FDIC Insurance | Up to $250K TIE | Up to $250K |
| Checking Account | No | Yes (360 Checking) WINS |
| Debit Card | No | Yes WINS |
| Mobile Check Deposit | No | Yes WINS |
| Savings Buckets/Goals | No | Yes (Savings Buckets) WINS |
| Auto-Transfer Feature | No | Yes (Surprise Savings) WINS |
| Transfer Speed | Same-day up to $100K WINS | Standard 1–3 business days |
| CD Options | Yes (3-mo to 6-yr) TIE | Yes (3-mo to 5-yr) |
| IRA Savings Account | No | Yes (IRA Savings) WINS |
| Customer Service | Phone + Chat | 24/7 Phone + Chat WINS |
| App Rating (combined) | 4.5/5 ★ | 4.8/5 ★ WINS |
| Brand Behind It | Goldman Sachs TIE | Ally Financial |
Sources: Marcus.com, Ally.com, investormint.com, bankbonus.com, Apple App Store as of May 2026. Rates are variable.
Marcus by Goldman Sachs and Ally Bank attract different savers for different reasons, which is exactly why they end up compared. Marcus is the obvious choice for anyone who cares primarily about yield and brand trust — it consistently holds one of the highest APYs among major online banks, and the Goldman Sachs name carries weight for people who are uncomfortable with unfamiliar fintech brands. Ally is the obvious choice for anyone who wants a complete banking experience — savings, checking, CDs, IRAs, debit card, and mobile deposit all in one app that earns 4.8 stars.
The honest answer is: if your emergency fund is under $25,000 and you value features, choose Ally. If your emergency fund or savings balance exceeds $25,000 and yield is the primary driver, the $150–300 annual difference in Marcus's favor starts to matter. At $100,000, Marcus earns ~$600 more per year than Ally — that is not trivial.
Marcus offers same-day ACH transfers to and from linked external accounts up to $100,000. Ally's standard transfers take 1–3 business days. For emergency funds, this matters. If you need $8,000 for an unexpected car repair, Marcus gets it to your checking account the same day. Ally makes you wait until the next business day at minimum. That said, Ally's checking account integration means you have immediate access to funds within the Ally ecosystem — which is the better solution for most people who consolidate banking.
Behavioral finance research consistently shows that mental accounting — categorizing money by purpose — increases savings rates and reduces unnecessary withdrawals. Ally Savings Buckets operationalizes this: you divide your one savings account into up to 30 named "buckets" (Emergency Fund, Car Insurance, Vacation, etc.), each with a target amount and progress bar. Your money earns the same APY across all buckets — it is not separate accounts, just an interface layer that helps you think differently about the money.
Marcus does not offer this. If you are the type of person who has ever dipped into your savings account for non-emergency spending because you lost track of what the money was for — Ally Savings Buckets is the feature that pays for the lower APY. If you have iron discipline and treat your savings as untouchable, it does not matter and Marcus's yield wins.
There is no rule that says you can only have one HYSA. A growing number of savers hold both: an Ally account for everyday banking, Savings Buckets goal management, and debit card access — and a Marcus account for parking the bulk of their savings balance to maximize yield. This dual-account strategy also doubles your FDIC coverage: $250,000 per institution means $500,000 total coverage across both accounts.
The only downside is management complexity — monitoring two accounts and coordinating transfers. For most people with $50,000+ in savings, the APY optimization at Marcus on the bulk balance is worth it. For most people with under $20,000 in savings, the simplicity of a single full-featured account at Ally wins.
Common questions about Marcus by Goldman Sachs vs. Ally Bank savings accounts.
Market pulse, stock spotlights, and actionable frameworks — delivered every week.
No spam · Unsubscribe anytime · View all issues →