:root{--text:#65748a;--text-h:#101827;--bg:#eef3f8;--border:#d7e0eb;--shadow:#0f172a1f 0 20px 50px -28px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,Segoe UI,Roboto,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);overscroll-behavior:none;min-height:100vh;margin:0}#root{min-height:100vh}h1,h2,h3,p{margin:0}.auth-shell,.app-shell{min-height:100dvh}.auth-shell{background:radial-gradient(circle at 18% 12%,#3b82f621,#0000 28%),radial-gradient(circle at 82% 18%,#14b8a61f,#0000 24%),#eef3f8;place-items:center;padding:24px;display:grid}.auth-panel{background:#ffffffeb;border:1px solid #94a3b847;border-radius:8px;gap:18px;width:min(100%,390px);padding:26px;display:grid;box-shadow:0 24px 70px -36px #0f172a21}.auth-panel h1,.panel-header h1{color:var(--text-h);font-size:1.35rem;font-weight:800}.mode-tabs{border:1px solid var(--border);background:#edf2f7;border-radius:8px;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.tab{min-height:38px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:6px;font-weight:800}.tab.active{color:var(--text-h);background:#fff;box-shadow:0 2px 8px #0f172a14}.app-shell{background:#eef3f8;grid-template-columns:340px minmax(0,1fr);display:grid}.conversation-panel{background:#f8fafceb;border-right:1px solid #94a3b847;grid-template-rows:auto auto minmax(0,1fr);min-height:100dvh;display:grid}.panel-header,.chat-header{border-bottom:1px solid #94a3b83d;justify-content:space-between;align-items:center;gap:14px;min-height:82px;padding:16px;display:flex}.panel-header p,.panel-header small,.chat-header p,.status-text,.empty-state,.conversation small{color:var(--text);font-size:.9rem}.panel-header small{overflow-wrap:anywhere;margin-top:2px;display:block}.chat-header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffe6}.chat-header h2{color:var(--text-h);font-size:1.15rem;font-weight:800}.chat-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.add-friend-form{border-bottom:1px solid #94a3b83d;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px;display:grid}.conversation-list{padding:10px;overflow:auto}.conversation{width:100%;min-height:68px;color:var(--text-h);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;padding:11px;display:grid}.conversation:hover,.conversation.active{background:#fff;border-color:#3b82f62e;box-shadow:0 10px 30px -24px #0f172a14}.conversation strong,.conversation small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.avatar{color:#1d4ed8;background:linear-gradient(145deg,#dbeafe,#ccfbf1);border-radius:50%;place-items:center;width:44px;height:44px;font-weight:900;display:grid}.chat-panel{background:linear-gradient(#ffffffc7,#ffffffc7),repeating-linear-gradient(135deg,#94a3b81f 0 1px,#0000 1px 18px);flex-direction:column;min-height:100dvh;display:flex}.message-list{flex-direction:column;flex:1;gap:9px;min-height:0;padding:22px;display:flex;overflow:auto}.bubble{max-width:min(72%,680px);color:var(--text-h);background:#fff;border-radius:8px;padding:11px 13px;box-shadow:0 10px 24px -20px #0f172a14}.bubble.mine{color:#fff;background:#2563eb;align-self:flex-end}.bubble p{overflow-wrap:anywhere;margin:0 0 4px}.bubble span{color:#647184e6;font-size:.75rem;display:block}.bubble.mine span{color:#ffffffb8}.call-event,.call-notice{max-width:min(88%,390px);color:var(--text-h);text-align:center;background:#ffffffd6;border:1px solid #94a3b842;border-radius:8px;align-self:center;gap:3px;padding:8px 12px;display:grid;box-shadow:0 12px 30px -24px #0f172a14}.call-event.mine{background:#eff6ff;border-color:#2563eb2e}.call-event strong,.call-notice strong{font-size:.9rem}.call-event span,.call-notice span{color:var(--text);font-size:.76rem}.composer{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f8fafcf0;border-top:1px solid #94a3b83d;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;padding:12px;display:grid}label{color:var(--text-h);gap:8px;font-weight:700;display:grid}input,textarea{width:100%;color:var(--text-h);font:inherit;background:#fff;border:1px solid #94a3b86b;border-radius:8px;outline:none;padding:10px 12px}input:focus,textarea:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb29}textarea{resize:vertical;min-height:46px;max-height:140px}button{font:inherit}.primary-btn,.secondary-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;min-height:42px;padding:0 15px;font-weight:800;transition:transform .12s,box-shadow .12s,background .12s}.primary-btn:hover,.secondary-btn:hover,.accept-call-btn:hover,.end-call-btn:hover{transform:translateY(-1px)}.primary-btn{color:#fff;background:#2563eb;box-shadow:0 12px 28px -18px #2563eb42}.secondary-btn{color:var(--text-h);background:#fff;border-color:#94a3b861}.secondary-btn.danger{color:#b91c1c;border-color:#ef444447}.primary-btn:disabled,.secondary-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.empty-state{text-align:center;padding:18px}.call-screen{z-index:50;color:#fff;background:#07111f;grid-template-rows:minmax(0,1fr) auto;min-height:100dvh;display:grid;position:fixed;inset:0}.call-stage{background:radial-gradient(circle at 50% 22%,#2563eb47,#0000 32%),#020617;min-height:0;position:relative;overflow:hidden}.remote-call-video{object-fit:contain;background:#020617;width:100%;height:100%;min-height:100%;display:block}.call-placeholder{text-align:center;align-content:center;place-items:center;gap:16px;height:100%;min-height:360px;padding:24px;display:grid}.call-placeholder strong{font-size:clamp(1.5rem,5vw,2.6rem)}.call-avatar{color:#1d4ed8;background:linear-gradient(145deg,#dbeafe,#99f6e4);border-radius:50%;place-items:center;width:clamp(108px,28vw,164px);height:clamp(108px,28vw,164px);font-size:clamp(2.6rem,10vw,4.4rem);font-weight:900;display:grid;box-shadow:0 24px 70px -26px #2563eb42}.self-preview{right:max(16px, env(safe-area-inset-right));aspect-ratio:9/13;background:#111827;border:2px solid #ffffffc7;border-radius:8px;width:min(32vw,178px);position:absolute;bottom:16px;overflow:hidden;box-shadow:0 18px 38px #00000059}.self-preview video{object-fit:cover;width:100%;height:100%;display:block}.self-preview span{color:#fff;background:#020617b8;border-radius:6px;padding:3px 7px;font-size:.72rem;font-weight:800;position:absolute;bottom:8px;left:8px}.call-controls{padding:18px max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));background:#0f172af7;justify-content:space-between;align-items:center;gap:18px;display:flex;box-shadow:0 -18px 42px #00000047}.call-controls p,.call-controls h2,.call-controls span{margin:0}.call-controls p,.call-controls span{color:#cbd5e1;font-size:.9rem}.call-controls h2{margin:3px 0;font-size:1.25rem}.call-buttons{gap:10px;display:flex}.accept-call-btn,.end-call-btn{color:#fff;cursor:pointer;border:0;border-radius:8px;min-width:104px;min-height:48px;font-weight:900;transition:transform .12s,box-shadow .12s}.accept-call-btn{background:#16a34a;box-shadow:0 14px 34px -16px #16a34a47}.end-call-btn{background:#dc2626;box-shadow:0 14px 34px -16px #dc262647}.accept-call-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}@media (width<=920px){.app-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.conversation-panel{border-bottom:1px solid #94a3b83d;border-right:none;min-height:auto}.panel-header{min-height:74px}.conversation-list{gap:8px;padding:8px 12px 12px;display:flex;overflow-x:auto}.conversation{background:#ffffff9e;flex:0 0 230px;width:230px}.chat-panel{min-height:calc(100dvh - 210px)}.bubble{max-width:84%}}@media (width<=640px){.auth-shell{padding:12px}.auth-panel{padding:20px}.panel-header,.chat-header{flex-direction:column;align-items:flex-start}.panel-header{gap:10px}.chat-header{min-height:auto;padding:14px}.chat-actions,.chat-actions .secondary-btn{width:100%}.chat-actions{grid-template-columns:1fr 1fr;display:grid}.chat-actions .danger{grid-column:1/-1}.add-friend-form,.composer{grid-template-columns:1fr}.message-list{padding:14px}.bubble{max-width:90%}.call-controls{flex-direction:column;align-items:stretch;padding-top:14px}.call-buttons{grid-template-columns:1fr 1fr;display:grid}.call-buttons .end-call-btn:only-child{grid-column:1/-1}.self-preview{width:112px}}
