/* ---------- capture layer (shared: fab + drawer + toast) ---------- */
.navbtn{position:fixed;top:86px;right:24px;width:50px;height:50px;border-radius:50%;
  background:var(--card);color:#002147;border:1px solid var(--line);cursor:pointer;z-index:43;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 14px rgba(22,24,28,.12);transition:transform .2s}
.navbtn:hover{transform:scale(1.06)}
.navbtn:focus-visible{outline:2px solid var(--bbva);outline-offset:3px}
.navbtn svg{width:20px;height:20px}
.fab{position:fixed;top:24px;right:24px;width:50px;height:50px;border-radius:50%;
  background:var(--ink);color:var(--card);border:0;cursor:pointer;z-index:43;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 14px rgba(22,24,28,.22);transition:transform .2s}
.fab:hover{transform:scale(1.06)}
.fab:focus-visible{outline:2px solid var(--bbva);outline-offset:3px}
.fab svg{width:20px;height:20px;transition:transform .25s}
.fab[aria-expanded="true"] svg{transform:rotate(45deg)}
.scrim{position:fixed;inset:0;background:rgba(22,24,28,.28);opacity:0;pointer-events:none;transition:opacity .28s;z-index:41}
.scrim.on{opacity:1;pointer-events:auto}
.navlink{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid var(--line-soft);
  font-size:14px;color:var(--ink);text-decoration:none;transition:color .15s}
.navlink:hover{color:var(--bbva)}
.navlink .n{width:22px;text-align:center;font-size:16px}
.drawer{position:fixed;top:0;right:0;bottom:0;width:410px;max-width:92vw;background:var(--card);
  border-left:1px solid var(--line);z-index:42;transform:translateX(100%);
  transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.drawer.on{transform:none}
.assist-dropzone{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(244,242,236,.94);border:2px dashed var(--bbva);z-index:5;pointer-events:none;
  text-align:center;padding:24px}
.assist-dropzone p{font-size:14px;font-weight:500;color:var(--bbva)}
.drawer.assist-drag-over .assist-dropzone{display:flex}
.dr-hd{padding:20px 22px 16px;border-bottom:1px solid var(--line)}
.dr-hd h3{font-family:'Fraunces',serif;font-size:24px;font-weight:400;letter-spacing:-.01em;margin-top:4px}
.dr-body{padding:18px 22px;overflow-y:auto;flex:1;display:flex;flex-direction:column;min-height:0}
#manualPane{display:flex;flex-direction:column;min-height:0}
#assistantPane{display:flex;flex-direction:column;flex:1;min-height:0}

/* ---------- mode toggle (Asistente / Manual) ---------- */
.mode-toggle{display:flex;gap:4px;margin-top:12px;background:var(--paper);border:1px solid var(--line);
  border-radius:9px;padding:3px}
.mode-toggle button{flex:1;font-family:inherit;font-size:12.5px;font-weight:500;padding:8px 10px;border:0;
  border-radius:7px;background:none;color:var(--ink-2);cursor:pointer;transition:background .15s,color .15s}
.mode-toggle button:hover{color:var(--ink)}
.mode-toggle button[aria-pressed="true"]{background:var(--ink);color:var(--card)}
.mode-toggle button:focus-visible{outline:2px solid var(--bbva);outline-offset:2px}

/* ---------- asistente: chat ---------- */
#assistMsgs{display:flex;flex-direction:column;gap:10px;flex:1;padding-bottom:10px}
.assist-intro{padding:6px 2px 14px}
.assist-intro p{font-size:13px;color:var(--ink-2);line-height:1.5}
.assist-msg{max-width:88%;font-size:13px;line-height:1.5;padding:10px 13px;border-radius:13px;white-space:pre-wrap}
.assist-msg--user{align-self:flex-end;background:var(--ink);color:var(--card);border-bottom-right-radius:4px}
.assist-msg--bot{align-self:flex-start;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-bottom-left-radius:4px}
.assist-msg--error{align-self:flex-start;background:#FBE4E4;border:1px solid #F1C4C4;color:#8A2E28}
.assist-msg-img{display:block;max-width:160px;border-radius:9px;margin-top:8px;border:1px solid rgba(255,255,255,.25)}
.assist-msg--bot .assist-msg-img{border-color:var(--line)}
.assist-typing{align-self:flex-start;display:flex;gap:4px;padding:12px 14px;background:var(--paper);
  border:1px solid var(--line);border-radius:13px;border-bottom-left-radius:4px}
.assist-typing span{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:assistBounce 1.1s infinite}
.assist-typing span:nth-child(2){animation-delay:.15s}
.assist-typing span:nth-child(3){animation-delay:.3s}
@keyframes assistBounce{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-3px);opacity:1}}
.assist-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.assist-actions button{font-family:inherit;font-size:12px;font-weight:500;padding:7px 13px;border-radius:999px;
  border:1px solid #41424C;background:#41424C;color:#fff;cursor:pointer;transition:background-color .15s,border-color .15s}
.assist-actions button:hover{background:#2E2F37;border-color:#2E2F37}
.assist-actions button.assist-primary{background:var(--ink);border-color:var(--ink);color:var(--card)}

/* ---------- asistente: tarjeta de resumen ---------- */
.assist-card{align-self:stretch;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--card);
  box-shadow:0 2px 10px rgba(22,24,28,.06)}
.assist-card .eyebrow{margin-bottom:6px}
.assist-card-title{font-family:'Fraunces',serif;font-size:17px;font-weight:400;letter-spacing:-.01em}
.assist-card-amt{font-size:19px;margin-top:2px}
.assist-card-rows{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:7px}
.assist-card-rows div{display:flex;justify-content:space-between;gap:12px;font-size:12px}
.assist-card-rows span{color:var(--ink-3)}
.assist-card-rows b{font-weight:500;text-align:right}
.assist-card-actions{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.assist-card-actions .submit{width:100%}
.assist-card-actions .cancel-link{background:none;border:0;font-family:inherit;font-size:12px;color:var(--ink-3);
  cursor:pointer;text-align:center;padding:2px}
.assist-card-actions .cancel-link:hover{color:var(--ink)}

/* ---------- asistente: revisión de captura múltiple ---------- */
.assist-batch-card{align-self:stretch;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--card);
  box-shadow:0 2px 10px rgba(22,24,28,.06)}
.assist-batch-card .eyebrow{margin-bottom:10px}
.assist-batch-rows{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto;margin:-2px;padding:2px}
.assist-batch-row{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:1px solid var(--line-soft);
  border-radius:9px;background:var(--paper);transition:opacity .15s}
.assist-batch-row--excluded{opacity:.5}
.assist-batch-check{padding-top:9px;flex-shrink:0}
.assist-batch-check input{width:16px;height:16px;accent-color:var(--ink);cursor:pointer}
.assist-batch-fields{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px}
.assist-batch-input{font-family:inherit;font-size:12px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;
  background:var(--card);color:var(--ink);flex:1;min-width:84px}
.assist-batch-input:focus{outline:2px solid var(--bbva);outline-offset:-1px;border-color:var(--bbva)}
.assist-batch-input--title{flex-basis:100%}
.assist-batch-input--amt{flex:0 1 90px}
.assist-batch-flag{flex-basis:100%;font-size:11px;color:var(--alert);margin:2px 0 0}
.assist-file-chip{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);font-size:12px;color:var(--ink)}
.assist-file-chip button{background:none;border:1px solid var(--line);border-radius:50%;width:18px;height:18px;
  color:var(--ink-2);font-size:10px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.assist-file-chip button:hover{color:var(--alert);border-color:var(--alert)}

/* ---------- asistente: composer fijo (reemplaza el footer de Guardar) ---------- */
.assist-ft{display:flex;flex-direction:column;gap:8px}
.assist-attach-preview:empty{display:none}
.assist-attach-preview{display:flex;gap:8px}
.assist-thumb-chip{position:relative;width:52px;height:52px}
.assist-thumb-chip img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.assist-thumb-chip button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;
  border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-size:10px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.assist-thumb-chip button:hover{color:var(--alert);border-color:var(--alert)}
.assist-composer{display:flex;flex-direction:column;gap:10px}
#assistInput{width:100%;font-family:inherit;font-size:13.5px;line-height:1.45;padding:12px 14px;border:1px solid var(--line);
  border-radius:18px;background:var(--card);color:var(--ink);resize:none;min-height:88px;max-height:180px;overflow-y:auto}
#assistInput:focus{outline:2px solid var(--bbva);outline-offset:-1px;border-color:var(--bbva)}
.assist-action-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;
  font-family:inherit;font-size:14px;font-weight:500;padding:12px;border:1px solid var(--line);
  border-radius:22px;background:var(--card);color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.assist-action-btn:hover{border-color:var(--ink-3)}
.assist-action-btn:focus-visible{outline:2px solid var(--bbva);outline-offset:2px}
.assist-action-icon{font-size:15px;line-height:1}
.assist-action-btn[aria-pressed="true"]{background:var(--alert);border-color:var(--alert);color:#fff}
.assist-mic-wave{display:inline-flex;align-items:center;gap:2px;height:14px}
.assist-mic-wave i{display:block;width:3px;height:100%;border-radius:2px;background:currentColor;
  transform-origin:center;animation:assistMicWave .9s ease-in-out infinite}
.assist-mic-wave i:nth-child(1){animation-delay:0s}
.assist-mic-wave i:nth-child(2){animation-delay:.12s}
.assist-mic-wave i:nth-child(3){animation-delay:.24s}
.assist-mic-wave i:nth-child(4){animation-delay:.36s}
.assist-mic-wave i:nth-child(5){animation-delay:.48s}
@keyframes assistMicWave{0%,100%{transform:scaleY(.28)}50%{transform:scaleY(1)}}
.assist-action-btn--primary{background:var(--ink);border-color:var(--ink);color:var(--card)}
.assist-action-btn--primary:hover{background:#000;border-color:#000}
.hint{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:11px 13px;margin-bottom:18px;
  display:flex;gap:10px;align-items:flex-start;cursor:pointer;width:100%;text-align:left;font-family:inherit}
.hint:hover{border-color:var(--ink-3)}
.hint .n{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--ink-3);flex:0 0 auto;margin-top:2px}
.hint p{font-size:12.5px;line-height:1.45}
.seg{margin-bottom:18px}
.seg-primary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
.seg-secondary{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.seg-btn{font-family:inherit;border:1px solid var(--line);background:var(--card);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:var(--ink-2);transition:transform .15s,box-shadow .15s,border-color .15s,background .15s}
.seg-btn:hover{border-color:var(--ink-3);transform:translateY(-1px)}
.seg-btn:active{transform:translateY(0)}
.seg-btn:focus-visible{outline:2px solid var(--bbva);outline-offset:2px}
.seg-badge{display:flex;align-items:center;justify-content:center;line-height:1;
  background:linear-gradient(145deg,#FFFFFF,#ECE9DE);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.9),inset 0 -2px 3px rgba(22,24,28,.07),0 1px 3px rgba(22,24,28,.10);
  transition:background .15s,box-shadow .15s}
.seg-label{font-weight:500}

.seg-btn--primary{gap:9px;padding:14px 6px 12px;border-radius:14px;
  box-shadow:0 1px 2px rgba(22,24,28,.03),0 3px 8px rgba(22,24,28,.03)}
.seg-btn--primary:hover{box-shadow:0 3px 12px rgba(22,24,28,.08)}
.seg-btn--primary .seg-badge{width:38px;height:38px;border-radius:12px;font-size:19px}
.seg-btn--primary .seg-label{font-size:12.5px;color:var(--ink)}
.seg-btn--primary[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--card);
  box-shadow:0 4px 14px rgba(22,24,28,.24)}
.seg-btn--primary[aria-pressed="true"] .seg-label{color:var(--card)}
.seg-btn--primary[aria-pressed="true"] .seg-badge{background:linear-gradient(145deg,#3A3D43,#202226);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.14),inset 0 -2px 3px rgba(0,0,0,.4),0 1px 4px rgba(0,0,0,.3)}
.seg-btn--primary[data-t="saldo"] .seg-badge{filter:hue-rotate(140deg) saturate(1.15)}

.seg-btn--secondary{gap:6px;padding:9px 4px 8px;border-radius:11px}
.seg-btn--secondary .seg-badge{width:28px;height:28px;border-radius:9px;font-size:14px}
.seg-btn--secondary .seg-label{font-size:10px;text-align:center;line-height:1.2}
.seg-btn--secondary[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--card)}
.seg-btn--secondary[aria-pressed="true"] .seg-badge{background:linear-gradient(145deg,#3A3D43,#202226);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.14),inset 0 -2px 3px rgba(0,0,0,.4)}
.f{margin-bottom:14px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.f label{display:block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-weight:500}
.f input,.f select,.f textarea{width:100%;font-family:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--line);
  border-radius:7px;background:var(--card);color:var(--ink)}
.f textarea{resize:vertical;min-height:52px;font-size:13px;line-height:1.45}
.f input.mono{font-family:'IBM Plex Mono',monospace}
.f input:focus,.f select:focus,.f textarea:focus{outline:2px solid var(--bbva);outline-offset:-1px;border-color:var(--bbva)}
.f .hint-line{font-size:10.5px;color:var(--ink-3);margin-top:6px}
.hint-line{font-size:10.5px;color:var(--ink-3);margin-top:6px}
.share-toggle{width:100%;font-family:inherit;font-size:13px;font-weight:500;text-align:left;
  padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:var(--card);
  color:var(--ink-2);cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;transition:border-color .15s,background .15s,color .15s}
.share-toggle:hover{border-color:var(--ink-3)}
.share-toggle:focus-visible{outline:2px solid var(--bbva);outline-offset:2px}
.share-toggle span:first-child{display:flex;align-items:center;gap:9px}
.share-toggle .dot{width:9px;height:9px;border-radius:50%;border:1.5px solid currentColor;flex:0 0 auto}
.share-toggle[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--card)}
.share-toggle[aria-pressed="true"] .dot{background:currentColor}
#sharedFields{margin-bottom:14px}
.err{font-size:11.5px;color:var(--alert);margin-top:6px;display:none}
.err.on{display:block}
.dr-ft{padding:14px 22px 20px;border-top:1px solid var(--line);background:var(--card);position:relative;
  box-shadow:0 -8px 14px -10px rgba(22,24,28,.16)}
.submit{width:100%;font-family:inherit;font-size:14px;font-weight:500;padding:11px;border:0;border-radius:8px;
  background:var(--ink);color:var(--card);cursor:pointer}
.submit:hover{background:#000}
.submit:focus-visible{outline:2px solid var(--bbva);outline-offset:2px}
.recent{margin-top:22px;padding-top:16px;border-top:1px solid var(--line-soft)}
.recent li{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:6px 0;color:var(--ink-2);list-style:none}
.meal-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.meal-chip{font-family:inherit;font-size:11.5px;padding:8px 4px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);color:var(--ink-2);cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.meal-chip:hover{border-color:var(--ink-3)}
.meal-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--card)}
.meal-capture-row{display:flex;gap:8px;flex-wrap:wrap}
.cap-btn{font-family:inherit;font-size:12px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);color:var(--ink-2);cursor:pointer;transition:border-color .15s,color .15s}
.cap-btn:hover{border-color:var(--ink-3);color:var(--ink)}
.meal-preview{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.meal-thumb-wrap,.meal-voice-wrap{position:relative;display:flex;align-items:center}
.meal-thumb{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.meal-voice-wrap audio{height:32px;max-width:220px}
.meal-remove{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);
  background:var(--card);color:var(--ink-2);font-size:10px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.meal-remove:hover{color:var(--alert);border-color:var(--alert)}
.toast{position:fixed;bottom:24px;right:24px;background:var(--ink);color:var(--card);font-size:13px;
  padding:11px 16px;border-radius:8px;z-index:50;opacity:0;transform:translateY(8px);
  transition:opacity .25s,transform .25s;pointer-events:none}
.toast.on{opacity:1;transform:none}
.due-panel{position:fixed;top:24px;right:88px;z-index:44;width:280px;max-width:calc(100vw - 32px);
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 6px 24px rgba(22,24,28,.14);padding:14px 16px;display:none}
.due-panel.on{display:block}
.due-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.due-hd h4{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:600;margin:0}
.due-hd button{font-family:inherit;background:none;border:0;color:var(--ink-3);cursor:pointer;font-size:13px;padding:0}
.due-hd button:hover{color:var(--ink)}
.due-item{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;
  padding:8px 0;border-bottom:1px solid var(--line-soft)}
.due-item:last-child{border-bottom:0;padding-bottom:0}
.due-item .txt{min-width:0;text-decoration:none;color:inherit;display:block}
.due-item .concept{font-size:12.5px;font-weight:500;display:block}
.due-item .when{font-size:10.5px;color:var(--ink-3);margin-top:2px;display:block}
.due-item .when.urgent{color:var(--alert)}
.due-item a.txt:hover .concept{color:var(--bbva)}
.due-item .dismiss{font-family:inherit;background:none;border:0;color:var(--ink-3);cursor:pointer;font-size:12px;padding:0 2px;flex:0 0 auto}
.due-item .dismiss:hover{color:var(--alert)}
@media(max-width:560px){.fab{top:auto;bottom:82px;right:20px}.navbtn{top:auto;bottom:20px;right:20px}
  .due-panel{top:auto;bottom:140px;right:20px;left:20px;width:auto}
  .drawer{width:100vw;max-width:100vw;border-left:0}
  /* El drawer de captura ahora cubre toda la pantalla en mobile — el FAB
     (que hace de botón cerrar mientras está abierto) regresa arriba para no
     taparse con el composer, y el menú de páginas se oculta (no aplica a
     media captura). */
  body.capture-drawer-open .fab{top:24px;bottom:auto;right:24px}
  body.capture-drawer-open .navbtn{display:none}
  /* iOS Safari hace zoom automático del viewport al enfocar un campo de
     texto con font-size menor a 16px, y ese zoom se queda pegado (los
     márgenes se pierden) hasta que el usuario lo deshace a mano — pasaba al
     escribir/enviar el primer mensaje del Asistente o al tocar un campo del
     modo Manual. Con 16px el navegador no necesita hacer zoom para nada. */
  #assistInput,.f input,.f select,.f textarea{font-size:16px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
