@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:Inter,-apple-system,sans-serif;background-color:#0d1117;color:#e6edf3;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#161b22}::-webkit-scrollbar-thumb{background:#4b8b3b66;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#4b8b3b99}h1{font-size:1.875rem;font-weight:700;color:#e6edf3}h2{font-size:1.5rem;font-weight:700;color:#e6edf3}h3{font-size:1.125rem;font-weight:600;color:#e6edf3}p{margin-bottom:0}a{color:#3fb950;text-decoration:none}a:hover{color:#56d364}button{font-family:Inter,sans-serif;border:none;cursor:pointer;transition:all .18s ease;border-radius:8px;font-weight:500}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,#238636,#2ea043);color:#fff;padding:.65rem 1.4rem;font-weight:600;font-size:.9rem;display:inline-flex;align-items:center;gap:.5rem;box-shadow:0 2px 8px #23863659}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2ea043,#3fb950);box-shadow:0 4px 14px #23863680;transform:translateY(-1px)}.btn-secondary{background:#ffffff0f;color:#c9d1d9;padding:.65rem 1.4rem;font-size:.9rem;border:1px solid rgba(255,255,255,.1)}.btn-secondary:hover:not(:disabled){background:#ffffff1a;border-color:#fff3}.btn-danger{background:#da363326;color:#f78166;padding:.5rem 1rem;font-size:.85rem;border:1px solid rgba(218,54,51,.3)}.btn-danger:hover:not(:disabled){background:#da363340}.btn-success{background:#23863626;color:#3fb950;padding:.5rem 1rem;font-size:.85rem;border:1px solid rgba(35,134,54,.3)}.btn-success:hover:not(:disabled){background:#23863640}.btn-sm{padding:.4rem .9rem;font-size:.825rem}.card{background:#161b22;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:1.5rem;transition:border-color .2s}.card:hover{border-color:#3fb95033}@keyframes heroShimmer{0%{transform:translate(-120%) rotate(25deg)}to{transform:translate(120%) rotate(25deg)}}@keyframes dotPulse{0%,to{box-shadow:0 0 4px currentColor}50%{box-shadow:0 0 12px currentColor,0 0 24px currentColor}}.kpi-card{position:relative;overflow:hidden;background:#161b22;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:1.5rem 1.75rem;transition:transform .3s ease,box-shadow .3s ease}.kpi-card:hover{transform:translateY(-2px)}.kpi-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.02) 45%,rgba(255,255,255,.04) 50%,rgba(255,255,255,.02) 55%,transparent 60%);pointer-events:none;z-index:1}.kpi-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(rgba(255,255,255,.03) 1px,transparent 1px);background-size:18px 18px;pointer-events:none;z-index:0}.kpi-card>*{position:relative;z-index:2}.kpi-status-dot{animation:dotPulse 2.5s ease-in-out infinite}.kpi-card-accent{border-left:3px solid #3FB950}.kpi-value{font-size:2rem;font-weight:800;color:#e6edf3;line-height:1}.kpi-label{font-size:.8rem;color:#8b949e;text-transform:uppercase;letter-spacing:.5px;margin-top:.5rem}.kpi-icon{font-size:2rem;line-height:1;margin-bottom:.75rem}.table-container{overflow-x:auto;border-radius:10px;border:1px solid rgba(255,255,255,.07)}table{width:100%;border-collapse:collapse;font-size:.9rem}thead{background:#1c2128}th{padding:.85rem 1rem;text-align:left;font-size:.75rem;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid rgba(255,255,255,.07)}td{padding:.85rem 1rem;color:#c9d1d9;border-bottom:1px solid rgba(255,255,255,.05);vertical-align:middle}tbody tr{transition:background .15s}tbody tr:hover{background:#ffffff08}tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:.25rem .65rem;border-radius:20px;font-size:.72rem;font-weight:600;letter-spacing:.3px}.badge-green{background:#23863633;color:#3fb950;border:1px solid rgba(35,134,54,.3)}.badge-red{background:#da363333;color:#f78166;border:1px solid rgba(218,54,51,.3)}.badge-yellow{background:#d2992233;color:#e3b341;border:1px solid rgba(210,153,34,.3)}.badge-blue{background:#58a6ff26;color:#58a6ff;border:1px solid rgba(88,166,255,.25)}.badge-gray{background:#ffffff0f;color:#8b949e;border:1px solid rgba(255,255,255,.1)}.form-group{margin-bottom:1.25rem;display:flex;flex-direction:column}label{margin-bottom:.45rem;font-size:.875rem;font-weight:500;color:#c9d1d9}.form-input,.form-select{background:#0d1117;border:1px solid rgba(255,255,255,.12);color:#e6edf3;border-radius:8px;padding:.7rem 1rem;font-family:Inter,sans-serif;font-size:.9rem;transition:all .2s;width:100%}.form-input::placeholder{color:#484f58}.form-input:focus,.form-select:focus{outline:none;border-color:#238636;box-shadow:0 0 0 3px #23863626}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M1 4L6 9L11 4' stroke='%238B949E' stroke-width='2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem;cursor:pointer}option{background:#161b22}.form-error{color:#f78166;font-size:.8rem;margin-top:.3rem}.input,.select{background:#0d1117;border:1px solid rgba(255,255,255,.12);color:#e6edf3;border-radius:8px;padding:.65rem 1rem;font-family:Inter,sans-serif;font-size:.875rem;transition:border-color .2s,box-shadow .2s;width:100%;display:block}.input::placeholder{color:#484f58}.input:focus,.select:focus{outline:none;border-color:#238636;box-shadow:0 0 0 3px #23863626}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M1 4L6 9L11 4' stroke='%238B949E' stroke-width='2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;padding-right:2.4rem;cursor:pointer}.search-input{background:#0d1117;border:1px solid rgba(255,255,255,.12);color:#e6edf3;border-radius:8px;padding:.6rem 1rem;font-family:Inter,sans-serif;font-size:.875rem;width:100%;max-width:380px;transition:border-color .2s}.text-muted{color:#8b949e}.text-green{color:#3fb950}.text-red{color:#f78166}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.flex-1{flex:1}.w-full{width:100%}.overflow-auto{overflow:auto}.rounded-full{border-radius:9999px}.grid{display:grid;gap:1.25rem}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 1024px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:1.5rem;height:1.5rem;border:2px solid rgba(63,185,80,.2);border-top-color:#3fb950;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.spinner-sm{width:1rem;height:1rem;border-width:1.5px}.toggle-track{width:44px;height:24px;border-radius:12px;position:relative;cursor:pointer;transition:background-color .2s}.toggle-track-on{background:#238636}.toggle-track-off{background:#ffffff1f}.toggle-thumb{position:absolute;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 4px #0006}.toggle-thumb-on{left:23px}.toggle-thumb-off{left:3px}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.fade-in{animation:fadeIn .3s ease}.sidebar{position:fixed;left:0;top:0;height:100vh;width:15rem;background:#0d1117;border-right:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;z-index:50}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-title{font-size:1.5rem;font-weight:700;color:#e6edf3}.page-subtitle{font-size:.875rem;color:#8b949e;margin-top:.2rem}.search-input{background:#0d1117;border:1px solid rgba(255,255,255,.1);color:#e6edf3;border-radius:8px;padding:.55rem 1rem;font-size:.875rem;width:260px;font-family:Inter,sans-serif;transition:border-color .2s}.search-input:focus{outline:none;border-color:#238636}.search-input::placeholder{color:#484f58}.pagination{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.page-btn{padding:.4rem .75rem;font-size:.825rem;background:#ffffff0f;color:#c9d1d9;border:1px solid rgba(255,255,255,.1);border-radius:6px;cursor:pointer;transition:all .15s}.page-btn:hover{background:#ffffff1a}.page-btn-active{background:#23863640;color:#3fb950;border-color:#23863666}.alert{padding:.85rem 1.1rem;border-radius:8px;font-size:.9rem;margin-bottom:1rem}.alert-danger{background:#da36331f;border:1px solid rgba(218,54,51,.3);color:#f78166}.alert-success{background:#2386361f;border:1px solid rgba(35,134,54,.3);color:#3fb950}.divider{height:1px;background:#ffffff12;margin:1rem 0;border:none}.topbar{background:#0d1117;border-bottom:1px solid rgba(255,255,255,.07);padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.skeleton{background:linear-gradient(90deg,#161b22 25%,#1c2128,#161b22 75%);background-size:468px 100%;animation:shimmer 1.4s infinite linear;border-radius:8px}.role-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.role-modal{background:#161b22;border:1px solid rgba(255,255,255,.1);border-radius:16px;width:800px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 64px #00000080;animation:modalSlideIn .3s ease}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}.role-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 1.75rem;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0}.role-modal-header h3{font-size:1.2rem;font-weight:700;color:#e6edf3}.role-modal-close{background:#ffffff0f!important;border:1px solid rgba(255,255,255,.1)!important;color:#8b949e!important;width:32px;height:32px;border-radius:8px!important;display:flex;align-items:center;justify-content:center;font-size:1rem;cursor:pointer;transition:all .15s}.role-modal-close:hover{background:#ffffff1a!important;color:#e6edf3!important}.role-modal-body{padding:1.5rem 1.75rem;overflow-y:auto;flex:1;min-height:0}.role-modal-footer{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.75rem;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0}.role-modal-perm-count{font-size:.8rem;color:#8b949e}.role-modal-perm-count span{color:#3fb950;font-weight:600}.role-form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.role-form-field label{display:block;font-size:.75rem;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem}.perm-section-label{font-size:.7rem;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:.8px;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.perm-section-label:after{content:"";flex:1;height:1px;background:#ffffff12}.perm-sections{display:flex;flex-direction:column;gap:.5rem}.perm-section{background:#ffffff05;border:1px solid rgba(255,255,255,.07);border-radius:10px;overflow:hidden;transition:border-color .2s,box-shadow .2s}.perm-section:hover{border-color:#ffffff1f}.perm-section.perm-section-active{border-color:#3fb95040;box-shadow:0 0 0 1px #3fb95014}.perm-section.perm-section-partial{border-color:#d2992240}.perm-section-header{display:flex;align-items:center;padding:.85rem 1rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s;gap:.75rem;background:none!important;border:none!important;width:100%;text-align:left;color:inherit;font-family:inherit;border-radius:0!important}.perm-section-header:hover{background:#ffffff08!important}.perm-section-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1rem;background:#ffffff0d;flex-shrink:0}.perm-section-info{flex:1;min-width:0}.perm-section-name{font-size:.875rem;font-weight:600;color:#e6edf3;line-height:1.2}.perm-section-count{font-size:.72rem;color:#8b949e;margin-top:1px}.perm-section-count .perm-count-active{color:#3fb950;font-weight:600}.perm-section-chevron{color:#484f58;font-size:.7rem;transition:transform .25s ease;flex-shrink:0;margin-left:.5rem}.perm-section-chevron.perm-section-chevron-open{transform:rotate(180deg)}.perm-section-body{max-height:0;overflow:hidden;transition:max-height .3s ease,opacity .2s ease;opacity:0}.perm-section-body.perm-section-body-open{max-height:600px;opacity:1}.perm-section-body-inner{padding:0 1rem .85rem;border-top:1px solid rgba(255,255,255,.05)}.perm-row{display:flex;align-items:center;justify-content:space-between;padding:.65rem .5rem;border-radius:6px;transition:background .12s;gap:1rem}.perm-row:hover{background:#ffffff08}.perm-row-info{flex:1;min-width:0}.perm-row-name{font-size:.825rem;font-weight:500;color:#c9d1d9}.perm-row-desc{font-size:.72rem;color:#6e7681;margin-top:1px}.perm-toggle{position:relative;width:40px;height:22px;flex-shrink:0;cursor:pointer}.perm-toggle input{position:absolute;opacity:0;width:0;height:0}.perm-toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:11px;background:#ffffff1a;transition:background .25s ease,box-shadow .25s ease}.perm-toggle input:checked+.perm-toggle-track{background:#238636;box-shadow:0 0 8px #2386364d}.perm-toggle-thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#8b949e;transition:transform .25s ease,background .25s ease;box-shadow:0 1px 3px #0000004d}.perm-toggle input:checked~.perm-toggle-thumb{transform:translate(18px);background:#fff}.perm-toggle-master{width:44px;height:24px}.perm-toggle-master .perm-toggle-track{border-radius:12px}.perm-toggle-master .perm-toggle-thumb{top:3px;left:3px;width:18px;height:18px}.perm-toggle-master input:checked~.perm-toggle-thumb{transform:translate(20px)}.perm-toggle-master.perm-toggle-partial .perm-toggle-track{background:#d2992280;box-shadow:0 0 8px #d2992226}.perm-toggle-master.perm-toggle-partial .perm-toggle-thumb{transform:translate(10px);background:#e3b341}.perm-search{margin-bottom:1rem}.perm-search input{background:#0d1117;border:1px solid rgba(255,255,255,.1);color:#e6edf3;border-radius:8px;padding:.55rem 1rem .55rem 2.2rem;font-family:Inter,sans-serif;font-size:.825rem;width:100%;transition:border-color .2s;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23484F58' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:.7rem center}.perm-search input::placeholder{color:#484f58}.perm-search input:focus{outline:none;border-color:#238636}@media (max-width: 640px){.role-modal{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0}.role-form-row{grid-template-columns:1fr}.perm-row{gap:.5rem}}.role-card-actions{display:flex;gap:.4rem}.role-card-btn{padding:.3rem .6rem!important;font-size:.75rem!important;border-radius:6px!important;background:#ffffff0f!important;color:#8b949e!important;border:1px solid rgba(255,255,255,.08)!important;cursor:pointer;transition:all .15s}.role-card-btn:hover{background:#ffffff1a!important;color:#e6edf3!important}.role-card-btn-danger:hover{background:#da363326!important;color:#f78166!important;border-color:#da36334d!important}
