.nvux-bar{position:fixed;left:0;top:0;height:3px;width:0;background:#8C2C2B;z-index:100000;pointer-events:none;transition:width .4s ease,opacity .3s}
.nvux-bar.is-on{width:70%;transition:width 8s cubic-bezier(.1,.7,.2,1)}
.nvux-bar.is-done{width:100%;opacity:0}
.nvux-toasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:100001;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px)}
.nvux-toast{display:flex;align-items:center;gap:10px;background:#1f1b18;color:#fff;border-radius:12px;padding:12px 14px;box-shadow:0 8px 24px rgba(0,0,0,.25);font-size:.95rem;line-height:1.35}
.nvux-toast.is-err{background:#8C2C2B}
.nvux-msg{flex:1}
.nvux-retry{background:#fff;color:#8C2C2B;border:0;border-radius:8px;padding:6px 12px;font-weight:600;cursor:pointer}
.nvux-x{background:transparent;border:0;color:inherit;font-size:1.3rem;line-height:1;cursor:pointer;padding:0 4px;opacity:.8}
.nvux-busy{position:relative;opacity:.75;cursor:progress}
.nvux-busy::after{content:"";display:inline-block;width:14px;height:14px;margin-left:8px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:nvuxspin .7s linear infinite}
@keyframes nvuxspin{to{transform:rotate(360deg)}}
/* états vides illustrés */
.nv-app .nv-empty{text-align:center;padding:28px 18px}
.nv-app .nv-empty::before{content:"";display:block;width:84px;height:84px;margin:0 auto 12px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 84 84'%3E%3Ccircle cx='42' cy='42' r='40' fill='%23F6EFEA'/%3E%3Crect x='20' y='28' width='44' height='32' rx='5' fill='%23fff' stroke='%238C2C2B' stroke-width='2.5'/%3E%3Cpath d='M22 31l20 16 20-16' fill='none' stroke='%238C2C2B' stroke-width='2.5' stroke-linejoin='round'/%3E%3Ccircle cx='64' cy='24' r='7' fill='%238C2C2B'/%3E%3Cpath d='M61 24h6M64 21v6' stroke='%23fff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
/* modèle sélectionné : coche */
.nv-tpl .nv-tpl-body{position:relative}
.nv-tpl input:checked + .nv-tpl-body::after{content:"\2713";position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:#8C2C2B;color:#fff;font:700 15px/26px sans-serif;text-align:center;box-shadow:0 2px 6px rgba(0,0,0,.25);z-index:2}
@media (prefers-reduced-motion:reduce){.nvux-bar,.nvux-busy::after{transition:none;animation:none}}