Geizkragen/assets/css/login.css

395 lines
8.6 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ==========================================================
AUTH PAGES Login, Register, Account
Modern glassmorphism style
========================================================== */
/* ─── Auth Wrapper ─── */
.auth {
display: grid;
place-items: center;
min-height: 80vh;
padding: 2.5rem 1.25rem 4rem;
background: var(--bg-main);
}
.auth__grid {
display: grid;
grid-template-columns: 1fr;
justify-items: center;
gap: 1.5rem;
width: min(480px, 100%);
margin: 0 auto;
align-items: center;
}
/* ─── Side Layout (Account page) ─── */
.auth__grid.auth__card__side {
grid-template-columns: max-content 1fr;
align-items: start;
justify-items: stretch;
width: min(900px, 100%);
}
.auth__grid.auth__card__side .auth__card {
width: 100%;
}
.auth__grid.auth__card__side .auth__card.auth__card__side__picture {
display: inline-grid;
width: max-content;
justify-self: center;
padding: 12px;
overflow: hidden;
place-items: center;
}
.auth__grid.auth__card__side .auth__card.auth__card__side__picture .auth__header {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
margin-bottom: 0;
}
.auth__grid.auth__card__side .auth__card.auth__card__side__picture img {
display: block;
max-width: none;
height: auto;
border-radius: var(--radius-lg);
}
.auth__grid.auth__card__stack {
grid-template-columns: 1fr;
align-items: center;
justify-items: center;
}
/* ─── Card ─── */
.auth__card,
.auth__sideCard {
width: min(520px, 100%);
background: var(--bg-card);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-md);
}
.auth__card {
padding: 1.75rem;
}
/* ─── Card Header ─── */
.auth__header {
display: grid;
grid-template-columns: auto 1fr;
column-gap: 14px;
row-gap: 2px;
align-items: center;
margin-bottom: 1rem;
}
.auth__logo {
display: block;
width: 140px;
height: auto;
grid-row: span 2;
}
.auth__title {
margin: 0;
font-size: 1.45rem;
font-weight: 700;
letter-spacing: -0.3px;
color: var(--text-primary);
}
.auth__subtitle {
margin: 0;
color: var(--text-secondary);
font-size: 0.95rem;
line-height: 1.4;
}
/* ─── Alerts ─── */
.auth__alert__error {
margin: 0.75rem 0 1rem;
color: var(--text-invert);
background: linear-gradient(135deg, var(--color-danger), #dc2626);
border-radius: var(--radius-md);
padding: 0.75rem 1rem;
font-size: 0.9rem;
font-weight: 500;
box-shadow: 0 4px 14px rgba(239, 68, 68, 0.2);
}
.auth__alert__sucess {
margin: 0.75rem 0 1rem;
color: var(--text-invert);
background: linear-gradient(135deg, #22c55e, #16a34a);
border-radius: var(--radius-md);
padding: 0.75rem 1rem;
font-size: 0.9rem;
font-weight: 500;
box-shadow: 0 4px 14px rgba(34, 197, 94, 0.2);
}
.auth__alert {
margin: 0.75rem 0 1rem;
color: var(--text-invert);
background: linear-gradient(135deg, var(--color-danger), #dc2626);
border-radius: var(--radius-md);
padding: 0.75rem 1rem;
font-size: 0.9rem;
}
.auth__alert ul {
margin: 0;
padding-left: 1.25rem;
}
.auth__alert li {
margin: 0.25rem 0;
}
.auth__error {
margin: 0.75rem 0;
color: var(--color-danger);
background: var(--color-danger-soft);
border: 1px solid rgba(239, 68, 68, 0.2);
border-radius: var(--radius-md);
padding: 0.75rem 1rem;
font-size: 0.9rem;
}
/* ─── Form ─── */
.auth__form {
margin-top: 0.5rem;
}
.auth__field {
margin-top: 1rem;
}
.auth__search {
margin-top: 1px;
}
.auth__field label {
display: block;
margin: 0 0 0.4rem;
font-size: 0.88rem;
font-weight: 500;
color: var(--text-secondary);
}
.auth__field input[type="text"],
.auth__field input[type="password"],
.auth__field input[type="email"],
.auth__field input[type="file"] {
width: 100%;
box-sizing: border-box;
padding: 0.75rem 0.9rem;
border: 1px solid var(--border-default);
border-radius: var(--radius-md);
background: var(--bg-input);
color: var(--text-primary);
font-family: var(--font-family);
font-size: 0.92rem;
outline: none;
transition: border-color var(--transition-fast),
box-shadow var(--transition-fast),
background var(--transition-fast);
}
.auth__field input[type="text"]:focus,
.auth__field input[type="password"]:focus,
.auth__field input[type="email"]:focus,
.auth__field input[type="file"]:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
background: rgba(26, 34, 51, 0.8);
}
.auth__field input[type="text"]::placeholder,
.auth__field input[type="password"]::placeholder,
.auth__field input[type="email"]::placeholder {
color: var(--text-muted);
}
.auth__field input[type="file"]::file-selector-button {
margin-right: 10px;
padding: 0.6rem 1rem;
border: 0;
border-radius: var(--radius-md);
background: var(--color-primary);
color: #ffffff;
font-weight: 600;
font-family: var(--font-family);
font-size: 0.85rem;
cursor: pointer;
transition: background var(--transition-fast),
transform var(--transition-fast);
}
.auth__field input[type="file"]::file-selector-button:hover {
background: var(--color-primary-hover);
transform: translateY(-1px);
}
.auth__field input[type="file"]::file-selector-button:active {
transform: translateY(0);
}
/* ─── Actions ─── */
.auth__actions {
margin-top: 1.25rem;
}
.auth__submit {
width: 100%;
padding: 0.75rem 1rem;
border: 0;
border-radius: var(--radius-md);
background: linear-gradient(135deg, var(--color-primary), var(--color-primary-hover));
color: #ffffff;
font-weight: 600;
font-family: var(--font-family);
font-size: 0.95rem;
letter-spacing: 0.2px;
cursor: pointer;
transition: transform var(--transition-fast),
box-shadow var(--transition-fast),
opacity var(--transition-fast);
box-shadow: 0 4px 14px rgba(59, 130, 246, 0.25);
}
.auth__submit:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(59, 130, 246, 0.35);
}
.auth__submit:active {
transform: translateY(0);
}
.auth__submit:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
/* Danger button variant */
.auth__submit--danger {
background: linear-gradient(135deg, var(--color-danger), #dc2626);
box-shadow: 0 4px 14px rgba(239, 68, 68, 0.25);
}
.auth__submit--danger:hover {
box-shadow: 0 6px 20px rgba(239, 68, 68, 0.35);
}
/* ─── Links ─── */
.auth__links {
margin-top: 1.25rem;
padding-top: 1rem;
border-top: 1px solid var(--border-subtle);
}
.auth__muted {
margin: 0.5rem 0 0;
color: var(--text-secondary);
font-size: 0.9rem;
}
.auth__muted a {
color: var(--color-primary);
text-decoration: none;
font-weight: 600;
transition: color var(--transition-fast);
}
.auth__muted a:hover {
color: var(--color-primary-hover);
text-decoration: underline;
}
/* ─── Side Card ─── */
.auth__sideCard {
padding: 1.25rem;
background: var(--bg-card);
}
.auth__sideCard h3 {
margin: 0 0 0.75rem;
font-size: 1.05rem;
color: var(--text-primary);
}
.auth__sideCard ul {
margin: 0;
padding-left: 1.25rem;
color: var(--text-secondary);
}
.auth__sideCard li {
margin: 0.5rem 0;
color: var(--text-secondary);
}
/* ─── Tip Box ─── */
.auth__tip {
margin-top: 0.75rem;
padding: 0.7rem 0.9rem;
border-radius: var(--radius-md);
background: var(--color-primary-soft);
border: 1px solid rgba(59, 130, 246, 0.15);
color: var(--text-secondary);
font-size: 0.82rem;
line-height: 1.5;
}
/* ==========================================================
RESPONSIVE
========================================================== */
@media (max-width: 900px) {
.auth__grid {
width: min(480px, 100%);
}
.auth__grid.auth__card__side {
grid-template-columns: 1fr;
justify-items: center;
width: min(480px, 100%);
}
.auth__logo {
width: 120px;
}
.auth__sideCard {
display: none;
}
}
@media (max-width: 520px) {
.auth {
padding-top: 1.5rem;
}
.auth__card {
padding: 1.25rem;
}
.auth__header {
grid-template-columns: 1fr;
}
.auth__logo {
width: 140px;
grid-row: auto;
}
.auth__title {
font-size: 1.25rem;
}
}