:root{--bg:#f1f3f9;--card:#fff;--tx:#151a2d;--mu:#69738a;--bd:#e4e8f1;--pr:#4f46e5;--pr2:#06b6d4;--ok:#16a34a;--soft:#eef0fc;--sh:0 1px 2px rgba(20,25,60,.05),0 8px 24px rgba(20,25,60,.06)}
@media(prefers-color-scheme:dark){:root{--bg:#0c0f16;--card:#151a25;--tx:#e8ecf5;--mu:#8d98ad;--bd:#242b3a;--pr:#7c83ff;--soft:#1c2333;--sh:0 1px 2px #0007}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--tx);font:15.5px/1.55 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--pr);text-decoration:none}h2,h3{margin:0 0 6px;letter-spacing:-.3px}p{margin:0 0 10px}.ico{flex:none;vertical-align:middle}
.top{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--card) 90%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--bd)}
.top .in{max-width:1180px;margin:auto;height:62px;padding:0 16px;display:flex;align-items:center;gap:16px}.sp{margin-left:auto}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:21px;letter-spacing:-.5px;color:var(--tx)}
.logo i{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(135deg,var(--pr),var(--pr2));color:#fff}
.search{position:relative;flex:0 1 270px}.search .ico{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--mu)}.search input{margin:0;padding:9px 14px 9px 38px;border-radius:99px;background:var(--bg)}
.tabs{display:flex;gap:4px;margin:0 auto}.tabs a{position:relative;display:flex;align-items:center;gap:7px;padding:9px 14px;border-radius:11px;color:var(--mu);font-weight:600;font-size:14.5px}
.tabs a:hover{background:var(--soft)}.tabs a.on{color:var(--pr);background:var(--soft)}
.tabs em{font-style:normal;background:#ef4444;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:grid;place-items:center;padding:0 5px}
.lnk{font-weight:600;color:var(--tx)}
.wrap{max-width:1180px;margin:22px auto;padding:0 16px;display:grid;grid-template-columns:260px minmax(0,1fr) 300px;gap:22px;align-items:start}
.wrap.guest{display:block;max-width:980px}aside{position:sticky;top:84px}main{min-width:0}
.card{background:var(--card);border:1px solid var(--bd);border-radius:18px;padding:18px;margin-bottom:14px;box-shadow:var(--sh)}
label{display:block;font-size:13px;font-weight:600;color:var(--mu)}
input,textarea{width:100%;padding:12px 14px;margin:5px 0 14px;border:1.5px solid var(--bd);border-radius:12px;background:var(--bg);color:var(--tx);font:inherit;outline:0;transition:.15s}
input:focus,textarea:focus{border-color:var(--pr);box-shadow:0 0 0 4px color-mix(in srgb,var(--pr) 17%,transparent)}textarea{resize:vertical}
button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:linear-gradient(135deg,var(--pr),#6d5dfc);color:#fff;border:0;border-radius:12px;padding:10px 18px;font:inherit;font-weight:600;cursor:pointer;transition:.15s}
button:hover,.btn:hover{filter:brightness(1.07);transform:translateY(-1px)}.sm{padding:7px 14px;font-size:14px}.full{width:100%}
.ghost{background:transparent!important;color:var(--mu)!important;border:1.5px solid var(--bd)!important}.ghost:hover{color:var(--pr)!important}
.call{background:var(--ok)!important}.icon{background:none;color:var(--mu);padding:8px;border-radius:10px}.icon:hover{background:var(--soft);color:#ef4444;transform:none}
.inl{display:inline-block;margin:0}.mu{color:var(--mu);font-size:14px}.c{text-align:center;margin:14px 0 0}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}
.flash{background:var(--soft);border-left:4px solid var(--pr);padding:12px 14px;border-radius:12px;margin-bottom:14px}
.av{--h:230;flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:18px;background:linear-gradient(135deg,hsl(var(--h) 70% 56%),hsl(calc(var(--h) + 40) 75% 44%))}
.av.lg{width:88px;height:88px;font-size:36px;border:4px solid var(--card)}.who{display:flex;gap:12px;align-items:center;min-width:0;color:var(--tx)}.nm{font-weight:700;color:var(--tx)}a.nm:hover,a.who:hover .nm{color:var(--pr)}
.tag{display:inline-flex;align-items:center;gap:5px;background:var(--soft);color:var(--pr);padding:3px 11px;border-radius:99px;font-size:13px;font-weight:600}
.lock{display:flex;gap:10px;align-items:center;background:var(--soft);color:var(--mu);padding:12px 14px;border-radius:12px;margin:12px 0}
.phone{display:flex;gap:10px;align-items:center;background:color-mix(in srgb,var(--ok) 13%,transparent);color:var(--ok);padding:13px 16px;border-radius:12px;font-weight:700;font-size:18px;margin-top:14px}
.post .row{margin-bottom:8px}.post p{font-size:16.5px;margin:6px 0 0;word-break:break-word}.composer{display:flex;gap:12px}.composer form{flex:1}.composer textarea{margin-top:0}
.cover{height:76px;border-radius:12px;background:linear-gradient(135deg,var(--pr),var(--pr2));margin:-6px -6px 0}.cover.big{height:130px}
.me{text-align:center}.me .av.lg{margin:-44px auto 8px}.me h3{margin:0}.stats{display:flex;justify-content:center;gap:28px;margin:14px 0}.stats b{display:block;font-size:18px}.stats span{font-size:12.5px;color:var(--mu)}
.tip{display:flex;gap:10px;color:var(--mu);font-size:13.5px}.tip p{margin:0}.tip .ico{color:var(--pr)}
.prof .pf{display:flex;justify-content:space-between;align-items:flex-end;margin:-48px 8px 12px}.bio{margin:12px 0 0}
.sug{padding:8px 0}.sug .who{flex:1}.sec{margin:6px 2px 12px}.empty{text-align:center;color:var(--mu);padding:34px 14px}.empty .ico{color:var(--pr);margin-bottom:8px}.foot{color:var(--mu);font-size:12.5px;text-align:center}
.auth{max-width:430px;margin:36px auto}.gap{margin-top:14px}
.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:36px;align-items:center;padding:46px 0 30px}
.hero h1{font-size:46px;line-height:1.08;letter-spacing:-1.5px;margin:14px 0}.hero h1 em{font-style:normal;background:linear-gradient(135deg,var(--pr),var(--pr2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{font-size:18px;color:var(--mu);max-width:520px}.pill{background:var(--soft);color:var(--pr);padding:5px 13px;border-radius:99px;font-size:13px;font-weight:600}.hero .btn{margin:6px 8px 0 0}
.mock{padding:24px;transform:rotate(1.5deg)}.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding-bottom:30px}.feat .card{margin:0}.feat .ico{color:var(--pr);margin-bottom:8px}
@media(max-width:1060px){.wrap{grid-template-columns:240px minmax(0,1fr)}.r{display:none}.search{flex-basis:200px}}
@media(max-width:820px){.hero{grid-template-columns:1fr;padding-top:24px}.hero h1{font-size:36px}.feat{grid-template-columns:1fr}.mock{transform:none}}
@media(max-width:760px){.wrap{display:block;margin-top:14px;padding-bottom:84px}.wrap.guest{padding-bottom:20px}.l,.search{display:none}.top .in{height:56px}.logo{margin-right:auto}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:60;margin:0;gap:0;justify-content:space-around;background:var(--card);border-top:1px solid var(--bd);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}
.tabs a{flex-direction:column;gap:2px;font-size:11px;padding:6px 8px;border-radius:10px;background:none!important}.tabs em{position:absolute;top:0;right:4px}
.card{border-radius:16px;padding:15px}.row{flex-wrap:wrap}.auth{margin:16px auto}}

/* ================= animations & interest ================= */
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes pop{0%{opacity:0;transform:scale(.82) translateY(10px)}70%{transform:scale(1.04)}100%{opacity:1;transform:none}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes blob{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(50px,-40px) scale(1.18)}66%{transform:translate(-40px,40px) scale(.9)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(239,68,68,.6)}100%{box-shadow:0 0 0 11px rgba(239,68,68,0)}}
@keyframes bounce{0%,80%,100%{transform:translateY(0)}40%{transform:translateY(-7px)}}
@keyframes ring{0%,100%{transform:rotate(0)}20%{transform:rotate(-20deg)}40%{transform:rotate(18deg)}60%{transform:rotate(-12deg)}80%{transform:rotate(7deg)}}
@keyframes grad{to{background-position:200% 50%}}
@keyframes ripple{to{transform:translate(-50%,-50%) scale(14);opacity:0}}
.hide{display:none!important}
.blobs{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.blobs i{position:absolute;width:460px;height:460px;border-radius:50%;filter:blur(90px);opacity:.2;animation:blob 20s ease-in-out infinite}
.blobs i:nth-child(1){background:#6366f1;top:-120px;left:-100px}.blobs i:nth-child(2){background:#06b6d4;top:35%;right:-140px;animation-delay:-7s}.blobs i:nth-child(3){background:#ec4899;bottom:-160px;left:30%;animation-delay:-13s;opacity:.14}
main>*{animation:fadeUp .55s backwards}main>*:nth-child(2){animation-delay:.07s}main>*:nth-child(3){animation-delay:.14s}main>*:nth-child(4){animation-delay:.2s}main>*:nth-child(5){animation-delay:.26s}main>*:nth-child(n+6){animation-delay:.3s}
aside .card{animation:fadeUp .6s .2s backwards}
.card{transition:transform .22s,box-shadow .22s,border-color .22s}.row.card:hover,.post:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(79,70,229,.16);border-color:color-mix(in srgb,var(--pr) 35%,var(--bd))}
button,.btn{position:relative;overflow:hidden}button:active,.btn:active{transform:scale(.96)}
.rip{position:absolute;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.55);transform:translate(-50%,-50%) scale(0);animation:ripple .6s ease-out forwards;pointer-events:none}
.logo i{transition:.3s}.logo:hover i{transform:rotate(-8deg) scale(1.08)}.logo:hover .ico{animation:ring .7s}
.logo span{background:linear-gradient(90deg,var(--tx),var(--pr),var(--pr2),var(--tx));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:grad 6s linear infinite}
.tabs a .ico{transition:transform .25s}.tabs a:hover .ico{transform:translateY(-3px) scale(1.12)}.tabs a.on .ico{animation:pop .45s}
.tabs em,.ci em{animation:pulse 1.6s infinite}.tabs em.hide{display:none}
.tabs a{position:relative}.tabs a em{position:absolute;top:2px;right:2px}
.hero h1 em{background-size:200% 100%;animation:grad 5s linear infinite;background-image:linear-gradient(90deg,var(--pr),var(--pr2),#ec4899,var(--pr))}
#rot{display:inline-block;transition:opacity .35s,transform .35s}#rot.out{opacity:0;transform:translateY(12px)}
.stage{animation:floaty 7s ease-in-out infinite}.mock{transform:none;position:relative;z-index:1}.chatmock{margin:-22px 0 0 44px;position:relative;z-index:2;display:flex;flex-direction:column;gap:8px}
.bub{max-width:88%;padding:9px 14px;border-radius:18px;font-size:14.5px;animation:pop .5s backwards}.bub.them{background:var(--soft);align-self:flex-start;border-bottom-left-radius:5px}
.bub.mine{background:linear-gradient(135deg,var(--pr),#6d5dfc);color:#fff;align-self:flex-end;border-bottom-right-radius:5px}
.dots{display:flex;gap:5px;padding:10px 14px;background:var(--soft);border-radius:18px;align-self:flex-start;animation:pop .4s backwards}.dots i{width:7px;height:7px;border-radius:50%;background:var(--mu);animation:bounce 1.1s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
.feat{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:none}
.feat .reveal:nth-child(2){transition-delay:.08s}.feat .reveal:nth-child(3){transition-delay:.16s}.feat .reveal:nth-child(4){transition-delay:.24s}.feat .reveal:nth-child(5){transition-delay:.32s}
.feat .card:hover .ico{animation:bounce .6s}.av{transition:transform .25s}a:hover>.av,.ci:hover .av{transform:scale(1.1) rotate(-4deg)}.av.sq{border-radius:14px}

/* ================= chat ================= */
.wrap.full{display:block;max-width:1180px}.wrap.full aside{display:none}
.chat{display:grid;grid-template-columns:330px minmax(0,1fr);gap:16px;height:calc(100vh - 118px);min-height:500px}
.chat .card{margin:0;padding:0;display:flex;flex-direction:column;overflow:hidden;animation:fadeUp .5s backwards}.chat .card:hover{transform:none}
.chat .clist{display:block;padding:14px;overflow-y:auto}.clist h4{margin:16px 4px 6px;color:var(--mu);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.ci{display:flex;gap:11px;align-items:center;padding:10px;border-radius:14px;color:var(--tx);transition:.2s}.ci:hover{background:var(--soft);transform:translateX(4px)}.ci.on{background:var(--soft);box-shadow:inset 3px 0 var(--pr)}
.t{flex:1;min-width:0}.t b{display:block}.ci .t span{display:block;color:var(--mu);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ci em,.tabs em{font-style:normal;background:#ef4444;color:#fff;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:grid;place-items:center;padding:0 5px}
.chead{display:flex;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--bd)}.back{display:none}
.ginfo{border-bottom:1px solid var(--bd);padding:8px 16px;background:var(--bg)}.ginfo summary{cursor:pointer;font-weight:600;color:var(--pr);display:flex;gap:7px;align-items:center;padding:4px 0}
.ginfo[open] .mem,.ginfo[open] form{animation:fadeUp .35s backwards}.mem{padding:6px 0}.addf{display:flex;gap:8px;margin:8px 0}.addf select{flex:1;padding:8px 10px;border-radius:10px;border:1.5px solid var(--bd);background:var(--card);color:var(--tx);font:inherit}
.msgs{flex:1;min-height:0;overflow-y:auto;padding:18px 16px;display:flex;flex-direction:column;gap:7px;scroll-behavior:smooth}
.msg{max-width:76%;padding:8px 13px 5px;border-radius:19px;animation:pop .38s backwards;word-break:break-word}
.msg.theirs{align-self:flex-start;background:var(--soft);border-bottom-left-radius:5px}.msg.mine{align-self:flex-end;background:linear-gradient(135deg,var(--pr),#6d5dfc);color:#fff;border-bottom-right-radius:5px}
.msg p{margin:0;white-space:pre-wrap}.msg time{display:block;font-size:11px;opacity:.65;text-align:right;margin-top:1px}.who2{display:block;font-size:12px;font-weight:700}
.hint{margin:auto;text-align:center;color:var(--mu);animation:floaty 3s infinite}
.sendf{display:flex;gap:8px;align-items:flex-end;padding:12px;border-top:1px solid var(--bd);position:relative}.sendf textarea{margin:0;flex:1;max-height:120px;border-radius:22px;padding:11px 16px}
.send{width:44px;height:44px;padding:0;border-radius:50%}.send:hover .ico{transform:translateX(2px) rotate(-8deg)}.send .ico{transition:.2s}
.emo{position:absolute;bottom:68px;left:12px;background:var(--card);border:1px solid var(--bd);border-radius:16px;padding:8px;display:flex;flex-wrap:wrap;gap:2px;width:250px;box-shadow:var(--sh);z-index:5;animation:pop .22s}.emo button{background:none;font-size:23px;padding:4px 7px;border-radius:10px}.emo button:hover{background:var(--soft);transform:scale(1.2)}
.empty.big{margin:auto;padding:30px}.bubbles{display:flex;gap:14px;justify-content:center;font-size:42px;margin-bottom:10px}.bubbles span{animation:bounce 1.6s infinite}.bubbles span:nth-child(2){animation-delay:.2s}.bubbles span:nth-child(3){animation-delay:.4s}
.auth.wide{max-width:600px}.chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin:6px 0 16px}
.chip{cursor:pointer}.chip input{position:absolute;opacity:0;width:0;margin:0}.chip span{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1.5px solid var(--bd);border-radius:14px;padding:9px 11px;transition:.2s;color:var(--tx)}
.chip span .av{width:34px;height:34px;font-size:15px}.chip b{display:block;line-height:1.1}.chip small{display:block;color:var(--mu);font-size:12px;flex-basis:100%;margin-left:44px;margin-top:-10px}
.chip:hover span{transform:translateY(-2px);border-color:var(--pr)}.chip input:checked+span{border-color:var(--pr);background:var(--soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--pr) 20%,transparent);animation:pop .3s}
@media(max-width:1060px) and (min-width:761px){.tabs a span{display:none}.tabs a{padding:10px 14px}}
@media(max-width:760px){.chat{grid-template-columns:1fr;height:calc(100dvh - 56px - 74px - 20px);min-height:420px}.chat.open .clist,.chat:not(.open) .cthread{display:none}.back{display:grid}.msg{max-width:86%}
.stage{animation:none}.chatmock{margin-left:14px}.blobs i{width:300px;height:300px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}

/* ================= pictures, stories, attachments ================= */
.av{position:relative;overflow:hidden}.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cover{background-size:cover;background-position:center}
.covwrap,.avwrap{position:relative}
.cam{display:inline-flex;align-items:center;gap:6px;background:rgba(0,0,0,.58);color:#fff;border-radius:99px;padding:7px 11px;cursor:pointer;font-size:13px;font-weight:600;backdrop-filter:blur(6px);transition:.2s}
.cam:hover{background:var(--pr);transform:scale(1.07)}.camform{margin:0}.camform.cover{position:absolute;right:10px;bottom:10px}
.camform.avatar{position:absolute;right:-4px;bottom:-4px}.camform.avatar .cam{padding:7px;border:3px solid var(--card)}
/* stories bar */
.stories{display:flex;gap:14px;overflow-x:auto;padding:14px 16px;scrollbar-width:none}.stories::-webkit-scrollbar{display:none}
.st{flex:none;width:74px;text-align:center;cursor:pointer;position:relative;color:var(--tx)}
.ring{display:inline-block;padding:3px;border-radius:50%;background:conic-gradient(from 200deg,var(--pr),var(--pr2),#ec4899,#f59e0b,var(--pr));transition:.3s}
.ring.seen,.ring.plain{background:var(--bd)}.st:hover .ring{transform:scale(1.08) rotate(10deg)}
.ring .av{width:60px;height:60px;border:3px solid var(--card);font-size:22px;display:grid}.ring .av img{border-radius:50%}
.st small{display:block;font-size:12px;margin-top:4px;color:var(--mu);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st .add{position:absolute;top:44px;right:2px;width:22px;height:22px;border-radius:50%;background:var(--pr);color:#fff;display:grid;place-items:center;border:3px solid var(--card);box-sizing:content-box}
.st .add:hover{transform:scale(1.15) rotate(90deg);transition:.25s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes sprog{to{width:100%}}
.bg0{background:linear-gradient(135deg,#6366f1,#06b6d4)}.bg1{background:linear-gradient(135deg,#f43f5e,#f59e0b)}.bg2{background:linear-gradient(135deg,#10b981,#3b82f6)}
.bg3{background:linear-gradient(135deg,#8b5cf6,#ec4899)}.bg4{background:linear-gradient(135deg,#0f172a,#475569)}.bg5{background:linear-gradient(135deg,#f59e0b,#ef4444)}
.sv{position:fixed;inset:0;z-index:200;background:rgba(5,8,15,.93);backdrop-filter:blur(8px);display:grid;place-items:center;animation:fadeIn .25s}
.svin{position:relative;width:min(420px,100vw);height:min(88vh,780px);border-radius:22px;overflow:hidden;background:#000;animation:pop .35s;box-shadow:0 30px 80px #000a}
.sstage{position:absolute;inset:0;display:grid;place-items:center;padding:70px 26px;text-align:center;color:#fff}
.sstage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;animation:fadeIn .4s}
.sstage .cap{position:absolute;left:0;right:0;bottom:0;padding:50px 20px 26px;background:linear-gradient(transparent,rgba(0,0,0,.75));font-size:16px;word-break:break-word}
.stxt{font-size:28px;font-weight:700;line-height:1.3;word-break:break-word;animation:pop .5s}
.sbars{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:4px;z-index:3}.sbars i{flex:1;height:3px;background:rgba(255,255,255,.3);border-radius:3px;overflow:hidden}
.sbars b{display:block;height:100%;width:0;background:#fff}.sbars b.run{animation:sprog 5.5s linear forwards}
.shead{position:absolute;top:22px;left:12px;right:12px;display:flex;gap:10px;align-items:center;color:#fff;z-index:4;text-shadow:0 1px 4px #0008}.shead .av{width:38px;height:38px;font-size:16px}.shead small{opacity:.8}
.shead button{background:rgba(255,255,255,.18)!important;padding:6px 10px;border-radius:50%;color:#fff}.shead .views{font-size:13px;background:rgba(0,0,0,.35);padding:4px 10px;border-radius:99px}
.snav{position:absolute;top:70px;bottom:20px;width:38%;z-index:2;border:0;padding:0;border-radius:0;background:none!important}.snav.l{left:0}.snav.r{right:0}.snav:hover{transform:none;filter:none}
@media(max-width:560px){.svin{width:100vw;height:100dvh;border-radius:0}}
/* add-story page */
.spre{height:280px;border-radius:18px;display:grid;place-items:center;color:#fff;font-size:24px;font-weight:700;text-align:center;padding:20px;margin-bottom:12px;transition:.3s;word-break:break-word}
.swatches{display:flex;gap:10px}.swatches input{position:absolute;opacity:0}.swatches label{cursor:pointer}
.swatches span{display:block;width:38px;height:38px;border-radius:50%;border:3px solid var(--card);box-shadow:0 0 0 2px var(--bd);transition:.2s}.swatches input:checked+span{box-shadow:0 0 0 3px var(--pr);transform:scale(1.15)}
.ppre img{max-width:100%;max-height:320px;border-radius:14px;margin-bottom:12px;animation:pop .3s}
/* chat attachments */
.att img{display:block;max-width:min(260px,100%);max-height:260px;border-radius:14px;margin-bottom:4px;cursor:zoom-in;transition:.2s}.att img:hover{filter:brightness(1.08)}
.fcard{display:flex;gap:10px;align-items:center;background:rgba(0,0,0,.12);border-radius:14px;padding:9px 12px;color:inherit;margin-bottom:4px;transition:.2s}
.fcard:hover{background:rgba(0,0,0,.2);transform:translateY(-1px)}.fcard>span:first-child{font-size:28px}.fcard b{display:block;word-break:break-all;font-size:14px}.fcard small{opacity:.75}
.msg.theirs .fcard{background:color-mix(in srgb,var(--pr) 12%,transparent);color:var(--tx)}
.pv{position:absolute;bottom:68px;right:12px;background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:6px 8px 6px 12px;display:flex;align-items:center;gap:8px;box-shadow:var(--sh);animation:pop .25s;max-width:72%}
.pv b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.pv .icon{padding:4px 8px}
.cthread.dropping{outline:3px dashed var(--pr);outline-offset:-8px}

/* ================= likes, comments, calls, online now ================= */
.pact{display:flex;gap:6px;margin:12px -6px -4px;padding-top:8px;border-top:1px solid var(--bd)}
.act{background:none!important;color:var(--mu);padding:8px 14px;border-radius:11px;font-size:14px;gap:7px}
.act:hover{background:var(--soft)!important;color:var(--pr);transform:none}.act .n{font-weight:700;color:inherit}
.act.like.on{color:#e11d48}.act.like.on svg{fill:currentColor}.act.like:hover{color:#e11d48}
.act.burst svg{animation:pop .45s}.act:disabled{opacity:1;cursor:default}
.cpanel{margin-top:10px;padding-top:12px;border-top:1px solid var(--bd);animation:fadeUp .3s}.cpanel.loading{color:var(--mu);font-size:14px}
.clist2{display:flex;flex-direction:column;gap:10px;max-height:340px;overflow-y:auto;margin-bottom:10px}
.cm{display:flex;gap:9px;align-items:flex-start;animation:pop .3s backwards}.av.sm{width:32px;height:32px;font-size:14px;margin-top:2px}
.cc{min-width:0}.cb{background:var(--bg);border-radius:16px;padding:7px 13px;display:inline-block;max-width:100%}.cb .nm{font-size:13.5px;display:block}
.cb p{margin:0;font-size:15px;word-break:break-word;white-space:pre-wrap}.cc small{font-size:12px;margin-left:8px}
.cdel{background:none!important;color:var(--mu);padding:0;font-size:12px;font-weight:600;border-radius:0}.cdel:hover{color:#ef4444;transform:none}
.cform{display:flex;gap:8px;align-items:center}.cform input{margin:0;border-radius:99px;padding:10px 16px}
/* online now */
.av.on{overflow:visible}.av.on img{border-radius:50%}
.av.on::after{content:"";position:absolute;right:-1px;bottom:-1px;width:28%;min-width:10px;max-width:16px;aspect-ratio:1;border-radius:50%;background:#22c55e;border:2.5px solid var(--card);box-sizing:content-box;animation:onl 2.4s infinite}
@keyframes onl{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%,100%{box-shadow:0 0 0 7px rgba(34,197,94,0)}}
.pres{font-size:13px;color:var(--mu)}.pres.on{color:var(--ok);font-weight:600}
.pres.on::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;margin-right:6px}
.ring .av.on::after{display:none}
/* call buttons + call cards */
.cbtns{display:inline-flex;gap:2px;margin-left:auto;align-items:center}.pf .cbtns{margin:0 0 0 2px}
.cbtns .icon{color:var(--ok);padding:9px}.cbtns .icon:hover{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok);transform:scale(1.1)}
.callcard{display:flex;gap:11px;align-items:center;background:rgba(0,0,0,.12);border-radius:16px;padding:10px 12px;margin-bottom:4px;min-width:210px}
.msg.theirs .callcard{background:color-mix(in srgb,var(--ok) 13%,transparent)}.callcard .ci2{font-size:26px}
.callcard b{display:block;font-size:14.5px}.callcard small{opacity:.8;font-size:12.5px}.callcard .ended{margin-left:auto}
.joinbtn{margin-left:auto;background:var(--ok);color:#fff;font-weight:700;font-size:13.5px;padding:7px 16px;border-radius:99px;transition:.15s}.joinbtn:hover{filter:brightness(1.1);transform:translateY(-1px)}
.msg.mine .joinbtn{background:#fff;color:var(--pr)}
@media(max-width:760px){.pact{margin-inline:-4px}.act{padding:8px 11px}.act span:last-child{display:none}.act.cmt span:last-child{display:inline}}

/* ================= mobile friendly ================= */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow-x:clip;-webkit-tap-highlight-color:transparent}
button,.btn,a,input,select,textarea,summary,label{touch-action:manipulation}
.nm{overflow-wrap:anywhere}.msgs{overscroll-behavior:contain}.msearch{display:none}
/* phones/tablets have no hover: stop "stuck" lift effects after a tap */
@media(hover:none){
  .row.card:hover,.post:hover{transform:none;box-shadow:var(--sh);border-color:var(--bd)}
  .ci:hover,button:hover,.btn:hover,.act:hover,.cbtns .icon:hover,.joinbtn:hover{transform:none;filter:none}
  a:hover>.av,.ci:hover .av,.st:hover .ring{transform:none}
}
@media(max-width:760px){
  /* 16px stops iPhones zooming the page when a field is tapped */
  input,textarea,select{font-size:16px}
  .top{padding-top:env(safe-area-inset-top,0px)}.top .in{padding:0 12px;gap:6px}
  .msearch{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;color:var(--mu)}.msearch:active{background:var(--soft)}
  .wrap{padding:0 10px calc(80px + env(safe-area-inset-bottom,0px))}.wrap.guest{padding-bottom:20px}
  .card{padding:14px;margin-bottom:10px}h2{font-size:21px}
  /* bottom tab bar: six equal, thumb-sized tabs */
  .tabs a{flex:1;min-width:0;padding:6px 2px;font-size:10.5px;justify-content:center}.tabs a span{white-space:nowrap}
  .tabs a em{right:calc(50% - 24px)}
  /* comfortable tap targets */
  .icon{min-width:44px;min-height:44px;display:inline-grid;place-items:center}
  button.sm,.btn.sm{min-height:40px}.act{min-height:44px}.cdel{min-height:32px;padding:0 4px}
  /* feed + profile */
  .composer{gap:10px}.composer>.av{width:38px;height:38px;font-size:16px}
  .stories{padding:12px;gap:12px}
  .cover.big{height:110px}.prof .pf{flex-wrap:wrap;gap:8px;margin:-44px 4px 10px}.prof h2{font-size:22px}
  .phone{font-size:16px;word-break:break-all}.cbtns .icon{padding:10px}
  .row.card{gap:10px}.sug .who{min-width:0}
  .auth{margin:12px auto}.chips{grid-template-columns:1fr}.spre{height:220px}
  /* chat: an open conversation uses the full screen (tab bar hidden, back arrow in its header) */
  .inthread .tabs{display:none}.inthread .wrap.full{padding-bottom:8px}
  .inthread .chat{height:calc(100vh - 84px);height:calc(100dvh - 84px)}
  .chead{padding:8px 10px;gap:8px}.chead .t{min-width:0}.chead .t b,.chead .t .mu{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .back{width:44px;height:44px;place-items:center;padding:0}
  .clist{padding:10px!important}.ci{padding:11px 8px}
  .msgs{padding:12px 10px}.msg{font-size:15.5px}
  .sendf{padding:8px;gap:2px}.sendf .icon{padding:0;min-width:40px;min-height:40px}.sendf textarea{padding:10px 14px}
  .emo{width:calc(100vw - 40px);max-width:320px}.pv{max-width:calc(100% - 24px)}
  .att img{max-width:min(230px,100%)}.callcard{min-width:0;width:100%}
  .shead{top:calc(22px + env(safe-area-inset-top,0px))}
}
@media(max-width:380px){.tabs a{font-size:10px}.card{padding:12px}.stories .st{width:66px}}

/* ================= app-like mobile: header, tab bar, animations ================= */
.mtabs,#splash,.mlogout{display:none}.logout .lbl{display:none}.post{position:relative}
#nprog{position:fixed;top:0;left:0;height:3px;width:0;z-index:300;background:linear-gradient(90deg,var(--pr),var(--pr2));border-radius:0 3px 3px 0;opacity:0;pointer-events:none}
#nprog.go{opacity:1;animation:nprog 8s cubic-bezier(.1,.6,.3,1) forwards}
@keyframes nprog{to{width:92%}}
/* smooth page-to-page transitions (Chrome/Edge/Safari; other browsers just navigate normally) */
@view-transition{navigation:auto}
.top{view-transition-name:topbar}
::view-transition-old(root){animation:vtOut .16s ease both}::view-transition-new(root){animation:vtIn .28s cubic-bezier(.2,.8,.2,1) both}
@keyframes vtOut{to{opacity:0}}@keyframes vtIn{from{opacity:0;transform:translateY(12px)}}
@keyframes tabpop{0%{transform:scale(.7) translateY(5px)}60%{transform:scale(1.2) translateY(-3px)}100%{transform:none}}
@keyframes splashOut{to{opacity:0;visibility:hidden;transform:scale(1.05)}}
@keyframes splIn{0%{transform:scale(.4) rotate(-25deg);opacity:0}60%{transform:scale(1.12) rotate(6deg);opacity:1}100%{transform:none;opacity:1}}
@keyframes sdot{0%,80%,100%{transform:scale(.5);opacity:.4}40%{transform:scale(1);opacity:1}}
@keyframes heartPop{0%{transform:translate(-50%,-50%) scale(0);opacity:0}25%{transform:translate(-50%,-50%) scale(1.25);opacity:1}60%{transform:translate(-50%,-50%) scale(.95);opacity:1}100%{transform:translate(-50%,-85%) scale(1.1);opacity:0}}
.dbl-heart{position:absolute;left:var(--x);top:var(--y);width:92px;height:92px;color:#e11d48;pointer-events:none;z-index:6;animation:heartPop .85s ease forwards;filter:drop-shadow(0 6px 14px rgba(225,29,72,.45))}
/* animated launch screen (phones, first open of a session) */
.splash #splash{display:flex}
#splash{position:fixed;inset:0;z-index:999;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:linear-gradient(160deg,#4f46e5,#6d5dfc 45%,#06b6d4);color:#fff;animation:splashOut .55s ease 1.2s forwards}
.spl-logo{width:88px;height:88px;border-radius:27px;display:grid;place-items:center;background:rgba(255,255,255,.2);box-shadow:0 18px 50px rgba(0,0,0,.25);animation:splIn .75s cubic-bezier(.2,1.4,.4,1) both}.spl-logo .ico{animation:ring 1.1s .7s}
#splash b{font-size:31px;letter-spacing:-.8px;animation:fadeUp .6s .3s both}
.spl-dots{display:flex;gap:7px}.spl-dots i{width:9px;height:9px;border-radius:50%;background:#fff;animation:sdot 1s infinite}.spl-dots i:nth-child(2){animation-delay:.15s}.spl-dots i:nth-child(3){animation-delay:.3s}

@media(max-width:760px){
  /* top app bar: logo on the left, search + Logout on the right (never covered by the tab bar) */
  .top{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--card);box-shadow:0 1px 0 var(--bd),0 8px 20px rgba(20,25,60,.05)}
  .top .in{height:58px;gap:4px}
  .logo{margin-right:auto;gap:8px;font-size:20px;flex:none}
  .logo i{width:34px;height:34px;border-radius:11px;box-shadow:0 5px 14px color-mix(in srgb,var(--pr) 45%,transparent)}
  .logo span{display:inline;background:none;-webkit-text-fill-color:currentColor;color:var(--tx);animation:none}
  .logout .icon{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;width:auto;min-width:44px;height:40px;padding:0 13px;gap:6px;white-space:nowrap;border-radius:99px;background:color-mix(in srgb,#ef4444 11%,transparent);color:#ef4444;font-weight:700;font-size:13.5px}
  .logout .icon:active{background:color-mix(in srgb,#ef4444 22%,transparent)}.logout .lbl{display:inline}
  /* floating bottom tab bar, now OUTSIDE the header so it can't cover the logo */
  .dtabs{display:none}
  .mtabs{display:flex;left:10px;right:10px;bottom:calc(8px + env(safe-area-inset-bottom,0px));padding:5px;border-radius:26px;border:1px solid var(--bd);box-shadow:0 14px 34px rgba(20,25,60,.2);background:color-mix(in srgb,var(--card) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);view-transition-name:tabbar}
  .mtabs a{position:relative;isolation:isolate;border-radius:21px;gap:1px;font-weight:700;transition:color .2s,transform .15s}
  .mtabs a:active{transform:scale(.88)}.mtabs a.on,.mtabs a.on span{color:var(--pr)}
  .mtabs a.on::before{content:"";position:absolute;inset:2px 3px;border-radius:20px;background:var(--soft);z-index:-1;view-transition-name:tabpill;animation:fadeIn .25s}
  .mtabs a.on .ico{animation:tabpop .55s cubic-bezier(.2,1.6,.4,1)}
  .wrap{padding-bottom:calc(94px + env(safe-area-inset-bottom,0px))}
  .inthread .mtabs{display:none}
  /* content glides in, one card after another */
  .wrap .card,.wrap .post,.wrap .stories{animation:fadeUp .5s cubic-bezier(.2,.8,.2,1) backwards}
  .wrap .card:nth-child(2){animation-delay:.06s}.wrap .card:nth-child(3){animation-delay:.12s}.wrap .card:nth-child(4){animation-delay:.18s}.wrap .card:nth-child(n+5){animation-delay:.24s}
  /* tap feedback like a native app */
  .row.card:active,.ci:active{transform:scale(.985);background:var(--soft)}button:active,.btn:active{transform:scale(.96)}
  .mlogout{display:block;margin:0 0 14px}.mlogout .btn{color:#ef4444;border-color:color-mix(in srgb,#ef4444 40%,transparent);min-height:46px}
}
@media(max-width:340px){.logout .lbl{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important;scroll-behavior:auto!important}#splash{display:none!important}}
/* the cover-photo button form shares the class name "cover" with the cover image: strip the image styling from it */
.camform.cover{background:none!important;height:auto!important;min-height:0!important;border:0;box-shadow:none;padding:0;overflow:visible}.camform.cover::before,.camform.cover::after{display:none!important}
@media(max-width:760px){.mlogout .btn.ghost{color:#ef4444!important;border-color:color-mix(in srgb,#ef4444 45%,transparent)!important;background:color-mix(in srgb,#ef4444 6%,transparent)!important}}

/* email verification page */
.verify{text-align:center}.verify .mu{margin-bottom:16px}.vicon{font-size:46px;line-height:1;margin-bottom:10px;animation:pop .5s}
.codein{text-align:center;font-size:30px;font-weight:800;letter-spacing:.45em;padding:14px 8px 14px calc(8px + .45em);margin:4px 0 14px}
.verify .resend{margin-top:10px}.verify .sm{font-size:13.5px;margin-top:16px}.verify button[disabled]{opacity:.55;cursor:default}

/* shorts tab fits the 7-item mobile bar */
@media(max-width:760px){.tabs a{padding:6px 4px}}
