:root{--bg: #f0f2f5;--surface: #ffffff;--surface-2: #f3f4f6;--border: #e5e7eb;--accent: #1a73e8;--accent-ink: #ffffff;--ok: #16a34a;--warn: #d97706;--danger: #dc2626;--text: #111827;--muted: #4b5563;--radius: 10px;--radius-full: 999px;--qr-quiet-zone: #ffffff;--font-sans: "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "Consolas", "SF Mono", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:16px;overflow-x:hidden}button{font-family:inherit}svg{display:block}.header{position:fixed;top:0;left:0;right:0;padding:14px 24px;display:flex;align-items:center;gap:10px;background:var(--surface);box-shadow:0 1px 3px #00000014;z-index:100}.wordmark{font-family:var(--font-sans);font-weight:700;font-size:1.25rem;letter-spacing:-.01em;color:var(--text);text-decoration:none}.wordmark span{color:var(--accent)}.status-pill{margin-left:auto;font-size:.72rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);padding:4px 12px;display:flex;align-items:center;gap:6px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex-shrink:0}.status-dot.danger{background:var(--danger)}.app{width:100%;max-width:720px;margin:0 auto;padding-top:60px}.screen{display:flex;animation:rise .2s ease both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.screen{animation:none}.qr-placeholder{animation:none;background:var(--surface-2)}.spinner{animation:none}}#screen-connect{flex-direction:column;align-items:center;gap:12px;max-width:420px;margin:0 auto;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 24px;display:flex;flex-direction:column;align-items:center;gap:16px}.card-label{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}#host-card .card-label{color:var(--accent)}.qr-caption{font-size:.74rem;color:var(--muted);text-align:center}.qr-wrap{position:relative;width:200px;height:200px;background:var(--qr-quiet-zone);border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center}.qr-wrap img{width:100%;height:100%;object-fit:contain}.qr-placeholder{width:100%;height:100%;background:linear-gradient(100deg,var(--surface-2) 30%,var(--border) 50%,var(--surface-2) 70%);background-size:220% 100%;animation:shimmer 1.4s infinite linear}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-20% 0}}.code-badge{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 16px;font-family:var(--font-mono);font-size:1.5rem;font-weight:700;letter-spacing:.22em;color:var(--accent)}.icon-btn{background:none;border:none;cursor:pointer;color:var(--muted);display:flex;align-items:center;justify-content:center;padding:8px;margin:-8px;min-width:40px;min-height:40px;transition:color .15s}.icon-btn:hover{color:var(--accent)}.share-link{display:flex;align-items:center;gap:6px;width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);padding:8px 14px}.share-link input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--muted);font-family:var(--font-sans);font-size:.76rem}.join-card{justify-content:center}.input-group{display:flex;flex-direction:column;gap:8px;width:100%}.input-group label{font-size:.8rem;color:var(--muted)}.code-input{background:var(--surface-2);border:1.5px solid var(--border);border-radius:var(--radius);padding:14px 16px;font-size:1.9rem;font-family:var(--font-mono);font-weight:700;letter-spacing:.3em;color:var(--text);width:100%;text-align:center;outline:none;transition:border-color .15s}.code-input:focus{border-color:var(--accent)}.code-input::placeholder{color:var(--muted);letter-spacing:.1em}.btn{width:100%;padding:12px;border:1px solid transparent;border-radius:var(--radius);font-size:.92rem;font-weight:600;cursor:pointer;transition:filter .15s,transform .1s}.btn:hover{filter:brightness(1.05)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-ghost{background:var(--surface-2);border-color:var(--border);color:var(--text)}.status-msg{font-size:.8rem;color:var(--muted);text-align:center;min-height:18px}.status-msg.error{color:var(--danger)}#screen-chat{position:relative;flex-direction:column;height:calc(100vh - 76px);max-height:800px;gap:0;width:100%;border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 4px #00000014}.chat-header{display:flex;align-items:center;gap:12px;padding:14px 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.peer-dot{width:10px;height:10px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #16a34a26;flex-shrink:0}.peer-dot.muted{background:var(--border);box-shadow:none}.peer-name{font-weight:600;font-size:.9rem;color:var(--text)}.peer-sub{font-size:.74rem;color:var(--muted)}.disconnect-btn{margin-left:auto;background:none;border:1px solid var(--border);border-radius:var(--radius-full);padding:6px 14px;font-size:.76rem;color:var(--muted);cursor:pointer;transition:border-color .15s,color .15s}.disconnect-btn:hover{border-color:var(--danger);color:var(--danger)}.messages{flex:1;min-width:0;width:100%;overflow-y:auto;overflow-x:hidden;padding:12px 16px;display:flex;flex-direction:column;gap:2px;background:var(--bg)}.messages::-webkit-scrollbar{width:4px}.messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.msg{display:flex;flex-direction:column;gap:2px;max-width:78%;margin:1px 0}.msg.me{align-self:flex-end;align-items:flex-end}.msg.them{align-self:flex-start;align-items:flex-start}.msg.msg-media{width:72%}.bubble{padding:9px 13px;font-size:.87rem;line-height:1.5;word-break:break-word}.me .bubble{background:var(--accent);color:var(--accent-ink);border-radius:16px 16px 2px}.them .bubble{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:16px 16px 16px 2px}.file-bubble{display:flex;align-items:center;gap:12px;padding:12px 14px;min-width:220px;max-width:300px}.me .file-bubble{background:var(--accent);border-radius:16px 16px 2px}.them .file-bubble{background:var(--surface);border:1px solid var(--border);border-radius:16px 16px 16px 2px}.file-icon{width:34px;height:34px;flex-shrink:0;color:var(--accent)}.me .file-icon{color:#ffffffe6}.file-info{flex:1;min-width:0}.file-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me .file-name{color:var(--accent-ink)}.file-size{font-size:.72rem;color:var(--muted)}.me .file-size{color:#ffffffbf}.file-progress{margin-top:6px}.progress-bar-wrap{height:3px;background:var(--border);border-radius:var(--radius-full);overflow:hidden;margin-top:4px}.me .progress-bar-wrap{background:#ffffff40}.progress-bar-fill{height:100%;width:100%;background:var(--accent);border-radius:var(--radius-full);transform-origin:left;transform:scaleX(0);transition:transform .2s linear}.me .progress-bar-fill{background:#fff}.progress-label{font-size:.7rem;color:var(--muted);margin-top:3px}.me .progress-label{color:#fffc}.download-btn{margin-top:6px;display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:600;color:var(--accent);background:none;border:none;cursor:pointer;padding:0;text-decoration:none}.me .download-btn{color:#ffffffe6}.download-btn:hover{filter:brightness(1.15)}.time-label{font-size:.65rem;color:var(--muted);padding:0 2px}.toast{position:fixed;bottom:90px;left:50%;transform:translate(-50%) translateY(20px);background:var(--text);border-radius:var(--radius);padding:10px 18px;font-size:.82rem;color:var(--surface);z-index:200;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #00000026}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.input-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface);border-top:1px solid var(--border);flex-shrink:0}.icon-action-btn{width:40px;height:40px;background:none;border:none;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--muted);transition:color .15s,background .15s}.icon-action-btn:hover{color:var(--accent);background:var(--surface-2)}.text-input{flex:1;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);padding:10px 16px;font-size:.9rem;color:var(--text);outline:none;transition:border-color .15s;font-family:var(--font-sans)}.text-input:focus{border-color:var(--accent)}.text-input::placeholder{color:var(--muted)}.send-btn{width:40px;height:40px;background:var(--accent);border:none;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--accent-ink);flex-shrink:0;transition:filter .15s}.send-btn:hover{filter:brightness(1.06)}#screen-waiting{flex-direction:column;align-items:center;justify-content:center;gap:20px;min-height:260px}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#screen-collapsed,#screen-full{flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:40px 20px}.collapse-icon{color:var(--danger)}.collapse-title{font-size:1.3rem;font-weight:700;color:var(--danger)}.collapse-body{font-size:.9rem;color:var(--muted);max-width:340px;line-height:1.6;text-wrap:pretty}.system-msg{align-self:center;font-size:.72rem;color:var(--muted);padding:4px 14px;background:#0000000d;border-radius:var(--radius-full);margin:6px 0}#file-input{display:none}.od1-grid{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}.od1-host{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px 28px;display:flex;flex-direction:column;align-items:center;gap:20px;width:100%;box-shadow:0 1px 3px #0000000f}.od1-qr-wrap{position:relative;width:240px;height:240px;background:var(--qr-quiet-zone);border-radius:10px;border:1px solid var(--border);overflow:hidden;display:flex;align-items:center;justify-content:center}.od1-qr-wrap img{width:100%;height:100%;object-fit:contain}.od1-caption{font-size:.78rem;color:var(--muted);text-align:center}.od1-code{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:2.4rem;font-weight:700;letter-spacing:.35em;color:var(--accent);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 20px}.od1-share{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);padding:8px 14px;width:100%;max-width:360px}.od1-share input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--muted);font-family:var(--font-sans);font-size:.76rem}.join-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 28px;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;box-shadow:0 1px 3px #0000000f}.join-label{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.join-row{display:flex;gap:8px;align-items:center;width:100%}.join-input{flex:1;max-width:250px;padding:5px 14px;font-size:1.6rem;letter-spacing:.32em;background:var(--surface-2);border:1.5px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--font-mono);font-weight:700;outline:none;text-align:center;transition:border-color .15s}.join-input:focus{border-color:var(--accent)}.join-input::placeholder{color:var(--border);font-family:var(--font-mono);letter-spacing:.32em}.join-btn{width:auto;padding:10px 24px;flex-shrink:0;border:1px solid transparent;border-radius:8px;font-size:.92rem;font-weight:600;cursor:pointer;font-family:inherit;background:var(--accent);color:var(--accent-ink);transition:filter .15s,transform .1s}.join-btn:hover{filter:brightness(1.05)}.join-btn:active{transform:scale(.98)}.join-status{font-size:.78rem;color:var(--muted)}.join-status.error{color:var(--danger)}.media-bubble{cursor:pointer;overflow:hidden;width:100%;transition:filter .15s}.me .media-bubble{background:var(--accent);border-radius:16px 16px 2px}.them .media-bubble{background:var(--surface);border:1px solid var(--border);border-radius:16px 16px 16px 2px}.media-bubble:hover{filter:brightness(.93)}.media-thumb{display:block;width:100%;height:auto;max-height:320px;object-fit:cover}.media-vid-thumb{width:100%;aspect-ratio:16/9;background:#0d1117;display:flex;align-items:center;justify-content:center;color:#ffffffd9}.media-footer{padding:7px 12px 10px}.media-caption{font-size:.87rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;display:block;color:var(--accent-ink)}.them .media-caption{color:var(--text)}.media-name{font-size:.72rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff9}.them .media-name{color:var(--muted)}.compose-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000ed;z-index:400;display:flex;flex-direction:column}.compose-close{position:absolute;top:16px;right:16px;width:40px;height:40px;background:#ffffff1f;border:none;border-radius:var(--radius-full);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .15s}.compose-close:hover{background:#ffffff38}.compose-preview{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:60px 16px 8px;overflow:hidden}img.compose-media{width:stretch;max-width:calc(100vw - 32px);max-height:calc(100vh - 140px);object-fit:contain;border-radius:6px}video.compose-media{width:stretch;max-width:calc(100vw - 32px);max-height:calc(100vh - 140px);border-radius:6px}.compose-bar{display:flex;align-items:center;gap:8px;padding:12px 20px 24px;flex-shrink:0}.compose-caption-input{flex:1;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-full);padding:9px 16px;font-size:.88rem;color:#fff;outline:none;font-family:var(--font-sans);transition:border-color .15s}.compose-caption-input::placeholder{color:#ffffff61}.compose-caption-input:focus{border-color:#ffffff59}.compose-send-btn{width:42px;height:42px;background:var(--accent);border:none;border-radius:var(--radius-full);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:filter .15s}.compose-send-btn:hover{filter:brightness(1.08)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;z-index:500;display:flex;flex-direction:column;align-items:center;justify-content:center}.lightbox-close{position:absolute;top:16px;right:16px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#ffffff1f;border:none;border-radius:var(--radius-full);color:#fff;cursor:pointer;transition:background .15s;z-index:1}.lightbox-close:hover{background:#ffffff38}.lightbox-body{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:64px 16px 16px}img.lightbox-media{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;transition:transform .15s ease}video.lightbox-media{display:block;width:stretch;max-width:calc(100vw - 32px);max-height:calc(100vh - 156px);border-radius:4px}.lightbox-bar{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 20px 20px;flex-shrink:0}.lightbox-name{font-size:.82rem;color:#ffffffbf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 120px)}.lightbox-dl{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:#fff;text-decoration:none;background:#ffffff26;border-radius:var(--radius-full);padding:7px 14px;flex-shrink:0;transition:background .15s}.lightbox-dl:hover{background:#ffffff40}.lightbox-unsupported{color:#ffffffa6;text-align:center;padding:40px 24px;line-height:1.7;font-size:.9rem}@media (prefers-reduced-motion: reduce){.lightbox-media{transition:none}}@media (max-width: 480px){.app{max-width:100%}#screen-chat{height:calc(100vh - 60px);border-radius:0;box-shadow:none;max-height:none}.od1-host{padding:24px 20px}.od1-qr-wrap{width:200px;height:200px}.od1-code{font-size:1.9rem;padding:8px 16px}.join-bar{padding:14px 16px}.join-input{font-size:1.2rem}}
