@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%; } }