/* ══ Invozeo UX Kit — global interactions ══ */
html{scroll-behavior:smooth}

/* ── Card polish ── */
.card{border-radius:.875rem}
.card-hover{transition:transform .18s ease,box-shadow .18s ease}
.card-hover:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(15,23,42,.1)}
a.card{text-decoration:none}


/* ── Toasts ── */
.ms-toast-stack{position:fixed;top:80px;right:18px;z-index:10800;display:flex;flex-direction:column;gap:.5rem;max-width:min(380px,calc(100vw - 36px))}
.ms-toast{display:flex;align-items:flex-start;gap:.6rem;padding:.8rem 1rem;border-radius:.75rem;background:#fff;border:1px solid #e2e8f0;box-shadow:0 10px 30px rgba(15,23,42,.14);animation:msToastIn .28s cubic-bezier(.2,.9,.3,1.2);font-size:.875rem}
.ms-toast.out{animation:msToastOut .25s ease forwards}
.ms-toast .mt-ic{font-size:1.05rem;line-height:1.2}
.ms-toast-success{border-left:4px solid var(--ms-success,#16A34A)}.ms-toast-success .mt-ic{color:var(--ms-success,#16A34A)}
.ms-toast-error{border-left:4px solid var(--ms-danger,#DC2626)}.ms-toast-error .mt-ic{color:var(--ms-danger,#DC2626)}
.ms-toast-warning{border-left:4px solid var(--ms-warning,#F59E0B)}.ms-toast-warning .mt-ic{color:var(--ms-warning,#F59E0B)}
.ms-toast-info{border-left:4px solid var(--ms-primary,#2563EB)}.ms-toast-info .mt-ic{color:var(--ms-primary,#2563EB)}
.ms-toast .mt-x{margin-left:auto;background:none;border:0;color:#94a3b8;font-size:.85rem;line-height:1;padding:0}
.ms-toast .mt-x:hover{color:#475569}
@keyframes msToastIn{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}
@keyframes msToastOut{to{opacity:0;transform:translateX(30px)}}

/* ── Confirm modal ── */
.ms-confirm .modal-content{border-radius:1rem;border:0;box-shadow:0 25px 60px rgba(15,23,42,.3)}
.ms-confirm-icon{width:52px;height:52px;border-radius:1rem;display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin:0 auto}
.ms-confirm.danger .ms-confirm-icon{background:#fee2e2;color:#dc2626}
.ms-confirm.primary .ms-confirm-icon{background:var(--ms-primary-fixed,#dbeafe);color:var(--ms-primary,#2563EB)}

/* ── Button loading ── */
.btn.is-loading{pointer-events:none;opacity:.75;position:relative}
.btn.is-loading::before{content:'';display:inline-block;width:.85em;height:.85em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:msSpin .6s linear infinite;margin-right:.45em;vertical-align:-.1em}
@keyframes msSpin{to{transform:rotate(360deg)}}

/* ── Command palette ── */
.ms-palette .modal-dialog{max-width:600px;margin-top:12vh}
.ms-palette .modal-content{border-radius:1rem;border:0;box-shadow:0 30px 80px rgba(15,23,42,.4);overflow:hidden}
.ms-palette input{border:0;border-bottom:1px solid var(--ms-border,#e2e8f0);font-size:1.05rem;padding:1rem 1.25rem}
.ms-palette input:focus{box-shadow:none;border-bottom-color:var(--ms-primary,#2563EB)}
.ms-palette-list{max-height:380px;overflow-y:auto;padding:.4rem}
.ms-palette-item{display:flex;align-items:center;gap:.7rem;padding:.6rem .9rem;border-radius:.55rem;color:var(--ms-text,#191b23);text-decoration:none;font-size:.9rem}
.ms-palette-item:hover,.ms-palette-item.active{background:var(--ms-primary-fixed,#eef2ff)}
.ms-palette-item i{color:var(--ms-primary,#2563EB);width:1.1rem;text-align:center}
.ms-palette-item .kbd{margin-left:auto}
.ms-palette-hint{padding:.55rem 1rem;border-top:1px solid var(--ms-border,#e2e8f0);font-size:.72rem;color:#94a3b8;display:flex;gap:1rem}
.kbd{font-family:'SF Mono',Consolas,monospace;font-size:.7rem;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.3rem;padding:.1rem .4rem;color:#64748b}

/* ── Notifications dropdown ── */
.ms-bell-wrap .dropdown-menu{width:360px;max-height:420px;overflow-y:auto;border-radius:.875rem;border:1px solid var(--ms-border,#e2e8f0);box-shadow:0 15px 45px rgba(15,23,42,.15);padding:.4rem}
.ms-notif{display:flex;gap:.7rem;padding:.65rem .75rem;border-radius:.6rem;text-decoration:none;color:var(--ms-text,#191b23)}
.ms-notif:hover{background:#f8fafc}
.ms-notif.unread{background:var(--ms-primary-fixed,#eef2ff)}
.ms-notif .n-ic{width:34px;height:34px;flex-shrink:0;border-radius:.55rem;background:var(--ms-primary-fixed,#eef2ff);color:var(--ms-primary,#2563EB);display:flex;align-items:center;justify-content:center}
.ms-notif .n-body{font-size:.82rem}.ms-notif .n-title{font-weight:600}
.ms-notif .n-time{font-size:.7rem;color:#94a3b8}
.ms-bell-badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;min-width:17px;height:17px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 4px}

/* ── Back to top ── */
.ms-top{position:fixed;bottom:24px;left:24px;width:42px;height:42px;border-radius:12px;border:0;background:var(--ms-primary,#2563EB);color:#fff;font-size:1rem;box-shadow:0 8px 24px rgba(37,99,235,.4);opacity:0;transform:translateY(10px);transition:all .25s;z-index:1070}
.ms-top.show{opacity:1;transform:none}
.ms-top:hover{background:var(--ms-primary-dark,#1d4ed8)}

/* ── Scroll reveal ── */
html.ms-js .reveal{opacity:0;transform:translateY(24px);transition:opacity .55s ease,transform .55s ease}
.reveal{opacity:1;transform:none}
html.ms-js .reveal.reveal-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ── Copy helper ── */
[data-copy]{cursor:pointer}

/* ── Empty states ── */
.ms-empty{text-align:center;padding:3rem 1rem;color:#94a3b8}
.ms-empty i{font-size:2.6rem;display:block;margin-bottom:.7rem;color:#cbd5e1}
.ms-empty p{margin:0 0 .8rem}

/* ── Tables ── */
.table thead.sticky-top{box-shadow:0 1px 0 #e2e8f0}
.table-striped>tbody>tr>td,.table-striped>tbody>tr>th{transition:background .1s}

/* ── Mobile friendliness ── */
@media (max-width: 575.98px) {
    h1.display-5, h1.display-6{font-size:1.9rem}
    h2.display-5, h2.display-6{font-size:1.65rem}
    .display-4{font-size:2rem}
    .card-body{padding:1rem}
    .btn{min-height:38px}
    table.table{font-size:.85rem}
    .container,.container-fluid{padding-left:.85rem;padding-right:.85rem}
}
@media (max-width: 991.98px) {
    .ms-palette .modal-dialog{margin-top:8vh;max-width:95vw}
    .ms-toast-stack{top:auto;bottom:16px;right:12px;left:12px;max-width:none}
    .ms-bell-wrap .dropdown-menu{width:min(340px,90vw)}
}
/* tables without responsive wrapper — allow scroll within cards */
.card .table{white-space:normal}
input,select,textarea,button{min-height:38px}
input.form-control-sm,select.form-select-sm,button.btn-sm{min-height:0}

/* ── Print ── */
@media print{.ms-sidebar,.ms-navbar,.ms-top,.ms-toast-stack,.ms-palette,.offcanvas,.btn,.no-print{display:none!important}.ms-main{padding:0!important}}
