/* Tema "Atelier" — tokens exactos extraidos de la UI de OpenMausBot */
:root{
  --color-app:#f5f1eb;
  --color-panel:#fbf8f2;
  --color-raised:#fff;
  --color-raised-hover:#f2e9dc;
  --color-composer:#fff;
  --color-card:#fff;
  --color-menu:#fff;
  --color-inset:#f5f1eb;
  --color-control:#ece4d6;
  --color-hairline:#c8bda8;
  --color-ink:#1a1a18;
  --color-ink-secondary:#6b6559;
  --color-accent:#a05f25;
  --color-accent-border:#b06a2c;
  --color-accent-text:#96551f;
  --color-focus:#96551f;
  --color-accent-ink:#fff;
  --color-bubble-user:#f2e9dc;
  --color-bubble-user-ink:#1a1a18;
  --color-success:#3f6b47;
  --color-danger:#a33a32;
  --color-off:#8b4032;
  --color-scrollbar:#c9c0ae;
  --color-maus-line:#6b6559;
  --font-sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --radius-lg:6px;
  --radius-xl:10px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--color-app);color:var(--color-ink);
  font-family:var(--font-sans);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
#app{display:flex;flex-direction:column;height:100dvh;max-width:900px;margin:0 auto;
     background:var(--color-app)}
header.top{
  display:flex;align-items:center;gap:10px;padding:12px 16px;
  background:var(--color-panel);border-bottom:1px solid var(--color-hairline);
  position:sticky;top:0;z-index:5;padding-top:calc(12px + env(safe-area-inset-top));
}
header.top .brand{font-weight:600;letter-spacing:.2px}
header.top .dot{width:8px;height:8px;border-radius:50%;background:var(--color-success);
  box-shadow:0 0 0 3px rgba(63,107,71,.15)}
header.top .spacer{flex:1}
header.top button.ghost{
  background:transparent;border:1px solid var(--color-hairline);color:var(--color-ink-secondary);
  border-radius:var(--radius-lg);padding:6px 10px;font:inherit;font-size:13px;cursor:pointer}
header.top button.ghost:hover{background:var(--color-raised-hover)}
header.top button.ghost.on{color:var(--color-success);font-weight:600}
header.top button.ghost.off{color:var(--color-off);font-weight:600}

main#scroll{flex:1;overflow-y:auto;padding:12px 10px;scroll-behavior:smooth}
.msg{display:flex;margin:10px 0;gap:8px}
.msg .who{font-size:11px;color:var(--color-ink-secondary);margin-bottom:3px}
.msg .bubble{
  max-width:min(96%,760px);padding:11px 15px;border-radius:var(--radius-xl);
  white-space:normal;word-wrap:break-word;overflow-wrap:anywhere;
  border:1px solid var(--color-hairline);background:var(--color-card)}
.msg.user{justify-content:flex-end}
.msg.user .bubble{background:var(--color-bubble-user);color:var(--color-bubble-user-ink);
  border-color:var(--color-accent-border)}
.msg.bot .bubble{background:var(--color-card)}
.msg.system{justify-content:center}
.msg.system .bubble{background:var(--color-inset);color:var(--color-ink-secondary);
  font-size:13px;border-style:dashed}
.msg .bubble img{max-width:100%;border-radius:var(--radius-lg);margin-top:6px;display:block}
.msg .bubble code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:var(--color-inset);border:1px solid var(--color-hairline);border-radius:5px;padding:1px 5px}
.msg .bubble strong{font-weight:700;color:var(--color-ink)}
.msg .bubble a.file{
  display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:6px 10px;
  border:1px solid var(--color-hairline);border-radius:var(--radius-lg);
  background:var(--color-inset);color:var(--color-accent-text);text-decoration:none;font-size:13px}
.typing{font-size:12px;line-height:16px;color:var(--color-ink-secondary);padding:3px 16px 8px;min-height:16px}

footer.composer{
  position:sticky;bottom:0;background:var(--color-panel);
  border-top:1px solid var(--color-hairline);
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));
}
.attachrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--color-inset);
  border:1px solid var(--color-hairline);border-radius:999px;padding:4px 8px;font-size:12px}
.chip img{width:22px;height:22px;object-fit:cover;border-radius:6px}
.chip button{background:none;border:0;color:var(--color-danger);cursor:pointer;font-size:14px;line-height:1}
.row{display:flex;align-items:flex-end;gap:8px}
textarea#text{
  flex:1;resize:none;min-height:44px;max-height:180px;padding:11px 12px;font:inherit;
  color:var(--color-ink);background:var(--color-composer);
  border:1px solid var(--color-hairline);border-radius:var(--radius-lg);outline:none}
textarea#text:focus{border-color:var(--color-focus);box-shadow:0 0 0 2px rgba(150,85,31,.15)}
button.icon{
  flex:0 0 auto;width:44px;height:44px;border-radius:var(--radius-lg);cursor:pointer;
  border:1px solid var(--color-hairline);background:var(--color-raised);color:var(--color-ink);
  display:grid;place-items:center}
button.icon:hover{background:var(--color-raised-hover)}
button.send{background:var(--color-accent);border-color:var(--color-accent-border);
  color:var(--color-accent-ink)}
button.send:hover{background:#8f5521}
button.icon:disabled{opacity:.45;cursor:default}
svg{display:block}

.pushbanner{
  display:flex;align-items:center;gap:10px;margin:8px 10px 0;padding:10px 12px;
  background:var(--color-accent);color:#fff;border-radius:var(--radius-lg);font-size:13px}
.pushbanner span{flex:1}
.pushbanner button{
  flex:0 0 auto;font:inherit;font-size:13px;font-weight:600;cursor:pointer;
  background:#fff;color:var(--color-accent-text);border:0;border-radius:var(--radius-lg);padding:7px 12px}

/* ---- contenido de la burbuja (bloques) ---- */
.msg .bubble > *:first-child{margin-top:0}
.msg .bubble > *:last-child{margin-bottom:0}
.msg .bubble > p{margin:0 0 9px}
.msg .bubble > p:last-child{margin-bottom:0}
.msg .bubble > ul,.msg .bubble > ol{margin:4px 0 9px;padding-left:22px}
.msg .bubble li{margin:2px 0}
.msg .bubble > h1,.msg .bubble > h2,.msg .bubble > h3{
  margin:12px 0 6px;line-height:1.25;font-weight:700}
.msg .bubble > h1{font-size:1.22em}
.msg .bubble > h2{font-size:1.1em}
.msg .bubble > h3{font-size:1em;color:var(--color-ink-secondary)}
.msg .bubble > blockquote{
  margin:6px 0 9px;padding:2px 0 2px 11px;border-left:3px solid var(--color-accent-border);
  color:var(--color-ink-secondary)}
.msg .bubble em{font-style:italic}

/* ---- login ---- */
.login{max-width:420px;margin:8vh auto;padding:24px;background:var(--color-panel);
  border:1px solid var(--color-hairline);border-radius:var(--radius-xl)}
.login h1{font-size:20px;margin:0 0 4px}
.login p{color:var(--color-ink-secondary);font-size:14px;margin:0 0 18px}
.login label{display:block;font-size:13px;color:var(--color-ink-secondary);margin:12px 0 5px}
.login input{width:100%;padding:11px 12px;font:inherit;border-radius:var(--radius-lg);
  border:1px solid var(--color-hairline);background:var(--color-composer);color:var(--color-ink)}
.login button{width:100%;margin-top:16px;padding:12px;font:inherit;font-weight:600;cursor:pointer;
  background:var(--color-accent);color:var(--color-accent-ink);border:1px solid var(--color-accent-border);
  border-radius:var(--radius-lg)}
.login button.secondary{background:var(--color-raised);color:var(--color-ink);border-color:var(--color-hairline);
  font-weight:500}
.login .err{color:var(--color-danger);font-size:13px;margin-top:10px;min-height:18px}
.login .ok{color:var(--color-success);font-size:13px;margin-top:10px}
.hidden{display:none!important}

/* ---- pulido movil ---- */
@media (max-width:520px){
  body{font-size:15.5px}
  main#scroll{padding:10px 8px}
  .msg{margin:8px 0}
  .msg .bubble{max-width:94%;padding:10px 13px;border-radius:14px}
  .msg .bubble > ul,.msg .bubble > ol{padding-left:19px}
  header.top{padding:10px 12px;padding-top:calc(10px + env(safe-area-inset-top))}
  header.top button.ghost{padding:5px 8px;font-size:12.5px}
  .msg .bubble > h1{font-size:1.16em}
  .msg .bubble > h2{font-size:1.06em}
}

/* ---- toast de estado ---- */
.toast{
  position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translateX(-50%);
  max-width:90%;z-index:20;padding:9px 14px;border-radius:var(--radius-lg);font-size:13px;
  background:var(--color-ink);color:var(--color-app);box-shadow:0 4px 16px rgba(0,0,0,.18)}
.toast.hidden{display:none!important}

/* ---- Fix 3 (reversible): evita el auto-zoom de iOS al enfocar el compositor ----
   iOS hace zoom al enfocar un input/textarea cuyo font-size es < 16px (aqui el body
   baja a 15.5px en movil). Forzamos 16px SOLO cuando <html class="fix-zoom">.
   Para revertir al comportamiento anterior: en app.js pon FIX_COMPOSER_ZOOM = false. */
.fix-zoom textarea#text,
.fix-zoom input,
.fix-zoom select{font-size:16px}
