
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#05070B;--bg2:#090D14;--bg3:#0D1219;--bg4:#111820;
  --border:#1A2335;--border2:#1F2B40;
  /* Contraste WCAG 2.2 AA verificado sobre bg..bg4: text2 >=7:1, text3 >=5:1, texto de acento >=4.5:1.
     --border-ui: borde de controles de formulario (>=3:1, SC 1.4.11). --accent-solid: relleno de botones con texto blanco (>=5:1). */
  --text:#F5F7FA;--text2:#A0AEC5;--text3:#778EB1;
  --accent:#3AA7FF;--accent2:#3290DC;--accent-glow:rgba(58,167,255,0.08);
  --accent-solid:#1A6AB2;--border-ui:#526A8E;--red-text:#F07070;
  --green:#4CAF7A;--red:#E05555;--blue:#3AA7FF;--amber:#9580FF;--purple:#8B6DFF;
  --violet:#6A4DFF;
  --r:8px;
}
html,body{height:100%;overflow:hidden;}
body{background:var(--bg);color:var(--text);font-family:'Space Grotesk',sans-serif;font-size:14px;display:flex;flex-direction:column;}

/* TOPBAR */
.topbar{height:48px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 14px;gap:10px;flex-shrink:0;z-index:10;}
.topbar-logo{display:flex;align-items:center;gap:8px;font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:600;color:var(--text);letter-spacing:-0.02em;}
.topbar-logo .qx-isotipo-old{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,rgba(58,167,255,0.12),rgba(106,77,255,0.12));border:1px solid rgba(58,167,255,0.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.topbar-logo .qx-isotipo{display:flex;align-items:center;flex-shrink:0;}
.topbar-logo .qx-mono{height:26px;width:31px;display:block;}
.topbar-logo .qx-wordmark{height:15px;width:45px;display:block;color:var(--text);}
.topbar-pod{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);background:var(--bg4);border:1px solid var(--border2);padding:2px 8px;border-radius:10px;cursor:pointer;}
.topbar-pod:hover{border-color:var(--accent2);color:var(--accent);}
.topbar-sep{width:1px;height:20px;background:var(--border2);flex-shrink:0;}
.pill-sel{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border2);border-radius:20px;cursor:pointer;font-size:12px;color:var(--text2);transition:all 0.15s;background:transparent;position:relative;}
.pill-sel:hover{border-color:var(--accent2);color:var(--accent);background:var(--accent-glow);}
.pill-sel .dropdown{display:none;position:absolute;top:calc(100% + 6px);left:0;background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r);overflow:hidden;min-width:220px;z-index:100;box-shadow:0 8px 32px rgba(0,0,0,0.5);}
.pill-sel.open .dropdown{display:block;}
.drop-item{padding:9px 13px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background 0.1s;font-size:13px;}
.drop-item:hover{background:var(--bg4);} .drop-item.active{background:var(--accent-glow);}
.drop-info{flex:1;}.drop-name{font-size:13px;color:var(--text);}.drop-desc{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;}
.drop-tag{font-size:11px;font-family:'DM Mono',monospace;color:var(--accent2);padding:1px 5px;border:1px solid var(--border2);border-radius:5px;}
.dot6{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.dot-green{background:var(--green);} .dot-blue{background:var(--blue);} .dot-amber{background:var(--amber);} .dot-red{background:var(--red);} .dot-purple{background:var(--purple);} .dot-accent{background:var(--accent);}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:7px;}
.axc-pill{display:flex;align-items:center;gap:7px;padding:4px 10px;border:1px solid var(--border);border-radius:20px;font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;cursor:pointer;transition:all 0.15s;}
.axc-pill:hover{border-color:var(--accent2);color:var(--text2);}
.axc-bar{width:48px;height:3px;background:var(--border2);border-radius:2px;overflow:hidden;}
.axc-fill{height:100%;background:linear-gradient(90deg,var(--accent2),var(--accent));border-radius:2px;transition:width 0.4s;}
.icon-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer;color:var(--text3);transition:all 0.15s;border:none;background:transparent;font-size:13px;}
.icon-btn:hover{background:var(--bg3);color:var(--text);}
.conn-dot{width:6px;height:6px;border-radius:50%;background:var(--red);flex-shrink:0;}
.conn-dot.ok{background:var(--green);animation:pgr 2s infinite;}
@keyframes pgr{0%,100%{opacity:1}50%{opacity:0.5}}

/* LAYOUT */
.app-body{display:flex;flex:1;overflow:hidden;}

/* SIDEBAR */
.sidebar{position:relative;width:calc(220px * var(--sb-k,1));background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width 0.22s cubic-bezier(0.4,0,0.2,1);}
.sb-header{padding:9px 11px 4px;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);text-transform:uppercase;letter-spacing:0.1em;display:flex;align-items:center;justify-content:space-between;}
.sb-add{width:17px;height:17px;display:flex;align-items:center;justify-content:center;border-radius:3px;cursor:pointer;color:var(--text3);font-size:15px;line-height:1;border:none;background:transparent;}
.sb-add:hover{background:var(--bg3);color:var(--accent);}
.proj-tree{flex:1;overflow-y:auto;padding:2px 0;}
.proj-tree::-webkit-scrollbar{width:3px;}
.proj-tree::-webkit-scrollbar-thumb{background:var(--border2);}
.proj-row{display:flex;align-items:center;gap:5px;padding:5px 11px;cursor:pointer;font-size:12px;font-weight:500;color:var(--text2);transition:color 0.1s;user-select:none;}
.proj-row:hover{color:var(--text);}
.chev{font-size:8px;color:var(--text3);transition:transform 0.15s;flex-shrink:0;}
.chev.o{transform:rotate(90deg);}
.proj-dot{width:7px;height:7px;border-radius:2px;background:var(--accent2);flex-shrink:0;}
.pod-dot{width:5px;height:5px;border-radius:50%;background:var(--purple);flex-shrink:0;margin-left:3px;}
.sb-body{display:none;} .sb-body.o{display:block;}
.folder-row{display:flex;align-items:center;gap:5px;padding:4px 11px 4px 20px;cursor:pointer;color:var(--text3);font-size:11px;transition:color 0.1s;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.folder-row:hover{color:var(--text2);}
.folder-body{display:none;} .folder-body.o{display:block;}
.thread-row{padding:4px 11px 4px 30px;cursor:pointer;color:var(--text3);font-size:12px;display:flex;align-items:center;gap:5px;transition:all 0.1s;border-left:2px solid transparent;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.thread-row:hover{color:var(--text2);background:rgba(255,255,255,0.02);}
.thread-row.act{color:var(--accent);border-left-color:var(--accent2);background:var(--accent-glow);}
.thread-row.branch{padding-left:37px;}
.thread-row.pod-thread{padding-left:36px;}
.th-menu-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:16px;height:16px;display:none;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text3);font-size:14px;cursor:pointer;border-radius:3px;padding:0;line-height:1;}
.thread-row:hover .th-menu-btn{display:flex;}
.th-menu-btn:hover{background:var(--bg3);color:var(--text);}
.th-ctx-menu{position:fixed;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;padding:4px 0;z-index:1000;box-shadow:0 8px 32px rgba(0,0,0,0.5);min-width:200px;}
.th-ctx-item{padding:7px 13px;cursor:pointer;font-size:12px;color:var(--text2);display:flex;align-items:center;gap:8px;}
.th-ctx-item:hover{background:var(--bg4);color:var(--text);}
.th-ctx-item.th-ctx-danger{color:#e0665a;border-top:1px solid var(--border);margin-top:2px;padding-top:8px;}
.th-ctx-item.th-ctx-danger:hover{background:rgba(224,102,90,0.12);color:#e0665a;}
.th-ctx-header{padding:6px 12px 5px;font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;border-bottom:1px solid var(--border);margin-bottom:2px;}
.folder-menu-btn{width:16px;height:16px;display:none;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text3);font-size:14px;cursor:pointer;border-radius:3px;padding:0;line-height:1;flex-shrink:0;}
.folder-row:hover .folder-menu-btn{display:flex;}
.folder-menu-btn:hover{background:var(--bg3);color:var(--text);}
/* Touch no tiene :hover — el botón "⋮" quedaba invisible hasta un primer tap
   (que además ya disparaba selectThread/tgFolder), obligando a un segundo
   tap confuso. En dispositivos sin hover real, mostrarlo siempre. */
@media (hover:none){
  .th-menu-btn,.folder-menu-btn{display:flex;}
}
/* ——— Mantener-presionado para mover (Finder-style, Pointer Events) ——— */
.thread-row,.folder-row{touch-action:pan-y;} /* deja scroll vertical normal; el long-press captura el gesto */
/* El transform NO va aquí — se pilotea desde JS (translate según el dedo +
   scale) para que la fila SIGA visualmente al puntero durante el drag; si
   quedara fijo en la regla estática, la fila se ve "atrapada" en su sitio
   original con solo un efecto de sombra, sin ninguna señal de que se puede
   mover libremente a otra parte (reportado: "un frame... esto solo
   funciona si el hilo se puede desplazar libremente", 2026-08-17). */
.thread-row.grabbed,.folder-row.grabbed{box-shadow:0 8px 24px rgba(0,0,0,0.45);z-index:50;position:relative;background:var(--bg3);border-radius:6px;pointer-events:none;}
.folder-body.drop-target,.sb-body.drop-target,.folder-row.drop-target{outline:2px dashed var(--accent2);outline-offset:-2px;border-radius:6px;}
/* Soltar sobre otro thread = va a crear una carpeta con ambos — fondo
   sólido (no solo el contorno punteado de "mover a") para que se note que
   es una acción distinta. */
.thread-row.drop-target{outline:2px dashed var(--accent);outline-offset:-2px;border-radius:6px;background:var(--accent-glow);}
.drag-insert-line{position:fixed;height:2px;background:var(--accent);border-radius:1px;z-index:60;pointer-events:none;display:none;box-shadow:0 0 4px var(--accent);}
.proj-row.drop-target{outline:2px dashed var(--accent2);outline-offset:-2px;border-radius:6px;}
.level-pin{position:fixed;font-size:11px;color:var(--text);background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:3px 9px;pointer-events:none;z-index:1001;box-shadow:0 4px 16px rgba(0,0,0,0.4);white-space:nowrap;}
.branch-sym{font-size:9px;color:var(--text3);}
.pod-label{font-size:11px;font-family:'DM Mono',monospace;color:var(--purple);background:rgba(160,142,196,0.1);padding:1px 4px;border-radius:3px;}
.sb-divider{height:1px;background:var(--border);margin:5px 11px;}
.sb-bottom{padding:7px;border-top:1px solid var(--border);}
.sb-new-chat-wrap{padding:6px 10px 4px;flex-shrink:0;display:flex;gap:6px;}
.sb-new-chat{flex:1 1 0;min-width:0;padding:7px 0;background:var(--accent-solid);color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;letter-spacing:0.2px;transition:filter 0.1s;}
.sb-new-chat:hover{filter:brightness(1.15);}
.sb-new-private{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;padding:6px 0;background:transparent;color:var(--text2);border:1px dashed var(--border2);border-radius:7px;font-size:11.5px;cursor:pointer;transition:all .12s;}
.sb-new-private:hover{color:var(--accent);border-color:var(--accent2);}
.priv-strip{display:none;align-items:center;gap:8px;padding:7px 18px;background:rgba(106,77,255,.10);border-bottom:1px solid var(--border);color:var(--text2);font-size:12px;flex-shrink:0;}
.priv-strip.on{display:flex;}
.priv-strip b{color:var(--text);font-weight:600;}
.thread-row .th-lock{display:inline-flex;opacity:.85;flex-shrink:0;}
.ghost-ic{width:1.05em;height:1.05em;vertical-align:-0.14em;flex-shrink:0;}
.thread-row .th-lock .ghost-ic{width:12px;height:12px;vertical-align:0;}
.priv-toggle.on{color:var(--accent);background:rgba(106,77,255,.16);}
.priv-pop{position:fixed;right:10px;top:calc(var(--sai-top,0px) + var(--top-shift,0px) + 54px);width:min(340px,calc(100vw - 20px));background:var(--bg2);border:1px solid var(--border2);border-radius:14px;padding:14px 15px;box-shadow:0 10px 36px rgba(0,0,0,.4);z-index:400;display:none;color:var(--text2);font-size:12.5px;line-height:1.5;}
.priv-pop.on{display:block;}
.priv-pop h4{margin:0 0 6px;font-size:14px;color:var(--text);font-weight:600;display:flex;align-items:center;gap:7px;}
.priv-pop ul{margin:6px 0 8px 16px;padding:0;}
.priv-pop li{margin:2px 0;}
.priv-pop .pp-note{font-size:11.5px;color:var(--text3);margin-top:4px;}
.priv-pop .pp-actions{display:flex;gap:8px;margin-top:12px;justify-content:flex-end;flex-wrap:wrap;}
.priv-pop .pp-btn{padding:7px 12px;border-radius:8px;border:1px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;font-size:12px;}
.priv-pop .pp-btn.primary{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff;font-weight:600;}
body.sb-collapsed .sb-new-chat-wrap{display:none;}
.pod-card{background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:7px 9px;}
.pod-card-lbl{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);margin-bottom:2px;}
.pod-card-name{font-size:13px;color:var(--accent);font-weight:500;}
.pod-card-id{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);}

/* ——— LIBRARY PANEL ——— */
.lib-section{padding:4px 11px;border-bottom:1px solid var(--border);}
.lib-toggle{display:flex;align-items:center;gap:6px;width:100%;min-height:32px;padding:0;background:none;border:0;color:var(--text3);font:inherit;font-size:11px;font-family:'DM Mono',monospace;text-transform:uppercase;letter-spacing:0.08em;cursor:pointer;text-align:left;}
.lib-toggle:hover{color:var(--text2);}
.lib-chev{display:inline-block;width:10px;transition:transform .15s;}
.lib-toggle[aria-expanded="true"] .lib-chev{transform:rotate(90deg);}
.lib-count{margin-left:auto;color:var(--text3);}
.lib-body{padding:2px 0 6px;max-height:38vh;overflow-y:auto;}
.lib-group{margin-top:8px;}
.lib-acts{display:inline-flex;gap:8px;}
.lib-soon-tag{font-size:10px;text-transform:none;letter-spacing:0;color:var(--text3);border:1px solid var(--border2);border-radius:8px;padding:0 6px;}
.lib-soon .lib-empty{line-height:1.45;}
@media (pointer:coarse){.lib-toggle{min-height:44px;}}
.lib-lbl{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);
  text-transform:uppercase;letter-spacing:0.08em;margin-bottom:5px;
  display:flex;align-items:center;justify-content:space-between;}
.lib-add{background:none;border:none;color:var(--text3);font-size:14px;
  cursor:pointer;padding:0;line-height:1;}
.lib-add:hover{color:var(--accent);}
.lib-item{display:flex;align-items:center;gap:5px;padding:4px 0;
  font-size:11px;color:var(--text2);}
.lib-item-icon{font-size:11px;flex-shrink:0;}
.lib-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lib-item-units{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;flex-shrink:0;}
.lib-item-dots{display:flex;gap:3px;flex-shrink:0;}
.lib-empty{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;
  padding:4px 0;}

/* Upload progress en sidebar */
.lib-uploading{font-size:11px;color:var(--accent2);font-family:'DM Mono',monospace;
  padding:3px 0;animation:pgr 1.5s infinite;}

/* CHAT */
.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.chat-header{padding:9px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:9px;background:var(--bg2);flex-shrink:0;}
.chat-title{font-family:'Space Grotesk',sans-serif;font-size:15px;font-weight:400;color:var(--text);flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.origin-chip{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);padding:2px 7px;border:1px solid var(--border);border-radius:8px;cursor:pointer;display:none;}
.origin-chip:hover{border-color:var(--border2);color:var(--text2);}
.mode-badge{font-size:11px;font-family:'DM Mono',monospace;padding:2px 7px;border-radius:10px;}
.mode-badge.auto{color:var(--accent);background:rgba(58,167,255,0.08);border:1px solid rgba(58,167,255,0.2);}
.mode-badge.normal{color:var(--green);background:rgba(107,170,122,0.1);border:1px solid rgba(107,170,122,0.2);}
.mode-badge.agentic_light{color:var(--blue);background:rgba(107,142,196,0.1);border:1px solid rgba(107,142,196,0.2);}
.mode-badge.agentic_deep{color:var(--amber);background:rgba(106,77,255,0.10);border:1px solid rgba(106,77,255,0.20);}
.mode-badge.enterprise{color:var(--red);background:rgba(196,107,107,0.1);border:1px solid rgba(196,107,107,0.2);}
.realm-chip{font-size:11px;font-family:'DM Mono',monospace;color:var(--purple);background:rgba(160,142,196,0.1);border:1px solid rgba(160,142,196,0.2);padding:2px 7px;border-radius:10px;}

/* MESSAGES */
.messages{flex:1;overflow-y:auto;padding:14px 0;scroll-behavior:smooth;}
.chat-area{position:relative;}
.scroll-nav{position:absolute;right:12px;bottom:calc(var(--scroll-nav-bottom,96px));display:flex;flex-direction:column;gap:8px;z-index:20;opacity:0;pointer-events:none;transition:opacity .18s;}
.scroll-nav.show{opacity:1;pointer-events:auto;}
.scroll-nav button{width:40px;height:40px;border-radius:50%;background:var(--bg2);border:1px solid var(--border2);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.25);-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.scroll-nav button:hover{border-color:var(--accent2);color:var(--accent);}
.scroll-nav svg{width:18px;height:18px;}
/* Tamano de texto por pinch: independiente para el hilo y para el menu de hilos.
   `zoom` escala el texto y recalcula el layout (el contenido se reajusta al ancho
   disponible, no es una ampliacion de pantalla). touch-action deja pasar solo el
   desplazamiento: el pinch lo atiende el JS y no hace zoom de toda la PWA. */
/* Panel de hilos ensanchable hasta +30% (variable --sb-k, 1..1.3) */
.sb-resize{position:absolute;top:0;right:0;bottom:0;width:12px;cursor:col-resize;z-index:6;touch-action:none;-webkit-tap-highlight-color:transparent;}
.sb-resize::after{content:"";position:absolute;top:50%;right:3px;width:3px;height:36px;margin-top:-18px;border-radius:2px;background:var(--text3);opacity:.25;transition:opacity .15s,background .15s;}
.sb-resize:hover::after,.sb-resize.drag::after{opacity:.9;background:var(--accent2);}
body.sb-dragging .sidebar,body.sb-dragging .edge-tab-left{transition:none!important;}
body.sb-dragging{user-select:none;-webkit-user-select:none;cursor:col-resize;}
@media(min-width:769px){body.sb-collapsed .sb-resize{display:none;}}
/* Marquesina: los titulos que no caben se recorren (ida y vuelta, con pausa en los extremos) */
.marq{text-overflow:clip!important;animation:marqScroll var(--marq-dur,6s) ease-in-out infinite alternate;}
@keyframes marqScroll{0%,18%{text-indent:0}82%,100%{text-indent:calc(-1px * var(--marq-dist,0))}}
/* Preferencia propia (Panel de contexto > Pantalla): manda sobre el ajuste del sistema */
html[data-marq="always"] .marq{animation:marqScroll var(--marq-dur,6s) ease-in-out infinite alternate!important;text-overflow:clip!important;}
html[data-marq="never"] .marq{animation:none!important;text-overflow:ellipsis!important;}
.marq-hint{font-size:11px;color:var(--text3);line-height:1.45;}
/* Con "reducir movimiento" no se apaga la lectura del titulo (era la unica forma de verlo completo):
   se recorre solo el hilo activo, el titulo de la cabecera y la fila bajo el cursor, ida y vuelta una sola vez. */
@media (prefers-reduced-motion:reduce){
  .marq{animation:none;text-overflow:ellipsis!important;}
  #roomTitle.marq,.thread-row.act .th-name.marq,.thread-row:hover .th-name.marq,.thread-row:focus-visible .th-name.marq{
    animation:marqScroll var(--marq-dur,6s) ease-in-out 2 alternate;text-overflow:clip!important;}
}
#messages>*{zoom:var(--fs-thread,1);}
#projTree{zoom:var(--fs-side,1);}
#messages,.sidebar{touch-action:pan-x pan-y;}
.fs-toast{position:fixed;left:50%;top:calc(var(--sai-top,0px) + var(--top-shift,0px) + 58px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:7px 12px;border-radius:20px;background:var(--bg2);border:1px solid var(--border2);box-shadow:0 4px 18px rgba(0,0,0,.3);font-size:12px;color:var(--text2);z-index:300;opacity:0;pointer-events:none;transition:opacity .15s;}
.fs-toast.on{opacity:1;pointer-events:auto;}
.fs-toast button{background:none;border:none;color:var(--accent);cursor:pointer;font-size:12px;padding:2px 4px;}
/* Riel de puntos del hilo (clasificacion del Thread KDSA steward) */
.thread-rail{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:30px;max-height:62%;height:62%;display:none;flex-direction:column;justify-content:space-between;align-items:flex-end;z-index:19;padding:4px 0;}
.thread-rail.on{display:flex;}
.chat-area.has-rail .messages{padding-right:24px;}
.rail-tick{flex:1 1 0;min-height:10px;max-height:26px;width:30px;display:flex;align-items:center;justify-content:flex-end;padding:0 4px 0 0;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.rail-tick::before{content:"";display:block;height:2px;width:11px;border-radius:2px;background:var(--text3);opacity:.55;transition:width .14s,opacity .14s,background .14s;}
.rail-tick.hi::before{width:19px;background:var(--accent2);opacity:.85;}
.rail-tick.old::before{opacity:.3;}
.rail-tick:hover::before,.rail-tick.sel::before{width:26px;opacity:1;background:var(--accent);}
.rail-tick.cur::before{background:var(--accent);opacity:1;}
.rail-card{position:absolute;right:38px;width:min(300px,calc(100% - 64px));background:var(--bg2);border:1px solid var(--border2);border-radius:12px;padding:10px 12px;box-shadow:0 6px 24px rgba(0,0,0,.32);z-index:21;display:none;font-size:12.5px;line-height:1.4;color:var(--text2);}
.rail-card.on{display:block;}
.rail-card .rc-top{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
.rail-card .rc-label{font-weight:600;color:var(--text);font-size:13px;flex:1;}
.rail-card .rc-ep{font-family:'DM Mono',monospace;font-size:11px;color:var(--text3);}
.rail-card .rc-sum{margin:2px 0 6px;}
.rail-card .rc-open{margin:2px 0;color:var(--text3);font-size:11.5px;}
.rail-card .rc-open b{color:var(--accent2);font-weight:600;}
.rail-card .rc-tags{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px;}
.rail-card .rc-tags span{font-family:'DM Mono',monospace;font-size:11px;padding:1px 6px;border-radius:8px;background:var(--bg4);color:var(--text3);}
.rail-card .rc-go{margin-top:8px;width:100%;padding:7px;border-radius:8px;background:transparent;border:1px solid var(--border2);color:var(--accent);cursor:pointer;font-size:12px;}
.rail-flash{animation:railFlash 1.4s ease-out;}
@keyframes railFlash{0%{background:rgba(58,167,255,.22)}100%{background:transparent}}
.messages::-webkit-scrollbar{width:4px;}
.messages::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}
.msg-group{padding:7px 18px;position:relative;}
.msg-group:hover{background:rgba(255,255,255,0.01);}
.msg-group:hover .msg-time{opacity:1;}
.msg-group:hover .msg-acts{opacity:1;}
.msg-meta{display:flex;align-items:center;gap:7px;margin-bottom:4px;}
.msg-av{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0;}
.msg-av.user{background:linear-gradient(135deg,var(--accent2),var(--accent));color:var(--bg);}
.msg-av.ai{background:var(--bg4);border:1px solid var(--border2);color:var(--accent);font-size:11px;}
.msg-author{font-size:12px;font-weight:500;color:var(--text2);}
.msg-time{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;opacity:0;transition:opacity 0.15s;}
.msg-axc{font-size:11px;color:var(--accent2);font-family:'DM Mono',monospace;margin-left:auto;}
.escalation-badge{font-size:11px;font-family:'DM Mono',monospace;color:var(--red);background:rgba(196,107,107,0.1);border:1px solid rgba(196,107,107,0.2);padding:1px 5px;border-radius:4px;cursor:pointer;}
.msg-body{padding-left:27px;font-size:14px;line-height:1.7;color:var(--text);}
.msg-body.user{color:var(--text2);}
.msg-body.editing{outline:1px solid var(--accent2);border-radius:4px;padding:4px 6px;margin-left:21px;background:var(--bg3);}
.msg-body code{font-family:'DM Mono',monospace;font-size:12px;background:var(--bg3);border:1px solid var(--border);padding:1px 4px;border-radius:3px;color:var(--accent);}
/* Adjuntos embebidos en la burbuja — quedan visibles después de enviar,
   a diferencia del attach-bar (compose) que se limpia al despachar. */
.msg-attachments{display:flex;flex-wrap:wrap;gap:6px;padding-left:27px;margin-bottom:6px;}
.msg-att-img{max-width:220px;max-height:220px;border-radius:8px;border:1px solid var(--border2);cursor:zoom-in;display:block;object-fit:contain;background:var(--bg2);}
.msg-att-doc{display:flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;border-radius:9px;background:var(--bg3);border:1px solid var(--border2);font-size:11px;color:var(--text2);font-family:'DM Mono',monospace;max-width:200px;}
.msg-att-doc .att-ic{width:28px;height:28px;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:14px;background:var(--accent-glow);border:1px solid var(--border2);color:var(--accent);}
.msg-att-doc .att-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.msg-orq-tag{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;padding-left:27px;margin-top:1px;}
.msg-acts{padding-left:27px;margin-top:4px;display:flex;gap:3px;opacity:0;transition:opacity 0.15s;}
.mact{padding:2px 7px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text3);font-size:11px;cursor:pointer;transition:all 0.15s;font-family:'Space Grotesk',sans-serif;}
.mact:hover{background:var(--bg3);color:var(--text);border-color:var(--border2);}
.mact.branch-btn:hover{color:var(--accent);border-color:var(--accent2);}
.consequence-warn{margin:4px 18px 4px 45px;padding:6px 10px;background:rgba(196,107,107,0.08);border:1px solid rgba(196,107,107,0.2);border-radius:5px;font-size:11px;color:var(--red);font-family:'DM Mono',monospace;}
.consequence-warn.auto{border-color:rgba(106,77,255,0.30);background:rgba(106,77,255,0.06);color:var(--amber);}
.branch-anchor{margin:3px 18px 3px 47px;padding:3px 8px;border-left:2px solid var(--accent2);background:var(--accent-glow);border-radius:0 4px 4px 0;font-size:11px;color:var(--accent2);font-family:'DM Mono',monospace;cursor:pointer;}
.branch-anchor:hover{color:var(--accent);}
.escalation-toast{position:fixed;bottom:80px;right:16px;background:var(--bg3);border:1px solid rgba(196,107,107,0.4);border-radius:8px;padding:12px 14px;width:280px;z-index:50;box-shadow:0 8px 24px rgba(0,0,0,0.5);animation:slideUp 0.2s ease;}
@keyframes slideUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* Pre-send mode advisory — appears above input-box, inline, no page shift */
.mode-pre-advisory{background:var(--bg3);border:1px solid rgba(58,167,255,0.25);border-radius:10px;padding:10px 13px;margin:0 0 8px 0;animation:slideUp 0.18s ease;}
.mpa-text{font-size:12px;color:var(--text2);line-height:1.55;margin-bottom:9px;}
.mpa-text b{color:var(--text);}
.mpa-acts{display:flex;gap:7px;}
.mpa-yes{flex:1;padding:6px 10px;border-radius:6px;font-size:12px;font-family:'Space Grotesk',sans-serif;cursor:pointer;background:rgba(58,167,255,0.12);border:1px solid rgba(58,167,255,0.3);color:var(--accent);font-weight:500;}
.mpa-yes:hover{background:rgba(58,167,255,0.22);}
.mpa-no{flex:1;padding:6px 10px;border-radius:6px;font-size:12px;font-family:'Space Grotesk',sans-serif;cursor:pointer;background:transparent;border:1px solid var(--border2);color:var(--text3);}
.mpa-no:hover{background:var(--bg4);color:var(--text2);}
.toast-title{font-size:12px;font-weight:500;color:var(--text);margin-bottom:5px;}
.toast-text{font-size:11px;color:var(--text2);font-family:'DM Mono',monospace;margin-bottom:10px;border-left:2px solid var(--red);padding-left:7px;}
.toast-acts{display:flex;gap:6px;}
.toast-btn{flex:1;padding:5px;border-radius:5px;font-size:12px;cursor:pointer;font-family:'Space Grotesk',sans-serif;}
.toast-ok{background:rgba(196,107,107,0.15);border:1px solid rgba(196,107,107,0.3);color:var(--red);}
.toast-ok:hover{background:rgba(196,107,107,0.25);}
.toast-no{background:transparent;border:1px solid var(--border2);color:var(--text3);}
.toast-no:hover{background:var(--bg4);color:var(--text2);}
.thinking-ind{padding:7px 18px;padding-left:45px;display:flex;align-items:center;gap:7px;color:var(--text3);font-size:13px;font-style:italic;}
.tdots{display:flex;gap:3px;}
.tdots span{width:4px;height:4px;border-radius:50%;background:var(--accent2);animation:tpl 1.2s infinite;}
.tdots span:nth-child(2){animation-delay:0.2s;} .tdots span:nth-child(3){animation-delay:0.4s;}
@keyframes tpl{0%,100%{opacity:0.3;transform:scale(0.8)}50%{opacity:1;transform:scale(1)}}

/* INPUT */
.input-area{padding:9px 18px 13px;background:var(--bg);border-top:1px solid var(--border);flex-shrink:0;}
.input-box{background:var(--bg2);border:1px solid var(--border2);border-radius:10px;overflow:hidden;transition:border-color 0.2s,box-shadow 0.2s;}
.input-box:focus-within{border-color:var(--accent2);box-shadow:0 0 0 2px rgba(58,167,255,0.10);}
.input-ta{width:100%;background:transparent;border:none;outline:none;color:var(--text);font-family:'Space Grotesk',sans-serif;font-size:14px;line-height:1.6;padding:10px 13px 6px;resize:none;min-height:46px;max-height:120px;overflow-y:auto;}
.input-ta::placeholder{color:var(--text3);}
.input-footer{display:flex;align-items:center;padding:5px 9px;gap:5px;}
.ask-btn{height:29px;padding:0 10px;border-radius:14px;background:transparent;border:1px solid var(--border-ui);color:var(--text2);font:inherit;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;flex-shrink:0;}
.ask-btn span{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--accent-solid);color:#fff;font-size:10px;font-weight:700;}
.input-hint{white-space:nowrap;}
.ask-row{display:flex;padding:6px 2px 0;}
html.kb-open .ask-row{display:none;} /* con el teclado abierto no hay espacio que regalar */
.ask-btn:hover{border-color:var(--accent2);color:var(--text);}
@media (pointer:coarse){.ask-btn{height:36px;}}
.input-hint{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;margin-left:auto;}
.send-btn{width:29px;height:29px;border-radius:6px;background:var(--accent);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--bg);transition:all 0.15s;flex-shrink:0;}
.send-btn:hover{background:#60BBFF;transform:scale(1.05);}
.send-btn:disabled{background:var(--border2);color:var(--text3);cursor:not-allowed;transform:none;}
.mic-btn{width:29px;height:29px;border-radius:6px;background:transparent;border:1px solid var(--border2);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:14px;transition:all 0.15s;flex-shrink:0;}
.mic-btn:hover{border-color:var(--accent2);color:var(--accent);}
.mic-btn.recording{border-color:var(--red);color:var(--red);background:rgba(196,107,107,0.1);animation:recPulse 1s infinite;}
/* ——— ATTACHMENT CHIPS ——— */
.attach-bar{
  display:none;padding:5px 13px 2px;
  flex-wrap:wrap;gap:5px;
  border-top:1px solid var(--border);
}
.attach-bar.has-files{display:flex;}
.attach-chip{
  display:flex;align-items:center;gap:6px;
  padding:4px 8px 4px 4px;border-radius:10px;
  background:var(--bg3);border:1px solid var(--border2);
  font-size:11px;color:var(--text2);font-family:'DM Mono',monospace;
  max-width:200px;position:relative;
}
.attach-chip .chip-icon{font-size:12px;flex-shrink:0;}
/* thumbnail (imágenes) / cuadro de icono (documentos) — estilo Claude/GPT */
.attach-chip .chip-thumb{
  width:34px;height:34px;border-radius:7px;object-fit:cover;
  flex-shrink:0;background:var(--bg2);display:block;
}
.attach-chip .chip-doc{
  width:34px;height:34px;border-radius:7px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;background:var(--accent-glow);
  border:1px solid var(--border2);color:var(--accent);
}
.attach-chip .chip-meta{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1;}
.attach-chip .chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.attach-chip .chip-sub{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:0.04em;}
.attach-chip .chip-rm{
  background:none;border:none;color:var(--text3);
  cursor:pointer;font-size:13px;padding:0 2px;line-height:1;
  flex-shrink:0;
}
.attach-chip .chip-rm:hover{color:var(--red);}
.attach-chip.uploading{opacity:0.7;}
.attach-chip.uploading .chip-thumb,.attach-chip.uploading .chip-doc{filter:grayscale(0.4);}
.attach-chip.error{border-color:var(--red);color:var(--red);}
.attach-chip.error .chip-doc{background:rgba(196,107,107,0.12);color:var(--red);border-color:var(--red);}
.attach-btn{
  width:29px;height:29px;border-radius:6px;background:transparent;
  border:1px solid var(--border2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  color:var(--text3);font-size:15px;transition:all 0.15s;flex-shrink:0;
}
.attach-btn:hover{border-color:var(--accent2);color:var(--accent);}
.attach-btn.has-files{border-color:var(--accent2);color:var(--accent);
  background:var(--accent-glow);}
@keyframes recPulse{0%,100%{box-shadow:0 0 0 0 rgba(196,107,107,0.4)}50%{box-shadow:0 0 0 4px rgba(196,107,107,0)}}

/* CONTEXT PANEL */
.ctx-panel{width:226px;background:var(--bg2);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width 0.22s cubic-bezier(0.4,0,0.2,1);}
.ctx-hdr{padding:10px 13px 8px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.ctx-hdr-title{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);text-transform:uppercase;letter-spacing:0.1em;}
.ctx-body{flex:1;overflow-y:auto;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));}
.ctx-body::-webkit-scrollbar{width:3px;}
.ctx-body::-webkit-scrollbar-thumb{background:var(--border2);}
.ctx-sec{padding:10px 13px;border-bottom:1px solid var(--border);}
.ctx-lbl{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.08em;display:flex;align-items:center;justify-content:space-between;gap:4px;}
.expand-btn{font-size:11px;color:var(--text3);cursor:pointer;padding:1px 4px;border-radius:3px;border:1px solid var(--border);background:transparent;}
.expand-btn:hover{border-color:var(--border2);color:var(--text2);}
.ctx-realm-tag{font-size:11px;font-family:'DM Mono',monospace;color:var(--purple);background:rgba(160,142,196,0.1);border:1px solid rgba(160,142,196,0.15);padding:1px 4px;border-radius:3px;}
.axc-card{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:9px;}
.axc-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;}
.axc-key{font-size:11px;color:var(--text3);}
.axc-val{font-size:11px;font-family:'DM Mono',monospace;color:var(--text2);}
.axc-val.rem{color:var(--accent);}
.axc-bw{height:3px;background:var(--border2);border-radius:2px;overflow:hidden;margin:5px 0;}
.axc-bf{height:100%;background:linear-gradient(90deg,var(--accent2),var(--accent));border-radius:2px;transition:width 0.4s;}
.sav-row{display:flex;justify-content:space-between;align-items:center;padding-top:5px;border-top:1px solid var(--border);margin-top:4px;}
.sav-key{font-size:11px;color:var(--text3);}
.sav-val{font-size:11px;font-family:'DM Mono',monospace;color:var(--green);}
.ctx-tabs{display:flex;gap:3px;}
.ctx-tab{padding:2px 6px;border-radius:4px;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);border:1px solid transparent;cursor:pointer;transition:all 0.15s;background:transparent;}
.ctx-tab:hover{color:var(--text2);}
.ctx-tab.act{color:var(--accent);border-color:var(--border2);background:var(--accent-glow);}
.item-list{max-height:170px;overflow-y:auto;}
.item-list::-webkit-scrollbar{width:3px;}
.item-list::-webkit-scrollbar-thumb{background:var(--border2);}
.ecard{padding:7px 8px;border-radius:5px;background:var(--bg3);border:1px solid var(--border);margin-bottom:4px;cursor:pointer;transition:border-color 0.15s;}
.ecard:hover{border-color:var(--border2);}
.ecard.stale{opacity:0.6;}
.ecard.pinned{border-left:2px solid var(--accent);}
.ecard.invalidated{border-left:2px solid var(--amber);opacity:0.75;}
.ecard-top{display:flex;align-items:center;gap:4px;margin-bottom:3px;}
.ecard-badge{font-size:11px;font-family:'DM Mono',monospace;}
.badge-high{color:var(--red);} .badge-medium{color:var(--amber);} .badge-low{color:var(--text3);}
.badge-current{color:var(--green);} .badge-pinned{color:var(--accent);} .badge-legacy{color:var(--text3);}
.badge-under_review{color:var(--amber);}
.ecard-acts{display:flex;gap:2px;margin-left:auto;}
.ecard-btn{background:none;border:none;cursor:pointer;color:var(--text3);font-size:11px;padding:1px 3px;border-radius:3px;}
.ecard-btn:hover{background:var(--bg4);color:var(--text2);}
.ecard-text{font-size:12px;color:var(--text2);line-height:1.4;margin-bottom:2px;}
.ecard-meta{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;display:flex;align-items:center;gap:5px;}
.rel-bar{height:2px;border-radius:1px;background:var(--border2);overflow:hidden;margin-top:3px;}
.rel-fill{height:100%;border-radius:1px;transition:width 0.3s;}
.rel-high{background:var(--green);} .rel-med{background:var(--amber);} .rel-low{background:var(--text3);}
.decay-badge{font-size:11px;font-family:'DM Mono',monospace;padding:1px 4px;border-radius:3px;background:rgba(196,107,107,0.12);color:var(--red-text);}
.sem-badge{font-size:11px;font-family:'DM Mono',monospace;padding:1px 4px;border-radius:3px;background:rgba(107,142,196,0.12);color:var(--blue);}
.empty-st{font-size:11px;color:var(--text3);text-align:center;padding:13px 0;font-family:'DM Mono',monospace;}

/* FULLSCREEN BOARD */
.board-overlay{position:fixed;inset:0;background:var(--bg);z-index:80;display:none;flex-direction:column;}
.board-overlay.open{display:flex;}
.board-header{height:46px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 18px;gap:10px;flex-shrink:0;}
html.pwa-ios .board-header{box-sizing:content-box;height:46px;padding-top:calc(var(--sai-top,44px) + var(--top-shift,0px));}
.board-title,.board-close{white-space:nowrap;}
@media (max-width:768px){.board-header{padding-left:12px;padding-right:12px;gap:8px;}#boardCount{display:none;}}
.board-title{font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:600;background:linear-gradient(90deg,#3AA7FF,#6A4DFF);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.board-close{margin-left:auto;padding:5px 14px;border-radius:6px;background:transparent;border:1px solid var(--border2);color:var(--text2);cursor:pointer;font-size:13px;font-family:'Space Grotesk',sans-serif;}
.board-close:hover{background:var(--bg3);color:var(--text);}
.board-filters{padding:10px 18px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-shrink:0;}
.bf-search{flex:1;background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:5px 10px;color:var(--text);font-family:'DM Mono',monospace;font-size:12px;outline:none;}
.bf-search:focus{border-color:var(--accent2);}
.bf-search::placeholder{color:var(--text3);}
.bf-sep{width:1px;height:20px;background:var(--border2);}
.bf-btn{padding:4px 9px;border-radius:5px;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);border:1px solid var(--border);background:transparent;cursor:pointer;transition:all 0.15s;}
.bf-btn:hover{border-color:var(--border2);color:var(--text2);}
.bf-btn.act{color:var(--accent);border-color:var(--accent2);background:var(--accent-glow);}
.board-body{flex:1;overflow-y:auto;padding:20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;align-content:start;}
.board-card{background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:13px;transition:border-color 0.15s;}
.board-card:hover{border-color:var(--accent2);}
.board-card.pinned{border-left:3px solid var(--accent);}
.board-card.stale{opacity:0.55;}
.board-card.invalidated{border-left:3px solid var(--amber);opacity:0.8;}
.bc-top{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
.bc-badge{font-size:11px;font-family:'DM Mono',monospace;}
.bc-actions{margin-left:auto;display:flex;gap:4px;}
.bc-btn{background:none;border:none;cursor:pointer;color:var(--text3);font-size:12px;padding:2px 5px;border-radius:3px;}
.bc-btn:hover{background:var(--bg3);color:var(--text2);}
.bc-text{font-size:13px;color:var(--text);line-height:1.5;margin-bottom:8px;}
.bc-meta{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;}
.bc-rel{height:3px;border-radius:2px;background:var(--border);overflow:hidden;margin-top:8px;}

/* MODALS */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.72);display:flex;align-items:center;justify-content:center;z-index:200;animation:resultOverlayIn 0.15s ease;}
.modal-box{background:var(--bg2);border:1px solid var(--border2);border-radius:10px;padding:24px;width:350px;}
.modal-title{font-family:'Space Grotesk',sans-serif;font-size:19px;font-weight:600;background:linear-gradient(90deg,#3AA7FF,#6A4DFF);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:3px;}
.modal-sub{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;margin-bottom:20px;}

/* RESULT MODAL — visor de resultados generados (D-54 follow-up, 2026-08-17):
   reemplaza window.open(_blank) por un visor dentro de la PWA con carrusel
   de todos los gráficos del hilo, descarga, compartir, edición asistida por
   prompt (comentar/aspect-ratio/quitar elemento) y calificación 1-10. */
.result-modal-box{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;padding:0;width:min(720px,94vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden;animation:resultBoxIn 0.22s cubic-bezier(0.16,1,0.3,1);}
@keyframes resultBoxIn{from{opacity:0;transform:scale(0.96) translateY(6px);}to{opacity:1;transform:scale(1) translateY(0);}}
@keyframes resultOverlayIn{from{opacity:0;}to{opacity:1;}}
.result-modal-imgwrap{position:relative;z-index:1;background:#000;display:flex;align-items:center;justify-content:center;min-height:180px;max-height:56vh;overflow:hidden;touch-action:pan-y;}
.result-modal-img{max-width:100%;max-height:56vh;object-fit:contain;display:block;transition:opacity 0.15s ease;animation:resultImgIn 0.18s ease;}
@keyframes resultImgIn{from{opacity:0;transform:scale(0.98);}to{opacity:1;transform:scale(1);}}
/* Overlay de progreso durante edición in-place (ver _runInlineEdit) — el
   resultado del reprompt debe verse aparecer EN el modal, nunca fuera de
   vista (2026-08-18). */
.result-modal-busy{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;font-size:12px;z-index:4;text-align:center;padding:0 20px;}
.result-spinner{width:26px;height:26px;border:3px solid rgba(255,255,255,0.25);border-top-color:#fff;border-radius:50%;animation:resultSpin 0.7s linear infinite;}
@keyframes resultSpin{to{transform:rotate(360deg);}}
.result-modal-box.editing .result-modal-actions{pointer-events:none;opacity:0.5;}
.result-modal-box.editing .result-modal-nav{pointer-events:none;opacity:0.3;}
.result-modal-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.55);color:#fff;border:none;width:34px;height:34px;border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.15s,transform 0.1s;}
.result-modal-nav:hover{background:rgba(0,0,0,0.75);}
.result-modal-nav:active{transform:translateY(-50%) scale(0.9);}
.result-modal-nav.prev{left:8px;}
.result-modal-nav.next{right:8px;}
.result-modal-counter{position:absolute;top:8px;right:8px;background:rgba(0,0,0,0.55);color:#fff;font-size:11px;padding:2px 8px;border-radius:10px;font-family:'DM Mono',monospace;}
.result-modal-close{position:absolute;top:8px;left:8px;background:rgba(0,0,0,0.55);color:#fff;border:none;width:28px;height:28px;border-radius:50%;font-size:15px;cursor:pointer;z-index:2;transition:background 0.15s,transform 0.1s;}
.result-modal-close:hover{background:rgba(0,0,0,0.75);}
.result-modal-close:active{transform:scale(0.9);}
/* position:relative + z-index explícito — sin esto, .result-modal-imgwrap
   (position:relative, arriba) pinta por encima de esta fila aunque venga
   después en el DOM (regla de stacking: positioned siempre pinta sobre
   static, sin importar el orden) — el menú de compartir, que cuelga de acá,
   quedaba atrapado detrás de la imagen y no era clickeable (2026-08-17). */
.result-modal-actions{position:relative;z-index:2;padding:14px 16px;display:flex;flex-direction:column;gap:9px;overflow-y:auto;}
.result-modal-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.result-modal-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:7px 12px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;transition:border-color 0.15s,background 0.15s,transform 0.1s;}
.result-modal-btn:hover{border-color:var(--accent);background:var(--bg4);}
.result-modal-btn:active{transform:scale(0.96);}
.result-modal-btn:focus-visible,.result-modal-nav:focus-visible,.result-modal-close:focus-visible,.result-crop-ratios button:focus-visible,.result-modal-rating button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.result-modal-btn:disabled{opacity:0.55;cursor:default;transform:none;}
.result-modal-input{flex:1;min-width:140px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:12px;color:var(--text);font-family:inherit;transition:border-color 0.15s;}
.result-modal-input:focus{outline:none;border-color:var(--accent);}
.result-modal-rating{display:flex;gap:3px;flex-wrap:wrap;}
.result-modal-rating button{width:23px;height:23px;border-radius:5px;border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-size:11px;cursor:pointer;padding:0;transition:border-color 0.15s,background 0.15s,transform 0.1s;}
.result-modal-rating button:hover{border-color:var(--accent);}
.result-modal-rating button:active{transform:scale(0.88);}
.result-modal-rating button.active{background:linear-gradient(90deg,#3AA7FF,#6A4DFF);color:#fff;border-color:transparent;}
.result-modal-rating button:disabled{cursor:default;transform:none;}
.result-modal-rating button:disabled:not(.active){opacity:0.4;}
.result-modal-share-wrap{position:relative;}
/* position:fixed + coords calculadas en JS (toggleShareMenu), NO position:
   absolute dentro de .result-modal-share-wrap — ese approach quedaba
   recortado/invisible por el overflow-y:auto de .result-modal-actions (la
   regla CSS de "overflow computado" hace que overflow-x también clipee en
   cuanto overflow-y no es visible), aunque el elemento existiera en el DOM
   y el z-index fuera correcto: el bug real reportado (2026-08-18), no el de
   stacking-order que ya se había corregido antes. */
.result-modal-share-menu{position:fixed;background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:5px;display:flex;flex-direction:column;gap:1px;z-index:210;box-shadow:0 4px 20px rgba(0,0,0,0.4);min-width:140px;opacity:0;transform:scale(0.95) translateY(3px);animation:resultMenuIn 0.14s cubic-bezier(0.16,1,0.3,1) forwards;}
.result-modal-share-menu button{background:none;border:none;color:var(--text);text-align:left;padding:6px 10px;font-size:12px;border-radius:5px;cursor:pointer;transition:background 0.12s;}
.result-modal-share-menu button:hover{background:var(--bg3);}

/* RESULT MODAL — crop/select overlays (2026-08-17, pintado 2026-08-18):
   recorte 100% client-side (canvas, sin llamada a IA) + selección por
   PINTADO ("sombra de selección" con el dedo, no un rectángulo) para
   "quitar elemento" (la eliminación real sigue siendo generativa — sólo la
   SELECCIÓN es dinámica, ver docstring de _runInlineEdit). */
.result-crop-overlay,.result-select-overlay{position:absolute;z-index:5;touch-action:none;}
.result-select-overlay{cursor:cell;}
.result-select-canvas{display:block;touch-action:none;}
.result-crop-box{position:absolute;border:2px solid #fff;box-shadow:0 0 0 9999px rgba(0,0,0,0.55);cursor:move;touch-action:none;}
.result-crop-box.snapped{border-color:var(--accent);}
.result-crop-dims{position:absolute;top:-26px;left:0;background:rgba(0,0,0,0.75);color:#fff;font-size:11px;font-family:'DM Mono',monospace;padding:3px 7px;border-radius:5px;white-space:nowrap;pointer-events:none;}
/* Handle visual de 28px (antes 16px — ilocalizable con el dedo, ver auditoría
   2026-08-17); ::before agranda el hit-area a 44px sin agrandar el punto
   visual más de lo necesario, para no tapar la imagen de más. */
.result-crop-handle{position:absolute;width:28px;height:28px;background:#fff;border:2px solid var(--accent);border-radius:50%;transform:translate(-50%,-50%);touch-action:none;transition:transform 0.1s;}
.result-crop-handle::before{content:'';position:absolute;inset:-8px;}
.result-crop-handle:active{transform:translate(-50%,-50%) scale(1.15);}
.result-crop-handle.tl{top:0;left:0;cursor:nwse-resize;}
.result-crop-handle.tr{top:0;left:100%;cursor:nesw-resize;}
.result-crop-handle.bl{top:100%;left:0;cursor:nesw-resize;}
.result-crop-handle.br{top:100%;left:100%;cursor:nwse-resize;}
.result-crop-ratios{display:flex;gap:6px;flex-wrap:wrap;}
.result-crop-ratios button{background:var(--bg3);border:1px solid var(--border);color:var(--text2);border-radius:7px;padding:5px 10px;font-size:11px;cursor:pointer;transition:border-color 0.15s,color 0.15s,background 0.15s,transform 0.1s;}
.result-crop-ratios button:hover{border-color:var(--accent2);}
.result-crop-ratios button:active{transform:scale(0.94);}
.result-crop-ratios button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-glow);}
.result-select-menu{position:absolute;z-index:6;background:var(--bg2);border:1px solid var(--border2);border-radius:9px;padding:8px;box-shadow:0 6px 24px rgba(0,0,0,0.5);display:flex;flex-direction:column;gap:6px;min-width:200px;opacity:0;transform:scale(0.94) translateY(4px);animation:resultMenuIn 0.14s cubic-bezier(0.16,1,0.3,1) forwards;}
@keyframes resultMenuIn{to{opacity:1;transform:scale(1) translateY(0);}}
.result-select-menu input{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px;color:var(--text);font-family:inherit;width:100%;box-sizing:border-box;transition:border-color 0.15s;}
.result-select-menu input:focus{outline:none;border-color:var(--accent);}
.result-select-menu .rsm-row{display:flex;gap:6px;}
.result-select-menu button{flex:1;background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:11px;cursor:pointer;transition:border-color 0.15s,background 0.15s,transform 0.1s;}
.result-select-menu button:hover{border-color:var(--accent2);}
.result-select-menu button:active{transform:scale(0.95);}
.result-select-menu button.primary{background:linear-gradient(90deg,#3AA7FF,#6A4DFF);color:#fff;border-color:transparent;}
.result-select-menu button:focus-visible,.result-modal-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}

.fg{margin-bottom:13px;}
.fl{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:4px;display:block;}
.fi{width:100%;background:var(--bg3);border:1px solid var(--border2);border-radius:5px;padding:7px 10px;color:var(--text);font-family:'DM Mono',monospace;font-size:13px;outline:none;}
.fi:focus{border-color:var(--accent2);}
.fh{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;margin-top:3px;}
.btn-primary{width:100%;padding:9px;background:var(--accent);border:none;border-radius:6px;color:var(--bg);font-size:14px;font-family:'Space Grotesk',sans-serif;font-weight:500;cursor:pointer;transition:all 0.15s;margin-top:6px;}
.btn-primary:hover{background:#60BBFF;}
.btn-primary:disabled{background:var(--border2);color:var(--text3);cursor:not-allowed;}
.branch-modal{position:fixed;inset:0;background:rgba(0,0,0,0.6);display:none;align-items:center;justify-content:center;z-index:150;}
.branch-modal.open{display:flex;}
.branch-box{background:var(--bg2);border:1px solid var(--border2);border-radius:9px;padding:20px;width:310px;}
.branch-from{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;margin-bottom:13px;border-left:2px solid var(--accent2);padding-left:7px;}
.bact{display:flex;gap:7px;margin-top:13px;}
.bsec{flex:1;padding:7px;background:transparent;border:1px solid var(--border2);border-radius:5px;color:var(--text2);font-size:12px;cursor:pointer;font-family:'Space Grotesk',sans-serif;}
.bsec:hover{background:var(--bg3);}
.bacc{flex:1;padding:7px;background:var(--accent-glow);border:1px solid rgba(58,167,255,0.25);border-radius:5px;color:var(--accent);font-size:12px;cursor:pointer;font-family:'Space Grotesk',sans-serif;}
.bacc:hover{background:rgba(58,167,255,0.12);}

/* CLARIFICATION PANEL (#31 / D-35) */
.clarif-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.65);display:none;align-items:flex-end;justify-content:center;z-index:160;padding-bottom:70px;}
.clarif-overlay.open{display:flex;}
.clarif-box{background:var(--bg2);border:1px solid var(--border2);border-radius:12px 12px 0 0;width:100%;max-width:640px;padding:20px 22px 24px;box-shadow:0 -8px 40px rgba(0,0,0,0.6);animation:slideUp 0.22s ease;}
.clarif-header{display:flex;align-items:center;gap:9px;margin-bottom:14px;}
.clarif-icon{font-size:16px;}
.clarif-title{font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:400;color:var(--accent);flex:1;}
.clarif-close{background:none;border:none;color:var(--text3);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:4px;}
.clarif-close:hover{background:var(--bg3);color:var(--text);}
.clarif-intent{font-size:12px;color:var(--text3);font-family:'DM Mono',monospace;border-left:2px solid var(--border2);padding:4px 9px;margin-bottom:16px;line-height:1.5;}
.clarif-q-block{margin-bottom:14px;}
.clarif-q-label{font-size:11px;font-family:'DM Mono',monospace;color:var(--text2);margin-bottom:7px;display:flex;align-items:center;gap:6px;}
.clarif-q-req{font-size:11px;color:var(--red);background:rgba(196,107,107,0.12);padding:1px 4px;border-radius:3px;}
.clarif-opts{display:flex;flex-wrap:wrap;gap:6px;}
.clarif-opt{padding:6px 13px;border-radius:20px;border:1px solid var(--border2);background:transparent;color:var(--text2);font-size:12px;cursor:pointer;transition:all 0.15s;font-family:'Space Grotesk',sans-serif;}
.clarif-opt:hover{border-color:var(--accent2);color:var(--accent);background:var(--accent-glow);}
.clarif-opt.selected{border-color:var(--accent);color:var(--accent);background:var(--accent-glow);}
.clarif-opt-free{flex:1;min-width:200px;background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:6px 10px;color:var(--text);font-family:'Space Grotesk',sans-serif;font-size:13px;outline:none;}
.clarif-opt-free:focus{border-color:var(--accent2);}
.clarif-footer{display:flex;gap:8px;margin-top:16px;}
.clarif-send{flex:1;padding:9px;background:var(--accent);border:none;border-radius:6px;color:var(--bg);font-size:14px;font-family:'Space Grotesk',sans-serif;font-weight:500;cursor:pointer;transition:all 0.15s;}
.clarif-send:hover{background:#60BBFF;}
.clarif-send:disabled{background:var(--border2);color:var(--text3);cursor:not-allowed;}
.clarif-skip{padding:9px 16px;background:transparent;border:1px solid var(--border2);border-radius:6px;color:var(--text3);font-size:13px;cursor:pointer;font-family:'Space Grotesk',sans-serif;}
.clarif-skip:hover{background:var(--bg3);color:var(--text2);}
.clarif-gap-type{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);margin-left:auto;padding:1px 4px;border-radius:3px;background:var(--bg3);}

/* WELCOME */
.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;position:relative;overflow:hidden;}
.welcome::before{content:'';position:absolute;inset:0;background:
  radial-gradient(ellipse 60% 40% at 50% 50%, rgba(58,167,255,0.04) 0%, transparent 70%),
  radial-gradient(ellipse 40% 60% at 30% 60%, rgba(106,77,255,0.03) 0%, transparent 60%);
  pointer-events:none;}
.w-mono{height:68px;width:82px;display:block;margin:0 auto 14px;}
.w-mono.sm{height:44px;width:53px;margin:0 auto 10px;}
.w-wordmark{height:34px;width:103px;display:block;margin:0 auto 6px;color:var(--text);}
.w-logo{font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:500;color:var(--text);letter-spacing:-0.01em;margin:8px 0 4px;}
.w-tagline{font-size:11px;font-family:'Space Grotesk',sans-serif;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;margin-bottom:10px;background:linear-gradient(90deg,#4DB2F7,#6532F2);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.w-sub{font-size:12px;color:var(--text3);font-family:'DM Mono',monospace;margin-bottom:7px;}
.w-pod{font-size:11px;color:var(--text2);font-family:'DM Mono',monospace;padding:3px 11px;border:1px solid var(--border2);border-radius:9px;margin-bottom:24px;}

@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.msg-group{animation:fadeIn 0.2s ease;}
*{scrollbar-width:thin;scrollbar-color:var(--border2) transparent;}

/* ——— TOUCH GLOBAL ——— */
button,[onclick]{touch-action:manipulation;-webkit-tap-highlight-color:transparent;}

/* ——— HAMBURGER (solo mobile) ——— */
.mob-menu-btn{display:none;width:40px;height:40px;align-items:center;justify-content:center;border-radius:8px;border:none;background:transparent;color:var(--text2);font-size:18px;cursor:pointer;flex-shrink:0;}
.mob-menu-btn:hover,.mob-menu-btn:active{background:var(--bg3);}

/* ——— OVERLAY DRAWER ——— */
.mob-overlay{display:none;position:fixed;inset:0;top:48px;background:rgba(0,0,0,0.45);z-index:39;backdrop-filter:blur(2px);}
body.sb-open .mob-overlay,body.ctx-open-mob .mob-overlay{display:block;}

/* ——— EDGE TABS ——— */
.edge-tab{
  position:fixed;top:50%;transform:translateY(-50%);
  z-index:46;
  background:var(--bg2);border:1px solid var(--border);
  width:14px;height:52px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--text3);
  transition:left 0.22s cubic-bezier(0.4,0,0.2,1),
             right 0.22s cubic-bezier(0.4,0,0.2,1),
             color 0.15s, border-color 0.15s, background 0.15s;
  user-select:none;
}
.edge-tab:hover,.edge-tab:active{color:var(--accent);border-color:var(--accent2);background:var(--bg3);}

/* Left tab — derecho del sidebar */
.edge-tab-left{
  left:calc(220px * var(--sb-k,1));
  border-left:none;border-radius:0 8px 8px 0;
}
/* Right tab — izquierdo del ctx-panel */
.edge-tab-right{
  right:226px;
  border-right:none;border-radius:8px 0 0 8px;
}

/* ——— DESKTOP: COLLAPSE VIA BODY CLASS ——— */
body.sb-collapsed .sidebar{width:0;border-right:none;}
body.sb-collapsed .edge-tab-left{left:0;}
body.ctx-collapsed .ctx-panel{width:0;border-left:none;}
body.ctx-collapsed .edge-tab-right{right:0;}

/* ——— TABLET (769–1024px) ——— */
@media(max-width:1024px){
  .sidebar{width:calc(190px * var(--sb-k,1));}
  .ctx-panel{width:200px;}
  .edge-tab-left{left:calc(190px * var(--sb-k,1));}
  .edge-tab-right{right:200px;}
  body.sb-collapsed .edge-tab-left{left:0;}
  body.ctx-collapsed .edge-tab-right{right:0;}
  .topbar-pod{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
}

/* ——— MOBILE (≤ 768px) ——— */
@media(max-width:768px){
  /* Topbar compacto */
  .mob-menu-btn{display:flex;}
  .topbar{padding:0 10px;gap:6px;}
  .topbar-sep,#realmSel,.topbar-pod,#connLabel{display:none!important;}
  .topbar-logo .qx-wordmark{display:none;}
  /* Barra compacta: 5 iconos de 28px caben desde 360px; el saldo y la conexion pasan a la fila del titulo (ver JS mobBalance) */
  .topbar{gap:4px;}
  .topbar-right{gap:2px;}
  .topbar-right .icon-btn{width:28px;min-width:28px;}
  #orqSel{padding:3px 8px;}
  .chat-header #modeTag{display:none;}   /* duplica el selector de modo de la barra */
  .mob-balance{display:flex;align-items:center;gap:6px;flex-shrink:0;}
  .mob-balance .axc-pill{padding:2px 8px;gap:5px;font-size:11px;}
  .mob-balance .axc-bar{display:none;}
  .mob-balance #topAxcLabel,.mob-balance #topAxgLabel{font-size:11px!important;}

  /* Sidebar → drawer desde izquierda */
  .sidebar{
    position:fixed;top:48px;left:0;bottom:0;
    z-index:40;width:min(calc(270px * var(--sb-k,1)), calc(100vw - 36px));
    transform:translateX(-100%);
    transition:transform 0.22s cubic-bezier(0.4,0,0.2,1);
    box-shadow:none;  /* cerrado: fuera de pantalla no debe proyectar sombra sobre la barra superior ni el borde */
  }
  body.sb-open .sidebar{transform:translateX(0);box-shadow:4px 0 32px rgba(0,0,0,0.35);}
  /* La barra superior siempre por encima de los paneles tipo cajon */
  .topbar{position:relative;z-index:48;}
  /* Override desktop collapse on mobile */
  body.sb-collapsed .sidebar{width:min(calc(270px * var(--sb-k,1)), calc(100vw - 36px));}

  /* Edge tab izquierdo — en borde de pantalla cuando cerrado */
  .edge-tab-left{left:0;border-radius:0 8px 8px 0;}
  body.sb-open .edge-tab-left{left:min(calc(270px * var(--sb-k,1)), calc(100vw - 36px));}
  body.sb-collapsed .edge-tab-left{left:0;}

  /* Context panel → bottom sheet */
  .ctx-panel{
    position:fixed;bottom:0;left:0;right:0;
    width:100%!important;max-height:65vh;
    border-left:none;border-top:1px solid var(--border);
    border-radius:16px 16px 0 0;
    z-index:35;
    transform:translateY(100%);
    transition:transform 0.25s cubic-bezier(0.4,0,0.2,1);
  }
  body.ctx-open-mob .ctx-panel{transform:translateY(0);display:flex!important;z-index:45;}
  body.ctx-collapsed .ctx-panel{width:100%!important;}

  /* Handle bar del bottom sheet */
  .ctx-hdr::before{content:'';display:block;width:36px;height:4px;border-radius:2px;background:var(--border2);position:absolute;top:8px;left:50%;transform:translateX(-50%);}
  .ctx-hdr{position:relative;padding-top:22px;}

  /* Edge tab derecho → floating en borde derecho, medio de pantalla */
  .edge-tab-right{
    right:0;top:55%;
    border-right:none;border-radius:8px 0 0 8px;
    /* más visible en mobile — poca área de tap si es 14px */
    width:16px;height:60px;
  }
  body.ctx-open-mob .edge-tab-right{opacity:0;pointer-events:none;}
  body.ctx-collapsed .edge-tab-right{right:0;}

  /* Chat area ocupa todo */
  .chat-area{width:100%;}

  /* Touch targets mínimo 40–44px */
  .icon-btn{width:40px;height:40px;font-size:16px;}
  .send-btn{width:42px;height:42px;border-radius:10px;}
  .mic-btn{width:40px;height:40px;}
  .pill-sel{padding:7px 10px;min-height:36px;}
  .drop-item{padding:13px 14px;}
  .mact{padding:5px 10px;font-size:12px;}
  .ecard-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;}

  /* Prevenir zoom en iOS — font-size ≥ 16px en inputs */
  .input-ta{font-size:16px;}
  .fi{font-size:16px;}
  select.fi{font-size:16px;}

  /* Safe area home bar */
  .input-area{padding-bottom:calc(13px + env(safe-area-inset-bottom,0px));}

  /* Mensajes */
  .msg-group{padding:6px 12px;}
  .msg-body{padding-left:22px;}
  .msg-acts{padding-left:22px;}
  .msg-orq-tag{padding-left:22px;}
  .chat-header{padding:8px 12px;gap:7px;}
  .chat-title{font-size:13px;}

  /* Modals → bottom sheet */
  .modal-overlay{align-items:flex-end;padding:0;}
  .modal-box{width:100%!important;max-width:100%!important;border-radius:20px 20px 0 0!important;max-height:92vh;overflow-y:auto;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));}
  .branch-modal{align-items:flex-end;}
  .branch-box{width:100%;border-radius:20px 20px 0 0;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));}
  .clarif-box{border-radius:20px 20px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));}

  /* Board */
  .board-body{grid-template-columns:1fr;padding:12px;gap:10px;}
  .board-filters{flex-wrap:wrap;gap:6px;}

  /* Toast */
  .escalation-toast{left:12px;right:12px;width:auto;bottom:calc(80px + env(safe-area-inset-bottom,0px));}
  .mode-pre-advisory{margin:0 0 6px 0;}

  /* Welcome */
  .welcome{padding:28px 16px;}
  .w-mono{height:56px;width:67px;}
  .w-wordmark{height:28px;width:85px;}
  .w-logo{font-size:20px;}
  .w-tagline{font-size:11px;letter-spacing:0.16em;}
}

/* Mobile landscape */
@media(max-width:768px) and (orientation:landscape){
  .ctx-panel{max-height:78vh;}
  .modal-box{max-height:85vh;}
  .w-mono{height:40px;width:48px;}
}

/* ——— iOS PWA STANDALONE — safe-area fixes ——— */
/*
  html.pwa-ios lo añade el script síncrono en <head> antes del primer render.
  --sai-top y --sai-bottom se resuelven con env() por el motor CSS.
  Alta especificidad (html.pwa-ios selector) para ganar a cualquier media query.
*/

/* Body: usa variable de altura dinámica seteada por JS */
html.pwa-ios, html.pwa-ios body{
  height: var(--app-height, 100dvh);
  overflow: hidden;
}
/* Ancla el layout al viewport: iOS puede desplazar el documento (teclado, gestos,
   cambio de orientacion) y dejar el topbar bajo la barra de estado, inalcanzable. */
html.pwa-ios body{
  position: fixed;
  top: var(--app-top, 0px);
  left: 0;
  right: 0;
  width: 100%;
  overscroll-behavior: none;
}
/* Con el teclado abierto el home indicator ya no esta debajo: sin hueco extra */
html.pwa-ios.kb-open .input-area{padding-bottom:10px !important;}
/* iOS 26 dibuja un desenfoque progresivo ("scroll edge effect") sobre el borde superior de las PWA
   instaladas. WebKit lo omite cuando lo que toca ese borde es una caja fixed/sticky de ancho completo,
   opaca y de mas de 10px (reportado por varios proyectos; no hay meta ni propiedad que lo apague).
   Por eso la barra superior es FIXED en modo PWA (antes era flujo normal dentro de un body fijo) y el
   contenido se desplaza con un margen igual a su alto. top usa --app-top (visualViewport) para seguir
   al teclado como el body. Ver memoria pod-pwa-input-incident-2026-10. */
html.pwa-ios .topbar{position:fixed;top:var(--app-top,0px);left:0;right:0;z-index:50;touch-action:manipulation;}
html.pwa-ios .app-body{margin-top:calc(48px + var(--sai-top,44px) + var(--top-shift,0px));}

/* Topbar: padding-top empuja contenido bajo el status bar (notch / Dynamic Island)
   La background del topbar llena el espacio del status bar automáticamente */
html.pwa-ios .topbar{
  padding-top: calc(var(--sai-top, 44px) + var(--top-shift, 0px)) !important;
  height: calc(48px + var(--sai-top, 44px) + var(--top-shift, 0px)) !important;
  align-items: flex-end; /* alinea iconos al bottom del topbar extendido */
  padding-bottom: 6px;
}

/* Input area: padding bottom sobre el home indicator */
html.pwa-ios .input-area{
  padding-bottom: calc(14px + var(--sai-bottom, 34px)) !important;
}

/* Sidebar: también respeta el safe-area top en standalone */
html.pwa-ios .sidebar{
  padding-top: calc(var(--sai-top, 44px) + var(--top-shift, 0px));
}

/* Modales y overlays en iOS PWA */
html.pwa-ios .modal-box,
html.pwa-ios .branch-box,
html.pwa-ios .clarif-box{
  padding-bottom: calc(24px + var(--sai-bottom, 34px)) !important;
}

/* ——— TUTORIAL OVERLAY ——— */
.tut-backdrop{
  position:fixed;inset:0;z-index:500;
  display:none;  /* oculto por defecto — display controla visibilidad total */
}
.tut-backdrop.active{display:block;}
/* Overlay oscuro — solo visual, el click lo maneja el backdrop */
.tut-mask{
  position:absolute;inset:0;  /* absolute dentro del backdrop, no fixed */
  background:rgba(5,7,11,0.82);
  pointer-events:none;  /* el backdrop maneja los clicks, no el mask */
}
.tut-tooltip{
  position:fixed;z-index:502;
  background:var(--bg2);border:1px solid var(--accent2);
  border-radius:12px;padding:14px 16px;
  max-width:300px;min-width:220px;
  box-shadow:0 8px 32px rgba(0,0,0,0.5),0 0 0 1px rgba(58,167,255,0.1);
  animation:tutPop 0.25s cubic-bezier(0.34,1.56,0.64,1);
  pointer-events:all;  /* tooltip captura sus propios clicks */
}
@keyframes tutPop{from{opacity:0;transform:scale(0.88)}to{opacity:1;transform:scale(1)}}
.tut-step-lbl{font-size:11px;font-family:'DM Mono',monospace;color:var(--accent2);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.08em;}
.tut-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:5px;line-height:1.3;}
.tut-desc{font-size:12px;color:var(--text2);line-height:1.55;margin-bottom:12px;}
.tut-arrow{
  position:fixed;z-index:503;
  font-size:22px;
  animation:tutBounce 0.9s ease-in-out infinite;
  pointer-events:none;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,0.5));
}
@keyframes tutBounce{0%,100%{transform:translate(0,0)}50%{transform:translate(0,-6px)}}
.tut-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.tut-progress{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);}
.tut-next,.tut-skip{white-space:nowrap;}
.tut-next{padding:6px 14px;background:var(--accent-solid);border:none;border-radius:6px;color:#fff;font-size:12px;font-weight:600;cursor:pointer;font-family:'Space Grotesk',sans-serif;transition:background 0.15s;}
.tut-next:hover{background:#60BBFF;}
.tut-skip{background:none;border:1px solid var(--border2);border-radius:6px;color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:'Space Grotesk',sans-serif;padding:6px 12px;transition:border-color 0.15s,color 0.15s;}
.tut-skip:hover{border-color:var(--text3);color:var(--text);}
/* "Saber más" expandable detail */
.tut-more{
  display:none;background:none;border:none;
  color:var(--accent2);font-size:11px;font-family:'DM Mono',monospace;
  cursor:pointer;padding:0;margin-top:8px;margin-bottom:2px;
  letter-spacing:0.04em;
}
.tut-more.visible{display:block;}
.tut-more:hover{color:var(--accent);}
.tut-detail{
  display:none;margin-top:6px;
  padding:9px 11px;
  background:rgba(58,167,255,0.05);
  border:1px solid rgba(58,167,255,0.14);
  border-radius:7px;
  font-size:11px;color:var(--text3);line-height:1.6;
  max-height:200px;overflow-y:auto;
}
.tut-detail.open{display:block;}
.tut-detail{max-height:min(260px,36vh);}
.tut-video{margin:0 0 9px;border-radius:7px;overflow:hidden;background:#000;}
.tut-video video{display:block;width:100%;max-height:150px;background:#000;}
.tut-video-cap{font-size:11px;color:var(--text3);padding:4px 8px;background:var(--bg3);font-family:'DM Mono',monospace;}
.tut-detail b{color:var(--text2);font-weight:600;}
.tut-detail p{margin-bottom:7px;}
.tut-detail p:last-child{margin-bottom:0;}

/* Spotlight ring alrededor del target */
.tut-ring{
  position:fixed;z-index:501;
  border:2px solid var(--accent);
  border-radius:10px;
  pointer-events:none;
  box-shadow:0 0 0 3px rgba(58,167,255,0.15);
  transition:all 0.35s cubic-bezier(0.4,0,0.2,1);
  animation:tutRingPulse 2s ease-in-out infinite;
}
@keyframes tutRingPulse{0%,100%{box-shadow:0 0 0 3px rgba(58,167,255,0.15)}50%{box-shadow:0 0 0 6px rgba(58,167,255,0.05)}}

/* ——— VOICE MODE ——— */
.voice-overlay{
  position:fixed;inset:0;z-index:400;
  background:var(--bg);
  display:none;flex-direction:column;align-items:center;justify-content:center;
  gap:32px;
}
.voice-overlay.active{display:flex;}
.voice-waveform{display:flex;align-items:center;gap:5px;height:80px;}
.voice-bar{
  width:5px;border-radius:3px;
  background:linear-gradient(to top,var(--violet),var(--accent));
  animation:vBar 1.1s ease-in-out infinite;
  transform-origin:bottom;
}
.voice-bar:nth-child(1){height:20%;animation-delay:0s;}
.voice-bar:nth-child(2){height:50%;animation-delay:0.1s;}
.voice-bar:nth-child(3){height:80%;animation-delay:0.2s;}
.voice-bar:nth-child(4){height:60%;animation-delay:0.15s;}
.voice-bar:nth-child(5){height:100%;animation-delay:0.05s;}
.voice-bar:nth-child(6){height:70%;animation-delay:0.25s;}
.voice-bar:nth-child(7){height:40%;animation-delay:0.1s;}
.voice-bar:nth-child(8){height:90%;animation-delay:0.3s;}
.voice-bar:nth-child(9){height:55%;animation-delay:0.08s;}
.voice-bar:nth-child(10){height:30%;animation-delay:0.18s;}
.voice-bar:nth-child(11){height:75%;animation-delay:0.12s;}
.voice-bar:nth-child(12){height:45%;animation-delay:0.22s;}
@keyframes vBar{
  0%,100%{transform:scaleY(0.3);opacity:0.5}
  50%{transform:scaleY(1);opacity:1}
}
.voice-overlay.listening .voice-bar{animation-duration:0.5s;}
.voice-overlay.speaking .voice-bar{
  background:linear-gradient(to top,var(--accent),#60BBFF);
  animation-duration:0.7s;
}
.voice-status{font-size:16px;font-weight:500;color:var(--text2);font-family:'Space Grotesk',sans-serif;letter-spacing:0.02em;}
.voice-dl-wrap{width:220px;display:none;}
.voice-dl-wrap.visible{display:block;}
.voice-dl-label{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);margin-bottom:6px;text-align:center;}
.voice-dl-bar{height:3px;background:var(--border2);border-radius:2px;overflow:hidden;}
.voice-dl-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--violet));border-radius:2px;transition:width 0.3s;}
.voice-transcript{
  font-size:14px;color:var(--text3);font-family:'DM Mono',monospace;
  max-width:320px;text-align:center;line-height:1.6;
  min-height:40px;
}
.voice-close{
  position:absolute;top:24px;right:20px;
  width:44px;height:44px;border-radius:50%;
  background:var(--bg3);border:1px solid var(--border2);
  color:var(--text2);font-size:20px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all 0.15s;
}
.voice-close:hover{background:var(--bg4);color:var(--text);}

/* ——— QUICK ACTIONS PANEL ——— */
.qa-overlay{
  position:fixed;inset:0;z-index:300;
  background:rgba(5,7,11,0.6);backdrop-filter:blur(4px);
  display:none;align-items:flex-end;justify-content:center;
}
.qa-overlay.active{display:flex;}
.qa-sheet{
  width:100%;max-width:480px;
  background:var(--bg2);border-radius:20px 20px 0 0;
  border-top:1px solid var(--border);
  padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px));
  animation:slideUp 0.25s cubic-bezier(0.4,0,0.2,1);
}
.qa-title{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:14px;text-align:center;}
.qa-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.qa-btn{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 8px;border-radius:12px;
  background:var(--bg3);border:1px solid var(--border);
  cursor:pointer;transition:all 0.15s;text-decoration:none;
  color:var(--text2);
}
.qa-btn:hover,.qa-btn:active{background:var(--bg4);border-color:var(--accent2);color:var(--accent);}
.qa-icon{font-size:22px;line-height:1;}
.qa-lbl{font-size:11px;font-family:'Space Grotesk',sans-serif;font-weight:500;text-align:center;line-height:1.2;}
.qa-close-btn{width:100%;margin-top:14px;padding:11px;background:transparent;border:1px solid var(--border2);border-radius:10px;color:var(--text3);font-size:13px;cursor:pointer;font-family:'Space Grotesk',sans-serif;}
.qa-close-btn:hover{background:var(--bg3);color:var(--text2);}

/* ——— COLLAB / SHARED THREAD UI ——— */
.collab-overlay{
  position:fixed;inset:0;z-index:320;
  background:rgba(5,7,11,0.65);backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:20px;
}
.collab-overlay.active{display:flex;animation:collabFadeIn 0.22s ease;}
@keyframes collabFadeIn{from{opacity:0}to{opacity:1}}
.collab-card{
  width:100%;max-width:420px;background:var(--bg2);
  border:1px solid var(--border);border-radius:16px;padding:28px 24px 22px;
  box-shadow:0 16px 48px rgba(0,0,0,0.35);
  animation:collabCardIn 0.28s cubic-bezier(0.16,1,0.3,1);
}
@keyframes collabCardIn{from{opacity:0;transform:translateY(12px) scale(0.98)}to{opacity:1;transform:none}}
.collab-card h2{font-family:'Space Grotesk',sans-serif;font-size:20px;font-weight:600;color:var(--text);margin:0 0 10px;letter-spacing:-0.02em;}
.collab-card p{font-size:14px;line-height:1.45;color:var(--text2);margin:0 0 18px;}
.collab-card label{display:block;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.06em;}
.collab-card input[type=text]{
  width:100%;box-sizing:border-box;padding:10px 12px;border-radius:8px;
  border:1px solid var(--border2);background:var(--bg3);color:var(--text);
  font-size:14px;font-family:'Space Grotesk',sans-serif;margin-bottom:16px;
}
.collab-actions{display:flex;flex-direction:column;gap:8px;}
.collab-btn-primary{
  width:100%;padding:12px;border:none;border-radius:10px;cursor:pointer;
  background:linear-gradient(135deg,var(--accent2),var(--accent));color:#fff;
  font-family:'Space Grotesk',sans-serif;font-size:14px;font-weight:600;
  transition:transform 0.15s,opacity 0.15s;
}
.collab-btn-primary:hover{transform:translateY(-1px)}
.collab-btn-primary:disabled{opacity:0.5;cursor:wait;transform:none}
.collab-btn-ghost{
  width:100%;padding:10px;border:none;background:transparent;cursor:pointer;
  color:var(--text3);font-size:13px;font-family:'Space Grotesk',sans-serif;
}
.collab-btn-ghost:hover{color:var(--text2)}
.collab-err{font-size:13px;color:var(--red,#e85d5d);margin:0 0 12px;display:none}
.shared-banner{
  display:none;padding:8px 14px;background:rgba(58,167,255,0.08);
  border-bottom:1px solid var(--border);font-size:12px;color:var(--text2);
  font-family:'Space Grotesk',sans-serif;text-align:center;
}
.shared-banner.active{display:block}
body.shared-thread-mode .sidebar,
body.shared-thread-mode .ctx-panel,
body.shared-thread-mode #sbEdgeTab,
body.shared-thread-mode #ctxEdgeTab,
body.shared-thread-mode #mobMenuBtn,
body.shared-thread-mode #qaBtn,
body.shared-thread-mode #branchGraphBtn{display:none!important}
body.shared-thread-mode .chat-area{margin:0!important;width:100%!important}
.collab-manage-btn{
  display:none;margin-left:8px;padding:4px 8px;border-radius:6px;
  border:1px solid var(--border2);background:var(--bg3);color:var(--text2);
  font-size:12px;cursor:pointer;font-family:'Space Grotesk',sans-serif;
}
.collab-manage-btn.visible{display:inline-flex;align-items:center;gap:4px}
.collab-manage-btn:hover{border-color:var(--accent2);color:var(--accent)}
.collab-modal-sec{margin-bottom:18px}
.collab-modal-sec h3{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);text-transform:uppercase;letter-spacing:0.08em;margin:0 0 8px}
.collab-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;border-radius:6px;background:var(--bg3);border:1px solid var(--border);margin-bottom:4px}
.collab-row-meta{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace}
.collab-revoke{font-size:11px;padding:4px 8px;border-radius:5px;border:1px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer}
.collab-revoke:hover{border-color:var(--red,#e85d5d);color:var(--red,#e85d5d)}
.qa-status-line{grid-column:1/-1;font-size:11px;color:var(--text3);text-align:center;margin-top:4px;font-family:'DM Mono',monospace}

/* ——— PWA INSTALL BANNER ——— */
.pwa-banner{
  position:fixed;bottom:0;left:0;right:0;z-index:600;
  background:var(--bg2);border-top:1px solid var(--border2);
  padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));
  display:flex;align-items:center;gap:10px;
  box-shadow:0 -4px 24px rgba(0,0,0,0.4);
  animation:slideUp 0.3s cubic-bezier(0.4,0,0.2,1);
}
.pwa-banner-icon{width:36px;height:36px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(135deg,rgba(58,167,255,0.15),rgba(106,77,255,0.15));
  border:1px solid rgba(58,167,255,0.25);
  display:flex;align-items:center;justify-content:center;font-size:18px;}
.pwa-banner-text{flex:1;min-width:0;}
.pwa-banner-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:1px;}
.pwa-banner-sub{font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;}
.pwa-banner-install{
  padding:7px 14px;background:var(--accent);border:none;border-radius:7px;
  color:#fff;font-size:13px;font-weight:600;cursor:pointer;
  font-family:'Space Grotesk',sans-serif;white-space:nowrap;flex-shrink:0;
  transition:background 0.15s;
}
.pwa-banner-install:hover{background:#60BBFF;}
.pwa-banner-close{
  width:28px;height:28px;border-radius:6px;background:transparent;border:none;
  color:var(--text3);font-size:18px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:all 0.15s;
}
.pwa-banner-close:hover{background:var(--bg3);color:var(--text2);}
/* Modal de instrucciones iOS */
.pwa-ios-modal{
  position:fixed;inset:0;z-index:700;
  background:rgba(5,7,11,0.75);backdrop-filter:blur(4px);
  display:flex;align-items:flex-end;justify-content:center;
}
.pwa-ios-box{
  background:var(--bg2);border-radius:20px 20px 0 0;
  border-top:1px solid var(--border2);
  width:100%;max-width:480px;
  padding:8px 24px calc(28px + env(safe-area-inset-bottom,0px));
  animation:slideUp 0.3s cubic-bezier(0.4,0,0.2,1);
}
.pwa-ios-handle{
  width:36px;height:4px;border-radius:2px;background:var(--border2);
  margin:10px auto 18px;
}
.pwa-ios-title{font-size:17px;font-weight:600;color:var(--text);margin-bottom:6px;}
.pwa-ios-sub{font-size:13px;color:var(--text3);margin-bottom:18px;line-height:1.5;}
.pwa-ios-steps{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
.pwa-ios-step{
  display:flex;align-items:center;gap:12px;
  padding:11px 13px;background:var(--bg3);border-radius:10px;
  border:1px solid var(--border);
}
.pwa-ios-step-num{
  width:24px;height:24px;border-radius:50%;flex-shrink:0;
  background:var(--accent-solid);color:#fff;
  font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
}
.pwa-ios-step-text{font-size:13px;color:var(--text2);line-height:1.4;}
.pwa-ios-step-text b{color:var(--text);font-weight:600;}
.pwa-ios-done{
  width:100%;padding:13px;background:var(--accent);border:none;border-radius:10px;
  color:#fff;font-size:15px;font-weight:600;cursor:pointer;
  font-family:'Space Grotesk',sans-serif;transition:background 0.15s;
}
.pwa-ios-done:hover{background:#60BBFF;}

/* ——— TIMESTAMPS RELATIVOS ——— */
.msg-time{cursor:default;position:relative;}
.msg-day-sep{text-align:center;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);padding:8px 18px;display:flex;align-items:center;gap:10px;}
.msg-day-sep::before,.msg-day-sep::after{content:'';flex:1;height:1px;background:var(--border);}

/* Branch badge + inspector */
.msg-branch-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-family:'DM Mono',monospace;color:var(--green);background:rgba(76,175,122,0.10);border:1px solid rgba(76,175,122,0.20);border-radius:8px;padding:1px 7px;cursor:pointer;margin-left:auto;transition:all 0.12s;flex-shrink:0;}
.msg-branch-badge:hover{background:rgba(76,175,122,0.18);}
.msg-branch-inspector{margin:2px 18px 4px 27px;padding:6px 10px;background:var(--bg3);border:1px solid var(--border);border-left:2px solid var(--green);border-radius:6px;display:none;}
.msg-branch-inspector.open{display:block;}
.branch-insp-row{display:flex;align-items:center;gap:8px;padding:5px 0;cursor:pointer;font-size:12px;color:var(--text2);transition:color 0.12s;border-bottom:1px solid var(--border);}
.branch-insp-row:last-child{border-bottom:none;}
.branch-insp-row:hover{color:var(--accent);}

/* Inherited messages */
.msg-inherited-sep{text-align:center;font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);padding:6px 18px;display:flex;align-items:center;gap:8px;}
.msg-inherited-sep::before,.msg-inherited-sep::after{content:'';flex:1;height:1px;background:var(--border2);}
.msg-group.inherited{opacity:0.45;}
.msg-group.inherited .msg-acts,.msg-group.inherited .sel-trigger{display:none!important;}

/* Thread hierarchy */
.thread-row{position:relative;}
.thread-row.branch-l1{padding-left:36px;}
.thread-row.branch-l1::before{content:'⎇';position:absolute;left:22px;top:50%;transform:translateY(-50%);font-size:9px;color:var(--text3);}

/* Decay labels legibles */
.decay-lbl{font-size:11px;font-family:'DM Mono',monospace;padding:1px 5px;border-radius:3px;}
.dl-fresh{color:var(--green);background:rgba(76,175,122,0.10);}
.dl-aging{color:var(--amber);background:rgba(106,77,255,0.10);}
.dl-stale{color:var(--red);background:rgba(224,85,85,0.10);}

/* Ctx search */
.ctx-search{width:100%;background:var(--bg3);border:none;border-bottom:1px solid var(--border);padding:7px 13px;color:var(--text);font-family:'DM Mono',monospace;font-size:11px;outline:none;}
.ctx-search::placeholder{color:var(--text3);}
.ctx-search:focus{border-bottom-color:var(--accent2);}
.ecard.clickable{cursor:pointer;}
.ecard.clickable:hover{border-color:var(--accent2);}

/* ——— SEMANTIC SELECTION TOOLBAR ——— */
.sel-toolbar{
  position:fixed;z-index:600;
  background:var(--bg2);border:1px solid var(--border2);
  border-radius:10px;overflow:hidden;
  box-shadow:0 8px 32px rgba(0,0,0,0.5),0 0 0 1px rgba(58,167,255,0.08);
  animation:tutPop 0.15s cubic-bezier(0.34,1.56,0.64,1);
  min-width:200px;
}
.sel-toolbar-preview{
  font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;
  padding:6px 10px;border-bottom:1px solid var(--border);
  max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  background:var(--bg3);
}
.sel-toolbar-actions{display:flex;flex-wrap:wrap;gap:1px;padding:4px;}
.sel-tb-btn{
  padding:6px 11px;border-radius:6px;border:none;
  background:transparent;font-size:12px;font-weight:500;
  font-family:'Space Grotesk',sans-serif;cursor:pointer;
  transition:all 0.12s;white-space:nowrap;
}
.sel-tb-btn:hover{background:var(--bg3);}
.sel-tb-cp{color:var(--accent);}
.sel-tb-oi{color:var(--amber);}
.sel-tb-br{color:var(--green);}
.sel-tb-cm{color:var(--accent2);}

/* Comment-reprompt inline form */
.sel-comment-form{
  padding:6px 8px 8px;
  border-top:1px solid var(--border);
  display:none;flex-direction:column;gap:6px;
}
.sel-comment-form.open{display:flex;}
.sel-comment-input{
  width:100%;box-sizing:border-box;
  background:var(--bg3);border:1px solid var(--border2);border-radius:7px;
  color:var(--text1);font-size:12px;font-family:'Space Grotesk',sans-serif;
  padding:7px 10px;resize:none;min-height:60px;max-height:120px;outline:none;
  transition:border-color 0.15s;
}
.sel-comment-input:focus{border-color:var(--accent2);}
.sel-comment-form-row{display:flex;gap:6px;align-items:center;justify-content:space-between;}
.sel-comment-badge{
  font-size:11px;color:var(--text3);font-family:'DM Mono',monospace;
  padding:2px 7px;background:var(--bg3);border-radius:99px;
  border:1px solid var(--border);cursor:default;
}
.sel-comment-send{
  padding:5px 14px;border-radius:6px;border:none;
  background:var(--accent2);color:#fff;font-size:12px;font-weight:600;
  font-family:'Space Grotesk',sans-serif;cursor:pointer;transition:opacity 0.12s;
}
.sel-comment-send:hover{opacity:0.85;}
.sel-comment-send:disabled{opacity:0.4;cursor:not-allowed;}
/* Pending batch badge on input bar */
.pending-comments-badge{
  display:none;align-items:center;gap:5px;
  margin:0 8px 6px;padding:6px 12px;
  background:rgba(106,77,255,0.12);
  border:1px solid var(--accent2);border-radius:8px;
  font-size:11px;color:var(--accent2);font-family:'Space Grotesk',sans-serif;
  cursor:pointer;transition:background 0.15s;
}
.pending-comments-badge:hover{background:rgba(106,77,255,0.22);}
.pending-comments-badge.visible{display:flex;}

/* Jump-to-message highlight */
@keyframes jumpHL{0%,100%{background:transparent}20%,65%{background:rgba(58,167,255,0.09);border-radius:6px;}}
.msg-group.jump-hl{animation:jumpHL 1.4s ease;}

/* Message lineage tag */
.msg-lineage{
  font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);
  padding-left:27px;opacity:0.55;margin-top:-2px;
}

/* Thread hierarchy — branch indent */
.thread-row{position:relative;}
.thread-row.branch-l1{padding-left:38px;}
.thread-row.branch-l1::before{
  content:'⎇';position:absolute;left:24px;top:50%;transform:translateY(-50%);
  font-size:11px;color:var(--text3);
}
.thread-row.branch-l2{padding-left:50px;}

/* Thread rename input */
.thread-rename-input{
  flex:1;background:var(--bg3);border:1px solid var(--accent2);
  border-radius:4px;padding:1px 5px;color:var(--text);
  font-size:12px;font-family:'Space Grotesk',sans-serif;outline:none;
}

/* Context panel search */
.ctx-search{
  width:100%;background:var(--bg3);border:none;border-bottom:1px solid var(--border);
  padding:7px 13px;color:var(--text);font-family:'DM Mono',monospace;font-size:11px;
  outline:none;
}
.ctx-search::placeholder{color:var(--text3);}
.ctx-search:focus{border-bottom-color:var(--accent2);}

/* Context card clickable */
.ecard.clickable{cursor:pointer;}
.ecard.clickable:hover{border-color:var(--accent2);}

/* ——— COGNITIVE PROFILE PANEL ——— */
.cp-profile-sec{padding:10px 13px;border-bottom:1px solid var(--border);}
.cp-profile-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px;}
.cp-profile-key{font-size:11px;color:var(--text3);flex-shrink:0;}
.cp-style-sel{background:var(--bg3);border:1px solid var(--border2);border-radius:5px;padding:3px 7px;color:var(--text);font-size:11px;font-family:'DM Mono',monospace;outline:none;cursor:pointer;}
.cp-style-sel:focus{border-color:var(--accent2);}
.cp-bias-range{width:80px;accent-color:var(--accent);}
.cp-apply-btn{padding:4px 10px;border-radius:5px;background:var(--accent-solid);border:none;color:#fff;font-size:11px;font-family:'Space Grotesk',sans-serif;cursor:pointer;transition:background 0.15s;width:100%;margin-top:4px;}
.cp-apply-btn:hover{background:#60BBFF;}
.cp-tag{display:inline-block;font-size:11px;font-family:'DM Mono',monospace;padding:2px 7px;border-radius:8px;margin-right:4px;}
.cp-analytical{color:var(--accent);background:rgba(58,167,255,0.1);}
.cp-creative{color:var(--purple);background:rgba(139,109,255,0.1);}
.cp-pragmatic{color:var(--green);background:rgba(76,175,122,0.1);}
.cp-standard{color:var(--text3);background:var(--bg3);}

/* ——— BRANCH GRAPH FULLSCREEN ——— */
.branch-graph-overlay{position:fixed;inset:0;z-index:200;background:var(--bg);display:none;flex-direction:column;}
.branch-graph-overlay.open{display:flex;}
.branch-graph-hdr{height:46px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 18px;gap:10px;flex-shrink:0;}
.branch-graph-title{font-size:15px;font-weight:600;background:linear-gradient(90deg,#3AA7FF,#6A4DFF);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.branch-graph-body{flex:1;overflow:hidden;position:relative;}
.branch-graph-hdr{position:relative;z-index:5;}
html.pwa-ios .branch-graph-hdr{box-sizing:content-box;height:46px;padding-top:calc(var(--sai-top,44px) + var(--top-shift,0px));}
.bg-list{display:none;}
@media (min-width:701px){
  .branch-graph-overlay{touch-action:none;overscroll-behavior:contain;}
  .branch-graph-body svg{cursor:grab;touch-action:none;}
  .branch-graph-body svg.bg-panning{cursor:grabbing;}
}
.bg-zoom-ctl{position:absolute;right:14px;bottom:14px;display:flex;gap:6px;z-index:4;}
.bg-zoom-ctl button{width:34px;height:34px;border-radius:50%;background:var(--bg2);border:1px solid var(--border2);color:var(--text2);cursor:pointer;font-size:16px;line-height:1;}
@media (max-width:700px){.bg-zoom-ctl{display:none;}}
/* Movil: arbol vertical legible; el pinch escala SOLO .bg-list (--bg-scale), no la pagina */
@media (max-width:700px){
  .branch-graph-overlay{touch-action:pan-x pan-y;overscroll-behavior:contain;}
  .branch-graph-body svg{display:none;}
  .branch-graph-body{overflow-y:auto;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .bg-list{display:block;padding:12px 12px calc(24px + env(safe-area-inset-bottom,0px));font-size:calc(15px * var(--bg-scale,1));min-width:max-content;width:100%;box-sizing:border-box;}
  .bg-row{display:flex;flex-direction:column;justify-content:center;min-height:2.9em;margin:.4em 0;padding:.5em .8em;background:var(--bg3,var(--bg2));border:1px solid var(--border2);border-radius:.6em;cursor:pointer;-webkit-tap-highlight-color:transparent;}
  .bg-row.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
  .bg-row.branch{border-left:3px solid var(--green);}
  .bg-row-name{font-weight:600;color:var(--text);font-size:1em;}
  .bg-row-sub{font-family:'DM Mono',monospace;font-size:.72em;color:var(--text3);margin-top:.15em;}
  .bg-ind{margin-left:calc(1.1em);padding-left:.7em;border-left:1px dashed var(--border2);}
}
.bg-node{cursor:pointer;transition:all 0.15s;}
.bg-node:hover .bg-node-rect{stroke:var(--accent);stroke-width:2;}
.bg-node-rect{rx:8;fill:var(--bg2);stroke:var(--border2);stroke-width:1;}
.bg-node-rect.active{stroke:var(--accent);stroke-width:2;fill:rgba(58,167,255,0.06);}
.bg-node-text{fill:var(--text2);font-family:'Space Grotesk',sans-serif;font-size:12px;}
.bg-node-sub{fill:var(--text3);font-family:'DM Mono',monospace;font-size:9px;}
.bg-edge{stroke:var(--border2);stroke-width:1.5;fill:none;marker-end:url(#arrow);}
.bg-edge.branch{stroke:var(--green);stroke-dasharray:4,3;}

/* ——— KNOWLEDGE PODS PANEL ——— */
.kp-card{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer;transition:border-color 0.15s;}
.kp-card:hover{border-color:var(--accent2);}
.kp-card-hdr{display:flex;align-items:center;gap:8px;margin-bottom:5px;}
.kp-realm-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.kp-realm-personal{background:var(--purple);}
.kp-realm-operational{background:var(--green);}
.kp-realm-research{background:var(--accent);}
.kp-realm-governance{background:var(--amber);}
.kp-card-name{font-size:13px;font-weight:500;color:var(--text);flex:1;}
.kp-card-count{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);}
.kp-card-preview{font-size:11px;color:var(--text3);line-height:1.4;}

/* ——— LIGHT VARS (mixin reutilizable) ——— */
.light-vars{
  --bg:#F8FAFC;--bg2:#FFFFFF;--bg3:#EEF2F8;--bg4:#E4EAF4;
  --border:#D0D9EC;--border2:#BEC9DF;
  --text:#0D1420;--text2:#34476A;--text3:#51647B;
  --accent:#1567AD;--accent2:#0F5499;--accent-glow:rgba(21,103,173,0.08);
  --accent-solid:#1567AD;--border-ui:#657D9A;--red-text:#B83030;
  --green:#267A45;--red:#B83030;--blue:#1567AD;--amber:#5B3FD4;--purple:#5B3FD4;
  --violet:#5B3FD4;
}

/* ——— LIGHT MODE (system — solo sin selección manual) ——— */
@media (prefers-color-scheme: light){
  :root:not([data-theme]){
    --bg:#F8FAFC;--bg2:#FFFFFF;--bg3:#EEF2F8;--bg4:#E4EAF4;
    --border:#D0D9EC;--border2:#BEC9DF;
    --text:#0D1420;--text2:#34476A;--text3:#51647B;
    --accent:#1567AD;--accent2:#0F5499;--accent-glow:rgba(21,103,173,0.08);
    --accent-solid:#1567AD;--border-ui:#657D9A;--red-text:#B83030;
    --green:#267A45;--red:#B83030;--blue:#1567AD;--amber:#5B3FD4;--purple:#5B3FD4;
    --violet:#5B3FD4;
  }
  :root:not([data-theme]) .send-btn{color:#fff;}
  :root:not([data-theme]) .modal-overlay{background:rgba(0,0,0,0.40);}
}

/* ——— LIGHT MODE (forzado por selector) ——— */
:root[data-theme="light"]{
  --bg:#F8FAFC;--bg2:#FFFFFF;--bg3:#EEF2F8;--bg4:#E4EAF4;
  --border:#D0D9EC;--border2:#BEC9DF;
  --text:#0D1420;--text2:#34476A;--text3:#51647B;
  --accent:#1567AD;--accent2:#0F5499;--accent-glow:rgba(21,103,173,0.08);
  --accent-solid:#1567AD;--border-ui:#657D9A;--red-text:#B83030;
  --green:#267A45;--red:#B83030;--blue:#1567AD;--amber:#5B3FD4;--purple:#5B3FD4;
  --violet:#5B3FD4;
}
:root[data-theme="light"] .send-btn{color:#fff;}
:root[data-theme="light"] .modal-overlay{background:rgba(0,0,0,0.40);}

/* Sombras sutiles en modo claro (system + forzado) */
@media (prefers-color-scheme: light){:root:not([data-theme]) .topbar,.topbar-lshadow{box-shadow:0 1px 0 var(--border);}}
:root[data-theme="light"] .topbar{box-shadow:0 1px 0 var(--border);}
:root[data-theme="light"] .input-box{box-shadow:0 1px 3px rgba(0,0,0,0.06);}
:root[data-theme="light"] .ecard{box-shadow:0 1px 2px rgba(0,0,0,0.04);}
:root[data-theme="light"] .board-card{box-shadow:0 1px 3px rgba(0,0,0,0.06);}
:root[data-theme="light"] .modal-box,:root[data-theme="light"] .branch-box{box-shadow:0 8px 32px rgba(0,0,0,0.12);}
:root[data-theme="light"] .clarif-box{box-shadow:0 -4px 24px rgba(0,0,0,0.10);}
@media (prefers-color-scheme: light){:root:not([data-theme]) .input-box{box-shadow:0 1px 3px rgba(0,0,0,0.06);}:root:not([data-theme]) .ecard{box-shadow:0 1px 2px rgba(0,0,0,0.04);}:root:not([data-theme]) .modal-box,:root:not([data-theme]) .branch-box{box-shadow:0 8px 32px rgba(0,0,0,0.12);}}
/* ═══ ACCESIBILIDAD (WCAG 2.2 AA) ═══════════════════════════════════════════
   - Contraste: tokens en :root (text2/text3/accent/--accent-solid) verificados >= 4.5:1.
   - 2.4.7 Foco visible: anillo global; los controles con `outline:none` lo recuperan aqui.
   - 2.5.8 Tamano del objetivo: minimo 24x24 CSS px en controles pequenos.
   - 1.4.11 Contraste de componentes: bordes de campos con --border-ui (>= 3:1).
   - 2.3.3 / movimiento reducido. */
html :is(button,[role="button"],a[href],input,select,textarea,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
html :is(.input-ta,.ctx-search,.thread-rename-input):focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.input-box,.ctx-search,.thread-rename-input,.fi,.result-modal-input,select.fi{border-color:var(--border-ui);}
.ctx-search{border-bottom-color:var(--border-ui);}
.sb-add{min-width:24px;min-height:24px;width:24px;height:24px;}
.lib-add,.expand-btn,.ecard-btn,.mact,.ctx-tab,.icon-btn{min-width:24px;min-height:24px;}
.expand-btn,.ecard-btn,.lib-add{display:inline-flex;align-items:center;justify-content:center;}
.mact,.ctx-tab{display:inline-flex;align-items:center;}
.topbar-pod{min-height:24px;display:inline-flex;align-items:center;}
.edge-tab::after{content:"";position:absolute;top:0;bottom:0;left:-6px;right:-6px;}
@media (prefers-reduced-motion:reduce){
  /* .marq queda fuera: su excepcion (leer titulos largos) se define junto a la marquesina */
  *:not(.marq),*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
  .messages{scroll-behavior:auto;}
}
/* ═══ Ajuste de la barra superior en la PWA de iOS 26 ═══
   iOS 26 desenfoca ~40pt bajo la barra de estado; solo bajar la barra (--top-shift, 44pt por defecto) lo evita.
   Panel oculto (5 toques al monograma) para afinar el valor por dispositivo. Ver memoria pod-pwa-input-incident-2026-10. */
:root{--top-shift:0px;}
#fxPanel{display:none;position:fixed;left:10px;right:10px;top:calc(var(--sai-top,0px) + var(--top-shift,0px) + 56px);max-height:calc(100dvh - var(--sai-top,0px) - var(--top-shift,0px) - 90px);overflow:auto;background:var(--bg2);border:1px solid var(--border-ui);border-radius:14px;padding:14px;z-index:900;color:var(--text2);font-size:12.5px;line-height:1.45;box-shadow:0 10px 36px rgba(0,0,0,.4);}
#fxPanel.on{display:block;}
#fxPanel h4{margin:0 0 4px;color:var(--text);font-size:14px;}
#fxPanel b{color:var(--text);}
#fxPanel .fx-opts{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}
#fxPanel .fx-opts button{min-width:48px;min-height:40px;padding:8px 10px;border-radius:8px;border:1px solid var(--border-ui);background:transparent;color:var(--text2);font-size:13px;}
#fxPanel .fx-opts button.sel{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff;font-weight:600;}
#fxPanel .fx-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;}
#fxPanel .fx-actions button{padding:8px 12px;border-radius:8px;border:1px solid var(--border-ui);background:transparent;color:var(--text2);font-size:12px;}
/* ═══ Tanda 2: estructura y objetivos tactiles (auditoria impeccable) ═══ */
h1.chat-title{margin:0;}
@media (max-width:768px){
  .topbar-right .icon-btn{width:44px;min-width:44px;height:44px;}
  .mob-menu-btn{min-width:44px;min-height:44px;}
  #orqSel{min-height:40px;}
}
@media (pointer:coarse){
  .kbd-hint{display:none;}
  .sb-add{width:40px;height:40px;}
  .lib-add,.expand-btn,.ecard-btn,.ctx-tab,.mact{min-width:40px;min-height:40px;}
  .thread-row,.folder-row,.proj-row{min-height:44px;}
  .edge-tab::after{left:-15px;right:-15px;}
  .mob-balance .axc-pill{min-height:44px;}
  .attach-btn,.mic-btn,.send-btn{min-width:44px;min-height:44px;}
  .mact{min-height:44px;min-width:44px;}
  #orqSel{min-height:44px;}
}
