:root{--bg:#f5f6f8;--bg-elevated:#fff;--fg:#111b21;--muted:#667781;--line:#e9edef;--bordo:#991b1b;--bordo-soft:#991b1b1f;--panel:#fff;--ok:#16a34a;--peer-ring:#11182759;--radar-line:#11182714;--self-glow:#991b1b24;--bubble-me:#d9fdd3;--bubble-me-fg:#111b21;--bubble-them:#fff;--chat-bg:#ddd;--scan-bg:#f3f4f6;--chat-head-bg:#ebebeb;--topbar-bg:#fafafa;--composer-bg:#f0f2f5;--composer-field:#fff;--composer-border:#e9edef;--drop-bg:#111b21b8;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--bg:#101010;--bg-elevated:#363838;--fg:#e9edef;--muted:#a1a1a1;--line:#303030;--bordo:#b91c1c;--bordo-soft:#b91c1c38;--panel:#131313;--ok:#25d366;--peer-ring:#e9edef47;--radar-line:#ffffff12;--self-glow:#b91c1c29;--bubble-me:#004e36;--bubble-me-fg:#e9edef;--bubble-them:#363838;--chat-bg:#101010;--scan-bg:#242424;--chat-head-bg:#2a2c2c;--topbar-bg:#252727;--composer-bg:#131313;--composer-field:#373737;--composer-border:#737373;--drop-bg:#101010d9;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);width:100%;height:100%;color:var(--fg);font-family:var(--font);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45;overflow-x:hidden}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}#app{height:100%}.app{height:100dvh;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);flex-direction:column;display:flex}.topbar{background:var(--topbar-bg,var(--bg-elevated));border-bottom:1px solid var(--line);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;min-height:3.25rem;padding:.55rem 1rem;display:flex}.brand-row{align-items:center;gap:.55rem;min-width:0;display:inline-flex}.brand-mark{object-fit:cover;background:var(--bordo);border-radius:.4rem;width:1.75rem;height:1.75rem}.brand-title{letter-spacing:-.02em;font-size:1.1875rem;font-weight:700;line-height:1.1}.brand-accent{color:var(--bordo);margin-left:.22em}.top-actions{align-items:center;gap:.15rem;display:flex}.icon-btn{width:2.35rem;height:2.35rem;color:var(--muted);border-radius:999px;place-items:center;display:grid}.icon-btn:hover{background:var(--bordo-soft);color:var(--fg)}.icon-btn svg{width:1.2rem;height:1.2rem}.toasts{top:calc(3.4rem + .7rem + env(safe-area-inset-top));right:max(.75rem, env(safe-area-inset-right));z-index:80;pointer-events:none;flex-direction:column;gap:.45rem;width:min(20rem,100% - 1.5rem);display:flex;position:fixed}@media (width<=767px){.toasts{top:max(.45rem, env(safe-area-inset-top));align-items:stretch;width:min(22rem,100% - 1.25rem);left:50%;right:auto;transform:translate(-50%)}}.toast-card{pointer-events:auto;cursor:pointer;border:1px solid var(--line);background:var(--bg-elevated);font-size:var(--text-sm);border-radius:12px;align-items:flex-start;gap:.55rem;padding:.7rem .85rem;line-height:1.35;animation:.2s toast-in;display:flex;box-shadow:0 10px 30px #0000001f}.toast-card.ok{border-color:#16a34a59}.toast-card.err{border-color:#e11d4866}.toast-card.info{border-color:var(--line)}.toast-card .dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem;margin-top:.35rem}.toast-card.ok .dot{background:var(--ok)}.toast-card.err .dot{background:#e11d48}.toast-card .body{min-width:0;color:var(--fg);flex:1}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.layout{flex:1;grid-template-columns:1fr;min-height:0;display:grid;overflow:hidden}@media (width>=768px){.layout{grid-template-columns:minmax(280px,37.5%) 1fr}}@media (width>=1100px){.layout{grid-template-columns:minmax(320px,37.5%) 1fr}}.scan{background:var(--scan-bg);border-right:1px solid #0000;flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}html.dark .scan{background:#242424}@media (width>=768px){.scan{border-right-color:var(--line)}}.scan.chat-open{display:none}@media (width>=768px){.scan.chat-open{display:flex}}.flash{z-index:5;font-size:var(--text-xs);color:var(--muted);opacity:0;pointer-events:none;transition:opacity .2s;position:absolute;top:.65rem;left:50%;translate:-50%}.flash.show{opacity:1}.flash.ok{color:var(--ok)}.flash.err{color:#e11d48}.radar-stage{flex:1;min-height:0;position:relative}.self-wrap{z-index:1;place-items:center;width:3.5rem;height:3.5rem;display:grid;position:relative}.radar{pointer-events:none;z-index:0;width:3.5rem;height:3.5rem;position:absolute;top:50%;left:50%;overflow:visible;translate:-50% -50%}.radar-ring{fill:none;stroke:#b91c1c80;stroke-width:1px;vector-effect:non-scaling-stroke;opacity:0;transform-origin:28px 28px;transform-box:view-box}html.dark .radar-ring{stroke:#f871718c}.radar.scanning .radar-ring{animation:16s linear infinite radar-expand}.radar.paused .radar-ring{opacity:.22;animation:none}.radar.paused .radar-ring:first-child{opacity:.28;transform:scale(4)}.radar.paused .radar-ring:nth-child(2){opacity:.18;transform:scale(8)}.radar.paused .radar-ring:nth-child(3){opacity:.12;transform:scale(13)}.radar.paused .radar-ring:nth-child(n+4){opacity:0}.radar.scanning .radar-ring:first-child{animation-delay:0s}.radar.scanning .radar-ring:nth-child(2){animation-delay:-2s}.radar.scanning .radar-ring:nth-child(3){animation-delay:-4s}.radar.scanning .radar-ring:nth-child(4){animation-delay:-6s}.radar.scanning .radar-ring:nth-child(5){animation-delay:-8s}.radar.scanning .radar-ring:nth-child(6){animation-delay:-10s}.radar.scanning .radar-ring:nth-child(7){animation-delay:-12s}.radar.scanning .radar-ring:nth-child(8){animation-delay:-14s}@keyframes radar-expand{0%{opacity:.55;transform:scale(1)}70%{opacity:.35}96%{opacity:.18}to{opacity:0;transform:scale(42)}}@media (prefers-reduced-motion:reduce){.radar.scanning .radar-ring{opacity:0;animation:none}}.peers{z-index:2;position:absolute;inset:0}.peer{width:5.5rem;color:var(--fg);flex-direction:column;align-items:center;gap:.35rem;display:flex;position:absolute;top:38%;left:50%}.peer-orb-wrap{position:relative}.peer-unread{color:#fff;text-align:center;min-width:1rem;height:1rem;box-shadow:0 0 0 2px var(--bg);background:#e11d48;border-radius:999px;padding:0 .25rem;font-size:.65rem;font-weight:700;line-height:1rem;position:absolute;top:-.1rem;right:-.1rem}.peer.active .peer-orb{box-shadow:0 0 0 5px var(--bordo-soft);border-color:#e11d48}.peer-orb{border:2px solid var(--peer-ring);background:var(--bg-elevated);border-radius:50%;place-items:center;width:3.15rem;height:3.15rem;display:grid}.peer-orb svg{width:1.25rem;height:1.25rem}.peer-name{font-size:var(--text-xs);text-align:center;max-width:7rem;font-weight:600;line-height:1.25}.peer-meta{color:var(--muted);font-size:.6875rem}.center{z-index:3;text-align:center;justify-items:center;gap:.5rem;width:min(100% - 1.25rem,20rem);display:grid;position:absolute;bottom:7%;left:50%;translate:-50%}.hint{align-content:end;gap:.2rem;min-height:2.75rem;padding:0 .5rem;display:grid}.hint.hidden{visibility:hidden}.hint strong{font-size:var(--text-sm);font-weight:650}.hint span{font-size:var(--text-xs);color:var(--muted)}.self-orb{z-index:1;background:var(--self-glow);color:#be123c;width:3.5rem;height:3.5rem;box-shadow:0 0 0 7px var(--bordo-soft);border:2px solid #e11d48;border-radius:50%;place-items:center;display:grid;position:relative}html.dark .self-orb{color:#fecaca}.self-orb svg{width:1.4rem;height:1.4rem}.name-edit{max-width:100%;color:var(--muted);font-size:var(--text-sm);border:1px solid #0000;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .55rem;display:inline-flex}.name-edit:hover{border-color:var(--line);background:var(--bg-elevated)}.name-edit.editing{background:var(--bg-elevated);border-color:#991b1b59}.name-edit b,.name-edit input{color:var(--fg);font-weight:650;font-size:var(--text-sm)}.name-edit input{text-align:center;background:0 0;border:0;outline:none;width:min(12rem,42vw);padding:0;font-size:16px}.name-edit .tools{flex-shrink:0;gap:.15rem;display:inline-flex}.name-edit .tool{width:1.5rem;height:1.5rem;color:var(--muted);border-radius:999px;place-items:center;display:grid}.name-edit .tool:hover{background:var(--bordo-soft);color:var(--fg)}.name-edit .tool svg{width:.9rem;height:.9rem}.badge{font-size:var(--text-xs);color:var(--muted);border:1px solid var(--line);background:var(--bg-elevated);border-radius:999px;padding:.3rem .65rem}.badge:hover{border-color:#991b1b59}.badge strong{color:var(--fg);letter-spacing:.08em}.room-bar{align-items:center;gap:.35rem;margin-top:.15rem;display:inline-flex}.room-bar .badge{pointer-events:none}.room-bar .tool{width:1.85rem;height:1.85rem;color:var(--muted);background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;flex-shrink:0;place-items:center;display:grid}.room-bar .tool:hover{color:var(--fg);border-color:#991b1b59}.room-bar .tool svg{width:.9rem;height:.9rem}.room-bar.editing .badge{display:none}.room-bar .room-edit-wrap{align-items:center;gap:.35rem;display:none}.room-bar.editing .room-edit-wrap{display:inline-flex}.room-bar .room-edit-wrap input{border:1px solid var(--line);background:var(--bg-elevated);width:4.5rem;height:1.85rem;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;outline:none;padding:0 .65rem}.room-bar .room-edit-wrap input:focus{border-color:#991b1b73}.main{background:var(--bg);min-width:0;height:100%;min-height:0;display:none;position:relative}@media (width>=768px){.main{display:flex}}.main.chat-open{display:flex}.empty-main{text-align:center;color:var(--muted);justify-items:center;gap:.7rem;margin:auto;padding:2rem;display:grid}.empty-main.hidden{display:none}.empty-main .hero-icon{border:1px solid var(--line);background:var(--bg-elevated);border-radius:50%;place-items:center;width:4.25rem;height:4.25rem;display:grid}.empty-main .hero-icon svg{width:1.85rem;height:1.85rem}.empty-main h2{color:var(--fg);font-size:var(--text-lg);margin:0;font-weight:650}.empty-main p{max-width:32ch;font-size:var(--text-sm);margin:0}.chat{background:var(--chat-bg);flex-direction:column;flex:1;width:100%;height:100%;min-height:0;display:none;position:relative}.chat.open{display:flex}.chat-body{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.messages{overscroll-behavior:contain;background-color:var(--chat-bg);background-image:var(--chat-wallpaper);background-size:600px 600px;flex:1;align-content:start;gap:.55rem;min-height:0;padding:1rem .9rem;display:grid;overflow:hidden auto}.sys-card{border:1px solid var(--line);color:#cfcfcf;cursor:pointer;text-align:center;background:#363838eb;border-radius:12px;justify-self:center;justify-items:center;gap:.45rem;min-width:9.5rem;margin:.35rem auto .75rem;padding:.85rem 1.15rem;display:grid;box-shadow:0 6px 18px #00000040}html:not(.dark) .sys-card{color:var(--muted);background:#ffffffeb}.sys-card svg{opacity:.9;width:1.75rem;height:1.75rem}.sys-card span{font-size:var(--text-xs);letter-spacing:.01em;font-weight:600}.sys-card:hover{color:#fff;border-color:#8a8a8a}html:not(.dark) .sys-card:hover{color:var(--fg)}.bubble{min-width:0;max-width:min(85%,28rem);height:auto;min-height:fit-content;font-size:var(--text-sm);word-break:break-word;border-radius:14px;padding:.55rem .75rem;line-height:1.4;overflow:visible}.bubble-foot{justify-content:flex-end;align-items:center;gap:.2rem;min-height:.9rem;margin-top:.2rem;display:flex}.bubble .time{opacity:.72;font-variant-numeric:tabular-nums;white-space:nowrap;color:inherit;font-size:.6875rem;line-height:1}.bubble .ticks{opacity:.72;color:inherit;flex-shrink:0;align-items:center;display:inline-flex}.bubble .ticks svg{width:1rem;height:.75rem}.bubble .ticks.delivered{opacity:.8}.bubble .ticks.read{color:#53bdeb;opacity:1}.bubble.failed{outline:1px solid #e11d488c}.bubble .fail-hint{color:#fb7185;text-align:right;margin-top:.15rem;font-size:.65rem;display:block}.bubble.me{background:var(--bubble-me);color:var(--bubble-me-fg);border-bottom-right-radius:4px;justify-self:end}.bubble.them{background:var(--bubble-them);border-bottom-left-radius:4px;justify-self:start}.bubble .msg-link{color:#027eb5;text-underline-offset:2px;word-break:break-all;text-decoration:underline}.bubble.me .msg-link{color:#027eb5}html.dark .bubble .msg-link{color:#53bdeb}.bubble.file{gap:.45rem;width:fit-content;min-width:0;max-width:min(85%,18rem);padding:.45rem;display:grid}.bubble.file>*{min-width:0}.bubble.file .thumb{object-fit:contain;object-position:center;cursor:pointer;background:#111;border-radius:10px;justify-self:center;width:auto;max-width:100%;height:auto;max-height:min(52vh,22rem);display:block}.bubble.file .file-row{align-items:center;gap:.55rem;min-width:0;padding:.25rem .35rem;display:flex}.bubble.file .file-ico{background:#00000038;border-radius:10px;flex-shrink:0;place-items:center;width:2.25rem;height:2.25rem;display:grid}.bubble.file .file-ico svg{width:1.1rem;height:1.1rem}.bubble.file .file-text{flex:1;min-width:0;overflow:hidden}.bubble.file .file-text strong{font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;display:block;overflow:hidden}.bubble.file .file-text strong[data-open]{cursor:pointer}.bubble.file .dl{background:#ffffff1f;border-radius:999px;flex-shrink:0;place-items:center;width:2rem;height:2rem;display:grid}.bubble.file .dl svg{width:1rem;height:1rem}.bubble.file .dl:hover{background:#fff3}.composer{border-top:1px solid var(--line);background:var(--composer-bg);flex-shrink:0;align-items:flex-end;gap:.45rem;padding:.55rem .65rem;display:flex;position:relative}.attach-wrap{flex-shrink:0;position:relative}.attach-menu{background:var(--bg-elevated);border:1px solid var(--line);z-index:12;border-radius:12px;gap:.15rem;min-width:11rem;padding:.35rem;display:grid;position:absolute;bottom:calc(100% + .45rem);left:0;box-shadow:0 12px 32px #00000047}.attach-menu.hidden{display:none}.attach-menu button{text-align:left;width:100%;font-size:var(--text-sm);color:var(--fg);border-radius:10px;align-items:center;gap:.65rem;padding:.65rem .7rem;display:flex}.attach-menu button svg{width:1.15rem;height:1.15rem;color:var(--bordo);flex-shrink:0}.attach-menu button:hover{background:#0000000f}html.dark .attach-menu button:hover{background:#ffffff0f}.composer textarea{box-sizing:border-box;resize:none;border:1px solid var(--composer-border);background:var(--composer-field);scrollbar-width:none;border-radius:1.25rem;outline:none;flex:1;height:2.75rem;min-height:2.75rem;max-height:calc(8.1em + 1.4rem);padding:.65rem 1rem;font-size:16px;line-height:1.35;overflow-y:hidden}.composer textarea::-webkit-scrollbar{width:0;height:0}.composer textarea.scrollable{scrollbar-width:thin}.composer textarea.scrollable::-webkit-scrollbar{width:6px}.composer textarea:focus{border-color:#8a8a8a}.composer .attach-btn,.composer .send-btn{border-radius:999px;flex-shrink:0;place-items:center;width:2.75rem;height:2.75rem;display:grid}.composer .attach-btn{color:var(--fg);background:0 0}.composer .attach-btn svg{stroke-width:2.25px;width:1.35rem;height:1.35rem}.send-btn{background:var(--bordo);color:#fff}.send-btn svg{width:1.15rem;height:1.15rem}.media-composer{z-index:30;background:#0a0a0a;flex-direction:column;min-height:0;display:none;position:absolute;inset:0;overflow:hidden}.media-composer.open{display:flex}.media-top{flex-shrink:0;justify-content:flex-end;gap:.35rem;padding:.75rem .85rem;display:flex}.media-stage{flex:1 1 0;justify-content:center;align-items:center;min-height:0;padding:.5rem 1rem;display:flex;overflow:hidden}.media-stage img,.media-stage video{object-fit:contain;border-radius:8px;width:auto;max-width:100%;height:auto;max-height:100%;display:block}.media-stage .file-card{text-align:center;color:#cfcfcf;justify-items:center;gap:.75rem;display:grid}.media-stage .file-card svg{opacity:.85;width:3rem;height:3rem}.media-bottom{background:linear-gradient(#0000,#000000a6);flex-shrink:0;align-items:center;gap:.55rem;padding:.75rem .85rem 1rem;display:flex}.media-bottom input{color:#fff;background:#1a1a1a;border:0;border-radius:999px;outline:none;flex:1;height:2.75rem;padding:0 1rem;font-size:16px}.media-send{color:#111;background:#25d366;border-radius:999px;flex-shrink:0;place-items:center;width:2.75rem;height:2.75rem;display:grid}.media-send svg{width:1.2rem;height:1.2rem}.peer-info-sheet .meta-list{font-size:var(--text-sm);gap:.55rem;margin:.75rem 0 0;display:grid}.peer-info-sheet .meta-list div{color:var(--muted);justify-content:space-between;gap:1rem;display:flex}.peer-info-sheet .meta-list strong{color:var(--fg);font-weight:600}.chat-drop{z-index:5;background:var(--drop-bg);color:#fff;text-align:center;pointer-events:none;place-items:center;padding:1.5rem;display:none;position:absolute;inset:0}.chat-drop.show{display:grid}.chat-drop strong{font-size:var(--text-lg)}.chat-drop span{color:#ffffffbf;font-size:var(--text-sm)}.chat-head{border-bottom:1px solid var(--line);background:var(--chat-head-bg);flex-shrink:0;align-items:center;gap:.55rem;padding:.7rem .9rem;display:flex}.chat-head-actions{align-items:center;margin-left:auto;display:flex;position:relative}.chat-menu{background:var(--bg-elevated);border:1px solid var(--line);z-index:8;border-radius:10px;min-width:10rem;padding:.35rem;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 12px 32px #00000059}.chat-menu.hidden{display:none}.chat-menu button{text-align:left;width:100%;font-size:var(--text-sm);color:var(--fg);border-radius:8px;padding:.55rem .65rem}.chat-menu button:hover{background:#ffffff0f}.chat-peer-orb{cursor:pointer}.chat-head .back{width:2.1rem;height:2.1rem;color:var(--muted);border-radius:999px;place-items:center;display:grid}@media (width>=768px){.chat-head .back{display:none}}.chat-head .back:hover{background:var(--bordo-soft);color:var(--fg)}.chat-head .back svg{width:1.1rem;height:1.1rem}.chat-peer-orb{border:1.5px solid var(--peer-ring);background:var(--bg);border-radius:50%;place-items:center;width:2.15rem;height:2.15rem;display:grid}.chat-peer-orb svg{width:1rem;height:1rem}.chat-title{text-align:left;cursor:pointer;flex:1;gap:.05rem;min-width:0;display:grid}.chat-title:hover strong{text-underline-offset:2px;text-decoration:underline}.chat-title strong{font-size:var(--text-sm)}.chat-title span{font-size:var(--text-xs);color:var(--muted)}.bubble .meta{font-size:var(--text-xs);opacity:.75}.sheet-bg{z-index:30;background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.sheet{background:var(--bg-elevated);border:1px solid var(--line);border-radius:16px;width:min(24rem,100%);padding:1.15rem 1.1rem 1.1rem;position:relative;box-shadow:0 24px 64px #00000040}.sheet-close{width:2rem;height:2rem;color:var(--muted);border-radius:999px;place-items:center;display:grid;position:absolute;top:.65rem;right:.65rem}.sheet-close:hover{background:var(--bordo-soft);color:var(--fg)}.sheet-close svg{width:1.05rem;height:1.05rem}.sheet h2{font-size:var(--text-lg);margin:0 1.75rem .3rem 0;font-weight:650}.sheet p{color:var(--muted);font-size:var(--text-sm);margin:0 0 .85rem}.preview-meta{color:var(--muted);font-size:var(--text-sm);word-break:break-all;margin:0 0 .85rem}.sheet-actions{gap:.4rem;display:grid}.btn{min-height:2.5rem;font-weight:600;font-size:var(--text-sm);border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.55rem .85rem;display:inline-flex}.btn svg{flex-shrink:0;width:1.05rem;height:1.05rem}.btn-primary{background:var(--bordo);color:#fff}.btn-muted{border:1px solid var(--line);background:0 0}.qr-box{place-items:center;margin-bottom:.7rem;display:grid}.qr-box canvas{background:#fff;border-radius:12px;padding:.45rem;width:168px!important;height:168px!important}.code-line{text-align:center;color:var(--muted);font-size:var(--text-sm);margin-bottom:.75rem}.code-line b{color:var(--fg);letter-spacing:.1em}.toast{left:50%;bottom:max(1rem, env(safe-area-inset-bottom));z-index:40;background:var(--bg-elevated);border:1px solid var(--line);opacity:0;border-radius:14px;width:min(22rem,100% - 1.5rem);padding:.8rem;transition:all .2s;position:fixed;translate:-50% 120%}.toast.show{opacity:1;translate:-50%}.toast p{font-size:var(--text-sm);word-break:break-word;-webkit-user-select:text;user-select:text;margin:0 0 .55rem}.toast-actions{gap:.4rem;display:flex}.hidden{display:none!important}
