Prepare BizOne portal production wallet and UI

This commit is contained in:
2026-05-22 13:13:10 +07:00
parent 36be8607e0
commit 5144207c42
124 changed files with 11034 additions and 7720 deletions

View File

@ -0,0 +1,462 @@
<!DOCTYPE html><html class="light" lang="en" style=""><head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&amp;family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet">
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
.sidebar-active {
font-variation-settings: 'FILL' 1;
}
</style>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error": "#ffffff",
"surface-container-low": "#f5f3f7",
"inverse-surface": "#303033",
"on-tertiary-container": "#b67558",
"surface-dim": "#dbd9dd",
"on-tertiary-fixed-variant": "#6d3920",
"surface-container-highest": "#e3e2e6",
"secondary-fixed": "#c6e7ff",
"error": "#ba1a1a",
"error-container": "#ffdad6",
"secondary": "#00658d",
"inverse-primary": "#b1c6f9",
"on-tertiary-fixed": "#360f00",
"on-primary-fixed-variant": "#314671",
"surface-container-lowest": "#ffffff",
"on-error-container": "#93000a",
"surface-container": "#efedf1",
"tertiary-fixed": "#ffdbcd",
"secondary-fixed-dim": "#82cfff",
"surface-tint": "#495e8a",
"background": "#faf8fd",
"primary-container": "#001b44",
"on-secondary-container": "#004866",
"tertiary": "#080100",
"surface-variant": "#e3e2e6",
"primary-fixed-dim": "#b1c6f9",
"on-secondary-fixed": "#001e2d",
"on-background": "#1b1b1f",
"on-secondary-fixed-variant": "#004c6b",
"on-surface-variant": "#44474f",
"tertiary-fixed-dim": "#ffb596",
"on-secondary": "#ffffff",
"surface-bright": "#faf8fd",
"tertiary-container": "#381000",
"primary": "#00020a",
"surface-container-high": "#e9e7ec",
"on-primary-container": "#7084b3",
"on-primary-fixed": "#001a42",
"primary-fixed": "#d8e2ff",
"secondary-container": "#2dbcfe",
"on-tertiary": "#ffffff",
"outline": "#75777f",
"inverse-on-surface": "#f2f0f4",
"outline-variant": "#c5c6d0",
"surface": "#faf8fd",
"on-primary": "#ffffff",
"on-surface": "#1b1b1f"
},
"borderRadius": {
"DEFAULT": "0.25rem",
"lg": "0.5rem",
"xl": "0.75rem",
"full": "9999px"
},
"spacing": {
"xl": "40px",
"margin-page": "32px",
"xs": "4px",
"unit": "4px",
"sm": "8px",
"md": "16px",
"lg": "24px",
"gutter": "24px"
},
"fontFamily": {
"headline-md-mobile": ["Plus Jakarta Sans"],
"title-lg": ["Plus Jakarta Sans"],
"body-sm": ["Plus Jakarta Sans"],
"body-md": ["Plus Jakarta Sans"],
"label-md": ["Plus Jakarta Sans"],
"display-lg": ["Plus Jakarta Sans"],
"headline-md": ["Plus Jakarta Sans"]
},
"fontSize": {
"headline-md-mobile": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"title-lg": ["18px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"body-md": ["16px", {"lineHeight": "24px", "fontWeight": "400"}],
"label-md": ["12px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "600"}],
"display-lg": ["36px", {"lineHeight": "44px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"headline-md": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.01em", "fontWeight": "600"}]
}
},
},
}
</script>
<style data-stitch-cursor=""></style><style data-stitch-scroll-lock=""></style></head>
<body class="bg-background text-on-surface font-body-md">
<!-- SideNavBar Shell -->
<aside class="fixed left-0 top-0 h-screen w-[280px] border-r border-outline-variant flex flex-col z-50 bg-primary-container">
<div class="px-lg bg-white flex items-center justify-start w-full h-[72px]" style="height: 72px; background-color: rgb(255, 255, 255);"><div class="flex items-center justify-start w-full h-full"><img src="{{DATA:IMAGE:IMAGE_9}}" alt="BizOne Logo" class="max-h-[40px] w-auto"></div></div>
<nav class="flex-1 space-y-xs px-md mt-lg mt-8">
<!-- Dashboard (Active) -->
<a class="flex items-center gap-md px-md py-sm border-l-4 border-secondary-container transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined sidebar-active" style="font-variation-settings: 'FILL' 1;">dashboard</span>
<span class="font-body-md">Dashboard</span>
</a>
<!-- All Chats -->
<a class="flex items-center gap-md px-md py-sm hover:bg-primary-container/50 hover:text-secondary-fixed transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined">chat</span>
<span class="font-body-md">All Chats</span>
</a>
<!-- Campaigns -->
<a class="flex items-center gap-md px-md py-sm hover:bg-primary-container/50 hover:text-secondary-fixed transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined">campaign</span>
<span class="font-body-md">Campaigns</span>
</a>
<!-- Contacts -->
<a class="flex items-center gap-md px-md py-sm hover:bg-primary-container/50 hover:text-secondary-fixed transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined">group</span>
<span class="font-body-md">Contacts</span>
</a>
<!-- Automation -->
<a class="flex items-center gap-md px-md py-sm hover:bg-primary-container/50 hover:text-secondary-fixed transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined">smart_toy</span>
<span class="font-body-md">Automation</span>
</a>
<!-- Settings -->
<a class="flex items-center gap-md px-md py-sm hover:bg-primary-container/50 hover:text-secondary-fixed transition-colors duration-200 text-white/70 bg-white/10 text-white" href="#">
<span class="material-symbols-outlined">settings</span>
<span class="font-body-md">Settings</span>
</a>
</nav>
<div class="mt-auto px-md pb-md">
<button class="w-full mb-lg py-sm px-md bg-secondary-container text-primary font-bold rounded-lg flex items-center justify-center gap-sm active:scale-95 duration-100">
<span class="material-symbols-outlined">add_circle</span>
New Broadcast
</button>
<div class="space-y-xs">
<a class="flex items-center gap-md px-md py-sm hover:text-secondary-fixed text-white/70" href="#">
<span class="material-symbols-outlined">help</span>
<span class="font-body-md">Help Center</span>
</a>
<a class="flex items-center gap-md px-md py-sm hover:text-secondary-fixed text-white/70" href="#">
<span class="material-symbols-outlined">logout</span>
<span class="font-body-md">Logout</span>
</a>
</div>
</div>
</aside>
<!-- Main Canvas -->
<main class="ml-[280px] min-h-screen">
<!-- TopNavBar Shell -->
<header class="sticky top-0 w-full h-[72px] bg-surface-container-lowest border-b border-outline-variant flex items-center justify-between px-margin-page z-40">
<div class="flex items-center gap-lg">
<h2 class="font-headline-md text-headline-md font-extrabold text-primary">Admin Console</h2>
<div class="relative w-96 group">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-on-surface-variant">search</span>
<input class="w-full bg-surface-container-low border-none rounded-lg pl-10 py-2 text-body-sm focus:ring-2 focus:ring-secondary-container transition-all" placeholder="Search conversations, campaigns..." type="text">
</div>
</div>
<div class="flex items-center gap-lg">
<div class="flex items-center gap-md">
<button class="p-2 rounded-lg hover:bg-surface-container-low text-on-surface-variant">
<span class="material-symbols-outlined">notifications</span>
</button>
<button class="p-2 rounded-lg hover:bg-surface-container-low text-on-surface-variant">
<span class="material-symbols-outlined">history_edu</span>
</button>
<button class="p-2 rounded-lg hover:bg-surface-container-low text-on-surface-variant">
<span class="material-symbols-outlined">grid_view</span>
</button>
</div>
<div class="h-8 w-[1px] bg-outline-variant"></div>
<div class="flex items-center gap-sm">
<div class="text-right">
<p class="font-body-sm font-bold text-on-surface">Alex Thompson</p>
<p class="text-[10px] uppercase tracking-wider text-on-surface-variant">Operations Lead</p>
</div>
<img alt="Administrator Avatar" class="h-10 w-10 rounded-full border-2 border-secondary-container object-cover" data-alt="Close-up portrait of a professional corporate administrator with a friendly and focused expression. The lighting is bright and clean with a minimalist office background, maintaining a high-productivity light-mode aesthetic with soft shadows and navy and white clothing." src="https://lh3.googleusercontent.com/aida-public/AB6AXuBKj34E59BZa5Bl8hDo6bnmr8PNDV1heVwA1loIXPJxcr3BAL4HLwlEHf9_lJ373DqqDdJdUHGb7-o7SEoDrXfEAp8ftnmFbA41DfOCgdNhuWdDALNaFhDeNQ68WdsOcbd1rTk_sZ6ph2p4x6qJgVRZAtFR4BfRA6yPtaCIZCaJ85ctMqy7ylVG0ex55W1Ynps-Iq3SFHwt-rZgqbKwivMWSpwR07nbHivus7OdYxXRqu64ucTd-uJveb4yK66dnxlO35kZ-5IOQF8">
</div>
</div>
</header>
<!-- Dashboard Content -->
<section class="p-margin-page space-y-gutter">
<!-- Bento KPI Grid -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-gutter">
<!-- KPI Card 1: Total Users -->
<div class="bg-surface-container-lowest p-lg rounded-xl border border-outline-variant flex flex-col justify-between">
<div class="flex justify-between items-start">
<div>
<p class="text-on-surface-variant font-label-md">Total Subscribers</p>
<h3 class="font-headline-md text-headline-md font-bold mt-xs">1.2M</h3>
</div>
<div class="bg-secondary-container/20 p-sm rounded-lg text-secondary">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">group</span>
</div>
</div>
<div class="mt-lg flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="material-symbols-outlined text-[18px]">trending_up</span>
<span class="">12.5% vs last month</span>
</div>
</div>
<!-- KPI Card 2: Active Sessions -->
<div class="bg-surface-container-lowest p-lg rounded-xl border border-outline-variant flex flex-col justify-between">
<div class="flex justify-between items-start">
<div>
<p class="text-on-surface-variant font-label-md">Active Sessions</p>
<h3 class="font-headline-md text-headline-md font-bold mt-xs">42.8K</h3>
</div>
<div class="bg-secondary-container/20 p-sm rounded-lg text-secondary">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">bolt</span>
</div>
</div>
<div class="mt-lg flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="material-symbols-outlined text-[18px]">trending_up</span>
<span class="">8.2% vs last month</span>
</div>
</div>
<!-- KPI Card 3: Message Volume -->
<div class="bg-surface-container-lowest p-lg rounded-xl border border-outline-variant flex flex-col justify-between">
<div class="flex justify-between items-start">
<div>
<p class="text-on-surface-variant font-label-md">Daily Messages</p>
<h3 class="font-headline-md text-headline-md font-bold mt-xs">845K</h3>
</div>
<div class="bg-secondary-container/20 p-sm rounded-lg text-secondary">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">forum</span>
</div>
</div>
<div class="mt-lg flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="material-symbols-outlined text-[18px]">trending_up</span>
<span class="">24.1% vs last month</span>
</div>
</div>
<!-- KPI Card 4: Response Time -->
<div class="bg-surface-container-lowest p-lg rounded-xl border border-outline-variant flex flex-col justify-between">
<div class="flex justify-between items-start">
<div>
<p class="text-on-surface-variant font-label-md">Avg Response Time</p>
<h3 class="font-headline-md text-headline-md font-bold mt-xs">1.8m</h3>
</div>
<div class="bg-secondary-container/20 p-sm rounded-lg text-secondary">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">timer</span>
</div>
</div>
<div class="mt-lg flex items-center gap-xs text-error font-bold text-body-sm">
<span class="material-symbols-outlined text-[18px]">trending_down</span>
<span class="">-4.5% vs last month</span>
</div>
</div>
</div>
<!-- Main Data Visuals -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-gutter">
<!-- Line Chart: Message Traffic -->
<div class="lg:col-span-2 bg-surface-container-lowest p-lg rounded-xl border border-outline-variant">
<div class="flex items-center justify-between mb-xl">
<div>
<h4 class="font-title-lg text-title-lg text-primary">Message Traffic Overview</h4>
<p class="text-on-surface-variant text-body-sm">Real-time volume analysis across all channels</p>
</div>
<select class="bg-surface-container-low border-none rounded-lg text-label-md font-bold focus:ring-secondary-container">
<option>Last 7 Days</option>
<option>Last 30 Days</option>
</select>
</div>
<!-- Mockup Chart Area -->
<div class="h-64 flex items-end justify-between gap-md relative">
<!-- Horizontal Grid Lines -->
<div class="absolute inset-0 flex flex-col justify-between pointer-events-none opacity-10">
<div class="w-full h-[1px] bg-on-surface"></div>
<div class="w-full h-[1px] bg-on-surface"></div>
<div class="w-full h-[1px] bg-on-surface"></div>
<div class="w-full h-[1px] bg-on-surface"></div>
</div>
<!-- Bars with Overlay Path Logic (Visual Representation) -->
<div class="flex-1 bg-surface-container-low h-[40%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">12k</div>
</div>
<div class="flex-1 bg-surface-container-low h-[65%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">18k</div>
</div>
<div class="flex-1 bg-secondary-container h-[90%] rounded-t-lg relative group">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-100">28k</div>
</div>
<div class="flex-1 bg-surface-container-low h-[55%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">15k</div>
</div>
<div class="flex-1 bg-surface-container-low h-[75%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">21k</div>
</div>
<div class="flex-1 bg-surface-container-low h-[45%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">13k</div>
</div>
<div class="flex-1 bg-surface-container-low h-[85%] rounded-t-lg relative group transition-all hover:bg-secondary-container">
<div class="absolute -top-10 left-1/2 -translate-x-1/2 bg-primary text-white text-[10px] py-1 px-2 rounded opacity-0 group-hover:opacity-100 transition-opacity">24k</div>
</div>
</div>
<div class="flex justify-between mt-md px-2 text-[10px] font-bold text-on-surface-variant">
<span class="">MON</span><span class="">TUE</span><span class="">WED</span><span class="">THU</span><span class="">FRI</span><span class="">SAT</span><span class="">SUN</span>
</div>
</div>
<!-- Recent Campaigns Summary (Asymmetric Layout) -->
<div class="bg-primary text-secondary-fixed p-lg rounded-xl border border-primary-container relative overflow-hidden flex flex-col">
<div class="relative z-10">
<h4 class="font-title-lg text-title-lg mb-sm">Active Campaigns</h4>
<div class="space-y-lg mt-lg">
<div class="p-md rounded-lg bg-primary-container/40 border border-secondary-container/20">
<div class="flex justify-between items-center mb-sm">
<span class="font-bold text-body-sm">Black Friday Early Bird</span>
<span class="bg-secondary-container text-primary text-[10px] font-extrabold px-2 py-0.5 rounded-full uppercase">Running</span>
</div>
<div class="w-full bg-primary/50 h-2 rounded-full overflow-hidden">
<div class="bg-secondary-container h-full w-[72%]"></div>
</div>
<div class="flex justify-between mt-xs text-[10px] text-secondary-fixed-dim">
<span class="">72% of 500k Sent</span>
<span class="">3.4k Clicks</span>
</div>
</div>
<div class="p-md rounded-lg bg-primary-container/40 border border-secondary-container/20">
<div class="flex justify-between items-center mb-sm">
<span class="font-bold text-body-sm">Welcome Automation</span>
<span class="bg-secondary-container/40 text-secondary-fixed text-[10px] font-extrabold px-2 py-0.5 rounded-full uppercase">Evergreen</span>
</div>
<div class="w-full bg-primary/50 h-2 rounded-full overflow-hidden">
<div class="bg-secondary-container h-full w-[95%]"></div>
</div>
<div class="flex justify-between mt-xs text-[10px] text-secondary-fixed-dim">
<span class="">95% Delivery Rate</span>
<span class="">12.1k Success</span>
</div>
</div>
</div>
</div>
<button class="mt-auto w-full py-md text-center text-secondary-fixed-dim font-bold text-body-sm hover:text-secondary-fixed transition-colors">
View All Campaigns →
</button>
<!-- Abstract Background Elements -->
<div class="absolute -bottom-10 -right-10 w-40 h-40 bg-secondary-container/10 rounded-full blur-3xl"></div>
</div>
</div>
<!-- Recent Activity Table -->
<div class="bg-surface-container-lowest rounded-xl border border-outline-variant overflow-hidden">
<div class="p-lg border-b border-outline-variant flex items-center justify-between">
<h4 class="font-title-lg text-title-lg text-primary">Recent Activity Log</h4>
<button class="flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="material-symbols-outlined text-[18px]">filter_list</span>
Filter Table
</button>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead class="bg-surface-container-low text-on-surface-variant font-label-md">
<tr>
<th class="px-lg py-md">Campaign Name</th>
<th class="px-lg py-md">Status</th>
<th class="px-lg py-md">Reach</th>
<th class="px-lg py-md">Conversion</th>
<th class="px-lg py-md">Date Created</th>
<th class="px-lg py-md">Action</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<tr class="hover:bg-surface-container-low transition-colors cursor-pointer group">
<td class="px-lg py-md font-bold text-primary">Q4 Product Launch</td>
<td class="px-lg py-md">
<span class="flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="w-2 h-2 rounded-full bg-secondary"></span>
Scheduled
</span>
</td>
<td class="px-lg py-md text-on-surface-variant">250,000 users</td>
<td class="px-lg py-md text-on-surface-variant">--</td>
<td class="px-lg py-md text-on-surface-variant">Oct 24, 2023</td>
<td class="px-lg py-md">
<button class="p-2 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-surface-container-highest transition-all">
<span class="material-symbols-outlined text-[20px]">more_vert</span>
</button>
</td>
</tr>
<tr class="hover:bg-surface-container-low transition-colors cursor-pointer group">
<td class="px-lg py-md font-bold text-primary">Flash Sale 24h</td>
<td class="px-lg py-md">
<span class="flex items-center gap-xs text-error font-bold text-body-sm">
<span class="w-2 h-2 rounded-full bg-error"></span>
Completed
</span>
</td>
<td class="px-lg py-md text-on-surface-variant">1,200,000 users</td>
<td class="px-lg py-md text-secondary font-bold">12.4%</td>
<td class="px-lg py-md text-on-surface-variant">Oct 22, 2023</td>
<td class="px-lg py-md">
<button class="p-2 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-surface-container-highest transition-all">
<span class="material-symbols-outlined text-[20px]">more_vert</span>
</button>
</td>
</tr>
<tr class="hover:bg-surface-container-low transition-colors cursor-pointer group">
<td class="px-lg py-md font-bold text-primary">Customer Satisfaction Survey</td>
<td class="px-lg py-md">
<span class="flex items-center gap-xs text-on-surface-variant font-bold text-body-sm">
<span class="w-2 h-2 rounded-full bg-outline"></span>
Draft
</span>
</td>
<td class="px-lg py-md text-on-surface-variant">45,000 users</td>
<td class="px-lg py-md text-on-surface-variant">--</td>
<td class="px-lg py-md text-on-surface-variant">Oct 21, 2023</td>
<td class="px-lg py-md">
<button class="p-2 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-surface-container-highest transition-all">
<span class="material-symbols-outlined text-[20px]">more_vert</span>
</button>
</td>
</tr>
<tr class="hover:bg-surface-container-low transition-colors cursor-pointer group">
<td class="px-lg py-md font-bold text-primary">Winter Rewards Program</td>
<td class="px-lg py-md">
<span class="flex items-center gap-xs text-secondary font-bold text-body-sm">
<span class="w-2 h-2 rounded-full bg-secondary animate-pulse"></span>
Active
</span>
</td>
<td class="px-lg py-md text-on-surface-variant">800,000 users</td>
<td class="px-lg py-md text-secondary font-bold">8.9%</td>
<td class="px-lg py-md text-on-surface-variant">Oct 19, 2023</td>
<td class="px-lg py-md">
<button class="p-2 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-surface-container-highest transition-all">
<span class="material-symbols-outlined text-[20px]">more_vert</span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-lg bg-surface-container-low flex items-center justify-between">
<p class="text-on-surface-variant text-body-sm">Showing 1-4 of 12 active campaigns</p>
<div class="flex gap-sm">
<button class="px-md py-1 bg-surface-container-highest rounded font-bold text-label-md">Previous</button>
<button class="px-md py-1 bg-primary text-white rounded font-bold text-label-md">Next</button>
</div>
</div>
</div>
</section>
</main>
<!-- Contextual FAB for Home Screen -->
<button class="fixed bottom-lg right-lg h-14 w-14 rounded-full bg-secondary-container text-primary flex items-center justify-center shadow-xl active:scale-95 transition-transform z-50">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">add</span>
</button>
</body></html>