/* Asistente IA: panel lateral de vidrio, burbujas, citas y fuentes */
:root{--as-a:#5b5bd6;--as-b:#2f86d1;--as-grad:linear-gradient(135deg,var(--as-a),var(--as-b))}
@media (prefers-color-scheme:dark){:root{--as-a:#8f8ff2;--as-b:#5aa7ea}}

/* Botón flotante */
.as-fab{position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:40;display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 20px 0 16px;border:0;border-radius:99px;background:var(--as-grad);color:#fff;font:500 15px var(--f-body);cursor:pointer;box-shadow:0 14px 34px -12px rgba(91,91,214,.75),0 2px 6px rgba(14,22,33,.18);transition:transform .25s var(--ease),box-shadow .25s,opacity .25s;animation:fabIn .6s .3s var(--ease) both}
.as-fab svg{width:20px;height:20px}
.as-fab:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 18px 40px -12px rgba(91,91,214,.85),0 2px 6px rgba(14,22,33,.2)}
.as-fab::after{content:"";position:absolute;inset:-4px;border-radius:99px;border:2px solid rgba(91,91,214,.35);animation:pulseRing 2.6s ease-out infinite;pointer-events:none}
.as-fab.hide{opacity:0;transform:translateY(12px) scale(.9);pointer-events:none}
@keyframes fabIn{from{opacity:0;transform:translateY(16px) scale(.9)}to{opacity:1;transform:none}}
@keyframes pulseRing{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.18)}}

/* Panel */
.as-scrim{position:fixed;inset:0;z-index:48;background:rgba(8,12,18,.18);animation:fade .25s}
@media (min-width:1100px){.as-scrim{display:none}}
.as-panel{position:fixed;top:0;right:0;bottom:0;z-index:50;width:min(480px,100vw);display:flex;flex-direction:column;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);border-left:1px solid var(--line);box-shadow:-24px 0 60px -30px rgba(14,22,33,.45);transform:translateX(104%);transition:transform .38s var(--ease);padding-top:env(safe-area-inset-top,0px)}
.as-panel.open{transform:none}
@media (min-width:1100px){body.as-open .wrap.wide{margin-right:480px;max-width:calc(100% - 480px);transition:margin .38s var(--ease)}}
.as-head{display:flex;align-items:center;gap:12px;padding:16px 16px 12px 18px;position:relative}
.as-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--as-a) 40%,transparent),transparent)}
.as-avatar{width:38px;height:38px;border-radius:12px;background:var(--as-grad);color:#fff;display:grid;place-items:center;flex-shrink:0;box-shadow:0 6px 16px -8px var(--as-a)}
.as-avatar svg{width:20px;height:20px}
.as-avatar.sm{width:28px;height:28px;border-radius:9px}.as-avatar.sm svg{width:15px;height:15px}
.as-avatar.lg{width:56px;height:56px;border-radius:18px}.as-avatar.lg svg{width:28px;height:28px}
.as-head-t{flex:1;min-width:0}
.as-head h2{font-family:var(--f-display);font-weight:400;font-size:23px;letter-spacing:-.01em;line-height:1.1}
.as-head p{font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-iconbtn{width:36px;height:36px;border-radius:10px;border:0;background:transparent;color:var(--ink-2);display:grid;place-items:center;cursor:pointer;transition:background-color .15s,color .15s}
.as-iconbtn:hover{background:var(--surface-2);color:var(--ink)}
.as-iconbtn.warn{background:var(--crit-soft);color:var(--crit)}
.as-scope{padding:10px 16px 0;display:flex;flex-direction:column;gap:8px}
.as-chip{display:flex;align-items:center;gap:10px;padding:9px 10px 9px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line-2)}
.as-chip.as-chip-act{background:color-mix(in srgb,var(--as-a) 8%,var(--surface));border-color:color-mix(in srgb,var(--as-a) 25%,var(--line))}
.as-chip-t{flex:1;min-width:0;font-size:13.5px;font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.as-chip-t small{display:block;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:400}
.as-chip button{width:26px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--ink-3);cursor:pointer;display:grid;place-items:center}
.as-chip button:hover{background:var(--surface);color:var(--ink)}
.as-threads{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}
.as-threads svg{flex-shrink:0}
.as-threads button{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:3px 10px;font-size:12px;color:var(--ink-2);cursor:pointer;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color .15s}
.as-threads button:hover{border-color:var(--as-a);color:var(--as-a)}

/* Mensajes */
.as-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:18px;scroll-behavior:smooth}
.as-loading{display:grid;place-items:center;flex:1}
.as-empty{margin:auto 0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:10px 6px;animation:rise .5s var(--ease) both}
.as-empty h3{font-family:var(--f-display);font-weight:400;font-size:25px;line-height:1.15;letter-spacing:-.01em;max-width:22ch}
.as-empty p{font-size:13.5px;color:var(--ink-2);max-width:40ch}
.as-sugg{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:6px}
.as-sugg button{text-align:left;padding:11px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:13.5px;color:var(--ink);cursor:pointer;transition:border-color .15s,transform .15s var(--ease),box-shadow .15s;position:relative;padding-right:34px}
.as-sugg button::after{content:"→";position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--as-a);opacity:0;transition:opacity .15s,transform .15s}
.as-sugg button:hover{border-color:color-mix(in srgb,var(--as-a) 50%,var(--line));transform:translateY(-1px);box-shadow:var(--shadow)}
.as-sugg button:hover::after{opacity:1;transform:translate(3px,-50%)}
.as-msg{display:flex;gap:10px;animation:rise .35s var(--ease) both}
.as-msg.user{justify-content:flex-end}
.as-bubble{max-width:85%;background:var(--as-grad);color:#fff;padding:10px 14px;border-radius:16px 16px 4px 16px;font-size:14.5px;line-height:1.5;box-shadow:0 8px 20px -14px var(--as-a)}
.as-ai{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.as-status{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-3);padding:6px 0}
.as-dots{display:inline-flex;gap:4px}
.as-dots i{width:7px;height:7px;border-radius:50%;background:var(--as-a);animation:dot 1.1s infinite ease-in-out}
.as-dots i:nth-child(2){animation-delay:.15s;background:color-mix(in srgb,var(--as-a) 60%,var(--as-b))}.as-dots i:nth-child(3){animation-delay:.3s;background:var(--as-b)}
@keyframes dot{0%,80%,100%{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}
.as-md{font-size:14.5px;line-height:1.62;color:var(--ink)}
.as-md h3{font-family:var(--f-body);font-size:15px;font-weight:600;margin:14px 0 4px}
.as-md h3:first-child{margin-top:0}
.as-md p{margin:6px 0}
.as-md ul,.as-md ol{margin:6px 0;padding-left:22px}
.as-md li{margin:4px 0}
.as-md ol li::marker{color:var(--as-a);font-weight:600}
.as-md strong{font-weight:600}
.as-md code{font-family:var(--f-mono);font-size:12.5px;background:var(--surface-2);padding:1px 5px;border-radius:4px}
.as-md.typing>:last-child::after{content:"";display:inline-block;width:7px;height:15px;margin-left:3px;vertical-align:-2px;border-radius:2px;background:var(--as-a);animation:caret 1s steps(2) infinite}
@keyframes caret{50%{opacity:0}}
.as-cite{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;margin:0 1px;border-radius:5px;background:color-mix(in srgb,var(--as-a) 14%,var(--surface));color:var(--as-a);font:600 10.5px var(--f-mono);text-decoration:none;vertical-align:2px;transition:background-color .15s,color .15s}
.as-cite:hover{background:var(--as-a);color:#fff}
.as-pref{display:inline-block;padding:0 5px;border-radius:5px;background:var(--warn-soft);color:var(--warn);font:600 11.5px var(--f-mono);cursor:help}
.as-sources{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line-2)}
.as-src-h{display:flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.as-src{display:grid;grid-template-columns:22px 1fr 14px;gap:10px;align-items:center;padding:8px 10px;border-radius:9px;background:var(--surface);border:1px solid var(--line-2);text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s var(--ease)}
.as-src:hover{border-color:color-mix(in srgb,var(--as-a) 45%,var(--line));transform:translateX(2px)}
.as-src b{width:22px;height:22px;border-radius:6px;background:var(--as-grad);color:#fff;display:grid;place-items:center;font:600 11px var(--f-mono)}
.as-src span{font-size:13px;line-height:1.3;min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.as-src small{display:block;font-size:11px;color:var(--ink-3)}
.as-src svg{color:var(--ink-3)}
.as-nosrc{font-size:12.5px;color:var(--warn);background:var(--warn-soft);border-radius:9px;padding:8px 10px}
.as-tools{display:flex;flex-wrap:wrap;gap:4px}
.as-tools button{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--ink-3);font-size:12.5px;padding:5px 9px;border-radius:8px;cursor:pointer;transition:background-color .15s,color .15s}
.as-tools button:hover{background:var(--surface-2);color:var(--ink)}
.as-tools button[disabled]{color:var(--good);cursor:default;background:var(--good-soft)}

/* Composer */
.as-compose{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line-2);display:flex;flex-direction:column;gap:6px}
.as-inputwrap{display:flex;align-items:flex-end;gap:8px;padding:6px 6px 6px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);transition:border-color .15s,box-shadow .15s}
.as-inputwrap:focus-within{border-color:var(--as-a);box-shadow:0 0 0 4px color-mix(in srgb,var(--as-a) 18%,transparent)}
.as-inputwrap textarea:focus-visible{box-shadow:none}
.as-inputwrap textarea{flex:1;border:0;outline:none;background:transparent;resize:none;font:inherit;font-size:14.5px;line-height:1.45;padding:7px 0;max-height:160px;color:var(--ink)}
.as-send{width:38px;height:38px;border-radius:12px;border:0;background:var(--as-grad);color:#fff;display:grid;place-items:center;cursor:pointer;flex-shrink:0;transition:transform .15s var(--ease),filter .15s}
.as-send:hover{transform:scale(1.05);filter:brightness(1.08)}
.as-send.stop{background:var(--ink)}
.as-disc{font-size:11.5px;color:var(--ink-3);text-align:center}
@media (max-width:560px){.as-fab{right:16px;bottom:16px;height:48px;padding:0 16px 0 14px;font-size:14px}.as-panel{width:100vw}}
@media (prefers-reduced-motion:reduce){.as-fab::after{animation:none}}
@media print{.as-fab,.as-panel,.as-scrim{display:none!important}}
