/* Toasts: short, non-blocking messages (copied, saved, offline, translation failed…). Bottom centre, above the safe area. */
.toasts { position: fixed; z-index: 100; left: 50%; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%);
  width: min(440px, calc(100% - 32px)); display: grid; gap: 8px; pointer-events: none; }
.toast { pointer-events: auto; display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: 10px; align-items: start; background: #fff; color: #0d1512;
  border-radius: 18px; padding: 12px 10px 12px 12px; box-shadow: 0 16px 40px rgba(0, 30, 18, .22), 0 0 0 1px rgba(0, 40, 25, .06);
  font: 400 .9rem/1.45 "Lexend", "Segoe UI", system-ui, -apple-system, sans-serif; }
.toast .ti { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: #1fa463; }
.toast .ti svg { width: 17px; height: 17px; }
.toast[data-type="error"] .ti { background: #d93025; } .toast[data-type="warn"] .ti { background: #e3a008; } .toast[data-type="info"] .ti { background: #2f6f53; }
.toast b { display: block; font-weight: 500; margin-top: 4px; }
.toast p { margin: 2px 0 0; color: #4a5852; overflow-wrap: anywhere; }
.toast b + p { margin-top: 1px; }
.toast .tact { margin-top: 8px; border: 0; border-radius: 999px; padding: 7px 14px; font-family: inherit; font-weight: 500; font-size: .85rem; background: #0b3d27; color: #fff; cursor: pointer; }
.toast .tx { width: 32px; height: 32px; border: 0; background: none; border-radius: 50%; color: #7b8781; cursor: pointer; display: grid; place-items: center; margin: -4px -2px 0 0; }
.toast .tx:hover { background: #f1f4f2; } .toast .tx svg { width: 16px; height: 16px; }
@media (prefers-reduced-motion: no-preference) {
  .toast { animation: toast-in .28s cubic-bezier(.2, .9, .3, 1.2); } .toast.out { animation: toast-out .2s ease-in forwards; }
}
.toast.out { opacity: 0; }
@keyframes toast-in { from { opacity: 0; transform: translateY(14px) scale(.98); } }
@keyframes toast-out { to { opacity: 0; transform: translateY(8px); } }
/* Network status note (Voice packs page, first-visit prompt, before downloads) */
.netnote { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; align-items: start; text-align: left; border-radius: 16px; padding: 12px 14px; background: #fdecea; color: #7a1a12; font: 400 .9rem/1.45 "Lexend", system-ui, sans-serif; }
.netnote.warn { background: #fdf5e1; color: #5f4200; } .netnote.ok { background: #e3f1e9; color: #0b3d27; }
.netnote .ni { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-weight: 600; background: #d93025; }
.netnote.warn .ni { background: #e3a008; } .netnote.ok .ni { background: #1fa463; }
.netnote b { display: block; font-weight: 500; } .netnote p { margin: 2px 0 0; }
