:root{color-scheme:dark;--bg: #080c15;--bg-glow: #0d1424;--panel: #0e1422;--panel-soft: #121a2b;--border: #1f2a3d;--border-strong: #2c3a52;--text: #e6edf7;--muted: #8a98ad;--accent: #60a5fa;--accent-strong: #3b82f6;--accent-soft: rgba(96, 165, 250, .14);--on-accent: #0b1a3a;--success: #34d399;--success-soft: rgba(52, 211, 153, .14);--warning: #fbbf24;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .14);--ring: rgba(148, 163, 184, .14);--shadow: 0 18px 40px rgba(0, 0, 0, .35);--bubble-mine: #1e40af;--bubble-mine-text: #dbeafe;--chat-bg: #0a101c;--hero-top: #1d4ed8;--hero-bottom: #1e3a8a;--hero-shadow: rgba(0, 0, 0, .4);--mono: ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, monospace}@media(prefers-color-scheme:light){:root{color-scheme:light;--bg: #eef2f7;--bg-glow: #dbeafe;--panel: #ffffff;--panel-soft: #f6f8fb;--border: #dbe3ee;--border-strong: #c3cfdf;--text: #0f172a;--muted: #55657c;--accent: #2563eb;--accent-strong: #1d4ed8;--accent-soft: rgba(37, 99, 235, .1);--on-accent: #ffffff;--success: #059669;--success-soft: rgba(5, 150, 105, .1);--warning: #b45309;--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .08);--ring: rgba(15, 23, 42, .1);--shadow: 0 18px 40px rgba(15, 23, 42, .08);--bubble-mine: #dbeafe;--bubble-mine-text: #0f172a;--chat-bg: #f1f5f9;--hero-top: #2563eb;--hero-bottom: #1d4ed8;--hero-shadow: rgba(37, 99, 235, .25)}}*{box-sizing:border-box}[hidden]{display:none!important}html{background-color:var(--bg)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{border-radius:999px;background:var(--border-strong)}::-webkit-scrollbar-track{background:transparent}body{margin:0;min-height:100vh;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background:radial-gradient(circle at 30% -10%,var(--bg-glow) 0%,var(--bg) 55%) fixed;color:var(--text);overflow-x:hidden}body.sheet-locked{overflow:hidden}button{cursor:pointer;font:inherit}button:focus-visible,a:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent)}h1,h2,h3{letter-spacing:-.01em}h2{margin:0;font-size:1.2rem}.icon{width:1.15em;height:1.15em;flex-shrink:0}.mono{font-family:var(--mono);font-size:.78rem;color:var(--muted)}.eyebrow{margin:0 0 2px;color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.field-help{margin:0;color:var(--muted);font-size:.85rem}.topbar{max-width:1320px;margin:0 auto;padding:24px 32px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:12px;min-width:0}.back-button{flex-shrink:0;text-decoration:none}@media(display-mode:standalone){.back-button{display:none}}.brand-logo,.brand-logo img{display:block;height:30px;width:auto}h1{margin:0;font-size:1.3rem;font-weight:800}.tagline{margin:6px 0 0;color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.topbar-actions{display:flex;align-items:center;gap:10px}.pill{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--panel);font-size:.82rem;font-weight:600;white-space:nowrap}.device-pill{color:var(--muted);font-weight:500}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--warning)}.server-pill[data-state=connected] .status-dot{background:var(--success);box-shadow:0 0 0 4px var(--success-soft)}.server-pill[data-state=offline] .status-dot{background:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}.icon-button{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--panel);color:var(--text);transition:border-color .15s ease,background .15s ease,transform .15s ease}.icon-button:hover{border-color:var(--accent);background:var(--accent-soft)}.icon-button.small{width:34px;height:34px;border-radius:10px}.icon-button.small .icon{width:16px;height:16px}.install-button{position:relative;border:none;background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:var(--on-accent);box-shadow:0 6px 18px #2563eb59}.install-button:hover{background:linear-gradient(135deg,var(--accent),var(--accent-strong));transform:translateY(-1px)}.install-button .icon{width:20px;height:20px}.install-button.ready:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;border:2px solid var(--accent);opacity:0;animation:install-pulse 2.4s ease-out infinite}@keyframes install-pulse{0%{opacity:.7;transform:scale(.94)}to{opacity:0;transform:scale(1.18)}}.layout{max-width:1320px;margin:0 auto;padding:0 32px 110px;display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}.layout:has(.sheet[data-open=false]):has(.recent-panel[hidden]):has(.chat-panel[data-open=false]){grid-template-columns:minmax(0,1fr)}.layout:has(.sheet[data-open=false]):has(.recent-panel[hidden]):has(.chat-panel[data-open=false]) .side-column{display:none}.layout.chat-open .side-column>.sheet,.layout.chat-open .side-column>.recent-panel{display:none}.panel{background:var(--panel);border:1px solid var(--border);border-radius:22px;padding:24px;box-shadow:var(--shadow)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.side-column{display:grid;gap:24px;position:sticky;top:24px;min-width:0}.radar-panel{--on-hero: #ffffff;--on-hero-muted: rgba(255, 255, 255, .82);--hero-glass: rgba(255, 255, 255, .16);--hero-glass-border: rgba(255, 255, 255, .38);position:relative;min-height:0;overflow:hidden;border:none;background:linear-gradient(180deg,var(--hero-top) 0%,var(--hero-bottom) 100%);color:var(--on-hero);box-shadow:0 24px 60px var(--hero-shadow)}.radar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.radar-head h2{font-size:1.6rem;font-weight:800;letter-spacing:-.02em}.radar-status{margin:4px 0 0;color:var(--on-hero-muted);font-size:.95rem}.device-name{margin-top:8px;color:var(--on-hero-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:50%}.radar{--node-size: 64px;--self-size: 104px;--label-width: 150px;position:relative;width:min(100%,540px);aspect-ratio:1;margin:8px auto 68px}.radar[data-density=dense]{--node-size: 54px;--label-width: 120px}.radar[data-density=crowded]{--node-size: 46px;--self-size: 88px;--label-width: 100px}.radar[data-density=dense] .node-label,.radar[data-density=crowded] .node-label{font-size:.8rem}.radar[data-density=crowded] .node-status{font-size:.7rem}.radar[data-density=crowded] .node-circle .icon{width:20px;height:20px}.radar[data-density=dense] .radar-node.searching,.radar[data-density=crowded] .radar-node.searching{display:none}.radar-ring{position:absolute;top:50%;left:50%;border-radius:50%;background:rgba(255,255,255,var(--ring-alpha));transform:translate(-50%,-50%);animation:ring-breathe 4s ease-in-out infinite;pointer-events:none}.ring-1{--ring-alpha: .1;width:44%;height:44%}.ring-2{--ring-alpha: .07;width:67%;height:67%;animation-delay:.25s}.ring-3{--ring-alpha: .05;width:90%;height:90%;animation-delay:.5s}@keyframes ring-breathe{50%{transform:translate(-50%,-50%) scale(1.035)}}.radar-pulse{position:absolute;top:50%;left:50%;width:90%;height:90%;border-radius:50%;background:radial-gradient(circle,transparent 55%,rgba(255,255,255,.22) 100%);transform:translate(-50%,-50%) scale(.18);opacity:0;animation:radar-pulse 3.2s cubic-bezier(.2,.6,.3,1) infinite;pointer-events:none}.radar-pulse.delayed{animation-delay:1.6s}@keyframes radar-pulse{0%{opacity:.9;transform:translate(-50%,-50%) scale(.18)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.radar-node{--x: 50%;--y: 50%;position:absolute;left:var(--x);top:var(--y);width:var(--label-width);display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;border:none;background:none;color:var(--on-hero);text-align:center;transform:translate(-50%,calc(var(--node-size) / -2));transition:left .5s ease,top .5s ease}.node-circle{display:grid;place-items:center;width:var(--node-size);height:var(--node-size);border:1px solid var(--hero-glass-border);border-radius:50%;background:var(--hero-glass);color:var(--on-hero);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease}.node-circle .icon{width:24px;height:24px}.node-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:800}.node-status{font-size:.78rem;color:var(--on-hero-muted)}.node-status[data-state=selected]{color:var(--on-hero);font-weight:700}.node-status[data-state=ready]{color:#bbf7d0}.node-status[data-state=connecting]{color:#fde68a}.radar-node.peer:hover .node-circle{border-color:var(--on-hero);background:#ffffff42;transform:scale(1.06)}.radar-node.peer.selected .node-circle{border-color:transparent;background:#fff;color:var(--hero-bottom);box-shadow:0 0 0 8px #fff3,0 12px 32px #081e5a4d}.radar-node.peer:focus-visible{outline:none}.radar-node.peer:focus-visible .node-circle{outline:2px solid var(--on-hero);outline-offset:4px}.radar-node.entering{animation:node-in .45s cubic-bezier(.2,.8,.2,1)}@keyframes node-in{0%{opacity:0;transform:translate(-50%,calc(var(--node-size) / -2)) scale(.6)}}.radar-node.self{--node-size: var(--self-size);pointer-events:none}.radar-node.self .node-circle{gap:4px;align-content:center;border:none;background:#ffffff57;box-shadow:0 0 0 14px #ffffff14,0 20px 50px #081e5a40}.radar-node.self .node-circle .icon{width:38px;height:38px}.self-label{font-size:.85rem;font-weight:800}.radar-node.searching{--x: 50%;--y: calc(100% + 10px) ;--node-size: 44px;pointer-events:none}.radar-node.searching .node-circle{border:1px dashed rgba(255,255,255,.55);background:transparent;color:var(--on-hero-muted);font-weight:700;letter-spacing:1px}.radar-hint{display:flex;flex-direction:column;align-items:center;gap:14px;color:var(--on-hero-muted);font-size:.95rem;text-align:center}.radar-hint p{margin:0}.radar-hint .secondary-button{width:min(100%,320px);padding:15px 24px;border:none;border-radius:10px;background:#fff;color:var(--hero-bottom);font-size:.9rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;box-shadow:0 10px 30px #081e5a33}.radar-hint .secondary-button:focus-visible{outline-color:#fff;outline-offset:3px}.qr-dialog{text-align:center}.qr-code{width:min(260px,100%);margin:0 auto;padding:10px;border-radius:16px;background:#fff}.qr-code svg{display:block;width:100%;height:auto}.qr-caption{margin:16px 0 8px;color:var(--muted);font-size:.9rem}.share-url{font-family:var(--mono);font-size:.9rem;overflow-wrap:anywhere}.sheet{display:grid;gap:18px}.sheet[data-open=false]{display:none}.sheet[data-open=true]{animation:sheet-in-right .32s cubic-bezier(.2,.8,.2,1)}.sheet[data-open=closing]{animation:sheet-out-right .22s ease-in forwards}.sheet.bump{animation:sheet-bump .3s ease}@keyframes sheet-in-right{0%{opacity:0;transform:translate(60px)}}@keyframes sheet-out-right{to{opacity:0;transform:translate(60px)}}@keyframes sheet-bump{50%{transform:translate(-6px)}}.sheet-handle{display:none}.sheet-header{display:flex;align-items:center;gap:14px}.sheet-device-icon{display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;border-radius:14px;background:var(--accent-soft);color:var(--accent)}.sheet-device-icon .icon{width:22px;height:22px}.sheet-title{min-width:0;flex:1}.sheet-title h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-backdrop{display:none}.sheet-files{display:grid;gap:12px}.dropzone{width:100%;display:grid;justify-items:center;gap:6px;padding:34px 16px;border:1.5px dashed var(--border-strong);border-radius:16px;background:transparent;color:var(--text);transition:border-color .15s ease,background .15s ease}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.dropzone-icon{color:var(--accent)}.dropzone-icon .icon{width:30px;height:30px}.dropzone-hint{color:var(--muted);font-size:.85rem}.selected-files{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-height:220px;overflow-y:auto}.selected-files li{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 10px;border:1px solid var(--border);border-radius:12px;background:var(--panel-soft)}.selected-files div{display:grid;min-width:0;flex:1}.selected-files strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}.selected-files small{color:var(--muted)}.selected-file-icon{color:var(--accent)}.send-button{width:100%;height:52px;border-radius:14px;font-size:1rem}.send-button:disabled{cursor:not-allowed;opacity:.45;transform:none}.recent-panel h2{font-size:1.05rem}.recent-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:14px;max-height:520px;overflow-y:auto}.recent-item{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:start;gap:12px}.recent-icon{display:grid;place-items:center;width:36px;height:36px;overflow:hidden;border-radius:10px;background:var(--panel-soft);color:var(--muted)}.recent-icon .icon{width:17px;height:17px}.recent-icon.preview img{width:100%;height:100%;object-fit:cover}.recent-item[data-state=done] .recent-icon:not(.preview){background:var(--success-soft);color:var(--success)}.recent-item[data-state=failed] .recent-icon,.recent-item[data-state=refused] .recent-icon,.recent-item[data-state=expired] .recent-icon,.recent-item[data-state=cancelled] .recent-icon{background:var(--danger-soft);color:var(--danger)}.recent-main{display:grid;gap:6px;min-width:0}.recent-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.recent-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.92rem}.recent-side{flex-shrink:0;font-family:var(--mono);font-size:.75rem;color:var(--muted)}.recent-item[data-state=active] .recent-side{color:var(--text)}.recent-item[data-state=failed] .recent-side,.recent-item[data-state=refused] .recent-side{color:var(--danger)}.recent-sub{margin:0;color:var(--muted);font-size:.78rem;overflow-wrap:anywhere}.recent-main progress{width:100%;height:5px;border:none;border-radius:999px;overflow:hidden;background:var(--panel-soft);-webkit-appearance:none;-moz-appearance:none;appearance:none}.recent-main progress::-webkit-progress-bar{background:var(--panel-soft)}.recent-main progress::-webkit-progress-value{background:var(--accent);border-radius:999px;transition:width .2s ease}.recent-main progress::-moz-progress-bar{background:var(--accent);border-radius:999px}.recent-actions{display:flex;gap:6px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:12px;padding:12px 18px;font-weight:700;transition:transform .15s ease,opacity .15s ease}.primary-button{background:var(--accent);color:var(--on-accent)}.secondary-button{background:transparent;border:1px solid var(--border-strong);color:var(--text)}.primary-button:hover:not(:disabled),.secondary-button:hover:not(:disabled){transform:translateY(-1px)}.small-button{padding:8px 12px;font-size:.85rem}.text-button{border:none;background:none;color:var(--accent);font-weight:600;padding:4px}.toasts{position:fixed;right:24px;bottom:100px;z-index:60;display:grid;gap:10px;width:min(380px,calc(100vw - 32px))}.toast{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 16px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:14px;background:var(--panel);box-shadow:var(--shadow);animation:toast-in .25s ease-out}.toast[data-tone=success]{border-left-color:var(--success)}.toast[data-tone=error]{border-left-color:var(--danger)}.toast.leaving{opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease}.toast-body{display:grid;gap:2px;min-width:0;flex:1;font-size:.88rem}.toast-body span{color:var(--muted)}.toast-body strong+span{font-size:.82rem}.toast-close{display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:8px;background:none;color:var(--muted)}.toast-close .icon{width:15px;height:15px}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.modal,.install-dialog{width:min(460px,calc(100vw - 32px));max-height:calc(100vh - 32px);padding:24px;border:1px solid var(--border);border-radius:22px;background:var(--panel);color:var(--text);box-shadow:0 30px 80px #00000080}.modal[open]{animation:modal-in .22s ease-out}@keyframes modal-in{0%{opacity:0;transform:translateY(12px) scale(.98)}}.modal::backdrop,.install-dialog::backdrop{background:#02060f99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.recent-item.openable{margin:-6px;padding:6px;border-radius:12px;cursor:pointer}.recent-item.openable:hover,.recent-item.openable:focus-visible{background:var(--panel-soft)}.modal.viewer-dialog{width:min(900px,calc(100vw - 32px))}.viewer-dialog[open]{display:flex;flex-direction:column}.viewer-heading{display:grid;gap:2px;min-width:0}.viewer-heading h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.1rem}.viewer-heading small{color:var(--muted)}.viewer-body{display:grid;place-items:center;gap:12px;min-height:160px;overflow:auto;border-radius:14px;background:var(--panel-soft)}.viewer-body img,.viewer-body video{display:block;max-width:100%;max-height:calc(100vh - 260px);object-fit:contain}.viewer-body audio{width:calc(100% - 32px)}.viewer-body iframe{width:100%;height:calc(100vh - 260px);border:0}.viewer-text{place-self:stretch;margin:0;padding:16px;max-height:calc(100vh - 260px);overflow:auto;font-family:var(--mono);font-size:.82rem;white-space:pre-wrap;overflow-wrap:anywhere}.viewer-fallback{display:grid;justify-items:center;gap:10px;padding:28px 20px;color:var(--muted);text-align:center}.viewer-fallback .icon{width:36px;height:36px}.viewer-fallback p{margin:0;max-width:40ch}.profile-fields{display:grid;gap:8px}.profile-fields>label{color:var(--muted);font-size:.82rem;font-weight:600}.profile-fields input[type=text]{border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--panel-soft);color:var(--text);font:inherit}.profile-fields input[readonly]{opacity:.7;cursor:not-allowed}#push-section{display:grid;gap:8px;margin-top:10px}.install-hero{display:flex;align-items:center;gap:16px}.install-hero h2{margin:0 0 4px;font-size:1.3rem}.install-hero p{margin:0;color:var(--muted);font-size:.9rem}.install-app-icon{width:64px;height:64px;border-radius:16px}.dialog-close{margin-left:auto;align-self:flex-start;width:36px;height:36px}.install-benefits{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:10px}.install-benefits li{display:flex;align-items:center;gap:10px}.install-benefits .icon{color:var(--accent)}.install-notice{display:flex;gap:10px;margin-top:18px;padding:12px 14px;border-radius:12px;background:var(--accent-soft);font-size:.9rem}.install-notice .icon{margin-top:2px;color:var(--accent)}.install-notice p{margin:0}.install-steps-title{margin:22px 0 10px;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.install-steps{list-style:none;padding:0;margin:0;display:grid;gap:10px}.install-steps li{display:flex;align-items:flex-start;gap:12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--panel-soft)}.step-icon{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.chat-fab{position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:50;display:grid;place-items:center;width:60px;height:60px;padding:0;border:none;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:var(--on-accent);box-shadow:0 10px 28px #2563eb66;transition:transform .15s ease,box-shadow .15s ease}.chat-fab:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 14px 34px #2563eb80}.chat-fab .icon{width:26px;height:26px}.chat-fab[aria-pressed=true],body.sheet-locked .chat-fab{display:none}.chat-badge{position:absolute;top:-4px;right:-4px;min-width:19px;height:19px;padding:0 5px;border:2px solid var(--bg);border-radius:999px;background:var(--danger);color:#fff;font-size:.68rem;font-weight:800;line-height:15px;text-align:center}.chat-panel{display:flex;flex-direction:column;height:calc(100vh - 140px);min-height:460px;padding:0;overflow:hidden}.chat-panel[data-open=false]{display:none}.chat-panel[data-open=true]{animation:sheet-in-right .3s cubic-bezier(.2,.8,.2,1)}.chat-panel.dragging{outline:2px dashed var(--accent);outline-offset:-6px}.chat-header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.chat-header-icon{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border-radius:12px;background:var(--accent-soft);color:var(--accent)}.chat-title{flex:1;min-width:0}.chat-title h2{font-size:1.05rem}.chat-presence{margin:2px 0 0;color:var(--success);font-size:.78rem}.chat-messages{flex:1;display:flex;flex-direction:column;gap:3px;padding:14px 14px 18px;overflow-y:auto;background:var(--chat-bg);overscroll-behavior:contain}.chat-empty{margin:auto;color:var(--muted);font-size:.9rem;line-height:1.6;text-align:center}.chat-day{align-self:center;margin:12px 0 6px;padding:4px 12px;border-radius:999px;background:var(--panel);color:var(--muted);font-size:.72rem;font-weight:600}.chat-day:first-letter{text-transform:uppercase}.chat-row{display:flex}.chat-row.mine{justify-content:flex-end}.chat-row.group-start{margin-top:8px}.chat-bubble{max-width:80%;padding:7px 10px 5px;border-radius:14px;background:var(--panel);border:1px solid var(--border);box-shadow:0 1px 2px #0000001f}.chat-row.mine .chat-bubble{border-color:transparent;background:var(--bubble-mine);color:var(--bubble-mine-text)}.chat-row.theirs.group-start .chat-bubble{border-top-left-radius:4px}.chat-row.mine.group-start .chat-bubble{border-top-right-radius:4px}.chat-author{display:block;margin-bottom:2px;font-size:.78rem;font-weight:700}.chat-text{margin:0;font-size:.93rem;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}.chat-text a{color:inherit;text-decoration:underline}.chat-time{display:block;margin-top:2px;font-size:.68rem;opacity:.65;text-align:right}.chat-file{display:grid;gap:6px;min-width:min(230px,60vw)}.chat-image img{display:block;max-width:100%;max-height:260px;border-radius:10px;object-fit:cover}.chat-file-row{display:flex;align-items:center;gap:10px;padding:6px 4px 2px}.chat-file-row div{display:grid;min-width:0;flex:1}.chat-file-row strong{overflow:hidden;font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.chat-file-row small{opacity:.7}.chat-file-icon{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.chat-row.mine .chat-file-icon{background:#ffffff24;color:inherit}.chat-download{color:inherit;text-decoration:none}.chat-uploads{margin:0;padding:0;list-style:none}.chat-uploads li{display:flex;align-items:center;gap:10px;padding:8px 14px;border-top:1px solid var(--border)}.chat-uploads li div{display:grid;gap:4px;min-width:0;flex:1}.chat-uploads strong{overflow:hidden;font-size:.85rem;text-overflow:ellipsis;white-space:nowrap}.chat-uploads progress{width:100%;height:4px;border:none;border-radius:999px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--panel-soft)}.chat-uploads progress::-webkit-progress-bar{background:var(--panel-soft)}.chat-uploads progress::-webkit-progress-value{background:var(--accent)}.chat-uploads progress::-moz-progress-bar{background:var(--accent)}.chat-composer{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--border);background:var(--panel)}.chat-composer textarea{flex:1;min-height:42px;max-height:132px;resize:none;padding:10px 14px;border:1px solid var(--border);border-radius:21px;background:var(--panel-soft);color:var(--text);font:inherit;font-size:.93rem;line-height:1.4}.chat-composer textarea:focus{outline:none;border-color:var(--accent)}.chat-attach{width:42px;height:42px;flex-shrink:0;border-radius:50%}.chat-attach.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.emoji-picker{max-height:260px;overflow-y:auto;padding:6px 12px 10px;border-top:1px solid var(--border);background:var(--panel);overscroll-behavior:contain}.emoji-section{position:sticky;top:-6px;margin:0;padding:8px 2px 4px;background:var(--panel);color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr))}.emoji-choice{display:grid;place-items:center;height:40px;padding:0;border:none;border-radius:10px;background:none;font-size:1.45rem;line-height:1;transition:background .1s ease,transform .1s ease}.emoji-choice:hover,.emoji-choice:focus-visible{background:var(--accent-soft);transform:scale(1.12)}.chat-bubble.emoji-bubble{border-color:transparent;background:transparent;box-shadow:none}.chat-row.mine .chat-bubble.emoji-bubble{background:transparent;color:var(--text)}.chat-text.emoji-only{font-size:2.4rem;line-height:1.15}.chat-send{display:grid;place-items:center;width:42px;height:42px;flex-shrink:0;padding:0;border:none;border-radius:50%;background:var(--accent);color:var(--on-accent);transition:opacity .15s ease,transform .15s ease}.chat-send:hover:not(:disabled){transform:scale(1.05)}.chat-send:disabled{cursor:default;opacity:.4}@media(max-width:899px){.topbar{padding:16px}.layout{grid-template-columns:minmax(0,1fr);padding:0 16px 96px;gap:16px}.side-column{position:static;gap:16px}.panel{padding:18px;border-radius:20px}.radar-panel{min-height:0}.radar-head h2{font-size:1.2rem}.radar{--node-size: 52px;--self-size: 92px;--label-width: 104px;margin:18px auto 74px}.radar[data-density=dense]{--node-size: 44px;--self-size: 82px;--label-width: 84px}.radar[data-density=crowded]{--node-size: 38px;--self-size: 74px;--label-width: 68px}.radar[data-density=dense] .node-label,.radar[data-density=crowded] .node-label{font-size:.7rem}.radar[data-density=dense],.radar[data-density=crowded]{aspect-ratio:3 / 4;margin-bottom:40px}.radar[data-density=crowded]{aspect-ratio:2 / 3}.radar[data-density=dense] .radar-node.peer .node-status,.radar[data-density=crowded] .radar-node.peer .node-status{display:none}.radar[data-density=dense] .node-circle .icon,.radar[data-density=crowded] .node-circle .icon{width:17px;height:17px}.node-circle .icon{width:20px;height:20px}.node-label{font-size:.8rem}.node-status{font-size:.7rem}.self-label{font-size:.75rem}.radar-node.searching{--node-size: 36px;--y: calc(100% + 16px) }.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;max-height:90vh;overflow-y:auto;padding:8px 18px calc(18px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;border-bottom:none;transition:transform .15s ease}.sheet[data-open=true]{animation:sheet-in-up .32s cubic-bezier(.2,.8,.2,1)}.sheet[data-open=closing]{animation:sheet-out-down .22s ease-in forwards}.sheet.bump{animation:none}@keyframes sheet-in-up{0%{transform:translateY(100%)}}@keyframes sheet-out-down{to{transform:translateY(100%)}}.sheet-handle{display:block;width:44px;height:5px;margin:4px auto 0;border-radius:999px;background:var(--border-strong);touch-action:none;cursor:grab;box-sizing:content-box;border:10px solid transparent;background-clip:padding-box}.sheet-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#02060f8c;animation:fade-in .2s ease-out}.sheet-platform{display:none}.recent-list{max-height:none}.toasts{left:16px;right:16px;bottom:calc(88px + env(safe-area-inset-bottom));width:auto}.chat-fab{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));width:56px;height:56px}.chat-panel[data-open=true]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;height:100vh;height:100dvh;border:none;border-radius:0;animation:sheet-in-up .28s cubic-bezier(.2,.8,.2,1)}.chat-header{padding-top:calc(14px + env(safe-area-inset-top))}.chat-composer{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.chat-bubble{max-width:86%}}body.chat-locked{overflow:hidden}@keyframes fade-in{0%{opacity:0}}@media(max-width:640px){.device-pill,.tagline{display:none}.server-pill{width:36px;padding:0;justify-content:center}.server-pill .pill-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.topbar-actions{gap:6px}.topbar-actions .icon-button,.back-button{width:40px;height:40px}.radar-head{gap:10px}.device-name{margin-top:4px;max-width:45%;font-size:.8rem}}@media(max-width:420px){.brand-logo,.brand-logo img{height:22px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
