/* ===================================================================
   سلام — سامانه ثبت کارکرد نورا
   Built on the Noura design system (indigo + cyan · PelakFA · RTL)
   =================================================================== */

/* ---------------- PelakFA ---------------- */
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-light.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-SemiBold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-ExtraBold.woff2') format('woff2');font-weight:800;font-display:swap}
@font-face{font-family:'PelakFA';src:url('fonts/PelakFA-Black.woff2') format('woff2');font-weight:900;font-display:swap}

:root{
  --indigo:#2D388B;   --indigo-2:#3974B7; --indigo-3:#1F2966;
  --cyan:#00AEEF;     --cyan-soft:#E1F4FB; --cyan-deep:#009BD4;
  --teal:#00726B;     --teal-soft:#E0F0EE; --mint:#2FA39B;
  --green:#5FA021;    --green-leaf:#8DC63F;
  --lavender:#B8C1FF; --violet:#6E5BD0;  --amber:#D08A2E; --amber-soft:#FBF0DE;

  --ink:#242525; --ink-soft:#4a4b4d;
  --gray:#6D6F70; --gray-2:#A7A9AB; --gray-3:#F1F1F1;

  --line:rgba(45,56,139,.10); --line-2:rgba(45,56,139,.16);
  --panel:#FFFFFF; --panel-2:#F6F8FC; --panel-3:#F1F4FA;
  --indigo-soft:#EEF0FB;

  --r-card:24px; --r-md:16px; --r-sm:12px; --r-img:20px; --r-pill:999px;
  --shadow-soft:0 8px 28px rgba(45,56,139,.06),0 2px 4px rgba(45,56,139,.04);
  --shadow-lift:0 18px 50px rgba(45,56,139,.10),0 4px 10px rgba(45,56,139,.05);
  --shadow-pop:0 24px 60px rgba(31,41,102,.18),0 6px 16px rgba(31,41,102,.08);

  --ff:'PelakFA','Vazirmatn','Tahoma',system-ui,sans-serif;
  --ease-out:cubic-bezier(.2,.7,.2,1);
  --ease-expo:cubic-bezier(.22,1,.36,1);
  --sidebar-w:264px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--ff); direction:rtl; background:var(--panel-2); color:var(--ink);
  line-height:1.7; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
input,select,textarea{font-family:inherit}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:6px}
::selection{background:rgba(0,174,239,.18)}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:rgba(45,56,139,.18);border-radius:9px}
*::-webkit-scrollbar-thumb:hover{background:rgba(45,56,139,.30)}
*::-webkit-scrollbar-track{background:transparent}
.en{direction:ltr;unicode-bidi:isolate}
.ml-auto{margin-right:auto}

/* ===================================================================
   BUTTONS
   =================================================================== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;
  border-radius:var(--r-pill);font-size:14px;font-weight:700;
  transition:background .2s,color .2s,transform .2s,box-shadow .2s,border-color .2s;white-space:nowrap}
.btn svg{width:17px;height:17px}
.btn-indigo{background:var(--indigo);color:#fff}
.btn-indigo:hover{background:var(--indigo-3);transform:translateY(-1px);box-shadow:0 10px 24px rgba(45,56,139,.22)}
.btn-primary{background:var(--cyan);color:#fff}
.btn-primary:hover{background:var(--cyan-deep);transform:translateY(-1px);box-shadow:0 10px 24px rgba(0,174,239,.25)}
.btn-ghost{border:1px solid var(--line-2);color:var(--indigo);background:#fff}
.btn-ghost:hover{background:rgba(45,56,139,.05);border-color:var(--cyan)}
.btn-soft{background:var(--panel-3);color:var(--indigo)}
.btn-soft:hover{background:var(--cyan-soft);color:var(--cyan-deep)}
.btn-danger{background:#fff;border:1px solid rgba(220,80,80,.4);color:#c0392b}
.btn-danger:hover{background:rgba(220,80,80,.07)}
.btn-lg{padding:14px 26px;font-size:15.5px}
.btn-block{width:100%}
.btn-sm{padding:8px 14px;font-size:12.5px}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:none!important}

.btn-mini{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:600;background:var(--panel-3);color:var(--indigo);
  border:1px solid transparent;transition:.15s}
.btn-mini:hover{background:var(--cyan-soft);color:var(--cyan-deep)}
.btn-mini-danger{background:rgba(220,80,80,.08);color:#c0392b}
.btn-mini-danger:hover{background:rgba(220,80,80,.16)}
.btn-mini-success{background:rgba(95,160,33,.1);color:#4d7d1b}
.btn-mini-success:hover{background:rgba(95,160,33,.2)}

/* ===================================================================
   BADGES / STATUS
   =================================================================== */
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:700;line-height:1}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.badge-office,.badge-navy{background:var(--indigo-soft);color:var(--indigo)}
.badge-remote,.badge-teal{background:var(--teal-soft);color:var(--teal)}
.badge-mission{background:var(--amber-soft);color:#a96d1c}
.badge-green{background:rgba(95,160,33,.13);color:#4d7d1b}
.badge-sky{background:var(--cyan-soft);color:var(--cyan-deep)}
.badge-amber{background:var(--amber-soft);color:#a96d1c}
.badge-gray{background:var(--gray-3);color:var(--gray)}
.badge-red{background:rgba(220,80,80,.12);color:#c0392b}
.badge-gray::before,.badge-amber.no-dot::before{display:none}

.chip-active{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:700;background:rgba(95,160,33,.13);color:#4d7d1b}
.chip-active::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green)}
.chip-inactive{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:700;background:var(--gray-3);color:var(--gray)}
.chip-inactive::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gray-2)}

/* ===================================================================
   CARDS / FORMS
   =================================================================== */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-soft);padding:24px}
.card-title{font-size:15px;font-weight:800;color:var(--indigo-3);margin-bottom:16px;letter-spacing:-.2px}
.page-gap{margin-bottom:20px}

.label{display:block;font-size:12.5px;font-weight:600;color:var(--indigo);margin-bottom:7px}
.input{width:100%;border:1px solid var(--line-2);background:#fff;color:var(--ink);
  border-radius:var(--r-sm);padding:11px 14px;font-size:14px;outline:none;
  transition:border-color .18s,box-shadow .18s}
.input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,174,239,.14)}
.input::placeholder{color:var(--gray-2)}
select.input{cursor:pointer;background-image:none}
.input-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}

.filter-bar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.filter-input{border:1px solid var(--line-2);background:#fff;color:var(--ink);
  border-radius:var(--r-pill);padding:9px 15px;font-size:13px;outline:none;transition:.18s;cursor:pointer}
.filter-input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,174,239,.12)}

.note-inline{font-size:12px;color:var(--gray);line-height:2;background:var(--panel-3);
  border-radius:var(--r-sm);padding:12px 16px;margin-top:14px}

.info-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--line)}
.info-row:last-child{border-bottom:0}
.info-key{font-size:13px;color:var(--gray);font-weight:500}
.info-val{font-size:13.5px;color:var(--ink);font-weight:600;display:inline-flex;align-items:center;gap:6px}

/* ===================================================================
   TABLES
   =================================================================== */
.table-wrap{overflow-x:auto;border-radius:var(--r-md)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{text-align:right;font-weight:700;color:var(--indigo);padding:11px 14px;
  border-bottom:1.5px solid var(--line-2);font-size:12px;white-space:nowrap;background:var(--panel-2)}
tbody td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--ink-soft);vertical-align:middle}
tbody tr{transition:background .12s}
tbody tr:hover td{background:var(--panel-2)}
tbody tr:last-child td{border-bottom:0}

.action-btns{display:flex;gap:6px;flex-wrap:wrap}

/* ===================================================================
   SHELL / SIDEBAR
   =================================================================== */
.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}

.sidebar{position:sticky;top:0;height:100vh;background:var(--indigo-3);color:#fff;
  display:flex;flex-direction:column;padding:22px 16px;overflow:hidden;z-index:5}
.sidebar::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url('assets/pinwheel-white.svg');background-repeat:no-repeat;
  background-position:left -60px bottom -40px;background-size:240px;opacity:.06}
.sidebar::after{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.16) 1.4px,transparent 1.5px);
  background-size:24px 24px;-webkit-mask-image:linear-gradient(205deg,#000 4%,transparent 46%);
  mask-image:linear-gradient(205deg,#000 4%,transparent 46%)}
.sidebar>*{position:relative;z-index:1}

.sidebar-logo{display:flex;align-items:center;gap:11px;padding:6px 8px 22px;margin-bottom:6px}
.sidebar-logo img{height:34px;width:auto;filter:brightness(0) invert(1)}
.sidebar-logo .sl-word{display:flex;flex-direction:column;line-height:1.25}
.sidebar-logo .sl-1{font-size:15px;font-weight:800;letter-spacing:-.2px}
.sidebar-logo .sl-2{font-size:10.5px;color:rgba(255,255,255,.55);font-weight:500}

.sidebar-section{margin-bottom:6px}
.sidebar-section-label{font-size:10.5px;font-weight:700;letter-spacing:.5px;
  color:rgba(255,255,255,.42);padding:14px 12px 8px;text-transform:uppercase}
.nav-item{display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:var(--r-sm);
  font-size:13.5px;font-weight:600;color:rgba(255,255,255,.72);cursor:pointer;
  transition:background .16s,color .16s;margin-bottom:2px;position:relative}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:var(--cyan);color:#fff;box-shadow:0 6px 18px rgba(0,174,239,.32)}
.nav-item .nav-ic{width:19px;height:19px;flex:none;opacity:.9}
.nav-item.active .nav-ic{opacity:1}

.admin-nav{display:none}
body.is-admin .admin-nav{display:block}

.sidebar-footer{margin-top:auto;padding-top:14px}
.user-chip{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.1);border-radius:var(--r-md);padding:11px 12px}
.user-avatar{width:38px;height:38px;border-radius:50%;background:var(--cyan);color:#fff;
  display:grid;place-items:center;font-weight:800;font-size:13px;flex:none;letter-spacing:-.5px}
.user-chip .uc-meta{flex:1;min-width:0;line-height:1.4}
.user-name{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-role{font-size:11px;color:rgba(255,255,255,.55)}
.logout-btn{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none;
  color:rgba(255,255,255,.6);transition:.15s}
.logout-btn:hover{background:rgba(255,255,255,.1);color:#fff}
.logout-btn svg{width:17px;height:17px}

/* ===================================================================
   MAIN AREA
   =================================================================== */
.main{min-width:0;display:flex;flex-direction:column}
.screen{display:none}
.screen.active{display:block;animation:fadeUp .4s var(--ease-out) both}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.screen.active{animation:none}}

.topbar{display:flex;align-items:center;gap:16px;padding:22px 34px;
  background:rgba(246,248,252,.85);backdrop-filter:blur(8px);position:sticky;top:0;z-index:4;
  border-bottom:1px solid var(--line)}
.topbar-title{font-size:21px;font-weight:800;color:var(--indigo-3);letter-spacing:-.4px}
.topbar-sub{font-size:13px;color:var(--gray);margin-top:1px}
.topbar-spacer{flex:1}
.topbar-date{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-pill);padding:8px 16px;font-size:12.5px;font-weight:600;color:var(--indigo);
  box-shadow:var(--shadow-soft)}
.topbar-date svg{width:15px;height:15px;color:var(--cyan)}

.content{padding:28px 34px 48px;max-width:1080px;width:100%}

/* ===================================================================
   STAT CARDS
   =================================================================== */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.stat-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:18px 20px;position:relative;overflow:hidden;box-shadow:var(--shadow-soft)}
.stat-card::before{content:"";position:absolute;top:0;right:0;width:4px;height:100%;background:var(--gray-2)}
.stat-card.teal::before{background:var(--teal)}
.stat-card.navy::before{background:var(--indigo)}
.stat-card.sky::before{background:var(--cyan)}
.stat-card.amber::before{background:var(--amber)}
.stat-card.lime::before{background:var(--green-leaf)}
.stat-num{font-size:30px;font-weight:800;color:var(--indigo-3);line-height:1.1;letter-spacing:-.5px}
.stat-label{font-size:12px;color:var(--gray);font-weight:500;margin-top:4px}

/* ===================================================================
   CLOCK / CHECK-IN
   =================================================================== */
.clock-wrapper{max-width:540px}
.clock-display{background:linear-gradient(135deg,var(--indigo-3),var(--indigo) 60%,var(--indigo-2));
  border-radius:var(--r-card);padding:34px 30px;text-align:center;color:#fff;position:relative;
  overflow:hidden;box-shadow:var(--shadow-lift);margin-bottom:20px}
.clock-display::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url('assets/pinwheel-white.svg');background-repeat:no-repeat;
  background-position:left -40px top -40px;background-size:180px;opacity:.08}
.clock-display::after{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.18) 1.3px,transparent 1.4px);
  background-size:22px 22px;-webkit-mask-image:linear-gradient(160deg,#000,transparent 60%);
  mask-image:linear-gradient(160deg,#000,transparent 60%)}
.clock-time{font-size:60px;font-weight:800;letter-spacing:1px;line-height:1;position:relative;
  font-variant-numeric:tabular-nums;direction:ltr}
.clock-date{font-size:14px;color:rgba(255,255,255,.78);margin-top:12px;position:relative}
.clock-badge{display:inline-flex;align-items:center;gap:7px;margin-top:16px;position:relative;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.18);border-radius:var(--r-pill);
  padding:6px 15px;font-size:11.5px;font-weight:600;color:#fff}
.clock-badge .live-dot{width:7px;height:7px;border-radius:50%;background:var(--green-leaf);position:relative}
@media (prefers-reduced-motion:no-preference){
  .clock-badge .live-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;
    border:2px solid var(--green-leaf);animation:ping 1.9s ease-out infinite}
}
@keyframes ping{0%{transform:scale(.7);opacity:.6}100%{transform:scale(2);opacity:0}}

.location-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:18px}
.loc-card{border:1.5px solid var(--line-2);border-radius:var(--r-md);padding:18px 14px;text-align:center;
  cursor:pointer;transition:border-color .16s,background .16s,transform .16s;background:#fff}
.loc-card:hover{border-color:var(--cyan);transform:translateY(-2px)}
.loc-card.selected{border-color:var(--indigo);background:var(--indigo-soft);box-shadow:0 6px 18px rgba(45,56,139,.12)}
.loc-card .loc-icon{width:30px;height:30px;margin:0 auto 9px;color:var(--indigo)}
.loc-card.selected .loc-icon{color:var(--indigo)}
.loc-card .loc-name{font-size:13.5px;font-weight:700;color:var(--ink)}
.loc-card .loc-desc{font-size:11px;color:var(--gray);margin-top:3px}

/* ===================================================================
   SUCCESS / CONFIRM
   =================================================================== */
.success-screen{max-width:540px}
.success-hero{background:linear-gradient(135deg,var(--teal),var(--mint));border-radius:var(--r-card);
  padding:38px 30px;text-align:center;color:#fff;margin-bottom:20px;position:relative;overflow:hidden;
  box-shadow:0 18px 50px rgba(0,114,107,.22)}
.success-hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.16) 1.3px,transparent 1.4px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(160deg,#000,transparent 65%);mask-image:linear-gradient(160deg,#000,transparent 65%)}
.success-icon{width:64px;height:64px;margin:0 auto 16px;background:rgba(255,255,255,.16);
  border-radius:50%;display:grid;place-items:center;position:relative}
.success-icon svg{width:34px;height:34px;color:#fff}
.success-title{font-size:19px;font-weight:700;position:relative}
.success-time{font-size:46px;font-weight:800;margin-top:6px;position:relative;font-variant-numeric:tabular-nums;direction:ltr}
.success-meta{font-size:13.5px;color:rgba(255,255,255,.82);margin-top:6px;position:relative}

/* ===================================================================
   CALENDAR
   =================================================================== */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-dh{text-align:center;font-size:11px;font-weight:700;color:var(--gray);padding:2px 0 5px}
.cal-dh.cal-we{color:var(--cyan-deep)}
.cal-cell{aspect-ratio:1.7/1;border-radius:8px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;position:relative;font-size:12px;background:var(--panel-3);transition:.14s}
.cal-dn{font-weight:600;font-variant-numeric:tabular-nums}
.cal-fut{background:transparent;color:var(--gray-2)}
.cal-tod{background:#fff;border:1.5px dashed var(--cyan);color:var(--cyan-deep);font-weight:700}
.cal-pres{color:#fff;cursor:pointer}
.cal-pres.cal-office{background:var(--indigo)}
.cal-pres.cal-remote{background:var(--teal)}
.cal-pres.cal-mission{background:var(--amber)}
.cal-pres:hover{transform:scale(1.05)}
.cal-noout{outline:2px solid var(--amber);outline-offset:-2px}
.cal-abs{background:#fff;border:1px dashed #f0a5a5;color:#d98a8a;cursor:pointer}
.cal-abs:hover{background:rgba(220,80,80,.05)}
.cal-warn{position:absolute;top:2px;right:4px;font-size:10px;font-weight:800;color:var(--amber)}
.cal-plus{position:absolute;bottom:3px;left:5px;font-size:11px;color:#f0a5a5;font-weight:700}
.cal-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:11.5px;color:var(--gray)}
.cal-legend span{display:inline-flex;align-items:center;gap:6px}
.cal-ldot{width:11px;height:11px;border-radius:3px;display:inline-block}

/* ===================================================================
   LOGIN
   =================================================================== */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  position:relative;overflow:hidden;background:var(--indigo-3)}
.login-bg{position:absolute;inset:0;overflow:hidden}
.login-bg::before{content:"";position:absolute;inset:0;
  background:linear-gradient(135deg,var(--indigo-3),var(--indigo) 55%,var(--indigo-2))}
.login-bg::after{content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(255,255,255,.13) 1.5px,transparent 1.6px);background-size:26px 26px;
  -webkit-mask-image:linear-gradient(205deg,#000 6%,transparent 62%);mask-image:linear-gradient(205deg,#000 6%,transparent 62%)}
.login-mark{position:absolute;width:520px;height:520px;left:-180px;bottom:-180px;
  background:url('assets/pinwheel-white.svg') no-repeat center/contain;opacity:.07;pointer-events:none}
.login-mark.tr{left:auto;right:-160px;top:-200px;bottom:auto;width:420px;height:420px;opacity:.05}
@media (prefers-reduced-motion:no-preference){
  .login-mark{animation:slowspin 90s linear infinite}
  .login-mark.tr{animation:slowspin 70s linear infinite reverse}
}
@keyframes slowspin{to{transform:rotate(360deg)}}

.login-card{position:relative;z-index:2;width:100%;max-width:400px;background:#fff;
  border-radius:var(--r-card);padding:38px 36px;box-shadow:var(--shadow-pop)}
.login-header{text-align:center;margin-bottom:26px}
.login-logo-img{height:42px;width:auto;margin:0 auto 16px}
.login-logo-word{font-size:12px;color:var(--gray);font-weight:600;letter-spacing:.3px}
.login-divider{height:1px;background:var(--line);margin:18px 0}
.login-title{font-size:23px;font-weight:800;color:var(--indigo-3);letter-spacing:-.4px}
.login-sub{font-size:13px;color:var(--gray);margin-top:4px}
.login-field{margin-bottom:16px}
.login-error{display:none;background:rgba(220,80,80,.08);border:1px solid rgba(220,80,80,.25);
  color:#c0392b;font-size:12.5px;padding:11px 14px;border-radius:var(--r-sm);margin-bottom:16px}
.login-error.show{display:block}
.login-footer{text-align:center;font-size:11.5px;color:var(--gray-2);margin-top:20px;line-height:1.8}
.quick-login{margin-top:10px}

/* ===================================================================
   ADD-USER PANEL
   =================================================================== */
.add-user-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-card);
  padding:24px;margin-bottom:20px;box-shadow:var(--shadow-soft);position:relative;overflow:hidden}
.add-user-panel::before{content:"";position:absolute;top:0;right:0;width:5px;height:100%;
  background:linear-gradient(var(--cyan),var(--indigo))}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;transition:margin-bottom .28s ease}
.panel-head-title{font-size:14px;font-weight:800;color:var(--indigo-3);display:flex;align-items:center;gap:8px}
.panel-head-title svg{width:18px;height:18px;color:var(--cyan)}
.panel-head-actions{display:flex;align-items:center;gap:10px}
.collapsible > .panel-head{cursor:pointer;user-select:none}
.panel-min-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  padding:0;border:1px solid var(--line);border-radius:9px;background:var(--panel-3);color:var(--indigo-3);
  cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}
.panel-min-btn:hover{background:var(--cyan-soft);border-color:var(--cyan);color:var(--cyan-deep)}
.panel-min-btn svg{width:16px;height:16px;transition:transform .28s ease}
.collapsible.collapsed .panel-min-btn svg{transform:rotate(-90deg)}
/* smooth collapse via grid-template-rows */
.panel-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .28s ease}
.panel-body-inner{overflow:hidden;min-height:0}
.collapsible.collapsed .panel-body{grid-template-rows:0fr}
.collapsible.collapsed .panel-head{margin-bottom:0}
.form-msg{font-size:12.5px;padding:10px 14px;border-radius:var(--r-sm);margin-bottom:12px;display:none}
.form-msg.err{background:rgba(220,80,80,.08);color:#c0392b;border:1px solid rgba(220,80,80,.22)}
.form-msg.ok{background:rgba(95,160,33,.1);color:#4d7d1b;border:1px solid rgba(95,160,33,.25)}

/* ===================================================================
   ANALYTICS
   =================================================================== */
.analytics-charts-row{display:grid;grid-template-columns:1fr 280px;gap:14px;margin-bottom:20px}
.brand-stripe{height:6px;border-radius:var(--r-pill);margin-bottom:20px;
  background:linear-gradient(90deg,var(--indigo),var(--cyan) 40%,var(--teal) 70%,var(--green-leaf))}

/* ===================================================================
   MODALS
   =================================================================== */
.modal-overlay{position:fixed;inset:0;background:rgba(31,41,102,.5);backdrop-filter:blur(4px);
  display:none;align-items:center;justify-content:center;padding:24px;z-index:60}
.modal-overlay.show{display:flex;animation:fadeIn .2s ease both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:var(--r-card);padding:28px;width:100%;max-width:440px;
  box-shadow:var(--shadow-pop);animation:pop .26s var(--ease-expo) both}
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
.modal-title{font-size:18px;font-weight:800;color:var(--indigo-3);margin-bottom:6px}
.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}

/* ===================================================================
   RESPONSIVE
   =================================================================== */
@media (max-width:880px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;right:0;top:0;width:var(--sidebar-w);transform:translateX(100%);
    transition:transform .3s var(--ease-out);box-shadow:var(--shadow-pop)}
  body.nav-open .sidebar{transform:translateX(0)}
  .scrim{display:none;position:fixed;inset:0;background:rgba(31,41,102,.4);z-index:4}
  body.nav-open .scrim{display:block}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .analytics-charts-row{grid-template-columns:1fr}
  .content{padding:22px 18px 40px}
  .topbar{padding:16px 18px}
  .input-row{grid-template-columns:1fr}
  .menu-toggle{display:grid!important}
}
.menu-toggle{display:none;width:40px;height:40px;border-radius:11px;place-items:center;
  border:1px solid var(--line);background:#fff;color:var(--indigo)}
.menu-toggle svg{width:20px;height:20px}

/* ===================================================================
   HR · سرمایه انسانی
   =================================================================== */
.person-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.person-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:18px;
  box-shadow:var(--shadow-soft);cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s;
  display:flex;flex-direction:column;gap:14px}
.person-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:var(--cyan)}
.person-card.inactive{opacity:.66}
.person-top{display:flex;align-items:flex-start;gap:12px}
.person-avatar{width:46px;height:46px;border-radius:14px;flex:none;display:grid;place-items:center;
  font-weight:800;font-size:15px;color:#fff;letter-spacing:-.5px;
  background:linear-gradient(135deg,var(--indigo),var(--indigo-2))}
.person-card:nth-child(3n+2) .person-avatar{background:linear-gradient(135deg,var(--teal),var(--mint))}
.person-card:nth-child(3n+3) .person-avatar{background:linear-gradient(135deg,var(--cyan-deep),var(--cyan))}
.person-card.inactive .person-avatar{background:linear-gradient(135deg,var(--gray-2),var(--gray))}
.person-id{flex:1;min-width:0}
.person-name{font-size:14.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.person-pos{font-size:12px;color:var(--gray);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.person-meta{display:flex;flex-wrap:wrap;gap:7px}
.person-foot{display:flex;align-items:center;justify-content:space-between;
  padding-top:13px;border-top:1px solid var(--line);font-size:11.5px;color:var(--gray)}
.person-foot .pf-code{font-weight:700;color:var(--indigo);direction:ltr}
.person-foot .pf-link{display:inline-flex;align-items:center;gap:5px;color:var(--cyan-deep);font-weight:700;transition:gap .15s}
.person-card:hover .pf-link{gap:9px}
.person-foot .pf-link svg{width:14px;height:14px}

.badge-dept{background:var(--lavender);color:var(--indigo-3);opacity:.95}
.badge-dept::before{background:var(--violet)}

/* personnel file modal */
.person-modal{max-width:760px;width:96%;max-height:92vh;overflow-y:auto}
.person-modal-head{display:flex;align-items:flex-start;gap:16px;padding-bottom:20px;
  margin-bottom:20px;border-bottom:1px solid var(--line)}
.person-modal-avatar{width:62px;height:62px;border-radius:18px;flex:none;display:grid;place-items:center;
  font-weight:800;font-size:21px;color:#fff;letter-spacing:-.5px;
  background:linear-gradient(135deg,var(--indigo),var(--indigo-2));box-shadow:var(--shadow-soft)}
.person-modal-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}

.hr-section{margin-bottom:22px}
.hr-form-section,.hr-section-title{font-size:12px;font-weight:800;color:var(--cyan-deep);
  letter-spacing:.4px;margin-bottom:14px;display:flex;align-items:center;gap:9px}
.hr-form-section{margin-top:18px}
.hr-form-section::after,.hr-section-title::after{content:"";flex:1;height:1px;background:var(--line)}
.hr-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 26px}
/* section-access (دسترسی به بخش‌ها) checklist in the person file */
.perm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 20px}
.perm-row{display:flex;align-items:center;gap:9px;padding:8px 11px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--panel-2);font-size:13px;color:var(--ink);font-weight:600}
.perm-row.editable{cursor:pointer;background:#fff;border-color:var(--line-2);transition:.15s}
.perm-row.editable:hover{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,174,239,.10)}
.perm-row input[type=checkbox]{width:17px;height:17px;accent-color:var(--indigo);flex:none}
.perm-row input:disabled{opacity:.85}
@media (max-width:680px){.perm-grid{grid-template-columns:1fr}}
.hr-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--line)}
.hr-row .hr-key{font-size:12.5px;color:var(--gray);font-weight:500;flex:none}
.hr-row .hr-val{font-size:13.5px;color:var(--ink);font-weight:600;text-align:left;
  direction:ltr;unicode-bidi:plaintext}
.hr-row.full{grid-column:1 / -1}
.hr-edit-input{width:160px;max-width:60%;border:1px solid var(--line-2);background:#fff;color:var(--ink);
  border-radius:9px;padding:7px 11px;font-size:13px;outline:none;font-family:inherit;transition:.16s}
.hr-edit-input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,174,239,.13)}
select.hr-edit-input{width:170px;cursor:pointer}
@media (max-width:680px){.hr-grid{grid-template-columns:1fr}}

/* ===================================================================
   HOME PORTAL HUB
   =================================================================== */
.home-hero{position:relative;overflow:hidden;border-radius:var(--r-card);padding:34px 32px;margin-bottom:26px;
  background:linear-gradient(135deg,var(--indigo-3) 0%,var(--indigo) 55%,var(--indigo-2) 100%);
  color:#fff;box-shadow:var(--shadow-lift)}
.home-hero-mark{position:absolute;left:-40px;bottom:-90px;width:230px;height:230px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%,rgba(141,198,63,.32),transparent 62%);pointer-events:none}
.home-hero-greet{position:relative;font-size:13px;font-weight:700;color:var(--green-leaf);letter-spacing:.04em;margin-bottom:9px}
.home-hero-title{position:relative;font-size:27px;font-weight:800;letter-spacing:-.4px;line-height:1.22;margin-bottom:11px}
.home-hero-sub{position:relative;font-size:14.5px;color:rgba(255,255,255,.84);line-height:1.75;max-width:56ch}
.svc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:14px}
.svc-tile{display:flex;flex-direction:column;gap:11px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r-md);padding:19px;box-shadow:var(--shadow-soft);text-decoration:none;cursor:pointer;
  transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out),border-color .18s}
.svc-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:var(--line-2)}
.svc-ic{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;color:#fff}
.svc-ic svg{width:23px;height:23px}
.svc-nm{font-size:15.5px;font-weight:800;color:var(--indigo-3)}
.svc-ds{font-size:12.5px;color:var(--ink-soft);line-height:1.6;flex:1}
.svc-host{font-size:11px;color:var(--gray);direction:ltr;text-align:left;font-family:ui-monospace,'SF Mono',monospace}
.svc-tag{position:absolute;top:14px;left:14px;font-size:10.5px;font-weight:800;letter-spacing:.2px;
  background:var(--amber-soft);color:#a96d1c;border-radius:999px;padding:3px 10px}
.svc-tile.svc-soon{position:relative;cursor:default}
.svc-tile.svc-soon:hover{transform:none;box-shadow:var(--shadow-soft);border-color:var(--line)}
.svc-tile.svc-soon .svc-ic{opacity:.8}

/* ===================================================================
   LEAVE / مرخصی (calendar markers · rows · nav badge)
   =================================================================== */
.cal-leave .cal-dn{font-weight:700;font-variant-numeric:tabular-nums}
.cal-leave-approved{background:var(--violet);color:#fff}
.cal-leave-pending{background:#fff;border:1.5px dashed var(--violet);color:var(--violet)}
.cal-lv-tag{position:absolute;bottom:2px;left:5px;font-size:8.5px;font-weight:800}
.leave-row{display:flex;align-items:flex-start;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
.leave-row:last-child{border-bottom:none}
.leave-row-main{flex:1;min-width:0}
.leave-row-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:5px}
.leave-range{font-weight:700;color:var(--ink);font-size:13px}
.leave-reason{font-size:12px;color:var(--gray);line-height:1.6}
.leave-decided{font-size:11px;color:var(--gray-2);margin-top:4px}
.leave-row-status{flex-shrink:0}
.nav-count{margin-inline-start:auto;background:var(--amber);color:#fff;font-size:10.5px;
  font-weight:800;min-width:18px;height:18px;border-radius:9px;display:inline-flex;
  align-items:center;justify-content:center;padding:0 5px;line-height:1}
.nav-item.active .nav-count{background:rgba(255,255,255,.28)}

/* ===================================================================
   SALARY BREAKDOWN / حقوق و دستمزد
   =================================================================== */
.sal-check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;color:var(--ink);font-weight:600}
.sal-check input{width:17px;height:17px;accent-color:var(--cyan-deep);cursor:pointer}
.sal-breakdown{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 22px;margin-top:14px}
.sal-col{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.sal-col-title{font-size:11px;font-weight:800;color:var(--cyan-deep);letter-spacing:.3px;margin-bottom:8px}
.sal-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line)}
.sal-row:last-child{border-bottom:none}
.sal-key{font-size:12px;color:var(--gray);font-weight:500}
.sal-val{font-size:12.5px;color:var(--ink);font-weight:600;direction:ltr;unicode-bidi:plaintext}
.sal-row.sal-total{margin-top:3px;border-top:1.5px solid var(--line-2);border-bottom:none;padding-top:8px}
.sal-row.sal-total .sal-key{color:var(--indigo-3);font-weight:700}
.sal-row.sal-total .sal-val{color:var(--indigo-3);font-weight:800}
.sal-net{display:flex;align-items:center;justify-content:space-between;margin-top:12px;
  background:var(--teal-soft);border-radius:12px;padding:13px 17px;font-size:13.5px;font-weight:700;color:var(--teal)}
.sal-net span{font-size:16px;font-weight:800;direction:ltr;unicode-bidi:plaintext}
@media (max-width:680px){.sal-breakdown{grid-template-columns:1fr}}

/* monthly payroll run KPIs */
.pay-kpis{margin-bottom:14px}
.pay-kpis .stat-num{font-size:18px;line-height:1.25}
.pay-amt{direction:ltr;unicode-bidi:plaintext;display:inline-block}
.pay-unit{font-size:10.5px;font-weight:600;color:var(--gray);margin-right:5px}
.pay-table-head{display:flex;align-items:center;justify-content:space-between;
  margin:20px 0 10px;font-size:12.5px;font-weight:800;color:var(--indigo-3)}
.pay-row{cursor:pointer}
.pay-row:hover td{background:var(--cyan-soft)}
/* payment-history modal total banner */
.payh-total{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:linear-gradient(135deg,var(--indigo-3),var(--indigo) 70%);color:#fff;
  border-radius:var(--r-md);padding:16px 20px}
.payh-total-label{font-size:13px;font-weight:600;opacity:.92}
.payh-total-val{font-size:22px;font-weight:800}
.payh-total-val .pay-unit{color:rgba(255,255,255,.75)}
