*{box-sizing:border-box}
html,body{margin:0;background:#fff;color:#000;height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:17px;line-height:1.45;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
button,input,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer;-webkit-appearance:none;appearance:none}
a{color:inherit}
:focus-visible{outline:2px solid #000;outline-offset:2px}

/* shared */
.screen{display:flex;flex-direction:column;height:100vh;height:100dvh;height:var(--vvh,100dvh);max-width:680px;margin:0 auto;border-left:1px solid transparent;border-right:1px solid transparent}
@media (min-width:700px){.screen{border-color:#e6e6e6}}
.bar{flex:none;display:flex;align-items:center;gap:16px;padding:max(14px,env(safe-area-inset-top)) 20px 14px;border-bottom:1px solid #e6e6e6;min-height:56px;background:#fff}
.bar h1{font-size:22px;font-weight:500;margin:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .title{flex:1;min-width:0;text-align:center;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .title small{display:block;font-size:13px;font-weight:400;color:#6b6b6b;line-height:1.2}
.bar .link{flex:none;min-width:52px;padding:6px 0}
.bar .link.r{text-align:right}
.main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.pad{padding:32px 24px calc(48px + env(safe-area-inset-bottom))}
.muted{color:#6b6b6b}
.small{font-size:14px}
.btn{display:block;width:100%;background:#fff;border:1px solid #000;padding:14px 16px;margin:0 0 16px;text-align:center}
.btn.primary{background:#000;color:#fff}
.btn:disabled{opacity:.4;cursor:default}
.btn:active:not(:disabled){background:#f2f2f2}
.btn.primary:active:not(:disabled){background:#333}
.field{display:block;width:100%;border:1px solid #000;border-radius:0;padding:13px 14px;margin:0 0 16px;background:#fff;-webkit-appearance:none;appearance:none}
label.lbl{display:block;font-size:14px;color:#6b6b6b;margin:0 0 8px}
.err{color:#b00020;min-height:1.45em;margin:0 0 16px;font-size:15px}
.note{font-size:15px;color:#6b6b6b;margin:0 0 24px}
section{margin:0 0 48px}
section h2{font-size:14px;font-weight:400;color:#6b6b6b;margin:0 0 16px;text-transform:none}
.row{display:flex;align-items:center;gap:14px}

/* welcome */
.welcome{max-width:420px;margin:0 auto;padding:max(72px,calc(env(safe-area-inset-top) + 56px)) 32px 64px}
.welcome h1{font-size:22px;font-weight:500;margin:0 0 16px}
.welcome p{margin:0 0 40px}

/* avatars */
.av{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid #e0e0e0;background:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;overflow:hidden;object-fit:cover;color:#000}
.av.s{width:28px;height:28px;font-size:13px}
.av.l{width:88px;height:88px;font-size:32px}

/* chat list */
.list{list-style:none;margin:0;padding:0}
.list li{border-bottom:1px solid #eeeeee}
.list a{display:flex;gap:14px;align-items:center;padding:14px 20px;text-decoration:none}
.list a:active{background:#f5f5f5}
.list .mid{flex:1;min-width:0}
.list .top{display:flex;gap:12px;align-items:baseline}
.list .name{flex:1;min-width:0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .time{flex:none;font-size:13px;color:#6b6b6b}
.list .sub{display:flex;gap:12px;align-items:center}
.list .prev{flex:1;min-width:0;color:#6b6b6b;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .unread .prev{color:#000}
.badge{flex:none;min-width:20px;height:20px;padding:0 6px;background:#000;color:#fff;font-size:12px;line-height:20px;text-align:center;border-radius:10px}
.empty{padding:64px 32px;text-align:center;color:#6b6b6b}
.hint{display:block;width:100%;text-align:left;padding:14px 20px;border-bottom:1px solid #eeeeee;font-size:15px;color:#6b6b6b}
.hint b{font-weight:400;color:#000;text-decoration:underline;text-underline-offset:3px}

/* people picker */
.pick li label{display:flex;gap:14px;align-items:center;padding:12px 20px;cursor:pointer}
.pick input{width:20px;height:20px;accent-color:#000;margin:0}
.pick .name{flex:1;font-weight:400}
.tag{font-size:12px;color:#6b6b6b;border:1px solid #e0e0e0;padding:1px 6px;margin-left:6px;vertical-align:2px}

/* messages */
.msgs{padding:16px 16px 8px;display:flex;flex-direction:column}
.more{align-self:center;font-size:14px;color:#6b6b6b;padding:8px 12px;margin-bottom:8px}
.day{align-self:center;font-size:13px;color:#6b6b6b;margin:20px 0 12px}
.sys{align-self:center;font-size:13px;color:#6b6b6b;margin:8px 24px;text-align:center}
.m{max-width:78%;display:flex;flex-direction:column;align-items:flex-start;margin-top:3px}
.m.first{margin-top:14px}
.m.me{align-self:flex-end;align-items:flex-end}
.m .who{font-size:13px;color:#6b6b6b;margin:0 0 4px 1px}
.bub{padding:9px 13px;border:1px solid #dcdcdc;background:#fff;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;text-align:left;max-width:100%}
.me .bub{background:#000;color:#fff;border-color:#000}
.bub.del{color:#6b6b6b;background:#fff;border-style:dashed;border-color:#dcdcdc;font-size:15px}
.bub a{text-decoration:underline;text-underline-offset:2px}
.bub.photo{padding:0;border:0;background:none;line-height:0}
.bub.photo img{display:block;max-width:min(260px,100%);height:auto;border:1px solid #e6e6e6;background:#f5f5f5;cursor:zoom-in}
.bub.photo .cap{line-height:1.45;padding:8px 2px 0;white-space:pre-wrap;color:#000}
.quote{font-size:14px;line-height:1.35;padding:2px 0 2px 10px;border-left:2px solid currentColor;margin:2px 0 8px;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.bub.photo .quote{line-height:1.35;margin:0 0 8px}
.meta{font-size:12px;color:#8a8a8a;margin:4px 2px 0}
.acts{display:flex;gap:20px;font-size:14px;margin:6px 2px 2px}
.acts button{color:#000;text-decoration:underline;text-underline-offset:3px;padding:4px 0}
.m.sel .bub{outline:1px solid #000;outline-offset:2px}

/* composer */
.comp{flex:none;border-top:1px solid #e6e6e6;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fff}
.reply{display:flex;align-items:center;gap:12px;font-size:14px;color:#6b6b6b;padding:0 4px 10px}
.reply span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid #000;padding-left:10px}
.reply button{font-size:14px;color:#000;text-decoration:underline;text-underline-offset:3px}
.crow{display:flex;align-items:flex-end;gap:10px}
.crow textarea{flex:1;min-width:0;resize:none;border:1px solid #cfcfcf;border-radius:0;padding:10px 12px;min-height:46px;max-height:160px;line-height:1.45;background:#fff;-webkit-appearance:none;appearance:none}
.crow textarea:focus{border-color:#000;outline:none}
.crow .ic{flex:none;width:46px;height:46px;border:1px solid #cfcfcf;font-size:24px;line-height:1;font-weight:300}
.crow .send{flex:none;height:46px;padding:0 16px;background:#000;color:#fff;border:1px solid #000}
.crow .send:disabled{background:#fff;color:#9a9a9a;border-color:#cfcfcf}

/* info / settings */
.people{list-style:none;margin:0 0 24px;padding:0;border-top:1px solid #eeeeee}
.people li{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #eeeeee}
.people .name{flex:1}
.toggle{display:flex;align-items:center;gap:14px;padding:4px 0 16px;cursor:pointer}
.toggle input{width:20px;height:20px;accent-color:#000;margin:0}
.copy{display:flex;gap:10px}
.copy input{flex:1;min-width:0;font-size:14px}
.copy .btn{width:auto;flex:none}
.avedit{display:flex;align-items:center;gap:20px;margin:0 0 24px}
.avedit button{text-decoration:underline;text-underline-offset:3px;font-size:15px}
.token{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;word-break:break-all;border:1px solid #000;padding:12px;margin:0 0 16px;user-select:all;-webkit-user-select:all}

/* photo viewer */
#viewer{position:fixed;inset:0;background:#fff;z-index:10;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
#viewer img{max-width:100%;max-height:100%;object-fit:contain}
#viewer button{position:absolute;top:max(14px,env(safe-area-inset-top));right:20px;padding:6px 0}

/* friends */
.reqs{border-bottom:1px solid #e6e6e6;padding-top:16px}
.reqs h2,.addf h2,.sub-h{font-size:14px;font-weight:400;color:#6b6b6b;margin:0;padding:0 20px 8px}
.reqrow{display:flex;gap:14px;align-items:center;padding:12px 20px}
.reqrow .mid{flex:1;min-width:0;text-decoration:none}
.reqrow .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reqrow .prev{color:#6b6b6b;font-size:15px}
.act{flex:none;border:1px solid #000;padding:5px 12px;font-size:15px}
.reqrow .act+.act{margin-left:-4px}
.act.primary{background:#000;color:#fff}
.rlist{list-style:none;margin:0;padding:0}
.addf{padding:24px 20px 8px;border-bottom:1px solid #e6e6e6;margin-bottom:16px}
.addf h2{padding:0 0 12px}
.addf .note{margin:0 0 16px}
.addf .field{margin-bottom:16px}
.prof{display:flex;align-items:center;gap:20px;margin:0 0 40px}
.pname{font-size:22px;font-weight:500}
.note-bar{color:#6b6b6b;font-size:15px;text-align:center;padding-top:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
.people a.name{text-decoration:none}
.err:empty{min-height:0;margin:0}
.note:empty{margin:0}
.copy .field,.copy .btn{margin-bottom:0}
.addf .copy{margin-bottom:16px}
.btn.primary:disabled{background:#fff;color:#9a9a9a;border-color:#cfcfcf;opacity:1}
.addf .note:empty{margin:0}
