butterfly/themes/nordic-minimal/login.css
Claude b276342d9f Temas com layouts estruturalmente distintos (não só cores)
- nordic-minimal: split-screen padrão Stripe/Notion — painel branco
  full-height ancorado à direita, anéis decorativos no lado livre,
  form alinhado à esquerda dentro do painel.
- carbon-neon: janela de terminal ancorada à esquerda — title bar com
  os 3 botões (no .card-header vazio do card), título user@glpi:~/login,
  labels com prompt '>', cursor '_' piscando no h2, botão '$ ENTRAR'
  outline que preenche no hover.
- sunset-mesh: borderless padrão Linear/Vercel — sem card, coluna
  estreita direto no mesh, inputs underline, botão pill.
- aurora-glass: glass compacto centrado (26rem) abraçando o form,
  inputs pill e dois blobs de aurora animados (keyframes) atrás.

Todos estilizam select2 do dropdown de origem de login e têm fallback
responsivo (painel/terminal centralizam em telas estreitas). Previews
regenerados refletindo o layout de cada tema.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 20:42:00 -03:00

151 lines
No EOL
3.5 KiB
CSS

@charset "UTF-8";
/* Tema Nordic Minimal — split-screen: painel branco full-height à direita,
fundo decorativo à esquerda (padrão Stripe/Notion) */
body.welcome-anonymous,
body.login-page,
main.page-anonymous {
min-height: 100vh;
background-color: #eef2f6;
background-image: linear-gradient(rgba(30, 58, 95, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(30, 58, 95, 0.05) 1px, transparent 1px), radial-gradient(45% 60% at 25% 35%, rgba(30, 58, 95, 0.16) 0%, transparent 70%), radial-gradient(35% 45% at 10% 80%, rgba(96, 165, 250, 0.18) 0%, transparent 70%);
background-size: 36px 36px, 36px 36px, 100% 100%, 100% 100%;
background-attachment: fixed;
}
/* anéis decorativos no lado esquerdo livre */
main.page-anonymous {
position: relative;
}
main.page-anonymous::before {
content: "";
position: fixed;
left: 8vw;
top: 50%;
transform: translateY(-50%);
width: 340px;
height: 340px;
border: 2px solid rgba(30, 58, 95, 0.14);
border-radius: 50%;
pointer-events: none;
}
main.page-anonymous::after {
content: "";
position: fixed;
left: calc(8vw + 60px);
top: calc(50% - 110px);
width: 220px;
height: 220px;
border: 2px dashed rgba(30, 58, 95, 0.2);
border-radius: 50%;
pointer-events: none;
}
/* painel branco ancorado à direita, altura total */
.page-anonymous .flex-fill.d-flex.flex-column {
padding: 0 !important;
margin: 0 !important;
min-height: 100vh;
align-items: flex-end;
}
.page-anonymous .container-tight {
margin: 0 !important;
width: 30rem;
max-width: 100vw !important;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
background: #ffffff;
padding: 2rem 3.2rem !important;
box-shadow: -32px 0 70px rgba(30, 58, 95, 0.16);
}
.page-anonymous .container-tight .text-center {
text-align: left !important;
}
.page-anonymous .main-content-card .card-body {
padding: 0 !important;
}
.page-anonymous .main-content-card .col-md-5 {
width: 100% !important;
max-width: none;
flex: 1 1 100%;
}
.page-anonymous .card-header {
border: 0;
background: transparent;
padding-left: 0;
}
.page-anonymous .card-header h2 {
color: #1e293b;
font-weight: 700;
margin: 0 !important;
text-align: left;
}
.page-anonymous .form-label {
color: #475569;
font-weight: 600;
font-size: 0.76rem;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.page-anonymous .form-control,
.page-anonymous .form-select {
background: #fafbfc;
border: 1px solid #dfe5ec;
border-radius: 10px;
color: #1e293b;
padding: 0.7rem 0.9rem;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.page-anonymous .form-control:focus,
.page-anonymous .form-select:focus {
background: #ffffff;
border-color: #1e3a5f;
box-shadow: 0 0 0 0.25rem rgba(30, 58, 95, 0.12);
}
.page-anonymous .select2-container .select2-selection {
background: #fafbfc;
border: 1px solid #dfe5ec;
border-radius: 10px;
}
.page-anonymous .btn.btn-primary {
background: #1e3a5f;
border: 0;
border-radius: 10px;
color: #ffffff;
padding: 0.75rem;
font-weight: 600;
transition: filter 0.15s ease, transform 0.15s ease;
}
.page-anonymous .btn.btn-primary:hover {
filter: brightness(1.15);
transform: translateY(-1px);
}
.page-anonymous .text-muted,
.page-anonymous .copyright {
color: #94a3b8 !important;
}
.page-anonymous a {
color: #1e3a5f !important;
}
@media (max-width: 900px) {
.page-anonymous .container-tight {
width: 100vw;
box-shadow: none;
}
main.page-anonymous::before,
main.page-anonymous::after {
display: none;
}
}