:root{--primary:#2a036d;--primary-dark:#190247;--primary-tint:#f1ecfb;--secondary:#7b5ce0;--secondary-tint:#efeafc;--bg:#fafaf9;--surface:#fff;--border:#e6e2ef;--text:#1b1526;--text-muted:#6c6779;--success:#1c8a5a;--success-tint:#e7f6ef;--warning:#b67a17;--warning-tint:#fbf1de;--danger:#c23a44;--danger-tint:#fbeaec;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--font-display:"Tajawal", "Segoe UI", system-ui, sans-serif;--font-body:"IBM Plex Sans Arabic", "Segoe UI", system-ui, sans-serif;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 6px 16px -6px #2a036d59;--focus-ring:0 0 0 3px var(--secondary-tint);--sidebar-w:264px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-body);background:var(--bg);color:var(--text);font-variant-numeric:lining-nums tabular-nums;-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text);margin:0 0 .4em;font-weight:700}h1{font-size:1.7rem}h2{font-size:1.3rem}h3{font-size:1.08rem}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.page{max-width:1200px;margin-inline:auto;padding:24px clamp(16px,4vw,40px)}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:clamp(18px,3vw,28px)}.card+.card{margin-top:18px}.stack{flex-direction:column;gap:16px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spacer{flex:1}.muted{color:var(--text-muted)}.form-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field>label{color:var(--text);font-size:.85rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);width:100%;padding:10px 12px;font-family:inherit;font-size:.95rem}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--secondary);box-shadow:var(--focus-ring);outline:none}.field input:disabled,.field select:disabled{background:var(--bg);color:var(--text-muted);cursor:not-allowed}.field .hint{color:var(--text-muted);font-size:.78rem}.field .error-text{color:var(--danger);font-size:.78rem}.btn{font-family:var(--font-display);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.92rem;font-weight:700;transition:background .15s,box-shadow .15s,opacity .15s;display:inline-flex}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--secondary);color:#fff}.btn-outline{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--secondary)}.btn-ghost{color:var(--primary);background:0 0}.btn-ghost:hover{background:var(--primary-tint)}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:6px 12px;font-size:.82rem}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none}.badge{background:var(--bg);color:var(--text-muted);border:1px solid var(--border);border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge.success{background:var(--success-tint);color:var(--success);border-color:#0000}.badge.warning{background:var(--warning-tint);color:var(--warning);border-color:#0000}.badge.danger{background:var(--danger-tint);color:var(--danger);border-color:#0000}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow-x:auto}table.data{border-collapse:collapse;width:100%;min-width:560px}table.data th,table.data td{text-align:start;border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 14px;font-size:.9rem}table.data th{font-family:var(--font-display);color:var(--text-muted);background:var(--bg);font-size:.8rem;font-weight:700}table.data tr:last-child td{border-bottom:none}table.data td.actions{flex-wrap:wrap;gap:6px;display:flex}.pagination{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.empty-state,.loading-state,.error-state{text-align:center;color:var(--text-muted);padding:40px 20px}.error-state{color:var(--danger)}.modal-backdrop{z-index:50;background:#1b152673;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:560px;max-height:90vh;padding:clamp(18px,3vw,28px);overflow-y:auto;box-shadow:0 20px 60px -20px #1b152680}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-foot{justify-content:flex-start;gap:10px;margin-top:22px;display:flex}.check-list{border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;gap:2px;max-height:340px;padding:6px;display:flex;overflow-y:auto}.check-row{border-radius:var(--radius-sm);align-items:center;gap:10px;padding:8px 10px;display:flex}.check-row:hover{background:var(--bg)}.check-row input{width:16px;height:16px;accent-color:var(--primary)}.check-row .code{font-family:var(--font-body);color:var(--text-muted);font-size:.75rem}.override-row{border-radius:var(--radius-sm);grid-template-columns:1fr auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.override-row:hover{background:var(--bg)}.seg{border:1px solid var(--border);border-radius:999px;display:inline-flex;overflow:hidden}.seg button{background:var(--surface);cursor:pointer;color:var(--text-muted);border:none;padding:5px 12px;font-family:inherit;font-size:.78rem;font-weight:600}.seg button.on-grant{background:var(--success);color:#fff}.seg button.on-deny{background:var(--danger);color:#fff}.toast-region{bottom:20px;z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;inset-inline-start:20px}.toast{background:var(--text);color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-width:360px;padding:12px 16px;font-size:.88rem}.toast.error{background:var(--danger)}.toast.success{background:var(--success)}.date-field{grid-template-columns:1fr 1fr 1.3fr;gap:8px;display:grid}.auth-shell{background:linear-gradient(160deg, var(--primary-tint), var(--bg));place-items:center;min-height:100vh;padding:24px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;padding:clamp(24px,5vw,36px);box-shadow:0 24px 60px -30px #2a036d66}.auth-brand{font-family:var(--font-display);color:var(--primary);margin-bottom:4px;font-size:1.5rem;font-weight:900}.auth-sub{color:var(--text-muted);margin-bottom:24px;font-size:.9rem}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:18px;font-size:.85rem;display:flex}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--primary);color:#fff;flex-direction:column;gap:4px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{font-family:var(--font-display);padding:6px 12px 18px;font-size:1.25rem;font-weight:900}.nav-group-label{text-transform:uppercase;letter-spacing:.04em;color:#ffffff8c;padding:14px 12px 4px;font-size:.72rem}.nav-item{border-radius:var(--radius-sm);color:#ffffffd9;cursor:pointer;align-items:center;gap:10px;padding:9px 12px;font-size:.9rem;font-weight:500;display:flex}.nav-item:hover{background:#ffffff1a;text-decoration:none}.nav-item.active{color:var(--primary);background:#fff;font-weight:700}.main-col{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:12px;height:60px;padding:0 20px;display:flex;position:sticky;top:0}.topbar .menu-btn{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:6px 10px;font-size:1.1rem;display:none}.avatar{background:var(--secondary-tint);width:34px;height:34px;color:var(--primary);font-weight:700;font-family:var(--font-display);border-radius:50%;place-items:center;display:grid}@media (max-width:1023px){.app-shell{grid-template-columns:1fr}.sidebar{inset-inline-start:0;z-index:60;width:var(--sidebar-w);transform:translateX(var(--drawer-hidden,110%));visibility:hidden;transition:transform .2s,visibility 0s linear .2s;position:fixed;top:0}html[dir=rtl] .sidebar{transform:translateX(var(--drawer-hidden-rtl,-110%))}.sidebar.open{visibility:visible;transition:transform .2s,visibility;transform:translate(0)}.topbar .menu-btn{display:inline-flex}.drawer-backdrop{z-index:55;background:#1b152666;position:fixed;inset:0}}@media (max-width:599px){.page{padding:16px}.modal-foot{flex-direction:column}.modal-foot .btn{width:100%}.date-field{grid-template-columns:1fr 1fr}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.inline-error{background:var(--danger-tint);color:var(--danger);border-radius:var(--radius-sm);margin-bottom:12px;padding:10px 12px;font-size:.85rem}.inline-note{background:var(--secondary-tint);color:var(--primary);border-radius:var(--radius-sm);padding:10px 12px;font-size:.85rem}.code-block{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);word-break:break-all;white-space:pre-wrap;padding:12px;font-family:ui-monospace,monospace;font-size:.85rem}
