@layer base {
  :focus-visible { outline: 3px solid var(--ivr-focus); outline-offset: 3px; }
  button:not(:disabled), summary { cursor: pointer; }
  [id] { scroll-margin-top: 2rem; }
}
@layer components {
  .ivr-btn { @apply inline-flex min-h-11 items-center justify-center gap-2 rounded-control border border-brand bg-brand px-5 py-2.5 text-sm font-semibold text-on-brand transition-colors hover:border-brand-hover hover:bg-brand-hover active:bg-brand-active disabled:cursor-not-allowed disabled:border-line disabled:bg-line disabled:text-muted; }
  .ivr-btn-secondary { @apply border-control bg-surface text-brand-link hover:border-control hover:bg-tint active:bg-tint; }
  .ivr-btn-danger { @apply border-danger bg-danger-soft text-danger hover:border-danger hover:bg-danger-soft active:bg-danger-soft; }
  .ivr-input { @apply block min-h-11 w-full rounded-control border border-control bg-surface px-3 py-2.5 text-sm text-ink placeholder:text-muted disabled:cursor-not-allowed disabled:bg-tint; }
  .ivr-input[aria-invalid=true] { @apply border-2 border-danger; }
  .ivr-label { @apply mb-2 block text-sm font-semibold; }
  .ivr-help { @apply mt-2 text-xs leading-relaxed text-muted; }
  .ivr-card { @apply rounded-card border border-line bg-surface p-6; }
  .ivr-badge { @apply inline-flex items-center gap-1.5 rounded-full bg-tint px-3 py-1 text-xs font-semibold text-brand-link; }
  .ivr-badge-neutral { @apply bg-tint text-muted; }
  .ivr-badge-warning { @apply bg-warning-soft text-warning; }
  .ivr-badge-danger { @apply bg-danger-soft text-danger; }
  .ivr-badge-info { @apply bg-info-soft text-info; }
  .ivr-alert { @apply rounded-control border border-control bg-info-soft p-4 text-sm leading-relaxed text-info; }
  .ivr-alert-warning { @apply bg-warning-soft text-warning; }
  .ivr-alert-danger { @apply border-danger bg-danger-soft text-danger; }
  .ivr-table-frame { @apply overflow-x-auto rounded-card border border-line bg-surface; }
  .ivr-table { @apply w-full border-collapse text-left text-sm; }
  .ivr-table caption { @apply px-4 py-3 text-left font-semibold; }
  .ivr-table th { @apply bg-tint px-4 py-3 text-xs font-semibold text-muted; }
  .ivr-table td { @apply border-t border-line px-4 py-4; }
  .ivr-empty { @apply rounded-card border border-dashed border-control bg-surface px-6 py-12 text-center; }
  .ivr-node { @apply block w-full rounded-card border border-control bg-surface p-4 text-left; }
  .ivr-node[aria-pressed=true] { @apply border-2 border-brand bg-tint; }
  .ivr-close { @apply relative inline-flex size-6 shrink-0 items-center justify-center rounded border-0 bg-transparent p-1 text-current opacity-65 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30; }
  .ivr-tab { @apply min-h-11 rounded-control px-4 py-2 text-sm font-semibold text-muted hover:bg-tint; }
  .ivr-tab[aria-selected=true] { @apply bg-tint text-brand-link; }
  .ivr-btn[aria-pressed=true], .ivr-btn[aria-current=page] { @apply border-brand bg-tint text-brand-link; }
  .ivr-spy-link { @apply rounded-control p-3 text-muted hover:bg-tint; }
  .ivr-spy-link[aria-current=location] { @apply bg-tint font-semibold text-brand-link; }
  .ivr-tooltip { @apply invisible absolute left-0 top-full z-10 mt-2 w-64 rounded-control border border-control bg-surface p-3 text-xs leading-relaxed text-ink opacity-0 group-hover:visible group-hover:opacity-100 group-focus-within:visible group-focus-within:opacity-100; }
  .ivr-progress { @apply h-3 w-full overflow-hidden rounded-full; }
}
.ivr-close::before, .ivr-close::after {
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:1rem;
  height:1.5px;
  border-radius:1px;
  background:currentColor;
}
.ivr-close::before { transform:translate(-50%,-50%) rotate(45deg); }
.ivr-close::after { transform:translate(-50%,-50%) rotate(-45deg); }
progress.ivr-progress { appearance:none; background:var(--ivr-line); color:var(--ivr-brand); }
progress.ivr-progress::-webkit-progress-bar { background:var(--ivr-line); }
progress.ivr-progress::-webkit-progress-value { background:var(--ivr-brand); }
progress.ivr-progress::-moz-progress-bar { background:var(--ivr-brand); }
/* Preserve semantic hidden states regardless of flex/grid utility declarations. */
[hidden] { display:none !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
