:root{--bg:#f8fafc;--bg-subtle:#f1f5f9;--surface:#fff;--border:#e2e8f0;--border-focus:#94a3b8;--text:#0f172a;--text-secondary:#475569;--muted:#64748b;--accent:#2563eb;--accent-hover:#1d4ed8;--primary:#2563eb;--success:#059669;--warning:#d97706;--warn:#d97706;--error:#dc2626;--on-muted:#fff;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow:0 1px 3px rgba(0,0,0,.08);--shadow-md:0 4px 6px -1px rgba(0,0,0,.07),0 2px 4px -2px rgba(0,0,0,.05)}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;min-height:100vh;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}button,input,select,textarea{font:inherit}.container{width:100%;max-width:1200px;margin:0 auto;padding:1rem}.card{border:1px solid var(--border);border-radius:10px;padding:1.25rem;box-shadow:var(--shadow)}.btn,.card{background:var(--surface)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:8px;border:1px solid var(--border);color:var(--text);transition:background .2s,border-color .2s,box-shadow .2s}.btn:hover{background:var(--bg-subtle);border-color:var(--border-focus)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.widget-action-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .12s cubic-bezier(.34,1.56,.64,1),box-shadow .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline:none}.widget-action-btn:hover{background:var(--bg-subtle,#f1f5f9);border-color:var(--border-focus,#94a3b8);color:var(--text);transform:translateY(-1px);box-shadow:0 2px 5px rgba(0,0,0,.08)}.widget-action-btn:active{background:rgba(37,99,235,.14)!important;border-color:var(--accent,#2563eb)!important;color:var(--accent,#2563eb)!important;transform:scale(.88)!important;box-shadow:0 0 0 3px rgba(37,99,235,.25)!important}.widget-action-btn.active,.widget-action-btn[aria-expanded=true]{background:rgba(37,99,235,.12);border-color:var(--accent,#2563eb);color:var(--accent,#2563eb)}.widget-action-btn:focus-visible{outline:2px solid var(--accent,#2563eb);outline-offset:2px}.modal-btn-cancel{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.4rem;font-size:.92rem;font-weight:500;color:#0f172a;background:#fff;border:1.5px solid #cbd5e1;border-radius:8px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.modal-btn-cancel:hover{background:#f1f5f9!important;border-color:#94a3b8!important;color:#0f172a!important;box-shadow:0 2px 8px rgba(0,0,0,.08)}.modal-btn-cancel:active{background:#e2e8f0!important}.modal-btn-confirm{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.4rem;font-size:.92rem;font-weight:600;color:#fff!important;background:#2563eb;border:1.5px solid #2563eb;border-radius:8px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease;box-shadow:0 2px 6px rgba(37,99,235,.25)}.modal-btn-confirm:hover:not(:disabled){background:#1d4ed8!important;border-color:#1d4ed8!important;box-shadow:0 4px 14px rgba(37,99,235,.4)}.modal-btn-confirm:active:not(:disabled){background:#1e40af!important;border-color:#1e40af!important}.modal-btn-confirm:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}@media (max-width:640px){.modal-btn-cancel,.modal-btn-confirm{width:100%;flex:1 1 100%;min-width:0;text-align:center}.modal-footer-responsive{flex-direction:column!important;align-items:stretch!important;gap:.75rem!important}.modal-footer-responsive .modal-footer-actions{width:100%!important;display:flex!important;flex-direction:column!important;gap:.5rem!important}.modal-footer-responsive .modal-footer-actions button{width:100%!important;max-width:100%!important}}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.35rem;color:var(--text-secondary);font-size:.9rem}.form-group label.btn{display:inline-flex;align-items:center;justify-content:center;margin-bottom:0;color:var(--text)}.form-group label.btn-primary{color:#fff}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.15)}input::-ms-clear,input::-ms-reveal{display:none!important}.form-error{font-size:.85rem;color:var(--error);margin-top:.25rem}.print-report .report-rendered-body{font-family:inherit;margin:0;color:#111;line-height:1.5}.print-report .report-rendered-body table{border-collapse:collapse!important;width:100%!important;border:1px solid #333!important}.print-report .report-rendered-body table td,.print-report .report-rendered-body table th{border:1px solid #333!important;padding:6px!important}.print-report .report-rendered-body .report-kpi-multi-table,.print-report .report-rendered-body .report-kpi-table,.print-report .report-rendered-body .report-simple-table{margin-bottom:1rem}.print-report .report-rendered-body .report-card{border:1px solid #ddd!important;padding:1rem;border-radius:8px}@media print{body{background:#fff}.print-report{background:#fff!important;border-color:#e2e8f0!important;box-shadow:none!important}.print-report .report-rendered-body table,.print-report .report-rendered-body table td,.print-report .report-rendered-body table th{border:1px solid #333!important;padding:6px!important}}@keyframes report-load-progress{0%{transform:translateX(-100%)}to{transform:translateX(400%)}}.report-load-progress-bar{height:4px;background:var(--border);border-radius:4px;overflow:hidden;min-width:160px}.report-load-progress-bar__fill{height:100%;width:25%;background:var(--accent);border-radius:4px;animation:report-load-progress 1.4s ease-in-out infinite}@media (max-width:768px){.report-design-grid{grid-template-columns:1fr!important}}@keyframes spin-custom{to{transform:rotate(1turn)}}.animate-spin-custom{animation:spin-custom .8s linear infinite}.progress-bar-container{width:100%;height:6px;background:var(--bg-subtle,#f1f5f9);border-radius:999px;overflow:hidden;margin-top:4px}.progress-bar-fill{height:100%;background:var(--accent,#2563eb);transition:width .15s ease-out}.effective-spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;min-height:120px;width:100%;border-radius:12px;background:transparent;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all .3s ease}.effective-spinner-container--overlay{position:absolute;inset:0;z-index:10;background:hsla(0,0%,100%,.45);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.effective-spinner{border-style:solid;border-color:rgba(99,102,241,.18);border-top-color:var(--primary,#4f46e5);border-right-color:var(--primary,#4f46e5);border-radius:50%;animation:effective-spin .75s cubic-bezier(.4,0,.2,1) infinite;box-shadow:0 0 16px rgba(99,102,241,.28)}.effective-spinner-text{margin-top:.65rem;font-weight:500;color:var(--muted,#64748b);letter-spacing:.015em;animation:effective-pulse-text 1.6s ease-in-out infinite}@keyframes widgetEntrance{0%{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.widget-entrance-item{animation:widgetEntrance .45s cubic-bezier(.16,1,.3,1) both;will-change:transform,opacity}.widget-interactive-card{transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s cubic-bezier(.16,1,.3,1)}.widget-interactive-card:hover{box-shadow:0 12px 28px -6px rgba(0,0,0,.08),0 4px 10px -2px rgba(0,0,0,.04)}@keyframes chartBarGrowUp{0%{transform:scaleY(0);opacity:.15}60%{opacity:.95}to{transform:scaleY(1);opacity:1}}.chart-bar-animated{transform-box:fill-box;transform-origin:bottom;animation:chartBarGrowUp .6s cubic-bezier(.16,1,.3,1) both}@keyframes chartLabelEntrance{0%{opacity:0}to{opacity:1}}.chart-label-animated{animation:chartLabelEntrance .4s ease-out both}@keyframes chartPieEntrance{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}.chart-pie-animated{transform-box:fill-box;transform-origin:center;animation:chartPieEntrance .55s cubic-bezier(.16,1,.3,1) both}@keyframes chartLineEntrance{0%{opacity:0}to{opacity:1}}.chart-line-animated{animation:chartLineEntrance .5s cubic-bezier(.16,1,.3,1) both}@keyframes widgetContentAppear{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.widget-content-appear{animation:widgetContentAppear .4s cubic-bezier(.16,1,.3,1) both}.report-kpi-multi-table th,.report-kpi-table th,.report-simple-table th,table.report-table th{word-break:normal!important;overflow-wrap:normal!important;word-wrap:normal!important;white-space:normal!important;hyphens:none!important;-webkit-hyphens:none!important;padding:6px 5px!important;vertical-align:middle!important;box-sizing:border-box!important}.custom-report table tbody tr td:first-child,.custom-report table tbody tr td:nth-child(n+3),.custom-report table thead tr th:first-child,.custom-report table thead tr th:nth-child(n+3){text-align:center}.custom-report table tbody tr td:nth-child(2),.custom-report table thead tr th:nth-child(2){text-align:left}@keyframes effective-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes effective-pulse-text{0%,to{opacity:.65}50%{opacity:1}}@keyframes dashboardProgressBar{0%{background-position:200% 0}to{background-position:-200% 0}}.bulk-action-bar{justify-content:space-between;gap:1rem;background:#fff;color:#1e293b;border:1px solid #cbd5e1;padding:.75rem 1.25rem;border-radius:10px;margin-bottom:1rem;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:all .2s ease}.bulk-action-bar,.bulk-action-info{display:flex;align-items:center;flex-wrap:wrap}.bulk-action-info{gap:.75rem}.bulk-action-badge{background:#2563eb;color:#fff;padding:.25rem .65rem;border-radius:9999px;font-size:.8rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.bulk-action-text{font-size:.9rem;font-weight:600;color:#1e293b;white-space:nowrap}.bulk-action-deselect{background:none;border:none;color:#64748b;cursor:pointer;font-size:.8rem;text-decoration:underline;padding:.2rem .4rem;font-weight:500;transition:color .15s ease}.bulk-action-deselect:hover{color:#1e293b}.bulk-action-buttons{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.bulk-btn{display:inline-flex;align-items:center;justify-content:center;padding:.55rem 1.1rem;font-size:.825rem;font-weight:600;border-radius:6px;border:none;cursor:pointer;min-height:38px;white-space:nowrap;transition:background-color .15s ease,box-shadow .15s ease,transform .1s ease;min-width:110px}.bulk-btn:active:not(:disabled){transform:translateY(1px)}.bulk-btn:disabled{opacity:.6;cursor:not-allowed}.bulk-btn-activate{background:#10b981;color:#fff}.bulk-btn-activate:hover:not(:disabled){background:#059669;box-shadow:0 2px 8px rgba(16,185,129,.35)}.bulk-btn-deactivate{background:#f59e0b;color:#fff}.bulk-btn-deactivate:hover:not(:disabled){background:#d97706;box-shadow:0 2px 8px rgba(245,158,11,.35)}.bulk-btn-full{background:#2563eb;color:#fff}.bulk-btn-full:hover:not(:disabled){background:#1d4ed8;box-shadow:0 2px 8px rgba(37,99,235,.35)}.bulk-btn-revoke{background:#ef4444;color:#fff}.bulk-btn-revoke:hover:not(:disabled){background:#dc2626;box-shadow:0 2px 8px rgba(239,68,68,.35)}@media (max-width:900px){.bulk-action-bar{padding:.85rem 1rem;gap:.85rem}.bulk-action-buttons{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));grid-gap:.5rem;gap:.5rem}.bulk-btn{width:100%;min-width:0}}@media (max-width:560px){.bulk-action-bar{flex-direction:column;align-items:stretch;gap:.75rem;padding:.75rem}.bulk-action-info{justify-content:space-between;width:100%}.bulk-action-buttons{width:100%;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.5rem;gap:.5rem}.bulk-btn{width:100%;font-size:.8rem;padding:.5rem .6rem;min-width:0}}@media (max-width:360px){.bulk-action-buttons{grid-template-columns:1fr}}.pagination-bar{justify-content:space-between;gap:.85rem;padding:.75rem 1.25rem;background:#fff;border-top:1px solid #e2e8f0}.pagination-bar,.pagination-group{display:flex;align-items:center;flex-wrap:wrap}.pagination-group{gap:.65rem}.pagination-info{color:#64748b;gap:.35rem}.pagination-btn,.pagination-info{font-size:.85rem;display:inline-flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pagination-btn{justify-content:center;padding:.45rem 1rem;font-weight:600;border-radius:6px;border:1px solid #cbd5e1;background:#fff;color:#334155;cursor:pointer;min-height:36px;min-width:85px;transition:all .15s ease}.pagination-btn:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.pagination-btn:active:not(:disabled){background:#e2e8f0;transform:translateY(1px)}.pagination-btn:disabled{background:#f8fafc;color:#94a3b8;border-color:#e2e8f0;cursor:not-allowed;opacity:.6}.pagination-page-size{display:inline-flex;align-items:center;gap:.5rem}.pagination-page-size select{padding:.35rem .65rem;border-radius:6px;border:1px solid #cbd5e1;font-size:.8rem;background:#fff;color:#334155;font-weight:600;cursor:pointer;outline:none;min-height:34px}.pagination-page-size select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.15)}@media (max-width:640px){.pagination-bar{flex-direction:column;align-items:stretch;gap:.85rem;padding:.85rem 1rem}.pagination-group{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"info info" "prev next";grid-gap:.65rem .5rem;gap:.65rem .5rem;width:100%}.pagination-group .pagination-info{grid-area:info;text-align:center;justify-content:center;font-size:.875rem}.pagination-group .pagination-btn-prev{grid-area:prev;width:100%;min-height:42px;font-size:.875rem}.pagination-group .pagination-btn-next{grid-area:next;width:100%;min-height:42px;font-size:.875rem}.pagination-page-size{width:100%;justify-content:space-between;padding-top:.5rem;border-top:1px dashed #e2e8f0}.pagination-page-size select{flex:1 1;max-width:220px;min-height:38px}}.table-btn-edit{display:inline-flex;align-items:center;justify-content:center;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;padding:.35rem .75rem;font-size:.75rem;font-weight:600;color:#334155;cursor:pointer;min-height:32px;white-space:nowrap;box-sizing:border-box;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.table-btn-edit:hover{background:#e2e8f0;border-color:#3b82f6;color:#1d4ed8;box-shadow:0 2px 6px rgba(59,130,246,.18);transform:translateY(-1px)}.table-btn-edit:active{background:#cbd5e1;transform:translateY(0)}.table-btn-revoke{display:inline-flex;align-items:center;justify-content:center;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:.35rem .75rem;font-size:.75rem;font-weight:600;color:#dc2626;cursor:pointer;min-height:32px;white-space:nowrap;box-sizing:border-box;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.table-btn-revoke:hover{background:#fee2e2;border-color:#ef4444;color:#b91c1c;box-shadow:0 2px 6px rgba(239,68,68,.2);transform:translateY(-1px)}.table-btn-revoke:active{background:#fca5a5;transform:translateY(0)}.table-btn-status-active{background:#dcfce7;color:#15803d;border:1px solid #86efac;border-radius:9999px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.table-btn-status-active:hover{background:#bbf7d0;border-color:#4ade80;color:#166534;box-shadow:0 2px 5px rgba(22,101,52,.18)}.table-btn-status-inactive{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5;border-radius:9999px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.table-btn-status-inactive:hover{background:#fecaca;border-color:#f87171;color:#991b1b;box-shadow:0 2px 5px rgba(185,28,28,.18)}.drawer-btn-close{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;padding:.3rem .75rem;font-size:.8rem;font-weight:600;color:#475569;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.drawer-btn-close:hover{background:#e2e8f0;border-color:#94a3b8;color:#0f172a;box-shadow:0 2px 4px rgba(0,0,0,.08)}.drawer-status-btn-deactivate{padding:.45rem .95rem;border-radius:6px;border:none;background:#15803d;color:#fff;font-size:.825rem;font-weight:600;cursor:pointer;min-height:36px;white-space:nowrap;transition:background-color .15s ease,box-shadow .15s ease,transform .1s ease}.drawer-status-btn-deactivate:hover{background:#166534;box-shadow:0 2px 8px rgba(22,101,52,.35);transform:translateY(-1px)}.drawer-status-btn-deactivate:active{transform:translateY(0)}.drawer-status-btn-activate{padding:.45rem .95rem;border-radius:6px;border:none;background:#ea580c;color:#fff;font-size:.825rem;font-weight:600;cursor:pointer;min-height:36px;white-space:nowrap;transition:background-color .15s ease,box-shadow .15s ease,transform .1s ease}.drawer-status-btn-activate:hover{background:#c2410c;box-shadow:0 2px 8px rgba(234,88,12,.35);transform:translateY(-1px)}.drawer-status-btn-activate:active{transform:translateY(0)}.drawer-mode-btn{width:100%;padding:.6rem .85rem;min-height:38px;display:flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid #cbd5e1;background:#fff;color:#475569;font-weight:600;font-size:.825rem;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.drawer-mode-btn:hover{border-color:#3b82f6;background:#f0f9ff;color:#1d4ed8;box-shadow:0 2px 6px rgba(59,130,246,.15);transform:translateY(-1px)}.drawer-mode-btn.active{border-color:#2563eb;background:#eff6ff;color:#1d4ed8;box-shadow:0 2px 6px rgba(37,99,235,.22)}.drawer-mode-btn.active:hover{background:#dbeafe;border-color:#1d4ed8;box-shadow:0 3px 8px rgba(37,99,235,.3)}.feature-permission-label{display:flex;align-items:center;gap:.45rem;font-size:.825rem;color:#334155;font-weight:500;cursor:pointer;padding:.35rem .5rem;border-radius:6px;transition:background-color .15s ease,color .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.feature-permission-label:hover{background:#f1f5f9;color:#0f172a}.feature-permission-label input[type=checkbox]{width:16px;height:16px;accent-color:#2563eb;cursor:pointer}.drawer-btn-revoke{padding:.55rem .85rem;border-radius:6px;border:1px solid #fecaca;background:#fef2f2;color:#dc2626;font-size:.825rem;font-weight:600;cursor:pointer;min-height:38px;flex:1 1 120px;text-align:center;box-sizing:border-box;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.drawer-btn-revoke:hover:not(:disabled){background:#fee2e2;border-color:#f87171;color:#b91c1c;box-shadow:0 2px 8px rgba(220,38,38,.22);transform:translateY(-1px)}.drawer-btn-revoke:active:not(:disabled){background:#fca5a5;transform:translateY(0)}.drawer-btn-revoke:disabled{opacity:.6;cursor:not-allowed}.drawer-btn-cancel{padding:.55rem .85rem;border-radius:6px;border:1px solid #cbd5e1;background:#fff;color:#475569;font-size:.825rem;font-weight:600;cursor:pointer;min-height:38px;flex:1 1 80px;text-align:center;box-sizing:border-box;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.drawer-btn-cancel:hover{background:#f1f5f9;border-color:#94a3b8;color:#0f172a;box-shadow:0 2px 6px rgba(0,0,0,.08);transform:translateY(-1px)}.drawer-btn-cancel:active{background:#e2e8f0;transform:translateY(0)}.drawer-btn-save{padding:.55rem 1.1rem;border-radius:6px;border:none;background:#2563eb;color:#fff;font-size:.825rem;font-weight:600;cursor:pointer;min-height:38px;flex:1 1 120px;text-align:center;box-sizing:border-box;white-space:nowrap;transition:background-color .15s ease,box-shadow .15s ease,transform .1s ease;box-shadow:0 2px 6px rgba(37,99,235,.25)}.drawer-btn-save:hover:not(:disabled){background:#1d4ed8;box-shadow:0 4px 12px rgba(37,99,235,.38);transform:translateY(-1px)}.drawer-btn-save:active:not(:disabled){background:#1e40af;transform:translateY(0)}.drawer-btn-save:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.rights-field-interactive{transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.rights-field-interactive:hover{border-color:#94a3b8!important}.rights-field-interactive:focus{border-color:#2563eb!important;box-shadow:0 0 0 3px rgba(37,99,235,.15)!important;outline:none}