Files
mathew/frontend/app/assets/css/_states.scss
2026-10-01 02:29:21 +02:00

81 lines
1.9 KiB
SCSS

@use 'mixins' as *;
// ---------- States ----------
.empty {
text-align: center;
padding: 72px 20px;
color: var(--muted);
.glyph {
font-size: 3.4rem;
line-height: 1;
margin-bottom: 14px;
opacity: 0.65;
}
h3 { margin: 0 0 6px; color: var(--text); font-size: 1.15rem; }
p { margin: 0 auto 22px; max-width: 42ch; font-size: 0.93rem; }
// two ways forward from a dead end, side by side
.empty-actions {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 12px;
}
}
.banner {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 15px 18px;
border-radius: 13px;
border: 1px solid color-mix(in srgb, var(--danger) 35%, var(--border));
background: color-mix(in srgb, var(--danger) 7%, var(--surface));
font-size: 0.9rem;
margin: 14px 0;
.glyph { color: var(--danger); font-weight: 800; }
code {
background: color-mix(in srgb, var(--text) 8%, transparent);
padding: 0.1em 0.4em;
border-radius: 5px;
font-size: 0.85em;
}
// a rule the same size and shape, in another temper: green once a change
// has landed somewhere, blue for what the page wants you to know first
&.banner-success {
border-color: color-mix(in srgb, var(--success) 35%, var(--border));
background: color-mix(in srgb, var(--success) 7%, var(--surface));
.glyph { color: var(--success); }
}
&.banner-info {
border-color: color-mix(in srgb, var(--accent) 30%, var(--border));
background: color-mix(in srgb, var(--accent) 6%, var(--surface));
.glyph { color: var(--accent); }
}
.banner-link {
color: var(--accent);
font-weight: 650;
text-decoration: underline;
text-underline-offset: 2px;
white-space: nowrap;
&:hover { color: var(--accent-strong); }
}
}
.skeleton { border-radius: 16px; height: 172px; @include shimmer; }
@keyframes shimmer {
to { background-position-x: -200%; }
}