@font-face{font-family:"Vazirmatn";src:url("../fonts/Vazirmatn-Regular.cdc140628f11.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("../fonts/Vazirmatn-Medium.dd2193b32cbe.woff2") format("woff2");font-weight:500 600;font-style:normal;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("../fonts/Vazirmatn-Bold.7958481fe611.woff2") format("woff2");font-weight:700 900;font-style:normal;font-display:swap}
:root{--bg:#f5f7fb;--surface:#fff;--surface-2:#f8fafc;--text:#111827;--muted:#64748b;--line:#e2e8f0;--brand:#1d4ed8;--brand-2:#2563eb;--brand-dark:#0f172a;--danger:#b91c1c;--success:#15803d;--shadow:0 24px 70px rgba(15,23,42,.12);font-family:"Vazirmatn",Tahoma,Arial,sans-serif}
*{box-sizing:border-box}html{font-family:"Vazirmatn",Tahoma,Arial,sans-serif}body,input,button,select,textarea{font:inherit}body{margin:0;color:var(--text);background:var(--bg);direction:rtl;-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font-family:"Vazirmatn",Tahoma,Arial,sans-serif}
.auth-page{min-height:100vh;background:radial-gradient(circle at 14% 14%,rgba(37,99,235,.12),transparent 30%),linear-gradient(135deg,#f8fafc 0%,#eef2ff 100%)}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(340px,1fr) minmax(360px,520px);max-width:1180px;margin:auto;align-items:center;gap:72px;padding:48px 32px}.auth-brand{padding:36px 10px}.brand-mark{width:68px;height:68px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(145deg,var(--brand-2),#1e40af);box-shadow:0 16px 38px rgba(37,99,235,.25);margin-bottom:28px}.brand-mark svg{width:34px;height:34px;fill:#fff}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.16em;color:var(--brand);direction:ltr;text-align:right}.auth-brand h1{font-size:clamp(34px,4vw,54px);line-height:1.35;margin:8px 0 14px;font-weight:900;color:var(--brand-dark)}.auth-brand p{max-width:620px;font-size:16px;line-height:2;color:var(--muted);margin:0}.security-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.security-pills span{padding:8px 12px;border:1px solid #dbeafe;background:rgba(255,255,255,.7);border-radius:999px;font-size:12px;font-weight:700;color:#334155}
.auth-card-wrap{width:100%}.auth-card{background:rgba(255,255,255,.96);border:1px solid rgba(226,232,240,.9);border-radius:26px;box-shadow:var(--shadow);padding:34px;backdrop-filter:blur(16px)}.auth-card-header{display:flex;align-items:center;gap:16px;margin-bottom:28px}.auth-icon{flex:0 0 auto;width:50px;height:50px;border-radius:16px;background:#eff6ff;display:grid;place-items:center}.auth-icon svg{width:25px;height:25px;fill:var(--brand)}.auth-card h1,.auth-card h2{color:var(--brand-dark);font-weight:900;line-height:1.5}.auth-card h1{font-size:25px}.auth-card h2{font-size:24px;margin:0}.auth-card-header p,.auth-card>p{color:var(--muted);line-height:1.9;margin:4px 0 0;font-size:14px}.auth-form,.auth-card form{display:grid;gap:18px}.field-group{display:grid;gap:8px}.field-group label,.auth-card label{font-size:13px;font-weight:800;color:#334155}.auth-card input:not([type="checkbox"]):not([type="radio"]),.auth-card select,.auth-card textarea{width:100%;height:48px;border:1px solid #cbd5e1;border-radius:13px;padding:0 14px;background:#fff;color:var(--text);outline:none;transition:border-color .18s,box-shadow .18s}.auth-card textarea{height:auto;min-height:110px;padding-top:12px}.auth-card input:focus,.auth-card select:focus,.auth-card textarea:focus{border-color:#60a5fa;box-shadow:0 0 0 4px rgba(59,130,246,.12)}.auth-card input[type="password"],.auth-card input[name="login"]{direction:ltr;text-align:left}.primary-btn,.auth-card button[type="submit"]{border:0;border-radius:13px;min-height:50px;padding:0 20px;background:linear-gradient(135deg,var(--brand-2),#1d4ed8);color:#fff;font-weight:800;cursor:pointer;box-shadow:0 10px 22px rgba(37,99,235,.2);transition:transform .18s,box-shadow .18s}.primary-btn:hover,.auth-card button[type="submit"]:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(37,99,235,.25)}.auth-card button:not([type="submit"]){border:1px solid var(--line);border-radius:12px;padding:10px 16px;background:#fff;color:#334155;cursor:pointer}.field-errors,.form-errors,.errorlist{color:var(--danger);font-size:12px;line-height:1.8;margin:0;padding:0;list-style:none}.form-errors,.messages{padding:12px 14px;border-radius:12px;margin-bottom:18px}.form-errors{background:#fef2f2;border:1px solid #fecaca}.messages{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}.security-note{display:flex;align-items:center;gap:9px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.security-note .dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.12)}.auth-footer{text-align:center;color:#94a3b8;font-size:11px;margin:14px 0 0}.auth-card hr{border:0;border-top:1px solid var(--line);margin:22px 0}.auth-card ul{padding-right:20px}.auth-card form>p{display:grid;gap:8px}.auth-card form p label{display:block}.auth-card code{direction:ltr;unicode-bidi:embed}
.dashboard-page{min-height:100vh;background:#f6f8fb}.dashboard{max-width:1180px;margin:auto;padding:42px 24px}.dashboard-top{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:30px}.dashboard h1{font-size:30px;margin:0;color:var(--brand-dark)}.dashboard .muted{color:var(--muted);font-size:13px;margin-top:5px}.dashboard-actions{display:flex;flex-wrap:wrap;gap:10px}.dashboard-actions a{padding:9px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#334155;font-weight:700;font-size:13px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:28px 0}.card,.data-table{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 6px 24px rgba(15,23,42,.04)}.card{padding:20px;color:#475569}.n{font-size:30px;font-weight:900;color:var(--brand-dark);margin-top:8px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden}.data-table th,.data-table td{padding:13px 15px;text-align:right;border-bottom:1px solid #eef2f7;white-space:nowrap}.data-table th{background:#f8fafc;font-size:12px;color:#475569}.data-table tr:last-child td{border-bottom:0}
@media(max-width:820px){.auth-shell{grid-template-columns:1fr;gap:14px;padding:24px 16px}.auth-brand{padding:8px 8px 16px}.brand-mark{width:52px;height:52px;border-radius:16px;margin-bottom:18px}.brand-mark svg{width:27px;height:27px}.auth-brand h1{font-size:30px}.security-pills{display:none}.auth-card{padding:24px;border-radius:20px}.dashboard-top{align-items:flex-start;flex-direction:column}.dashboard{padding:28px 16px}}
/* v0.2 application shell */
.app-header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.app-header-inner{max-width:1380px;margin:auto;min-height:70px;padding:10px 22px;display:flex;align-items:center;gap:22px}.app-brand{display:flex;align-items:center;gap:11px;color:var(--brand-dark);min-width:max-content}.app-brand:hover{text-decoration:none}.app-brand small{display:block;direction:ltr;text-align:right;color:#94a3b8;font-size:9px;letter-spacing:.08em}.app-logo{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#2563eb,#1e40af);color:#fff;font-weight:900;box-shadow:0 8px 18px rgba(37,99,235,.2)}.app-nav{display:flex;align-items:center;gap:4px;flex:1}.app-nav a,.link-button{border:0;background:transparent;color:#475569;padding:9px 11px;border-radius:10px;font-weight:700;font-size:13px;cursor:pointer}.app-nav a:hover,.link-button:hover{background:#f1f5f9;text-decoration:none;color:#0f172a}.logout-form{margin:0}.app-main{max-width:1380px;margin:auto;padding:30px 22px 60px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin-bottom:24px}.page-head h1{font-size:28px;margin:4px 0;color:var(--brand-dark)}.page-head p{margin:4px 0;color:var(--muted);line-height:1.9}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:7px 14px;border-radius:11px;border:1px solid var(--line);background:#fff;color:#334155;font-weight:800;font-size:13px;cursor:pointer}.btn:hover{text-decoration:none;background:#f8fafc}.btn-primary{background:linear-gradient(135deg,var(--brand-2),#1d4ed8);color:#fff;border-color:transparent;box-shadow:0 8px 18px rgba(37,99,235,.16)}.btn-primary:hover{background:#1d4ed8;color:#fff}.btn-small{min-height:32px;padding:5px 10px;font-size:11px}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 7px 24px rgba(15,23,42,.035);margin-bottom:20px}.panel h2{margin:0 0 14px;font-size:18px;color:var(--brand-dark)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px}.panel-head h2{margin:0}.panel-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-top:0}.mini-stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.mini-stats .card{overflow:hidden}.n.small{font-size:23px}.hash{display:block;margin-top:9px;direction:ltr;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.grid-2{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:20px}.stack-form{display:grid;gap:16px}.field-group small{color:var(--muted);line-height:1.7}.form-panel input,.form-panel select,.form-panel textarea,.inline-filter select,.search-form input,.mapping-row select{width:100%;border:1px solid #cbd5e1;border-radius:11px;padding:10px 12px;background:#fff;outline:none}.form-panel input:focus,.form-panel select:focus,.form-panel textarea:focus,.search-form input:focus,.mapping-row select:focus{border-color:#60a5fa;box-shadow:0 0 0 4px rgba(59,130,246,.09)}.form-panel input[type=file]{padding:9px;background:#f8fafc}.security-box ul{margin:0;padding-right:20px;color:#475569;line-height:2}.status{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:800;background:#f1f5f9;color:#475569}.status.large{padding:7px 12px;font-size:12px}.status-imported{background:#ecfdf5;color:#047857}.status-processing,.status-staged{background:#eff6ff;color:#1d4ed8}.status-failed,.status-rejected{background:#fef2f2;color:#b91c1c}.status-duplicate{background:#fff7ed;color:#c2410c}.status-inspected{background:#f5f3ff;color:#6d28d9}.status-quarantined{background:#f8fafc;color:#475569}.alert{padding:13px 15px;border-radius:12px;margin-bottom:18px;font-size:13px;line-height:1.9}.alert-danger{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.alert-warning{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}.app-messages{display:grid;gap:8px;margin-bottom:18px}.app-message{padding:12px 14px;border-radius:12px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}.app-message.success{background:#ecfdf5;border-color:#a7f3d0;color:#047857}.app-message.error{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.app-message.warning{background:#fff7ed;border-color:#fed7aa;color:#c2410c}.mapping-grid{display:grid;gap:8px;margin:14px 0 18px}.mapping-row{display:grid;grid-template-columns:minmax(180px,1fr) 34px minmax(190px,1fr);gap:8px;align-items:center;padding:8px;border:1px solid #eef2f7;border-radius:12px;background:#fafcff}.source-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arrow{text-align:center;color:#94a3b8}.preview-table td{max-width:260px;overflow:hidden;text-overflow:ellipsis}.inline-filter{display:flex;align-items:center;gap:10px;margin-bottom:15px}.inline-filter select{width:auto;min-width:180px}.pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px;color:var(--muted);font-size:12px}.pagination a{padding:6px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}.search-form{display:flex;gap:9px;margin-bottom:16px}.search-form input{max-width:520px}.breadcrumb{font-size:11px;color:#94a3b8}.quality-badge{padding:8px 12px;border-radius:12px;background:#eff6ff;color:#1d4ed8;font-weight:900}.detail-list{display:grid;grid-template-columns:130px 1fr;gap:10px 16px;margin:0}.detail-list dt{color:var(--muted);font-size:12px}.detail-list dd{margin:0;font-weight:700}.contact-line{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #eef2f7}.contact-line:last-child{border-bottom:0}.contact-line span{color:var(--muted)}.block{display:block}.empty{text-align:center!important;color:#94a3b8;padding:30px!important}.muted{color:var(--muted)}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.errorlist{margin:5px 0 0;padding:0;color:var(--danger);list-style:none}.form-errors{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
@media(max-width:980px){.app-header-inner{flex-wrap:wrap}.app-nav{order:3;width:100%;overflow-x:auto}.grid-2{grid-template-columns:1fr}.mapping-row{grid-template-columns:1fr}.mapping-row .arrow{display:none}}
@media(max-width:650px){.app-main{padding:22px 13px 50px}.page-head{flex-direction:column}.app-header-inner{padding:9px 13px}.app-brand span:last-child{display:none}.app-nav a{white-space:nowrap}.panel{padding:14px}.search-form{flex-direction:column}.detail-list{grid-template-columns:1fr}.detail-list dt{margin-top:8px}}
