Files
Skald-Circle/web/css/setup-page.css
T
dguiducci 7dd77d4ef4 feat(auth): login, roles, user mgmt, setup wizard, and session guard
- New skald-setup crate: interactive first-run wizard that creates the
  admin user, prompts for encryption choice and password
- Auth system: session-based login/logout with cookie, guard middleware
- Roles API: CRUD for data-driven roles, seeded on first boot
- Users management API: create, list, edit, delete users
- Setup state API: check if first admin has been created
- Frontend: login-page, setup-page, users-page, roles-page, profile-page
  components with corresponding CSS
- Topbar: avatar dropdown with profile link and logout
- Sidebar: nav entries for Users and Roles (admin only)
- Page shell CSS: layout support for the new pages
- build.sh: builds both skald and skald-setup binaries
- run.sh: runs skald-setup before the server loop
- CLAUDE.md: updated workspace layout and build/run docs
2026-07-10 19:19:25 +01:00

108 lines
1.8 KiB
CSS

.setup-page,
.login-page {
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
background: var(--bs-body-bg);
overflow: auto;
padding: 24px;
}
.setup-card,
.login-card {
width: 100%;
max-width: 440px;
background: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: 8px;
box-shadow: var(--card-shadow);
padding: 36px 32px;
}
.setup-logo,
.login-logo {
text-align: center;
margin-bottom: 24px;
}
.setup-logo img,
.login-logo img {
width: 64px;
height: 64px;
border-radius: 14px;
}
.setup-title,
.login-title {
font-size: 1.5rem;
font-weight: 700;
text-align: center;
margin: 0 0 6px;
}
.setup-subtitle,
.login-subtitle {
text-align: center;
color: var(--placeholder-color);
font-size: .9rem;
margin: 0 0 28px;
}
.setup-error,
.login-error {
background: rgba(220, 53, 69, .1);
border: 1px solid rgba(220, 53, 69, .35);
border-radius: var(--card-radius);
padding: 10px 14px;
margin-bottom: 18px;
font-size: .85rem;
color: #dc3545;
}
.setup-warn {
background: rgba(255, 193, 7, .1);
border: 1px solid rgba(255, 193, 7, .35);
border-radius: var(--card-radius);
padding: 12px 14px;
margin-top: 18px;
font-size: .82rem;
color: var(--bs-secondary-color);
}
.setup-warn strong {
color: #b8860b;
}
[data-bs-theme="dark"] .setup-warn strong {
color: #ffc107;
}
.setup-submit,
.login-submit {
width: 100%;
margin-top: 24px;
}
.setup-spinner,
.login-spinner {
width: 16px;
height: 16px;
border: 2px solid currentColor;
border-right-color: transparent;
border-radius: 50%;
display: inline-block;
animation: setup-spin .65s linear infinite;
vertical-align: -3px;
margin-right: 6px;
}
@keyframes setup-spin {
to { transform: rotate(360deg); }
}
.login-spinner {
animation-name: setup-spin;
}