:root{--green: #075e54;--light: #25d366;--bg: #e5ddd5;--mine: #dcf8c6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Roboto,sans-serif;background:#f0f0f0;color:#111}button{font:inherit;cursor:pointer}input{font:inherit}.center{display:grid;place-items:center;height:100%;color:#666}.err{color:#c62828;margin:6px 12px;font-size:14px}.link{background:none;border:0;color:var(--green);text-decoration:underline}.login{max-width:420px;margin:0 auto;padding:24px 20px;min-height:100%;background:#fff}.login h1{color:var(--green);text-align:center}.login label{display:block;margin:14px 0 6px;font-size:14px;color:#444}.login input{width:100%;padding:12px;border:1px solid #ccc;border-radius:8px;font-size:18px}.login input.code{text-align:center;letter-spacing:8px;font-size:28px}.login button:not(.link){width:100%;margin-top:16px;padding:14px;border:0;border-radius:8px;background:var(--green);color:#fff;font-size:16px}.login button:disabled{opacity:.5}.login .qr{display:block;margin:12px auto;width:240px;border:1px solid #ddd;border-radius:8px}.login .secret{text-align:center;font-family:monospace;font-size:15px;word-break:break-all;background:#f5f5f5;padding:8px;border-radius:6px;user-select:all}.screen{display:flex;flex-direction:column;height:100%;background:#fff}header{display:flex;align-items:center;gap:10px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));background:var(--green);color:#fff}header .title{font-size:20px;font-weight:600;flex:1}header .me{font-size:14px;opacity:.9}header .info{flex:1}header .prev{color:#d4eee9}.icon{background:none;border:0;color:inherit;font-size:22px;padding:4px 8px}.bar{display:flex;gap:8px;padding:8px;background:#f5f5f5}.bar input{flex:1;padding:8px;border:1px solid #ccc;border-radius:6px}.bar button{border:0;background:var(--green);color:#fff;border-radius:6px;padding:0 14px}.tip{background:#fff8e1;color:#6d4c00;font-size:13px;padding:8px 12px;border-bottom:1px solid #ffe082;cursor:pointer}.list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1}.list li{display:flex;align-items:center;gap:12px;padding:12px;border-bottom:1px solid #eee;cursor:pointer}.list li.unread .name,.list li.unread .prev{font-weight:700;color:#000}.list .empty{color:#888;justify-content:center}.avatar{width:44px;height:44px;border-radius:50%;background:var(--light);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:600;flex-shrink:0}.info{flex:1;min-width:0}.name{font-weight:500}.prev{font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list .time{font-size:12px;color:#888}.msgs{flex:1;overflow-y:auto;padding:12px;background:var(--bg);display:flex;flex-direction:column;gap:6px}.bubble{max-width:80%;align-self:flex-start;background:#fff;border-radius:10px;padding:8px 10px;box-shadow:0 1px 1px #0000001a;display:flex;flex-direction:column}.bubble.mine{align-self:flex-end;background:var(--mine)}.bubble .body{white-space:pre-wrap;word-break:break-word}.bubble .time{font-size:11px;color:#777;align-self:flex-end;margin-top:2px}.bubble audio{max-width:100%;width:240px}.bubble a{color:var(--green);word-break:break-all}.composer{display:flex;align-items:center;gap:6px;padding:8px;padding-bottom:max(8px,env(safe-area-inset-bottom));background:#f0f0f0}.composer input[type=text],.composer input:not([type]){flex:1;padding:12px 14px;border:0;border-radius:22px;font-size:16px}.send{width:46px;height:46px;border-radius:50%;border:0;background:var(--green);color:#fff;font-size:20px;flex-shrink:0}.send.recording{background:#c62828;animation:pulse 1s infinite}.rectimer{flex:1;color:#c62828;font-size:14px;padding:12px}@keyframes pulse{50%{opacity:.6}}
