:root{font-family:Inter,ui-sans-serif,system-ui;color:#f8f7fb;background:#100e17;--app-height:100dvh}*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow:hidden}body{height:100vh;height:100dvh;background:radial-gradient(circle at top,#312044,#100e17 55%);display:grid;place-items:center}main{width:min(760px,100%);height:min(860px,var(--app-height));display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:14px;padding:22px;padding-bottom:max(22px,env(safe-area-inset-bottom))}header{display:flex;align-items:center;gap:12px}.identity{flex:1}.avatar{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ff7bbd,#7157ff);font-weight:800;font-size:24px}h1,h2,h3,p{margin:0}.online{display:inline-block;width:9px;height:9px;background:#4de39a;border-radius:50%}#messages{min-height:0;overflow:auto;padding:10px 0;display:flex;flex-direction:column;gap:10px}.bubble{max-width:78%;padding:12px 15px;border-radius:18px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.bubble a{display:inline-block;color:#f1eaff;text-decoration:none;font-weight:750;background:#6d4aff;border:1px solid #a794ff;border-radius:999px;padding:6px 11px;margin:4px 2px}.assistant{background:#272231;border-bottom-left-radius:5px}.user{background:#6d4aff;align-self:flex-end;border-bottom-right-radius:5px}.pending{opacity:.62}.chat-media{display:block;width:100%;max-width:360px;max-height:420px;margin-top:10px;border-radius:12px;object-fit:contain}audio.chat-media{height:44px}form{display:flex;gap:10px}textarea,input{flex:1;min-width:0;border:1px solid #4a4058;border-radius:16px;background:#211c29;color:white;padding:14px;font:inherit}textarea{resize:none;min-height:52px;max-height:130px}button{border:0;border-radius:14px;padding:12px 18px;background:#865fff;color:white;font:inherit;font-weight:650;cursor:pointer}button:disabled{opacity:.55;cursor:wait}.calls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.calls button{background:#272231;border:1px solid #4a4058}.notice{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:9px 10px 9px 14px;border:1px solid #5b4c72;border-radius:16px;background:linear-gradient(110deg,#2b2337,#201a2a);color:#e7dff2;box-shadow:0 8px 26px #08050c66;font-size:13px}.notice button{padding:7px 11px;border-radius:11px;font-size:12px;white-space:nowrap}.notice.error{border-color:#a04d6f;background:linear-gradient(110deg,#442231,#251923)}small{color:#bdb5c9}.profile-button,.icon-button{width:44px;height:44px;padding:0;border-radius:50%;background:#272231;border:1px solid #534761}.icon-button{font-size:26px}.hidden{display:none!important}dialog{width:min(680px,calc(100% - 24px));max-height:min(800px,calc(var(--app-height) - 24px));overflow:auto;color:#f8f7fb;background:#17131f;border:1px solid #4a4058;border-radius:24px;padding:20px;box-shadow:0 25px 90px #000a}dialog::backdrop{background:#08060dbd;backdrop-filter:blur(5px)}.profile-head,.section-title,.payment-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:#bdb5c9}.profile-status{margin:16px 0;padding:12px 14px;border-radius:14px;background:#271f33;color:#d8cdeb}.profile-card{margin-top:12px;padding:16px;border:1px solid #3b3247;border-radius:18px;background:#211c29}.profile-card h3{margin-bottom:10px}.profile-card>p{color:#bdb5c9;margin-bottom:12px}.inline-form{margin-top:12px}.inline-form button{white-space:nowrap}.credit-view strong{font-size:34px}.credit-view small{display:block;margin-top:4px}.payment-row{padding:9px 0;border-bottom:1px solid #3a3244}.payment-row:last-child{border-bottom:0}.payment-row time,.section-title span,.empty{color:#a99fb6;font-size:13px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.gallery-item{display:block;aspect-ratio:1;border-radius:13px;overflow:hidden;background:#15111b}.gallery-item img,.gallery-item video{width:100%;height:100%;object-fit:cover}.gallery .empty{grid-column:1/-1}@media(max-width:560px){body{display:block}main{height:var(--app-height);padding:12px;padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(10px,env(safe-area-inset-bottom));gap:9px}.avatar{width:44px;height:44px}.bubble{max-width:90%}form button{padding:10px 14px}.inline-form{flex-direction:column}.gallery{grid-template-columns:repeat(2,1fr)}dialog{padding:16px}}

.call-panel{position:fixed;z-index:20;inset:0;display:grid;grid-template-rows:minmax(0,1fr) auto auto auto;gap:12px;background:#0e0b14;color:#fff;padding:18px;padding-top:max(18px,env(safe-area-inset-top));padding-bottom:max(18px,env(safe-area-inset-bottom))}.call-visual{position:relative;overflow:hidden;border-radius:28px;background:radial-gradient(circle at 50% 35%,#73529b,#21172e 55%,#100c16);display:grid;place-items:center;justify-self:center;width:min(100%,calc((var(--app-height) - 160px)*.5625));height:100%;aspect-ratio:9/16;min-height:0}.call-avatar{position:relative;z-index:2;width:118px;height:118px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ff7bbd,#7157ff);font-size:50px;font-weight:800;box-shadow:0 0 0 12px #ffffff0d,0 20px 80px #0009}.call-slides{position:absolute;inset:0;background:#09070d}.call-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;opacity:0;transition:opacity 1.2s ease;background:#09070d}.call-slide.active{opacity:1}.call-shade{position:absolute;z-index:1;inset:0;background:linear-gradient(transparent 25%,#0c0912d9 100%)}.call-copy{position:absolute;z-index:3;left:22px;right:22px;bottom:24px;text-align:center;text-shadow:0 2px 15px #000}.call-copy h2{font-size:32px}.call-copy>#call-status{margin-top:5px;color:#eee5f8}.call-transcript{min-height:24px;margin-top:10px;color:#cfc4da;font-size:14px}.call-history{max-height:min(190px,24vh);overflow:auto;border:1px solid #3e344b;border-radius:16px;background:#181320;padding:8px}.call-history-item{padding:8px;border-bottom:1px solid #342b40}.call-history-item:last-child{border-bottom:0}.call-history-item p{font-size:13px;color:#d7cde2;margin-bottom:6px}.call-history-item audio{display:block;width:100%;height:38px}.call-controls{display:flex;justify-content:center;gap:24px}.call-controls button{width:62px;height:62px;padding:0;border-radius:50%;font-size:25px}.call-controls .call-end{background:#e3465b;transform:rotate(135deg)}.call-privacy{text-align:center;color:#958ba2;font-size:12px}
.topup-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:14px}.topup-tier{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px;border:1px solid #66557c;border-radius:14px;background:linear-gradient(145deg,#332642,#251d31);color:#fff;text-align:center;text-decoration:none;overflow:hidden}.topup-tier img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px}.topup-tier strong{font-size:15px;line-height:1.2}.topup-tier .gift-price{font-size:18px;font-weight:750;color:#fff}.topup-tier small{font-size:11px;line-height:1.35;color:#d6c9e3}.topup-tier .gift-action{margin-top:auto;padding:6px 10px;border-radius:999px;background:#e83b91;color:#fff;font-size:12px;font-weight:700}.topup-tier:hover,.topup-tier:focus-visible{border-color:#a98cff;background:linear-gradient(145deg,#49325f,#2d2140)}.topup-note{margin-top:10px!important;margin-bottom:0!important;font-size:12px}.topup-grid>.empty{grid-column:1/-1}@media(max-width:420px){.topup-grid{grid-template-columns:1fr}.topup-tier{display:grid;grid-template-columns:88px 1fr;column-gap:11px;text-align:left;align-items:center}.topup-tier img{grid-row:1/5;aspect-ratio:1}.topup-tier .gift-action{justify-self:start;margin-top:0}}
.call-history-item strong{display:block;font-size:11px;color:#ba9ce4;margin-bottom:4px}
.call-history-item.user{margin-left:12%;background:#30253f;border-radius:12px;padding:8px}
.visuals{position:relative;justify-self:center;width:min(100%,190px);height:min(28vh,330px);min-height:100px;border:1px solid #4a4058;border-radius:20px;overflow:hidden;background:#16111c}.visuals-slides{position:absolute;inset:0;display:grid;place-items:center;color:#bdb5c9;font-size:12px}.visuals-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity 1s ease}.visuals-slide.active{opacity:1}.visuals-label{position:absolute;left:8px;bottom:8px;padding:4px 7px;border-radius:8px;background:#120d18bc;color:#fff;font-size:11px}.voice-progress{padding:0 5px;color:#cbb9e7;font-size:13px}.message-phase{display:block;margin-top:6px;color:#ddd0f1}.calls button.recording{background:linear-gradient(135deg,#e25789,#8b5cf6);border-color:#ffadc9;color:#fff;box-shadow:0 8px 22px #a23b7355}main{display:flex;flex-direction:column}#messages{flex:1}.visuals:not(.hidden)+#messages{min-height:100px}
.visuals-like{position:absolute;right:8px;bottom:8px;padding:5px 7px;border:1px solid #ffffff73;border-radius:8px;background:#120d18d9;color:#fff;font-size:10px}
.visuals-slide{cursor:zoom-in}.visuals-slide:focus-visible{outline:3px solid #d8baff;outline-offset:-4px}.visuals-viewer{position:fixed;z-index:80;inset:0;display:flex;align-items:center;justify-content:center;background:#09070ded;padding:max(64px,env(safe-area-inset-top)) 10px max(80px,env(safe-area-inset-bottom));touch-action:pan-y}.visuals-viewer img{display:block;width:100%;height:100%;object-fit:contain}.visuals-viewer-close{position:absolute;z-index:2;top:max(12px,env(safe-area-inset-top));right:14px;border:1px solid #ffffff66;background:#241c32e8;border-radius:999px;min-width:86px;min-height:44px}.visuals-viewer-controls{position:absolute;z-index:2;bottom:max(12px,env(safe-area-inset-bottom));left:0;right:0;display:flex;align-items:center;justify-content:center;gap:22px}.visuals-viewer-controls button{min-width:52px;min-height:52px;padding:0;border:1px solid #ffffff66;background:#241c32e8;border-radius:50%;font-size:30px}.visuals-viewer-controls span{min-width:60px;text-align:center;color:#fff;font-size:14px}@media(max-width:560px){.visuals-viewer{padding-left:0;padding-right:0}.visuals-viewer img{max-width:100vw}.visuals-viewer-close{right:12px}}
/* Mobile verification keeps the code field and actions visible above the keyboard. */
.inline-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}
.inline-form .field-label{grid-column:1/-1;font-size:13px;font-weight:650;color:#d8cdeb}
.inline-form input{width:100%;min-height:48px;font-size:16px}
.inline-form button{min-height:48px}
.otp-actions{grid-column:1/-1;display:flex;gap:8px;align-items:center}
.otp-actions button{flex:1;background:#342a43;border:1px solid #66557c;font-size:14px}
.otp-actions button:disabled{opacity:.65}
@media(max-width:560px){
 dialog[open]{position:fixed;top:calc(env(safe-area-inset-top) + 10px);bottom:auto;left:0;right:0;margin:0 auto;width:calc(100% - 20px);max-height:calc(var(--app-height) - env(safe-area-inset-top) - 20px);overflow-y:auto;overscroll-behavior:contain;scroll-padding-bottom:24px}
 .inline-form{grid-template-columns:1fr}
 .inline-form .field-label,.otp-actions{grid-column:1}
 .inline-form button{width:100%}
 .otp-actions button{min-width:0;padding:10px 8px}
}
/* Quiet motion communicates recording and background replies. */
.bubble{animation:message-enter .24s ease-out both}
.reply-activity{display:flex;align-items:center;gap:10px;align-self:flex-start;min-height:34px;padding:7px 13px;border:1px solid #4a4058;border-radius:14px;background:#272231;color:#daccef;font-size:13px}
.typing-dots{display:inline-flex;align-items:center;gap:4px;height:15px}
.typing-dots i{display:block;width:5px;height:5px;border-radius:50%;background:#b695ff;animation:typing-bounce 1.15s infinite ease-in-out}
.typing-dots i:nth-child(2){animation-delay:.16s}.typing-dots i:nth-child(3){animation-delay:.32s}
.voice-progress.recording{display:flex;align-items:center;gap:9px;color:#ffd2df;font-weight:650}
.voice-progress.recording::before{content:"";display:inline-block;flex:none;width:10px;height:10px;border-radius:50%;background:#ff5e8d;box-shadow:0 0 0 0 #ff5e8d88;animation:record-beacon 1.2s infinite}
.calls button.recording::before{content:"";display:inline-block;vertical-align:middle;width:15px;height:15px;margin-right:10px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px #ffffff44;animation:record-breathe 1.8s ease-in-out infinite}
@keyframes typing-bounce{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-4px);opacity:1}}
@keyframes record-beacon{0%{box-shadow:0 0 0 0 #ff5e8d88}70%,100%{box-shadow:0 0 0 11px #ff5e8d00}}
@keyframes record-breathe{0%,100%{transform:scale(.75);opacity:.7}50%{transform:scale(1);opacity:1}}
@keyframes message-enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.bubble,.typing-dots i,.voice-progress.recording::before,.calls button.recording::before{animation:none}}

/* Entry confirmation blocks content before JavaScript or network requests run. */
.entry-locked>main,.entry-locked>#call-panel,.entry-locked>#profile{display:none!important}
.entry-gate{position:fixed;inset:0;z-index:100;background:#100e17;overflow:auto;display:grid;place-items:center;padding:max(20px,env(safe-area-inset-top)) 18px max(20px,env(safe-area-inset-bottom))}
.entry-card{width:min(100%,440px);display:flex;flex-direction:column;gap:18px;padding:26px;border:1px solid #514061;border-radius:26px;background:linear-gradient(145deg,#30203e,#1b1725);line-height:1.5;box-shadow:0 18px 70px #0006}
.entry-card h1{font-size:clamp(24px,6vw,32px)}.entry-card p{color:#d7cce3}.entry-card button{width:100%;min-height:48px;white-space:normal}.entry-leave{background:transparent;border:1px solid #685674;color:#e4d8ed}.entry-card #entry-status{font-size:13px;min-height:20px}
@media(max-width:360px){.entry-card{padding:18px;gap:14px}}

.bubble.failed{outline:1px solid #e9a7b8}.bubble.failed .message-phase{color:#ffe0e8;font-weight:500}.message-phase{display:block;margin-top:.55rem;font-size:.8rem;line-height:1.4}

.audio-part-label{display:block;margin-top:.8rem;color:#cdbbe4;font-size:.8rem;line-height:1.4}

.voice-disclosure{color:var(--muted,#b9accd);font-size:.72rem;text-align:center;margin:.25rem 0 .4rem;line-height:1.4}
.role-picker{display:flex;align-items:center;gap:8px;padding:8px 12px;color:var(--muted,#b9accd);font-size:.8rem}.role-picker label{white-space:nowrap}.role-picker select{min-width:0;flex:1;padding:7px 9px;border:1px solid #695777;border-radius:9px;background:#30283c;color:#f5effa}.role-picker button{min-height:34px;padding:6px 12px}.role-picker button:focus-visible,.role-picker select:focus-visible{outline:2px solid #e4b5fa;outline-offset:2px}
.logout-actions{display:flex;align-items:center;gap:14px;justify-content:space-between;padding:16px 4px 4px}.logout-actions button{background:#30283c;border:1px solid #695777;white-space:nowrap}.logout-actions p{font-size:13px;color:#bdb5c9;line-height:1.4}.signed-out{position:fixed;inset:0;z-index:100;background:#15111b;display:grid;place-items:center;padding:24px}.signed-out-card{width:min(100%,440px);padding:32px 24px;border:1px solid #4a4058;border-radius:24px;background:#211b2b;text-align:center;box-shadow:0 30px 80px #0009}.signed-out-card .avatar{margin:0 auto 18px}.signed-out-card h2{font-size:28px;margin-bottom:10px}.signed-out-card p{color:#c9bdd4;line-height:1.55;margin-bottom:24px}.signed-out-card button{width:100%}@media(max-width:560px){.logout-actions{align-items:stretch;flex-direction:column-reverse}.signed-out-card{padding:25px 20px}}

.admin-link{display:block;margin-top:16px;padding:13px 15px;border:1px solid #655180;border-radius:14px;background:#30223f;color:#eee2ff;text-decoration:none;font-weight:700}

.welcome-offer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid #ce86e3;border-radius:18px;background:linear-gradient(115deg,#4e215b,#2c2148 60%,#1f1c35);box-shadow:0 10px 28px #09050d55}
.welcome-offer div{min-width:0}.welcome-kicker{display:block;margin-bottom:4px;color:#ffd4ee;font-size:11px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.welcome-offer strong{display:block;font-size:18px;line-height:1.2}.welcome-offer p{margin-top:6px;color:#e3d7ed;font-size:13px;line-height:1.35}.welcome-offer button{flex:none;background:#f6d7ff;color:#30163c;font-size:13px;min-height:44px}.welcome-offer button:hover,.welcome-offer button:focus-visible{background:#fff}
@media(max-width:560px){.welcome-offer{gap:10px;padding:12px;flex-direction:column;align-items:stretch}.welcome-offer strong{font-size:16px}.welcome-offer p{font-size:12px}.welcome-offer button{width:100%;padding:9px 12px}}

.chat-pay-button{display:inline-block;margin:8px 0 2px;padding:9px 16px;border-radius:999px;background:#e83b91;color:#fff!important;font-weight:700;text-decoration:none}.chat-pay-button:hover,.chat-pay-button:focus-visible{background:#c32c75}

.calls,.voice-disclosure,#call-panel,#visuals-button{display:none!important}
