:root{--pink:#ff7eb6;--pink-2:#ffb3d1;--glass:#1e143273;--text:#fff6fb;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--text);background:#2b2350;margin:0;overflow:hidden}#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#bg{opacity:0;will-change:transform;background:#2b2350 50%/cover no-repeat;transition:opacity .8s,transform .6s ease-out;position:fixed;inset:-12px}#bg.on{opacity:1}#bg:after{content:"";background:linear-gradient(#0a061900 45%,#0a06198c 100%),radial-gradient(#0000 55%,#0a061959 100%);position:absolute;inset:0}.hidden{opacity:0;pointer-events:none;transform:translateY(8px)}#bubble{color:#3a2440;background:#ffffffeb;border-radius:22px;max-width:min(640px,100vw - 32px);padding:14px 20px;font-size:18px;line-height:1.45;transition:opacity .3s,transform .3s;position:fixed;bottom:110px;left:50%;translate:-50%;box-shadow:0 10px 40px #50145059}#bubbleName{background:var(--pink);color:#fff;letter-spacing:.5px;border-radius:10px;padding:3px 10px;font-size:12px;font-weight:700;position:absolute;top:-12px;left:18px}#bubble.thinking #bubbleText:after{content:"";text-align:left;width:1.2em;animation:1.2s steps(4,end) infinite dots;display:inline-block}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}#heard{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px 16px 4px;max-width:60vw;padding:8px 14px;font-size:14px;transition:opacity .3s,transform .3s;position:fixed;bottom:96px;right:16px}#log{left:16px;top:calc(16px + var(--tg-safe-area-inset-top,0px) + var(--tg-content-safe-area-inset-top,0px));scrollbar-width:none;flex-direction:column;gap:6px;width:300px;max-height:45vh;font-size:13px;display:flex;position:fixed;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 25%);mask-image:linear-gradient(#0000,#000 25%)}#log .m{background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:12px;max-width:100%;padding:6px 10px}#log .m.user{background:#ff7eb659;align-self:flex-end}@media (width<=700px){#log{display:none}#bubble{font-size:16px}}#bar{left:50%;bottom:calc(max(20px, env(safe-area-inset-bottom)) + var(--tg-safe-area-inset-bottom,0px));background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid #ffffff26;border-radius:999px;gap:8px;width:min(640px,100vw - 32px);padding:8px;display:flex;position:fixed;translate:-50%}#bar input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1;padding:0 8px;font-size:16px}#bar input::placeholder{color:#fff0fa99}#bar button{cursor:pointer;color:#fff;background:#ffffff26;border:0;border-radius:50%;flex:none;place-items:center;width:46px;height:46px;transition:background .2s,transform .1s;display:grid;position:relative}#bar button:active{transform:scale(.94)}#bar button svg{fill:currentColor;width:22px;height:22px}#send{background:var(--pink)!important}#mic.muted{opacity:.7;background:#555!important}#mic.rec{transform:scale(1.08);background:#ff4d7d!important}#mic.rec #micRing{opacity:1;animation:1s ease-out infinite ring}@keyframes ring{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.6)}}#mic{touch-action:none;-webkit-user-select:none;user-select:none}#mic.muted svg{opacity:.5}#mic.live{background:#ff7eb673}#micRing{opacity:0;pointer-events:none;border:2px solid #ff4d7d;border-radius:50%;position:absolute;inset:-4px}#mic.live #micRing{opacity:1;transition:transform 80ms}#bar.busy #send{opacity:.5}#gear{right:16px;top:calc(16px + var(--tg-safe-area-inset-top,0px) + var(--tg-content-safe-area-inset-top,0px));background:var(--glass);color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:0;border-radius:50%;width:42px;height:42px;font-size:20px;position:fixed}#settings{right:16px;top:calc(66px + var(--tg-safe-area-inset-top,0px) + var(--tg-content-safe-area-inset-top,0px));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#1e1432d9;border-radius:18px;flex-direction:column;gap:12px;width:290px;max-height:calc(100vh - 90px);padding:16px;font-size:14px;transition:opacity .25s,transform .25s;display:flex;position:fixed;overflow-y:auto}#settings h3{margin:0}#settings label{flex-direction:column;gap:6px;display:flex}#settings label.row{flex-direction:row;align-items:center}#settings select,#settings input[type=file]{font:inherit;color:#fff;background:#ffffff1a;border:0;border-radius:8px;padding:6px}#settings select option{color:#000}#settings .hint{opacity:.7;margin:0;font-size:12px}#settings button{color:#fff;cursor:pointer;background:#ffffff26;border:0;border-radius:10px;padding:8px}#memoryView{opacity:.8;white-space:pre-line;font-size:12px}#status{letter-spacing:.5px;background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;border-radius:999px;padding:3px 12px;font-size:12px;transition:opacity .3s;position:fixed;bottom:84px;left:50%;translate:-50%}#status:empty{opacity:0}#bubble{bottom:120px}#settings input[type=range]{accent-color:var(--pink)}#settings details{font-size:13px}#settings summary{cursor:pointer;opacity:.85}#memoryView{margin-top:6px}#gate{z-index:10;background:radial-gradient(circle at 50% 40%,#7a5a9e99,#140e28f2);place-items:center;padding:16px;transition:opacity .6s;display:grid;position:fixed;inset:0;overflow-y:auto}#gate.gone{opacity:0;pointer-events:none}#gate .card{text-align:center;width:min(340px,100%);display:none}#gate .card.wide{width:min(900px,100%)}#gate[data-screen=loading] [data-screen=loading],#gate[data-screen=login] [data-screen=login],#gate[data-screen=paywall] [data-screen=paywall],#gate[data-screen=characters] [data-screen=characters],#gate[data-screen=start] [data-screen=start]{display:block}#gate .logo{font-size:64px;animation:3s ease-in-out infinite float}@keyframes float{50%{transform:translateY(-10px)rotate(6deg)}}#gate h1{letter-spacing:1px;margin:6px 0 10px;font-size:32px}#gate p{opacity:.85;line-height:1.5}#gate .hint{opacity:.65;font-size:13px}#gate .err{color:#ff9db8;font-size:14px}.progress{background:#ffffff26;border-radius:3px;height:6px;margin:12px 0 20px;overflow:hidden}#progressBar{background:var(--pink);width:0;height:100%;transition:width .2s}.btn{cursor:pointer;background:linear-gradient(135deg, var(--pink), #b57bff);color:#fff;border:0;border-radius:999px;margin:6px 0;padding:14px 32px;font-family:inherit;font-size:17px;font-weight:600;text-decoration:none;display:inline-block;box-shadow:0 8px 30px #ff7eb666}.btn:disabled{opacity:.4;cursor:default}.btn.ghost{box-shadow:none;background:#ffffff1f;padding:10px 20px;font-size:14px}#charList{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:18px;display:grid}.char{text-align:left;cursor:pointer;color:inherit;background:#ffffff12;border:2px solid #ffffff1f;border-radius:24px;flex-direction:column;padding:0;font-family:inherit;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.char:hover{border-color:var(--pink);transform:translateY(-4px);box-shadow:0 14px 40px #ff7eb640}.char.sel{border-color:var(--pink)}.char .pic{aspect-ratio:4/5;background:linear-gradient(160deg,#ffffff14,#ffffff05);position:relative;overflow:hidden}.char .pic:after{content:"🌸";place-items:center;font-size:40px;animation:2s ease-in-out infinite float;display:grid;position:absolute;inset:0}.char .pic.ready:after{display:none}.char .pic img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s,transform .4s;display:block}.char .pic.ready img{opacity:1}.char:hover .pic img{transform:scale(1.04)}.char .info{flex-direction:column;flex:1;padding:16px 18px 18px;display:flex}.char h3{margin:0 0 2px;font-size:24px}.char .tag{color:var(--pink-2);letter-spacing:.3px;font-size:13px;font-weight:600}.char p{opacity:.8;flex:1;margin:10px 0 14px;font-size:14px;line-height:1.5}.char .pick{background:linear-gradient(135deg, var(--pink), #b57bff);border-radius:999px;align-self:flex-start;padding:8px 18px;font-size:14px;font-weight:600}@media (width<=560px){#charList{grid-template-columns:1fr}.char{flex-direction:row}.char .pic{aspect-ratio:auto;flex:none;width:120px}.char p{margin:6px 0 10px;font-size:13px}}
