Files
invest-copilot/design-systems/financial/mobile-dashboard.html
T

639 lines
26 KiB
HTML
Raw Normal View History

2026-05-30 11:28:59 -04:00
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="theme-color" content="#0c0b14" />
<title>Invest Copilot</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg-deep: #0c0b14;
--bg-surface: #131220;
--bg-raised: #1a1930;
--bg-hover: #222140;
--border-subtle: rgba(255,255,255,0.06);
--border-default: rgba(255,255,255,0.10);
--text-primary: #f1f0f7;
--text-secondary: #8b87a3;
--text-tertiary: #5c5878;
--accent-start: #6366f1;
--accent-end: #a855f7;
--positive: #34d399;
--positive-dim: rgba(52,211,153,0.10);
--negative: #f87171;
--negative-dim: rgba(248,113,113,0.10);
--warning: #fbbf24;
--warning-dim: rgba(251,191,36,0.10);
--gradient-accent: linear-gradient(135deg, #6366f1, #a855f7);
--gradient-positive: linear-gradient(135deg, #34d399, #22d3ee);
--radius-sm: 8px;
--radius-md: 12px;
--radius-lg: 16px;
--radius-xl: 20px;
--radius-full: 9999px;
}
html { font-size: 16px; }
body {
font-family: 'Inter', -apple-system, sans-serif;
background: var(--bg-deep);
color: var(--text-primary);
line-height: 1.5;
min-height: 100vh;
min-height: 100dvh;
padding-bottom: 76px;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
.mono { font-family: 'JetBrains Mono', monospace; }
/* Header */
.header {
padding: 16px 20px 12px;
display: flex;
align-items: center;
justify-content: space-between;
}
.header__left { display: flex; align-items: center; gap: 12px; }
.header__logo {
width: 36px; height: 36px;
background: var(--gradient-accent);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
box-shadow: 0 0 16px rgba(99,102,241,0.3);
}
.header__logo svg { width: 20px; height: 20px; }
.header__title { font-size: 1.125rem; font-weight: 700; letter-spacing: -0.01em; }
.header__actions { display: flex; gap: 8px; }
.header__btn {
width: 40px; height: 40px;
border-radius: var(--radius-sm);
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
display: flex; align-items: center; justify-content: center;
color: var(--text-secondary);
}
.header__btn svg { width: 18px; height: 18px; }
.header__btn .dot {
position: absolute; top: 6px; right: 6px;
width: 7px; height: 7px;
background: var(--negative);
border-radius: 50%;
border: 2px solid var(--bg-surface);
}
/* Search */
.search {
margin: 0 20px 20px;
position: relative;
}
.search__input {
width: 100%;
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: 12px 16px 12px 42px;
color: var(--text-primary);
font-size: 0.875rem;
font-family: 'Inter', sans-serif;
outline: none;
-webkit-appearance: none;
}
.search__input::placeholder { color: var(--text-tertiary); }
.search__input:focus { border-color: var(--accent-start); }
.search__icon {
position: absolute; left: 14px; top: 50%;
transform: translateY(-50%);
width: 16px; height: 16px;
color: var(--text-tertiary);
}
/* Content */
.content {
padding: 0 20px;
display: flex;
flex-direction: column;
gap: 20px;
}
/* Hero Card */
.hero-card {
background: linear-gradient(135deg, rgba(99,102,241,0.08), rgba(168,85,247,0.08));
border: 1px solid rgba(99,102,241,0.15);
border-radius: var(--radius-lg);
padding: 24px 20px;
text-align: center;
}
.hero-card__label { font-size: 0.75rem; color: var(--text-secondary); font-weight: 500; margin-bottom: 4px; }
.hero-card__value {
font-size: 2.25rem;
font-weight: 800;
letter-spacing: -0.03em;
line-height: 1;
margin-bottom: 6px;
}
.hero-card__change {
display: inline-flex; align-items: center; gap: 5px;
padding: 5px 12px;
border-radius: var(--radius-full);
font-size: 0.8125rem;
font-weight: 600;
font-family: 'JetBrains Mono', monospace;
background: var(--positive-dim);
color: var(--positive);
}
.hero-card__change svg { width: 13px; height: 13px; }
.hero-card__meta {
display: flex; justify-content: center; gap: 28px; margin-top: 16px;
}
.hero-card__meta-item { text-align: center; }
.hero-card__meta-val { font-size: 0.875rem; font-weight: 600; font-family: 'JetBrains Mono', monospace; }
.hero-card__meta-label { font-size: 0.625rem; color: var(--text-tertiary); margin-top: 1px; }
/* Quick Actions */
.quick-actions {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.quick-action {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: 16px 12px;
text-align: center;
transition: transform 100ms, background 150ms;
-webkit-tap-highlight-color: transparent;
}
.quick-action:active { transform: scale(0.96); background: var(--bg-raised); }
.quick-action__icon {
width: 40px; height: 40px;
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
margin: 0 auto 8px;
}
.quick-action__icon svg { width: 18px; height: 18px; }
.quick-action__icon--accent { background: rgba(99,102,241,0.12); color: var(--accent-start); }
.quick-action__icon--positive { background: var(--positive-dim); color: var(--positive); }
.quick-action__icon--warning { background: var(--warning-dim); color: var(--warning); }
.quick-action__label { font-size: 0.6875rem; font-weight: 500; color: var(--text-secondary); }
/* Mini Chart */
.chart-card {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-lg);
padding: 16px;
}
.chart-card__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.chart-card__title { font-size: 0.875rem; font-weight: 600; }
.chart-card__badge {
font-size: 0.625rem;
padding: 3px 10px;
border-radius: var(--radius-full);
background: var(--bg-raised);
color: var(--text-secondary);
font-weight: 500;
}
.chart-card__svg { width: 100%; height: 120px; }
.chart-card__svg line.grid { stroke: var(--border-subtle); stroke-width: 0.5; stroke-dasharray: 4 4; }
.chart-card__svg text { fill: var(--text-tertiary); font-size: 9px; font-family: 'JetBrains Mono', monospace; }
.chart-card__svg .area-fill { fill: url(#mChartGrad); opacity: 0.3; }
.chart-card__svg .chart-line { fill: none; stroke: url(#mLineGrad); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
/* Section */
.section-header { display: flex; justify-content: space-between; align-items: center; }
.section-title { font-size: 0.9375rem; font-weight: 600; }
.section-link { font-size: 0.6875rem; color: var(--accent-start); font-weight: 500; }
/* Watchlist */
.watchlist { display: flex; flex-direction: column; gap: 8px; }
.watchlist-item {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: 14px;
display: flex; align-items: center; gap: 12px;
transition: background 150ms;
-webkit-tap-highlight-color: transparent;
}
.watchlist-item:active { background: var(--bg-raised); }
.watchlist-item__icon {
width: 36px; height: 36px;
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 0.6875rem; font-weight: 700;
font-family: 'JetBrains Mono', monospace;
flex-shrink: 0;
}
.watchlist-item__icon--green { background: var(--positive-dim); color: var(--positive); }
.watchlist-item__icon--accent { background: rgba(99,102,241,0.12); color: var(--accent-start); }
.watchlist-item__icon--purple { background: rgba(168,85,247,0.12); color: var(--accent-end); }
.watchlist-item__info { flex: 1; min-width: 0; }
.watchlist-item__name { font-size: 0.8125rem; font-weight: 600; }
.watchlist-item__ticker { font-size: 0.625rem; color: var(--text-tertiary); font-family: 'JetBrains Mono', monospace; }
.watchlist-item__price { text-align: right; flex-shrink: 0; }
.watchlist-item__price-val { font-family: 'JetBrains Mono', monospace; font-size: 0.8125rem; font-weight: 600; }
.change-pill {
display: inline-flex; align-items: center; gap: 2px;
padding: 2px 6px;
border-radius: var(--radius-full);
font-size: 0.625rem;
font-weight: 600;
font-family: 'JetBrains Mono', monospace;
}
.change-pill--positive { background: var(--positive-dim); color: var(--positive); }
.change-pill--negative { background: var(--negative-dim); color: var(--negative); }
.change-pill svg { width: 8px; height: 8px; }
/* Heatmap scroll */
.heatmap-scroll {
display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px;
-webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.heatmap-scroll::-webkit-scrollbar { display: none; }
.heatmap-cell {
min-width: 80px;
border-radius: var(--radius-sm);
padding: 14px;
display: flex; flex-direction: column;
align-items: center; justify-content: center; gap: 2px;
flex-shrink: 0;
transition: transform 100ms;
}
.heatmap-cell:active { transform: scale(0.95); }
.heatmap-cell .label { font-size: 0.6875rem; font-weight: 700; font-family: 'JetBrains Mono', monospace; }
.heatmap-cell .value { font-size: 0.75rem; font-weight: 600; font-family: 'JetBrains Mono', monospace; }
.heatmap-cell--strong-pos { background: rgba(52,211,153,0.15); color: var(--positive); }
.heatmap-cell--pos { background: rgba(52,211,153,0.08); color: var(--positive); }
.heatmap-cell--neutral { background: rgba(255,255,255,0.03); color: var(--text-secondary); }
.heatmap-cell--neg { background: rgba(248,113,113,0.08); color: var(--negative); }
.heatmap-cell--strong-neg { background: rgba(248,113,113,0.15); color: var(--negative); }
/* Alerts */
.alert-item {
display: flex; align-items: flex-start; gap: 10px;
padding: 12px 14px;
border-radius: var(--radius-sm);
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
transition: all 150ms;
}
.alert-item--unread { border-left: 3px solid var(--accent-start); }
.alert-item__dot {
width: 8px; height: 8px; border-radius: 50%; margin-top: 4px; flex-shrink: 0;
}
.alert-item__dot--accent { background: var(--accent-start); box-shadow: 0 0 6px rgba(99,102,241,0.4); }
.alert-item__dot--warning { background: var(--warning); }
.alert-item__dot--positive { background: var(--positive); }
.alert-item__content { flex: 1; }
.alert-item__title { font-size: 0.75rem; font-weight: 500; line-height: 1.3; }
.alert-item__time { font-size: 0.5625rem; color: var(--text-tertiary); font-family: 'JetBrains Mono', monospace; white-space: nowrap; margin-top: 2px; }
/* Bottom Nav */
.bottom-nav {
position: fixed; bottom: 0; left: 0; right: 0;
background: rgba(19,18,32,0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-top: 1px solid var(--border-subtle);
padding: 8px 0;
padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));
z-index: 100;
}
.bottom-nav__items { display: flex; justify-content: space-around; }
.bottom-nav__item {
display: flex; flex-direction: column; align-items: center; gap: 3px;
padding: 6px 16px;
color: var(--text-tertiary);
font-size: 0.5625rem; font-weight: 500;
transition: color 150ms;
}
.bottom-nav__item svg { width: 22px; height: 22px; }
.bottom-nav__item--active { color: var(--accent-start); }
.bottom-nav__item:active { opacity: 0.6; }
/* Gradient defs */
svg defs linearGradient { display: block; }
</style>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="header__left">
<div class="header__logo">
<svg viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2">
<polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/>
<polyline points="16 7 22 7 22 13"/>
</svg>
</div>
<span class="header__title">Invest Copilot</span>
</div>
<div class="header__actions">
<button class="header__btn" style="position:relative" aria-label="Notifications">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
<path d="M13.73 21a2 2 0 0 1-3.46 0"/>
</svg>
<span class="dot"></span>
</button>
</div>
</header>
<!-- Search -->
<div class="search">
<svg class="search__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>
</svg>
<input class="search__input" type="text" placeholder="Search AAPL, NVDA, QQQ..." />
</div>
<!-- Content -->
<div class="content">
<!-- Hero -->
<div class="hero-card">
<div class="hero-card__label">Portfolio Value</div>
<div class="hero-card__value">$147,832</div>
<div class="hero-card__change">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="18 15 12 9 6 15"/></svg>
+$2,341 (1.61%)
</div>
<div class="hero-card__meta">
<div class="hero-card__meta-item">
<div class="hero-card__meta-val" style="color:var(--positive)">+$1,204</div>
<div class="hero-card__meta-label">Today</div>
</div>
<div class="hero-card__meta-item">
<div class="hero-card__meta-val">12</div>
<div class="hero-card__meta-label">Positions</div>
</div>
<div class="hero-card__meta-item">
<div class="hero-card__meta-val" style="color:var(--warning)">3</div>
<div class="hero-card__meta-label">Alerts</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="quick-actions">
<div class="quick-action">
<div class="quick-action__icon quick-action__icon--accent">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/>
</svg>
</div>
<span class="quick-action__label">Watchlist</span>
</div>
<div class="quick-action">
<div class="quick-action__icon quick-action__icon--positive">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"/>
<polyline points="17 6 23 6 23 12"/>
</svg>
</div>
<span class="quick-action__label">Stocks</span>
</div>
<div class="quick-action">
<div class="quick-action__icon quick-action__icon--warning">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<rect x="3" y="3" width="18" height="18" rx="2"/>
<line x1="3" y1="9" x2="21" y2="9"/>
<line x1="9" y1="21" x2="9" y2="9"/>
</svg>
</div>
<span class="quick-action__label">Sectors</span>
</div>
</div>
<!-- Chart -->
<div class="chart-card">
<div class="chart-card__header">
<span class="chart-card__title">Portfolio</span>
<span class="chart-card__badge">3M</span>
</div>
<svg class="chart-card__svg" viewBox="0 0 320 120" preserveAspectRatio="none">
<defs>
<linearGradient id="mLineGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#6366f1"/>
<stop offset="100%" style="stop-color:#a855f7"/>
</linearGradient>
<linearGradient id="mChartGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#6366f1;stop-opacity:0.3"/>
<stop offset="100%" style="stop-color:#6366f1;stop-opacity:0"/>
</linearGradient>
</defs>
<line class="grid" x1="0" y1="30" x2="320" y2="30"/>
<line class="grid" x1="0" y1="60" x2="320" y2="60"/>
<line class="grid" x1="0" y1="90" x2="320" y2="90"/>
<text x="8" y="26">155K</text>
<text x="8" y="56">145K</text>
<text x="8" y="86">135K</text>
<path class="area-fill" d="M0,70 L40,64 80,58 120,52 160,44 200,40 240,34 280,30 320,24 L320,120 L0,120 Z"/>
<path class="chart-line" d="M0,70 L40,64 80,58 120,52 160,44 200,40 240,34 280,30 320,24"/>
<circle cx="320" cy="24" r="3" fill="#6366f1" stroke="#131220" stroke-width="2"/>
<text x="290" y="116">Sep 26</text>
<text x="8" y="116">May 26</text>
</svg>
</div>
<!-- Watchlist -->
<div>
<div class="section-header">
<span class="section-title">Watchlist</span>
<a href="#" class="section-link">View All →</a>
</div>
<div class="watchlist">
<div class="watchlist-item">
<div class="watchlist-item__icon watchlist-item__icon--green">A</div>
<div class="watchlist-item__info">
<div class="watchlist-item__name">Apple</div>
<div class="watchlist-item__ticker">AAPL</div>
</div>
<div class="watchlist-item__price">
<div class="watchlist-item__price-val">$189.43</div>
<span class="change-pill change-pill--positive">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="18 15 12 9 6 15"/></svg>
+2.4%
</span>
</div>
</div>
<div class="watchlist-item">
<div class="watchlist-item__icon watchlist-item__icon--accent">M</div>
<div class="watchlist-item__info">
<div class="watchlist-item__name">Microsoft</div>
<div class="watchlist-item__ticker">MSFT</div>
</div>
<div class="watchlist-item__price">
<div class="watchlist-item__price-val">$412.88</div>
<span class="change-pill change-pill--positive">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="18 15 12 9 6 15"/></svg>
+1.1%
</span>
</div>
</div>
<div class="watchlist-item">
<div class="watchlist-item__icon watchlist-item__icon--purple">N</div>
<div class="watchlist-item__info">
<div class="watchlist-item__name">NVIDIA</div>
<div class="watchlist-item__ticker">NVDA</div>
</div>
<div class="watchlist-item__price">
<div class="watchlist-item__price-val">$121.88</div>
<span class="change-pill change-pill--negative">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg>
−0.3%
</span>
</div>
</div>
<div class="watchlist-item">
<div class="watchlist-item__icon watchlist-item__icon--accent">G</div>
<div class="watchlist-item__info">
<div class="watchlist-item__name">Alphabet</div>
<div class="watchlist-item__ticker">GOOGL</div>
</div>
<div class="watchlist-item__price">
<div class="watchlist-item__price-val">$141.26</div>
<span class="change-pill change-pill--negative">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg>
−0.8%
</span>
</div>
</div>
<div class="watchlist-item">
<div class="watchlist-item__icon watchlist-item__icon--green">M</div>
<div class="watchlist-item__info">
<div class="watchlist-item__name">Meta</div>
<div class="watchlist-item__ticker">META</div>
</div>
<div class="watchlist-item__price">
<div class="watchlist-item__price-val">$502.30</div>
<span class="change-pill change-pill--positive">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="18 15 12 9 6 15"/></svg>
+0.5%
</span>
</div>
</div>
</div>
</div>
<!-- Sector Heatmap -->
<div>
<div class="section-header">
<span class="section-title">Sectors</span>
<a href="#" class="section-link">View All →</a>
</div>
<div class="heatmap-scroll">
<div class="heatmap-cell heatmap-cell--strong-pos">
<span class="label">XLK</span>
<span class="value">+8.2%</span>
</div>
<div class="heatmap-cell heatmap-cell--pos">
<span class="label">XLF</span>
<span class="value">+3.1%</span>
</div>
<div class="heatmap-cell heatmap-cell--pos">
<span class="label">XLY</span>
<span class="value">+2.8%</span>
</div>
<div class="heatmap-cell heatmap-cell--pos">
<span class="label">XLI</span>
<span class="value">+2.4%</span>
</div>
<div class="heatmap-cell heatmap-cell--pos">
<span class="label">XLV</span>
<span class="value">+1.5%</span>
</div>
<div class="heatmap-cell heatmap-cell--neutral">
<span class="label">XLP</span>
<span class="value">+0.3%</span>
</div>
<div class="heatmap-cell heatmap-cell--neg">
<span class="label">XLU</span>
<span class="value">−0.2%</span>
</div>
<div class="heatmap-cell heatmap-cell--neg">
<span class="label">XLE</span>
<span class="value">−1.8%</span>
</div>
<div class="heatmap-cell heatmap-cell--strong-neg">
<span class="label">XLR</span>
<span class="value">−3.4%</span>
</div>
</div>
</div>
<!-- Alerts -->
<div>
<div class="section-header">
<span class="section-title">Alerts</span>
<a href="#" class="section-link">View All →</a>
</div>
<div class="alert-list" style="display:flex;flex-direction:column;gap:8px;margin-top:12px;">
<div class="alert-item alert-item--unread">
<div class="alert-item__dot alert-item__dot--negative" style="background:var(--negative)"></div>
<div class="alert-item__content">
<div class="alert-item__title">NVDA below 200-day MA</div>
<div class="alert-item__time">14:27 · Today</div>
</div>
</div>
<div class="alert-item alert-item--unread">
<div class="alert-item__dot alert-item__dot--warning"></div>
<div class="alert-item__content">
<div class="alert-item__title">Sector rotation: Tech → Energy</div>
<div class="alert-item__time">13:45 · Today</div>
</div>
</div>
<div class="alert-item">
<div class="alert-item__dot alert-item__dot--positive"></div>
<div class="alert-item__content">
<div class="alert-item__title">AAPL insider buy — 5,000 shares</div>
<div class="alert-item__time">11:20 · Today</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bottom Nav -->
<nav class="bottom-nav">
<div class="bottom-nav__items">
<a href="#" class="bottom-nav__item bottom-nav__item--active">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<rect x="3" y="3" width="7" height="7" rx="1"/>
<rect x="14" y="3" width="7" height="7" rx="1"/>
<rect x="3" y="14" width="7" height="7" rx="1"/>
<rect x="14" y="14" width="7" height="7" rx="1"/>
</svg>
Home
</a>
<a href="#" class="bottom-nav__item">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>
</svg>
Search
</a>
<a href="#" class="bottom-nav__item">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/>
</svg>
Watchlists
</a>
<a href="#" class="bottom-nav__item">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
<path d="M13.73 21a2 2 0 0 1-3.46 0"/>
</svg>
Alerts
</a>
<a href="#" class="bottom-nav__item">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>
</svg>
Settings
</a>
</div>
</nav>
</body>
</html>