Files
hammerfest/public/sign-in/index.html
T
2026-09-30 16:19:00 -06:00

827 lines
31 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sign In · Federated Computer</title>
<meta name="description" content="Sign in to your Federated Computer account.">
<meta name="theme-color" content="#ffffff">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="../css/style.css">
</head>
<body id="top">
<a class="skip" href="#content">Skip to content</a>
<div class="page">
<aside class="rail">
<div class="rail-bar">
<a href="../" class="brand" aria-label="Federated Computer, home">
<img src="../images/logo.png" alt="Federated Computer" class="brand-logo" width="775" height="129">
</a>
<details class="menu">
<summary><span class="menu-word">Menu</span><span class="menu-glyph" aria-hidden="true"><i></i><i></i></span></summary>
<nav class="menu-panel" aria-label="Site">
<a href="../" class="menu-top">Home</a>
<a href="../solutions/" class="menu-top">Solutions</a>
<div class="menu-sub">
<a href="../solutions/open-source-apps/">Open-Source Apps</a><a href="../solutions/apps-and-ai-development/">Apps &#43; AI Development</a><a href="../solutions/ai-for-your-apps/">AI for Your Own Apps</a><a href="../solutions/full-stack/">The Full Stack</a><a href="../solutions/#compare">Compare All Four</a>
</div>
<a href="../product/" class="menu-top">Product</a>
<div class="menu-sub">
<a href="../product/federated-core/">Federated Core</a><a href="../product/software-library/">Software Library</a><a href="../product/agent-sandbox/">Agent Sandbox</a><a href="../product/data-controls/">Data &amp; Controls</a>
</div>
<a href="../ai-privacy-advantage/" class="menu-top">AI Privacy Advantage</a>
<a href="../pricing/" class="menu-top">Pricing</a>
<a href="../about/" class="menu-top">About</a>
<div class="menu-actions">
<a href="../start-now/" class="btn btn-primary">
<span class="btn-tile" aria-hidden="true"><svg viewBox="0 0 16 16" width="14" height="14" fill="none"><path d="M3 8h9M8.5 4.5 12 8l-3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="square"/></svg></span>
<span class="btn-label">Start Now</span>
</a>
<a href="../sign-in/" class="btn btn-secondary">Sign In<span class="arrow" aria-hidden="true">→</span></a>
</div>
</nav>
</details>
</div>
<nav class="nav nav-doors" aria-label="Site">
<a href="../">Home</a>
<a href="../solutions/">Solutions</a>
<a href="../product/">Product</a>
<a href="../ai-privacy-advantage/">AI Privacy Advantage</a>
<a href="../pricing/">Pricing</a>
<a href="../about/">About</a>
</nav>
<div class="rail-actions">
<a href="../start-now/" class="btn btn-primary btn-sm"><span class="btn-label">Start Now</span></a>
<a href="../sign-in/" class="rail-signin" aria-current="page">Sign In</a>
</div>
<nav class="app-wall" aria-label="Apps + AI">
<a class="app-wall-head" href="../product/software-library/">
<span class="app-wall-title">Apps + AI</span>
<span class="app-wall-count">Catalog<span class="arrow" aria-hidden="true">→</span></span>
</a>
<div class="app-wall-view">
<div class="app-wall-scroll">
<ul class="app-wall-grid">
<li>
<a class="app-tile" href="../nextcloud/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#nextcloud"></use></svg>
<span class="app-tile-name">Nextcloud</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#claude"></use></svg>
<span class="app-tile-name">Claude Code</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/#mcp">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#mcp"></use></svg>
<span class="app-tile-name">MCP</span>
</a>
</li>
<li>
<a class="app-tile" href="../jitsi/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#jitsi"></use></svg>
<span class="app-tile-name">Jitsi</span>
</a>
</li>
<li>
<a class="app-tile" href="../espocrm/">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">E</span>
<span class="app-tile-name">EspoCRM</span>
</a>
</li>
<li>
<a class="app-tile" href="../element/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#element"></use></svg>
<span class="app-tile-name">Element</span>
</a>
</li>
<li>
<a class="app-tile" href="../n8n/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#n8n"></use></svg>
<span class="app-tile-name">n8n</span>
</a>
</li>
<li>
<a class="app-tile" href="../immich/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#immich"></use></svg>
<span class="app-tile-name">Immich</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#jupyter"></use></svg>
<span class="app-tile-name">Jupyter</span>
</a>
</li>
<li>
<a class="app-tile" href="../wordpress/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#wordpress"></use></svg>
<span class="app-tile-name">WordPress</span>
</a>
</li>
<li>
<a class="app-tile" href="../freescout/">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">F</span>
<span class="app-tile-name">FreeScout</span>
</a>
</li>
<li>
<a class="app-tile" href="../collabora-writer/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#collabora"></use></svg>
<span class="app-tile-name">Collabora</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#opencode"></use></svg>
<span class="app-tile-name">OpenCode</span>
</a>
</li>
<li>
<a class="app-tile" href="../vaultwarden/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#vaultwarden"></use></svg>
<span class="app-tile-name">Vault­warden</span>
</a>
</li>
<li>
<a class="app-tile" href="../calcom/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#calcom"></use></svg>
<span class="app-tile-name">Cal.com</span>
</a>
</li>
<li>
<a class="app-tile" href="../gitea/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#gitea"></use></svg>
<span class="app-tile-name">Gitea</span>
</a>
</li>
<li>
<a class="app-tile" href="../discourse/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#discourse"></use></svg>
<span class="app-tile-name">Discourse</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#grafana"></use></svg>
<span class="app-tile-name">Grafana</span>
</a>
</li>
<li>
<a class="app-tile" href="../bookstack/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#bookstack"></use></svg>
<span class="app-tile-name">BookStack</span>
</a>
</li>
<li>
<a class="app-tile" href="../docuseal/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#docuseal"></use></svg>
<span class="app-tile-name">DocuSeal</span>
</a>
</li>
<li>
<a class="app-tile" href="../plane/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#plane"></use></svg>
<span class="app-tile-name">Plane</span>
</a>
</li>
<li>
<a class="app-tile" href="../baserow/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#baserow"></use></svg>
<span class="app-tile-name">Baserow</span>
</a>
</li>
<li>
<a class="app-tile" href="../listmonk/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#listmonk"></use></svg>
<span class="app-tile-name">Listmonk</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#postgresql"></use></svg>
<span class="app-tile-name">Postgre­SQL</span>
</a>
</li>
<li>
<a class="app-tile" href="../mautic/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#mautic"></use></svg>
<span class="app-tile-name">Mautic</span>
</a>
</li>
<li>
<a class="app-tile" href="../plausible-analytics/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#plausible"></use></svg>
<span class="app-tile-name">Plausible</span>
</a>
</li>
<li>
<a class="app-tile" href="../matomo/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#matomo"></use></svg>
<span class="app-tile-name">Matomo</span>
</a>
</li>
<li>
<a class="app-tile" href="../kimai/">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">K</span>
<span class="app-tile-name">Kimai</span>
</a>
</li>
<li>
<a class="app-tile" href="../castopod/">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">C</span>
<span class="app-tile-name">Castopod</span>
</a>
</li>
<li>
<a class="app-tile" href="../woocommerce-ecommerce/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#woocommerce"></use></svg>
<span class="app-tile-name">Woo­Commerce</span>
</a>
</li>
<li>
<a class="app-tile" href="../roundcube/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#roundcube"></use></svg>
<span class="app-tile-name">Roundcube</span>
</a>
</li>
<li>
<a class="app-tile" href="../headscale/">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">H</span>
<span class="app-tile-name">Headscale</span>
</a>
</li>
<li>
<a class="app-tile" href="../solutions/ai-for-your-apps/">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#add"></use></svg>
<span class="app-tile-name">Add Yours</span>
</a>
</li>
</ul>
<ul class="app-wall-grid" aria-hidden="true">
<li>
<a class="app-tile" href="../nextcloud/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#nextcloud"></use></svg>
<span class="app-tile-name">Nextcloud</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#claude"></use></svg>
<span class="app-tile-name">Claude Code</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/#mcp" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#mcp"></use></svg>
<span class="app-tile-name">MCP</span>
</a>
</li>
<li>
<a class="app-tile" href="../jitsi/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#jitsi"></use></svg>
<span class="app-tile-name">Jitsi</span>
</a>
</li>
<li>
<a class="app-tile" href="../espocrm/" tabindex="-1">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">E</span>
<span class="app-tile-name">EspoCRM</span>
</a>
</li>
<li>
<a class="app-tile" href="../element/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#element"></use></svg>
<span class="app-tile-name">Element</span>
</a>
</li>
<li>
<a class="app-tile" href="../n8n/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#n8n"></use></svg>
<span class="app-tile-name">n8n</span>
</a>
</li>
<li>
<a class="app-tile" href="../immich/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#immich"></use></svg>
<span class="app-tile-name">Immich</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#jupyter"></use></svg>
<span class="app-tile-name">Jupyter</span>
</a>
</li>
<li>
<a class="app-tile" href="../wordpress/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#wordpress"></use></svg>
<span class="app-tile-name">WordPress</span>
</a>
</li>
<li>
<a class="app-tile" href="../freescout/" tabindex="-1">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">F</span>
<span class="app-tile-name">FreeScout</span>
</a>
</li>
<li>
<a class="app-tile" href="../collabora-writer/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#collabora"></use></svg>
<span class="app-tile-name">Collabora</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#opencode"></use></svg>
<span class="app-tile-name">OpenCode</span>
</a>
</li>
<li>
<a class="app-tile" href="../vaultwarden/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#vaultwarden"></use></svg>
<span class="app-tile-name">Vault­warden</span>
</a>
</li>
<li>
<a class="app-tile" href="../calcom/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#calcom"></use></svg>
<span class="app-tile-name">Cal.com</span>
</a>
</li>
<li>
<a class="app-tile" href="../gitea/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#gitea"></use></svg>
<span class="app-tile-name">Gitea</span>
</a>
</li>
<li>
<a class="app-tile" href="../discourse/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#discourse"></use></svg>
<span class="app-tile-name">Discourse</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#grafana"></use></svg>
<span class="app-tile-name">Grafana</span>
</a>
</li>
<li>
<a class="app-tile" href="../bookstack/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#bookstack"></use></svg>
<span class="app-tile-name">BookStack</span>
</a>
</li>
<li>
<a class="app-tile" href="../docuseal/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#docuseal"></use></svg>
<span class="app-tile-name">DocuSeal</span>
</a>
</li>
<li>
<a class="app-tile" href="../plane/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#plane"></use></svg>
<span class="app-tile-name">Plane</span>
</a>
</li>
<li>
<a class="app-tile" href="../baserow/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#baserow"></use></svg>
<span class="app-tile-name">Baserow</span>
</a>
</li>
<li>
<a class="app-tile" href="../listmonk/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#listmonk"></use></svg>
<span class="app-tile-name">Listmonk</span>
</a>
</li>
<li>
<a class="app-tile" href="../product/software-library/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#postgresql"></use></svg>
<span class="app-tile-name">Postgre­SQL</span>
</a>
</li>
<li>
<a class="app-tile" href="../mautic/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#mautic"></use></svg>
<span class="app-tile-name">Mautic</span>
</a>
</li>
<li>
<a class="app-tile" href="../plausible-analytics/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#plausible"></use></svg>
<span class="app-tile-name">Plausible</span>
</a>
</li>
<li>
<a class="app-tile" href="../matomo/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#matomo"></use></svg>
<span class="app-tile-name">Matomo</span>
</a>
</li>
<li>
<a class="app-tile" href="../kimai/" tabindex="-1">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">K</span>
<span class="app-tile-name">Kimai</span>
</a>
</li>
<li>
<a class="app-tile" href="../castopod/" tabindex="-1">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">C</span>
<span class="app-tile-name">Castopod</span>
</a>
</li>
<li>
<a class="app-tile" href="../woocommerce-ecommerce/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#woocommerce"></use></svg>
<span class="app-tile-name">Woo­Commerce</span>
</a>
</li>
<li>
<a class="app-tile" href="../roundcube/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#roundcube"></use></svg>
<span class="app-tile-name">Roundcube</span>
</a>
</li>
<li>
<a class="app-tile" href="../headscale/" tabindex="-1">
<span class="app-tile-icon app-tile-letter" aria-hidden="true">H</span>
<span class="app-tile-name">Headscale</span>
</a>
</li>
<li>
<a class="app-tile" href="../solutions/ai-for-your-apps/" tabindex="-1">
<svg class="app-tile-icon" aria-hidden="true"><use href="../images/app-icons.svg#add"></use></svg>
<span class="app-tile-name">Add Yours</span>
</a>
</li>
</ul>
</div>
</div>
</nav>
</aside>
<main class="col" id="content" tabindex="-1">
<div class="form-page" data-reveal>
<p class="eyebrow">Sign In</p>
<h1 class="statement">Welcome back</h1>
<form onsubmit="return false;">
<div class="field">
<label for="email">Email</label>
<input id="email" type="email" name="email" autocomplete="email" required>
</div>
<div class="field">
<label for="password">Password</label>
<input id="password" type="password" name="password" autocomplete="current-password" required>
</div>
<div class="field-row">
<label><input type="checkbox" name="remember"> Remember me</label>
<a href="#">Forgot password?</a>
</div>
<button type="submit" class="btn btn-primary"><span class="btn-label">Sign In</span></button>
</form>
<p class="form-foot">
Don't have an account yet?
<a class="more" href="../start-now/">Start Your 7-Day Free Trial<span class="arrow" aria-hidden="true">→</span></a>
</p>
<p class="form-note">
Having trouble signing in? <a href="mailto:support@federated.computer">Contact Support</a>
</p>
</div>
<footer class="foot" data-reveal>
<div class="foot-brand">
<a href="../" class="foot-mark" aria-label="Federated Computer, home">
<img src="../images/logo.png" alt="Federated Computer" class="brand-logo" width="775" height="129">
</a>
<p class="foot-line">The open-source operating system for your business — and the private AI that runs on it.</p>
<span class="foot-place">Colorado Springs, Colorado</span>
<ul class="foot-social">
<li><a href="https://www.linkedin.com/company/federated-computer" target="_blank" rel="noopener">LinkedIn<span class="arrow" aria-hidden="true">↗</span></a></li><li><a href="https://x.com/federatedcomp" target="_blank" rel="noopener">X<span class="arrow" aria-hidden="true">↗</span></a></li>
</ul>
</div>
<div class="foot-grid">
<nav class="foot-group" aria-label="Solutions">
<span class="foot-head">Solutions</span>
<ul class="foot-links">
<li><a href="../solutions/open-source-apps/">Open-Source Apps</a></li>
<li><a href="../solutions/apps-and-ai-development/">Apps &#43; AI Development</a></li>
<li><a href="../solutions/ai-for-your-apps/">AI for Your Own Apps</a></li>
<li><a href="../solutions/full-stack/">The Full Stack</a></li>
<li><a href="../solutions/#compare">Compare All Four</a></li>
</ul>
</nav>
<nav class="foot-group" aria-label="Product">
<span class="foot-head">Product</span>
<ul class="foot-links">
<li><a href="../product/federated-core/">Federated Core</a></li>
<li><a href="../product/software-library/">Software Library</a></li>
<li><a href="../product/agent-sandbox/">Agent Sandbox</a></li>
<li><a href="../product/data-controls/">Data &amp; Controls</a></li>
<li><a href="../ai-privacy-advantage/">AI Privacy Advantage</a></li>
</ul>
</nav>
<nav class="foot-group" aria-label="Company">
<span class="foot-head">Company</span>
<ul class="foot-links">
<li><a href="../about/">About</a></li>
<li><a href="../about/#team">Team</a></li>
<li><a href="../about/#jobs">Jobs</a></li>
<li><a href="https://freescout.federated.computer/help/3593186542">Support</a></li>
</ul>
</nav>
<nav class="foot-group" aria-label="Get Started">
<span class="foot-head">Get Started</span>
<ul class="foot-links">
<li><a href="../start-now/">Start Now</a></li>
<li><a href="../sign-in/">Sign In</a></li>
<li><a href="../pricing/">Pricing</a></li>
</ul>
</nav>
</div>
<div class="foot-legal">
<span class="foot-copy">© 2026 Federated Computer, Inc. FedQ'd in Colorado Springs — built on Federated Computer by a team around the world.</span>
<a class="foot-policy" href="../privacy-policy/">Privacy Policy</a><a class="foot-policy" href="../terms-and-conditions/">Terms &amp; Conditions</a>
<a class="foot-top" href="#top">Back to top<span class="foot-up" aria-hidden="true">↑</span></a>
</div>
</footer>
</main>
</div>
<script>
(function () {
var root = document.documentElement;
if (!('IntersectionObserver' in window)) return;
root.classList.add('js');
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (e) {
if (e.isIntersecting) { e.target.classList.add('is-visible'); io.unobserve(e.target); }
});
}, { rootMargin: '0px 0px -8% 0px' });
document.querySelectorAll('[data-reveal]').forEach(function (el) { io.observe(el); });
var links = [].slice.call(document.querySelectorAll('.nav-here a'));
if (!links.length) return;
var targets = links.map(function (a) { return document.getElementById(decodeURIComponent(a.hash.slice(1))); });
var ticking = false;
function update() {
ticking = false;
var current = -1;
targets.forEach(function (t, i) { if (t && t.getBoundingClientRect().top < innerHeight * 0.3) current = i; });
links.forEach(function (a, i) {
if (i === current) a.setAttribute('aria-current', 'location'); else a.removeAttribute('aria-current');
});
}
addEventListener('scroll', function () { if (!ticking) { ticking = true; requestAnimationFrame(update); } }, { passive: true });
update();
})();
(function () {
function openPanel() {
var panel = location.hash && document.getElementById(decodeURIComponent(location.hash.slice(1)));
if (!panel || !panel.classList.contains('plan-panel')) return;
var i = [].indexOf.call(panel.parentNode.children, panel);
var radio = panel.closest('.plan-switch').querySelectorAll('.plan-radio')[i];
if (radio) { radio.checked = true; (panel.closest('.section') || panel).scrollIntoView(); }
}
addEventListener('hashchange', openPanel);
openPanel();
})();
</script>
</body>
</html>