:root{--primary:#667eea;--secondary:#764ba2;--bg-body:#f0f2f8;--bg-secondary:#f8f9fe;--border-color:#dee2e6;--text-secondary:#6c757d;--card-shadow:0 2px 12px #00000014;--gradient-primary:linear-gradient(135deg, #667eea 0%, #764ba2 100%)}body{background:var(--bg-body);color:#212529;margin:0;padding:0;font-family:Segoe UI,system-ui,sans-serif}.app-logo{color:var(--primary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.4rem;font-size:1.15rem;font-weight:700;transition:all .2s;display:flex}.srpm-logo-svg{flex-shrink:0;transition:transform .2s,filter .2s}.app-logo:hover .srpm-logo-svg{filter:drop-shadow(0 2px 8px #667eea73)}.error{color:#c0392b;min-height:1.2em}.login-screen{background:var(--gradient-primary);justify-content:center;align-items:center;height:100vh;display:flex}.login-card{border:none;border-radius:12px;width:320px}.login-card-shake{animation:.4s ease-in-out login-shake}@keyframes login-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.form-control.is-invalid{background-image:none;border-color:#c0392b}.form-control.is-invalid:focus{border-color:#c0392b;box-shadow:0 0 0 3px #c0392b26}.password-input-wrap{position:relative}.password-input-wrap .form-control{padding-right:2.4rem}.password-toggle-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:2px 4px;line-height:1;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.password-toggle-btn:hover{color:var(--primary)}.app-container{height:100vh;display:flex;overflow:hidden}.app-sidebar{background:var(--bg-secondary);border-right:1px solid var(--border-color);will-change:width, min-width;flex-direction:column;width:230px;min-width:230px;transition:width .28s cubic-bezier(.4,0,.2,1),min-width .28s cubic-bezier(.4,0,.2,1);display:flex}.app-sidebar.collapsed{width:64px;min-width:64px}.sidebar-header{border-bottom:1px solid var(--border-color);box-sizing:border-box;align-items:center;height:60px;padding:.85rem 1rem;transition:padding .28s cubic-bezier(.4,0,.2,1);display:flex}.sidebar-header-row{justify-content:space-between;align-items:center;width:100%;display:flex;overflow:hidden}.app-sidebar.collapsed .sidebar-header{padding:.85rem .5rem}.app-sidebar.collapsed .sidebar-header-row{justify-content:center}.app-sidebar.collapsed .sidebar-collapse-btn{opacity:0;pointer-events:none;max-width:0;margin:0;padding:0}.app-sidebar.collapsed .app-logo{justify-content:center;align-items:center;width:100%;display:flex}.sidebar-collapse-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;max-width:32px;height:28px;padding:0;font-size:.9rem;transition:color .15s,background .15s,opacity .2s,max-width .28s cubic-bezier(.4,0,.2,1),transform .2s;display:flex;overflow:hidden}.sidebar-collapse-btn:hover{color:var(--primary);background:#667eea1f;transform:scale(1.08)}.sidebar-nav{flex-direction:column;flex:1;gap:3px;padding:.75rem 0;display:flex;overflow-y:auto}.nav-item{text-align:left;color:#495057;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:8px;align-items:center;gap:.75rem;margin:0 .5rem;padding:.6rem .85rem;font-size:.86rem;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden}.nav-item i{text-align:center;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:1.15rem;transition:transform .2s;display:flex}.nav-item span{white-space:nowrap;opacity:1;max-width:140px;transition:opacity .2s,max-width .28s cubic-bezier(.4,0,.2,1),transform .2s;display:inline-block;overflow:hidden;transform:translate(0)}.nav-item:hover{color:var(--primary);background:#667eea1a;transform:translate(2px)}.nav-item:hover i{transform:scale(1.08)}.nav-item.active{font-weight:600;box-shadow:0 3px 10px #667eea59;background:var(--gradient-primary)!important;color:#fff!important;transform:none!important}.nav-item.active:hover{filter:brightness(1.05);color:#fff!important}.app-sidebar.collapsed .nav-item{justify-content:center;gap:0;margin:0 .4rem;padding:.65rem 0;transform:none}.app-sidebar.collapsed .nav-item i{margin:0 auto}.app-sidebar.collapsed .nav-item:hover{transform:scale(1.05)}.app-sidebar.collapsed .nav-item span{opacity:0;pointer-events:none;max-width:0;margin:0;padding:0;transform:translate(-6px)}.role-badge{text-transform:uppercase;background:var(--text-secondary);font-size:.65rem}.role-badge.role-admin{background:var(--gradient-primary)}.role-badge.role-standard{background:var(--text-secondary)}.sidebar-footer{border-top:1px solid var(--border-color);padding:.75rem;transition:padding .28s cubic-bezier(.4,0,.2,1);position:relative}.profile-summary{align-items:center;gap:.6rem;width:100%;margin-bottom:4px;padding:.5rem;transition:justify-content .28s,padding .28s;display:flex}.profile-avatar{background:var(--gradient-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;font-size:.95rem;display:flex;box-shadow:0 2px 6px #667eea4d}.profile-info{white-space:nowrap;opacity:1;flex-direction:column;flex:1;gap:2px;min-width:0;max-width:140px;transition:opacity .2s,max-width .28s cubic-bezier(.4,0,.2,1),transform .2s;display:flex;overflow:hidden;transform:translate(0)}.profile-name{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:600;overflow:hidden}.profile-menu-item{text-align:left;cursor:pointer;color:#212529;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;width:100%;padding:8px 10px;font-size:.85rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden}.profile-menu-item-label{white-space:nowrap;opacity:1;max-width:120px;transition:opacity .2s,max-width .28s cubic-bezier(.4,0,.2,1);display:inline-block;overflow:hidden}.app-sidebar.collapsed .profile-summary{justify-content:center;gap:0;padding:.5rem 0}.app-sidebar.collapsed .profile-info{opacity:0;pointer-events:none;max-width:0;margin:0;padding:0;transform:translate(-6px)}.app-sidebar.collapsed .profile-menu-item{justify-content:center;gap:0;padding:8px 0}.app-sidebar.collapsed .profile-menu-item i{justify-content:center;align-items:center;font-size:1.15rem;display:flex;margin:0 auto!important}.app-sidebar.collapsed .profile-menu-item-label{opacity:0;pointer-events:none;max-width:0;margin:0;padding:0}.profile-menu-item:hover{background:#667eea14}.profile-menu-item.danger{color:#c0392b}.profile-menu-item.danger:hover{color:#c0392b;background:#c0392b17;transform:translate(2px)}.app-sidebar.collapsed .profile-menu-item.danger:hover{transform:scale(1.06)}.app-content{flex:1;padding:1.5rem 2rem;overflow-y:auto}.page-title{border-bottom:1px solid var(--border-color);color:#212529;margin-bottom:1.25rem;padding-bottom:.75rem;font-weight:600}.page-title i{color:var(--primary)}.page-container{height:100%}table{width:100%;box-shadow:var(--card-shadow);border-collapse:separate;border-spacing:0;background:#fff;border-radius:8px;margin-top:12px;overflow:hidden}th,td{vertical-align:middle;padding:10px 12px;font-size:.83rem}thead th{background:var(--bg-secondary);color:#495057;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border-color);font-size:.75rem}tbody tr{border-bottom:1px solid #f1f2f6}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#667eea0a}th.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable-header:hover{color:var(--primary)}.actions-cell button.danger{color:#c0392b;border-color:#c0392b}.toolbar-left{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.toolbar input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #667eea26}.client-group{margin-bottom:24px}.client-group-header{border-bottom:1px solid var(--border-color);align-items:center;gap:10px;margin:0 0 10px;padding-bottom:6px;font-size:.95rem;font-weight:600;display:flex}.org-card{transition:transform .2s,box-shadow .2s}.org-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026!important}.org-card-clickable{cursor:pointer;color:inherit;text-decoration:none}.org-card-clickable:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.org-card-opening{opacity:.6;pointer-events:none}.org-type-badge{letter-spacing:.04em;white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.68rem;font-weight:600;display:inline-block}.org-type-badge-prod{color:#177a4d;background:#e3f5ec}.org-type-badge-preprod{color:#96690b;background:#fbf0dc}.org-type-badge-uat{color:#33668d;background:#e4eff7}.org-type-badge-dev{color:#5f4fb3;background:#ebe7f9}.org-type-badge-other{color:#5f676e;background:#f1f3f5}.env-dots{align-items:center;gap:5px;margin-left:auto;display:flex}.env-dot{border-radius:50%;width:7px;height:7px}.env-dot-prod{background:#1f9d63}.env-dot-preprod{background:#d99a1b}.env-dot-uat{background:#3f7cac}.env-dot-dev{background:#8b7fc7}.env-dot-other{background:#adb5bd}.group-count{color:var(--primary);background:#667eea24;border-radius:999px;padding:1px 8px;font-size:.72rem;font-weight:600}.orgs-table-group[open]>.orgs-table-group-summary .group-count{color:#fff;background:#ffffff3d}.org-card-username{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.org-card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.org-card-titlewrap{flex:1;min-width:0}.org-card-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.orgs-table-group{border:1px solid var(--border-color);box-shadow:var(--card-shadow);background:#fff;border-radius:10px;margin-bottom:14px;transition:box-shadow .2s;overflow:hidden}.orgs-table-group[open]{box-shadow:0 4px 16px #667eea2e}.orgs-table-group-summary{cursor:pointer;color:#212529;background:var(--bg-secondary);-webkit-user-select:none;user-select:none;border-bottom:1px solid #0000;align-items:center;gap:10px;padding:12px 16px;font-size:.95rem;font-weight:600;list-style:none;transition:background .15s;display:flex}.orgs-table-group[open]>.orgs-table-group-summary{background:var(--gradient-primary);color:#fff;border-bottom-color:var(--border-color)}.orgs-table-group-summary:hover{background:#667eea1f}.orgs-table-group[open]>.orgs-table-group-summary:hover{background:var(--gradient-primary);filter:brightness(1.05)}.orgs-table-group-summary::-webkit-details-marker{display:none}.orgs-table-group-summary:before{content:"▶";font-size:.65rem;transition:transform .2s;display:inline-block}.orgs-table-group[open]>.orgs-table-group-summary:before{transform:rotate(90deg)}.orgs-table-group .orgs-table{margin-bottom:0}.orgs-table{border-collapse:collapse;width:100%}.orgs-table thead th{background:var(--bg-secondary);text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);padding:8px 14px;font-size:.78rem}.orgs-table tbody tr{transition:background .12s}.orgs-table tbody tr:nth-child(2n){background:#00000004}.orgs-table tbody tr:hover{background:#667eea12}.orgs-table td{padding:8px 14px}.orgs-table-actions-cell{width:76px}.org-open-btn{white-space:nowrap;padding:3px 10px;font-size:.75rem}.skeleton-box{pointer-events:none}.skeleton-box:hover{transform:none;box-shadow:var(--card-shadow)!important}.empty-state{text-align:center;max-width:420px;color:var(--text-secondary);border:1px dashed var(--border-color);background:#fff;border-radius:10px;margin:28px auto;padding:26px;font-size:.9rem}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.skeleton-line{background:linear-gradient(90deg,#eef0f5 25%,#e2e5ec 37%,#eef0f5 63%) 0 0/400px 100%;border-radius:4px;height:14px;margin-bottom:10px;animation:1.4s infinite skeleton-shimmer}.skeleton-table-real{width:100%;box-shadow:var(--card-shadow);border-collapse:collapse;background:#fff;border-radius:8px}.skeleton-table-real th,.skeleton-table-real td{border-bottom:1px solid var(--border-color);padding:12px 16px}.skeleton-table-real thead{background:var(--bg-secondary)}.skeleton-table-real tbody tr:last-child td{border-bottom:none}.skeleton-table-real .skeleton-line{margin-bottom:0}.skeleton-line-header{opacity:.8;height:12px}.skeleton-line-title{width:70%;height:16px}.skeleton-line-meta{width:40%;height:10px}.skeleton-line-button{border-radius:6px;width:50px;height:26px}.view-toggle{gap:8px;display:flex}.view-toggle button{border:1px solid var(--border-color);cursor:pointer;background:#fff;border-radius:4px;padding:5px 12px;font-size:.8rem}.view-toggle button.active{border-color:var(--primary);color:var(--primary);font-weight:700}.details-modal-actions button.danger{color:#c0392b;border-color:#c0392b}.modal-actions .modal-ok.danger{background:#c0392b;border:none}.btn-primary{background:var(--gradient-primary)!important;border-color:#0000!important}.btn-primary:hover,.btn-primary:focus{filter:brightness(1.06);border-color:#0000!important;box-shadow:0 0 0 3px #667eea33!important}.card{border-radius:10px;box-shadow:var(--card-shadow)!important;border:none!important}.toast-stack{z-index:9999;pointer-events:none;flex-direction:column;align-items:flex-end;gap:10px;max-width:calc(100vw - 40px);display:flex;position:fixed;top:20px;right:20px}.toast-item{pointer-events:auto;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;width:fit-content;max-width:380px;padding:10px 14px;font-size:.88rem;font-weight:500;animation:.25s ease-out toastIn;display:inline-flex;box-shadow:0 4px 14px #0000001f}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.toast-item-warning{color:#856404;background-color:#fff3cd;border:1px solid #ffeeba}.toast-item-success{color:#155724;background-color:#d4edda;border:1px solid #c3e6cb}.toast-item-info{color:#004085;background-color:#cce5ff;border:1px solid #b8daff}.toast-item-danger{color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb}.toast-item-close{color:inherit;opacity:.65;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.25rem;line-height:1;transition:opacity .15s}.toast-item-close:hover{opacity:1}.modal-backdrop-custom{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1050;background-color:#0f172aa6;justify-content:center;align-items:center;width:100vw;height:100vh;animation:.2s ease-out fadeInModal;display:flex;position:fixed;top:0;left:0}.modal-dialog-custom{background:#fff;border-radius:12px;width:90%;max-width:620px;padding:1.5rem;animation:.2s ease-out slideUpModal;box-shadow:0 20px 25px -5px #0003,0 10px 10px -5px #0000000a}@keyframes fadeInModal{0%{opacity:0}to{opacity:1}}@keyframes slideUpModal{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.toolbar-left{white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:10px;display:flex}.page-search{border:1px solid var(--border-color);border-radius:6px;width:100%;max-width:320px;margin-left:auto;padding:7px 12px;font-size:.85rem}.page-refresh-btn{border:1px solid var(--border-color);white-space:nowrap;cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:6px;margin-left:auto;padding:7px 12px;font-size:.85rem;transition:all .15s;display:inline-flex}.page-refresh-btn+.page-search{margin-left:8px}.page-refresh-btn:hover{border-color:var(--primary);color:var(--primary)}.details-table-wrap{border:1px solid var(--border-color);background:var(--bg-card,#fff);border-radius:8px}.details-table-wrap thead th,.details-table-wrap thead tr th{z-index:5;box-shadow:0 1px 0 var(--border-color);position:sticky;top:0;background:var(--bg-secondary,#f8f9fe)!important}.table-count-footer{color:var(--text-secondary,#6c757d);font-size:.8rem}.spin-icon{animation:1s linear infinite spin;display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}select,.form-select,.form-select-sm,input[type=date],input[type=datetime-local],.page-search,.view-toggle button{cursor:pointer}input[type=text].page-search{cursor:text}.modal-ps-mass-expiry-bar{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;padding:6px 10px;display:flex}.modal-ps-mass-expiry-label{color:var(--text-secondary);font-size:.78rem;font-weight:600}.modal-ps-mass-duration-select,.modal-ps-mass-custom-days{border:1px solid var(--border-color);background:#fff;border-radius:4px;padding:3px 6px;font-size:.8rem}.modal-ps-mass-custom-days{width:64px}
