/* فونت: اگر فایل‌های Vazirmatn را در assets/fonts قرار دهید به‌صورت خودکار استفاده می‌شوند (بدون وابستگی به اینترنت) */
@font-face{font-family:"Vazirmatn";src:url("../fonts/Vazirmatn-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("../fonts/Vazirmatn-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
:root{--bg:#eef1ee;--surface:#fff;--ink:#1c2625;--muted:#5f6e6c;--line:#d8dfdc;--side:#14312f;--side-ink:#cfe3df;--pri:#0e7c6b;--pri-d:#0a5f52;--warn:#b7791f;--warn-bg:#fdf3dc;--bad:#b4382a;--bad-bg:#fbe7e3;--ok:#1b7a43;--ok-bg:#e2f3e8;--r:8px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.8 "Vazirmatn",Tahoma,"Segoe UI",sans-serif}
a{color:var(--pri-d);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.35rem;margin:.2rem 0 1rem}h2{font-size:1.05rem;margin:.2rem 0 .8rem}h3{font-size:.95rem;margin:1rem 0 .4rem}
code,pre{font-family:ui-monospace,Consolas,monospace;font-size:.85em}pre.dbg{white-space:pre-wrap;word-break:break-all;background:#f4f6f5;padding:.6rem;border-radius:var(--r);margin:.4rem 0;direction:ltr;text-align:left}
.muted{color:var(--muted)}.err{color:var(--bad);display:block}.grow{flex:1}
.topbar{display:flex;align-items:center;gap:.6rem;background:var(--surface);border-bottom:1px solid var(--line);padding:.5rem 1rem;position:sticky;top:0;z-index:5}
.topbar form{margin:0}.brand{font-size:1.05rem}.who{color:var(--muted);font-size:.9rem}.burger{display:none;border:0;background:none;font-size:1.4rem;cursor:pointer}
.shell{display:flex;min-height:calc(100vh - 52px)}
.side{width:230px;background:var(--side);padding:.8rem 0;flex-shrink:0}
.side a{display:block;color:var(--side-ink);padding:.6rem 1.2rem;border-inline-start:3px solid transparent}
.side a:hover{background:rgba(255,255,255,.06);text-decoration:none}.side a.on{background:rgba(255,255,255,.1);color:#fff;border-inline-start-color:#e3b341}
.main{flex:1;min-width:0;padding:1.2rem 1.4rem;max-width:1200px}
.head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem;margin:0 0 1rem}
.grid.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:1rem}
.stat{display:flex;flex-direction:column;color:var(--ink);margin:0}.stat:hover{text-decoration:none;border-color:var(--pri)}.stat .num{font-size:1.8rem;font-weight:700;color:var(--pri-d)}
.btn{display:inline-block;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:.45rem 1rem;border-radius:var(--r);cursor:pointer;font:inherit}
.btn:hover{border-color:var(--pri);text-decoration:none}.btn-primary{background:var(--pri);border-color:var(--pri);color:#fff}.btn-primary:hover{background:var(--pri-d)}
.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-ghost{border-color:transparent;background:none}.btn-sm{padding:.15rem .7rem;font-size:.85rem}
label{display:block;font-size:.9rem}label.check,label.perm{display:flex;gap:.4rem;align-items:center}
input,select,textarea{width:100%;font:inherit;padding:.5rem .6rem;border:1px solid var(--line);border-radius:var(--r);background:#fff;color:var(--ink);margin-top:.2rem}
input[type=checkbox]{width:auto;margin:0}input:focus,select:focus,.btn:focus,a:focus-visible{outline:2px solid var(--pri);outline-offset:1px}
.stack>*+*{margin-top:.8rem}.narrow{max-width:460px}.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem}
.row{display:flex;gap:.5rem;align-items:center}.row.wrap{flex-wrap:wrap}.row select,.row input{width:auto;min-width:140px;margin:0}
.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.8rem}.filters input,.filters select{width:auto;min-width:150px;margin:0}
.tablewrap{overflow-x:auto;padding:0}table{width:100%;border-collapse:collapse}th,td{padding:.55rem .8rem;text-align:start;border-bottom:1px solid var(--line);vertical-align:top}
th{background:#f4f6f5;font-weight:700;font-size:.85rem;white-space:nowrap}tr:last-child td{border-bottom:0}
.tag{display:inline-block;padding:0 .6rem;border-radius:99px;font-size:.8rem}.tag-ok{background:var(--ok-bg);color:var(--ok)}.tag-off{background:var(--bad-bg);color:var(--bad)}.tag-warn{background:var(--warn-bg);color:var(--warn)}
.alert{padding:.65rem .9rem;border-radius:var(--r);margin-bottom:.8rem;border:1px solid}.alert-ok{background:var(--ok-bg);color:var(--ok);border-color:#bfe3cd}
.alert-danger{background:var(--bad-bg);color:var(--bad);border-color:#f0c4bd}.alert-warn{background:var(--warn-bg);color:var(--warn);border-color:#efd9a3}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:.8rem}.tabs a{padding:.35rem .9rem;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}.tabs a.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.pager{display:flex;gap:.3rem;flex-wrap:wrap}.pager a,.pager span{padding:.2rem .7rem;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.pager a.on{background:var(--pri);color:#fff;border-color:var(--pri)}
fieldset{border:1px solid var(--line);border-radius:var(--r);margin:0 0 .8rem}legend{padding:0 .5rem;font-weight:700}
.permgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.3rem .8rem}.perm3{display:flex;justify-content:space-between;gap:.5rem;align-items:center}.perm3 select{width:90px;margin:0}
details{margin:.4rem 0}summary{cursor:pointer;color:var(--pri-d)}.empty{text-align:center;padding:3rem 1rem}
.bare{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}.bare-box{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.6rem}.bare-box.wide{max-width:640px}
.login-title{margin:0}.steps{display:flex;gap:.4rem;list-style:none;padding:0;margin:0 0 1rem;flex-wrap:wrap}.steps li{padding:.15rem .8rem;border-radius:99px;background:#eef1ee;color:var(--muted);font-size:.85rem}.steps li.on{background:var(--pri);color:#fff}
@media (max-width:820px){.burger{display:block}.side{display:none;position:fixed;inset:52px 0 0 auto;width:78%;max-width:300px;z-index:6;overflow:auto}.side.open{display:block}.who{display:none}.main{padding:.9rem}}
@media (prefers-reduced-motion:no-preference){.btn,.stat{transition:border-color .15s,background .15s}}
.state{display:inline-block;padding:0 .7rem;border-radius:99px;font-size:.82rem;color:var(--c);background:color-mix(in srgb,var(--c) 14%,#fff);border:1px solid color-mix(in srgb,var(--c) 35%,#fff);margin:.1rem}
.late{color:var(--bad);font-weight:700}textarea{width:100%;font:inherit;padding:.5rem .6rem;border:1px solid var(--line);border-radius:var(--r);margin-top:.2rem}
.sig{width:100%;max-width:600px;height:180px;touch-action:none;border:1px dashed var(--muted);border-radius:var(--r);background:#fff}
.timeline .tl{border-inline-start:3px solid var(--line);padding:.2rem .8rem;margin-bottom:.6rem}
label:has(.lookup){position:relative}ul.lookup{position:absolute;inset-inline:0;top:100%;z-index:4;margin:0;padding:0;list-style:none;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:0 4px 14px rgba(0,0,0,.1)}
ul.lookup li{padding:.45rem .8rem;cursor:pointer}ul.lookup li:hover,ul.lookup li:focus{background:#eef6f4;outline:0}
