:root{
  --bg: #0b0d12;
  --bg-soft: #131722;
  --bg-card: #1a2030;
  --fg: #e8ecf3;
  --fg-dim: #8b94a7;
  --accent: #5b8cff;
  --accent-2: #7b6cff;
  --user: #2a3a55;
  --bot: #2b2245;
  --danger: #ff5b6c;
  --ok: #2ecc71;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:18px;-webkit-text-size-adjust:100%}
body{overscroll-behavior:none;user-select:none;-webkit-user-select:none}

.app{display:flex;flex-direction:column;height:100dvh;padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom) 16px}

.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 4px}
.brand{font-weight:700;font-size:22px;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.status{font-size:13px;color:var(--fg-dim);transition:color .2s}
.status.ok{color:var(--ok)}
.status.err{color:var(--danger)}
.status.live{color:var(--accent)}

.dialog{flex:1;overflow-y:auto;padding:8px 0;display:flex;flex-direction:column;gap:10px;justify-content:flex-end}
.hint{color:var(--fg-dim);font-size:14px;text-align:center;padding:24px 12px}
.bubble{padding:12px 16px;border-radius:18px;max-width:88%;line-height:1.4;word-wrap:break-word;animation:in .2s ease-out}
.bubble.user{background:var(--user);align-self:flex-end;border-bottom-right-radius:4px}
.bubble.assistant{background:var(--bot);align-self:flex-start;border-bottom-left-radius:4px}
@keyframes in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.controls{display:flex;flex-direction:column;gap:10px;padding:10px 0 14px}

.big{
  border:0;border-radius:18px;padding:22px 20px;font-size:22px;font-weight:700;
  color:#fff;background:linear-gradient(180deg,var(--accent),#3d63cc);
  box-shadow:0 6px 20px rgba(91,140,255,.25);cursor:pointer;
  transition:transform .08s, filter .15s;
}
.big:active{transform:scale(.98)}
.big.primary.live{background:linear-gradient(180deg,var(--danger),#cc3a48);box-shadow:0 6px 20px rgba(255,91,108,.25)}
.big.primary.thinking{background:linear-gradient(180deg,var(--accent-2),#5848cc);animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.25)}}

.row{
  display:flex;align-items:center;gap:10px;border:0;border-radius:14px;
  padding:14px 16px;background:var(--bg-card);color:var(--fg);font-size:16px;cursor:pointer;
  text-align:left;
}
.row-label{color:var(--fg-dim);min-width:60px}
.row-value{flex:1;font-weight:600}
.row-arrow{color:var(--fg-dim)}

.modal{position:fixed;inset:0;display:flex;align-items:flex-end;justify-content:center;z-index:50}
.modal-bg{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);pointer-events:none}
.modal-card{position:relative;z-index:1;background:var(--bg-soft);width:100%;max-width:560px;border-top-left-radius:20px;border-top-right-radius:20px;padding:18px 16px 0 16px;max-height:80dvh;display:flex;flex-direction:column;animation:up .25s ease-out}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.modal-title{font-size:18px;font-weight:700;padding:6px 4px 12px}
.voice-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding-bottom:10px}
.voice-item{display:flex;align-items:center;gap:10px;padding:12px;background:var(--bg-card);border-radius:12px;cursor:pointer}
.voice-item.active{outline:2px solid var(--accent)}
.voice-info{flex:1;display:flex;flex-direction:column}
.voice-name{font-weight:600}
.voice-style{font-size:13px;color:var(--fg-dim)}
.play-btn{border:0;border-radius:50%;width:42px;height:42px;background:var(--accent);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.play-btn.loading{background:var(--fg-dim);animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.modal-close{flex-shrink:0;display:block;width:100%;margin:12px 0 80px 0;border:0;background:var(--accent);color:#fff;padding:22px 20px;font-size:18px;font-weight:700;border-radius:14px;cursor:pointer;min-height:64px;box-sizing:border-box}
