12/19/25 V.5

This commit is contained in:
Flatlogic Bot 2025-12-19 06:02:52 +00:00
parent 17f25edfba
commit bf88d26075
2 changed files with 229 additions and 268 deletions

View File

@ -1,72 +1,65 @@
const pages = ['home','problem','why','features','how','roi','pricing','who','trust','roadmap','faq','signin','apply'];
const pages = ['home', 'problem', 'why', 'features', 'how', 'roi', 'pricing', 'who', 'trust', 'roadmap', 'faq', 'signin', 'apply'];
document.addEventListener('DOMContentLoaded', () => {
// Set initial page based on URL hash or default to 'home'
const initialPage = window.location.hash.substring(1) || 'home';
openPage(initialPage, true);
// Handle back/forward navigation
window.addEventListener('popstate', (event) => {
const pageId = event.state ? event.state.page : 'home';
openPage(pageId, true);
});
// Check for query params like ?status=applied and switch to the right page
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('status') || urlParams.has('error')) {
openPage('apply', true);
}
});
function openPage(pageId, isHistoryNavigation = false) {
function openPage(pageId) {
if (!pages.includes(pageId)) {
pageId = 'home';
console.warn(`Attempted to navigate to a non-existent page: ${pageId}`);
return; // Do not proceed if the page is not in the allowed list
}
// Hide all pages
document.querySelectorAll('.page').forEach(page => {
page.classList.add('hidden');
document.querySelectorAll('.page').forEach(p => {
p.classList.add('hidden');
});
// Show the target page
const targetPage = document.getElementById(`page-${pageId}`);
if (targetPage) {
targetPage.classList.remove('hidden');
// Show the active page
const activePage = document.getElementById('page-' + pageId);
if (activePage) {
activePage.classList.remove('hidden');
} else {
// Fallback to home if page not found
// If no specific page content, default to home
document.getElementById('page-home').classList.remove('hidden');
pageId = 'home';
}
// Update nav links
// Update active link styling
document.querySelectorAll('.navlink').forEach(link => {
// Use endsWith to correctly match hrefs like '/#home' and '#home'
if (link.getAttribute('href').endsWith(`#${pageId}`)) {
if (link.dataset.page === pageId) {
link.classList.add('active');
} else {
link.classList.remove('active');
}
});
// Construct the new URL, preserving the base path
const newUrl = window.location.pathname + `#${pageId}`;
if (!isHistoryNavigation) {
// Create a new history state
history.pushState({ page: pageId }, null, newUrl);
} else {
// If it IS history navigation, we might need to clean up query params from the URL
if (window.location.search) {
history.replaceState({ page: pageId }, null, newUrl);
}
}
// Smooth scroll to top
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function toggleMenu(forceClose = false) {
const drawer = document.getElementById('drawer');
if (forceClose || !drawer.classList.contains('hidden')) {
drawer.classList.add('hidden');
} else {
drawer.classList.remove('hidden');
}
}
document.addEventListener('DOMContentLoaded', () => {
const navLinksContainer = document.getElementById('nav-links');
const mobileMenuContainer = document.getElementById('mobile-menu');
const menuButton = document.getElementById('menu-button');
// Generate navigation links
let navHTML = '';
pages.forEach(page => {
navHTML += `<a href="#${page}" class="navlink px-3 py-2 rounded-full hover:bg-gray-100" data-page="${page}">${page.charAt(0).toUpperCase() + page.slice(1)}</a>`;
});
navLinksContainer.innerHTML = navHTML;
mobileMenuContainer.innerHTML = navHTML.replace(/class="/g, 'class="block w-full text-left ');
// Handle navigation clicks
document.querySelectorAll('.navlink').forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
openPage(link.dataset.page);
});
});
// Toggle mobile menu
menuButton.addEventListener('click', () => {
mobileMenuContainer.classList.toggle('hidden');
});
// Open page based on hash or default to 'home'
const initialPage = window.location.hash.substring(1) || 'home';
openPage(initialPage);
});

398
index.php
View File

@ -1,223 +1,191 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FinMox HR Execution Operating System</title>
<!-- Tailwind CDN (AppWizzy-safe) -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
:root{
--ink:#0b0b0c;
--paper:#fbfaf7;
--warm:#f2efe7;
--warm2:#ebe6da;
--line: rgba(11,11,12,.08);
--shadow: 0 18px 48px rgba(11,11,12,.10);
--shadow2: 0 10px 26px rgba(11,11,12,.10);
--radius: 28px;
}
html, body {
height: 100%;
}
body {
font-family: 'Inter', sans-serif;
background: var(--paper);
color: var(--ink);
}
/* page routing */
.page.hidden {
display: none;
}
/* warm glass cards */
.panel {
border: 1px solid var(--line);
border-radius: var(--radius);
background: rgba(255,255,255,.70);
box-shadow: var(--shadow2);
backdrop-filter: blur(10px);
}
.panel-strong {
border: 1px solid var(--line);
border-radius: var(--radius);
background: rgba(255,255,255,.92);
box-shadow: var(--shadow);
}
.chip {
border: 1px solid var(--line);
border-radius: 999px;
background: rgba(255,255,255,.75);
}
.softline {
border-color: var(--line);
}
/* hero background */
.bg-warm {
background:
radial-gradient(1200px 520px at 20% 15%, rgba(243,236,223,.95), rgba(251,250,247,0) 60%),
radial-gradient(900px 520px at 85% 20%, rgba(236,232,219,.9), rgba(251,250,247,0) 55%),
radial-gradient(900px 520px at 55% 90%, rgba(241,238,230,.9), rgba(251,250,247,0) 60%),
var(--paper);
}
/* subtle motion */
.fade {
transition: opacity .18s ease, transform .18s ease;
}
.hoverlift {
transition: transform .18s ease, box-shadow .18s ease;
}
.hoverlift:hover {
transform: translateY(-2px);
box-shadow: var(--shadow);
}
/* nav active state */
.navlink.active {
font-weight: 700;
}
/* mobile menu */
.drawer.hidden {
display:none;
}
/* details */
details[open] summary {
font-weight: 700;
}
summary {
cursor: pointer;
}
</style>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FinMox HR Execution Operating System</title>
<!-- Tailwind CDN (AppWizzy-safe) -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/custom.css">
</head>
<body class="bg-warm">
<!-- TOP NAV -->
<header class="max-w-7xl mx-auto px-6 py-5">
<div class="panel-strong px-5 py-4 flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="h-9 w-9 rounded-2xl bg-black text-white flex items-center justify-center text-sm font-semibold">FM</div>
<div class="font-semibold tracking-tight">FinMox</div>
<span class="hidden sm:inline chip px-3 py-1 text-xs text-gray-700">HR Execution OS</span>
</div>
<!-- Desktop nav -->
<nav class="hidden lg:flex items-center gap-x-4 text-sm whitespace-nowrap">
<a class="navlink active" href="#home" onclick="openPage('home'); return false;">Home</a>
<a class="navlink" href="#problem" onclick="openPage('problem'); return false;">Problem</a>
<a class="navlink" href="#why" onclick="openPage('why'); return false;">Why FinMox</a>
<a class="navlink" href="#features" onclick="openPage('features'); return false;">Features</a>
<a class="navlink" href="#how" onclick="openPage('how'); return false;">How It Works</a>
<a class="navlink" href="#who" onclick="openPage('who'); return false;">Who It's For</a>
<a class="navlink" href="#pricing" onclick="openPage('pricing'); return false;">Pricing</a>
<a class="navlink" href="#faq" onclick="openPage('faq'); return false;">FAQ</a>
</nav>
<div class="flex items-center gap-4">
<a class="navlink hidden sm:inline text-sm" href="#signin" onclick="openPage('signin'); return false;">Sign In</a>
<a href="#apply" onclick="openPage('apply'); return false;" class="bg-black text-white text-sm px-4 py-2 rounded-2xl hoverlift">Apply for Access</a>
<!-- Mobile menu -->
<button class="lg:hidden chip px-3 py-2 text-sm" onclick="toggleMenu()" aria-label="Open menu">Menu</button>
</div>
</div>
<!-- Mobile drawer -->
<div id="drawer" class="drawer hidden mt-3 panel-strong p-4">
<div class="grid gap-2 text-sm">
<a class="navlink active" href="#home" onclick="openPage('home'); toggleMenu(true); return false;">Home</a>
<a class="navlink" href="#problem" onclick="openPage('problem'); toggleMenu(true); return false;">Problem</a>
<a class="navlink" href="#why" onclick="openPage('why'); toggleMenu(true); return false;">Why FinMox</a>
<a class="navlink" href="#features" onclick="openPage('features'); toggleMenu(true); return false;">Features</a>
<a class="navlink" href="#how" onclick="openPage('how'); toggleMenu(true); return false;">How It Works</a>
<a class="navlink" href="#who" onclick="openPage('who'); toggleMenu(true); return false;">Who It's For</a>
<a class="navlink" href="#pricing" onclick="openPage('pricing'); toggleMenu(true); return false;">Pricing</a>
<a class="navlink" href="#faq" onclick="openPage('faq'); toggleMenu(true); return false;">FAQ</a>
<div class="h-px softline border-t my-2"></div>
<a class="navlink" href="#signin" onclick="openPage('signin'); toggleMenu(true); return false;">Sign In</a>
<a href="#apply" onclick="openPage('apply'); toggleMenu(true); return false;" class="bg-black text-white text-sm px-4 py-2 rounded-2xl">Apply for Access</a>
<!-- TOP NAV -->
<header class="max-w-7xl mx-auto px-6 py-5">
<div class="flex items-center justify-between">
<div class="font-extrabold text-lg">FinMox</div>
<div class="hidden md:flex items-center gap-1 text-sm" id="nav-links">
<!-- Links will be injected by JS -->
</div>
<div class="md:hidden">
<button id="menu-button" class="p-2">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
</button>
</div>
</div>
</div>
</header>
<main class="max-w-7xl mx-auto px-6 pb-16">
<!-- HOME PAGE -->
<section id="page-home" class="page fade">
<!-- HERO -->
<section class="panel-strong overflow-hidden">
<div class="grid lg:grid-cols-12 gap-10 p-8 lg:p-10 items-center">
<!-- Copy -->
<div class="lg:col-span-6">
<div class="inline-flex items-center gap-2 chip px-3 py-1 text-xs">
<span class="h-2 w-2 rounded-full bg-black"></span> HR execution control not another HR tool
</div>
<h1 class="mt-6 text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.02]">
The HR Execution<br/> Operating System
</h1>
<p class="mt-6 text-base md:text-lg text-gray-700">
FinMox sits on top of your existing stack and controls how hiring decisions get executed so teams move faster, stay consistent, and reduce risk <strong>without replacing your ATS or HR team</strong>.
</p>
<div class="mt-7 flex flex-wrap gap-3">
<a href="#apply" onclick="openPage('apply'); return false;" class="bg-black text-white px-5 py-3 rounded-2xl text-sm hoverlift">Apply for Founding Access</a>
<a href="#apply" onclick="openPage('apply'); return false;" class="chip px-5 py-3 rounded-2xl text-sm hoverlift">Book a Demo</a>
</div>
<div class="mt-7 flex flex-wrap gap-2 text-xs text-gray-600">
<span class="chip px-3 py-1">110 roles/month</span>
<span class="chip px-3 py-1">50300 candidates/role</span>
<span class="chip px-3 py-1">Multiple stakeholders</span>
<span class="chip px-3 py-1">Human-in-the-loop by design</span>
<span class="chip px-3 py-1">Audit-ready recordkeeping</span>
</div>
<div class="mt-7 panel p-5">
<div class="text-sm font-semibold">FinMox controls the flow of labor decisions.</div>
<div class="mt-2 text-sm text-gray-700">
Humans define intent systems enforce execution agents remove friction data creates defensibility.
</div>
</div>
</div>
<!-- Visual -->
<div class="lg:col-span-6">
<div class="panel p-6 md:p-7">
<div class="flex items-center justify-between">
<div class="text-sm font-semibold">Execution Control (Live)</div>
<div class="flex items-center gap-2 text-xs text-gray-500">
<span class="h-2 w-2 rounded-full bg-green-400 animate-pulse"></span> Live
</div>
</div>
<!-- Diagram -->
<div class="mt-6 space-y-4">
<!-- Step 1: Intent -->
<div class="p-4 rounded-2xl bg-warm2/50 border border-transparent hover:border-gray-200 transition-colors">
<div class="font-semibold text-sm">1. Define Intent</div>
<div class="text-xs text-gray-600 mt-1">Hiring managers define roles & requirements.</div>
</div>
<!-- Arrow -->
<div class="flex justify-center">
<svg class="w-4 h-4 text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg>
</div>
<!-- Step 2: Execution -->
<div class="p-4 rounded-2xl bg-warm2/50 border border-transparent hover:border-gray-200 transition-colors">
<div class="font-semibold text-sm">2. Enforce Execution</div>
<div class="text-xs text-gray-600 mt-1">FinMox ensures every step is followed.</div>
</div>
<!-- Arrow -->
<div class="flex justify-center">
<svg class="w-4 h-4 text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg>
</div>
<!-- Step 3: Agents -->
<div class="p-4 rounded-2xl bg-warm2/50 border border-transparent hover:border-gray-200 transition-colors">
<div class="font-semibold text-sm">3. Remove Friction</div>
<div class="text-xs text-gray-600 mt-1">AI agents automate scheduling & screening.</div>
</div>
<!-- Arrow -->
<div class="flex justify-center">
<svg class="w-4 h-4 text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg>
</div>
<!-- Step 4: Data -->
<div class="p-4 rounded-2xl bg-warm2/50 border border-transparent hover:border-gray-200 transition-colors">
<div class="font-semibold text-sm">4. Create Defensibility</div>
<div class="text-xs text-gray-600 mt-1">Generate audit-ready logs automatically.</div>
</div>
</div>
</div>
</div>
<!-- Mobile Menu -->
<div id="mobile-menu" class="hidden md:hidden mt-4">
<!-- Mobile links will be injected by JS -->
</div>
</section>
</section>
</main>
<script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</header>
<main class="max-w-7xl mx-auto p-6">
<!-- HOME PAGE -->
<section id="page-home" class="page fade">
<!-- HERO -->
<section class="panel-strong p-8 lg:p-10 text-center">
<div class="inline-flex items-center gap-2 rounded-full border border-black/10 bg-white/70 px-3 py-1 text-xs">
<span class="h-2 w-2 rounded-full bg-black"></span>
Now in private beta
</div>
<h1 class="mt-5 text-4xl md:text-6xl font-extrabold tracking-tight">
The OS for hiring execution.
</h1>
<p class="mt-4 text-gray-600 max-w-xl mx-auto">
FinMox is an intelligent enterprise system that automates HR, compliance, and operations.
Finally, a way to control the entire lifecycle from role intake to offer letter.
</p>
<div class="mt-6 flex items-center justify-center gap-3">
<a href="#apply" class="rounded-full bg-black px-5 py-2 text-white text-sm font-semibold">Apply for Beta</a>
<a href="#signin" class="rounded-full px-5 py-2 text-sm font-semibold">Sign In</a>
</div>
</section>
<!-- KEY PROCESSES -->
<section class="mt-10 grid md:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="panel-strong p-5 hoverlift">
<div class="text-xs text-gray-500">Role Intake</div>
<div class="mt-1 font-semibold">Criteria Locked</div>
<div class="mt-3 text-xs text-gray-600">
Hiring intent standardized. Versioned. No drift.
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="chip px-2 py-1 text-xs">Stakeholders</span>
<span class="chip px-2 py-1 text-xs">Rubric</span>
<span class="chip px-2 py-1 text-xs">Scope freeze</span>
</div>
</div>
<div class="panel-strong p-5 hoverlift">
<div class="text-xs text-gray-500">Structured Qualification</div>
<div class="mt-1 font-semibold">Consistent Evaluation</div>
<div class="mt-3 text-xs text-gray-600">
Same criteria. Required steps. Overrides recorded.
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="chip px-2 py-1 text-xs">Scoring</span>
<span class="chip px-2 py-1 text-xs">Notes</span>
<span class="chip px-2 py-1 text-xs">Rationale</span>
</div>
</div>
<div class="panel-strong p-5 hoverlift">
<div class="text-xs text-gray-500">Candidate Movement</div>
<div class="mt-1 font-semibold">No Operational Drag</div>
<div class="mt-3 text-xs text-gray-600">
Scheduling + follow-ups handled automatically.
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="chip px-2 py-1 text-xs">SLAs</span>
<span class="chip px-2 py-1 text-xs">Nudges</span>
<span class="chip px-2 py-1 text-xs">Status</span>
</div>
</div>
<div class="panel-strong p-5 hoverlift">
<div class="text-xs text-gray-500">Decision Trail</div>
<div class="mt-1 font-semibold">Defensible Record</div>
<div class="mt-3 text-xs text-gray-600">
Who decided, when, why, under which criteria version.
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="chip px-2 py-1 text-xs">Timestamped</span>
<span class="chip px-2 py-1 text-xs">Versioned</span>
<span class="chip px-2 py-1 text-xs">Exportable</span>
</div>
</div>
</section>
</section>
<!-- FEATURES PAGE -->
<section id="page-features" class="page fade hidden">
<section class="panel-strong p-8 lg:p-10">
<div class="max-w-3xl">
<div class="inline-flex items-center gap-2 rounded-full border border-black/10 bg-white/70 px-3 py-1 text-xs">
<span class="h-2 w-2 rounded-full bg-black"></span>
What FinMox does
</div>
<h1 class="mt-5 text-4xl font-extrabold tracking-tight">
Hiring execution, standardized not “another ATS.
</h1>
<p class="mt-4 text-gray-600">
FinMox enforces role clarity, structured qualification, and automatic outputs so teams move faster without adding risk, headcount, or chaos.
</p>
</div>
<div class="mt-10 grid md:grid-cols-3 gap-10">
<!-- Candidate Ranking -->
<div class="rounded-3xl bg-[#FAF8F6] p-8 shadow-sm border border-black/5">
<img src="YOUR_APPWIZZY_IMAGE_URL_candidate-ranking.png" class="rounded-2xl mb-6 w-full" alt="Candidate ranking mockup" />
<h3 class="text-xl font-semibold">Candidate Ranking</h3>
<p class="text-gray-600 mt-2">
Every candidate is scored against your role criteria so decisions dont drift.
</p>
<div class="flex flex-wrap gap-2 mt-4 text-sm text-gray-500">
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Parsing</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Scoring</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Shortlists</span>
</div>
</div>
<!-- Interview Automation -->
<div class="rounded-3xl bg-[#FAF8F6] p-8 shadow-sm border border-black/5">
<img src="YOUR_APPWIZZY_IMAGE_URL_interview-automation.png" class="rounded-2xl mb-6 w-full" alt="Interview automation mockup" />
<h3 class="text-xl font-semibold">Interview Automation</h3>
<p class="text-gray-600 mt-2">
Role-specific questions, summaries, and recommendations reviewable and exportable.
</p>
<div class="flex flex-wrap gap-2 mt-4 text-sm text-gray-500">
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Question sets</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Summaries</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Recommendations</span>
</div>
</div>
<!-- Compliance & Analytics -->
<div class="rounded-3xl bg-[#FAF8F6] p-8 shadow-sm border border-black/5">
<img src="YOUR_APPWIZZY_IMAGE_URL_compliance-analytics.png" class="rounded-2xl mb-6 w-full" alt="Compliance and analytics mockup" />
<h3 class="text-xl font-semibold">Compliance & Analytics</h3>
<p class="text-gray-600 mt-2">
Track performance, risk, and compliance in real-time without manual data entry.
</p>
<div class="flex flex-wrap gap-2 mt-4 text-sm text-gray-500">
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Dashboards</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Audit trails</span>
<span class="bg-white rounded-full px-3 py-1 border border-black/5">Alerts</span>
</div>
</div>
</div>
</section>
</section>
<!-- Other Pages will be added here -->
</main>
<!-- FOOTER -->
<footer class="max-w-7xl mx-auto px-6 pb-16">
<div class="panel-strong p-6 flex flex-col md:flex-row md:items-center justify-between gap-4 text-sm text-gray-600">
<div>FinMox © 2025</div>
<div class="flex flex-wrap gap-3">
<a href="#apply" class="underline navlink" data-page="apply">Apply</a>
<span class="opacity-50">·</span>
<a href="#signin" class="underline navlink" data-page="signin">Sign In</a>
<span class="opacity-50">·</span>
<a href="#trust" class="underline navlink" data-page="trust">Security & Trust</a>
<span class="opacity-50">·</span>
<a href="#faq" class="underline navlink" data-page="faq">FAQ</a>
</div>
</div>
</footer>
<script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</body>
</html>
</html>