
.toast-error   { background:var(--red);    color:#fff; }

/* ── Modal ───────────────────────────────────────────────────── */
.overlay {
  position:fixed; inset:0; z-index:800;
  background:rgba(0,0,0,.72); backdrop-filter:blur(8px);
  display:flex; align-items:flex-end; justify-content:center;
  animation:fadeIn .15s var(--ease);
}
@media(min-width:600px) { .overlay { align-items:center; } }
.sheet {
  background:var(--surface); border-radius:var(--r16) var(--r16) 0 0;
  width:100%; max-width:520px; max-height:92dvh;
  overflow-y:auto; animation:sheetUp .25s var(--ease);
  border:1px solid var(--border); border-bottom:none;
}
@media(min-width:600px) {
  .sheet { border-radius:var(--r16); border-bottom:1px solid var(--border); }
}
.sheet-handle {
  width:36px; height:4px; background:var(--border2);
  border-radius:2px; margin:.65rem auto .2rem;
}
@media(min-width:600px) { .sheet-handle { display:none; } }
.sheet-head {
  display:flex; align-items:center; justify-content:space-between;
  padding:.9rem 1.25rem; border-bottom:1px solid var(--border); flex-shrink:0;
}
.sheet-title { font-size:1rem; font-weight:700; }
.sheet-body  { padding:1.25rem; display:flex; flex-direction:column; gap:.9rem; }
.close-btn {
  width:28px; height:28px; border-radius:50%; background:var(--border);
  color:var(--text-2); font-size:.95rem;
  display:flex; align-items:center; justify-content:center;
  transition:all var(--t1);
}
.close-btn:hover { background:var(--border2); color:var(--text-1); }

/* ── Skeleton ────────────────────────────────────────────────── */
.skel {
  background:linear-gradient(90deg,var(--card) 25%,var(--hover) 50%,var(--card) 75%);
  background-size:200% 100%; animation:shimmer 1.4s infinite;
  border-radius:var(--r4);
}

/* ── Animations ──────────────────────────────────────────────── */
@keyframes spin    { to { transform:rotate(360deg); } }
@keyframes fadeIn  { from { opacity:0; } to { opacity:1; } }
@keyframes slideUp { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }
@keyframes sheetUp { from { transform:translateY(100%); } to { transform:translateY(0); } }
@keyframes shimmer { 0% { background-position:-200% 0; } 100% { background-position:200% 0; } }
@keyframes pulse   { 0%,100%{opacity:1;} 50%{opacity:.45;} }
@keyframes float   { 0%,100%{transform:translateY(0);} 50%{transform:translateY(-8px);} }
@keyframes zoomIn  { from{opacity:0;transform:scale(.92);} to{opacity:1;transform:scale(1);} }

.anim-fade  { animation:fadeIn .25s var(--ease); }
.anim-slide { animation:slideUp .3s var(--ease); }
.anim-zoom  { animation:zoomIn .25s var(--ease); }

/* ── Admin Panel ───────────────────────────────────────────── */
.admin-shell {
  min-height:100dvh;
  background:radial-gradient(circle at top right, rgba(47,128,237,.16), transparent 28%), var(--bg);
  color:var(--text-1);
}