:root{--text:#4b5563;--text-h:#111827;--bg:#fff;--surface:#f9fafb;--border:#e5e7eb;--accent:#3797f0;--accent-text:#fff;--danger:#dc2626;--error-bg:#fef2f2;--ig-gradient:linear-gradient(135deg, #4f5bd5 0%, #962fbf 50%, #fa7e1e 100%);--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--radius-sm:8px;--radius-md:10px;--radius-lg:12px;--radius-pill:999px;--shadow-sm:0 1px 3px #0003;--shadow-md:0 6px 16px #00000029;--shadow-lg:0 8px 24px #00000059;--ease-standard:cubic-bezier(.2, 0, 0, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:16px/1.5 system-ui,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#d1d5db;--text-h:#f9fafb;--bg:#000;--surface:#1c1c1e;--border:#2c2c2e;--accent:#4dabf7;--accent-text:#fff;--danger:#f87171;--error-bg:#3f1d1d;--shadow-sm:0 1px 3px #00000080;--shadow-md:0 6px 16px #00000073;--shadow-lg:0 8px 24px #0009}}@keyframes screen-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes bubble-in{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@keyframes badge-pop{0%{transform:scale(.5)}to{transform:scale(1)}}@keyframes shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}@keyframes spin{to{transform:rotate(360deg)}}.screen{animation:screen-enter .22s var(--ease-standard) both}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box}body{margin:0}#root{flex-direction:column;min-height:100svh;display:flex}h1,h2{color:var(--text-h);margin:0 0 12px;font-weight:600}h1{font-size:1.5rem}h2{margin-top:24px;font-size:1.1rem}.screen{width:100%;max-width:480px;padding:calc(24px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));flex-direction:column;flex:1;margin:0 auto;display:flex}.sticky-top{top:env(safe-area-inset-top);z-index:5;background:var(--bg);margin-bottom:4px;padding-bottom:12px;position:sticky}.search-bar-wrap{margin-top:8px}.search-input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text-h);border-radius:10px;padding:10px 14px;font-size:1rem}.search-input:focus{outline:2px solid var(--accent);outline-offset:1px}form{flex-direction:column;gap:16px;display:flex}label{color:var(--text);flex-direction:column;gap:6px;font-size:.9rem;display:flex}input{border:1px solid var(--border);background:var(--surface);color:var(--text-h);border-radius:10px;padding:12px 14px;font-size:1rem}input:focus{outline:2px solid var(--accent);outline-offset:1px}button:focus-visible,input:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{cursor:pointer;transition:transform .1s var(--ease-standard), filter .15s ease, background-color .15s ease, opacity .15s ease;border:none;border-radius:10px;padding:14px 16px;font-size:1rem;font-weight:600}button:active:not(:disabled){transform:scale(.97)}button.primary{background:var(--ig-gradient);color:#fff}button.primary:hover:not(:disabled){filter:brightness(1.06)}button.secondary{background:var(--surface);color:var(--text-h);border:1px solid var(--border);margin-top:24px}button.secondary:hover:not(:disabled){background:var(--border)}button.danger{color:var(--danger);border:1px solid var(--danger);background:0 0;padding:8px 12px;font-size:.85rem}button.danger:hover:not(:disabled){background:var(--error-bg)}button.danger-solid{background:var(--danger);color:#fff}button.danger-solid:hover:not(:disabled){filter:brightness(1.1)}button:disabled{opacity:.6;cursor:not-allowed}.hint{margin-top:16px;font-size:.9rem}.hint a{color:var(--accent)}.error{background:var(--error-bg);color:var(--danger);border-radius:8px;margin:0;padding:10px 12px;font-size:.9rem}.account-id{letter-spacing:2px;text-align:center;background:var(--surface);color:var(--text-h);background-image:linear-gradient(var(--surface), var(--surface)), var(--ig-gradient);background-origin:border-box;background-clip:padding-box,border-box;border:1px solid #0000;border-radius:12px;margin:16px 0 24px;padding:20px;font-size:2rem;font-weight:700}.device-list{flex-direction:column;gap:10px;margin:0 0 16px;padding:0;list-style:none;display:flex}.device-list li{background:var(--surface);border:1px solid var(--border);color:var(--text-h);border-radius:10px;justify-content:space-between;align-items:center;padding:12px 14px;font-size:.9rem;display:flex}.device-list small{color:var(--text)}.chat-screen{height:100svh;padding-left:0;padding-right:0}.chat-header{align-items:center;gap:12px;padding:0 20px;display:flex}.chat-header h1{flex:1;margin:0;font-size:1.1rem}.link-back{color:var(--text-h);background:0 0;border:none;padding:4px 8px;font-size:1.3rem}.app-header{align-items:center;gap:12px;margin-bottom:20px;display:flex}.app-header h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;overflow:hidden}.app-header-actions{flex-shrink:0;gap:8px;display:flex}.icon-button{background:var(--surface);border:1px solid var(--border);color:var(--text-h);border-radius:999px;padding:8px 14px;font-size:.9rem;line-height:1}.icon-button-round{padding:8px 12px;font-size:1.1rem;font-weight:700}.contact-menu-wrap{position:relative}.contact-menu-trigger{padding:6px 10px;font-size:1.1rem;line-height:1}.contact-menu{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-width:130px;box-shadow:var(--shadow-md);transform-origin:100% 0;animation:pop-in .12s var(--ease-standard) both;flex-direction:column;display:flex;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden}.contact-menu-item{text-align:left;background:0 0;border:none;border-radius:0;padding:10px 14px;font-size:.9rem;font-weight:500}.contact-menu-item:hover{background:var(--error-bg)}.contact-menu-item.danger{border:none;border-radius:0;padding:10px 14px;font-size:.9rem}.badge-holder{position:relative}.badge-count{background:var(--danger);color:#fff;text-align:center;min-width:18px;height:18px;animation:badge-pop .2s var(--ease-standard) both;border-radius:999px;padding:0 4px;font-size:.7rem;font-weight:700;line-height:18px;position:absolute;top:-6px;right:-6px}.avatar{color:#fff;letter-spacing:.5px;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.avatar-ring{background:var(--ig-gradient);border-radius:50%;flex-shrink:0;padding:3px}.avatar-ring .avatar{border:2px solid var(--surface)}.profile-summary{background:var(--surface);border:1px solid var(--border);color:var(--text-h);border-radius:12px;align-items:center;gap:14px;margin-bottom:8px;padding:16px;display:flex}.contact-row{align-items:center;gap:10px;display:flex}.empty-state{text-align:center;color:var(--text);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:0 20px;display:flex}.chat-list-screen{padding-left:0;padding-right:0}.chat-list-screen .app-header{padding:0 20px}.chat-list-screen .search-bar-wrap{padding:12px 20px 0}.search-empty-hint{padding:0 20px}.chat-list-screen .app-header h1{background:var(--ig-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}.chat-list{flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.chat-list li{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 20px;transition:background-color .12s;display:flex}.chat-list li:hover{background:var(--surface)}.chat-list li:active{background:var(--border)}.unread-badge{animation:badge-pop .2s var(--ease-standard) both}.chat-list-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.chat-list-name{color:var(--text-h);font-weight:600}.chat-list-name.unread{font-weight:800}.chat-list-preview{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.chat-list-preview.unread{color:var(--text-h);font-weight:600}.chat-avatar-wrap{flex-shrink:0;display:flex;position:relative}.unread-badge{color:#fff;text-align:center;border:2px solid var(--bg);background:#22c55e;border-radius:999px;min-width:18px;height:18px;padding:0 4px;font-size:.7rem;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-4px}.chat-list-time{color:var(--text);flex-shrink:0;font-size:.75rem}.contact-list li{padding-right:12px}.contact-list-static li{cursor:default}.contact-list-static li:active{background:0 0}.contact-row-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.contact-action-button{width:38px;min-width:0;height:38px;color:var(--text);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background-color .15s;display:flex}.contact-action-button:hover{background:var(--surface);color:var(--text-h)}.message-list{flex-direction:column;flex:1;gap:8px;padding:16px 20px;display:flex;overflow-y:auto}.bubble{word-break:break-word;max-width:75%;animation:bubble-in .18s var(--ease-standard) both;border-radius:16px;flex-direction:column;gap:2px;padding:10px 30px 10px 14px;font-size:.95rem;display:flex;position:relative}.bubble-delete{color:inherit;opacity:.55;background:0 0;border:none;padding:4px 6px;font-size:1rem;line-height:1;position:absolute;top:2px;right:4px}.bubble-delete:hover{opacity:1}.bubble.out{background:var(--ig-gradient);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.bubble.in{background:var(--surface);color:var(--text-h);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start}.bubble-time{opacity:.7;align-self:flex-end;align-items:center;gap:3px;font-size:.7rem;display:inline-flex}.bubble-ticks{letter-spacing:-1px;font-size:.75rem}.bubble-ticks.read{color:#34d3ff;opacity:1}.chat-empty-hint{text-align:center;margin-top:40px}.chat-input{padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border);gap:8px;display:flex}.chat-input input{flex:1}.chat-input button{padding:12px 20px}.call-screen{color:#f9fafb;background:#0b0b0f;height:100dvh;padding-left:0;padding-right:0;position:relative;overflow:hidden}.call-top-bar{z-index:25;padding-top:env(safe-area-inset-top);background:linear-gradient(#000000a6 0%,#00000059 60%,#0000 100%);position:absolute;top:0;left:0;right:0}.call-status-wrap{text-align:center;padding:20px 20px 4px}.call-status{font-size:1.2rem;font-weight:500}.call-duration{font-variant-numeric:tabular-nums;color:#f9fafba6;margin-top:4px;font-size:.9rem}.video-area{position:absolute;inset:0}.remote-video{object-fit:cover;background:#1f2937;width:100%;height:100%}.local-video{object-fit:cover;background:#374151;border:2px solid #fff6;border-radius:12px;width:30%;max-width:140px;position:absolute;bottom:16px;right:16px}.call-controls{justify-content:center;align-items:center;gap:28px;padding:16px 20px 24px;display:flex}.remote-video-placeholder{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.in-call-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.call-icon-button{color:#f9fafb;background:#ffffff1f;border:none;border-radius:50%;justify-content:center;align-items:center;width:52px;min-width:0;height:52px;padding:0;transition:background-color .15s,transform .1s;display:flex;box-shadow:0 1px 3px #00000040}.call-icon-button:hover{background:#fff3}.call-icon-button:active{transform:scale(.94)}.call-icon-button-off{color:#0b0b0f;background:#f9fafb}.call-icon-button-off:hover{background:#e5e7eb}.call-icon-button-end{background:var(--danger);color:#fff;width:62px;height:62px;margin-left:6px;box-shadow:0 2px 8px #dc262673}.call-icon-button-end:hover{background:var(--danger);filter:brightness(1.1)}.call-controls>.call-icon-button-end,.call-controls>.call-icon-button-accept{width:68px;height:68px}.call-icon-button-accept{color:#fff;background:#22c55e;box-shadow:0 2px 8px #22c55e73}.call-icon-button-accept:hover{filter:brightness(1.1);background:#22c55e}.call-icon-button-static{cursor:default;opacity:.55}.call-icon-button-static:hover{background:#ffffff1f}.audio-output-wrap{position:relative}.audio-output-menu{z-index:20;background:#1c1c22;border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;min-width:180px;max-width:260px;padding:4px;display:flex;position:absolute;top:calc(100% + 10px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 8px 24px #0006}.audio-output-item{text-align:left;color:#f9fafb;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:.9rem;display:flex}.audio-output-item:hover{background:#ffffff14}.audio-output-item.selected{font-weight:600}.audio-output-check{color:#22c55e}.call-icon-button-inline,.chat-header .call-icon-button,.app-header .call-icon-button{background:var(--surface);width:auto;height:auto;color:var(--text-h);border:1px solid var(--border);border-radius:999px;padding:8px 10px}.quality-grid{grid-template-columns:1fr auto auto;align-items:center;gap:10px 12px;margin-bottom:24px;display:grid}.quality-col-label{color:var(--text);text-align:center;font-size:.8rem}.quality-row-label{color:var(--text-h);font-size:.9rem;font-weight:600}.quality-toggle{gap:4px;display:flex}.quality-toggle button{min-width:0;padding:6px 12px;font-size:.8rem}.admin-screen{max-width:960px}.admin-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-header .hint{margin-right:12px}.admin-tabs{flex-wrap:wrap;gap:8px;margin:16px 0;display:flex}.admin-tabs button{padding:8px 14px;font-size:.85rem}.admin-table-controls{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.admin-table-controls input[type=search]{flex:1;min-width:200px}.admin-table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.85rem;display:block;overflow-x:auto}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);color:var(--text-h);padding:10px 8px}.admin-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.admin-table th.sortable:hover{color:var(--accent,inherit)}.admin-table tr.clickable{cursor:pointer}.admin-table tr.clickable:hover{background:var(--surface)}.admin-stats{flex-wrap:wrap;gap:12px;display:flex}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;gap:4px;min-width:140px;padding:16px;display:flex}.stat-tile strong{color:var(--text-h);font-size:1.6rem}.admin-password-form{max-width:360px}.badge-blocked,.badge-ok{border-radius:999px;padding:3px 8px;font-size:.75rem;font-weight:600}.badge-blocked{background:var(--error-bg);color:var(--danger)}.badge-ok{background:var(--surface);color:var(--text);border:1px solid var(--border)}.admin-raw{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;font-size:.8rem;overflow-x:auto}.call-ended{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;padding:20px;display:flex}.skeleton-row{cursor:default}.skeleton-row:hover,.skeleton-row:active{background:0 0}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--surface) 25%, var(--border) 50%, var(--surface) 75%);background-size:400% 100%;animation:1.4s infinite shimmer;display:block}.skeleton-avatar{border-radius:50%;flex-shrink:0;width:44px;height:44px}.skeleton-line{height:11px}.skeleton-line-name{width:40%;margin-bottom:8px}.skeleton-line-preview{width:68%}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.7s linear infinite spin}.loading-row{color:var(--text);align-items:center;gap:10px;display:flex}.confirm-overlay{z-index:100;animation:pop-in .15s var(--ease-standard) both;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:360px;box-shadow:var(--shadow-lg);padding:var(--space-xl) var(--space-lg) var(--space-lg);transform-origin:50%;animation:pop-in .18s var(--ease-standard) both}.confirm-dialog h2{margin-top:0}.confirm-dialog p{color:var(--text);margin:0}.confirm-dialog-actions{margin-top:var(--space-xl);justify-content:flex-end;gap:10px;display:flex}.confirm-dialog-actions button{margin-top:0;padding:10px 18px}
