@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;background:#0a0f1e;color:#e2e8f0;min-height:100vh}.app{max-width:1200px;margin:0 auto;padding:0 20px 40px}.header{display:flex;align-items:center;justify-content:space-between;padding:24px 0 20px;border-bottom:1px solid #1e293b;margin-bottom:24px}.header-left{display:flex;align-items:baseline;gap:12px}.logo{font-size:22px;font-weight:700;color:#fff}.header-sub{font-size:13px;color:#64748b}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:99px;text-transform:uppercase;letter-spacing:.4px}.badge:before{content:"";width:7px;height:7px;border-radius:50%}.badge-idle{background:#1e293b;color:#64748b}.badge-idle:before{background:#475569}.badge-connecting{background:#1c3047;color:#38bdf8}.badge-connected{background:#14291e;color:#4ade80}.badge-error{background:#2c1a1a;color:#f87171}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.config-panel{background:#1e293b;border:1px solid #334155;border-radius:12px;padding:20px;display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:28px}.config-fields{display:flex;gap:16px;flex:1;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:6px;flex:1;min-width:220px}.field label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px}.field input{background:#0f172a;border:1px solid #334155;border-radius:8px;padding:10px 14px;color:#e2e8f0;font-size:14px;font-family:inherit;outline:none;transition:border-color .15s}.field input:focus{border-color:#4f46e5}.btn{padding:10px 22px;border-radius:8px;font-size:14px;font-weight:600;font-family:inherit;border:none;cursor:pointer;transition:opacity .15s,background .15s;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:#4f46e5;color:#fff}.btn-primary:not(:disabled):hover{background:#4338ca}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.content{display:grid;grid-template-columns:1fr 380px;gap:20px;align-items:start}.panel{background:#1e293b;border:1px solid #334155;border-radius:12px;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #334155}.panel-header h2{font-size:15px;font-weight:600;color:#f1f5f9}.count{font-size:12px;font-weight:600;background:#0f172a;color:#94a3b8;padding:3px 10px;border-radius:99px}.empty{padding:36px 20px;color:#475569;font-size:14px;text-align:center}.user-row{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid #1e2d3e;transition:background .1s}.user-row:hover{background:#0f1e2e}.user-name{font-size:14px;font-weight:600;color:#f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-id{font-size:11px;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coords span{font-size:13px;font-family:monospace;color:#94a3b8}.timestamp{font-size:12px;color:#475569;white-space:nowrap;margin-left:8px}.panel-log{max-height:600px;display:flex;flex-direction:column}.log-row{display:grid;grid-template-columns:68px 1fr 1fr;gap:8px;padding:9px 16px;border-bottom:1px solid #1e2d3e;font-size:12px}.log-time{color:#475569;font-family:monospace}.log-name{color:#94a3b8;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-coords{color:#4f46e5;font-family:monospace;text-align:right}.app{max-width:1400px;margin:0 auto;padding:0 24px 48px}.header{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid #1a2540;margin-bottom:0}.header-left{display:flex;align-items:center;gap:10px}.header-right{display:flex;align-items:center;gap:12px}.header-logo{display:flex;align-items:center;flex-shrink:0}.header-divider{width:1px;height:18px;background:#2a3550;margin:0 2px}.header-sub{font-size:13px;color:#4a5a7a;font-weight:500}.user-chip{display:flex;align-items:center;gap:8px;background:#141c30;border:1px solid #1e2d45;border-radius:99px;padding:5px 12px 5px 5px}.user-chip-avatar{width:26px;height:26px;border-radius:50%;background:#4f46e5;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}.user-chip-email{font-size:12px;color:#94a3b8;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-ghost{background:transparent;color:#94a3b8;border:1px solid #1e293b}.btn-ghost:hover{background:#1e293b;color:#e2e8f0;border-color:#334155}.btn-sm{padding:7px 14px;font-size:12px}.btn-block{width:100%;justify-content:center;display:flex;align-items:center;gap:8px}.btn-spinner{width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:spin .6s linear infinite;display:inline-block}.icon-btn{display:inline-flex;align-items:center;gap:6px}@keyframes spin{to{transform:rotate(360deg)}}.tab-nav{display:flex;gap:4px;padding:16px 0 0;border-bottom:1px solid #1a2540;margin-bottom:24px}.tab-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 18px 11px;font-size:13px;font-weight:600;font-family:inherit;color:#4a5a7a;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s;border-radius:6px 6px 0 0}.tab-btn:hover{color:#94a3b8}.tab-btn-active{color:#818cf8;border-bottom-color:#4f46e5}.tab-btn-active svg{stroke:#818cf8}.section-container{display:flex;flex-direction:column;gap:20px}.splash{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:16px;color:#475569;font-size:14px}.splash-spinner{width:36px;height:36px;border-radius:50%;border:3px solid #1e293b;border-top-color:#4f46e5;animation:spin .8s linear infinite}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at 60% 40%,#16213a,#0a0f1e 70%)}.login-card{width:100%;max-width:400px;background:#111827;border:1px solid #1e2d45;border-radius:16px;padding:40px;box-shadow:0 24px 60px #00000080}.login-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:32px}.login-logo-wrap{margin-bottom:8px}.login-logo-img{width:90px;height:90px;object-fit:contain}.header-logo-img{width:34px;height:34px;object-fit:contain}.login-title{font-size:26px;font-weight:700;color:#f8fafc;letter-spacing:-.3px}.login-subtitle{font-size:13px;color:#4a5a7a;text-align:center}.login-form{display:flex;flex-direction:column;gap:18px}.login-note{font-size:11px;color:#2d3a53;text-align:center;margin-top:20px}.pw-wrap{position:relative}.pw-wrap input{width:100%;padding-right:42px}.pw-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:14px;color:#475569;padding:0;line-height:1}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.field input,.field select{background:#0d1526;border:1px solid #1e2d45;border-radius:8px;padding:10px 14px;color:#e2e8f0;font-size:14px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}.field input:focus,.field select:focus{border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e526}.field input:disabled{opacity:.5;cursor:not-allowed}.field-inline{flex-direction:row;align-items:center;gap:12px}.field-inline label{white-space:nowrap;margin-bottom:0}.alert-error{display:flex;align-items:center;gap:8px;background:#2c1a1a;border:1px solid #7f1d1d;color:#fca5a5;border-radius:8px;padding:10px 14px;font-size:13px;line-height:1.4}.alert-warn{display:inline-flex;align-items:center;gap:7px;background:#2c2010;border:1px solid #78350f;color:#fbbf24;border-radius:8px;padding:9px 14px;font-size:13px}.alert-warn code{font-family:monospace;font-size:12px;background:#0000004d;padding:1px 5px;border-radius:4px}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#111827;border:1px solid #1a2540;border-radius:12px;padding:14px 18px}.filter-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap;flex:1}.filter-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.search-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:200px;max-width:340px}.search-icon{position:absolute;left:12px;color:#475569;pointer-events:none;flex-shrink:0}.search-input{width:100%;background:#0d1526;border:1px solid #1e2d45;border-radius:8px;padding:9px 36px;color:#e2e8f0;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s}.search-input:focus{border-color:#4f46e5}.search-input::placeholder{color:#2d3a53}.search-clear{position:absolute;right:10px;background:none;border:none;color:#475569;cursor:pointer;font-size:11px;padding:2px 4px}.search-clear:hover{color:#94a3b8}.select-wrap{position:relative;display:flex;align-items:center}.select-icon{position:absolute;left:11px;color:#475569;pointer-events:none}.org-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#0d1526;border:1px solid #1e2d45;border-radius:8px;padding:9px 32px;color:#e2e8f0;font-size:13px;font-family:inherit;outline:none;cursor:pointer;min-width:180px;transition:border-color .15s}.org-select:focus{border-color:#4f46e5}.org-select:disabled{opacity:.5;cursor:not-allowed}.org-select option{background:#111827}.count-chip{font-size:12px;font-weight:600;background:#0d1526;color:#4a5a7a;padding:4px 12px;border-radius:99px;border:1px solid #1a2540;white-space:nowrap}.loading-state,.empty-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:64px 24px;color:#2d3a53;font-size:14px;background:#111827;border:1px solid #1a2540;border-radius:12px}.empty-state svg,.error-state svg{color:#2d3a53}.empty-state p{font-size:16px;font-weight:600;color:#3a4a63}.empty-state span{font-size:13px}.error-state{color:#f87171;border-color:#7f1d1d;background:#1a0d0d}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid #1e293b;border-top-color:#4f46e5;animation:spin .7s linear infinite}.users-table-wrap{background:#111827;border:1px solid #1a2540;border-radius:12px;overflow:hidden;overflow-x:auto}.users-table{width:100%;border-collapse:collapse;font-size:13px}.users-table thead tr{background:#0d1526;border-bottom:1px solid #1a2540}.users-table th{padding:11px 16px;font-size:11px;font-weight:600;color:#3a4a63;text-transform:uppercase;letter-spacing:.5px;text-align:left;white-space:nowrap}.users-table tbody tr{border-bottom:1px solid #131d30;transition:background .1s}.users-table tbody tr:last-child{border-bottom:none}.users-table tbody tr:hover{background:#0d1526}.users-table td{padding:12px 16px;vertical-align:middle}.cell-user{display:flex;align-items:center;gap:12px}.cell-user-info{display:flex;flex-direction:column;gap:2px;min-width:0}.cell-name{font-size:13px;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.cell-email{font-size:11px;color:#3a4a63;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;display:block}.cell-org{color:#94a3b8;font-size:12px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-mono{font-family:Courier New,monospace;font-size:12px}.cell-muted{color:#2d3a53}.cell-date{font-size:11px;color:#2d3a53;white-space:nowrap}.avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff;flex-shrink:0}.avatar-sm{width:34px;height:34px;font-size:12px}.code-chip{font-family:Courier New,monospace;font-size:12px;font-weight:700;background:#0d1526;color:#818cf8;border:1px solid #1e2d45;border-radius:6px;padding:3px 8px;letter-spacing:.05em}.role-badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 10px;border-radius:99px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}.role-ambassador{background:#0c1d3a;color:#60a5fa;border:1px solid #1e3a5f}.role-supervisor{background:#1a1428;color:#a78bfa;border:1px solid #3b2d6e}.role-superadmin{background:#1a2010;color:#86efac;border:1px solid #365f1e}.btn-edit{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;font-family:inherit;background:#0d1526;color:#818cf8;border:1px solid #1e2d45;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.btn-edit:hover{background:#1e2d45;border-color:#4f46e5;color:#a5b4fc}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#111827;border:1px solid #1e2d45;border-radius:16px;width:100%;max-width:440px;box-shadow:0 32px 80px #0009;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 20px 14px;border-bottom:1px solid #1a2540}.modal-header h3{font-size:16px;font-weight:700;color:#f1f5f9}.modal-sub{font-size:12px;color:#3a4a63;margin-top:3px}.modal-close{background:none;border:none;color:#3a4a63;cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:color .15s,background .15s}.modal-close:hover{color:#94a3b8;background:#1e2d45}.modal-form{display:flex;flex-direction:column;gap:16px;padding:20px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:4px}.tracking-config{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#111827;border:1px solid #1a2540;border-radius:12px;padding:14px 18px}.tracking-config-left{display:flex;align-items:center;gap:16px;flex-wrap:wrap;flex:1}.tracking-config-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.tracking-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stat-card{background:#111827;border:1px solid #1a2540;border-radius:10px;padding:16px 20px;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:26px;font-weight:700;color:#f1f5f9;line-height:1}.stat-value.stat-live{color:#4ade80;animation:pulse 2s infinite}.stat-label{font-size:11px;font-weight:600;color:#2d3a53;text-transform:uppercase;letter-spacing:.5px}@media (max-width: 600px){.tracking-stats{grid-template-columns:1fr 1fr}}.content{display:grid;grid-template-columns:1fr 360px;gap:20px;align-items:start}@media (max-width: 860px){.content{grid-template-columns:1fr}}.panel{background:#111827;border:1px solid #1a2540;border-radius:12px;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #1a2540}.panel-header h2{font-size:14px;font-weight:600;color:#c8d3e8}.count{font-size:11px;font-weight:600;background:#0d1526;color:#3a4a63;padding:3px 10px;border-radius:99px;border:1px solid #1a2540}.empty{padding:36px 20px;color:#2d3a53;font-size:13px;text-align:center}.user-list{display:flex;flex-direction:column}.user-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #131d30;transition:background .1s}.user-row:last-child{border-bottom:none}.user-row:hover{background:#0d1526}.user-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.user-name{font-size:13px;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-id{font-size:11px;color:#2d3a53;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coords{display:flex;flex-direction:column;gap:3px;align-items:flex-end}.coords span{font-size:12px;font-family:monospace;color:#64748b}.maps-link{font-size:11px;color:#4f46e5;text-decoration:none}.maps-link:hover{text-decoration:underline}.timestamp{font-size:11px;color:#2d3a53;white-space:nowrap;margin-left:6px}.panel-log{max-height:580px;display:flex;flex-direction:column}.log-list{overflow-y:auto;flex:1}.log-row{display:grid;grid-template-columns:64px 1fr 1fr;gap:8px;padding:8px 14px;border-bottom:1px solid #131d30;font-size:12px}.log-row:last-child{border-bottom:none}.log-time{color:#2d3a53;font-family:monospace}.log-name{color:#64748b;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-coords{color:#4f46e5;font-family:monospace;text-align:right;font-size:11px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:5px 12px;border-radius:99px;text-transform:uppercase;letter-spacing:.5px}.badge:before{content:"";width:6px;height:6px;border-radius:50%;flex-shrink:0}.badge-idle{background:#0d1526;color:#2d3a53;border:1px solid #1a2540}.badge-idle:before{background:#2d3a53}.badge-connecting{background:#0c1d37;color:#38bdf8;border:1px solid #164e6e}.badge-connecting:before{background:#38bdf8;animation:pulse 1s infinite}.badge-connected{background:#0a1e14;color:#4ade80;border:1px solid #16532a}.badge-connected:before{background:#4ade80;animation:pulse 2s infinite}.badge-error{background:#1f0d0d;color:#f87171;border:1px solid #7f1d1d}.badge-error:before{background:#ef4444}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}.toggle-sw{position:relative;display:inline-flex;align-items:center;width:38px;height:22px;border-radius:11px;border:none;padding:0;cursor:pointer;flex-shrink:0;transition:background .2s,opacity .2s;outline:none}.toggle-sw:focus-visible{box-shadow:0 0 0 3px #4f46e566}.toggle-sw:disabled{opacity:.55;cursor:not-allowed}.toggle-sw-on{background:#22c55e}.toggle-sw-off{background:#374151}.toggle-sw-thumb{position:absolute;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000059;transition:transform .2s}.toggle-sw-on .toggle-sw-thumb{transform:translate(16px)}.toggle-sw-off .toggle-sw-thumb{transform:translate(0)}.toggle-sw-loading{background:transparent!important;box-shadow:none!important;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .6s linear infinite}.status-cell{display:flex;align-items:center;gap:8px}.status-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}.status-active{color:#22c55e}.status-disabled{color:#ef4444}.row-disabled{opacity:.5}.row-disabled .cell-name{text-decoration:line-through;text-decoration-color:#475569}.row-disabled .status-cell{opacity:1}
