From bf88d26075179a05cc21b2857022d56a74691467 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 19 Dec 2025 06:02:52 +0000 Subject: [PATCH] 12/19/25 V.5 --- assets/js/main.js | 99 ++++++------ index.php | 398 +++++++++++++++++++++------------------------- 2 files changed, 229 insertions(+), 268 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 61c2754..3cf79d0 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -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 += `${page.charAt(0).toUpperCase() + page.slice(1)}`; + }); + 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); +}); \ No newline at end of file diff --git a/index.php b/index.php index 0ae9488..915ea0b 100644 --- a/index.php +++ b/index.php @@ -1,223 +1,191 @@ - - - FinMox — HR Execution Operating System - - - - - + + + FinMox — HR Execution Operating System + + + + + - -
-
-
-
FM
-
FinMox
- -
- - -
- - Apply for Access - - -
-
- -
-
- -
- -
-
- -
-
- HR execution control — not another HR tool -
-

- The HR Execution
Operating System -

-

- FinMox sits on top of your existing stack and controls how hiring decisions get executed — so teams move faster, stay consistent, and reduce risk without replacing your ATS or HR team. -

- -
- 1–10 roles/month - 50–300 candidates/role - Multiple stakeholders - Human-in-the-loop by design - Audit-ready recordkeeping -
-
-
FinMox controls the flow of labor decisions.
-
- Humans define intent → systems enforce execution → agents remove friction → data creates defensibility. -
-
-
- -
-
-
-
Execution Control (Live)
-
- Live -
-
- -
- -
-
1. Define Intent
-
Hiring managers define roles & requirements.
-
- -
- -
- -
-
2. Enforce Execution
-
FinMox ensures every step is followed.
-
- -
- -
- -
-
3. Remove Friction
-
AI agents automate scheduling & screening.
-
- -
- -
- -
-
4. Create Defensibility
-
Generate audit-ready logs automatically.
-
-
-
-
+ + -
-
-
- + + +
+ +
+ +
+
+ + Now in private beta +
+

+ The OS for hiring execution. +

+

+ 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. +

+ +
+ + +
+
+
Role Intake
+
Criteria Locked
+
+ Hiring intent standardized. Versioned. No drift. +
+
+ Stakeholders + Rubric + Scope freeze +
+
+
+
Structured Qualification
+
Consistent Evaluation
+
+ Same criteria. Required steps. Overrides recorded. +
+
+ Scoring + Notes + Rationale +
+
+
+
Candidate Movement
+
No Operational Drag
+
+ Scheduling + follow-ups handled automatically. +
+
+ SLAs + Nudges + Status +
+
+
+
Decision Trail
+
Defensible Record
+
+ Who decided, when, why, under which criteria version. +
+
+ Timestamped + Versioned + Exportable +
+
+
+
+ + + + + + +
+ + + + + - + \ No newline at end of file