:root{--bg: #0a0a0a;--panel: #121212;--border: #292929;--text: #f4f0eb;--muted: #a89f98;--ivy: #c084fc;--z-dropdown: 100;--z-modal: 200;--z-overlay: 300}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);height:100vh;height:100dvh;overflow:hidden}.app{display:grid;grid-template-columns:260px 1fr;height:100vh;height:100dvh}.sidebar{background:var(--panel);border-right:1px solid var(--border);padding:24px;display:flex;flex-direction:column;gap:16px}.sidebar h1{margin:0 0 4px;font-size:24px;color:var(--ivy)}.sidebar .subtitle{margin:0 0 16px;color:var(--muted);font-size:14px}.sidebar p{margin:0;color:var(--muted);font-size:14px}.fan-id{margin-top:auto}.fan-id label{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.fan-id input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px;border-radius:8px}.clear{background:transparent;border:1px solid var(--border);color:var(--muted);padding:8px;border-radius:8px;cursor:pointer}.roleplay-discovery{margin-top:8px;padding-top:12px;border-top:1px solid var(--border)}.roleplay-discovery>p{margin:0 0 8px;font-size:12px;color:var(--muted)}.roleplay-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}.roleplay-card{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:12px;cursor:pointer;transition:border-color .15s,background .15s;display:flex;align-items:center;justify-content:space-between;gap:6px}.roleplay-card-label{text-align:left}.roleplay-cost{flex-shrink:0;font-size:10px;font-weight:600;padding:2px 6px;border-radius:999px;background:#ff6b6b26;color:var(--nova);border:1px solid rgba(255,107,107,.35)}.roleplay-cost-free{background:#ffffff0f;color:var(--muted);border-color:var(--border)}.roleplay-card:hover{border-color:var(--muted);background:#ffffff0a}.roleplay-hint{margin:8px 0 0;font-size:11px;color:var(--muted)}.roleplay-hint code{font-size:10px;color:var(--text)}.chat header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px}.header-left{display:flex;align-items:baseline;gap:8px}.header-left h2{margin:0}.header-left .status{font-size:13px;color:var(--muted)}.header-right{position:relative;display:flex;align-items:center;gap:8px}.profile-btn{position:relative;display:flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:6px 10px;cursor:pointer;color:var(--text)}.profile-btn:hover{border-color:var(--muted)}.credit-badge{background:var(--accent, #6c8eff);color:#fff;font-size:11px;font-weight:700;border-radius:10px;padding:1px 6px;min-width:18px;text-align:center}.profile-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #0000001f;padding:12px;z-index:var(--z-dropdown)}.dropdown-name{font-weight:600;font-size:15px;margin-bottom:8px}.dropdown-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:13px;color:var(--text)}.dropdown-row span{color:var(--muted)}.dropdown-row code{font-size:12px;color:var(--text)}.dropdown-divider{height:1px;background:var(--border);margin:8px 0}.dropdown-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.dropdown-link{display:block;width:100%;text-align:left;padding:8px 0;font-size:14px;color:var(--text);text-decoration:none;background:none;border:none;cursor:pointer}.dropdown-link:hover{color:var(--accent, #6c8eff)}.dropdown-link.danger{color:#e85050}.chat{display:grid;grid-template-rows:auto 1fr auto;height:100vh;height:100dvh}header{padding:16px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}header h2{margin:0}.status{color:#4ade80;font-size:13px}.messages{overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:16px}.empty{margin:auto;text-align:center;color:var(--muted)}.message{display:flex;gap:12px;align-items:flex-end;max-width:80%}.message.fan{align-self:flex-end;flex-direction:row-reverse}.message.character{align-self:flex-start}.message.system{align-self:center;opacity:.7}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--panel);border:1px solid var(--border);font-size:12px;flex-shrink:0}.bubble{background:var(--panel);border:1px solid var(--border);padding:12px 16px;border-radius:18px;line-height:1.5}.message.fan .bubble{background:var(--text);color:var(--bg)}.message.character .bubble{border-color:var(--ivy)}.roleplay-media{position:relative;display:block;max-width:280px;margin-bottom:10px}.roleplay-image{display:block;width:100%;border-radius:12px;object-fit:cover;aspect-ratio:3 / 4;background:var(--bg)}.roleplay-media.image-missing .roleplay-image{display:none}.roleplay-credits-badge{position:absolute;left:10px;bottom:10px;background:#0a0a0ad1;color:#fff;font-size:11px;font-weight:700;letter-spacing:.02em;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.roleplay-status-chip{font-size:.75rem;padding:.2rem .55rem;border-radius:999px;background:#c084fc1f;border:1px solid rgba(192,132,252,.4);color:#e9d5ff;white-space:nowrap;max-width:10rem;overflow:hidden;text-overflow:ellipsis}.input-bar{display:flex;gap:8px;padding:16px 24px;border-top:1px solid var(--border)}.input-wrap{position:relative;flex:1}.input-wrap input{width:100%}.slash-menu{position:absolute;bottom:calc(100% + 8px);left:0;right:0;margin:0;padding:6px;list-style:none;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #0006;z-index:var(--z-dropdown);max-height:220px;overflow-y:auto}.slash-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border:none;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;text-align:left}.slash-menu-item:hover,.slash-menu-item:focus{background:var(--bg);outline:none}.slash-menu-cmd{font-weight:600;font-size:14px}.slash-menu-desc{font-size:12px;color:var(--muted)}.input-bar input{flex:1;background:var(--panel);border:1px solid var(--border);color:var(--text);padding:12px 16px;border-radius:24px;outline:none;font-size:16px;box-sizing:border-box;min-width:0}.input-bar button{width:44px;height:44px;border-radius:50%;border:none;flex-shrink:0;background:var(--text);color:var(--bg);display:grid;place-items:center;cursor:pointer}.input-bar button:disabled{opacity:.5;cursor:not-allowed}.voice-btn{background:var(--panel)!important;color:var(--muted)!important;border:1px solid var(--border)!important}.voice-btn.recording{background:#e85050!important;color:#fff!important;border-color:#e85050!important;animation:pulse 1s infinite}.help-btn{background:var(--panel)!important;color:var(--muted)!important;border:1px solid var(--border)!important}.help-btn:hover{color:var(--text)!important;border-color:var(--muted)!important}.message.system{align-self:center;opacity:.85;max-width:95%}.message.system .bubble{white-space:pre-wrap;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.5}.voice-status{text-align:center;padding:4px 0;font-size:12px;color:var(--muted);font-style:italic}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.center{display:grid;place-items:center;place-content:center;gap:16px;text-align:center;color:var(--muted);height:100vh}.center h2{margin:0;color:var(--text)}.center button{padding:10px 20px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer}@media(max-width:700px){.app{grid-template-columns:1fr}.sidebar{display:none}.messages{padding:16px 12px;gap:12px}.input-bar{padding:8px 12px}.input-bar input{padding:10px 14px}.message{max-width:90%}.header-left h2{font-size:18px}}.install-banner{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--border);font-size:13px;color:var(--muted)}.install-banner-content{flex:1;display:flex;align-items:center;gap:10px;justify-content:space-between}.install-banner-content span{flex:1}.install-banner-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--accent, #6c8eff);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer}.install-banner-btn:disabled{opacity:.6;cursor:default}.install-banner-close{background:transparent;border:none;color:var(--muted);cursor:pointer;padding:4px;display:inline-flex}.install-banner-close:hover{color:var(--text)}.notif-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s}.notif-toggle:hover{color:var(--text);border-color:var(--text)}.notif-toggle.notif-subscribed{color:var(--accent, #6c8eff);border-color:var(--accent, #6c8eff)}.notif-toggle.notif-denied{color:#ff6b6b;opacity:.6;cursor:not-allowed}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.message.failed .bubble{background:#ff6b6b1f;border:1px solid rgba(255,107,107,.4);opacity:.85}.message-failed{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.06);font-size:11px}.message-failed-msg{display:inline-flex;align-items:center;gap:4px;color:#ff6b6b}.message-retry-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;border:1px solid rgba(255,255,255,.15);color:var(--text);border-radius:4px;cursor:pointer;font-size:11px}.message-retry-btn:hover{background:#ffffff0f}.update-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 14px;background:var(--accent, #6c8eff);color:#fff;font-size:13px}.update-banner button{padding:4px 10px;background:#fff;color:#0a0a0a;border:none;border-radius:4px;font-weight:600;cursor:pointer;font-size:12px}.app.has-bg-image{position:relative}.app.has-bg-image:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--bg-image-url, none);background-size:cover;background-position:center;background-repeat:no-repeat;opacity:.12;pointer-events:none;z-index:0}.app.has-bg-image>*{position:relative;z-index:1}
