/* 前台统一提示：Toast / 横幅 / 状态行 / 确认弹层，脚本见 js/notice.js */
.nt-toasts { position:fixed; z-index:1000; left:50%; bottom:24px; transform:translateX(-50%); display:flex; flex-direction:column; gap:8px; align-items:center; max-width:calc(100vw - 32px); pointer-events:none; }
.nt-toast { display:flex; align-items:center; gap:10px; padding:11px 18px; border-radius:999px; background:rgba(46,40,37,.94); color:#fff; font-size:15px; line-height:1.5; box-shadow:0 10px 30px rgba(0,0,0,.2); animation:nt-in .2s ease; }
.nt-toast i { flex:none; width:20px; height:20px; border-radius:50%; display:grid; place-items:center; font-style:normal; font-size:12px; font-weight:700; color:#fff; }
.nt-toast.ok i { background:#4caf86; }
.nt-toast.info i { background:#e39a6d; }
.nt-toast.err i { background:#e2685c; }
.nt-toast.out { opacity:0; transform:translateY(8px); transition:opacity .2s ease, transform .2s ease; }
@keyframes nt-in { from { opacity:0; transform:translateY(10px); } }

.nt-banner { display:flex; gap:12px; align-items:flex-start; padding:13px 16px; margin:0 0 16px; border:1px solid transparent; border-radius:14px; font-size:14px; line-height:1.7; }
.nt-banner .nt-ic { flex:none; width:22px; height:22px; margin-top:1px; border-radius:50%; display:grid; place-items:center; font-size:13px; font-weight:700; color:#fff; }
.nt-banner .nt-tx { flex:1; min-width:0; overflow-wrap:anywhere; }
.nt-banner .nt-tx a { color:inherit; text-decoration:underline; font-weight:600; }
.nt-banner .nt-x { flex:none; padding:2px 4px; border:0; background:none; color:inherit; font:inherit; font-size:18px; line-height:1; opacity:.55; cursor:pointer; }
.nt-banner .nt-x:hover { opacity:1; }
.nt-banner.info { background:#fff1e7; color:#805335; border-color:#f6dccb; }
.nt-banner.info .nt-ic { background:#e39a6d; }
.nt-banner.warn { background:#fff4e6; color:#8a5a2b; border-color:#f3d9b4; }
.nt-banner.warn .nt-ic { background:#e0a04a; }
.nt-banner.err { background:#fdf0ee; color:#c5453a; border-color:#f3c9c4; }
.nt-banner.err .nt-ic { background:#e2685c; }
.nt-banner.ok { background:#eef7f1; color:#3f7a5f; border-color:#cfe6d8; }
.nt-banner.ok .nt-ic { background:#4caf86; }

.nt-status { display:flex; align-items:center; gap:8px; min-height:1.7em; margin:0; color:#706a66; font-size:14px; line-height:1.6; }
.nt-status.is-empty { display:none; }
.nt-status i { flex:none; width:16px; height:16px; border-radius:50%; display:inline-grid; place-items:center; font-style:normal; font-size:10px; font-weight:700; color:#fff; background:#bbb; }
.nt-status.ok { color:#3f7a5f; }
.nt-status.ok i { background:#4caf86; }
.nt-status.err { color:#c5453a; }
.nt-status.err i { background:#e2685c; }
.nt-status.busy i { background:none; border:2px solid #e8c9bf; border-top-color:#f25564; animation:nt-spin .7s linear infinite; }
@keyframes nt-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .nt-toast, .nt-status.busy i { animation:none; } }

.nt-dialog { width:calc(100% - 32px); max-width:400px; padding:24px; border:0; border-radius:20px; background:#fff; color:#2c2928; box-shadow:0 24px 60px rgba(0,0,0,.25); }
.nt-dialog::backdrop { background:rgba(40,30,25,.42); }
.nt-dialog h2 { margin:0 0 6px; font-size:18px; line-height:1.5; }
.nt-dialog p { margin:0 0 20px; color:#706a66; font-size:15px; line-height:1.7; }
.nt-dialog .nt-row { display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }
.nt-dialog p + .nt-row { margin-top:0; }
.nt-btn { padding:9px 20px; border:0; border-radius:999px; background:linear-gradient(135deg,#ff7a7a,#f25564); color:#fff; font:inherit; font-size:15px; cursor:pointer; }
.nt-btn.ghost { background:#fff; color:#2c2928; border:1px solid #efe3d9; }
.nt-btn.danger { background:linear-gradient(135deg,#e2685c,#c5453a); }
.nt-btn:focus-visible { outline:3px solid #f25564; outline-offset:3px; }
