@font-face{font-family:Caspian;src:url('assets/fonts/IRANSansWeb%28FaNum%29.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Caspian;src:url('assets/fonts/IRANSansWeb%28FaNum%29_Bold.woff') format('woff');font-weight:700;font-style:normal;font-display:swap}

:root{
  --ink:#1c2430;--ink-muted:#64748b;--ink-faint:#94a3b8;
  --surface:#fff;--bg:#f5f6fb;--border:#e5e7ee;--border-strong:#d6dae3;
  --primary:#4f46e5;--primary-hover:#4338ca;--primary-light:#eef0fd;
  --sidebar-bg:#111827;--sidebar-ink:#aab4c6;--sidebar-active-bg:#1d2740;--sidebar-active-ink:#fff;
  --radius-sm:7px;--radius-md:11px;--radius-lg:16px;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06);--shadow-md:0 8px 20px rgba(16,24,40,.08);
  --focus-ring:#e3a644;
  --success:#15803d;--success-bg:#eafbf0;--success-border:#bfe8cd;
  --warning:#b45309;--warning-bg:#fff8e9;--warning-border:#f2e1bd;
  --danger:#b91c1c;--danger-bg:#fdecec;--danger-border:#f6c8c8;
  --info:#0369a1;--info-bg:#eff8ff;--info-border:#c7e3f6;
  --neutral:#475569;--neutral-bg:#eef1f5;--neutral-border:var(--border);
}
*{box-sizing:border-box}
body{margin:0;font:14px/1.85 Caspian,Tahoma,Arial,sans-serif;color:var(--ink);background:var(--bg)}
button,input{font:inherit}
button,a{touch-action:manipulation}
a{color:var(--primary)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
h1,h2,p{margin:0 0 14px}
h1{font-size:25px;letter-spacing:-.01em}
h2{font-size:17px}
[role="alert"]{color:var(--danger);font-size:13px}
code{background:#eef1f6;color:#3a4455;border-radius:4px;padding:2px 6px;font-size:12px}

/* Buttons */
.btn,.primary,.quiet,.btn-primary,.btn-secondary,.btn-ghost,.btn-danger,button[type="submit"]{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 22px;border-radius:var(--radius-sm);font-size:13px;font-weight:700;border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.primary,.btn-primary,button[type="submit"]:not(.btn-secondary):not(.btn-ghost):not(.btn-danger){background:var(--primary);border-color:var(--primary);color:#fff}
.primary:hover,.btn-primary:hover,button[type="submit"]:not(.btn-secondary):not(.btn-ghost):not(.btn-danger):hover{background:var(--primary-hover);border-color:var(--primary-hover)}
.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--ink)}
.btn-secondary:hover{background:var(--bg);border-color:var(--ink-faint)}
.quiet,.btn-ghost{background:var(--surface);border-color:var(--border-strong);color:var(--ink-muted)}
.quiet:hover,.btn-ghost:hover{background:var(--bg);color:var(--ink)}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-danger:hover{background:#9c1818;border-color:#9c1818}
.btn-sm{min-height:36px;padding:0 15px;font-size:12px;font-weight:600}
button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed}

/* Forms */
label{display:block;margin-block-end:16px;font-size:13px;font-weight:bold}
input,textarea,select{width:100%;display:block;padding:10px 12px;margin-block-start:7px;color:var(--ink);background:#fcfdff;border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-height:44px}
input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51c}
textarea{resize:vertical;line-height:1.9;min-height:120px}
input[type="checkbox"]{width:18px;height:18px;min-height:0;min-width:0;margin:0;accent-color:var(--primary);display:inline-block;vertical-align:middle}
input[type="file"]{padding:8px}
input[type="search"]{background-image:none}

fieldset{border:1px solid var(--border);border-radius:var(--radius-md);padding:18px;margin-block-end:16px;display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}
fieldset legend{grid-column:1/-1;font-weight:bold;font-size:14px;padding-inline-end:10px}
fieldset .help{grid-column:1/-1;margin-block-end:6px}
fieldset label{display:flex;align-items:center;gap:10px;font-weight:normal;margin:0;padding:10px 12px;background:var(--bg);border-radius:var(--radius-sm)}

.permission-groups{grid-column:1/-1;display:flex;flex-direction:column;gap:14px}
.permission-group{border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;background:var(--surface)}
.permission-group-header{font-weight:bold;background:transparent;padding:0;margin:0 0 10px}
.permission-group-items{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}

/* Search & filter toolbar */
.filter-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 18px;margin-block-end:22px;display:flex;flex-wrap:wrap;align-items:end;gap:14px 16px}
.filter-bar label{margin-block-end:0;font-size:12px;color:var(--ink-muted);font-weight:600}
.filter-bar input,.filter-bar select{margin-block-start:6px;min-width:150px}
.filter-bar .filter-field{display:flex;flex-direction:column;flex:1 1 170px}
.filter-bar .filter-field.filter-search{flex:2 1 220px}
.filter-bar .filter-actions{display:flex;gap:10px;align-items:center;margin-inline-start:auto}
.bulk-actions{display:flex;gap:10px;margin-block-start:14px}
.row-actions{display:flex;gap:8px;flex-wrap:wrap}

/* Badges & status */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--border);background:var(--neutral-bg);color:var(--neutral);white-space:nowrap}
.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.badge-success{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}
.badge-warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}
.badge-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}
.badge-info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}
.badge-neutral{background:var(--neutral-bg);border-color:var(--neutral-border);color:var(--neutral)}

/* Alerts & notices */
.notice,.alert{padding:14px 16px;border-radius:var(--radius-sm);font-size:12px;margin-block-end:22px;border:1px solid var(--border)}
.notice,.alert-warning{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}
.alert-success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
.alert-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}
.alert-info{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}
.toast{position:fixed;top:18px;inset-inline-end:18px;z-index:50;display:flex;align-items:center;gap:12px;max-width:360px;box-shadow:var(--shadow-md);animation:toast-in .2s ease}
.toast-close{background:none;border:none;font-size:18px;line-height:1;cursor:pointer;color:inherit;padding:0}
@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}

main{max-width:960px;margin-inline:auto;padding:32px 20px}

main table{width:100%;border-collapse:collapse;text-align:right;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}
main th{font-size:11px;font-weight:600;color:var(--ink-muted);background:var(--bg);padding:14px 18px;border-block-end:1px solid var(--border)}
main td{padding:14px 18px;border-block-end:1px solid var(--border);font-size:13px;vertical-align:middle}
main tbody tr:last-child td{border-block-end:0}
main tbody tr:hover td{background:#fafbfd}

.empty-state{text-align:center;color:var(--ink-muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:40px 20px;font-size:13px}

.pagination{display:flex;gap:14px;align-items:center;justify-content:center;padding-block:20px;font-size:13px;color:var(--ink-muted)}
.pagination a{padding:8px 16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--ink);text-decoration:none}
.pagination a:hover{background:var(--surface);border-color:var(--primary)}
.pagination span{direction:ltr}

.revision-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}
.revision-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-block-end:1px solid var(--border);font-size:13px}
.revision-list li:last-child{border-block-end:0}
.revision-list form{margin:0}

.diff-compare-toggle{display:flex;gap:10px;margin-block-end:18px}
.revision-diff{display:flex;flex-direction:column;gap:18px}
.diff-field{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 18px}
.diff-field h2{margin-block-end:10px}
.diff-lines{font-family:ui-monospace,Consolas,monospace;font-size:13px;white-space:pre-wrap;overflow-x:auto}
.diff-line{padding:2px 8px;border-radius:4px;unicode-bidi:plaintext}
.diff-line.diff-add{background:var(--success-bg);color:var(--success)}
.diff-line.diff-del{background:var(--danger-bg);color:var(--danger)}
.diff-line.diff-equal{color:var(--ink-muted)}

.media-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.media-grid article{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-sm)}
.media-grid img{width:100%;height:155px;object-fit:cover;background:#e9f0f5;display:block}
.media-grid article>p,.media-grid article>code{display:block;margin:12px 15px}
.media-grid article>a{margin:0 15px 15px;display:inline-block}

.panel{margin-block-end:22px}
section[aria-label],.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;margin-block-end:22px;box-shadow:var(--shadow-sm)}
.panel code{direction:ltr;display:block;text-align:left;background:#101828;color:#d9eaf5;border-radius:var(--radius-sm);padding:16px;margin:15px 0;overflow:auto}

#sidebar-toggle{display:none;position:fixed;inset-block-start:14px;inset-inline-start:14px;z-index:30;background:var(--sidebar-bg);color:#fff;border:0;border-radius:var(--radius-sm);padding:8px 14px;font-size:18px}
#admin-sidebar{background:var(--sidebar-bg);color:var(--sidebar-ink);width:232px;position:fixed;inset-inline-start:0;inset-block:0;padding:28px 16px;overflow-y:auto;z-index:20}
#admin-sidebar ul{list-style:none;margin:0;padding:0}
#admin-sidebar a{display:flex;align-items:center;gap:13px;padding:11px 14px;margin-block:4px;border-radius:var(--radius-sm);color:inherit;font-size:13px;text-decoration:none;border-inline-end:3px solid transparent}
#admin-sidebar a:hover{background:#1a2437}
#admin-sidebar a.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-ink);border-inline-end-color:var(--primary)}
.nav-icon{font-size:19px;width:20px;text-align:center;flex-shrink:0}
#admin-sidebar ~ #admin-content{margin-inline-start:232px}

section[aria-label] ul{padding-inline-start:20px}

.help{font-size:12px;color:var(--ink-muted)}

#admin-topbar{display:flex;justify-content:space-between;align-items:center;gap:15px;width:100%;box-sizing:border-box;padding:14px 24px;background:var(--sidebar-bg);border-block-end:1px solid var(--border)}
#admin-topbar a,#admin-topbar #topbar-clock{color:var(--sidebar-ink)}
#admin-topbar .topbar-user{color:#fff}
#admin-topbar .topbar-user:hover{color:var(--primary-light)}
#admin-topbar .btn-secondary{background:transparent;border-color:#394461;color:#fff}
#admin-topbar .btn-secondary:hover{background:#1a2437;border-color:#1a2437}
#admin-topbar .btn-ghost{background:transparent;border-color:#394461;color:var(--sidebar-ink)}
#admin-topbar .btn-ghost:hover{background:#1a2437;color:#fff}
.topbar-start,.topbar-end{display:flex;align-items:center;gap:14px}
#topbar-clock{font-size:12px;color:var(--ink-muted)}
.topbar-user{color:var(--ink);font-weight:700;font-size:13px;text-decoration:none}
.topbar-user:hover{color:var(--primary)}
#admin-topbar form{margin:0}

.page-top{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-block-end:22px}
.page-top p{color:var(--ink-muted);font-size:13px;margin:0}
.page-top h1{margin:0 0 6px}

.welcome{border:1px solid var(--border);background:linear-gradient(120deg,#fff,#eef0fd);padding:26px;border-radius:var(--radius-lg);margin-block-end:22px}
.welcome p{color:var(--ink-muted);max-width:550px}

.stats-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s}
.stat:hover{box-shadow:var(--shadow-md);border-color:var(--primary)}
.stat a{display:block;padding:20px;color:inherit;text-decoration:none}
.stat strong{display:block;font-size:30px;line-height:1.4;margin-block:6px;color:var(--primary)}
.stat small{display:block;color:var(--ink-muted)}

.activity-list{list-style:none;margin:0;padding:0}
.activity-item{padding:12px 0;border-block-end:1px solid var(--border);font-size:12px;display:flex;justify-content:space-between;gap:15px}
.activity-item:last-child{border-block-end:0}

#login-view{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}
.login-brand{background:var(--sidebar-bg);color:#fff;display:flex;flex-direction:column;justify-content:center;padding:80px}
.login-brand h1{font-size:34px;max-width:380px}
.login-brand p{color:#aab4c6;max-width:340px;margin:0}
.logo-mark{font-size:70px;color:var(--primary);margin-block-end:30px}
.login-form{padding:80px;align-self:center;max-width:460px;margin:auto;width:100%}
.login-form h2{font-size:26px;margin-block-end:22px}
.login-form button[type="submit"]{width:100%;margin-block-start:10px}

@media (max-width:760px){
  #sidebar-toggle{display:block}
  #admin-sidebar{transform:translateX(100%);transition:transform .2s ease;width:220px}
  #admin-sidebar.open{transform:none}
  #admin-sidebar ~ #admin-content{margin-inline-start:0;padding-block-start:60px}
  .stats-grid{grid-template-columns:1fr 1fr}
  .page-top{align-items:flex-start;flex-direction:column}
  #admin-topbar{flex-wrap:wrap;row-gap:10px}
  .filter-bar{flex-direction:column;align-items:stretch}
  .filter-bar .filter-actions{margin-inline-start:0;width:100%}
  .filter-bar .filter-actions .btn,.filter-bar .filter-actions button{flex:1}
  #login-view{display:block}
  .login-brand{display:none}
  .login-form{padding:40px 24px;max-width:440px}
}

@media (prefers-reduced-motion:reduce){
  #admin-sidebar{transition:none}
  .btn,.primary,.quiet,.btn-primary,.btn-secondary,.btn-ghost,.btn-danger,button[type="submit"]{transition:none}
}
