:root{
  /* NVEQ Console Pro — light theme */
  --bg:#ECEAF4; --surface:#FFFFFF; --card:#FFFFFF; --card-2:#F7F5FC; --hover:#F4F1FB;
  --border:rgba(27,22,34,0.08); --border2:rgba(27,22,34,0.13); --line:rgba(27,22,34,0.08);
  --ink:#1B1622; --ink2:#46405A; --ink3:#6E6680; --muted:#8A8294; --faint:#9A8FB8;
  --primary:#6A45B8; --primary2:#8E6FE0; --primary-soft:#EFE9FA;
  --champagne:#46405A; --silver:#8A8294; --purple:#6A45B8;
  --ok:#1E8E5A; --ok-bg:rgba(30,142,90,0.12);
  --warn:#A9670F; --warn-bg:rgba(169,103,15,0.14);
  --bad:#C4453E; --bad-bg:rgba(196,69,62,0.12);
  --neutral-bg:rgba(110,102,128,0.12);
  --shadow:0 10px 30px rgba(40,28,61,0.12); --shadow-sm:0 4px 14px rgba(40,28,61,0.08);
  --sidebarBg:#533287;--sidebar-ink:#CDC4E0;--sidebar-ink-soft:#C2B8DC;
  --display:'Nunito',system-ui,sans-serif;
  --body:'Nunito',system-ui,sans-serif;
  --arabic:'Bahij TheSansArabic','IBM Plex Sans Arabic','Nunito',system-ui,sans-serif;
}
html[dir="rtl"]{--display:var(--arabic);--body:var(--arabic)}
body.nv-compact .nv-side-nav a{padding-top:7px;padding-bottom:7px}
body.nv-compact .nv-stat{padding:13px 16px}
body.nv-compact .nv-table th,body.nv-compact .nv-table td{padding-top:.5rem;padding-bottom:.5rem}
*{box-sizing:border-box}
body{margin:0;font-family:var(--body);color:var(--ink);line-height:1.6;background:var(--bg);
  font-weight:var(--body-weight,400);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{font-family:var(--display);font-weight:700;color:var(--ink);margin:0 0 .4rem;letter-spacing:-0.01em}
a{color:var(--primary);text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}
::selection{background:var(--primary);color:#fff}
.nv-table,.nv-num,.nv-deet,.nv-stat,.nv-pill{font-variant-numeric:tabular-nums}

@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes slideIn{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:none}}

/* ===== Sidebar (dark plum) ===== */
body.nv-app{display:flex;min-height:100vh}
.nv-side{width:258px;flex:none;background:var(--sidebarBg);color:var(--sidebar-ink);display:flex;flex-direction:column;padding:20px 13px;position:sticky;top:0;height:100vh;overflow:hidden;border-inline-end:1px solid rgba(185,162,255,0.10);transition:width .22s ease,padding .22s ease}
html.nv-collapsed .nv-side{width:76px;padding:20px 9px}
html.nv-collapsed .nv-word,
html.nv-collapsed .nv-nav-label,
html.nv-collapsed .nv-side-foot .nv-side-sub,
html.nv-collapsed .nv-side-foot form,
html.nv-collapsed .nv-badge{display:none}
html.nv-collapsed .nv-side-nav a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
html.nv-collapsed .nv-brand{justify-content:center;margin-inline:0}
html.nv-collapsed .nv-side-nav a{justify-content:center;padding:11px 0;gap:0}
html.nv-collapsed .nv-side-nav a.on::before{display:none}
html.nv-collapsed .nv-side-foot{align-items:center}
.nv-brand{display:flex;align-items:center;gap:11px;margin:2px 8px 16px;padding:2px;flex:none}
.nv-mark{font-family:var(--display);background:radial-gradient(circle at 30% 25%,#7E57D6,#4A2D8C);color:#fff;width:50px;height:50px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;box-shadow:0 4px 12px rgba(74,45,140,0.4)}
/* logo mark on a gradient tile (Console Pro) */
.nv-logo{width:50px;height:50px;border-radius:14px;background:radial-gradient(circle at 30% 25%,#7E57D6,#4A2D8C);padding:8px;object-fit:contain;flex:none;box-shadow:0 4px 12px rgba(74,45,140,0.4)}
.nv-logo-lg{width:52px;height:52px;object-fit:contain;flex:none}
.nv-wordmark-img{height:24px;width:auto;max-width:100%;object-fit:contain;display:block}
.nv-word{font-family:var(--display);font-weight:700;color:#F2EEFA;font-size:19px;letter-spacing:.3px}
.nv-side-nav{display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin:0 -5px;padding:6px 5px}
.nv-side-nav::-webkit-scrollbar{width:8px}
.nv-side-nav::-webkit-scrollbar-thumb{background:rgba(140,110,200,0.28);border-radius:8px}
.nv-side-nav::-webkit-scrollbar-thumb:hover{background:rgba(140,110,200,0.5)}
.nv-side-nav{scrollbar-width:thin;scrollbar-color:rgba(140,110,200,0.28) transparent}
.nv-side-nav a{display:flex;align-items:center;gap:12px;padding:10px 13px;border-radius:11px;color:var(--sidebar-ink);font-size:13.5px;font-weight:500;position:relative;transition:background .16s,color .16s;animation:slideIn .4s ease both}
.nv-side-nav a:nth-child(1){animation-delay:.04s}.nv-side-nav a:nth-child(2){animation-delay:.08s}.nv-side-nav a:nth-child(3){animation-delay:.12s}.nv-side-nav a:nth-child(4){animation-delay:.16s}.nv-side-nav a:nth-child(5){animation-delay:.2s}.nv-side-nav a:nth-child(6){animation-delay:.24s}.nv-side-nav a:nth-child(7){animation-delay:.28s}
.nv-side-nav a span{text-shadow:var(--nav-label-shadow,none)}
.nv-side-nav a .nv-ic{width:18px;height:18px;flex:none}
.nv-side-nav a:hover{background:rgba(185,162,255,0.10);color:#F2EEFA}
.nv-side-nav a.on{background:rgba(145,112,230,0.20);color:#fff}
.nv-side-nav a.on::before{content:"";position:absolute;inset-inline-start:-5px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--primary2)}
.nv-nav-label{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:#6E6488;font-weight:700;padding:14px 13px 4px}
.nv-side-foot{flex:none;margin-top:12px;padding-top:14px;border-top:1px solid rgba(185,162,255,0.12);display:flex;flex-direction:column;gap:6px}
.nv-side-sub{color:var(--sidebar-ink-soft);font-size:13px;padding:8px 12px;border-radius:10px;font-weight:500;transition:background .16s}
.nv-side-sub:hover{background:rgba(185,162,255,0.12);color:#F2EEFA}
.nv-badge{margin-top:10px;background:rgba(185,162,255,0.12);color:#CDC4E0;font-size:11.5px;font-weight:600;padding:6px 13px;border-radius:20px;align-self:flex-start}

/* ===== Shell / topbar ===== */
.nv-shell{flex:1;min-width:0;display:flex;flex-direction:column}
body.nv-plain .nv-shell{max-width:1060px;margin:0 auto;width:100%}
.nv-top{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 26px;height:64px;background:rgba(255,255,255,0.72);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:25}
.nv-top-left{display:flex;align-items:center;gap:14px;min-width:0}
.nv-collapse{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--border2);background:var(--surface);color:var(--ink2);border-radius:10px;cursor:pointer;flex:none;transition:.15s}
.nv-collapse:hover{background:var(--hover)}
.nv-collapse svg{width:18px;height:18px}
body.nv-plain .nv-collapse{display:none}
.nv-darktoggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--border2);background:var(--surface);color:var(--ink2);border-radius:10px;cursor:pointer;flex:none;transition:.15s}
.nv-darktoggle:hover{background:var(--hover);color:var(--primary)}
.nv-darktoggle svg{width:18px;height:18px}
.nv-darktoggle .nv-ic-sun{display:none}
html.nv-dark .nv-darktoggle .nv-ic-sun{display:block}
html.nv-dark .nv-darktoggle .nv-ic-moon{display:none}
.nv-top-crumb{font-size:13.5px;color:var(--ink3);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nv-top-right{display:flex;align-items:center;gap:12px}
.nv-lang{display:flex;gap:2px;background:var(--surface);border:1px solid var(--border2);padding:5px;border-radius:9px}
.nv-lang button{background:transparent;border:none;color:var(--ink2);border-radius:6px;padding:4px 10px;cursor:pointer;font-family:var(--body);font-size:12.5px;font-weight:700;transition:.16s}
.nv-lang button.active{background:var(--primary);color:#fff}
.nv-avatar{width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#7E57D6,#4A2D8C);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700}
.nv-content{flex:1;padding:var(--content-pad,1.9rem 2rem);width:100%;max-width:var(--content-max,1520px);margin:0 auto;zoom:var(--font-scale,1)}
.nv-foot{padding:1.1rem 2rem;color:var(--muted);font-size:13px;max-width:1520px;margin:0 auto;width:100%}

/* ===== KPI stat cards ===== */
.nv-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:1.4rem}
.nv-stat{background:var(--surface);border-radius:16px;padding:19px 20px;color:var(--ink3);font-size:12.5px;font-weight:500;display:flex;flex-direction:column;gap:.35rem;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:transform .2s ease,box-shadow .2s ease;animation:fadeUp .5s ease both}
.nv-stat:nth-child(1){animation-delay:.05s}.nv-stat:nth-child(2){animation-delay:.1s}.nv-stat:nth-child(3){animation-delay:.15s}.nv-stat:nth-child(4){animation-delay:.2s}.nv-stat:nth-child(5){animation-delay:.25s}.nv-stat:nth-child(6){animation-delay:.3s}
.nv-stat:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.nv-num{font-family:var(--display);font-weight:700;font-size:30px;color:var(--ink);line-height:1;letter-spacing:-0.02em}
.nv-stat::after{content:"";display:block;height:3px;width:28px;border-radius:3px;background:var(--primary);margin-top:2px}
.nv-stat.nv-warn .nv-num{color:var(--warn)}.nv-stat.nv-warn::after{background:var(--warn)}
.nv-stat.nv-danger .nv-num{color:var(--bad)}.nv-stat.nv-danger::after{background:var(--bad)}
.nv-stat.nv-ok .nv-num{color:var(--ok)}.nv-stat.nv-ok::after{background:var(--ok)}

/* ===== Page header ===== */
.nv-pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem;animation:fadeUp .5s ease both}
.nv-pagehead h1{font-family:var(--display);font-weight:700;font-size:clamp(23px,2.4vw,29px);color:var(--ink);margin:0;line-height:1.1;letter-spacing:-0.02em}
.nv-pagehead .sub{color:var(--ink3);font-size:14px;margin-top:.4rem}
.nv-pagehead-actions{display:flex;gap:.6rem;flex-wrap:wrap}

/* ===== Dashboard widgets ===== */
.nv-grid-2{display:grid;grid-template-columns:1.6fr 1fr;gap:1.1rem;margin-bottom:1.1rem}
@media(max-width:980px){.nv-grid-2{grid-template-columns:1fr}}
.nv-bars{display:flex;flex-direction:column;gap:1rem;padding:1.3rem 1.4rem}
.nv-bar{display:grid;grid-template-columns:112px 1fr 36px;align-items:center;gap:.85rem}
.nv-bar-label{font-size:12.5px;color:var(--ink2)}
.nv-bar-track{height:8px;border-radius:6px;background:var(--card-2);overflow:hidden}
.nv-bar-fill{height:100%;border-radius:6px;background:var(--primary2);transition:width .9s cubic-bezier(.2,.8,.2,1)}
.nv-bar-fill.warn{background:var(--warn)}
.nv-bar-fill.danger{background:var(--bad)}
.nv-bar-fill.ok{background:var(--ok)}
.nv-bar-val{font-size:12.5px;font-weight:700;color:var(--ink);text-align:end;font-variant-numeric:tabular-nums}
.nv-kv{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.4rem;border-top:1px solid var(--border)}
.nv-kv:first-of-type{border-top:none}
.nv-kv .k{color:var(--ink3);font-size:13px}
.nv-kv .v{font-family:var(--display);font-weight:700;font-size:18px;color:var(--ink);font-variant-numeric:tabular-nums}
.nv-kv .v.pos{color:var(--ok)}.nv-kv .v.neg{color:var(--bad)}
.nv-attention{display:flex;flex-direction:column}
.nv-attention a{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1.4rem;border-top:1px solid var(--border);color:var(--ink2);font-size:13.5px;transition:background .15s}
.nv-attention a:first-of-type{border-top:none}
.nv-attention a:hover{background:var(--hover);color:var(--primary)}

/* ===== Panels / tables ===== */
.nv-panel{background:var(--surface);border-radius:18px;box-shadow:var(--shadow-sm);border:1px solid var(--border);overflow:hidden;animation:fadeUp .5s ease .1s both}
.nv-panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.05rem 1.4rem;border-bottom:1px solid var(--border)}
.nv-panel-head h2{font-family:var(--display);font-weight:700;font-size:16.5px;margin:0;color:var(--ink);letter-spacing:-0.01em}
.nv-link{color:var(--primary);font-size:13px;font-weight:600;transition:.15s}
.nv-link:hover{opacity:.8}
.nv-table{width:100%;border-collapse:collapse;font-size:13.5px}
.nv-table th{text-align:start;color:var(--faint);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:.75rem 1.4rem;background:var(--card-2);border-bottom:1px solid var(--border)}
.nv-table td{padding:.85rem 1.4rem;color:var(--ink2);border-bottom:1px solid var(--border);vertical-align:middle}
.nv-table tbody tr{transition:background .15s}
.nv-table tbody tr:hover{background:var(--hover)}
.nv-table tfoot td{border-bottom:none;border-top:1px solid var(--border);padding-top:.9rem}
.nv-pill{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;color:var(--ink3);background:var(--neutral-bg)}
.nv-pill.warn{background:var(--warn-bg);color:var(--warn)}
.nv-pill.danger{background:var(--bad-bg);color:var(--bad)}
.nv-pill.ok{background:var(--ok-bg);color:var(--ok)}
.nv-empty{color:var(--muted);padding:1.4rem}

/* ===== Buttons ===== */
.nv-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--primary);color:#fff;border:none;border-radius:10px;padding:10px 18px;font-family:var(--body);font-size:13.5px;font-weight:600;cursor:pointer;text-decoration:none;box-shadow:0 6px 18px rgba(106,69,184,0.26);transition:filter .15s,transform .12s,box-shadow .15s}
.nv-btn:hover{filter:brightness(1.07);box-shadow:0 10px 24px rgba(106,69,184,0.36)}
.nv-btn:active{transform:translateY(1px) scale(.985)}
.nv-btn.ghost{background:var(--surface);border:1px solid var(--border2);color:var(--ink2);box-shadow:none;font-weight:600}
.nv-btn.ghost:hover{background:var(--hover);filter:none;box-shadow:none}
.nv-panel-head .nv-btn{padding:8px 15px;font-size:13px}
.nv-btn-lg{padding:13px 20px;font-size:15px;border-radius:12px}

/* ===== Forms ===== */
.nv-formwrap{padding:1.6rem 1.7rem;max-width:780px;margin:0 auto}
.nv-form>div{margin-bottom:1.05rem}
.nv-form label{display:block;color:var(--ink2);font-size:12.5px;font-weight:600;margin-bottom:7px}
.nv-form input,.nv-form select,.nv-form textarea{width:100%;background:var(--card-2);border:1px solid var(--border2);border-radius:11px;color:var(--ink);padding:11px 13px;font-family:var(--body);font-size:14px;transition:border-color .15s,box-shadow .15s}
.nv-form input[type=checkbox]{width:auto;margin-inline-end:8px;accent-color:var(--primary)}
.nv-form input:focus,.nv-form select:focus,.nv-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(106,69,184,0.16)}
.nv-form select option{background:#fff;color:var(--ink)}
.nv-form .helptext{color:var(--muted);font-size:12px;margin-top:5px}
.nv-form ul.errorlist{color:var(--bad);font-size:12px;list-style:none;padding:0;margin:5px 0 0}
.nv-form-actions{display:flex;gap:11px;justify-content:flex-end;margin-top:1.4rem;padding-top:1.1rem;border-top:1px solid var(--border)}
.nv-pager{display:flex;gap:1.2rem;align-items:center;justify-content:center;margin-top:1.3rem;color:var(--muted);font-size:13px}
.nv-deet{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.1rem 1.6rem}
.nv-deet>div{display:flex;flex-direction:column;gap:5px;font-size:15px;color:var(--ink)}
.nv-deet-k{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);font-weight:700}
.nv-sub{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink);margin:1.5rem 0 .8rem}
.nv-hint{color:var(--muted);font-size:12.5px;margin:.7rem 0 0}
.nv-formset td{padding:6px 8px}
.nv-formset input,.nv-formset select{width:100%;background:var(--card-2);border:1px solid var(--border2);border-radius:8px;color:var(--ink);padding:8px 9px;font-family:var(--body);font-size:13px}
.nv-formset input:focus,.nv-formset select:focus{outline:none;border-color:var(--primary)}
.nv-formset input[type=checkbox]{width:auto;accent-color:var(--primary)}

/* ===== Portal hero + checkboxes ===== */
.nv-hero{margin-bottom:1.6rem;animation:fadeUp .5s ease both}
.nv-hero h1{font-family:var(--display);font-weight:700;font-size:clamp(27px,4vw,38px);color:var(--ink);margin:0 0 .3rem;letter-spacing:-0.02em}
.nv-hero p{color:var(--ink3);margin:0;font-size:15px}
.nv-muted{color:var(--muted);font-size:13px}
.nv-checks{margin-top:.3rem}
.nv-checks ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.55rem}
.nv-checks li{margin:0}
.nv-checks label{display:flex;align-items:center;gap:.6rem;background:var(--card-2);border:1px solid var(--border2);border-radius:10px;padding:.7rem .9rem;cursor:pointer;color:var(--ink);font-weight:500;margin:0;transition:border-color .15s,background .15s}
.nv-checks label:hover{border-color:var(--primary);background:var(--hover)}
.nv-checks input[type=checkbox]{width:auto;margin:0;accent-color:var(--primary)}

/* ===== Legacy simple login ===== */
.nv-login{min-height:80vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.nv-login-card{width:100%;max-width:400px;padding:2.2rem 2rem;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-sm);animation:fadeUp .5s ease both}
.nv-login-mark{display:flex;justify-content:center;margin-bottom:1rem}
.nv-login-card h1{font-family:var(--display);font-weight:700;font-size:24px;color:var(--ink);margin:0}
.nv-login-card .nv-form{text-align:start}
.nv-login-err{background:var(--bad-bg);color:var(--bad);border-radius:10px;padding:.6rem 1rem;font-size:13px;margin:0 0 1rem}

/* ===== Console Pro split sign-in ===== */
.nv-auth{min-height:calc(100vh - 150px);display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.nv-auth-card{display:grid;grid-template-columns:1.05fr 1fr;width:100%;max-width:940px;background:var(--surface);border:1px solid var(--border);border-radius:24px;overflow:hidden;box-shadow:0 40px 90px rgba(40,28,61,0.28);animation:fadeUp .5s cubic-bezier(.2,.8,.2,1) both}
.nv-auth-brand{position:relative;isolation:isolate;overflow:hidden;padding:2.9rem 2.6rem;display:flex;flex-direction:column;gap:1.4rem;justify-content:space-between;color:#fff;background:linear-gradient(160deg,#2A1B47,#6A45B8 70%,#8E6FE0)}
.nv-auth-glow{position:absolute;width:340px;height:340px;right:-120px;top:-120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,0.22),rgba(255,255,255,0));z-index:-1;pointer-events:none}
.nv-auth-brandtop{display:flex;align-items:center;gap:.8rem}
.nv-mark-lg{width:52px;height:52px;font-size:20px;border-radius:14px}
.nv-logo-lg{width:46px;height:46px;border-radius:13px;background:rgba(255,255,255,0.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:9px;box-shadow:none}
.nv-auth-brandname{display:flex;flex-direction:column;line-height:1.15}
.nv-auth-brandname strong{font-family:var(--display);font-weight:700;color:#fff;font-size:18px;letter-spacing:.2px}
.nv-auth-brandname span{color:rgba(255,255,255,0.7);font-size:10.5px;letter-spacing:2px;text-transform:uppercase}
.nv-auth-tag{font-family:var(--display);font-weight:700;color:#fff;font-size:30px;line-height:1.14;letter-spacing:-0.02em;margin:0;max-width:14ch}
.nv-auth-sub{color:rgba(255,255,255,0.8);font-size:14px;line-height:1.6;margin:0;max-width:34ch}
.nv-auth-points{list-style:none;padding:0;margin:.2rem 0 0;display:grid;gap:.55rem}
.nv-auth-points li{position:relative;color:rgba(255,255,255,0.9);font-size:12.5px;padding-inline-start:1.5rem}
.nv-auth-points li::before{content:"";position:absolute;inset-inline-start:0;top:.35em;width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,0.85)}
.nv-auth-badge{align-self:flex-start;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#fff;border:1px solid rgba(255,255,255,0.28);border-radius:999px;padding:.42rem .9rem;background:rgba(255,255,255,0.1)}
.nv-auth-form{background:var(--surface);padding:2.9rem 2.7rem;display:flex;flex-direction:column;justify-content:center}
.nv-auth-head h1{font-family:var(--display);font-weight:700;font-size:25px;color:var(--ink);margin:0;letter-spacing:-0.02em}
.nv-auth-head p{color:var(--ink3);font-size:14px;margin:.5rem 0 1.6rem}
.nv-auth-fields .nv-field{margin-bottom:1rem}
.nv-input-wrap{position:relative;display:flex;align-items:center}
.nv-input-ic{position:absolute;inset-inline-start:13px;width:17px;height:17px;color:var(--muted);pointer-events:none;transition:color .15s}
.nv-auth-fields .nv-input-wrap input{padding-inline-start:40px;min-height:46px;padding-top:12px;padding-bottom:12px}
.nv-input-wrap:focus-within .nv-input-ic{color:var(--primary)}
.nv-auth-submit{width:100%;margin-top:.5rem}
.nv-auth-foot{color:var(--ink3);font-size:12.5px;text-align:center;margin:1.4rem 0 0}
[dir=rtl] .nv-auth-submit svg{transform:scaleX(-1)}
/* OTP / two-factor */
.nv-otp-icon{width:48px;height:48px;border-radius:13px;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.nv-otp-icon svg{width:24px;height:24px}
.nv-otp-boxes{display:flex;gap:10px;margin:.2rem 0 1.4rem}
.nv-otp-box{flex:1;min-width:0;height:58px;text-align:center;border:1.5px solid var(--border2);border-radius:12px;background:var(--card-2);color:var(--ink);font-family:var(--display);font-weight:700;font-size:24px;transition:border-color .15s,box-shadow .15s}
.nv-otp-box:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(106,69,184,0.16)}
.nv-otp-foot{display:flex;align-items:center;justify-content:space-between;margin-top:18px}
.nv-otp-foot a{font-size:13px;font-weight:600;color:var(--ink3)}
.nv-otp-foot a:hover{color:var(--primary)}
.nv-linkbtn{background:none;border:none;padding:0;cursor:pointer;font-family:var(--body);font-size:13px;font-weight:600;color:var(--primary)}
.nv-linkbtn:hover{opacity:.8}
/* flash messages */
.nv-msgs{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1.4rem;animation:fadeUp .4s ease both}
.nv-msg{padding:.7rem 1.1rem;border-radius:11px;font-size:13.5px;font-weight:500;border:1px solid var(--border2)}
.nv-msg.success{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.nv-msg.error{background:var(--bad-bg);color:var(--bad);border-color:transparent}
.nv-msg.warning{background:var(--warn-bg);color:var(--warn);border-color:transparent}
.nv-pw-wrap input{padding-inline-end:44px}
.nv-pw-toggle{position:absolute;inset-inline-end:6px;top:50%;transform:translateY(-50%);width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--muted);cursor:pointer;transition:color .15s,background .15s}
.nv-pw-toggle:hover{color:var(--primary);background:var(--hover)}
.nv-pw-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(106,69,184,0.3)}
.nv-pw-toggle svg{width:17px;height:17px}
.nv-pw-toggle .ic-off{display:none}
.nv-pw-toggle.is-visible .ic-on{display:none}
.nv-pw-toggle.is-visible .ic-off{display:block}
.nv-form input:-webkit-autofill,.nv-form input:-webkit-autofill:hover,.nv-form input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--ink);caret-color:var(--ink);
  -webkit-box-shadow:0 0 0 1000px var(--card-2) inset;box-shadow:0 0 0 1000px var(--card-2) inset;
  transition:background-color 9999s ease-in-out 0s}
@media(max-width:760px){
  .nv-auth{min-height:auto;padding:1.5rem 1rem}
  .nv-auth-card{grid-template-columns:1fr;max-width:440px}
  .nv-auth-brand{padding:2rem 1.9rem;gap:1rem}
  .nv-auth-points{display:none}
  .nv-auth-tag{font-size:24px}
  .nv-auth-sub{max-width:none}
  .nv-auth-form{padding:2rem 1.9rem}
}

/* ===== Modal ===== */
.nv-modal-overlay{position:fixed;inset:0;background:rgba(27,16,40,0.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:5vh 1rem;z-index:50;overflow:auto;animation:fadeUp .2s ease}
.nv-modal-overlay[hidden]{display:none}
.nv-modal-box{position:relative;width:100%;max-width:620px;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:0 30px 70px rgba(40,28,61,0.35);padding:1.7rem 1.8rem}
.nv-modal-x{position:absolute;inset-inline-end:14px;top:12px;background:transparent;border:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;border-radius:8px;width:34px;height:34px}
.nv-modal-x:hover{color:var(--ink);background:var(--hover)}
.nv-modal-title{font-family:var(--display);font-weight:700;font-size:20px;color:var(--ink);margin:0 0 1.1rem}
.nv-modal-form .nv-form-actions{margin-top:1.2rem}

@media(max-width:760px){
  body.nv-app{flex-direction:column}
  .nv-side{width:auto;height:auto;position:static}
  .nv-side-nav{flex-direction:row;flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== Dark mode — per-user opt-in via the topbar toggle (html.nv-dark) ===== */
html.nv-dark{
  --bg:#15131C;--surface:#1E1B27;--card:#1E1B27;--card-2:#262230;--hover:#2C2739;
  --border:rgba(255,255,255,0.09);--border2:rgba(255,255,255,0.15);--line:rgba(255,255,255,0.08);
  --ink:#EAE6F2;--ink2:#BBB4C9;--ink3:#948CA6;--muted:#7F7791;--faint:#8B82A4;
  --primary-soft:rgba(142,111,224,0.20);
  --ok-bg:rgba(30,142,90,0.22);--warn-bg:rgba(169,103,15,0.26);--bad-bg:rgba(196,69,62,0.24);
  --neutral-bg:rgba(180,172,200,0.14);
  --shadow:0 12px 34px rgba(0,0,0,0.55);--shadow-sm:0 4px 16px rgba(0,0,0,0.45);
}
html.nv-dark .nv-top{background:rgba(24,21,32,0.82);border-bottom-color:var(--border)}
html.nv-dark .nv-form select option{background:#262230;color:var(--ink)}
html.nv-dark .nv-form input:-webkit-autofill,
html.nv-dark .nv-form input:-webkit-autofill:hover,
html.nv-dark .nv-form input:-webkit-autofill:focus{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 1000px var(--card-2) inset;box-shadow:0 0 0 1000px var(--card-2) inset}
