193 lines
4.4 KiB
HTML
193 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.0">
|
|
<title>Presenton</title>
|
|
<style>
|
|
@font-face {
|
|
font-family: "Syne";
|
|
src: url("../assets/fonts/Syne-Regular.ttf") format("truetype");
|
|
font-weight: 400;
|
|
font-style: normal;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Syne";
|
|
src: url("../assets/fonts/Syne-Medium.ttf") format("truetype");
|
|
font-weight: 500;
|
|
font-style: normal;
|
|
}
|
|
|
|
:root {
|
|
color-scheme: light;
|
|
--bg-top: #ffffff;
|
|
--bg-bottom: #f2f4ff;
|
|
--title: #2d3347;
|
|
--subtitle: #9298ae;
|
|
--hint: #7e86a0;
|
|
--track: rgba(255, 255, 255, 0.76);
|
|
--track-border: rgba(128, 120, 212, 0.12);
|
|
--fill-start: #735cf7;
|
|
--fill-mid: #6e67f7;
|
|
--fill-end: #6b8eff;
|
|
--progress: 0.24;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 100%;
|
|
margin: 0;
|
|
}
|
|
|
|
body {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100vw;
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
font-family: "Syne", "Segoe UI", system-ui, sans-serif;
|
|
color: var(--title);
|
|
|
|
}
|
|
|
|
body::before {
|
|
content: "";
|
|
position: fixed;
|
|
inset: -20%;
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
.launch-screen {
|
|
position: relative;
|
|
z-index: 1;
|
|
width: min(100%, 540px);
|
|
padding: 24px 28px 32px;
|
|
text-align: center;
|
|
}
|
|
|
|
.logo {
|
|
width: min(54vw, 300px);
|
|
margin: 0 auto 36px;
|
|
}
|
|
|
|
.title {
|
|
margin: 0;
|
|
font-size: clamp(1.3rem, 2.05vw, 1.72rem);
|
|
line-height: 1.12;
|
|
letter-spacing: -0.045em;
|
|
font-family: "Syne", system-ui, sans-serif;
|
|
font-weight: 500;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.subtitle {
|
|
margin: 14px 0 0;
|
|
font-size: clamp(0.98rem, 1.8vw, 1.04rem);
|
|
line-height: 1.5;
|
|
color: var(--subtitle);
|
|
font-weight: 500;
|
|
font-family: "Syne", "Segoe UI", system-ui, sans-serif;
|
|
}
|
|
|
|
.progress-track {
|
|
position: relative;
|
|
width: min(100%, 360px);
|
|
height: 12px;
|
|
margin: 40px auto 0;
|
|
overflow: hidden;
|
|
border-radius: 999px;
|
|
background: var(--track);
|
|
box-shadow:
|
|
inset 0 0 0 1px var(--track-border),
|
|
0 14px 32px rgba(112, 105, 186, 0.12);
|
|
}
|
|
|
|
.progress-fill {
|
|
position: absolute;
|
|
inset: 0 auto 0 0;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
border-radius: inherit;
|
|
background: linear-gradient(90deg, var(--fill-start) 0%, var(--fill-mid) 56%, var(--fill-end) 100%);
|
|
box-shadow: 0 6px 18px rgba(112, 97, 242, 0.28);
|
|
transform: scaleX(var(--progress));
|
|
transform-origin: left center;
|
|
transition: transform 380ms ease;
|
|
}
|
|
|
|
.progress-fill::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
|
|
animation: shimmer 1.85s linear infinite;
|
|
}
|
|
|
|
.hint {
|
|
min-height: 1.5rem;
|
|
margin: 16px 0 0;
|
|
font-size: 0.88rem;
|
|
line-height: 1.5;
|
|
color: var(--hint);
|
|
letter-spacing: 0.01em;
|
|
font-family: "Syne", "Segoe UI", system-ui, sans-serif;
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
transform: translateX(-125%);
|
|
}
|
|
|
|
100% {
|
|
transform: translateX(220%);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.launch-screen {
|
|
width: min(100%, 440px);
|
|
padding: 16px 24px 24px;
|
|
}
|
|
|
|
.logo {
|
|
width: min(74vw, 260px);
|
|
margin-bottom: 30px;
|
|
}
|
|
|
|
.title {
|
|
font-size: clamp(1.35rem, 6.7vw, 1.8rem);
|
|
white-space: normal;
|
|
}
|
|
|
|
.progress-track {
|
|
width: min(100%, 320px);
|
|
margin-top: 34px;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<main class="launch-screen" aria-live="polite">
|
|
<img src="../assets/images/presenton_logo.png" alt="Presenton" class="logo">
|
|
<h1 class="title">Launching Presenton...</h1>
|
|
<p class="subtitle" data-startup-subtitle>Please wait a moment</p>
|
|
<div class="progress-track" role="progressbar" aria-label="Launching Presenton" aria-valuemin="0"
|
|
aria-valuemax="100" aria-valuenow="24" data-startup-meter>
|
|
<div class="progress-fill" data-startup-progress></div>
|
|
</div>
|
|
<p class="hint" data-startup-hint>Preparing your workspace</p>
|
|
</main>
|
|
<script src="./script.js"></script>
|
|
</body>
|
|
|
|
</html> |