Printio/templates/unactivated.html
2025-10-27 22:24:25 -07:00

163 lines
4.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Activation Required</title>
<link rel="icon" type="image/x-icon" href="/static/images/favicon.ico" />
<link rel="stylesheet" href="/static/css/styles.css" />
<link rel="stylesheet" href="/static/fontawesome/css/all.min.css" />
<style>
:root{
--brand: #1e40af; /* blue-800 */
--brand-hover:#15327f;
--danger: #ef4444; /* red-500 */
--danger-ink: #7f1d1d; /* dark red text */
--border: #d1d5db; /* gray-300 */
--text: #111827; /* gray-900 */
--muted: #4b5563; /* gray-600 */
--bg: #ffffff;
--bg-alt: #f9fafb; /* gray-50 */
--focus: #2563eb; /* blue-600 */
}
@media (prefers-color-scheme: dark){
:root{
--brand: #60a5fa;
--brand-hover:#3b82f6;
--danger:#f87171;
--danger-ink:#fecaca;
--border:#374151;
--text:#e5e7eb;
--muted:#9ca3af;
--bg:#0b0f14;
--bg-alt:#111827;
--focus:#60a5fa;
}
}
*{ box-sizing: border-box; }
html, body{ height: 100%; }
body{
margin: 0;
font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.55;
}
#navbar{ position: sticky; top: 0; z-index: 20; }
.content-wrapper{
max-width: 900px;
margin: 0 auto;
padding: 16px;
}
@media (min-width: 980px){
.content-wrapper{ padding: 24px; }
}
.card{
padding: 20px;
border: 1px solid var(--border);
border-radius: 12px;
background: var(--bg-alt);
}
.center{
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 14px;
}
h1{ margin: 0; font-size: clamp(1.5rem, 2vw, 2rem); }
.alert{
width: 100%;
display: grid;
grid-template-columns: auto 1fr;
gap: 12px;
align-items: start;
padding: 12px 14px;
border: 1px solid var(--danger);
border-radius: 10px;
background: color-mix(in srgb, var(--danger) 12%, transparent);
}
.alert i{ color: var(--danger); }
.alert strong{ color: var(--danger-ink); }
.actions{
display: flex;
gap: 10px;
flex-wrap: wrap;
justify-content: center;
margin-top: 6px;
}
.btn{
appearance: none;
border: 1px solid transparent;
border-radius: 10px;
padding: 10px 16px;
font-size: 1rem;
cursor: pointer;
color: #fff;
background: var(--brand);
display: inline-flex;
align-items: center;
gap: 8px;
text-decoration: none;
}
.btn:hover{ background: var(--brand-hover); }
.btn:focus-visible{
outline: 3px solid var(--focus);
outline-offset: 2px;
}
.muted{ color: var(--muted); font-size: 0.96rem; }
.sr-only{
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden; clip: rect(0,0,1,1);
white-space: nowrap; border: 0;
}
</style>
</head>
<body>
<div id="navbar" role="navigation" aria-label="Primary"></div>
<script>
fetch('/static/html/nav.html')
.then(r => r.ok ? r.text() : Promise.reject(r.status))
.then(html => { document.getElementById('navbar').innerHTML = html; })
.catch(() => {
document.getElementById('navbar').innerHTML =
'<div class="card" role="alert">Navigation failed to load.</div>';
});
</script>
<main class="content-wrapper">
<section class="card center" aria-labelledby="activation-heading">
<h1 id="activation-heading">Activation Required</h1>
<div class="alert" role="alert" aria-live="polite">
<i class="fa fa-triangle-exclamation" aria-hidden="true"></i>
<div>
<p class="primary"><strong>This software is not activated.</strong></p>
<p class="muted">To continue, activate your license from the About page.</p>
</div>
</div>
<div class="actions" role="group" aria-label="Activation actions">
<a class="btn" href="/about">
<i class="fa fa-key" aria-hidden="true"></i>
Go to About to Activate
</a>
</div>
</section>
</main>
</body>
</html>