:root{
  --bg:#020617;--bg2:#0b1224;--panel:#0f172a;--line:#1e293b;--text:#e2e8f0;--muted:#94a3b8;
  --c1:#22d3ee;--c2:#3b82f6;--c3:#1d4ed8;--ai:#facc15;--grad:linear-gradient(135deg,var(--c1),var(--c2) 55%,var(--c3));
  --radius:14px;font-family:"Segoe UI",Inter,system-ui,-apple-system,Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text)}
button,input,textarea,select{font:inherit;color:inherit}
.hidden{display:none!important}
.muted{color:var(--muted)}.small{font-size:.82rem}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.err{color:#f87171;min-height:1.2em}
code{background:#111c33;padding:.1em .4em;border-radius:6px;font-family:Consolas,"JetBrains Mono",monospace;font-size:.9em}

.btn{border:1px solid var(--line);background:var(--panel);padding:.65rem 1rem;border-radius:10px;cursor:pointer;transition:.15s}
.btn:hover{border-color:var(--c2)}
.btn.primary{background:var(--grad);border:0;color:#fff;font-weight:600}
.btn.primary:hover{filter:brightness(1.1)}
.btn.wide{width:100%}
.link{background:none;border:0;color:var(--muted);cursor:pointer}.link:hover{color:var(--text)}
.icon-btn{background:none;border:0;font-size:1.3rem;cursor:pointer;padding:.4rem;border-radius:8px;color:var(--muted)}
.icon-btn:hover{background:var(--panel);color:var(--text)}

/* LOGIN */
.login{min-height:100%;display:grid;place-items:center;background:radial-gradient(circle at 30% 20%,#1e1b4b 0,transparent 50%),radial-gradient(circle at 80% 80%,#083344 0,transparent 45%),var(--bg)}
.login-card{width:min(360px,90vw);background:rgba(15,23,42,.8);border:1px solid var(--line);border-radius:22px;padding:2.2rem;text-align:center;backdrop-filter:blur(10px);display:flex;flex-direction:column;gap:.8rem}
.login-logo{width:96px;margin:0 auto}
.login-card h1{margin:.2rem 0 0;font-size:2rem;letter-spacing:.12em}
.login-card input{padding:.8rem 1rem;border-radius:10px;border:1px solid var(--line);background:var(--bg2);outline:none}
.login-card input:focus{border-color:var(--c2)}

/* LAYOUT */
.app{display:flex;height:100%;height:100dvh}
.sidebar{width:290px;background:var(--bg2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:1rem;gap:.8rem;flex-shrink:0}
.brand{display:flex;align-items:center;gap:.6rem;font-size:1.25rem;letter-spacing:.12em;font-weight:700;padding:.2rem .3rem}
.brand img{width:36px}
.tabs{display:flex;flex-direction:column;gap:.2rem}
.tab{background:none;border:0;text-align:left;padding:.55rem .7rem;border-radius:9px;cursor:pointer;color:var(--muted)}
.tab:hover{background:var(--panel);color:var(--text)}
.tab.active{background:var(--panel);color:var(--text);box-shadow:inset 3px 0 0 var(--c2)}
.conv-head{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-top:.4rem;padding-left:.4rem}
.conv-list{list-style:none;margin:0;padding:0;overflow:auto;flex:1}
.conv-list li{display:flex;align-items:center;gap:.4rem;padding:.5rem .6rem;border-radius:9px;cursor:pointer;font-size:.9rem;color:#cbd5e1}
.conv-list li:hover,.conv-list li.active{background:var(--panel)}
.conv-list li .t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-list li .del{opacity:0;background:none;border:0;cursor:pointer;color:var(--muted)}
.conv-list li:hover .del{opacity:1}
.badge{font-size:.65rem;padding:.1rem .35rem;border-radius:5px;background:#1e293b;color:var(--c1)}
.side-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:.6rem}

.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;gap:.6rem;padding:.7rem 1.2rem;border-bottom:1px solid var(--line)}
.topbar h2{margin:0;font-size:1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#menuBtn{display:none}
.view{flex:1;display:flex;flex-direction:column;min-height:0}
.scroll{overflow:auto}

/* MESSAGES */
.messages{flex:1;overflow:auto;padding:1.5rem 1rem 1rem}
.msg{max-width:860px;margin:0 auto 1.4rem;display:flex;gap:.9rem}
.msg .avatar{width:34px;height:34px;border-radius:10px;flex-shrink:0;display:grid;place-items:center;font-weight:700;font-size:.85rem}
.msg.user .avatar{background:#1e293b}
.msg.assistant .avatar img{width:34px}
.msg .body{flex:1;min-width:0;line-height:1.65}
.msg.user .body{background:var(--panel);border:1px solid var(--line);padding:.7rem 1rem;border-radius:var(--radius);white-space:pre-wrap}
.msg .body p{margin:.4rem 0}
.msg .body h1,.msg .body h2,.msg .body h3{margin:1rem 0 .4rem;line-height:1.3}
.msg .body h1{font-size:1.35rem}.msg .body h2{font-size:1.18rem}.msg .body h3{font-size:1.05rem}
.msg .body a{color:var(--c1)}
.msg .body ul,.msg .body ol{padding-left:1.4rem;margin:.4rem 0}
.msg .body pre{background:#0a1020;border:1px solid var(--line);border-radius:10px;padding:.9rem;overflow:auto;position:relative}
.msg .body pre code{background:none;padding:0}
.msg .body table{border-collapse:collapse;margin:.6rem 0;display:block;overflow:auto}
.msg .body th,.msg .body td{border:1px solid var(--line);padding:.4rem .7rem;text-align:left}
.msg .body th{background:var(--panel)}
.msg .body blockquote{border-left:3px solid var(--c2);margin:.5rem 0;padding:.2rem .9rem;color:var(--muted)}
.copy{position:absolute;top:.4rem;right:.4rem;font-size:.75rem;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:.15rem .5rem;cursor:pointer;color:var(--muted)}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.7rem;margin-top:.7rem}
.media-grid img,.media-grid video{width:100%;border-radius:12px;border:1px solid var(--line);background:#0a1020}
.sources{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}
.sources a{font-size:.78rem;padding:.25rem .6rem;border:1px solid var(--line);border-radius:20px;color:var(--muted);text-decoration:none;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sources a:hover{border-color:var(--c1);color:var(--text)}
.files{font-size:.8rem;color:var(--muted);margin-top:.3rem}
.thinking{display:flex;gap:.35rem;padding:.6rem 0}
.thinking span{width:8px;height:8px;border-radius:50%;background:var(--grad);animation:b 1.2s infinite}
.thinking span:nth-child(2){animation-delay:.15s}.thinking span:nth-child(3){animation-delay:.3s}
@keyframes b{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}
.error-box{color:#fca5a5;background:#2a0f14;border:1px solid #7f1d1d;padding:.7rem 1rem;border-radius:10px}

.welcome{max-width:820px;margin:6vh auto 0;text-align:center}
.welcome img{width:84px}
.welcome h1{font-size:1.7rem;font-weight:600;margin:1rem 0 1.6rem}
.chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.6rem}
.chip{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem;text-align:left;cursor:pointer;font-size:.9rem;color:#cbd5e1;transition:.15s}
.chip:hover{border-color:var(--c2);transform:translateY(-1px)}

/* COMPOSER */
.composer{padding:.6rem 1rem 1rem;max-width:900px;width:100%;margin:0 auto}
.composer-row{display:flex;align-items:flex-end;gap:.4rem;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:.45rem .5rem .45rem .6rem}
.composer-row:focus-within{border-color:var(--c2);box-shadow:0 0 0 3px rgba(99,102,241,.15)}
.composer textarea{flex:1;background:none;border:0;outline:none;resize:none;max-height:220px;padding:.5rem .2rem;line-height:1.5}
.send-btn{width:40px;height:40px;border-radius:12px;border:0;background:var(--grad);color:#fff;cursor:pointer;font-size:1rem}
.send-btn:disabled{opacity:.4;cursor:default}
.hint{text-align:center;margin:.45rem 0 0}
.attach-list{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.4rem}
.attach{font-size:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:.25rem .55rem}
.attach button{background:none;border:0;color:var(--muted);cursor:pointer}

/* PANELS */
.panel{max-width:900px;margin:0 auto;padding:1.5rem 1.2rem 3rem;width:100%}
.panel h3{margin:1.8rem 0 .8rem;font-size:1.05rem}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.8rem}
.gallery figure{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.gallery img,.gallery video{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#0a1020}
.gallery figcaption{font-size:.75rem;color:var(--muted);padding:.5rem .6rem;display:flex;justify-content:space-between;gap:.4rem}
.gallery figcaption span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.gallery a{color:var(--c1);text-decoration:none}
.jobs{display:flex;flex-direction:column;gap:.4rem}
.job{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;font-size:.85rem;display:flex;justify-content:space-between;gap:1rem}
.switch{display:flex;align-items:center;gap:.7rem;margin:.6rem 0;cursor:pointer}
.switch input{display:none}
.switch span{width:42px;height:24px;border-radius:20px;background:#334155;position:relative;transition:.2s;flex-shrink:0}
.switch span::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:3px;left:3px;transition:.2s}
.switch input:checked+span{background:var(--c2)}
.switch input:checked+span::after{left:21px}
.field{display:flex;flex-direction:column;gap:.35rem;margin:1rem 0;font-size:.9rem;color:var(--muted)}
.field input,.field textarea,.send-form input,.send-form textarea,.send-form select{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.65rem .8rem;outline:none;color:var(--text)}
.send-form{display:grid;grid-template-columns:1fr 160px;gap:.6rem}
.send-form textarea{grid-column:1/-1}
.warn{background:#2a1f05;border:1px solid #854d0e;color:#fde68a;padding:.8rem 1rem;border-radius:10px}
.webhooks div{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;margin:.4rem 0;font-size:.85rem}
.webhooks code{display:block;margin-top:.25rem;word-break:break-all}

@media (max-width:820px){
  .sidebar{position:fixed;inset:0 auto 0 0;z-index:20;transform:translateX(-100%);transition:.25s;box-shadow:0 0 40px #000}
  .sidebar.open{transform:none}
  #menuBtn{display:block}
  .msg{gap:.6rem}
  .welcome h1{font-size:1.3rem}
  .send-form{grid-template-columns:1fr}
}

/* ---- Ampliación: secciones nuevas ---- */
.top-actions{margin-left:auto;display:flex;gap:.4rem;align-items:center}
.top-actions select{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:.35rem .5rem;font-size:.82rem;max-width:170px}
#voiceMode.on{background:var(--grad);color:#fff}
.mic.rec{background:#7f1d1d;color:#fff;animation:pulse 1.2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(239,68,68,.25)}}
.search{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:.5rem .7rem;outline:none;font-size:.85rem}
.search:focus{border-color:var(--c2)}
.scrim{display:none}
.row{display:flex;gap:.5rem;margin:.5rem 0;flex-wrap:wrap}
.row input,.row select{flex:1;min-width:160px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;outline:none}
.list{list-style:none;padding:0;margin:.6rem 0;display:flex;flex-direction:column;gap:.35rem}
.list li,.list>div{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.55rem .8rem;display:flex;gap:.6rem;align-items:center;font-size:.9rem}
.list li span{flex:1}
.x{background:none;border:0;color:var(--muted);cursor:pointer;font-size:1rem}.x:hover{color:#f87171}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem;margin:.5rem 0}
.card h4{margin:0 0 .4rem}
.card textarea{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.6rem;outline:none;color:var(--text);margin:.4rem 0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.grid2 .field{margin:.6rem 0}
.field select{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;color:var(--text)}
.days{display:flex;gap:.3rem;flex-wrap:wrap}
.days label{display:flex;align-items:center;gap:.2rem;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:.3rem .5rem;color:var(--text);font-size:.8rem}
.pill{font-size:.72rem;padding:.12rem .5rem;border-radius:20px;background:#1e293b;color:var(--muted)}
.pill.ok{background:#052e1b;color:#4ade80}.pill.off{background:#2a0f14;color:#f87171}
.perms{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.2rem .8rem}
.perms .switch.dis{opacity:.45}
.audit{font-family:Consolas,monospace;font-size:.78rem;display:flex;flex-direction:column;gap:2px;margin-top:.5rem}
.audit div{background:var(--panel);padding:.35rem .6rem;border-radius:6px;display:grid;grid-template-columns:140px 190px 1fr;gap:.6rem;word-break:break-word}
.audit .k-seguridad{color:#fbbf24}
.provider-tag{font-size:.7rem;color:var(--muted);margin-top:.4rem}
.speak{background:none;border:0;cursor:pointer;color:var(--muted);font-size:.8rem;padding:0 .3rem}
.speak:hover{color:var(--text)}
.toast{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--c2);padding:.6rem 1rem;border-radius:10px;z-index:50;font-size:.9rem}
.filecard{display:flex;align-items:center;gap:.5rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;text-decoration:none;color:var(--text)}
.filecard:hover{border-color:var(--c1)}
.gallery .doc{aspect-ratio:1;display:grid;place-items:center;font-size:3rem;background:#0a1020}
@media (max-width:820px){
  .scrim.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:15}
  .top-actions select{max-width:105px}
  .grid2{grid-template-columns:1fr}
  .audit div{grid-template-columns:1fr}
}
a.btn{text-decoration:none;color:var(--text);display:inline-block}
#status{color:#4ade80}
@media (max-width:820px){.composer textarea,.row input,.field input,.field textarea,.search,.login-card input{font-size:16px}.topbar h2{max-width:28vw}}

/* Marca LISI AI */
.ai{color:var(--ai);font-weight:800;text-shadow:0 0 12px rgba(250,204,21,.35)}
.login-banner{width:100%;border-radius:14px;box-shadow:0 0 30px rgba(34,211,238,.25)}
.login-card{width:min(420px,92vw)}
.brand img,.welcome img,.msg.assistant .avatar img{border-radius:10px}
.welcome img{width:96px;border-radius:22px;box-shadow:0 0 28px rgba(34,211,238,.3)}
.msg.assistant .avatar img{width:34px;height:34px;object-fit:cover}
.login-card .err:empty{display:none}
.setup-card{width:min(520px,94vw);text-align:left;max-height:96vh;overflow:auto}
.setup-card h2{margin:.4rem 0 0;text-align:center}
.setup-card .field{margin:.5rem 0}
.setup-card .field a{color:var(--c1);font-size:.8rem;margin-left:.4rem}
.setup-card .field input{width:100%}
.keys-title{margin-top:.8rem;font-weight:600}
.setup-result{display:flex;flex-direction:column;gap:.3rem}
