/* Novistic Cloud POS Phase 43 — final UI polish, states, accessibility and micro-interactions */
:root{
  --p43-focus:rgba(113,92,255,.30);
  --p43-focus-line:#9b8cff;
  --p43-ease:cubic-bezier(.2,.75,.25,1);
}

/* Keyboard access */
.nv-skip-link{
  position:fixed;left:18px;top:12px;z-index:9999;transform:translateY(-180%);
  padding:10px 14px;border-radius:10px;background:#f6f8ff;color:#101526;
  font-size:13px;font-weight:800;text-decoration:none;box-shadow:0 12px 35px rgba(0,0,0,.3);
  transition:transform .18s var(--p43-ease)
}
.nv-skip-link:focus{transform:translateY(0)}
.p40-ui :where(button,a,input,select,textarea,[tabindex]):focus-visible,
.nv-cloud-auth :where(button,a,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--p43-focus-line)!important;outline-offset:2px!important;
  box-shadow:0 0 0 5px var(--p43-focus)!important
}
.p10-main[tabindex="-1"]:focus{outline:none!important;box-shadow:none!important}

/* Authentication — final clarity pass */
.nv-cloud-auth{isolation:isolate}
.nv-auth-card{
  position:relative;overflow:hidden;
  box-shadow:0 28px 90px rgba(0,0,0,.33),inset 0 1px 0 rgba(255,255,255,.04)!important
}
.nv-auth-card::before{
  content:"";position:absolute;inset:0 0 auto;height:1px;
  background:linear-gradient(90deg,transparent,rgba(132,113,255,.62),rgba(56,200,255,.35),transparent)
}
.nv-auth-card h1{line-height:1.06!important}
.nv-auth-card .lead{line-height:1.55!important}
.nv-field label{font-weight:690!important;letter-spacing:.01em}
.nv-input-wrap{transition:border-color .17s var(--p43-ease),box-shadow .17s var(--p43-ease),transform .17s var(--p43-ease)}
.nv-input-wrap:focus-within{transform:translateY(-1px)}
.nv-btn{
  transition:transform .16s var(--p43-ease),filter .16s var(--p43-ease),box-shadow .16s var(--p43-ease),opacity .16s var(--p43-ease)!important
}
.nv-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 13px 30px rgba(91,77,255,.25)!important}
.nv-btn:active:not(:disabled){transform:translateY(0) scale(.995)}
.nv-btn:disabled,.p40-ui button:disabled{cursor:not-allowed!important;opacity:.58!important;filter:saturate(.65)!important}
.nv-btn[aria-busy="true"]{position:relative;padding-right:46px!important}
.nv-btn[aria-busy="true"]::after{
  content:"";position:absolute;right:18px;top:50%;width:15px;height:15px;margin-top:-8px;border-radius:50%;
  border:2px solid rgba(255,255,255,.36);border-top-color:#fff;animation:p43-spin .72s linear infinite
}
.nv-auth-alert[role="alert"]{box-shadow:inset 3px 0 0 currentColor}
.nv-password-hint{line-height:1.45!important}
.nv-auth-support{line-height:1.55!important}
.nv-link-btn{border:0;background:transparent;padding:0;font:inherit;cursor:pointer;color:inherit;text-decoration:none}
.nv-link-btn.nv-link{color:#9e92ff!important;font-weight:700}
.nv-auth-back.nv-link-btn{display:inline-flex;align-items:center;min-height:34px;color:#98a6c1!important}
.nv-link-btn:hover{text-decoration:underline}

/* Global state language */
.p40-ui .empty,.p40-ui .chart-empty,.p40-ui .nv-empty-state{
  min-height:112px;display:grid;place-items:center;text-align:center;padding:30px 20px!important;
  border:1px dashed rgba(148,163,184,.17);border-radius:14px;color:#8f9db5!important;
  background:linear-gradient(145deg,rgba(148,163,184,.035),rgba(124,92,255,.025))
}
.p40-ui .alert{box-shadow:inset 3px 0 0 currentColor}
.p40-ui .alert[role="alert"]{font-weight:610}
.p40-ui .table-wrap[tabindex="0"]:focus-visible{border-radius:12px}

/* Buttons, cards and tables feel responsive without becoming flashy */
.p40-ui :where(.panel,.p41-page,.p42-page,.p10-kpi,.p10-card,.chart-card){
  transition:border-color .18s var(--p43-ease),box-shadow .18s var(--p43-ease),background-color .18s var(--p43-ease)
}
.p40-ui :where(.btn,.p10-nav,.p10-icon-btn,.p10-profile,.p10-plan-btn,.p10-online){
  transition:transform .16s var(--p43-ease),background-color .16s var(--p43-ease),border-color .16s var(--p43-ease),box-shadow .16s var(--p43-ease),opacity .16s var(--p43-ease)
}
.p40-ui :where(.btn,.p10-icon-btn,.p10-plan-btn):hover:not(:disabled){transform:translateY(-1px)}
.p40-ui tbody tr{transition:background-color .14s ease,box-shadow .14s ease}
.p40-ui .p10-nav.active{box-shadow:inset 3px 0 0 #8c7cff}
[dir="rtl"] .p40-ui .p10-nav.active,.urdu-mode .p10-nav.active{box-shadow:inset -3px 0 0 #8c7cff}

/* Toast notifications */
.nv-toast-region{
  position:fixed;right:20px;bottom:20px;z-index:10050;display:flex;flex-direction:column;gap:10px;
  width:min(390px,calc(100vw - 28px));pointer-events:none
}
.nv-toast{
  pointer-events:auto;display:grid;grid-template-columns:32px 1fr auto;align-items:start;gap:10px;
  padding:13px 13px;border:1px solid rgba(148,163,184,.18);border-radius:14px;
  background:rgba(14,22,37,.96);backdrop-filter:blur(16px);color:#eef3ff;
  box-shadow:0 18px 50px rgba(0,0,0,.34);animation:p43-toast-in .2s var(--p43-ease) both
}
.nv-toast-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:rgba(124,92,255,.14);color:#b7adff;font-weight:900}
.nv-toast.success .nv-toast-icon{background:rgba(50,214,160,.12);color:#78e8bf}
.nv-toast.error .nv-toast-icon{background:rgba(255,107,130,.12);color:#ff9aac}
.nv-toast.warning .nv-toast-icon{background:rgba(243,184,91,.13);color:#f6ca80}
.nv-toast-body{font-size:12.8px;line-height:1.45;padding-top:1px}
.nv-toast-body b{display:block;font-size:13px;margin-bottom:2px}
.nv-toast-close{min-width:30px;min-height:30px;border:0;background:transparent;color:#8d9bb2;border-radius:8px;font-size:18px;line-height:1}
.nv-toast-close:hover{background:rgba(148,163,184,.08);color:#fff}
.nv-toast.is-leaving{animation:p43-toast-out .18s ease forwards}

/* Cloud branch/navigation loading feedback */
.nv-branch-loading .p10-main::after{
  content:"";position:fixed;z-index:999;top:82px;left:50%;width:26px;height:26px;margin-left:-13px;border-radius:50%;
  border:3px solid rgba(148,163,184,.24);border-top-color:#8f7fff;background:rgba(7,10,18,.45);box-shadow:0 8px 28px rgba(0,0,0,.22);animation:p43-spin .72s linear infinite
}

/* Loading skeleton primitives; available to app/admin state renderers */
.nv-skeleton{position:relative;overflow:hidden;background:rgba(148,163,184,.08)!important;border-color:transparent!important;color:transparent!important}
.nv-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.055),transparent);animation:p43-shimmer 1.35s infinite}
.nv-skeleton-line{height:12px;border-radius:999px;margin:8px 0}.nv-skeleton-line.short{width:44%}.nv-skeleton-line.medium{width:72%}

/* Better touch target floor */
@media(pointer:coarse){
  .p40-ui button,.p40-ui select,.p40-ui input,.nv-cloud-auth button,.nv-cloud-auth input{min-height:44px}
  .p10-nav{min-height:44px!important}
}

@media(max-width:640px){
  .nv-toast-region{right:14px;left:14px;bottom:14px;width:auto}
  .nv-auth-card{box-shadow:0 20px 55px rgba(0,0,0,.3)!important}
  .p40-ui .empty,.p40-ui .chart-empty{min-height:96px;padding:24px 15px!important}
}

@media(forced-colors:active){
  .nv-toast,.nv-auth-card,.p40-ui .panel{border:1px solid CanvasText!important}
  .nv-skip-link{border:2px solid CanvasText}
}
@media(prefers-reduced-motion:reduce){
  .p40-ui *, .p40-ui *::before,.p40-ui *::after,.nv-cloud-auth *, .nv-cloud-auth *::before,.nv-cloud-auth *::after,.nv-toast{
    scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important
  }
}
@keyframes p43-spin{to{transform:rotate(360deg)}}
@keyframes p43-shimmer{to{transform:translateX(100%)}}
@keyframes p43-toast-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@keyframes p43-toast-out{to{opacity:0;transform:translateY(6px) scale(.985)}}
