/* ============================================================
   HEJ NYKÖPING — Public feedback bundle
   ------------------------------------------------------------
   Medvetet utbruten delmängd av components.css för konsumenter
   (t.ex. temat) som inte vill ladda hela komponentkatalogen.

   Innehåller: notice, empty-state, skeleton, spinner.
   Källa: components.css. Håll i synk vid ändringar.
   Konsumerar BARA tokens från ../tokens.css.
   ============================================================ */

.notice {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--notice-padding-y) var(--notice-padding-x);
  border: var(--notice-border-width) solid transparent;
  border-radius: var(--notice-radius);
  font-size: var(--text-sm);
}
.notice__icon { flex: none; width: var(--icon-size-md); height: var(--icon-size-md); }
.notice__body { flex: 1; }
.notice__body > * { margin: 0; }
.notice__body > * + * { margin-top: var(--space-1); }
.notice__title { font-weight: var(--weight-bold); }
.notice--info    { background: var(--notice-info-bg);    color: var(--notice-info-text);    border-color: var(--notice-info-border); }
.notice--success { background: var(--notice-success-bg); color: var(--notice-success-text); border-color: var(--notice-success-border); }
.notice--warning { background: var(--notice-warning-bg); color: var(--notice-warning-text); border-color: var(--notice-warning-border); }
.notice--danger  { background: var(--notice-danger-bg);  color: var(--notice-danger-text);  border-color: var(--notice-danger-border); }

.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-3);
  padding: var(--space-12) var(--space-6);
}
.empty-state__icon { color: var(--empty-icon-color); width: var(--empty-icon-size); height: var(--empty-icon-size); }
.empty-state__title { font-family: var(--font-display); font-size: var(--text-xl); font-weight: var(--weight-bold); color: var(--empty-title); }
.empty-state__text { color: var(--empty-text); max-width: 44ch; }

.skeleton {
  position: relative;
  overflow: hidden;
  background: var(--skeleton-bg);
  border-radius: var(--skeleton-radius);
}
.skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, var(--skeleton-bg-strong), transparent);
  animation: hn-skeleton 1.4s var(--ease-in-out) infinite;
}
.skeleton--text { height: 1em; margin: 0.35em 0; }
.skeleton--title { height: 1.5em; width: 60%; }
.skeleton--avatar { width: var(--avatar-size-md); height: var(--avatar-size-md); border-radius: var(--avatar-radius); }
.skeleton--media { aspect-ratio: 16 / 9; }
@keyframes hn-skeleton { 100% { transform: translateX(100%); } }

.spinner {
  display: inline-block;
  width: var(--icon-size-sm);
  height: var(--icon-size-sm);
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: var(--radius-full);
  animation: hn-spin 0.7s linear infinite;
}
@keyframes hn-spin { 100% { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .skeleton::after,
  .spinner { animation: none; }
}
