:root{color-scheme:dark;--bg: #0f1117;--surface: #1a1e2e;--surface-2: #232840;--text: #e6e9f0;--muted: #8a91a8;--accent: #4f7cff;--accent-hover: #6b90ff;--danger: #ff6b6b}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif}.container{max-width:640px;margin:0 auto;height:100%;display:flex;flex-direction:column;padding:16px}.home{margin:auto;width:100%;max-width:360px;display:flex;flex-direction:column;gap:16px;text-align:center}.home h1{font-size:40px;margin:0;letter-spacing:4px}.tagline{color:var(--muted);margin:0 0 16px;font-size:14px;line-height:1.6}.divider{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:12px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--surface-2)}.join-form{display:flex;gap:8px}.join-form input{flex:1;background:var(--surface);border:1px solid var(--surface-2);border-radius:10px;padding:12px;color:var(--text);font-size:18px;letter-spacing:4px;text-align:center;text-transform:uppercase}button{font:inherit;cursor:pointer;border:none;border-radius:10px;padding:12px 20px}button:disabled{opacity:.4;cursor:not-allowed}.primary{background:var(--accent);color:#fff;font-weight:600}.primary:hover:not(:disabled){background:var(--accent-hover)}.secondary{background:var(--surface-2);color:var(--text)}.link-btn{background:none;color:var(--accent);padding:4px 8px;font-size:14px}.icon-btn{background:var(--surface-2);padding:10px 12px;font-size:18px}.room{gap:12px}.room-header{display:flex;align-items:center;justify-content:space-between}.status{color:var(--muted);font-size:14px;display:flex;align-items:center;gap:8px}.status:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--muted)}.status.online:before{background:#4ade80}.room-code{background:var(--surface);border-radius:14px;padding:16px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.room-code canvas{border-radius:8px}.code-row{display:flex;align-items:center;gap:12px}.code{font-size:28px;font-weight:700;letter-spacing:6px}.hint{color:var(--muted);font-size:13px;margin:0}.timeline{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px 0}.empty{color:var(--muted);text-align:center;margin:auto;font-size:14px}.bubble{max-width:78%;padding:10px 14px;border-radius:14px;word-break:break-word;white-space:pre-wrap}.bubble.in{align-self:flex-start;background:var(--surface);border-bottom-left-radius:4px}.bubble.out{align-self:flex-end;background:var(--accent);border-bottom-right-radius:4px}.bubble.file{min-width:200px;display:flex;flex-direction:column;gap:6px}.file-name{font-weight:600;word-break:break-all}.file-meta{font-size:12px;opacity:.75}.bubble progress{width:100%;height:6px}.bubble.out .link-btn{color:#fff;align-self:flex-end;padding:0;font-size:12px}.download{color:inherit;font-weight:700}.composer{display:flex;gap:8px;padding-top:4px}.text-input{flex:1;background:var(--surface);border:1px solid var(--surface-2);border-radius:10px;padding:12px;color:var(--text);font-size:16px}.send-btn{padding:12px 16px}.room.dragging{outline:2px dashed var(--accent);outline-offset:-8px;border-radius:14px}.drop-hint{position:fixed;inset:auto 0 90px;text-align:center;color:var(--accent);font-weight:600;pointer-events:none}.error{color:var(--danger);font-size:14px;margin:0}
