:root{--bg:#090b12;--panel:#111522;--panel2:#171c2c;--ink:#f5f7ff;--muted:#8f98ad;--purple:#7c3aed;--purple2:#a78bfa;--green:#20d6a4;--red:#ff4d6d;--line:rgba(255,255,255,.09);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh}button,input{font:inherit}button,a{touch-action:manipulation}a{color:inherit}.eyebrow{margin:0 0 10px;color:var(--purple2);font-size:11px;letter-spacing:.2em;font-weight:800}.muted{color:var(--muted);line-height:1.65}.notice{padding:14px 16px;border-radius:14px;margin:0 0 18px}.notice.error{background:rgba(255,77,109,.12);border:1px solid rgba(255,77,109,.3);color:#ffb5c2}.notice.success{background:rgba(32,214,164,.1);border:1px solid rgba(32,214,164,.28);color:#a8ffe5}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}.brand-panel{position:relative;padding:clamp(38px,7vw,100px);overflow:hidden;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at 20% 15%,rgba(124,58,237,.36),transparent 34%),linear-gradient(145deg,#0e1020,#080910)}.brand-panel:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent)}.brand-mark,.logo span{display:grid;place-items:center;background:linear-gradient(145deg,var(--purple2),var(--purple));box-shadow:0 15px 45px rgba(124,58,237,.4);font-weight:900}.brand-mark{width:70px;height:70px;border-radius:24px;margin-bottom:42px;font-size:30px}.brand-panel h1{font-size:clamp(54px,7vw,102px);line-height:.92;letter-spacing:-.07em;margin:0;position:relative;z-index:1}.brand-copy{max-width:520px;font-size:clamp(17px,2vw,23px);color:#b8bfd1;line-height:1.55;position:relative;z-index:1}.signal-orbit{position:absolute;width:450px;height:450px;border:1px solid rgba(167,139,250,.15);border-radius:50%;right:-220px;bottom:-130px}.signal-orbit i{position:absolute;inset:55px;border:1px solid rgba(167,139,250,.14);border-radius:50%}.signal-orbit i:nth-child(2){inset:110px}.signal-orbit i:nth-child(3){inset:165px;background:var(--purple);box-shadow:0 0 60px var(--purple)}
.auth-card{align-self:center;width:min(560px,calc(100% - 48px));margin:auto;padding:56px}.auth-card h2{font-size:clamp(30px,4vw,48px);letter-spacing:-.04em;margin:0 0 10px}.stack{display:grid;gap:18px;margin-top:30px}.stack label{display:grid;gap:8px;color:#cbd1df;font-size:13px;font-weight:700}.stack input,.search-bar input{width:100%;padding:16px 18px;background:#121624;border:1px solid var(--line);border-radius:14px;color:var(--ink);outline:none}.auth-card .stack input{font-size:16px}.stack input:focus,.search-bar input:focus{border-color:var(--purple2);box-shadow:0 0 0 4px rgba(124,58,237,.12)}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.primary,.secondary{border:0;border-radius:14px;cursor:pointer;font-weight:800}.primary{padding:17px 20px;background:linear-gradient(135deg,var(--purple2),var(--purple));color:white;box-shadow:0 14px 35px rgba(124,58,237,.26);display:flex;justify-content:space-between}.primary.inline{display:inline-flex;text-decoration:none;margin-top:20px}.secondary{padding:11px 15px;background:rgba(124,58,237,.13);color:#cbbcff;border:1px solid rgba(167,139,250,.22)}.auth-help{text-align:right;margin:12px 2px 0;font-size:13px}.auth-help a{color:#66e8c3;text-decoration:none;font-weight:750}.auth-switch{text-align:center;color:var(--muted);font-size:13px;margin-top:24px}.auth-switch a{color:#c4b5fd;font-weight:700}.otp-input{text-align:center;font-size:30px!important;letter-spacing:.35em;font-weight:800}
.app-shell{min-height:100vh;display:grid;grid-template-columns:290px 1fr}.sidebar{padding:27px 22px;border-right:1px solid var(--line);background:rgba(13,16,26,.94);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.logo{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:20px;font-weight:800}.logo span{width:38px;height:38px;border-radius:13px}.profile-mini{display:flex;align-items:center;gap:12px;margin:32px 0;padding:16px 0;border-block:1px solid var(--line)}.profile-mini div{min-width:0;display:grid;gap:3px}.profile-mini strong,.profile-mini span{overflow:hidden;text-overflow:ellipsis}.profile-mini span{color:var(--muted);font-size:12px}.online-dot{width:8px!important;height:8px;background:var(--green);border-radius:50%;margin-left:auto;overflow:visible!important;box-shadow:0 0 12px var(--green)}.avatar{width:48px;height:48px;flex:0 0 auto;display:grid;place-items:center;border-radius:17px;background:linear-gradient(145deg,color-mix(in srgb,var(--avatar),white 18%),var(--avatar));font-weight:900;color:white;box-shadow:0 10px 28px color-mix(in srgb,var(--avatar),transparent 65%)}.avatar-lg{width:52px;height:52px}.avatar-xl{width:68px;height:68px;border-radius:23px;font-size:22px}.avatar-hero{width:110px;height:110px;border-radius:35px;font-size:38px;margin:auto}.sidebar nav{display:grid;gap:8px}.nav-item{display:flex;gap:12px;align-items:center;border:0;background:transparent;color:#8e97ab;padding:13px 15px;border-radius:12px;cursor:pointer;text-align:left}.nav-item.active,.nav-item:hover{background:rgba(124,58,237,.12);color:#ded6ff}.nav-item span{font-size:22px}.logout{margin-top:auto;color:#7f8799;padding:14px;text-decoration:none}.workspace{padding:clamp(25px,4vw,58px);max-width:1500px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:38px}.topbar h1{font-size:clamp(26px,4vw,46px);letter-spacing:-.045em;margin:0}.icon-btn{border:0}.mobile-profile{display:none}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.section-head h2{margin:0;font-size:24px}.section-head p,.section-head span{color:var(--muted);font-size:13px}.view{display:none}.view.active{display:block}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:16px}.contact-card,.result-card,.empty-card,.identity-card{background:linear-gradient(145deg,rgba(25,30,47,.96),rgba(17,21,34,.96));border:1px solid var(--line);border-radius:22px}.contact-card{display:grid;grid-template-columns:auto 1fr;gap:16px;padding:20px;align-items:center}.contact-main{min-width:0}.contact-main h3,.result-card h3{margin:0 0 3px}.contact-main p,.result-card p{margin:0;color:var(--muted);font-size:13px}.pin{display:inline-block;margin-top:8px;color:#b8a9ff;font:700 10px/1 ui-sans-serif,system-ui,sans-serif;letter-spacing:.08em}.call-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px}.call-btn{border:1px solid var(--line);background:rgba(255,255,255,.035);color:white;border-radius:13px;padding:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.call-btn:hover{border-color:rgba(167,139,250,.4);background:rgba(124,58,237,.1)}.call-btn span{font-size:12px}.empty-card{grid-column:1/-1;padding:60px 24px;text-align:center}.empty-card p{color:var(--muted)}.empty-icon{font-size:45px;color:var(--purple2)}.search-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;background:var(--panel);padding:8px 8px 8px 18px;border-radius:18px;border:1px solid var(--line)}.search-bar input{border:0;background:transparent;padding:12px}.search-bar button{border:0;background:var(--purple);color:white;padding:12px 22px;border-radius:12px;font-weight:800}.search-results{display:grid;gap:10px;margin-top:18px}.result-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:15px;padding:16px}.identity-card{max-width:560px;margin:20px auto;padding:55px;text-align:center}.identity-card h2{font-size:36px;margin:18px 0 2px}.pin-hero{display:grid;width:100%;padding:20px;margin:26px 0;background:#0d101a;border:1px dashed rgba(167,139,250,.42);border-radius:17px;color:white;cursor:pointer}.pin-hero span{font-size:25px;font-weight:900;letter-spacing:.15em}.pin-hero small{color:var(--muted);margin-top:6px}.incoming{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);z-index:20;width:min(390px,calc(100% - 32px));padding:42px;text-align:center;border-radius:30px;background:rgba(15,18,30,.96);border:1px solid rgba(167,139,250,.25);box-shadow:0 30px 100px #000,0 0 0 9999px rgba(3,4,8,.72);backdrop-filter:blur(20px)}.incoming h2{margin:8px 0}.incoming p{color:var(--muted)}.incoming>div:last-child{display:flex;justify-content:center;gap:32px;margin-top:25px}.pulse-avatar{width:86px;height:86px;border-radius:30px;margin:auto;display:grid!important;place-items:center;background:var(--purple);font-size:30px;font-weight:900;box-shadow:0 0 0 12px rgba(124,58,237,.12),0 0 55px rgba(124,58,237,.6)}.hangup,.accept{width:58px;height:58px;border-radius:50%;border:0;color:white;font-size:27px;cursor:pointer}.hangup{background:var(--red)}.accept{background:var(--green)}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:50;padding:13px 18px;background:#f4f1ff;color:#21183b;border-radius:14px;font-weight:800;box-shadow:0 15px 50px #000}.loader{color:var(--muted);padding:40px;text-align:center}
.call-body{overflow:hidden}.call-shell{height:100vh;display:grid;grid-template-rows:auto 1fr auto;background:#05070c}.call-header{height:78px;padding:0 28px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);background:rgba(8,10,17,.9);z-index:4}.logo.light{font-size:16px}.call-header>div{display:grid;text-align:center}.call-header>div span{font-size:11px;color:var(--green)}.call-header time{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.video-stage{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 35%,#242a40,#080a10 60%)}.remote-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:3px}.remote-tile{position:relative;overflow:hidden;background:#111522}.remote-tile video{width:100%;height:100%;object-fit:cover}.remote-tile audio{display:none}.remote-name{position:absolute;left:18px;bottom:18px;padding:7px 11px;border-radius:9px;background:rgba(0,0,0,.45);backdrop-filter:blur(8px);font-size:12px}.waiting-card{margin:auto;text-align:center}.waiting-card h1{font-size:38px;margin:25px 0 7px}.waiting-card p{color:var(--muted)}.wave-ring{width:130px;height:130px;border-radius:42px;background:linear-gradient(145deg,#a78bfa,#6d28d9);display:grid;place-items:center;margin:auto;font-size:45px;font-weight:900;box-shadow:0 0 0 18px rgba(124,58,237,.1),0 0 90px rgba(124,58,237,.35)}.local-tile{position:absolute;width:min(25vw,270px);aspect-ratio:3/4;right:22px;bottom:22px;border-radius:22px;overflow:hidden;background:#171c2c;border:1px solid rgba(255,255,255,.18);box-shadow:0 20px 60px #000}.local-tile canvas,.local-tile video{width:100%;height:100%;object-fit:cover}.local-tile video{display:none}.local-tile span{position:absolute;bottom:10px;left:10px;background:rgba(0,0,0,.4);padding:5px 8px;border-radius:8px;font-size:10px}.audio-only .local-tile{display:none}.filter-panel{position:absolute;bottom:28px;left:28px;display:none;gap:8px;padding:13px;background:rgba(8,10,17,.8);border:1px solid var(--line);border-radius:16px;backdrop-filter:blur(18px)}.filter-panel.open{display:flex}.filter-panel p{margin:auto 5px;color:var(--muted);font-size:11px}.filter-panel button{border:1px solid var(--line);background:transparent;color:#b7bfd1;padding:8px 10px;border-radius:9px;cursor:pointer}.filter-panel button.active{background:var(--purple);color:white}.call-controls{

    position:fixed;

    left:0;
    right:0;

    bottom:0;

    display:flex;
    justify-content:center;
    align-items:center;
    gap:12px;

    padding:12px 18px calc(env(safe-area-inset-bottom) + 22px);

    min-height:110px;

    background:#0b0e17;
    border-top:1px solid var(--line);

    z-index:50;

}.control{width:63px;height:63px;border:0;border-radius:20px;background:#1b2030;color:#8f98ad;display:grid;place-items:center;cursor:pointer}.control span{font-size:19px}.control small{font-size:9px}.control.active{color:white;background:#292f43}.control.end{background:var(--red);color:white}.call-error{position:fixed;top:95px;left:50%;transform:translateX(-50%);z-index:20;background:#36131e;color:#ffc1cc;border:1px solid rgba(255,77,109,.35);padding:13px 18px;border-radius:13px}
@media(max-width:850px){.auth-shell{grid-template-columns:1fr}.brand-panel{min-height:34vh;padding:35px}.brand-mark{width:50px;height:50px;border-radius:17px;margin-bottom:22px}.brand-panel h1{font-size:52px}.brand-copy{font-size:15px}.auth-card{padding:34px 0}.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:fixed;z-index:10;bottom:0;top:auto;left:0;right:0;padding:8px 14px;border:0;border-top:1px solid var(--line)}.sidebar .logo,.profile-mini,.sidebar .logout{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(3,1fr)}.nav-item{justify-content:center;display:grid;text-align:center;padding:8px;font-size:10px}.nav-item span{font-size:18px}.workspace{padding:24px 17px 95px}.contact-grid{grid-template-columns:1fr}.topbar{margin-bottom:25px}.topbar h1{font-size:28px}.call-header{grid-template-columns:auto 1fr auto;padding:0 13px}.call-header .logo{font-size:0}.call-header .logo span{width:38px}.local-tile{width:30vw;right:12px;bottom:12px;border-radius:16px}.filter-panel{left:10px;right:10px;bottom:10px;overflow:auto}.filter-panel p{display:none}.call-controls{gap:7px;padding:0 8px}.control{width:55px;height:58px;border-radius:17px}.two{grid-template-columns:1fr}}

/* rabitalk v3 */
.wordmark{display:inline-block;background:linear-gradient(105deg,#fff 10%,#d8ceff 44%,#8b5cf6 82%,#43e7bd);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800;letter-spacing:-.075em;text-decoration:none;line-height:.9}
.wordmark:after{content:"";display:block;width:34%;height:3px;margin:8px 0 0 64%;border-radius:99px;background:linear-gradient(90deg,var(--purple),var(--green))}
.wordmark-hero{font-size:clamp(58px,8vw,112px);margin-bottom:42px;position:relative;z-index:2}.wordmark-top{font-size:25px;margin-bottom:16px}.logo.wordmark{font-size:27px}
.avatar{overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.icon-btn{background:transparent;color:white;cursor:pointer}
.contact-main{position:relative}.unread{position:absolute;right:0;top:5px;background:var(--green);color:#06130f;border-radius:99px;padding:2px 7px;font-size:10px;font-weight:900}
.call-actions{grid-template-columns:repeat(3,1fr)}.call-btn.chat{background:rgba(32,214,164,.09);border-color:rgba(32,214,164,.2)}.search-bar input{text-transform:uppercase}
.avatar-upload{display:grid;gap:10px;justify-items:center}.avatar-upload small{color:var(--muted)}
.chat-panel{position:fixed;z-index:18;right:22px;top:22px;bottom:22px;width:min(520px,calc(100% - 44px));display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;background:rgba(12,15,25,.98);border:1px solid rgba(167,139,250,.24);border-radius:26px;box-shadow:0 30px 100px #000;overflow:hidden}
.chat-panel[hidden]{display:none}.chat-panel header{display:flex;align-items:center;gap:14px;padding:18px;border-bottom:1px solid var(--line)}.chat-panel header .icon-btn{font-size:25px}.chat-panel header div{display:grid}.chat-panel header span{color:var(--muted);font-size:11px}
.messages{overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:10px}.empty-chat{margin:auto;text-align:center;color:var(--muted);max-width:260px;line-height:1.6}
.bubble{align-self:flex-start;max-width:82%;padding:11px 13px;background:#202638;border-radius:6px 17px 17px 17px}.bubble.mine{align-self:flex-end;background:linear-gradient(135deg,#6d28d9,#7c3aed);border-radius:17px 6px 17px 17px}.bubble p{margin:0;white-space:pre-wrap;word-break:break-word}.bubble img,.bubble video{max-width:100%;max-height:330px;border-radius:11px;display:block}.bubble audio{width:min(300px,65vw)}.bubble small{display:block;margin-top:6px;opacity:.68;font-size:9px}
.ephemeral-note{margin:0;padding:7px 18px;text-align:center;color:var(--muted);font-size:9px;border-top:1px solid var(--line)}
.composer{display:grid;grid-template-columns:auto auto 1fr auto;gap:8px;padding:12px;background:#0f1320}.composer input{min-width:0;background:#191e2d;border:1px solid var(--line);border-radius:13px;color:white;padding:12px;outline:none}.attach-btn,.send-btn{display:grid;place-items:center;min-width:44px;border:0;border-radius:13px;background:#202638;color:white;cursor:pointer}.send-btn{background:var(--purple);padding:0 16px;font-weight:800}.attach-btn.recording{background:var(--red);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.55}}
@media(max-width:850px){.wordmark-hero{font-size:58px;margin-bottom:28px}.mobile-profile{display:block}.chat-panel{inset:0;width:100%;border-radius:0}.call-header .logo{font-size:20px}}

/* rabitalk v4 */
html,body{overscroll-behavior:none;touch-action:pan-x pan-y}body{overflow-x:hidden}.app-shell{height:100dvh;min-height:0;overflow:hidden}.sidebar{position:fixed;left:0;top:0;bottom:0;width:290px;height:auto;z-index:12}.workspace{margin-left:290px;height:100dvh;overflow-y:auto;padding-top:112px;padding-bottom:40px}.topbar{position:fixed;left:290px;right:0;top:0;z-index:11;margin:0;padding:20px clamp(25px,4vw,58px);background:rgba(9,11,18,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(18px)}.topbar h1{font-size:22px}.wordmark-top{margin-bottom:8px}
.contact-grid{display:flex;flex-direction:column;gap:4px}.contact-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;padding:11px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;gap:12px}.contact-card:hover{background:rgba(255,255,255,.025)}.contact-card .avatar-xl{width:48px;height:48px;border-radius:16px;font-size:17px}.avatar-button{padding:0;border:0;background:transparent;cursor:pointer}.call-actions{grid-column:auto;display:grid;grid-template-columns:repeat(2,minmax(70px,auto));gap:7px}.call-btn{padding:9px 13px}.contact-main p{margin-top:3px}.empty-card{border:1px solid var(--line);border-radius:20px}
.conversation-list,.request-list{display:grid;gap:5px;margin-bottom:22px}.conversation-row,.request-row{width:100%;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:11px;padding:11px;border:1px solid var(--line);border-radius:15px;background:var(--panel);color:white;text-align:left}.conversation-row span,.request-row div{display:grid}.conversation-row small,.request-row small{color:var(--muted)}.request-list h3{font-size:13px;color:var(--purple2)}.request-row button{border:0;border-radius:9px;padding:8px 10px;background:rgba(124,58,237,.18);color:white;cursor:pointer}
.action-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:rgba(3,4,8,.74);backdrop-filter:blur(12px)}.action-modal[hidden]{display:none}.action-modal>div{width:min(360px,calc(100% - 32px));display:grid;gap:8px;padding:22px;border-radius:22px;background:#151a29;border:1px solid var(--line)}.action-modal h3{margin:0 0 8px}.action-modal button{padding:13px;border:0;border-radius:12px;background:#242a3b;color:white;cursor:pointer}.action-modal button:not([data-modal-close]){background:rgba(124,58,237,.2)}.action-modal button.danger{background:rgba(255,77,109,.15);color:#ff9bad}
.chat-panel header{grid-template-columns:auto auto 1fr auto}.chat-call-btn{border:0;border-radius:10px;padding:8px 10px;background:rgba(32,214,164,.13);color:#8ff5d8;cursor:pointer}.draft-preview{display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:10px;padding:9px 13px;background:#171c2b;border-top:1px solid var(--line)}.draft-preview[hidden]{display:none}.draft-preview img,.draft-preview video{width:58px;height:48px;object-fit:cover;border-radius:8px}.draft-preview audio{width:58px}.draft-preview button{border:0;background:transparent;color:white;font-size:22px}.composer{position:sticky;bottom:0}
.profile-viewer{position:fixed;inset:0;z-index:90;display:grid;place-content:center;justify-items:center;background:rgba(3,4,8,.92);backdrop-filter:blur(20px)}.profile-viewer[hidden]{display:none}.profile-viewer>button{position:absolute;right:25px;top:20px;border:0;background:transparent;color:white;font-size:35px}.profile-viewer img,.profile-viewer #profile-fallback{width:min(78vw,420px);height:min(78vw,420px);object-fit:cover;border-radius:34px;box-shadow:0 35px 100px #000}.profile-viewer #profile-fallback{display:grid;place-items:center;background:linear-gradient(145deg,var(--purple2),var(--purple));font-size:100px;font-weight:900}.profile-viewer #profile-fallback[hidden]{display:none}.profile-viewer h2{margin:18px 0 2px}.profile-viewer p{color:var(--purple2)}
.permission-center{position:fixed;z-index:100;inset:0;display:grid;place-content:center;justify-items:stretch;text-align:center;padding:35px;background:radial-gradient(circle at 50% 20%,#29204b,#080a10 60%)}.permission-center[hidden]{display:none}.permission-center .wordmark{font-size:52px;margin:auto auto 24px}.permission-center p{max-width:480px;color:var(--muted);line-height:1.6}.permission-center button{margin-top:10px;justify-content:center}
.call-header{position:fixed;top:0;left:0;right:0}.call-controls{position:fixed;left:0;right:0;bottom:0;min-height:118px;height:auto;display:flex;align-items:flex-start;justify-content:center;gap:10px;padding:14px 10px 34px;background:#0b0e17;border-top:1px solid var(--line);z-index:50;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.video-stage{margin-top:78px;margin-bottom:118px}.audio-only{background:radial-gradient(circle at 50% 35%,#282044,#090b12 65%)}.audio-only .waiting-card{display:block}.audio-only .remote-tile{background:transparent}.audio-only .remote-tile audio{display:block;width:1px;height:1px;opacity:.01}
@media(max-width:850px){.app-shell{display:block}.sidebar{top:auto;width:auto;height:calc(72px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.sidebar nav{grid-template-columns:repeat(4,1fr)}.sidebar nav .nav-item:first-child:nth-last-child(3),.sidebar nav .nav-item:first-child:nth-last-child(3)~.nav-item{grid-column:auto}.workspace{margin-left:0;height:100dvh;padding:98px 14px calc(92px + env(safe-area-inset-bottom))}.topbar{left:0;padding:14px 17px}.topbar h1{font-size:18px}.wordmark-top{font-size:22px}.contact-card{grid-template-columns:auto minmax(0,1fr);padding:10px 4px}.call-actions{grid-column:1/-1;grid-template-columns:1fr 1fr}.chat-panel{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.filter-panel{bottom:132px}.call-controls{min-height:126px;padding:12px 8px 38px;justify-content:center;align-items:flex-start;overflow-x:auto}.control{flex:0 0 55px}.profile-viewer img,.profile-viewer #profile-fallback{width:88vw;height:88vw}}

/* rabitalk v5 */
.secondary.compact{padding:9px 13px}.identity-card{max-width:620px;padding:26px;text-align:left}.identity-head{display:flex;align-items:center;gap:20px}.identity-head .avatar-hero{width:82px;height:82px;border-radius:26px;margin:0}.identity-head h2{font-size:28px;margin:3px 0}.identity-head .eyebrow{margin:0}.identity-settings{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin:20px 0}.identity-settings label{display:grid;gap:7px;color:var(--muted);font-size:12px}.identity-settings input{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#0d101a;color:white;outline:none}.identity-settings input:focus{border-color:var(--purple2)}.identity-save{justify-content:center;padding:14px 18px}.identity-actions{display:grid;border-top:1px solid var(--line)}.identity-action{display:grid;gap:4px;padding:16px 4px;border-bottom:1px solid var(--line);text-decoration:none;cursor:pointer;font-weight:700}.identity-action small{color:var(--muted);font-weight:500}.identity-action.danger{color:#ff91a5}.profile-viewer #profile-unfriend{position:static;margin-top:14px;padding:11px 16px;border-radius:12px;background:rgba(255,77,109,.14);border:1px solid rgba(255,77,109,.28);color:#ff9caf;font-size:13px;cursor:pointer}.profile-viewer #profile-unfriend[hidden]{display:none}.wave-ring{overflow:hidden;background:linear-gradient(145deg,color-mix(in srgb,var(--avatar),white 18%),var(--avatar))}.wave-ring img{width:100%;height:100%;object-fit:cover}.waiting-card time{display:block;margin-top:10px;color:#d8d1f6;font-size:22px;font-variant-numeric:tabular-nums;letter-spacing:.06em}.audio-only .waiting-card{position:relative;z-index:2}.audio-only .remote-tile{position:absolute;inset:0}.audio-only .remote-name{display:none}
@media(max-width:850px){.section-head{align-items:center}.secondary.compact{font-size:11px}.identity-card{padding:20px 17px;margin:0}.identity-head{gap:14px}.identity-head .avatar-hero{width:68px;height:68px;border-radius:22px}.identity-head h2{font-size:22px}.identity-settings{grid-template-columns:1fr}.identity-save{width:100%}}

/* rabitalk v6 */
.audio-only .wave-ring{width:190px;height:190px;border-radius:58px;font-size:62px;box-shadow:0 0 0 22px rgba(124,58,237,.1),0 0 110px rgba(124,58,237,.4)}.audio-only .waiting-card h1{margin-top:34px}.video-stage:not(.audio-only) .local-tile{opacity:1}.video-stage:not(.audio-only) .local-tile canvas{background:#111522}
@media(max-width:600px){.audio-only .wave-ring{width:156px;height:156px;border-radius:48px}.audio-only .waiting-card h1{font-size:30px}}
.video-stage:not(.audio-only) .waiting-card{position:absolute;inset:0;z-index:2;display:grid;place-content:center;text-align:center;padding:24px;background:radial-gradient(circle at 50% 38%,rgba(36,42,64,.94),rgba(8,10,16,.97) 64%)}
.video-stage:not(.audio-only) .waiting-card[hidden]{display:none}


/* rabitalk v7 - perbaikan footer panggilan Android */
@media(max-width:850px){
    .call-body{
        min-height:100dvh;
        padding-bottom:0;
    }

    .call-shell{
        height:100dvh;
        min-height:100dvh;
        overflow:hidden;
    }

    .call-controls{
        bottom:0!important;
        min-height:126px!important;
        height:auto!important;
        padding:12px 8px 38px!important;
        align-items:flex-start!important;
        justify-content:center!important;
        transform:none!important;
        z-index:999!important;
    }

    .video-stage{
        margin-top:78px!important;
        margin-bottom:126px!important;
    }

    .local-tile{
        bottom:18px!important;
    }
}

@media(max-width:420px){
    .call-controls{
        gap:6px!important;
        padding-left:6px!important;
        padding-right:6px!important;
    }

    .control{
        width:52px!important;
        height:56px!important;
        flex-basis:52px!important;
    }
}

/* rabitalk chat long-press menu */
.conversation-row{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y}
.chat-menu-hint{margin:0 0 8px;color:var(--muted);font-size:12px;line-height:1.5}
#chat-menu-modal button.danger{background:rgba(255,77,109,.16);color:#ff9bad;border:1px solid rgba(255,77,109,.24)}


/* rabitalk v9 - pratinjau pesan dan badge belum dibaca */
.conversation-row{grid-template-columns:auto minmax(0,1fr) auto!important}
.conversation-copy{min-width:0;display:grid;gap:4px}
.conversation-copy strong,.conversation-copy small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conversation-copy small{font-size:13px;color:var(--muted)}
.conversation-unread{display:grid;place-items:center;justify-self:end;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--green);color:#04130f;font-size:11px;line-height:1;font-weight:900;box-shadow:0 6px 18px rgba(32,214,164,.26)}
@media(max-width:850px){.conversation-unread{min-width:21px;height:21px;font-size:10px}.conversation-copy small{font-size:12px}}

/* rabitalk chat gesture kembali - versi stabil */
.chat-profile-btn{width:44px;height:44px;flex:0 0 44px;padding:0;border:0;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:linear-gradient(145deg,var(--purple2),var(--purple));color:#fff;font-weight:900;cursor:pointer;box-shadow:0 8px 24px rgba(124,58,237,.28)}
.chat-profile-btn img{grid-area:1/1;width:100%;height:100%;object-fit:cover;display:none}
.chat-profile-btn img.is-visible{display:block}
.chat-profile-btn span{grid-area:1/1;font-size:17px}
.chat-profile-btn img.is-visible+span{display:none}
.chat-panel{touch-action:pan-y!important;overscroll-behavior-x:none;transform:translate3d(0,0,0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.chat-panel.simple-swipe-close{pointer-events:none;transform:translate3d(-105%,0,0)!important;transition:transform .22s cubic-bezier(.2,.75,.25,1)!important}
#messages{touch-action:pan-y!important;overscroll-behavior-x:none}
@media(max-width:850px){.chat-panel header{padding-left:16px}.chat-profile-btn{width:42px;height:42px;flex-basis:42px}}

.messages{overscroll-behavior-x:none}


/* rabitalk header menu pengguna */
.chat-header-action{cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .16s ease}
.chat-header-action:active{background:rgba(124,58,237,.08)}
.chat-header-identity{min-width:0;display:grid;text-align:left!important}
.chat-header-identity strong,.chat-header-identity span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#contact-menu-modal .contact-pin-copy{display:grid;gap:3px;text-align:center;background:rgba(32,214,164,.10);border:1px solid rgba(32,214,164,.20);color:#b7ffe9}
#contact-menu-modal .contact-pin-copy span{font-weight:900;letter-spacing:.08em}
#contact-menu-modal .contact-pin-copy small{font-size:10px;color:var(--muted);font-weight:600}


/* rabitalk header chat - profil, identitas, tombol panggil */
.chat-panel header#chat-header{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important;align-items:center!important;gap:13px!important}
.chat-header-identity{min-width:0;display:grid;text-align:left!important;justify-self:stretch}
.chat-header-identity strong{font-size:18px;line-height:1.15}
.chat-header-identity span{margin-top:4px;font-size:12px;color:var(--muted)}
.chat-call-btn{width:48px;height:48px;padding:0!important;border:0;border-radius:50%!important;display:grid;place-items:center;background:rgba(32,214,164,.14)!important;color:#8ff5d8!important;cursor:pointer;justify-self:end;flex:0 0 48px}
.chat-call-btn svg{width:23px;height:23px;fill:currentColor}
.chat-call-btn:active{transform:scale(.94);background:rgba(32,214,164,.24)!important}
@media(max-width:850px){.chat-panel header#chat-header{grid-template-columns:42px minmax(0,1fr) 46px!important;gap:11px!important;padding-left:16px!important;padding-right:15px!important}.chat-call-btn{width:46px;height:46px;flex-basis:46px}.chat-call-btn svg{width:22px;height:22px}.chat-header-identity strong{font-size:17px}}


/* rabitalk voice recorder waveform */
.voice-btn svg{width:22px;height:22px;fill:currentColor}
.voice-btn.recording{background:rgba(255,77,109,.18)!important;color:#ff758d!important;animation:voiceMicPulse 1s ease-in-out infinite}
@keyframes voiceMicPulse{50%{transform:scale(.92);box-shadow:0 0 0 9px rgba(255,77,109,.08)}}
.composer{position:relative}
.voice-recorder{position:absolute;inset:8px;z-index:8;display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;gap:9px;padding:7px 8px;border-radius:17px;background:linear-gradient(135deg,rgba(22,27,44,.98),rgba(13,17,29,.98));border:1px solid rgba(167,139,250,.22);box-shadow:0 12px 35px rgba(0,0,0,.38)}
.voice-recorder[hidden]{display:none!important}
.voice-recorder-action{width:44px;height:44px;border:0;border-radius:14px;display:grid;place-items:center;color:white;font-size:23px;font-weight:900;cursor:pointer}
.voice-recorder-action.cancel{background:rgba(255,77,109,.15);color:#ff91a5}
.voice-recorder-action.finish{background:linear-gradient(135deg,#8b5cf6,#6d28d9);box-shadow:0 8px 24px rgba(124,58,237,.3)}
.voice-live{min-width:0;display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px}
.voice-live-dot{width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 0 rgba(255,77,109,.45);animation:voiceRecDot 1.15s infinite}
@keyframes voiceRecDot{70%{box-shadow:0 0 0 8px rgba(255,77,109,0)}}
#voice-wave{display:block;width:100%;height:38px}
#voice-time{font-size:12px;font-variant-numeric:tabular-nums;color:#d9d4eb;min-width:38px;text-align:right}
.composer.voice-recording>label,.composer.voice-recording>#voice-btn,.composer.voice-recording>#message-input,.composer.voice-recording>.send-btn{visibility:hidden}
@media(max-width:480px){.voice-recorder{grid-template-columns:44px minmax(0,1fr) 44px;inset:7px;gap:6px}.voice-recorder-action{width:40px;height:40px;border-radius:13px}.voice-live{gap:6px}#voice-wave{height:34px}#voice-time{font-size:11px;min-width:34px}}


/* rabitalk custom audio player */
.rt-audio-player{display:grid;grid-template-columns:46px minmax(150px,1fr);align-items:center;gap:11px;min-width:min(310px,72vw);padding:9px 10px;border-radius:17px;background:rgba(10,13,23,.26)}
.rt-audio-player audio{display:none!important}
.rt-audio-toggle{width:42px;height:42px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.15);color:#fff;cursor:pointer;padding:0}
.rt-audio-toggle svg{width:22px;height:22px;fill:currentColor}
.rt-audio-toggle .rt-pause-icon{display:none}
.rt-audio-player.is-playing .rt-play-icon{display:none}
.rt-audio-player.is-playing .rt-pause-icon{display:block}
.rt-audio-main{min-width:0;display:grid;gap:6px}
.rt-audio-wave{position:relative;height:30px;display:flex;align-items:center;gap:2px;overflow:hidden;cursor:pointer;touch-action:none}
.rt-audio-wave i{position:relative;z-index:1;flex:1 1 0;height:var(--h);min-width:2px;border-radius:99px;background:rgba(255,255,255,.42);pointer-events:none}
.rt-audio-progress{position:absolute;inset:0 auto 0 0;width:0;z-index:2;pointer-events:none;mix-blend-mode:screen;background:linear-gradient(90deg,rgba(196,181,253,.75),rgba(124,58,237,.85));clip-path:inset(0 0 0 0)}
.rt-audio-time{font-size:10px!important;line-height:1!important;opacity:.78!important;margin:0!important;font-variant-numeric:tabular-nums}
.bubble .rt-audio-player{background:transparent;padding:3px 1px;min-width:min(290px,68vw)}
.bubble.mine .rt-audio-toggle{background:rgba(255,255,255,.22)}
.draft-preview.voice-draft{grid-template-columns:minmax(0,1fr) auto;padding:10px 13px}
.draft-preview.voice-draft #draft-media{min-width:0}
.draft-preview.voice-draft #draft-name{display:none!important}
.draft-preview.voice-draft .rt-audio-player{width:100%;min-width:0;background:rgba(10,13,23,.38)}
.draft-preview.voice-draft #clear-draft{align-self:center;width:38px;height:38px;border-radius:12px;background:rgba(255,77,109,.12);color:#ff9bad;font-size:25px}
@media(max-width:480px){.rt-audio-player{grid-template-columns:42px minmax(120px,1fr);min-width:min(270px,70vw);gap:8px}.rt-audio-toggle{width:38px;height:38px}.rt-audio-wave{height:27px}.bubble .rt-audio-player{min-width:min(255px,65vw)}}


/* rabitalk v13 - status pesan terkirim, sampai, dan dibaca */
.bubble>small{display:flex;align-items:center;justify-content:flex-start;gap:7px}
.bubble.mine>small{justify-content:flex-end}
.message-receipt{display:inline-flex;align-items:center;position:relative;min-width:14px;height:12px;margin-left:1px;font-size:12px;font-weight:900;line-height:1;letter-spacing:-5px;white-space:nowrap}
.message-receipt i{font-style:normal;display:inline-block;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.message-receipt.sent{letter-spacing:0;color:rgba(223,216,255,.58)}
.message-receipt.delivered{color:rgba(19,14,38,.56)}
.message-receipt.read{color:#65e5e1;filter:drop-shadow(0 0 4px rgba(101,229,225,.25))}


/* rabitalk realtime upload bubble */
.bubble.uploading{opacity:.96}
.upload-media{position:relative;overflow:hidden;border-radius:16px;min-width:min(320px,72vw);background:#0d111d}
.upload-media img,.upload-media video{display:block;width:100%;max-height:310px;object-fit:cover;filter:brightness(.58)}
.upload-cover{position:absolute;inset:0;display:grid;place-content:center;gap:4px;text-align:center;background:rgba(7,10,18,.28);color:#fff}
.upload-cover b{font-size:26px;font-variant-numeric:tabular-nums}
.upload-cover em{font-style:normal;font-size:12px;opacity:.86}
.upload-state{font-weight:800;color:rgba(255,255,255,.74)}
.upload-voice{display:grid;gap:7px;min-width:min(290px,68vw)}
.upload-line{height:4px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.18)}
.upload-line span{display:block;width:0;height:100%;background:rgba(255,255,255,.85);transition:width .15s linear}
.upload-voice>small{display:block!important;font-size:10px!important;text-align:right;opacity:.8}
.bubble.upload-failed{outline:1px solid rgba(255,95,125,.55)}
.bubble.upload-failed .upload-state{color:#ff9aad}


/* Rabitalk minimal media gallery */
.rt-media-thumb{position:relative;display:block;width:100%;padding:0;border:0;border-radius:18px;overflow:hidden;background:#0b0f1b;cursor:pointer;color:#fff;text-align:inherit}
.rt-media-thumb img,.rt-media-thumb>video{display:block;width:100%;max-height:360px;object-fit:cover;background:#090c15}
.rt-media-thumb:active{transform:scale(.992)}
.rt-media-glow{position:absolute;inset:auto 0 0;height:28%;background:linear-gradient(transparent,rgba(0,0,0,.14));pointer-events:none}
.rt-video-thumb>video{pointer-events:none}
.rt-video-play{position:absolute;left:50%;top:50%;width:54px;height:54px;transform:translate(-50%,-50%);display:grid;place-items:center;border-radius:50%;background:rgba(10,13,23,.68);border:1px solid rgba(255,255,255,.22);box-shadow:0 12px 34px rgba(0,0,0,.34);backdrop-filter:blur(12px)}
.rt-video-play svg{width:25px;height:25px;fill:#fff;transform:translateX(1px)}
body.media-viewer-open{overflow:hidden;touch-action:none}
.rt-media-viewer[hidden]{display:none!important}
.rt-media-viewer{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:max(14px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#05070d}
.rt-media-backdrop{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,rgba(45,34,79,.24),transparent 52%),rgba(4,6,11,.97)}
.rt-media-stage{position:relative;z-index:1;width:100%;height:100%;display:grid;place-items:center;overflow:hidden}
.rt-media-close{position:absolute;z-index:8;top:8px;right:8px;width:42px;height:42px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(17,21,34,.66);color:#fff;backdrop-filter:blur(14px);cursor:pointer}
.rt-media-close svg{width:22px;height:22px;fill:currentColor}
.rt-media-photo-wrap,.rt-media-video-wrap{position:relative;width:100%;height:100%;display:grid;place-items:center}
.rt-media-photo-wrap[hidden],.rt-media-video-wrap[hidden]{display:none!important}
.rt-media-viewer.photo-mode .rt-media-video-wrap,.rt-media-viewer.video-mode .rt-media-photo-wrap{display:none!important}
.rt-media-photo{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;box-shadow:0 24px 80px rgba(0,0,0,.42);user-select:none;-webkit-user-drag:none}
.rt-media-video{display:block;width:100%;height:100%;object-fit:contain;background:#05070d}
.rt-media-center-play{position:absolute;left:50%;top:50%;width:68px;height:68px;transform:translate(-50%,-50%);border:0;border-radius:50%;display:grid;place-items:center;background:rgba(15,19,31,.62);color:#fff;backdrop-filter:blur(14px);transition:.2s;cursor:pointer}
.rt-media-center-play svg{width:30px;height:30px;fill:currentColor}.rt-media-center-play .pause,.rt-video-toggle .pause{display:none}.rt-media-viewer.is-playing .rt-media-center-play{opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.9)}.rt-media-viewer.is-playing .rt-video-toggle .play{display:none}.rt-media-viewer.is-playing .rt-video-toggle .pause{display:block}
.rt-video-controls{position:absolute;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(720px,calc(100% - 18px));display:grid;grid-template-columns:40px auto minmax(70px,1fr) auto 40px;align-items:center;gap:9px;padding:8px 10px;border-radius:18px;background:rgba(16,20,32,.68);border:1px solid rgba(255,255,255,.09);box-shadow:0 14px 45px rgba(0,0,0,.28);backdrop-filter:blur(18px)}
.rt-video-toggle,.rt-video-fullscreen{width:38px;height:38px;border:0;border-radius:12px;display:grid;place-items:center;background:transparent;color:#fff;cursor:pointer}.rt-video-toggle svg,.rt-video-fullscreen svg{width:21px;height:21px;fill:currentColor}
.rt-video-current,.rt-video-duration{font-size:11px;color:rgba(255,255,255,.76);font-variant-numeric:tabular-nums;white-space:nowrap}
.rt-video-seek{position:relative;height:20px;display:flex;align-items:center;cursor:pointer;touch-action:none}.rt-video-seek:before{content:"";position:absolute;left:0;right:0;height:3px;border-radius:99px;background:rgba(255,255,255,.2)}.rt-video-seek span{position:relative;z-index:1;display:block;width:0;height:3px;border-radius:99px;background:linear-gradient(90deg,#aa8cff,#72e5dd)}
@media(max-width:520px){.rt-media-viewer{padding:0}.rt-media-close{top:max(12px,env(safe-area-inset-top));right:12px}.rt-video-controls{bottom:max(10px,env(safe-area-inset-bottom));grid-template-columns:36px auto minmax(55px,1fr) auto 36px;gap:6px;padding:7px 8px;border-radius:16px}.rt-video-toggle,.rt-video-fullscreen{width:34px;height:34px}.rt-video-current,.rt-video-duration{font-size:10px}.rt-media-center-play{width:60px;height:60px}.rt-media-photo{border-radius:0}}

/* rabitalk - menu tekan lama pesan */
.bubble[data-message-id]{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y;cursor:default}
.message-menu-modal button[hidden]{display:none!important}
.message-menu-modal>div{width:min(92vw,390px)}
.message-menu-modal h3{margin-bottom:10px}
.message-menu-modal button{min-height:50px}
.message-menu-modal button.danger{background:rgba(255,77,109,.14);color:#ff9bad;border:1px solid rgba(255,77,109,.22)}
.forward-modal>div{width:min(92vw,430px);max-height:min(78dvh,680px);grid-template-rows:auto auto minmax(0,1fr);padding:18px}
.forward-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}
.forward-heading h3{margin:2px 0 0}.forward-heading .eyebrow{margin:0}
.action-modal .forward-close{flex:0 0 42px;width:42px;height:42px;min-height:0;padding:0;border-radius:14px;background:#252b3e;font-size:24px;line-height:1}
.forward-hint{margin:0 0 3px;color:var(--muted);font-size:13px;line-height:1.45}
.forward-contact-list{display:grid;align-content:start;gap:5px;min-height:110px;max-height:52dvh;overflow-y:auto;overscroll-behavior:contain;padding:2px}
.action-modal .forward-contact{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:66px;padding:9px 11px;text-align:left;background:transparent;border:1px solid transparent}
.action-modal .forward-contact:hover,.action-modal .forward-contact:focus-visible{background:rgba(124,58,237,.14);border-color:rgba(167,139,250,.25)}
.forward-contact .avatar{width:44px;height:44px;border-radius:15px;font-size:15px}.forward-contact .avatar img{width:100%;height:100%;object-fit:cover}
.forward-contact>span:nth-child(2){display:grid;min-width:0;gap:3px}.forward-contact strong,.forward-contact small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forward-contact small{color:var(--muted)}
.forward-contact>b{color:var(--purple2);font-size:25px}.forward-contact.is-sending{opacity:.58;cursor:wait}.forward-contact.is-sending>b{font-size:0}.forward-contact.is-sending>b::after{content:'…';font-size:18px}
.forward-empty{display:grid;place-items:center;gap:6px;min-height:150px;padding:18px;text-align:center;color:var(--muted)}.forward-empty strong{color:white}.forward-empty span{font-size:13px;line-height:1.5}
.reply-preview{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 13px;background:#171c2b;border-top:1px solid var(--line)}
.reply-preview[hidden]{display:none}.reply-preview>div{display:grid;min-width:0;gap:3px;padding-left:10px;border-left:3px solid var(--purple2)}
.reply-preview small{color:var(--muted);font-size:10px}.reply-preview small strong{color:#c8b8ff}.reply-preview>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ece9f8;font-size:12px}
.reply-preview>button{width:38px;height:38px;border:0;border-radius:12px;background:rgba(255,77,109,.1);color:#ff9bad;font-size:23px;cursor:pointer}
.message-reply-quote{display:grid;width:100%;min-width:0;margin:0 0 8px;padding:8px 10px;text-align:left;border:0;border-left:3px solid #b69cff;border-radius:8px;background:rgba(9,12,21,.28);color:white;cursor:pointer}
.message-reply-quote strong,.message-reply-quote span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-reply-quote strong{color:#d5c8ff;font-size:11px}.message-reply-quote span{margin-top:2px;color:rgba(255,255,255,.75);font-size:11px}
.bubble.mine .message-reply-quote{background:rgba(24,10,54,.27);border-left-color:#e0d6ff}.bubble.reply-highlight{animation:replyMessageHighlight 1.4s ease}
@keyframes replyMessageHighlight{0%,100%{box-shadow:none}22%,68%{box-shadow:0 0 0 3px rgba(196,181,253,.72),0 0 30px rgba(124,58,237,.46)}}

/* Cegah pemilihan teks/callout browser ketika menu tekan-lama terbuka. */
.message-menu-modal,
.message-menu-modal *,
.action-modal,
.action-modal *{
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
  -webkit-tap-highlight-color:transparent;
}
.message-menu-modal button,
.action-modal button{
  touch-action:manipulation;
}

/* Pencarian teman menyatu dengan halaman Lingkaran. */
.circle-search-panel{
  margin-bottom:26px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:20px;
  background:linear-gradient(145deg,rgba(25,30,47,.82),rgba(17,21,34,.82));
}
.circle-search-copy{margin-bottom:14px}
.circle-search-copy h3{margin:0 0 4px;font-size:17px}
.circle-search-copy p{margin:0;color:var(--muted);font-size:13px}
.circle-search-panel .search-results:empty{display:none}
@media(max-width:640px){
  .circle-search-panel{padding:14px}
}

/* Daftar Lingkaran minimal: identitas saja, tindakan muncul setelah diketuk. */
.minimal-contact-card{
  width:100%;
  grid-template-columns:auto minmax(0,1fr)!important;
  align-items:center;
  color:var(--ink);
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.minimal-contact-card .contact-main{display:grid;gap:3px}
.minimal-contact-card .contact-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}
.minimal-contact-card .contact-main small{color:var(--muted);font-size:12px;letter-spacing:.02em}
.minimal-contact-card:focus-visible{outline:2px solid var(--purple2);outline-offset:-2px}
.contact-quick-identity{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:13px;margin-bottom:8px;padding:4px}
.contact-quick-identity .avatar{position:relative}
.contact-quick-identity .avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.contact-quick-identity h3{margin:0 0 4px!important}
.contact-quick-identity p{margin:0;color:var(--muted);font-size:12px}

/* Instalasi PWA yang mudah ditemukan dari halaman Identitasku. */
.install-card{margin-top:18px;padding:18px;border:1px solid rgba(139,92,246,.3);border-radius:20px;background:linear-gradient(145deg,rgba(109,40,217,.15),rgba(35,213,171,.06));box-shadow:0 16px 45px rgba(0,0,0,.16)}
.install-card-head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:13px}
.install-card-head h3{margin:2px 0 5px;font-size:19px}
.install-card-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.install-app-icon{width:54px;height:54px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#6d28d9,#23d5ab);color:#fff;font:900 29px/1 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 10px 28px rgba(109,40,217,.34)}
.install-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;margin-top:16px}
.install-actions button{min-height:46px}
.install-guide{margin-top:14px;padding:13px 14px;border:1px solid var(--line);border-radius:15px;background:rgba(9,11,18,.56)}
.install-guide[hidden],.install-guide ol[hidden]{display:none!important}
.install-guide ol{margin:0;padding-left:21px;color:var(--muted);font-size:13px;line-height:1.6}
.install-guide li+li{margin-top:5px}
.install-guide strong{color:var(--ink)}
.install-status{min-height:18px;margin:10px 1px 0;color:#a9b4c9;font-size:12px}
.install-actions button[hidden]{display:none!important}
.install-card.is-installed{padding:14px 15px;background:rgba(109,40,217,.09);box-shadow:none}
.install-card.is-installed .install-app-icon{width:46px;height:46px;border-radius:14px;font-size:25px}
.install-card.is-installed .install-card-head h3{font-size:17px}
.install-card.is-installed .install-actions{grid-template-columns:1fr;margin-top:12px}
.install-card.is-installed #share-install-link{width:100%;min-height:42px}
@media(max-width:560px){.install-card{padding:15px}.install-actions{grid-template-columns:1fr}.install-actions .secondary{width:100%}}

/* Empat menu utama dibagi rata; Cerita berada di antara chat dan Lingkaran. */
@media(max-width:850px){
  .sidebar nav{
    width:100%;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
  }
  .sidebar nav .nav-item{
    min-width:0;
    grid-column:auto!important;
  }
}

/* Cerita Rabitalk: jejak singkat 24 jam dengan orbit visual khas. */
.own-story-orbit{position:relative;display:grid!important;place-items:center;flex:0 0 auto;overflow:visible!important;border-radius:22px}
.own-story-orbit.has-story:before{content:"";position:absolute;inset:-5px;border:2px solid transparent;border-radius:24px;background:linear-gradient(135deg,#a855f7,#6d28d9 52%,#26d6aa) border-box;-webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;filter:drop-shadow(0 0 8px rgba(99,102,241,.5))}
.stories-view{max-width:1040px;margin:auto}
.story-section-head{align-items:center}
.story-section-head .eyebrow{margin:0 0 5px;color:#9e82ff}
.story-section-head h2{font-size:34px}
.story-section-head .primary{display:flex;align-items:center;gap:8px}
.own-story-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:17px;align-items:center;padding:18px 20px;margin-bottom:30px;border:1px solid rgba(167,139,250,.18);border-radius:24px;background:radial-gradient(circle at 7% 20%,rgba(109,40,217,.17),transparent 32%),linear-gradient(145deg,rgba(25,30,47,.98),rgba(14,18,30,.98));box-shadow:0 18px 50px rgba(0,0,0,.18)}
.own-story-card strong{font-size:18px}
.own-story-card p{margin:4px 0 0;color:var(--muted);font-size:13px}
.story-avatar-button{padding:0;border:0;background:none;cursor:pointer}
.story-avatar-orbit{position:relative;display:grid;padding:4px;border:2px dashed rgba(167,139,250,.45);border-radius:28px}
.own-story-card.has-story .story-avatar-orbit{border-style:solid;border-color:#7c3aed;box-shadow:0 0 0 3px rgba(38,214,170,.14)}
.story-avatar-orbit b{position:absolute;right:-4px;bottom:-4px;width:25px;height:25px;display:grid;place-items:center;border:3px solid #111522;border-radius:9px;background:#26d6aa;color:#08110e;font:900 16px/1 ui-sans-serif,system-ui,sans-serif}
.own-story-card.has-story .story-avatar-orbit b{background:#8b5cf6;color:white;font-size:0}
.own-story-card.has-story .story-avatar-orbit b:after{content:"✦";font-size:12px}
.story-create-mini{border:1px solid rgba(167,139,250,.25);border-radius:13px;background:rgba(124,58,237,.12);color:#ded5ff;padding:11px 15px;font-weight:800;cursor:pointer}
.story-feed-head{display:flex;align-items:center;justify-content:space-between;margin:0 2px 15px}
.story-feed-head h3{margin:0;font-size:16px}
.story-feed-head span{color:var(--muted);font-size:12px}
.story-feed{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:14px}
.story-trail-card{position:relative;min-height:290px;padding:0;border:1px solid rgba(255,255,255,.08);border-radius:25px;overflow:hidden;color:#fff;text-align:left;cursor:pointer;box-shadow:0 18px 45px rgba(0,0,0,.23);transition:transform .2s,border-color .2s}
.story-trail-card:hover{transform:translateY(-3px);border-color:rgba(167,139,250,.55)}
.story-trail-card.is-seen{filter:saturate(.65);opacity:.78}
.story-trail-preview{position:absolute;inset:0;display:grid;place-items:center;padding:28px 22px 82px;font-size:19px;font-weight:800;line-height:1.45;text-align:center}
.story-trail-preview:after{content:"";position:absolute;inset:auto 0 0;height:42%;background:linear-gradient(transparent,rgba(5,7,13,.92))}
.story-trail-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.story-video-mark{width:58px;height:58px;display:grid;place-items:center;padding-left:4px;border:1px solid rgba(255,255,255,.38);border-radius:21px;background:rgba(8,10,18,.45);backdrop-filter:blur(9px)}
.story-trail-person{position:absolute;z-index:2;left:15px;right:15px;bottom:15px;display:flex;align-items:center;gap:10px}
.story-trail-person .avatar{width:42px;height:42px;border-radius:15px;border:2px solid rgba(255,255,255,.65)}
.story-trail-person>span:last-child{display:grid;min-width:0}
.story-trail-person strong,.story-trail-person small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.story-trail-person small{margin-top:2px;color:rgba(255,255,255,.7);font-size:10px}
.story-empty,.story-loading{grid-column:1/-1;min-height:230px;display:grid;place-items:center;align-content:center;text-align:center;padding:35px;border:1px dashed rgba(167,139,250,.2);border-radius:24px;background:rgba(17,21,34,.55)}
.story-empty>span{color:#26d6aa;font-size:35px}
.story-empty h3{margin:10px 0 3px}
.story-empty p,.story-loading p{max-width:430px;margin:5px auto;color:var(--muted);line-height:1.55}
.story-empty.compact{min-height:130px}
.story-loading>span{width:30px;height:30px;border:3px solid rgba(167,139,250,.18);border-top-color:#8b5cf6;border-radius:50%;animation:story-spin .8s linear infinite}
@keyframes story-spin{to{transform:rotate(360deg)}}
.story-bg-violet{background:radial-gradient(circle at 18% 15%,#a855f7 0,transparent 31%),linear-gradient(145deg,#25104a,#5b21b6 54%,#151a33)}
.story-bg-aurora{background:radial-gradient(circle at 82% 10%,#34d399 0,transparent 34%),linear-gradient(145deg,#0f3b46,#116466 55%,#191a44)}
.story-bg-ember{background:radial-gradient(circle at 15% 12%,#fb7185 0,transparent 32%),linear-gradient(145deg,#4a1536,#a13d3d 58%,#271327)}
.story-bg-midnight{background:radial-gradient(circle at 78% 18%,#4f46e5 0,transparent 30%),linear-gradient(145deg,#070b18,#131d3b 60%,#080a10)}
.story-bg-ocean{background:radial-gradient(circle at 22% 12%,#38bdf8 0,transparent 30%),linear-gradient(145deg,#0b3b6d,#075985 50%,#0b213f)}
.story-layer{position:fixed;z-index:110;inset:0;display:grid;place-items:center;padding:20px;background:rgba(4,5,10,.82);backdrop-filter:blur(14px)}
.story-layer[hidden],.story-viewer[hidden],.story-media-picker[hidden],.story-media-preview[hidden],.story-palette[hidden],.story-caption-wrap[hidden],.story-viewer footer[hidden]{display:none!important}
.story-composer-card,.story-viewers-card{width:min(520px,100%);max-height:min(860px,calc(100dvh - 30px));overflow:auto;border:1px solid rgba(167,139,250,.25);border-radius:29px;background:#111522;box-shadow:0 35px 100px rgba(0,0,0,.7)}
.story-composer-card>header,.story-viewers-card>header{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}
.story-composer-card header h2,.story-viewers-card header h2{margin:2px 0 0}
.story-composer-card header .eyebrow,.story-viewers-card header .eyebrow{margin:0}
.story-composer-card header button,.story-viewers-card header button,.story-viewer header>button{width:42px;height:42px;border:0;border-radius:14px;background:#20273b;color:#fff;font-size:24px;cursor:pointer}
.story-type-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:16px 20px 0}
.story-type-tabs button{padding:11px;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}
.story-type-tabs button.active{border-color:rgba(167,139,250,.5);background:rgba(124,58,237,.18);color:#fff}
#story-form{padding:16px 20px 22px}
.story-canvas{position:relative;min-height:350px;display:grid;place-items:center;overflow:hidden;border-radius:22px}
.story-canvas textarea{width:100%;min-height:330px;padding:45px 30px;resize:none;border:0;background:transparent;color:white;font:800 clamp(22px,5vw,32px)/1.4 ui-sans-serif,system-ui,sans-serif;text-align:center}
.story-canvas textarea::placeholder{color:rgba(255,255,255,.55)}
.story-media-picker{min-height:330px;width:100%;display:grid;place-items:center;align-content:center;gap:7px;color:#fff;cursor:pointer}
.story-media-picker>span{width:66px;height:66px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.28);border-radius:22px;background:rgba(9,11,18,.28);font-size:34px}
.story-media-picker small{color:rgba(255,255,255,.65)}
.story-media-preview{position:absolute;inset:0;background:#05070d}
.story-media-preview img,.story-media-preview video{width:100%;height:100%;object-fit:contain}
.story-palette{display:flex;justify-content:center;gap:11px;margin:15px 0 2px}
.story-palette button{width:31px;height:31px;padding:0;border:3px solid #111522;border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.16);cursor:pointer}
.story-palette button.active{box-shadow:0 0 0 2px #fff}
.bg-violet{background:#7c3aed}.bg-aurora{background:#10b981}.bg-ember{background:#e75555}.bg-midnight{background:#1e2b59}.bg-ocean{background:#0284c7}
.story-caption-wrap{display:grid;gap:7px;margin-top:15px;color:var(--muted);font-size:12px}
.story-caption-wrap input{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#0c101b;color:#fff}
.story-expiry-note{margin:13px 0;color:var(--muted);font-size:11px;text-align:center}
.story-publish{width:100%}
.story-viewer{position:fixed;z-index:120;inset:0;display:grid;place-items:center;padding:15px;background:rgba(2,3,7,.95);backdrop-filter:blur(20px)}
.story-viewer-frame{position:relative;width:min(480px,100%);height:min(850px,calc(100dvh - 30px));overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:28px;background:#090b12;box-shadow:0 40px 110px #000}
.story-viewer header{position:absolute;z-index:4;top:19px;left:16px;right:16px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px}
.story-viewer header .avatar{width:42px;height:42px;border-radius:15px;border:1px solid rgba(255,255,255,.4)}
.story-viewer header>div{display:grid;text-shadow:0 2px 10px #000}
.story-viewer header small{color:rgba(255,255,255,.7);font-size:10px}
.story-progress{position:absolute;z-index:5;top:8px;left:12px;right:12px;display:flex;gap:4px}
.story-progress span{height:3px;flex:1;overflow:hidden;border-radius:3px;background:rgba(255,255,255,.25)}
.story-progress i{display:block;width:0;height:100%;background:#fff}
.story-progress .done i{width:100%}.story-progress .active i{width:100%;animation:story-progress 7s linear}
@keyframes story-progress{from{width:0}to{width:100%}}
.story-viewer-stage{position:absolute;inset:0;display:grid;place-items:center}
.story-view-text{max-width:90%;padding:70px 30px 80px;color:#fff;font:800 clamp(27px,6vw,40px)/1.4 ui-sans-serif,system-ui,sans-serif;text-align:center;text-shadow:0 3px 20px rgba(0,0,0,.28)}
.story-view-media{width:100%;height:100%;object-fit:contain;background:#05070d}
.story-view-caption{position:absolute;left:15px;right:15px;bottom:96px;z-index:3;margin:0;padding:12px 15px;border-radius:14px;background:rgba(7,9,16,.62);color:#fff;text-align:center;backdrop-filter:blur(9px)}
.story-step{position:absolute;z-index:3;top:48%;width:43px;height:58px;border:0;border-radius:14px;background:rgba(8,10,18,.35);color:#fff;font-size:36px;cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;transform:scale(.92);transition:opacity .18s ease,transform .18s ease,visibility .18s}
.story-viewer.story-controls-visible .story-step{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)}
.story-prev{left:7px}.story-next{right:7px}
.story-social-actions{position:absolute;z-index:5;left:50%;bottom:max(26px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:11px;opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,10px);transition:opacity .18s ease,transform .18s ease,visibility .18s}
.story-viewer.story-controls-visible .story-social-actions{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
.story-owner-tools{display:flex;align-items:center;gap:11px}
.story-owner-tools[hidden]{display:none!important}
.story-social-button{position:relative;width:52px;height:52px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:18px;background:rgba(9,12,22,.72);color:#fff;box-shadow:0 12px 35px rgba(0,0,0,.25);backdrop-filter:blur(12px);cursor:pointer}
.story-social-button svg{width:24px;height:24px;fill:currentColor}
.story-social-button.is-liked{color:#ff6f9c;background:rgba(102,20,61,.76)}
.story-social-button b{position:absolute;right:-7px;top:-7px;min-width:21px;height:21px;display:grid;place-items:center;padding:0 5px;border:2px solid #090b12;border-radius:12px;background:linear-gradient(135deg,#8b5cf6,#22d3a5);color:#fff;font-size:9px}.story-social-button b[hidden]{display:none!important}
.story-owner-button.story-delete{color:#ff9aab}
.story-viewers-layer{z-index:135}
.story-comments-layer{z-index:140}
.story-viewers-card,.story-comments-card{width:min(470px,100%)}
.story-comments-card{max-height:min(680px,calc(100dvh - 28px));display:grid;grid-template-rows:auto minmax(110px,1fr) auto;overflow:hidden;border:1px solid rgba(167,139,250,.25);border-radius:28px;background:#111522;box-shadow:0 35px 100px rgba(0,0,0,.7)}
.story-comments-card>header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}
.story-comments-card>header h2{margin:2px 0 0;font-size:20px}.story-comments-card>header .eyebrow{margin:0}.story-comments-card>header button{width:42px;height:42px;border:0;border-radius:14px;background:#20273b;color:#fff;font-size:24px}
.story-comments-list{overflow:auto;display:grid;align-content:start;gap:5px;padding:13px 16px}
.story-comment{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:8px 5px;border:0;background:transparent;color:#fff;text-align:left;cursor:pointer}.story-comment .avatar{width:38px;height:38px;border-radius:13px}.story-comment>div,.story-comment>span{min-width:0;padding:9px 11px;border-radius:5px 16px 16px 16px;background:#1a2030}.story-comment.mine>div{background:rgba(124,58,237,.2)}.story-comment strong{display:block;font-size:12px}.story-comment p{margin:4px 0 0;color:#eef1ff;font-size:13px;line-height:1.5;overflow-wrap:anywhere}.story-comment small{display:block;margin-top:5px;color:var(--muted);font-size:9px}.story-like-person>span{background:linear-gradient(135deg,rgba(124,58,237,.2),rgba(34,211,165,.1))}
.story-comment-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));border-top:1px solid var(--line);background:#0e121e}.story-comment-form input{min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#191e2d;color:#fff;outline:none}.story-comment-form button{padding:0 16px}
.story-viewers-list{display:grid;gap:2px;padding:10px 18px 20px}
.story-viewers-list article{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:12px 5px;border-bottom:1px solid var(--line)}
.story-viewers-list article .avatar{width:44px;height:44px;border-radius:15px}
.story-viewers-list article>div{display:grid;gap:3px}
.story-viewers-list small{color:var(--muted);font-size:11px}
body.story-open{overflow:hidden}
@media(max-width:850px){
  .sidebar nav .nav-item{gap:2px;font-size:9px}
  .sidebar nav .nav-item span{font-size:17px}
  .story-section-head h2{font-size:28px}
  .own-story-card{grid-template-columns:auto minmax(0,1fr);padding:15px}
  .story-create-mini{grid-column:1/-1}
  .story-feed{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .story-trail-card{min-height:250px}
  .story-layer,.story-viewer{padding:0}
  .story-composer-card,.story-viewers-card,.story-viewer-frame{width:100%;height:100dvh;max-height:none;border:0;border-radius:0}
  .story-composer-card{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .story-viewer-frame{height:100dvh}
}

/* Format pesan Rabitalk: aman, ekspresif, dan mengikuti palet aplikasi. */
.rt-message-text{white-space:normal;overflow-wrap:anywhere}
.rt-msg-bold{font-weight:850}.rt-msg-italic{font-style:italic}.rt-msg-strike{text-decoration:line-through;opacity:.78}
.rt-msg-code{display:inline-block;padding:1px 6px;border:1px solid rgba(139,92,246,.28);border-radius:6px;background:#0d1120;color:#b9a7ff;font:600 .9em/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}
.rt-msg-quote{display:block;margin:4px 0;padding:5px 9px;border-left:3px solid #22d3a5;border-radius:0 8px 8px 0;background:rgba(34,211,165,.08);color:#dffcf4}
.rt-msg-color-violet{color:#c4a7ff}.rt-msg-color-mint{color:#66e8c3}.rt-msg-color-rose{color:#ff91b2}.rt-msg-color-gold{color:#f4ca72}

/* Cerita privat: balasan ringkas, aktivitas hanya pemilik, tanpa menu unduh video. */
.story-viewer-stage video.story-view-media{pointer-events:none;-webkit-touch-callout:none}
.story-comment-form[hidden],.story-comments-list[hidden]{display:none!important}
#story-comments-modal.is-reply-mode .story-comments-card{width:min(430px,calc(100% - 28px));grid-template-rows:auto auto}
#story-comments-modal.is-reply-mode .story-comment-form{padding:18px;grid-template-columns:minmax(0,1fr) auto;background:linear-gradient(180deg,#111522,#0d111c)}
#story-comments-modal.is-reply-mode .story-comment-form input{min-height:48px;background:#181d2b;border-color:rgba(167,139,250,.25)}
@media(max-width:850px){
  .story-comments-layer{align-items:end;padding:12px}
  .story-comments-card,#story-comments-modal.is-reply-mode .story-comments-card{width:100%;height:auto;max-height:76dvh;border:1px solid rgba(167,139,250,.3);border-radius:25px}
  .story-comments-card>header{padding:15px 17px}.story-comments-list{padding:10px 12px}
  .story-comment-form{padding-bottom:max(14px,env(safe-area-inset-bottom))}
}
@media(max-width:420px){
  .story-feed{grid-template-columns:1fr}
  .story-trail-card{min-height:225px}
  .story-section-head{align-items:end}
  .story-section-head .primary{padding:10px 12px;font-size:11px}
}

/* Satu tombol aksi dinamis di kanan: mikrofon saat kosong, Kirim saat siap. */
.composer{
  grid-template-columns:auto minmax(0,1fr) auto!important;
}
.composer>#voice-btn,
.composer>#send-btn{
  grid-column:3;
  grid-row:1;
}
.composer>#voice-btn[hidden],
.composer>#send-btn[hidden]{
  display:none!important;
}
.composer>#voice-btn{
  min-width:52px;
}

/* Lampiran umum: aman, ringkas, dan selalu diunduh. */
.rt-file-card,.draft-file-card{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center;
  gap:11px;
  min-width:0;
  padding:12px;
  border:1px solid var(--line);
  border-radius:15px;
  background:#171c2b;
  color:var(--ink);
  text-decoration:none;
}
.rt-file-card>span:last-child,.draft-file-card{min-width:0}
.rt-file-card strong,.draft-file-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-file-card small,.draft-file-card small{display:block;margin-top:3px;color:var(--muted)}
.rt-file-icon,.draft-file-card>span{
  width:38px;height:38px;display:grid;place-items:center;border-radius:12px;
  background:rgba(124,58,237,.18);color:#c4b5fd;font-size:20px;font-weight:800;
}
.draft-file-card{grid-template-columns:auto minmax(0,1fr) auto;width:min(100%,520px)}
.draft-file-card small{margin:0}
.upload-file{position:relative}
.upload-file-progress{position:absolute;left:12px;right:12px;bottom:5px;height:2px;background:rgba(255,255,255,.1);overflow:hidden;border-radius:2px}
.upload-file-progress b{display:block;width:0;height:100%;background:var(--purple2);transition:width .15s linear}

/* Pembaca file privat Rabitalk. */
.rt-file-card{grid-template-columns:minmax(0,1fr);padding:0;overflow:hidden}
.rt-file-open{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;min-width:0;padding:12px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
.rt-file-open>span:nth-child(2){min-width:0}
.rt-file-open:hover{background:rgba(124,58,237,.08)}
.rt-file-chevron{color:#a897f7;font-size:25px;font-weight:500}
.file-reader-open{overflow:hidden}
.rt-file-reader{position:fixed;inset:0;z-index:1400;padding:clamp(8px,2vw,22px);background:rgba(4,6,12,.9);backdrop-filter:blur(12px)}
.rt-file-reader-shell{width:min(1120px,100%);height:100%;margin:auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid rgba(167,139,250,.28);border-radius:22px;background:#0d111c;box-shadow:0 28px 90px rgba(0,0,0,.55)}
.rt-file-reader header,.rt-file-reader footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 17px;background:#111625}
.rt-file-reader header{border-bottom:1px solid var(--line)}
.rt-file-reader footer{border-top:1px solid var(--line)}
.rt-file-reader header>div{min-width:0;display:grid;gap:3px}
.rt-file-reader header small{color:#9f8cf8;font-size:9px;font-weight:900;letter-spacing:.14em}
.rt-file-reader header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-file-reader header button{width:40px;height:40px;border:0;border-radius:12px;background:#202638;color:white;font-size:24px;cursor:pointer}
.rt-file-reader main{min-height:0;overflow:auto;background:#e9edf4;color:#172033}
.rt-file-reader footer span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}
.rt-file-reader footer a{flex:0 0 auto;padding:10px 15px;border-radius:11px;background:var(--purple);color:white;text-decoration:none;font-size:12px;font-weight:800}
.rt-reader-status,.rt-reader-notice{height:100%;min-height:240px;display:grid;place-content:center;text-align:center;padding:30px;color:#5e6879}
.rt-reader-status strong{font-size:18px;color:#20293a}
.rt-reader-status span{margin-top:7px;font-size:12px}
.rt-reader-status i{display:block;width:min(300px,70vw);height:5px;margin:18px auto 0;overflow:hidden;border-radius:999px;background:#cfd6e1}
.rt-reader-status i b{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--purple),var(--purple2));transition:width .15s linear}
.rt-reader-notice strong{font-size:18px;color:#20293a}
.rt-reader-notice p{max-width:470px;margin:8px auto 0;line-height:1.6}
.rt-reader-pdf{display:block;width:100%;height:100%;min-height:520px;border:0;background:white}
.rt-reader-document{width:min(820px,calc(100% - 24px));min-height:100%;margin:auto;padding:clamp(22px,5vw,64px);background:white;box-shadow:0 0 28px rgba(25,35,55,.14);font:16px/1.65 Arial,sans-serif;color:#202020;overflow-wrap:anywhere}
.rt-reader-document img{max-width:100%;height:auto}
.rt-reader-document table{width:100%;border-collapse:collapse}
.rt-reader-document td,.rt-reader-document th{padding:7px;border:1px solid #ccd2dc}
.rt-reader-text{min-height:100%;margin:0;padding:22px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#111722;color:#dce6f5;font:13px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace}
.rt-sheet-toolbar{position:sticky;top:0;z-index:2;padding:10px 14px;background:#dbe2ee;border-bottom:1px solid #c3ccd9;color:#263246}
.rt-sheet-toolbar label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800}
.rt-sheet-toolbar select{max-width:260px;padding:8px 10px;border:1px solid #b5c0d0;border-radius:8px;background:white;color:#172033}
.rt-sheet-toolbar.is-limited:after{content:"Pratinjau dibatasi 200 baris × 30 kolom";display:block;margin-top:6px;color:#6d7787;font-size:10px}
.rt-sheet-viewport{overflow:auto;padding:14px}
.rt-sheet-viewport table{border-collapse:collapse;background:white;box-shadow:0 8px 26px rgba(30,45,70,.12);font:12px/1.4 Arial,sans-serif}
.rt-sheet-viewport th,.rt-sheet-viewport td{min-width:90px;max-width:260px;padding:7px 9px;border:1px solid #d7dce4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-sheet-viewport th{position:sticky;top:0;background:#eef1f6;font-weight:800}
@media(max-width:640px){
  .rt-file-reader{padding:0}
  .rt-file-reader-shell{border:0;border-radius:0}
  .rt-file-reader header,.rt-file-reader footer{padding-left:12px;padding-right:12px}
  .rt-reader-pdf{min-height:100%}
  .rt-reader-document{width:100%;padding:22px 17px;box-shadow:none}
}

/* Tombol teks bersih: tanpa simbol dekoratif */
.nav-item{justify-content:flex-start;gap:0;font-weight:800}
.hangup,.accept{width:auto;min-width:88px;height:48px;padding:0 18px;border-radius:16px;font-size:12px;font-weight:900}
.control{padding:7px;text-align:center}
.control small{font-size:10px;line-height:1.2;font-weight:800}
.voice-recorder{grid-template-columns:68px minmax(0,1fr) 78px}
.voice-recorder-action{width:100%;height:42px;padding:0 8px;font-size:10px;line-height:1.1}
.draft-preview button,#clear-reply{width:auto!important;height:auto!important;padding:7px 9px!important;border-radius:10px!important;font-size:10px!important;font-weight:800!important}
.action-modal .forward-close{width:auto;min-width:62px;padding:0 12px;font-size:10px}
.profile-viewer>button{width:auto;height:auto;padding:9px 13px;border-radius:12px;background:#202638;font-size:11px;font-weight:800}
.story-composer-card header button,.story-viewers-card header button,.story-comments-card>header button,.story-viewer header>button{width:auto;min-width:62px;height:38px;padding:0 11px;font-size:10px;font-weight:800}
.story-step{width:82px;height:42px;padding:0 8px;font-size:9px;font-weight:900}
.rt-file-reader header button{width:auto;min-width:62px;height:38px;padding:0 11px;font-size:10px;font-weight:800}
@media(max-width:850px){.nav-item{justify-content:center}.voice-recorder{grid-template-columns:62px minmax(0,1fr) 72px}}

/* Story controls V2: force all owner actions into the bottom action rail. */
.story-viewer #story-owner-tools{position:static!important;inset:auto!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important;display:flex;align-items:center;justify-content:center;gap:11px;opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important;background:transparent!important;border:0!important}
.story-viewer #story-owner-tools[hidden]{display:none!important}
.story-viewer #story-owner-tools .story-social-button{position:relative!important}
.story-viewer .story-social-actions{width:max-content;max-width:calc(100% - 24px);flex-wrap:nowrap}
@media(max-width:380px){.story-social-actions,.story-owner-tools{gap:7px}.story-social-button{width:48px;height:48px;border-radius:16px}}


/* Tautan yang dikenali otomatis di dalam pesan chat. */
.rt-message-link{
  color:#8ff3dd;
  font-weight:800;
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
  overflow-wrap:anywhere;
  word-break:break-word;
  cursor:pointer;
  -webkit-user-select:text;
  user-select:text;
  -webkit-touch-callout:default;
  touch-action:manipulation;
}
.bubble.mine .rt-message-link{color:#fff;text-decoration-color:rgba(255,255,255,.75)}
.rt-message-link:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:4px}

/* Open Graph preview untuk tautan di pesan chat. */
.rt-link-preview{width:min(360px,72vw);max-width:100%;margin-top:10px}
.rt-link-preview.is-loading{height:92px;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:15px;background:rgba(7,10,18,.28)}
.rt-link-preview.is-loading::after{content:"";display:block;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:rt-link-preview-loading 1.1s ease-in-out infinite}
@keyframes rt-link-preview-loading{from{transform:translateX(-120%)}to{transform:translateX(260%)}}
.rt-link-preview-card{display:block;overflow:hidden;border:1px solid rgba(255,255,255,.13);border-radius:15px;background:rgba(7,10,18,.48);color:#fff;text-decoration:none;box-shadow:0 10px 26px rgba(0,0,0,.16);transition:transform .16s ease,border-color .16s ease;background-clip:padding-box;-webkit-touch-callout:default;touch-action:manipulation}
.rt-link-preview-card:active{transform:scale(.988)}
.rt-link-preview-card:focus-visible{outline:2px solid #8ff3dd;outline-offset:3px}
.rt-link-preview-image{display:block;width:100%;aspect-ratio:1.91/1;overflow:hidden;background:#0a0d16}
.bubble .rt-link-preview-image img{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;border-radius:0}
.rt-link-preview-copy{display:grid;gap:4px;padding:11px 12px 12px;min-width:0}
.rt-link-preview-copy small{display:block;margin:0!important;color:#8ff3dd;font-size:9px!important;font-weight:900;letter-spacing:.05em;text-transform:uppercase;opacity:1!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-link-preview-copy strong{display:-webkit-box;overflow:hidden;color:#fff;font-size:13px;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.rt-link-preview-description{display:-webkit-box;overflow:hidden;color:rgba(255,255,255,.72);font-size:11px;line-height:1.42;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.rt-link-preview-copy em{overflow:hidden;color:rgba(255,255,255,.46);font-size:9px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}
.rt-link-preview-card.no-image .rt-link-preview-copy{padding-block:13px}
.bubble.mine .rt-link-preview-card{background:rgba(27,10,59,.3);border-color:rgba(255,255,255,.18)}
.bubble.mine .rt-link-preview-copy small{color:#d9fff6}
@media(max-width:430px){.rt-link-preview{width:min(330px,70vw)}.rt-link-preview-description{-webkit-line-clamp:2}}

/* Background notification setup */
.notification-settings{margin-top:18px;padding:18px;border:1px solid rgba(38,214,170,.28);border-radius:20px;background:linear-gradient(145deg,rgba(38,214,170,.09),rgba(124,58,237,.11));display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}
.notification-settings[hidden]{display:none!important}
.notification-settings-copy .eyebrow{margin:0 0 4px;color:#65e7c4}
.notification-settings-copy h3{margin:0 0 5px;font-size:18px}
.notification-settings-copy p:last-child{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.notification-settings-actions{display:grid;gap:8px;min-width:160px}
.notification-settings-actions button{justify-content:center;min-height:42px}
.notification-settings-actions button:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:620px){.notification-settings{grid-template-columns:1fr}.notification-settings-actions{grid-template-columns:1fr 1fr;min-width:0}.notification-settings-actions button:only-child{grid-column:1/-1}}

/* Kesiapan PWA setelah perangkat menyala. */
.background-readiness{margin-top:18px;padding:18px;border:1px solid rgba(167,139,250,.28);border-radius:20px;background:linear-gradient(145deg,rgba(124,58,237,.12),rgba(38,214,170,.07));box-shadow:0 16px 46px rgba(0,0,0,.14)}
.background-readiness[hidden]{display:none!important}
.background-readiness-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px}
.background-readiness-head .eyebrow{margin:0 0 4px;color:#bdaeff}
.background-readiness-head h3{margin:0 0 5px;font-size:18px}
.background-readiness-head p:last-child{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.background-readiness-badge{display:inline-flex;align-items:center;justify-content:center;min-width:76px;min-height:30px;padding:5px 10px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#252b3e;color:#cbd3e3;font-size:10px;font-weight:900;white-space:nowrap}
.background-readiness-badge.is-ready{border-color:rgba(38,214,170,.4);background:rgba(38,214,170,.13);color:#65e7c4}
.background-readiness-badge.is-warn{border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.1);color:#ffd978}
.background-readiness-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}
.background-check{display:grid;grid-template-columns:12px minmax(0,1fr);gap:9px;align-items:start;padding:11px 12px;border:1px solid rgba(255,255,255,.07);border-radius:14px;background:rgba(8,11,19,.38)}
.background-check>span{width:10px;height:10px;margin-top:3px;border-radius:50%;background:#697386;box-shadow:0 0 0 4px rgba(105,115,134,.1)}
.background-check.ready>span{background:#26d6aa;box-shadow:0 0 0 4px rgba(38,214,170,.11)}
.background-check.warn>span{background:#f4c95d;box-shadow:0 0 0 4px rgba(244,201,93,.1)}
.background-check.off>span{background:#ff6b83;box-shadow:0 0 0 4px rgba(255,107,131,.1)}
.background-check strong{display:block;color:#f5f7ff;font-size:11px}
.background-check small{display:block;margin-top:3px;color:var(--muted);font-size:9px;line-height:1.45}
.background-readiness-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;margin-top:14px}
.background-readiness-actions button{min-height:43px;justify-content:center}
.background-device-guide{margin-top:14px;padding:13px 15px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(8,11,19,.5)}
.background-device-guide[hidden],.background-device-guide ol[hidden]{display:none!important}
.background-device-guide ol{margin:0;padding-left:19px;color:#dfe5f2;font-size:11px;line-height:1.65}
.background-device-guide li+li{margin-top:6px}
.background-device-note{margin:12px 0 0;padding-top:11px;border-top:1px solid rgba(255,255,255,.08);color:#aeb7c9;font-size:10px;line-height:1.55}
@media(max-width:620px){
  .background-readiness-head{grid-template-columns:1fr}
  .background-readiness-badge{justify-self:start}
  .background-readiness-checks{grid-template-columns:1fr}
  .background-readiness-actions{grid-template-columns:1fr}
}

.notification-sound-settings{margin-top:18px;padding:18px;border:1px solid rgba(96,165,250,.28);border-radius:20px;background:linear-gradient(145deg,rgba(37,99,235,.11),rgba(124,58,237,.09));box-shadow:0 16px 46px rgba(0,0,0,.12)}
.notification-sound-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px}.notification-sound-head .eyebrow{margin:0 0 4px;color:#8bc4ff}.notification-sound-head h3{margin:0 0 5px;font-size:18px}.notification-sound-head p:last-child{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.notification-sound-badge{display:inline-flex;align-items:center;justify-content:center;min-width:76px;min-height:30px;padding:5px 10px;border:1px solid rgba(96,165,250,.35);border-radius:999px;background:rgba(59,130,246,.12);color:#9acbff;font-size:10px;font-weight:900}.notification-sound-badge.is-silent{border-color:rgba(148,163,184,.28);background:rgba(148,163,184,.08);color:#c0c8d6}
.notification-sound-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:15px}.notification-sound-form label{display:grid;gap:7px;color:var(--muted);font-size:11px;font-weight:700}.notification-sound-form select{width:100%;min-height:43px;padding:10px 12px;border:1px solid var(--line);border-radius:13px;background:#0d111d;color:#fff;outline:none}.notification-sound-form select:focus{border-color:#60a5fa}.notification-sound-form button{grid-column:1/-1;justify-content:center;min-height:43px}
.notification-sound-status{margin:11px 0 0;color:var(--muted);font-size:11px;line-height:1.55}.notification-sound-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}.notification-sound-actions button{min-height:41px;justify-content:center;padding:9px 10px;font-size:10px}
.notification-system-guide{margin-top:13px;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(7,10,18,.42)}.notification-system-guide[hidden]{display:none!important}.notification-system-guide ol{margin:0;padding-left:19px;color:#dbe4f5;font-size:11px;line-height:1.65}.notification-system-guide li+li{margin-top:5px}.notification-system-guide ol[hidden]{display:none!important}.notification-system-guide p{margin:11px 0 0;padding-top:10px;border-top:1px solid rgba(255,255,255,.07);color:var(--muted);font-size:10px;line-height:1.55}
@media(max-width:620px){.notification-sound-head{grid-template-columns:1fr}.notification-sound-badge{justify-self:start}.notification-sound-form{grid-template-columns:1fr}.notification-sound-actions{grid-template-columns:1fr}.notification-sound-form button{grid-column:auto}}

/* Optimasi render daftar panjang: browser melewati kartu yang jauh dari layar. */
.conversation-row,.contact-card,.result-card,.story-trail-card,.bubble{content-visibility:auto;contain-intrinsic-size:auto 76px}
@media(max-width:700px){
  .sidebar,.incoming,.story-layer,.story-viewer,.action-modal,.profile-viewer{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .contact-card,.conversation-row,.identity-card{box-shadow:none}
}
