:root,[data-theme=light]{--bg:#fff;--bg-soft:#f4f5f7;--bg-msg:#f1f3f5;--bg-mine:#eef6ee;--bg-owner:#e8f0fe;--fg:#1f2328;--muted:#656d76;--border:#d8dde3;--accent:#2563eb;--accent-fg:#fff;--owner:#1d4ed8;--danger:#c62828;--notice-bg:#e8f5e9;--notice-fg:#1b5e20;--error-bg:#fdecea;--shadow:0 1px 3px #00000014;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#111418;--bg-soft:#181c21;--bg-msg:#1d2228;--bg-mine:#1b2a1f;--bg-owner:#172440;--fg:#e6e8eb;--muted:#98a1ab;--border:#2d333b;--accent:#4f8cff;--accent-fg:#fff;--owner:#8cb4ff;--danger:#ff6b6b;--notice-bg:#183a21;--notice-fg:#b7e4c0;--error-bg:#3d1b1b;--shadow:0 1px 3px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--fg);margin:0;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}body{flex-direction:column;height:100dvh;display:flex}a{color:var(--accent)}h1{margin:0 0 12px;font-size:1.35rem}h2{margin:0 0 10px;font-size:1.1rem}input,textarea,button,.button{font:inherit;color:inherit}input:not([type=checkbox]),textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;min-width:0;padding:8px 10px}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}button,.button{background:var(--bg-soft);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:4px;padding:8px 14px;text-decoration:none;display:inline-flex}button:hover,.button:hover{filter:brightness(.96)}button:disabled{opacity:.6;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}button.danger{color:var(--danger);border-color:var(--danger);background:0 0}button.small,.button.small{padding:4px 10px;font-size:.875rem}button.link{color:var(--accent);background:0 0;border:none;padding:0}button.icon{background:0 0;border:none;padding:4px 8px;font-size:1.15rem}.topbar{border-bottom:1px solid var(--border);background:var(--bg-soft);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.topbar.compact{padding:4px 16px}.topbar nav{align-items:center;gap:14px;display:flex}.topbar nav form{margin:0}.brand{color:var(--fg);font-weight:700;text-decoration:none}main{width:100%;margin:0 auto;padding:24px 16px;overflow-y:auto}main.narrow{max-width:520px}main.wide{max-width:1000px}.card{background:var(--bg-soft);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-bottom:16px;padding:18px}.card label{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.card label.check{flex-direction:row;align-items:center;margin:0}.row{align-items:center;gap:8px;display:flex}.row>input{flex:1}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.center{text-align:center;justify-content:center}.muted{color:var(--muted)}.error,.notice{border-radius:8px;padding:8px 12px}.error{background:var(--error-bg);color:var(--danger)}.notice{background:var(--notice-bg);color:var(--notice-fg)}.tag{color:var(--muted);border:1px solid var(--border);border-radius:4px;margin-left:6px;padding:0 4px;font-size:.75rem}.badge{background:var(--owner);color:var(--bg);border-radius:4px;margin-left:6px;padding:0 5px;font-size:.7rem;font-weight:600}.code-input{text-transform:uppercase;letter-spacing:.3em;font-size:1.2rem;font-weight:600}.room-list{margin:0;padding:0;list-style:none}.room-list li{border-top:1px solid var(--border);align-items:center;gap:12px;padding:8px 0;display:flex}.room-list li form{margin:0}.room-code{letter-spacing:.1em;font-family:ui-monospace,monospace;font-size:1.1rem;font-weight:700}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 6px}td.actions{flex-wrap:wrap;gap:8px;display:flex}td.actions form{margin:0}.chat{flex-direction:column;flex:1;width:100%;max-width:1100px;min-height:0;margin:0 auto;display:flex;position:relative}.chat-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 16px;display:flex}.room-id{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.room-id b{letter-spacing:.1em;font-family:ui-monospace,monospace;font-size:1.15rem}.room-id .title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status{background:#22c55e;border-radius:50%;flex-shrink:0;width:9px;height:9px}.status.off{background:#f59e0b}.people{font-size:.9rem;position:relative}.people summary{cursor:pointer;color:var(--muted)}.people ul{z-index:5;background:var(--bg-soft);border:1px solid var(--border);min-width:200px;max-height:50vh;box-shadow:var(--shadow);border-radius:8px;margin:0;padding:8px 12px;list-style:none;position:absolute;top:1.8em;right:0;overflow-y:auto}.people li{white-space:nowrap;padding:3px 0}.people li.owner{color:var(--owner);font-weight:600}.people li.away{color:var(--muted)}.dot{background:var(--border);border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.dot.on{background:#22c55e}.owner-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.owner-tools form{margin:0}.max-paste{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:flex}.max-paste input{width:90px;padding:4px 8px}.banner{color:#8a5300;background:#fff4e5;padding:6px 16px;font-size:.875rem}[data-theme=dark] .banner{color:#ffd08a;background:#3a2a10}.messages{overflow-anchor:none;flex:1;min-height:0;padding:12px 16px;overflow-y:auto}.messages .empty{margin-top:20vh}.day{text-align:center;color:var(--muted);margin:14px 0 6px;font-size:.8rem}.msg{background:var(--bg-msg);border-left:3px solid #0000;border-radius:10px;max-width:100%;margin:6px 0;padding:6px 12px 8px}.msg.mine{background:var(--bg-mine)}.msg.owner{background:var(--bg-owner);border-left-color:var(--owner)}.msg.owner .name{color:var(--owner)}.msg.pending{opacity:.6}.msg.failed{opacity:1;border-left-color:var(--danger)}.msg .meta{margin-bottom:2px;font-size:.85rem}.msg .name{font-weight:700}.msg time{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:8px}.msg .text{white-space:pre-wrap;overflow-wrap:anywhere}.msg .text.clamped{max-height:50vh;overflow:hidden;-webkit-mask-image:linear-gradient(#000 80%,#0000);mask-image:linear-gradient(#000 80%,#0000)}.msg .more{margin-top:4px;font-size:.85rem}.msg .files{margin:6px 0 0;padding:0;list-style:none}.msg .files li{margin:2px 0}.msg .files small{color:var(--muted);margin-left:6px}.error-line{color:var(--danger);font-size:.85rem}.jump{background:var(--accent);color:var(--accent-fg);box-shadow:var(--shadow);z-index:4;border:none;border-radius:999px;position:absolute;bottom:90px;right:24px}.composer{border-top:1px solid var(--border);background:var(--bg);padding:8px 16px 12px}.composer.dragging{outline:2px dashed var(--accent);outline-offset:-4px}.composer-row{align-items:flex-end;gap:8px;display:flex}.composer textarea{resize:none;flex:1;max-height:40vh;line-height:1.4}.composer-notice{color:var(--danger);margin-bottom:6px;font-size:.85rem}.chips{flex-wrap:wrap;gap:6px;margin:0 0 6px;padding:0;list-style:none;display:flex}.chips li{background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:.85rem}.progress{background:var(--border);border-radius:2px;height:4px;margin-bottom:6px;overflow:hidden}.progress div{background:var(--accent);height:100%;transition:width .15s}.qr-overlay{z-index:50;background:#000000bf;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.qr-box{color:#111;text-align:center;background:#fff;border-radius:16px;max-width:100%;max-height:100%;padding:24px;overflow:auto}.qr-img svg{width:min(80vw,70vh);height:min(80vw,70vh);margin:0 auto;display:block}.qr-img :global(svg){width:min(80vw,70vh);height:min(80vw,70vh);margin:0 auto;display:block}.qr-code{letter-spacing:.2em;margin-top:8px;font-family:ui-monospace,monospace;font-size:clamp(2rem,8vh,4.5rem);font-weight:800}.qr-url{color:#555;word-break:break-all;margin-bottom:14px}.qr-box button{color:#111;background:#f1f3f5;border-color:#ccc}.qr-box button.primary{color:#fff;background:#2563eb;border-color:#2563eb}@media (width<=640px){.chat-head{gap:8px;padding:6px 10px}.messages{padding:8px 10px}.composer{padding:6px 10px 10px}.max-paste input{width:70px}}
