63 lines
2.9 KiB
HTML
63 lines
2.9 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
<meta name="description" content="Admin sign-in for Brain of Reese — unlocks the full Sources catalog and answer tuning.">
|
|
<title>Sign in · Brain of Reese</title>
|
|
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2064%2064%22%3E%3Cpath%20d=%22M32%204%2055%2018v28L32%2060%209%2046V18Z%22%20fill=%22%23121a2e%22%20stroke=%22%236d78f2%22%20stroke-width=%224%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2232%22%20cy=%2232%22%20r=%226.5%22%20fill=%22%236d78f2%22/%3E%3Cpath%20d=%22M32%2025.5V16M32%2048v-9.5M25.5%2032H16M48%2032h-9.5%22%20stroke=%22%2322d3ee%22%20stroke-width=%223%22%20stroke-linecap=%22round%22/%3E%3C/svg%3E">
|
|
<link rel="stylesheet" href="/assets/styles.css">
|
|
</head>
|
|
<body>
|
|
<a class="skip-link" href="#main">Skip to content</a>
|
|
|
|
<!-- Standard app frame + sticky header (phase 12 consistency). -->
|
|
<header class="app-header">
|
|
<div class="container header-inner">
|
|
<span class="brand">
|
|
<svg class="brand-mark" aria-hidden="true" viewBox="0 0 64 64"><path d="M32 4 55 18v28L32 60 9 46V18Z" fill="#121a2e" stroke="#6d78f2" stroke-width="4" stroke-linejoin="round"/><circle cx="32" cy="32" r="6.5" fill="#6d78f2"/><path d="M32 25.5V16M32 48v-9.5M25.5 32H16M48 32h-9.5" stroke="#22d3ee" stroke-width="3" stroke-linecap="round"/></svg>
|
|
<span class="brand-text">Brain of <strong>Reese</strong></span>
|
|
</span>
|
|
<nav class="app-nav" aria-label="Primary">
|
|
<a href="/" class="nav-link">Chat</a>
|
|
<a href="/sources.html" class="nav-link">Sources</a>
|
|
</nav>
|
|
</div>
|
|
</header>
|
|
|
|
<main id="main" class="app-main" tabindex="-1">
|
|
<div class="container login-shell">
|
|
<!-- Centered sign-in card (phase 16): one admin, one password. -->
|
|
<section class="login-card" aria-labelledby="login-title">
|
|
<h1 id="login-title">Sign in</h1>
|
|
<p class="login-sub">
|
|
One admin account, one password. Signing in unlocks the full
|
|
Sources catalog and the answer-tuning controls — chat stays open
|
|
to everyone either way.
|
|
</p>
|
|
<form id="login-form">
|
|
<label class="visually-hidden" for="login-password">Admin password</label>
|
|
<input
|
|
id="login-password"
|
|
name="password"
|
|
type="password"
|
|
autocomplete="current-password"
|
|
required
|
|
>
|
|
<button type="submit" class="login-submit" id="login-submit">Sign in</button>
|
|
</form>
|
|
<p id="login-error" class="login-error" role="alert" hidden></p>
|
|
</section>
|
|
</div>
|
|
</main>
|
|
|
|
<footer class="app-footer">
|
|
<div class="container footer-inner">
|
|
<span>Powered by Reese's self-hosted models</span>
|
|
</div>
|
|
</footer>
|
|
|
|
<script type="module" src="/assets/login.js"></script>
|
|
</body>
|
|
</html>
|