You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.7 KiB
96 lines
3.7 KiB
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Client Portal - OutsideTheBox</title> |
|
<link rel="stylesheet" href="/static/css/style.css"> |
|
<style> |
|
.portal-wrap { max-width: 760px; margin: 2.5rem auto; padding: 1.5rem; } |
|
.portal-card { |
|
border: 1px solid rgba(255,255,255,0.16); |
|
border-radius: 16px; |
|
padding: 1.4rem; |
|
background: rgba(255,255,255,0.03); |
|
box-shadow: 0 10px 24px rgba(0,0,0,0.18); |
|
} |
|
.portal-card h1 { margin-top: 0; margin-bottom: 0.45rem; } |
|
.portal-sub { opacity: 0.9; margin-bottom: 1.25rem; } |
|
.portal-form { display: grid; gap: 0.9rem; } |
|
.portal-form label { display: block; font-weight: 600; margin-bottom: 0.35rem; } |
|
.portal-form input { |
|
width: 100%; |
|
padding: 0.8rem 0.9rem; |
|
border-radius: 10px; |
|
border: 1px solid rgba(255,255,255,0.18); |
|
background: rgba(255,255,255,0.05); |
|
color: inherit; |
|
box-sizing: border-box; |
|
} |
|
.portal-actions { display: flex; gap: 0.8rem; flex-wrap: wrap; margin-top: 0.4rem; } |
|
.portal-btn { |
|
display: inline-block; |
|
padding: 0.8rem 1rem; |
|
border-radius: 10px; |
|
text-decoration: none; |
|
border: 1px solid rgba(255,255,255,0.18); |
|
background: rgba(255,255,255,0.06); |
|
color: inherit; |
|
cursor: pointer; |
|
} |
|
.portal-note { margin-top: 1rem; opacity: 0.88; font-size: 0.95rem; } |
|
.portal-links { margin-top: 1rem; } |
|
.portal-links a { margin-right: 1rem; } |
|
.portal-msg { |
|
margin-bottom: 1rem; |
|
padding: 0.85rem 1rem; |
|
border-radius: 10px; |
|
border: 1px solid rgba(255,255,255,0.16); |
|
background: rgba(255,255,255,0.04); |
|
} |
|
</style> |
|
<link rel="icon" type="image/png" href="/static/favicon.png"> |
|
</head> |
|
<body> |
|
<div class="portal-wrap"> |
|
<div class="portal-card"> |
|
<h1>OutsideTheBox Client Portal</h1> |
|
<p class="portal-sub">Secure access for invoices, balances, and account information.</p> |
|
|
|
{% if portal_message %} |
|
<div class="portal-msg">{{ portal_message }}</div> |
|
{% endif %} |
|
|
|
<form class="portal-form" method="post" action="/portal/login"> |
|
<div> |
|
<label for="email">Email Address</label> |
|
<input id="email" name="email" type="email" placeholder="client@example.com" value="{{ portal_email or '' }}" required> |
|
</div> |
|
|
|
<div> |
|
<label for="credential">Access Code or Password</label> |
|
<input id="credential" name="credential" type="password" placeholder="Enter your one-time access code or password" required> |
|
</div> |
|
|
|
<div class="portal-actions"> |
|
<button class="portal-btn" type="submit">Sign In</button> |
|
<a class="portal-btn" href="https://outsidethebox.top/">Home</a> |
|
<a class="portal-btn" href="mailto:support@outsidethebox.top?subject=Portal%20Support">Contact Support</a> |
|
</div> |
|
</form> |
|
|
|
|
|
<div style="margin-top:15px;"> |
|
<a href="/portal/forgot-password">Forgot your password?</a> |
|
</div> |
|
|
|
<p class="portal-note"> |
|
First-time users should sign in with the one-time access code provided by OutsideTheBox, then set a password. |
|
This access code is single-use and is cleared after password setup. Future logins use your email address and password. |
|
</p> |
|
</div> |
|
</div> |
|
|
|
{% include "footer.html" %} |
|
</body> |
|
</html>
|
|
|