body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg:#0f1722;--bg-2:#111f2f;--panel:#162437;--panel-2:#1b2d44;--text:#e8eef8;--muted:#9eb2ca;--border:#2a3d57;--accent:#2dc5c0;--accent-2:#38a3ff;--danger:#ff6e7d;--success:#38d39f;--warning:#ffbf69;--shadow:0 18px 48px #00000059}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at 8% 12%,#38a3ff38,#0000 36%),radial-gradient(circle at 88% 88%,#2dc5c02e,#0000 32%),linear-gradient(145deg,#0f1722,#111f2f 60%,#0a121d);background:radial-gradient(circle at 8% 12%,#38a3ff38,#0000 36%),radial-gradient(circle at 88% 88%,#2dc5c02e,#0000 32%),linear-gradient(145deg,var(--bg) 0,var(--bg-2) 60%,#0a121d 100%);color:#e8eef8;color:var(--text);font-family:Manrope,Segoe UI,Inter,sans-serif}.app,body{min-height:100vh}.app{animation:pageFade .42s ease;display:flex;flex-direction:column}.loading{color:#9eb2ca;color:var(--muted);font-size:18px;height:100vh;justify-content:center}.loading,.nav{align-items:center;display:flex}.nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(90deg,#142234eb,#111f2fe6);border-bottom:1px solid #9eb2ca29;justify-content:space-between;padding:1rem 2rem;position:sticky;top:0;z-index:30}.nav,.nav-title{color:#e8eef8;color:var(--text)}.nav-title{font-size:1.35rem;font-weight:800;letter-spacing:.02em}.nav-info{align-items:center;display:flex;gap:1.1rem}.nav-links{display:flex;gap:.65rem}.nav-link{background:#ffffff05;border:1px solid #9eb2ca38;border-radius:999px;color:#d6e4f8;font-size:.82rem;padding:7px 11px;text-decoration:none;transition:all .18s ease}.nav-link:hover{background:#38a3ff24;border-color:#38a3ffa6;transform:translateY(-1px)}.nav-user{color:#9eb2ca;color:var(--muted);font-size:.84rem}.nav-user-admin{color:#ff8a96;font-weight:700}.nav-role{background:#2dc5c033;border:1px solid #2dc5c059;border-radius:999px;color:#d3f6ff;display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.04em;margin-left:8px;padding:4px 9px}.nav-logout{background:linear-gradient(135deg,#da5f78,#b84764);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:.82rem;font-weight:600;padding:8px 14px;transition:transform .15s ease,box-shadow .15s ease}.nav-logout:hover{box-shadow:0 8px 20px #da5f7852;transform:translateY(-1px)}.container{flex:1 1;margin:0 auto;max-width:1400px;padding:1.5rem 1.5rem 2rem;width:100%}.login-container{animation:floatIn .42s ease;background:linear-gradient(160deg,#1a283af5,#142234f5);border:1px solid #9eb2ca33;border-radius:18px;box-shadow:0 18px 48px #00000059;box-shadow:var(--shadow);margin:4.2rem auto;max-width:450px;padding:2rem}.login-title{color:#f0f7ff;font-size:2rem;letter-spacing:.02em;margin-bottom:1.6rem;text-align:center}.login-title-link{color:inherit;cursor:pointer;text-decoration:none}.login-title-link:hover{color:#c6f2ff}.form-group{margin-bottom:1.15rem}.form-group label{color:#bed0e8;display:block;font-size:.86rem;font-weight:600;margin-bottom:.44rem}.form-group input,.form-group textarea,.search-box input,.search-box select,select,textarea{background:#ffffff08;border:1px solid #2a3d57;border:1px solid var(--border);border-radius:10px;color:#e8eef8;color:var(--text);font-size:.9rem;padding:10px 11px;transition:border-color .18s ease,box-shadow .18s ease;width:100%}input::placeholder,textarea::placeholder{color:#8fa3bc}select option{background:#162437;color:#e8eef8}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:focus,textarea:-webkit-autofill:hover{-webkit-text-fill-color:#e8eef8;-webkit-box-shadow:inset 0 0 0 1000px #162437;-webkit-transition:background-color 9999s ease-in-out 0s;transition:background-color 9999s ease-in-out 0s}.form-group textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}.form-group input:focus,.form-group textarea:focus,.search-box input:focus,.search-box select:focus,select:focus,textarea:focus{border-color:#38a3ffbf;box-shadow:0 0 0 3px #38a3ff24;outline:none}.btn{border:1px solid #0000;border-radius:10px;cursor:pointer;font-size:.88rem;font-weight:600;padding:10px 16px;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.btn:disabled,.btn[disabled]{cursor:not-allowed;opacity:.6}.btn-primary{background:linear-gradient(135deg,#38a3ff,#2c80d0);background:linear-gradient(135deg,var(--accent-2),#2c80d0);box-shadow:0 8px 22px #38a3ff40;color:#fff;width:100%}.btn-primary:hover{filter:brightness(1.06);transform:translateY(-1px)}.btn-secondary{background:#3d5169;color:#ebf4ff}.btn-secondary:hover{filter:brightness(1.08)}.btn-danger{background:linear-gradient(135deg,#ec6a7a,#c74e67);color:#fff}.btn-danger:hover{filter:brightness(1.05)}.btn-success{background:linear-gradient(135deg,#24b68f,#1f8f75);color:#f2fffb}.btn-success:hover{filter:brightness(1.07)}.btn-sm{font-size:.76rem;padding:6px 11px}.error{background:#ff6e7d29;border:1px solid #ff6e7d61;border-radius:10px;color:#ffd7de}.error,.success{font-size:.85rem;margin-bottom:.9rem;padding:10px 12px}.success{background:#38d39f24;border:1px solid #38d39f59;border-radius:10px;color:#d8ffee}.register-link{color:#9eb2ca;color:var(--muted);font-size:.84rem;margin-top:1rem;text-align:center}.register-link a{color:#8fd9ff;text-decoration:none}.register-link a:hover{text-decoration:underline}.dashboard{display:flex;gap:1.2rem}.dashboard-main{animation:riseIn .38s ease;flex:1 1}.download-latest-bar{align-items:center;background:linear-gradient(90deg,#38a3ff2e,#2dc5c029);border:1px solid #38a3ff59;border-radius:12px;display:flex;gap:.8rem;justify-content:space-between;margin-bottom:.8rem;padding:.75rem .95rem}.download-latest-title{color:#eaf4ff;font-size:.92rem;font-weight:700;letter-spacing:.01em}.download-latest-actions .btn{min-width:130px;width:auto}.dashboard-hero{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:1rem}.dash-stat-card{background:linear-gradient(180deg,#1b2d44e6,#111f2fe0);border:1px solid #9eb2ca33;border-radius:12px;padding:.8rem .95rem}.dash-stat-label{color:#9ab2cd;font-size:.76rem;letter-spacing:.06em;text-transform:uppercase}.dash-stat-value{color:#eaf4ff;font-size:1.55rem;font-weight:800;margin-top:.35rem}.dash-socket-state{border-radius:999px;display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.08em;margin-top:.3rem;padding:3px 9px;text-transform:uppercase}.dash-socket-state.online{animation:pulseOnline 1.6s ease infinite;background:#38d39f29;border:1px solid #38d39f57;color:#b4ffeb}.dash-socket-state.connecting{background:#ffbf6926;border:1px solid #ffbf6957;color:#ffe7bf}.dash-socket-state.offline{background:#ff6e7d26;border:1px solid #ff6e7d57;color:#ffd5dc}.presence-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}.presence-card{background:linear-gradient(180deg,#1b2d44f2,#162437e6);border:1px solid #9eb2ca2e;border-radius:12px;padding:.85rem}.presence-card h3{color:#d9e8fb;font-size:.9rem;margin-bottom:.7rem}.presence-empty{color:#98acc6;font-size:.82rem}.presence-list{display:flex;flex-direction:column;gap:.5rem;list-style:none}.presence-list li{background:#ffffff05;border:1px solid #9eb2ca29;border-radius:9px;padding:.45rem .6rem}.presence-line{color:#dce8f8;display:flex;gap:.6rem;justify-content:space-between}.presence-line.small{color:#96abc4;font-size:.74rem;margin-top:2px}.presence-user{font-weight:700}.presence-user-admin{color:#ff8a96}.presence-meta{color:#8fd9ff;font-size:.74rem}.presence-names-row{color:#dce8f8;font-size:.86rem;line-height:1.45;word-break:break-word}.presence-sep{color:#96abc4}.presence-name-wrap{display:inline-block;position:relative}.presence-tooltip{background:#1b2d44;background:var(--panel-2);border:1px solid #2a3d57;border:1px solid var(--border);border-radius:8px;bottom:calc(100% + 6px);box-shadow:0 4px 16px #0006;color:#9eb2ca;color:var(--muted);display:none;flex-direction:column;font-size:.75rem;gap:.2rem;left:50%;padding:.45rem .7rem;pointer-events:none;position:absolute;transform:translateX(-50%);white-space:nowrap;z-index:100}.presence-name-wrap:hover .presence-tooltip{display:flex}.presence-tooltip:after{border:5px solid #0000;border-top:5px solid var(--border);content:"";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.dashboard-header{align-items:center;display:flex;flex-wrap:wrap;gap:.85rem;justify-content:space-between;margin-bottom:1rem}.dashboard-title{color:#eaf3ff;font-size:1.85rem;font-weight:800;letter-spacing:.01em}.dashboard-controls{display:flex;flex-wrap:wrap;gap:.75rem}.admin-tabs{display:flex;gap:.55rem;margin:0 0 1rem}.admin-tab{background:#ffffff08;border:1px solid #9eb2ca47;border-radius:999px;color:#d9e8fb;cursor:pointer;font-size:.82rem;font-weight:700;letter-spacing:.03em;padding:8px 14px;transition:all .16s ease}.admin-tab:hover{background:#38a3ff24;border-color:#38a3ffa6}.admin-tab.active{background:linear-gradient(135deg,#2dc5c0,#38a3ff);border-color:#0000;color:#071623}.admin-invite-form{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:2fr 1fr 1fr auto}.admin-updater-form{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1.1fr 1.3fr 1.4fr 1.2fr auto}.admin-row-actions{align-items:center;display:inline-flex;flex-wrap:wrap;gap:.45rem}.search-box{display:flex;gap:.5rem}.search-box input{width:260px}.table-container{background:linear-gradient(180deg,#1b2d44f2,#162437f2);border:1px solid #9eb2ca2b;border-radius:14px;box-shadow:0 18px 48px #00000059;box-shadow:var(--shadow);overflow:hidden}table{border-collapse:collapse;width:100%}table thead{background:linear-gradient(90deg,#38a3ff33,#2dc5c024);border-bottom:1px solid #9eb2ca42}table th{color:#daebff;font-size:.8rem;font-weight:700;letter-spacing:.04em;padding:12px;text-align:left;text-transform:uppercase}table td{border-bottom:1px solid #9eb2ca1a;color:#dce8f8;font-size:.86rem;padding:12px}table tbody tr{transition:background .15s ease}table tbody tr:hover{background:#38a3ff14}.status-ok{color:#38d39f;color:var(--success);font-weight:700}.status-missing{color:#ff6e7d;color:var(--danger);font-weight:700}.status-ambig{color:#ffbf69;color:var(--warning);font-weight:700}.status-relocated{color:#7af3d0;font-weight:700}.status-unknown{color:#9eb2ca;color:var(--muted)}.addr-link{color:#8fd9ff;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-decoration:none}.addr-link:hover{text-decoration:underline}.sig-cell{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sig-cell-clickable{cursor:pointer}.sig-cell-clickable:hover{background:#2dc5c01f}.sig-details-grid{grid-gap:8px 12px;display:grid;gap:8px 12px;grid-template-columns:180px 1fr;margin-bottom:1rem}.sig-details-label{color:#d5e7ff;font-weight:700}.sig-details-block{margin-top:1rem}.sig-details-pre{background:#0c1521e6;border:1px solid #9eb2ca40;border-radius:10px;color:#d9e9ff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;margin:.5rem 0 0;padding:10px;white-space:pre-wrap;word-break:break-word}.sig-details-note{background:#2dc5c01c;border:1px solid #2dc5c04d;border-radius:10px;color:#baf5f2;font-size:.82rem;margin-top:1rem;padding:10px}.modal-divider{border-top:1px solid #9eb2ca38;margin:1rem 0;padding:1rem 0}.form-group small{color:#9eb2ca;color:var(--muted);display:inline-block;font-size:.76rem;margin-top:.4rem}.action-buttons{display:flex;flex-wrap:wrap;gap:.45rem}.action-buttons .btn{width:auto}.modal-overlay{align-items:center;animation:fadeIn .16s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#080e16b8;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:linear-gradient(180deg,#1a2b40,#162437);border:1px solid #9eb2ca38;border-radius:14px;box-shadow:0 18px 48px #00000059;box-shadow:var(--shadow);max-height:90vh;max-width:660px;overflow-y:auto;padding:1.4rem;width:92%}.modal-header{align-items:center;border-bottom:1px solid #9eb2ca38;display:flex;justify-content:space-between;margin-bottom:1.1rem;padding-bottom:.7rem}.modal-title{color:#eaf4ff;font-size:1.35rem;font-weight:800}.close-btn{background:#0000;border:1px solid #9eb2ca40;border-radius:8px;color:#d5e7ff;cursor:pointer;font-size:1.05rem;height:30px;width:30px}.close-btn:hover{background:#ffffff0f}.pagination{align-items:center;display:flex;flex-wrap:wrap;gap:.45rem;justify-content:center;margin-top:1.2rem;padding:.8rem}.pagination button,.pagination span{background:#ffffff08;border:1px solid #9eb2ca3d;border-radius:9px;color:#d5e7ff;cursor:pointer;font-size:.82rem;padding:8px 12px}.pagination button:hover{background:#38a3ff24}.pagination button.active{background:#38a3ff42;border-color:#38a3ffbf;color:#fff}.pagination button:disabled{cursor:not-allowed;opacity:.5}@keyframes pageFade{0%{opacity:0}to{opacity:1}}@keyframes riseIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes floatIn{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulseOnline{0%{box-shadow:0 0 0 0 #38d39f3d}70%{box-shadow:0 0 0 8px #38d39f00}to{box-shadow:0 0 0 0 #38d39f00}}@media (max-width:768px){.nav{align-items:flex-start;flex-direction:column;gap:.75rem}.nav-info{flex-wrap:wrap;gap:.75rem;width:100%}.container{padding:1rem}.dashboard{flex-direction:column}.dashboard-hero,.presence-grid{grid-template-columns:1fr}.download-latest-bar{align-items:stretch;flex-direction:column}.download-latest-actions .btn{width:100%}.dashboard-controls,.search-box{flex-direction:column;width:100%}.admin-tabs{flex-wrap:wrap;width:100%}.admin-tab{flex:1 1;min-width:120px}.admin-invite-form,.admin-updater-form{grid-template-columns:1fr}.search-box input,.search-box select{width:100%}table{font-size:.75rem}table td,table th{padding:8px}.sig-cell{max-width:115px}.sig-details-grid{grid-template-columns:1fr}}
/*# sourceMappingURL=main.681c1683.css.map*/