:root{color-scheme:dark;--bg: #04080f;--bg-elevated: rgba(12, 20, 34, .96);--bg-panel: rgba(14, 25, 42, .85);--bg-input: rgba(7, 14, 25, .95);--line: rgba(138, 169, 213, .14);--line-strong: rgba(173, 198, 255, .26);--text: #eef4ff;--muted: #8fa8c8;--accent: #95f2d7;--accent-strong: #72b6ff;--warning: #ffbf7b;--danger: #ffb2bf;--header-h: 3.25rem;--nav-h: 3.5rem;--shadow: 0 8px 32px rgba(0, 0, 0, .5);font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);overscroll-behavior:none}button,input,textarea{font:inherit;color:inherit}button{border:0;cursor:pointer;transition:opacity .12s ease,transform .1s ease,background .12s ease}button:disabled{opacity:.45;cursor:not-allowed}button:not(:disabled):active{transform:scale(.96)}p{margin:0}#app{height:100dvh;height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at top left,rgba(90,151,255,.12),transparent 30%),radial-gradient(circle at bottom right,rgba(149,242,215,.09),transparent 30%),linear-gradient(180deg,#070f19,#04080f)}#app-header{flex-shrink:0;height:var(--header-h);padding:0 .5rem;padding-top:env(safe-area-inset-top);display:flex;align-items:center;gap:.25rem;background:#060c16e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:10}#app-header .header-title{flex:1;font-size:1.05rem;font-weight:700;letter-spacing:-.01em;padding:0 .25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#view{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}#bottom-nav{flex-shrink:0;display:flex;background:#060c16eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}#bottom-nav .tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.6rem .5rem;font-size:.7rem;letter-spacing:.02em;color:var(--muted);background:none;border-radius:0;min-height:var(--nav-h);position:relative}#bottom-nav .tab-btn.active{color:var(--accent)}#bottom-nav .tab-btn svg{width:1.4rem;height:1.4rem}.tab-badge{position:absolute;top:.45rem;left:50%;margin-left:.5rem;width:.5rem;height:.5rem;border-radius:50%;background:var(--danger)}.icon-btn{width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;background:none;color:var(--text);flex-shrink:0}.icon-btn:not(:disabled):hover{background:#ffffff0f}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:40;opacity:0;pointer-events:none;transition:opacity .28s ease}.drawer-scrim.open{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;left:0;bottom:0;width:min(82vw,320px);background:#080f1bfa;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-right:1px solid var(--line);z-index:50;transform:translate(-100%);transition:transform .28s ease;display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.drawer.open{transform:translate(0)}.drawer-header{padding:1.1rem 1rem .85rem;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.75rem}.drawer-app-name{font-size:1.1rem;font-weight:800;letter-spacing:-.02em;color:var(--accent)}.drawer-section{padding:.85rem 1rem;border-bottom:1px solid var(--line);display:grid;gap:.65rem}.drawer-section-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.drawer-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.drawer-label{font-size:.92rem;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-sub{font-size:.78rem;color:var(--muted);word-break:break-all}.btn{border-radius:999px;min-height:2.75rem;padding:.65rem 1.1rem;font-size:.9rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;white-space:nowrap}.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#04101c}.btn-secondary{background:#121f34d9;color:var(--text);border:1px solid var(--line-strong)}.btn-ghost{background:none;color:var(--muted);border:1px solid var(--line);padding:.5rem .85rem;min-height:2.25rem;font-size:.82rem}.btn-sm{min-height:2rem;padding:.4rem .85rem;font-size:.82rem}.input{width:100%;padding:.85rem 1rem;border-radius:14px;border:1px solid var(--line);background:var(--bg-input);color:var(--text);font-size:.95rem;line-height:1.5}.input:focus{outline:2px solid rgba(114,182,255,.5);outline-offset:2px}.input::placeholder{color:var(--muted);opacity:.7}.field{display:grid;gap:.4rem}.field-label{font-size:.8rem;color:var(--muted);letter-spacing:.02em}.contact-row{display:flex;align-items:center;gap:.85rem;padding:.75rem 1rem;cursor:pointer;border-bottom:1px solid var(--line);transition:background .12s ease;min-height:4.25rem;text-decoration:none;color:inherit}.contact-row:active{background:#ffffff0a}.contact-info{flex:1;min-width:0;display:grid;gap:.2rem}.contact-name{font-size:.97rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.contact-preview{font-size:.83rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-time{font-size:.75rem;color:var(--muted);flex-shrink:0;align-self:flex-start;margin-top:.2rem}.avatar{width:2.85rem;height:2.85rem;border-radius:50%;display:grid;place-items:center;font-size:1.1rem;font-weight:700;flex-shrink:0;color:var(--text);letter-spacing:-.01em}.avatar-sm{width:2.1rem;height:2.1rem;font-size:.85rem}.fab{position:fixed;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + .85rem);right:1.1rem;width:3.4rem;height:3.4rem;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#04101c;display:grid;place-items:center;box-shadow:0 4px 20px #72b6ff59;z-index:20;font-size:1.5rem;font-weight:300;line-height:1}.fab:not(:disabled):active{transform:scale(.92)}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:40;opacity:0;pointer-events:none;transition:opacity .28s ease}.sheet-scrim.open{opacity:1;pointer-events:auto}.sheet{position:fixed;bottom:0;left:0;right:0;background:#0a1220fc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px 20px 0 0;border-top:1px solid var(--line-strong);padding:0 1.1rem calc(1.5rem + env(safe-area-inset-bottom));z-index:50;max-height:85vh;overflow-y:auto;transform:translateY(100%);transition:transform .28s ease}.sheet.open{transform:translateY(0)}.sheet-handle{width:2.5rem;height:.28rem;border-radius:999px;background:var(--line-strong);margin:.75rem auto 1.1rem}.sheet-title{font-size:1rem;font-weight:700;margin-bottom:1rem;letter-spacing:-.01em}.sheet-divider{height:1px;background:var(--line);margin:1rem 0}.chat-view{display:flex;flex-direction:column;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:radial-gradient(circle at top left,rgba(90,151,255,.08),transparent 30%),linear-gradient(180deg,#070f19,#04080f)}.chat-header{flex-shrink:0;height:var(--header-h);padding:0 .5rem;padding-top:env(safe-area-inset-top);display:flex;align-items:center;gap:.25rem;background:#060c16eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:10}.chat-header-info{flex:1;min-width:0;display:grid;gap:0}.chat-header-name{font-size:.97rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-sub{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-messages{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding:.75rem .85rem;display:flex;flex-direction:column;gap:.3rem}.chat-messages:empty:after{content:"No messages yet. Send the first encrypted line.";color:var(--muted);font-size:.88rem;text-align:center;margin:auto;padding:2rem}.chat-input-bar{flex-shrink:0;padding:.6rem .75rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom));background:#060c16eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;align-items:flex-end;gap:.6rem}.auto-grow{flex:1;min-height:2.5rem;max-height:6.5rem;resize:none;overflow-y:auto;padding:.6rem .9rem;border-radius:1.4rem;border:1px solid var(--line);background:var(--bg-input);color:var(--text);line-height:1.45;font-size:.95rem;scrollbar-width:none}.auto-grow::-webkit-scrollbar{display:none}.auto-grow:focus{outline:2px solid rgba(114,182,255,.45);outline-offset:1px}.send-btn{width:2.5rem;height:2.5rem;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#04101c;display:grid;place-items:center;flex-shrink:0;box-shadow:0 2px 12px #72b6ff4d}.send-btn:disabled{background:#ffffff1a;color:var(--muted);box-shadow:none}.message-bubble{max-width:80%;display:flex;flex-direction:column;gap:.2rem;word-break:break-word}.message-incoming{align-self:flex-start}.message-outgoing{align-self:flex-end}.bubble-text{padding:.6rem .9rem;border-radius:18px;font-size:.95rem;line-height:1.5}.message-incoming .bubble-text{background:#111d30f2;border-radius:4px 18px 18px}.message-outgoing .bubble-text{background:#4b8bff38;border-radius:18px 4px 18px 18px}.bubble-meta{font-size:.72rem;color:var(--muted);padding:0 .5rem}.message-outgoing .bubble-meta{text-align:right}.bubble-status{color:var(--accent)}.message-incoming+.message-incoming .bubble-text{border-radius:4px 18px 18px 4px}.message-outgoing+.message-outgoing .bubble-text{border-radius:18px 4px 4px 18px}.alert-list{padding:.75rem;display:grid;gap:.6rem}.alert-card{padding:.9rem 1rem;border-radius:16px;border:1px solid var(--line);background:#0c1422c7;display:grid;gap:.4rem}.alert-headline{font-weight:700;font-size:.95rem;color:var(--text)}.alert-body{font-size:.88rem;color:var(--muted);line-height:1.55}.alert-time{font-size:.75rem;color:var(--muted);opacity:.75}.notice{padding:.85rem 1rem;border-radius:14px;border:1px solid rgba(153,180,225,.1);background:#0f1a2ccc;color:var(--muted);font-size:.88rem;line-height:1.55}.hash{overflow-wrap:anywhere;font-family:IBM Plex Mono,Cascadia Code,Consolas,monospace;color:#c8d8f4;line-height:1.6;font-size:.88rem}.status-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;flex-shrink:0}.status-dot--on{background:var(--accent);box-shadow:0 0 .5rem var(--accent)}.status-dot--off{background:var(--warning);box-shadow:0 0 .5rem var(--warning)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 2rem;gap:.85rem;min-height:60%}.empty-state-icon{font-size:3rem;opacity:.35}.empty-state-title{font-size:1rem;font-weight:700;color:var(--text)}.empty-state-sub{font-size:.88rem;color:var(--muted);line-height:1.55;max-width:22rem}.pairing-view{padding:1.5rem 1.1rem calc(1.5rem + env(safe-area-inset-bottom));display:grid;gap:1rem;max-width:30rem;margin:0 auto}.pairing-card{padding:1.1rem;border-radius:18px;border:1px solid var(--line);background:#0a1220d9;display:grid;gap:.75rem}.pairing-kicker{font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.pairing-title{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;color:var(--text);margin:0}.pairing-actions{display:flex;flex-wrap:wrap;gap:.6rem}.overflow-menu{position:absolute;top:calc(var(--header-h) - .25rem);right:.5rem;background:#0c1626fa;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--line-strong);border-radius:14px;padding:.35rem;z-index:30;min-width:11rem;box-shadow:var(--shadow)}.overflow-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.7rem .85rem;border-radius:10px;font-size:.9rem;color:var(--text);background:none;text-align:left}.overflow-item:not(:disabled):hover{background:#ffffff0f}.error{color:var(--danger)}.stack{display:grid;gap:.85rem}.flex-row{display:flex;align-items:center;gap:.6rem}@media (min-width: 768px){#app{flex-direction:row}.drawer{position:relative;transform:none!important;width:320px;border-right:1px solid var(--line);z-index:auto;flex-shrink:0}.drawer-scrim{display:none}#app-shell-main{flex:1;min-width:0;display:flex;flex-direction:column;height:100dvh;height:100vh}#bottom-nav{display:none}.sidebar-tabs{display:flex;border-bottom:1px solid var(--line)}.sidebar-tabs .tab-btn{flex:1;flex-direction:row;padding:.75rem;font-size:.82rem;min-height:auto;border-radius:0;gap:.4rem}.chat-view{height:100dvh;height:100vh}.fab{bottom:1.1rem}}
