:root{--navy:#1b3d6e;--red:#d42b2b;--app-bg:#c5d8f0;--mid-blue:#5b8db8;--white:#fff;--text:#1a1a1a;--text-light:#6b7c93;--radius:10px;--gap:16px;--shadow:0 2px 12px #1b3d6e1f;--app-max:600px;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--app-bg);-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;border-radius:var(--radius);border:none;padding:12px 18px}button:disabled{opacity:.6;cursor:not-allowed}input{font:inherit;border-radius:var(--radius);background:var(--white);border:1px solid #c3cede;width:100%;padding:12px 14px}input:focus-visible,button:focus-visible{outline:2px solid var(--mid-blue);outline-offset:2px}.centered{min-height:100%;padding:var(--gap);place-items:center;display:grid}.card{background:var(--white);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:14px;padding:32px 28px}.card h1{color:var(--navy);margin:0 0 4px;font-size:1.5rem}.card.is-centered,.card.is-centered .stack{text-align:center}.card p.subtitle{color:var(--text-light);margin:0 0 24px;font-size:.925rem}.stack{gap:12px;display:grid}.btn-primary{background:var(--navy);color:var(--white);width:100%}.btn-google{background:var(--white);color:var(--text);border:1px solid #c3cede;justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.login{background:var(--white);min-height:100%;padding:24px;padding-bottom:max(24px, env(safe-area-inset-bottom));place-items:center;display:grid}.login-inner{gap:8px;width:100%;max-width:420px;display:grid}.login-brand{place-items:center;display:grid}.login-brand img{width:100%;max-width:380px;height:auto}.login-actions{gap:12px;display:grid}.btn-brand,.btn-outline{border-radius:12px;justify-items:center;gap:2px;width:100%;min-height:56px;padding:15px 24px;display:grid}.btn-brand{background:var(--navy);color:var(--white)}.btn-outline{background:var(--white);color:var(--navy);border:1.5px solid var(--navy)}.btn-title{font-size:1rem;font-weight:700}.btn-sub{font-size:.75rem}.btn-brand .btn-sub{color:#ffffffb3}.btn-outline .btn-sub{color:#6b7280}.btn-link{color:var(--text-light);background:0 0;padding:8px;font-size:.875rem}.divider{color:var(--text-light);align-items:center;gap:12px;margin:22px 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";background:#dde4ee;flex:1;height:1px}.form-title,.form-sub,.form-hint{text-align:center}.form-title{color:var(--text);margin:0;font-size:1.35rem}.form-sub,.form-hint{color:var(--text-light);margin:0;line-height:1.5}.form-sub{margin-top:-6px;font-size:.9rem}.form-hint{font-size:.8rem}.error,.notice{border-radius:var(--radius);text-align:center;margin-bottom:14px;padding:10px 14px;font-size:.875rem;line-height:1.45}.error{color:var(--red);background:#fdeaea}.notice{color:var(--navy);background:#eef4fc}.setup-list{color:var(--text-light);margin:0;padding-left:20px;font-size:.875rem;line-height:1.7}.setup-list code{color:var(--navy);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.85em}.shell{height:100%;max-width:var(--app-max);background:var(--app-bg);flex-direction:column;margin:0 auto;display:flex}@media (width>=640px){.shell{box-shadow:0 0 0 1px #1b3d6e14, var(--shadow)}}.shell header{background:var(--navy);color:var(--white);padding:14px 18px;padding-top:max(14px, env(safe-area-inset-top));grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.shell header>:first-child{justify-self:start}.shell header>:last-child{justify-self:end}.shell header h1{margin:0;font-size:1.05rem;font-weight:600}.shell header button{color:var(--white);background:0 0;border:1px solid #fff6;padding:6px 12px;font-size:.85rem}.shell main{padding:var(--gap);flex:1;overflow-y:auto}.shell header h1{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.shell header .header-actions{align-items:center;gap:8px;display:flex}.icon-button{padding:6px 10px;font-size:1.05rem;line-height:1}.icon-button.is-spinning{animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.icon-button.is-spinning{opacity:.5;animation:none}}.empty{text-align:center;color:var(--text-light);margin-top:64px;font-size:.925rem;line-height:1.6}.list{background:var(--white);border-radius:var(--radius);margin:0;padding:0;list-style:none;overflow:hidden}.list li+li{border-top:1px solid #eef1f6}.row{background:var(--white);width:100%;color:inherit;text-align:left;border-radius:0;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;display:flex}.row:hover{background:#f6f9fd}.avatar{background:var(--app-bg);width:44px;height:44px;color:var(--navy);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.row-body{flex:1;gap:2px;min-width:0;display:grid}.row-top{justify-content:space-between;gap:8px;display:flex}.row-name,.row-preview{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row-time{color:var(--text-light);flex:none;font-size:.8rem}.row-preview{color:var(--text-light);font-size:.875rem}.row.is-unread .row-name{font-weight:700}.row.is-unread .row-preview{color:var(--text)}.row.is-unread .avatar:after{content:"";background:var(--red);border:2px solid var(--white);border-radius:50%;width:11px;height:11px;position:absolute;top:-1px;right:-1px}.row.is-unread .avatar{position:relative}.new-divider{letter-spacing:.04em;text-transform:uppercase;color:var(--red);align-items:center;gap:10px;margin:12px 0 8px;font-size:.72rem;font-weight:700;display:flex}.new-divider:before,.new-divider:after{content:"";opacity:.35;background:currentColor;flex:1;height:1px}.archive{color:var(--red);background:0 0;border:1px solid #f0d2d2;flex:none;padding:6px 10px;font-size:.8rem}.archive.unarchive{color:var(--navy);border-color:#c3cede}.install-banner{left:50%;bottom:max(12px, env(safe-area-inset-bottom));z-index:20;background:var(--navy);width:calc(100% - 24px);max-width:520px;color:var(--white);border-radius:12px;flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #1b3d6e4d}.install-text{flex:1;gap:2px;min-width:180px;font-size:.85rem;display:grid}.install-actions{gap:8px;display:flex}.install-go{background:var(--white);color:var(--navy);padding:9px 16px;font-weight:700}.install-later{color:#ffffffd9;background:0 0;border:1px solid #fff6;padding:9px 14px}.panel{background:var(--white);border-radius:var(--radius);margin:0 auto var(--gap);max-width:520px;padding:18px}.panel h2{color:var(--navy);margin:0 0 4px;font-size:1rem}.panel-note{color:var(--text-light);margin:0 0 14px;font-size:.825rem;line-height:1.5}.panel-note:last-child{margin:14px 0 0}.sound-list{border:1px solid #eef1f6}.sound-row.is-selected{background:#f2f7fd}.sound-row .tick{color:var(--navy);font-weight:700}.thread{flex-direction:column;gap:8px;display:flex}.day-divider{text-align:center;color:var(--text-light);margin:14px 0 6px;font-size:.75rem}.bubble{max-width:min(78%,520px);box-shadow:var(--shadow);border-radius:16px;width:fit-content;margin-bottom:8px;padding:9px 13px}.bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.bubble time{opacity:.65;margin-top:4px;font-size:.7rem;display:block}.bubble.mine{background:var(--navy);color:var(--white);border-bottom-right-radius:4px;margin-left:auto}.bubble.theirs{background:var(--white);border-bottom-left-radius:4px}.tag-sms{color:var(--text-light);letter-spacing:.05em;vertical-align:middle;background:#eef2f8;border-radius:5px;margin-left:8px;padding:1px 6px;font-size:.62rem;font-weight:700;display:inline-block}.composer-notice{padding:14px 16px;padding-bottom:max(14px, env(safe-area-inset-bottom));color:var(--text-light);background:#eef2f8;border-top:1px solid #dde4ee;gap:3px;font-size:.8rem;line-height:1.5;display:grid}.composer-notice strong{color:var(--text)}.bubble-media-wrap{display:block}.bubble-download{color:inherit;opacity:.8;margin-bottom:6px;font-size:.72rem;font-weight:600;display:inline-block}.channel-tag{letter-spacing:.04em;background:var(--mid-blue);color:var(--white);border-radius:6px;margin-bottom:4px;padding:1px 6px;font-size:.65rem;display:inline-block}.bubble-media{border-radius:10px;max-width:100%;margin-bottom:6px;display:block}.composer{padding:12px;padding-bottom:max(12px, env(safe-area-inset-bottom));background:var(--white);border-top:1px solid #e6ecf4;gap:8px;display:flex}.composer input{flex:1;width:auto;min-width:0}.composer .btn-primary{flex:none;width:auto}
