@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-Variable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;}
:root{
  --bg:#f3f6f8;
  --surface:#ffffff;
  --surface-soft:#f8fafb;
  --ink:#122235;
  --ink-2:#33475b;
  --muted:#718096;
  --line:#dfe7ec;
  --line-soft:#edf2f5;
  --navy:#0b2742;
  --navy-2:#123d5c;
  --navy-3:#1b5574;
  --teal:#0f766e;
  --teal-2:#0d9488;
  --teal-soft:#e9f7f4;
  --gold:#c79a45;
  --gold-soft:#fff8e8;
  --green:#087f5b;
  --amber:#b76e00;
  --rose:#c2415b;
  --shadow-xs:0 1px 2px rgba(11,39,66,.04);
  --shadow-sm:0 7px 22px rgba(11,39,66,.065);
  --shadow-md:0 18px 48px rgba(11,39,66,.10);
  --shadow-lg:0 30px 90px rgba(5,25,45,.18);
  --radius:18px;
  --radius-lg:26px;
}
*{box-sizing:border-box}
html{min-height:100%;scroll-behavior:smooth}
body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:"Vazirmatn",Tahoma,"Segoe UI",Arial,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(circle at 8% 4%,rgba(15,118,110,.07),transparent 26%),radial-gradient(circle at 72% 0%,rgba(199,154,69,.06),transparent 20%),linear-gradient(180deg,#f8fafb 0,#f3f6f8 46%,#f1f5f7 100%)}
::selection{background:#ccebe6;color:var(--navy)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit}
svg{display:block}
.hidden{display:none!important}
.loading{min-height:100vh;display:grid;place-items:center;font-weight:900;color:var(--navy);letter-spacing:-.2px}.loading::before{content:"";width:38px;height:38px;margin-left:12px;display:inline-block;vertical-align:middle;border:3px solid #d7e4e7;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.shell{min-height:100vh}

/* Header */
.topbar{height:84px;position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid rgba(205,218,226,.86);background:rgba(255,255,255,.91);box-shadow:0 5px 24px rgba(11,39,66,.035);backdrop-filter:blur(18px) saturate(150%)}
.brand,.account,.row,.actions{display:flex;align-items:center;gap:12px}
.brand{min-width:0}.brand>div{min-width:0}.brand b{display:block;color:var(--navy);font-size:17px;font-weight:950;letter-spacing:-.45px}.brand small,.account small{display:block;margin-top:4px;color:#8b9bad;font-size:10.5px;white-space:nowrap}
.brand-mark{position:relative;width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(255,255,255,.5);border-radius:16px;background:linear-gradient(145deg,var(--navy),var(--navy-3) 62%,var(--teal));color:#fff;box-shadow:0 9px 25px rgba(11,39,66,.18),inset 0 0 0 1px rgba(255,255,255,.08)}
.brand-mark::after{content:"";position:absolute;width:8px;height:8px;top:-3px;left:-3px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px #fff}
.account{padding:7px 8px 7px 12px;border:1px solid var(--line-soft);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs)}.account .who{text-align:right}.account .who b{display:block;color:var(--navy);font-size:12px;font-weight:900;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Layout + academic navigation */
.layout{max-width:1800px;margin:auto;display:flex;align-items:flex-start}
.sidebar{position:sticky;top:84px;width:294px;height:calc(100vh - 84px);padding:22px 18px;overflow:auto;border-left:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#0b2742 0%,#0d304c 56%,#0a233b 100%);color:#dce8ef;box-shadow:-10px 0 35px rgba(11,39,66,.04)}
.sidebar::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 15% 0%,rgba(19,148,136,.18),transparent 28%),linear-gradient(135deg,transparent 0 70%,rgba(255,255,255,.025) 70% 71%,transparent 71% 100%);background-size:auto,26px 26px}
.sidebar>*{position:relative;z-index:1}
.account-box{position:relative;padding:18px 18px 17px;margin-bottom:22px;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,.045));box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.account-box::before{content:"";position:absolute;right:0;top:0;width:4px;height:100%;background:linear-gradient(var(--gold),#efd28d)}
.account-box small{display:block;color:#9eb5c4;font-size:10px}.account-box b{display:block;margin:6px 0;color:#fff;font-size:14px;font-weight:900}.account-box small:last-child{color:#c9d8e1}
.nav{display:grid;gap:7px}.nav button{position:relative;width:100%;display:flex;align-items:center;gap:12px;border:1px solid transparent;border-radius:13px;padding:12px 13px;color:#b9cad5;background:transparent;text-align:right;font-weight:850;transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease}.nav button svg{opacity:.8;transition:.18s}.nav button:hover{border-color:rgba(255,255,255,.07);background:rgba(255,255,255,.065);color:#fff;transform:translateX(-2px)}.nav button:hover svg{opacity:1}.nav button.active{border-color:rgba(100,225,211,.18);background:linear-gradient(100deg,rgba(15,118,110,.98),rgba(13,148,136,.82));color:#fff;box-shadow:0 9px 22px rgba(3,25,40,.22)}.nav button.active::after{content:"";position:absolute;left:11px;width:6px;height:6px;border-radius:50%;background:#f2cf7d;box-shadow:0 0 0 4px rgba(242,207,125,.10)}.nav button.active svg{opacity:1}
.security-note{margin-top:26px;border:1px solid rgba(255,255,255,.09);border-radius:16px;padding:15px;color:#9eb5c4;background:rgba(255,255,255,.035);font-size:10.5px;line-height:2}.security-note svg{margin-bottom:8px;color:#7ed4c9}
.main{min-width:0;flex:1;padding:34px 36px 52px}.content{max-width:1260px;margin:auto}

/* Page hierarchy */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:25px}.page-head>div:first-child{min-width:0}.page-head h1{position:relative;margin:0;padding-right:16px;color:var(--navy);font-size:28px;font-weight:950;letter-spacing:-.8px}.page-head h1::before{content:"";position:absolute;right:0;top:4px;width:5px;height:29px;border-radius:10px;background:linear-gradient(180deg,var(--teal),var(--gold))}.page-head p{max-width:780px;margin:9px 0 0;color:var(--muted);font-size:12.5px;line-height:1.95}
.card{position:relative;border:1px solid rgba(215,225,231,.92);border-radius:var(--radius);background:rgba(255,255,255,.97);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}.card:hover{border-color:#d4e1e5;box-shadow:0 10px 30px rgba(11,39,66,.075)}.pad{padding:22px}.card h2,.card h3{margin:0;color:var(--navy);letter-spacing:-.35px}.card h2{font-size:17px}.card h3{font-size:14px}
.grid{display:grid;gap:17px}.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid4{grid-template-columns:repeat(4,minmax(0,1fr))}.mt{margin-top:20px}.mb{margin-bottom:20px}

/* KPI cards */
.stat{min-height:106px;display:flex;align-items:center;gap:15px;padding:20px 19px}.stat::after{content:"";position:absolute;right:0;top:0;width:100%;height:3px;background:linear-gradient(90deg,var(--teal),rgba(15,118,110,.12))}.grid4 .stat:nth-child(2)::after{background:linear-gradient(90deg,var(--navy-3),rgba(27,85,116,.12))}.grid4 .stat:nth-child(3)::after{background:linear-gradient(90deg,var(--gold),rgba(199,154,69,.12))}.grid4 .stat:nth-child(4)::after{background:linear-gradient(90deg,#5b7d6a,rgba(91,125,106,.12))}.stat-icon{width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #d8eeea;border-radius:15px;background:linear-gradient(145deg,#f1fbf9,#e6f5f2);color:var(--teal);box-shadow:inset 0 1px 0 #fff}.grid4 .stat:nth-child(2) .stat-icon{border-color:#dbe8ef;background:#f0f6f9;color:var(--navy-3)}.grid4 .stat:nth-child(3) .stat-icon{border-color:#f0e4c8;background:#fffaf0;color:#a9771e}.grid4 .stat:nth-child(4) .stat-icon{border-color:#dfe9e2;background:#f2f8f4;color:#52705f}.stat strong{display:block;color:var(--navy);font-size:27px;line-height:1;font-weight:950;font-variant-numeric:tabular-nums}.stat span{display:block;margin-top:8px;color:var(--muted);font-size:11px;font-weight:750}

.section-title{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 21px;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,#fff,#fbfcfd)}.section-title p{margin:5px 0 0;color:#8a9aaa;font-size:10.5px}.list>div+div{border-top:1px solid var(--line-soft)}.list-row{display:flex;align-items:center;gap:13px;padding:16px 20px;transition:background .15s}.list-row:hover{background:#fafcfc}.list-row .stat-icon{width:40px;height:40px;border-radius:12px}.grow{min-width:0;flex:1}.grow b{display:block;color:var(--ink);font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grow small{display:block;margin-top:5px;color:var(--muted);font-size:10.5px}

/* Controls */
.btn{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:11px;padding:9px 15px;background:linear-gradient(135deg,var(--teal),#0c857b);color:#fff;box-shadow:0 6px 15px rgba(15,118,110,.14);font-size:11.5px;font-weight:900;transition:transform .15s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease}.btn:hover{background:linear-gradient(135deg,#0c6b64,var(--teal-2));box-shadow:0 9px 20px rgba(15,118,110,.20);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.secondary{border-color:#d9e3e8;background:#fff;color:#40566a;box-shadow:none}.btn.secondary:hover{border-color:#bcd8d5;background:#f2faf8;color:var(--teal);box-shadow:0 5px 14px rgba(11,39,66,.05)}.btn.danger{border-color:#f3d7de;background:#fff5f7;color:#ad304b;box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.icon-btn{display:inline-grid;place-items:center;border:1px solid transparent;border-radius:10px;padding:8px;background:transparent;color:#6e8090;transition:.15s}.icon-btn:hover{border-color:#e3eaee;background:#f6f9fa;color:var(--navy)}.account>.icon-btn:hover{color:#a33c52;background:#fff5f7;border-color:#f3d7de}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(13,148,136,.20);outline-offset:2px}
.field{display:grid;gap:8px;color:#43596d;font-size:11px;font-weight:850}.input,.select,.textarea{width:100%;min-height:42px;border:1px solid #d7e1e7;border-radius:11px;padding:10px 12px;background:#fff;color:var(--ink);outline:none;box-shadow:inset 0 1px 1px rgba(11,39,66,.02);transition:border-color .15s,box-shadow .15s,background .15s}.input:hover,.select:hover,.textarea:hover{border-color:#c5d3db}.input:focus,.select:focus,.textarea:focus{border-color:#6ebbb2;background:#fff;box-shadow:0 0 0 4px rgba(15,118,110,.09)}.input::placeholder,.textarea::placeholder{color:#a6b2bd}.textarea{resize:vertical;min-height:110px;line-height:1.95}.select{appearance:auto}.form-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.datetime-field{grid-column:span 2}.form-submit{align-self:end}.jdt{display:grid;gap:8px;padding:11px;border:1px solid #e2e9ed;border-radius:14px;background:#fafcfc}.jdt-date{display:grid;grid-template-columns:minmax(70px,.7fr) minmax(110px,1fr) minmax(90px,.9fr);gap:7px}.jdt-time{display:grid;grid-template-columns:minmax(70px,1fr) 14px minmax(70px,1fr);align-items:center;gap:5px}.jdt-time>span{text-align:center;color:#9aa9b5;font-weight:900}.jdt .select{min-height:38px;padding:8px}.jdt-preview{display:block;padding:2px 4px 0;color:var(--teal);font-size:9.5px;font-weight:850;line-height:1.7}.deadline-line{margin-top:5px!important;color:var(--teal)!important;font-size:10.5px!important;font-weight:750}

/* Tags, tables, lists */
.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid #e3e9ed;border-radius:999px;padding:5px 9px;background:#f7f9fa;color:#667a8d;font-size:9.5px;font-weight:900;white-space:nowrap}.pill.blue{border-color:#d8e6ed;background:#eef6f8;color:var(--navy-3)}.pill.green{border-color:#cfeadf;background:#edf9f4;color:#087452}.pill.amber{border-color:#f0dfb9;background:#fff8e9;color:#9a6500}.pill.rose{border-color:#f1d4dc;background:#fff3f6;color:#b23953}.empty{padding:45px 28px;text-align:center;color:#91a0ae;font-size:12px}.empty::before{content:"—";display:block;margin-bottom:6px;color:#c2cdd5;font-size:24px}.table-wrap{overflow:auto}table{width:100%;min-width:720px;border-collapse:collapse;text-align:right}th{padding:13px 18px;border-bottom:1px solid #e6edf1;background:#f6f9fa;color:#728597;font-size:10px;font-weight:900;white-space:nowrap}td{padding:15px 18px;border-top:1px solid #edf2f4;color:#65798b;font-size:11.5px}tbody tr{transition:background .15s}tbody tr:hover{background:#fbfdfd}td b{color:#263d51}
.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:20px}.course-choice{position:relative;border:1px solid var(--line);border-radius:14px;padding:16px 17px;background:#fff;text-align:right;color:#334b60;transition:.17s}.course-choice:hover{border-color:#b9d7d3;background:#f8fcfb;transform:translateY(-1px);box-shadow:var(--shadow-xs)}.course-choice.active{border-color:#8bc9c1;background:linear-gradient(135deg,#f0faf8,#f8fcfb);box-shadow:0 0 0 3px rgba(15,118,110,.06)}.course-choice.active::before{content:"";position:absolute;right:0;top:12px;bottom:12px;width:4px;border-radius:6px;background:var(--teal)}.course-choice b,.course-choice small{display:block}.course-choice b{font-weight:900}.course-choice small{margin-top:7px;color:var(--muted);font-size:10.5px}.student-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:#607487;font-size:10.5px;font-weight:800;cursor:pointer;transition:.15s}.student-chip:hover{border-color:#a8d5cf;background:#f6fbfa;color:var(--teal)}.student-chip input{accent-color:var(--teal)}.student-chip.active{border-color:#a7d8cb;background:#eef9f5;color:#087452}.chips{display:flex;flex-wrap:wrap;gap:7px}
.alert{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;border:1px solid #f0d1da;border-right:4px solid var(--rose);border-radius:13px;padding:12px 14px;background:#fff6f8;color:#aa334e;font-size:11px;font-weight:850;box-shadow:var(--shadow-xs)}.toast{position:fixed;right:24px;bottom:24px;z-index:100;display:flex;align-items:center;gap:9px;border:1px solid #cde9de;border-radius:14px;padding:13px 16px;background:#fff;color:#294a3d;box-shadow:var(--shadow-md);font-size:11px;font-weight:900;animation:toastIn .22s ease both}@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Login */
.login-page{position:relative;min-height:100vh;display:grid;place-items:center;padding:32px;background:linear-gradient(135deg,#eaf1f2 0%,#f8fafb 45%,#eef5f4 100%);overflow:hidden}.login-page::before,.login-page::after{content:"";position:absolute;border-radius:50%;filter:blur(1px);pointer-events:none}.login-page::before{width:520px;height:520px;right:-180px;top:-220px;background:radial-gradient(circle,rgba(15,118,110,.13),rgba(15,118,110,0) 70%)}.login-page::after{width:480px;height:480px;left:-170px;bottom:-240px;background:radial-gradient(circle,rgba(199,154,69,.11),rgba(199,154,69,0) 70%)}
.login-card{position:relative;z-index:1;width:min(980px,100%);min-height:580px;display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;border:1px solid rgba(255,255,255,.92);border-radius:30px;background:#fff;box-shadow:0 35px 100px rgba(8,34,56,.16)}
.login-hero{position:relative;display:flex;flex-direction:column;justify-content:center;padding:56px 52px;overflow:hidden;background:linear-gradient(145deg,#09243e 0%,#0d3a55 55%,#0f6f69 125%);color:#fff}.login-hero::before{content:"";position:absolute;inset:0;opacity:.22;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:36px 36px;mask-image:linear-gradient(135deg,#000,transparent 78%)}.login-hero::after{content:"";position:absolute;width:260px;height:260px;left:-85px;bottom:-90px;border:1px solid rgba(255,255,255,.14);border-radius:50%;box-shadow:0 0 0 32px rgba(255,255,255,.025),0 0 0 64px rgba(255,255,255,.02)}.login-hero>*{position:relative;z-index:1}.login-hero .brand-mark{width:58px;height:58px;border-radius:18px;background:linear-gradient(145deg,#fff,#d8efeb);color:var(--navy);box-shadow:0 15px 40px rgba(0,0,0,.15)}.login-hero .brand-mark::after{box-shadow:0 0 0 4px #0b2f49}.login-hero h1{max-width:440px;margin:52px 0 16px;font-size:32px;line-height:1.7;font-weight:950;letter-spacing:-1px}.login-hero p{max-width:430px;margin:0;color:#c7d9e3;line-height:2.05;font-size:12.5px}.login-hero p::after{content:"پژوهش نگار محیط دانشگاهی امن و یکپارچه";display:block;margin-top:34px;padding-top:18px;border-top:1px solid rgba(255,255,255,.13);color:#d9b96f;font-size:10px;font-weight:850;letter-spacing:.1px}
.login-form{display:grid;align-content:center;gap:18px;padding:48px 52px;background:linear-gradient(180deg,#fff,#fbfcfc)}.login-form h2{margin:0;color:var(--navy);font-size:25px;font-weight:950;letter-spacing:-.6px}.login-form>div>p{margin:8px 0 0;color:var(--muted);line-height:1.9;font-size:11px}.login-form>.btn{min-height:46px;margin-top:2px}.login-form>a.subtle{text-decoration:none;color:#8a9aaa}.login-form>a.subtle:hover{color:var(--teal)}

/* Modal + reports */
.modal{position:fixed;inset:0;z-index:80;display:flex;align-items:flex-start;justify-content:center;padding:34px 16px;background:rgba(4,22,38,.56);backdrop-filter:blur(7px);overflow:auto}.modal-card{width:min(740px,100%);border:1px solid rgba(255,255,255,.8);border-radius:24px;background:#fff;box-shadow:var(--shadow-lg);padding:24px;animation:modalIn .2s ease both}@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.99)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;border-bottom:1px solid #eaf0f3;padding-bottom:16px}.modal-head h2{margin:0;color:var(--navy);font-size:19px}.modal-head p{margin:7px 0 0;color:var(--muted);font-size:10.5px}.criteria-grid{display:grid;gap:14px;margin-top:19px}.criterion-edit{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:8px;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fbfcfd}.score-row{display:grid;gap:7px;padding:12px;border:1px solid #edf1f3;border-radius:13px;background:#fbfcfc}.score-row small{color:var(--muted);line-height:1.8;font-size:10px}.file-link{display:flex;align-items:center;gap:8px;margin-top:9px;padding:9px 11px;border:1px solid #e4ecef;border-radius:10px;background:#f9fbfb;color:var(--teal);text-decoration:none;font-size:10.5px;font-weight:850}.file-link:hover{border-color:#b9d8d3;background:#f2faf8}.hero{position:relative;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px;overflow:hidden;border-radius:22px;padding:27px;background:linear-gradient(120deg,#0a2945,#124a62 56%,#0f766e);color:#fff;box-shadow:0 16px 38px rgba(11,39,66,.15)}.hero::after{content:"";position:absolute;width:220px;height:220px;left:-60px;top:-120px;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 28px rgba(255,255,255,.025),0 0 0 56px rgba(255,255,255,.018)}.hero>*{position:relative;z-index:1}.hero h2{margin:10px 0;color:#fff}.hero p{margin:0;color:#d5e5ea;font-size:11px;line-height:2}.score-box{min-width:125px;border:1px solid rgba(255,255,255,.18);border-radius:17px;padding:16px;text-align:center;background:rgba(255,255,255,.09);backdrop-filter:blur(6px)}.score-box strong{display:block;font-size:30px}.mobile-menu{display:none}.mobile-overlay{display:none}.subtle{color:#8999a7;font-size:10.5px;line-height:1.95}.report-rank{display:flex;justify-content:space-between;gap:12px;border:1px solid #e7edef;border-radius:12px;padding:12px;background:#f8fafb;color:#607486;font-size:11px}.report-rank b{color:var(--navy)}.separator{height:1px;background:#eaf0f3;margin:21px 0}

/* Scrollbars */
*{scrollbar-width:thin;scrollbar-color:#b8c9d1 transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#bdcbd2;border:2px solid transparent;border-radius:20px;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}

@media(max-width:1180px){.main{padding:28px 26px}.sidebar{width:270px}.grid4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1000px){.topbar{height:74px;padding:0 18px}.layout{display:block}.main{padding:24px 18px 42px}.sidebar{position:fixed;right:0;top:0;z-index:70;width:min(310px,86vw);height:100vh;padding-top:24px;transform:translateX(102%);transition:transform .24s ease;box-shadow:-22px 0 60px rgba(4,22,38,.26)}.sidebar.open{transform:translateX(0)}.mobile-menu{display:inline-grid}.mobile-overlay.show{display:block;position:fixed;inset:0;z-index:65;border:0;background:rgba(4,22,38,.45);backdrop-filter:blur(3px)}.form-row{grid-template-columns:repeat(2,1fr)}.account{border:0;background:transparent;box-shadow:none}.account .who{display:none}.login-card{grid-template-columns:1fr;max-width:620px}.login-hero{min-height:270px;padding:34px 38px}.login-hero h1{margin:30px 0 10px;font-size:26px}.login-hero p::after{margin-top:20px}.login-form{padding:38px}}
@media(max-width:720px){body{font-size:14px}.topbar{padding:0 12px}.brand small{display:none}.brand-mark{width:42px;height:42px;border-radius:14px}.account{gap:6px;padding:0}.account>.pill{display:none}.main{padding:20px 12px 34px}.page-head{align-items:flex-start;flex-direction:column;margin-bottom:19px}.page-head h1{font-size:23px}.page-head h1::before{height:24px}.page-head .actions{width:100%}.page-head .actions .btn{flex:1}.grid2,.grid3,.grid4{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.datetime-field{grid-column:auto}.course-grid{grid-template-columns:1fr;padding:14px}.pad{padding:17px}.card{border-radius:16px}.section-title{padding:16px}.list-row{padding:14px 16px}.criterion-edit{grid-template-columns:1fr}.criterion-edit .crit-remove{justify-self:end}.row{flex-wrap:wrap}.row>.input,.row>.select{flex:1 1 180px}.jdt-date{grid-template-columns:.7fr 1fr .9fr}.login-page{padding:14px}.login-card{min-height:auto;border-radius:23px}.login-hero{min-height:245px;padding:30px 26px}.login-hero h1{font-size:23px;line-height:1.65}.login-hero p{font-size:11px}.login-form{padding:30px 24px}.modal{padding:14px 9px}.modal-card{padding:18px;border-radius:19px}.toast{right:12px;left:12px;bottom:12px;justify-content:center}.stat{min-height:94px}.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.stat strong{font-size:23px}.stat-icon{width:43px;height:43px}}
@media(max-width:430px){.grid4{grid-template-columns:1fr}.brand b{font-size:14px}.page-head h1{font-size:21px}.login-hero p::after{display:none}.jdt-date{grid-template-columns:1fr 1.2fr 1fr}.account>.icon-btn{padding:7px}.actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
@media print{body{background:#fff}.topbar,.sidebar,.mobile-menu,.mobile-overlay,.btn,.icon-btn,.security-note,.toast{display:none!important}.layout{display:block}.main{padding:0}.content{max-width:none}.card{break-inside:avoid;border:1px solid #d9e1e5;box-shadow:none}.page-head h1::before{background:#333}.table-wrap{overflow:visible}table{min-width:0}.hero{background:#fff!important;color:#111!important;border:1px solid #ddd;box-shadow:none}.hero h2,.hero p{color:#111!important}}

/* Enhanced UI layer v1.3 */
:root{
 --primary:#1e3a8a;
 --primary-soft:#eef2ff;
 --accent:#0f766e;
 --card-glass:rgba(255,255,255,.82);
}
body{font-weight:450;letter-spacing:-.15px}
h1,h2,h3,h4,h5,h6,.title,.heading{font-weight:750;letter-spacing:-.4px}
button,.btn,a.btn{font-family:"Vazirmatn",sans-serif;font-weight:650}
.card,.panel,.box,.stat-card{
 transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;
}
.card:hover,.panel:hover,.box:hover,.stat-card:hover{
 transform:translateY(-3px);
 box-shadow:0 20px 50px rgba(15,35,60,.12);
}
input,select,textarea{
 font-family:"Vazirmatn",sans-serif;
}
::selection{background:#1e3a8a;color:#fff}
@media(max-width:768px){
 body{font-size:14px}
 .sidebar{backdrop-filter:blur(12px)}
}

/* v1.4 design system. Charts inherit theme colors without reloading. */
:root{color-scheme:light;--chart:#0f766e;--chart-gold:#b78324;--focus:#99d6d0;--chart-draft:#94a3b8;--chart-open:#0f9488;--chart-expired:#d59b35;--chart-closed:#426ca1}
.card:hover{transform:none;box-shadow:var(--shadow-sm)}
.topbar{gap:15px}.account{gap:9px}.edition{font:600 10px/1.8 Vazirmatn,Arial;letter-spacing:2px;color:#a8d9d5}.dashboard-hero h2{font-size:22px}
.dashboard-charts{grid-template-columns:1.5fr 1fr}.chart{width:100%;height:auto;max-height:240px;overflow:visible;display:block;margin-top:24px;direction:ltr}.chart-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5}.chart-line{fill:none;stroke:var(--chart);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.chart-point,.chart-bar{fill:var(--chart)}.chart-label{fill:var(--muted);font:12px Vazirmatn,Tahoma,sans-serif}.chart-values{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:10px;margin-top:10px}.chart-values b{color:var(--ink)}
.donut-layout{display:flex;gap:18px;align-items:center;justify-content:center;min-height:226px}.donut{width:170px;flex:0 0 170px}.donut-track{fill:none;stroke:var(--line-soft);stroke-width:17}.donut-segment{fill:none;stroke-width:17}.donut-number{fill:var(--ink);font:700 27px Vazirmatn}.chart-draft{stroke:var(--chart-draft);background:var(--chart-draft)}.chart-open{stroke:var(--chart-open);background:var(--chart-open)}.chart-expired{stroke:var(--chart-expired);background:var(--chart-expired)}.chart-closed{stroke:var(--chart-closed);background:var(--chart-closed)}.legend{display:grid;gap:14px;min-width:125px}.legend>div{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:11px}.legend b{margin-right:auto;color:var(--ink)}.legend-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%}
.filter-bar{display:flex;align-items:end;flex-wrap:wrap;gap:12px}.filter-bar .field{flex:1 1 145px}.filter-bar .field:first-child{flex:2 1 220px}.filter-bar .btn{flex:0 0 auto}.pagination{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:18px 4px;color:var(--muted);font-size:11px}.pagination .row{gap:12px}.page-size{width:110px}.text-button{background:transparent;border:0;padding:0;color:var(--teal);text-align:right}.avatar-button{border:0;padding:0;border-radius:50%;background:transparent}.avatar{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--teal-soft);color:var(--teal);font-weight:700;border:1px solid var(--line)}.avatar.large{width:88px;height:88px;font-size:30px}.profile-hero p{margin:6px 0}.profile-hero .row{gap:20px}.profile-hero #avatar-form{align-items:end}.profile-hero .field{max-width:330px}.notification-trigger{position:relative}.notification-count:empty{display:none}.notification-count{position:absolute;right:0;top:0;min-width:18px;height:18px;padding:0 4px;border-radius:20px;background:#c2415b;color:white;font-size:10px;display:grid;place-items:center}.notification-row.unread{background:var(--teal-soft)}.notification-row .grow p{margin:6px 0;color:var(--muted);font-size:12px;line-height:1.9}.notification-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--line)}.unread .notification-dot{background:var(--teal)}.notification-row .grow b{white-space:normal}.search-modal .modal-card{max-width:660px}.search-result{display:block;width:100%;text-align:right;border:0;border-bottom:1px solid var(--line);padding:14px;background:var(--surface);color:var(--ink);border-radius:8px}.search-result:hover{background:var(--teal-soft)}.search-result b,.search-result small{display:block}.search-result small{margin-top:7px;color:var(--muted);font-size:11px}.login-theme{position:absolute;left:24px;top:20px;z-index:3;border:1px solid var(--line);background:var(--surface)}
html.is-loading::after{content:"";position:fixed;top:0;right:0;z-index:200;width:35%;height:3px;background:var(--teal-2);animation:request-progress 1s ease-in-out infinite}html.is-loading .btn:disabled::before{content:"";width:11px;height:11px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes request-progress{0%{transform:translateX(100%)}100%{transform:translateX(-300%)}}@keyframes spin{to{transform:rotate(360deg)}}
html[data-theme="dark"]{color-scheme:dark;--bg:#101a29;--surface:#192639;--surface-soft:#1f3045;--ink:#e3edf6;--ink-2:#ccd9e6;--muted:#a4b5c8;--line:#314359;--line-soft:#29394d;--navy:#e3edf6;--navy-2:#ccdfee;--navy-3:#9cc6e4;--teal:#78d9cd;--teal-2:#4ab9ab;--teal-soft:#193b40;--gold:#e2bd72;--gold-soft:#403728;--rose:#f591ac;--chart:#78d9cd;--chart-gold:#e2bd72;--shadow-xs:0 1px 3px #0002;--shadow-sm:0 7px 22px #0003;--shadow-md:0 18px 48px #0004;--card-glass:#192639}
html[data-theme="dark"] body::before{background:radial-gradient(circle at 5% 0,#153b4233,transparent 35%),linear-gradient(#101a29,#101c2d)}
html[data-theme="dark"] .topbar{background:#162337ed;border-color:var(--line)}
html[data-theme="dark"] .card,html[data-theme="dark"] .account,html[data-theme="dark"] .modal-card,html[data-theme="dark"] .login-card{background:var(--surface);border-color:var(--line)}
html[data-theme="dark"] .sidebar{background:linear-gradient(180deg,#0b192b,#101f32)}
html[data-theme="dark"] .input,html[data-theme="dark"] .select,html[data-theme="dark"] .textarea{background:#111d2f;color:var(--ink);border-color:var(--line);box-shadow:none}
html[data-theme="dark"] .input:focus,html[data-theme="dark"] .select:focus,html[data-theme="dark"] .textarea:focus{background:#142338;border-color:var(--teal)}
html[data-theme="dark"] .input::placeholder,html[data-theme="dark"] .textarea::placeholder{color:#8a9fb7}
html[data-theme="dark"] .field,html[data-theme="dark"] td,html[data-theme="dark"] .subtle,html[data-theme="dark"] .brand small,html[data-theme="dark"] .account small{color:var(--muted)}
html[data-theme="dark"] .btn{background:linear-gradient(135deg,#168174,#116f66);color:#fff}
html[data-theme="dark"] .btn.secondary,html[data-theme="dark"] .course-choice,html[data-theme="dark"] .student-chip{background:var(--surface-soft);color:var(--ink);border-color:var(--line)}
html[data-theme="dark"] .btn.secondary:hover,html[data-theme="dark"] .course-choice:hover,html[data-theme="dark"] .course-choice.active,html[data-theme="dark"] .student-chip:hover,html[data-theme="dark"] .student-chip.active{background:var(--teal-soft);color:var(--teal);border-color:#477575}
html[data-theme="dark"] .icon-btn{color:var(--muted)}html[data-theme="dark"] .icon-btn:hover{color:var(--ink);background:var(--surface-soft);border-color:var(--line)}
html[data-theme="dark"] .section-title,html[data-theme="dark"] th{background:var(--surface-soft);border-color:var(--line);color:var(--muted)}
html[data-theme="dark"] td,html[data-theme="dark"] .modal-head{border-color:var(--line)}html[data-theme="dark"] td b{color:var(--ink)}
html[data-theme="dark"] .list-row:hover,html[data-theme="dark"] tbody tr:hover{background:var(--surface-soft)}
html[data-theme="dark"] .stat-icon,html[data-theme="dark"] .grid4 .stat-icon{background:var(--teal-soft);border-color:#34525b;color:var(--teal);box-shadow:none}
html[data-theme="dark"] .pill{background:#26394d;border-color:#3b4e65;color:#c4d2e3}html[data-theme="dark"] .pill.blue{background:#223951;color:#a9d3ef}html[data-theme="dark"] .pill.green{background:#163c35;border-color:#30564d;color:#8de0b9}html[data-theme="dark"] .pill.amber{background:#443827;border-color:#5c4b32;color:#f0cf87}html[data-theme="dark"] .pill.rose,html[data-theme="dark"] .alert,html[data-theme="dark"] .btn.danger{background:#402736;border-color:#643847;color:#ffadc0}
html[data-theme="dark"] .toast{background:var(--surface);border-color:#42655d;color:#b8ead9}
html[data-theme="dark"] .jdt,html[data-theme="dark"] .criterion-edit,html[data-theme="dark"] .score-row,html[data-theme="dark"] .file-link,html[data-theme="dark"] .report-rank{background:var(--surface-soft);border-color:var(--line);color:var(--muted)}
html[data-theme="dark"] .login-page{background:linear-gradient(135deg,#0c1726,#19283b)}html[data-theme="dark"] .login-form{background:var(--surface)}
html[data-theme="dark"] .separator{background:var(--line)}
html[data-theme="dark"] .empty{color:var(--muted)}
@media(max-width:1180px){.dashboard-charts{grid-template-columns:1fr}.donut-layout{justify-content:flex-start}.chart{max-height:230px}}
@media(max-width:720px){.topbar{height:72px;gap:6px}.brand{gap:6px}.brand .brand-mark{display:none}.brand b{font-size:14px}.account{gap:4px}.account>.icon-btn{padding:7px}.account .avatar-button{display:none}.dashboard-hero{flex-direction:column;align-items:stretch;padding:23px}.dashboard-hero h2{font-size:19px}.score-box{align-self:flex-start;min-width:110px;padding:12px}.dashboard-hero .edition{font-size:8px;letter-spacing:1px}.notification-row{align-items:flex-start;flex-wrap:wrap}.notification-row .actions{margin-right:16px}.filter-bar .field{flex:1 1 100%}.filter-bar .field:first-child{flex:1 1 100%}.pagination .row{gap:8px}.chart-label{font-size:10px}.donut-layout{justify-content:center}.profile-hero .row{gap:12px}.profile-hero .avatar.large{width:70px;height:70px}.chart-values{gap:6px}.page-size{width:105px}}
@media(prefers-reduced-motion:reduce){html.is-loading::after{animation:none;width:100%}}
@media print{html[data-theme="dark"]{color-scheme:light}.filter-bar,.pagination{display:none}.card{color:#111!important;background:white!important}th,td{color:#111!important}}

html[data-theme="dark"] .grid4 .stat:nth-child(n) .stat-icon{background:var(--teal-soft);border-color:#34525b;color:var(--teal);box-shadow:none}
body.overlay-open{overflow:hidden}
