.admin-panel{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);min-height:100vh;padding:2rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif}.admin-panel .admin-header{text-align:center;color:#fff;margin-bottom:3rem}.admin-panel .admin-header .admin-title{text-shadow:0 2px 4px #0000004d;letter-spacing:-.02em;margin:0 0 1rem;font-size:3rem;font-weight:700}.admin-panel .admin-header .admin-subtitle{opacity:.9;margin:0;font-size:1.2rem;font-weight:300}.admin-panel .admin-stats-grid{grid-template-columns:minmax(0,1fr);gap:2rem;margin-bottom:3rem;display:grid}.admin-panel .admin-stats-grid .stat-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #fff3;border-radius:16px;padding:2rem;transition:all .3s;box-shadow:0 8px 32px #0000001a}.admin-panel .admin-stats-grid .stat-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px #00000026}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .summary-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:300px;margin-top:1rem;overflow-y:auto}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table-wrap::-webkit-scrollbar{width:8px}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table-wrap::-webkit-scrollbar-track{background:#f7fafc}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table-wrap::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table{border-collapse:collapse;width:100%;font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:.8rem}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table th{text-align:left;color:#2d3748;z-index:1;letter-spacing:.025em;background:#f7fafc;border-bottom:2px solid #e2e8f0;padding:.6rem .75rem;font-size:.75rem;font-weight:600;position:sticky;top:0}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table td{vertical-align:middle;border-bottom:1px solid #f7fafc;padding:.5rem .75rem}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr{transition:background .2s}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr.rate-warning{background:#ed893614}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr.rate-warning td:first-child{border-left:3px solid #ed8936}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr.rate-limited{background:#f565651a}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr.rate-limited td:first-child{border-left:3px solid #f56565}.admin-panel .admin-stats-grid .stat-card.rate-limiter-card .rate-limiter-table tr:hover{background:#667eea0a}.admin-panel .admin-stats-grid .stat-card .stat-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-header h3{color:#2d3748;margin:0;font-size:1.1rem;font-weight:600}.admin-panel .admin-stats-grid .stat-card .stat-header .status-indicator{font-size:1.5rem;transition:all .3s}.admin-panel .admin-stats-grid .stat-card .stat-header .status-indicator.connected{animation:2s infinite pulse}.admin-panel .admin-stats-grid .stat-card .stat-content .stat-number{color:#667eea;margin-bottom:.5rem;font-size:2.5rem;font-weight:700;line-height:1}.admin-panel .admin-stats-grid .stat-card .stat-content .stat-label{color:#718096;margin:0;font-size:.9rem}.admin-panel .admin-stats-grid .stat-card .stat-content .status-text{color:#2d3748;margin:0;font-size:1.1rem;font-weight:500}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content{flex-direction:column;gap:1.25rem;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .summary-metric{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:.85rem}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .summary-value{color:#2d3748;margin:0 0 .35rem;font-size:1.75rem;font-weight:700;line-height:1}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .summary-label{color:#718096;margin:0;font-size:.8rem;font-weight:600}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .event-breakdown{flex-direction:column;gap:.5rem;max-height:180px;padding-right:.25rem;display:flex;overflow-y:auto}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .event-breakdown-row{color:#2d3748;justify-content:space-between;align-items:center;gap:1rem;font-size:.85rem;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .event-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .event-count{color:#fff;text-align:center;background:#667eea;border-radius:999px;min-width:2rem;padding:.2rem .5rem;font-size:.75rem;font-weight:700}.admin-panel .admin-stats-grid .stat-card .stat-content.summary-content .summary-empty{color:#718096;margin:0;font-size:.9rem}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content{flex-direction:column;gap:1rem;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .controls-row{flex-wrap:wrap;gap:1rem;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn{cursor:pointer;border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.5rem;min-width:120px;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600;transition:all .2s;display:flex}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn.primary{color:#fff;background:#667eea}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn.primary:hover:not(:disabled){background:#5a67d8;transform:translateY(-2px)}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn.secondary{color:#4a5568;background:#e2e8f0}.admin-panel .admin-stats-grid .stat-card .stat-content.controls-content .action-btn.secondary:hover:not(:disabled){background:#cbd5e0;transform:translateY(-2px)}.admin-panel .logs-section{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #fff3;border-radius:16px;overflow:hidden;box-shadow:0 8px 32px #0000001a}.admin-panel .logs-section .section-header{color:#fff;background:linear-gradient(90deg,#667eea,#764ba2);justify-content:space-between;align-items:center;padding:2rem 2rem 1rem;display:flex}.admin-panel .logs-section .section-header h2{margin:0;font-size:1.5rem;font-weight:600}.admin-panel .logs-section .section-header .section-meta{opacity:.8;font-size:.9rem}.admin-panel .logs-section .logs-container{max-height:600px;overflow-y:auto}.admin-panel .logs-section .logs-container::-webkit-scrollbar{width:12px}.admin-panel .logs-section .logs-container::-webkit-scrollbar-track{background:#f7fafc}.admin-panel .logs-section .logs-container::-webkit-scrollbar-thumb{background:#cbd5e0;border:2px solid #f7fafc;border-radius:6px}.admin-panel .logs-section .logs-container::-webkit-scrollbar-thumb:hover{background:#a0aec0}.admin-panel .logs-section .logs-container .empty-state{text-align:center;color:#718096;padding:4rem 2rem}.admin-panel .logs-section .logs-container .empty-state .empty-icon{margin-bottom:1rem;font-size:3rem}.admin-panel .logs-section .logs-container .empty-state h3{color:#4a5568;margin:0 0 .5rem;font-size:1.5rem;font-weight:600}.admin-panel .logs-section .logs-container .empty-state p{margin:0;font-size:1rem}.admin-panel .logs-section .logs-container .logs-table{border-collapse:collapse;width:100%;font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:.85rem}.admin-panel .logs-section .logs-container .logs-table th{text-align:left;color:#2d3748;z-index:10;letter-spacing:.025em;background:linear-gradient(90deg,#f7fafc,#edf2f7);border-bottom:2px solid #e2e8f0;padding:1rem;font-size:.9rem;font-weight:600;position:sticky;top:0}.admin-panel .logs-section .logs-container .logs-table th.th-timestamp{width:180px}.admin-panel .logs-section .logs-container .logs-table th.th-event{width:100px}.admin-panel .logs-section .logs-container .logs-table th.th-usid{width:120px}.admin-panel .logs-section .logs-container .logs-table th.th-grp{width:100px}.admin-panel .logs-section .logs-container .logs-table th.th-payload{width:200px}.admin-panel .logs-section .logs-container .logs-table .log-entry{border-bottom:1px solid #f7fafc;transition:all .2s}.admin-panel .logs-section .logs-container .logs-table .log-entry:hover{background:linear-gradient(90deg,#f0fff4,#f7fafc)}.admin-panel .logs-section .logs-container .logs-table .log-entry.even{background:#f7fafc80}.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-entry,.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-entry td{cursor:pointer}.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-entry.expanded{color:#718096;background:#e2e8f0}.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-entry.expanded .batch-count{background:#a0aec0}.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-entry.expanded .batch-summary{color:#718096}.admin-panel .logs-section .logs-container .logs-table .log-entry.batched-log-child td:first-child{border-left:3px solid #667eea}.admin-panel .logs-section .logs-container .logs-table .log-entry td{vertical-align:middle;border-right:1px solid #f7fafc;padding:.75rem 1rem}.admin-panel .logs-section .logs-container .logs-table .log-entry td:last-child{border-right:none}.admin-panel .logs-section .logs-container .logs-table .log-entry .log-timestamp{color:#718096;white-space:nowrap;font-size:.8rem;font-weight:500}.admin-panel .logs-section .logs-container .logs-table .log-entry .batch-event-label{align-items:center;gap:.4rem;display:inline-flex}.admin-panel .logs-section .logs-container .logs-table .log-entry .batch-count{color:#fff;background:#667eea;border-radius:999px;padding:.2rem .45rem;font-size:.72rem;font-weight:700;line-height:1}.admin-panel .logs-section .logs-container .logs-table .log-entry .batch-summary{color:#667eea;font-weight:600}.admin-panel .logs-section .logs-container .logs-table .log-entry .clickable{cursor:pointer;color:#667eea;text-decoration:underline;transition:color .2s}.admin-panel .logs-section .logs-container .logs-table .log-entry .clickable:hover{color:#5a67d8}.sessions-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #fff3;border-radius:16px;margin-top:2rem;overflow:hidden;box-shadow:0 8px 32px #0000001a}.sessions-panel .sessions-header{color:#fff;background:linear-gradient(90deg,#667eea,#764ba2);justify-content:space-between;align-items:center;padding:1.5rem 2rem;display:flex}.sessions-panel .sessions-header h2{margin:0;font-size:1.5rem;font-weight:600}.sessions-panel .sessions-header .sessions-refreshing{font-size:1.5rem;animation:1s linear infinite spin}.sessions-panel .sessions-error{color:#e53e3e;background:#fff5f5;border-bottom:1px solid #fed7d7;padding:1rem 2rem;font-size:.9rem}.sessions-panel .session-group{border-bottom:1px solid #e2e8f0}.sessions-panel .session-group:last-child{border-bottom:none}.sessions-panel .session-group .session-group-header{background:#f7fafc;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:1.25rem 2rem;display:flex}.sessions-panel .session-group .session-group-header h3{color:#2d3748;margin:0;font-size:1.1rem;font-weight:600}.sessions-panel .session-group .session-group-header .session-count{color:#fff;text-align:center;background:#667eea;border-radius:999px;min-width:1.8rem;padding:.15rem .5rem;font-size:.8rem;font-weight:700}.sessions-panel .session-group .session-group-header .session-count.past{background:#a0aec0}.sessions-panel .session-group .session-empty{text-align:center;color:#a0aec0;padding:2rem;font-size:.95rem}.sessions-panel .session-group .session-list{flex-direction:column;display:flex}.sessions-panel .session-card{cursor:pointer;border-bottom:1px solid #f7fafc;padding:1rem 2rem;transition:all .2s}.sessions-panel .session-card:last-child{border-bottom:none}.sessions-panel .session-card:hover{background:#f7fafc}.sessions-panel .session-card.status-active{border-left:3px solid #48bb78}.sessions-panel .session-card.status-interrupted{border-left:3px solid #ecc94b}.sessions-panel .session-card.status-ended{border-left:3px solid #a0aec0}.sessions-panel .session-card.status-unknown{border-left:3px solid #fc8181}.sessions-panel .session-card .session-card-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.sessions-panel .session-card .session-card-header .session-usid{color:#2d3748;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:600;overflow:hidden}.sessions-panel .session-card .session-card-header .session-status{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:.25rem .6rem;font-size:.75rem;font-weight:600}.sessions-panel .session-card .session-card-header .session-status.status-active{color:#276749;background:#c6f6d5}.sessions-panel .session-card .session-card-header .session-status.status-interrupted{color:#975a16;background:#fefcbf}.sessions-panel .session-card .session-card-header .session-status.status-ended{color:#4a5568;background:#e2e8f0}.sessions-panel .session-card .session-card-header .session-status.status-unknown{color:#c53030;background:#fed7d7}.sessions-panel .session-card .session-card-body{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.35rem 1.5rem;display:grid}.sessions-panel .session-card .session-card-body .session-detail{gap:.4rem;font-size:.85rem;display:flex}.sessions-panel .session-card .session-card-body .session-detail .detail-label{color:#718096;white-space:nowrap}.sessions-panel .session-card .session-card-body .session-detail .detail-value{color:#4a5568;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sessions-panel .session-card .session-card-body .session-detail .session-id{color:#a0aec0;font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem}.sessions-panel .session-card .session-card-body .session-detail .log-count{color:#667eea;font-size:.95rem;font-weight:700}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:768px){.admin-panel{padding:.8rem}.admin-panel .admin-header{margin-bottom:1.5rem}.admin-panel .admin-header .admin-title{font-size:1.8rem}.admin-panel .admin-stats-grid{grid-template-columns:1fr;gap:.8rem;margin-bottom:1.5rem}.admin-panel .admin-stats-grid .stat-card{padding:1.2rem}.admin-panel .logs-section .section-header{flex-direction:column;align-items:flex-start;gap:.4rem;padding:1.2rem}.admin-panel .logs-section .logs-container{max-height:350px}.admin-panel .logs-section .logs-container .logs-table{font-size:.7rem}.admin-panel .logs-section .logs-container .logs-table th,.admin-panel .logs-section .logs-container .logs-table td{padding:.4rem}.admin-panel .logs-section .logs-container .logs-table th.th-timestamp{width:100px}.admin-panel .logs-section .logs-container .logs-table th.th-event,.admin-panel .logs-section .logs-container .logs-table th.th-usid,.admin-panel .logs-section .logs-container .logs-table th.th-grp{width:70px}.admin-panel .logs-section .logs-container .logs-table th.th-payload{width:120px}}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000000b3;justify-content:center;align-items:center;width:100%;height:100%;animation:.2s fadeIn;display:flex;position:fixed;top:0;left:0}.modal-overlay .modal-content{background:#fff;border-radius:16px;width:90%;max-width:800px;max-height:90vh;animation:.3s slideIn;overflow:hidden;box-shadow:0 20px 60px #0000004d}.modal-overlay .modal-content .modal-header{color:#fff;background:linear-gradient(90deg,#667eea,#764ba2);justify-content:space-between;align-items:center;padding:2rem;display:flex;position:relative}.modal-overlay .modal-content .modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:600}.modal-overlay .modal-content .modal-header .modal-subtitle{opacity:.9;margin-top:.5rem;font-size:.9rem}.modal-overlay .modal-content .modal-header .modal-close-btn{color:#fff;cursor:pointer;background:#fff3;border:none;border-radius:50%;width:40px;height:40px;font-size:1.2rem;transition:all .2s;position:absolute;top:1rem;right:1rem}.modal-overlay .modal-content .modal-header .modal-close-btn:hover{background:#ffffff4d;transform:scale(1.1)}.modal-overlay .modal-content .modal-body{max-height:60vh;padding:2rem;overflow-y:auto}.modal-overlay .modal-content .modal-body .empty-payload{text-align:center;color:#718096;padding:2rem;font-style:italic}.modal-overlay .modal-content .modal-body .payload-content{white-space:pre-wrap;word-break:break-word;color:#2d3748;background:#f8f9fa;border:1px solid #e2e8f0;border-radius:8px;max-height:400px;margin:0;padding:1.5rem;font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:.85rem;line-height:1.6;overflow-y:auto}.modal-overlay .modal-content .modal-body .payload-content::-webkit-scrollbar{width:8px}.modal-overlay .modal-content .modal-body .payload-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.modal-overlay .modal-content .modal-body .payload-content::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.modal-overlay .modal-content .modal-body .payload-content::-webkit-scrollbar-thumb:hover{background:#a0aec0}.modal-overlay .modal-content .modal-footer{background:#f8f9fa;border-top:1px solid #e2e8f0;justify-content:flex-end;gap:1rem;padding:1.5rem 2rem;display:flex}.session-logs-modal .modal-body{padding:0!important}.session-logs-modal .modal-body .session-logs-loading,.session-logs-modal .modal-body .session-logs-error,.session-logs-modal .modal-body .session-logs-empty{text-align:center;color:#718096;padding:3rem 2rem;font-size:.95rem}.session-logs-modal .modal-body .session-logs-error{color:#e53e3e}.session-logs-modal .modal-body .session-logs-table-wrap{max-height:60vh;overflow-y:auto}.session-logs-modal .modal-body .session-logs-table{border-collapse:collapse;width:100%;font-size:.85rem}.session-logs-modal .modal-body .session-logs-table thead{z-index:1;position:sticky;top:0}.session-logs-modal .modal-body .session-logs-table thead th{color:#4a5568;text-transform:uppercase;letter-spacing:.05em;text-align:left;background:#f7fafc;border-bottom:2px solid #e2e8f0;padding:.75rem 1rem;font-size:.75rem;font-weight:600}.session-logs-modal .modal-body .session-logs-table tbody tr{transition:background .15s}.session-logs-modal .modal-body .session-logs-table tbody tr:hover{background:#f7fafc}.session-logs-modal .modal-body .session-logs-table tbody tr td{color:#4a5568;vertical-align:top;border-bottom:1px solid #f0f0f0;padding:.6rem 1rem}.session-logs-modal .modal-body .session-logs-table tbody tr .sl-timestamp{color:#a0aec0;white-space:nowrap;font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem}.session-logs-modal .modal-body .session-logs-table tbody tr .sl-event{color:#2d3748;white-space:nowrap;font-weight:500}.session-logs-modal .modal-body .session-logs-table tbody tr .sl-payload{color:#718096;text-overflow:ellipsis;white-space:nowrap;max-width:300px;font-family:JetBrains Mono,Fira Code,monospace;font-size:.78rem;overflow:hidden}.session-logs-modal .modal-body .session-logs-table tbody tr .sl-payload .clickable{cursor:default}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}