:root{
  --sp-radius: .75rem;
  --bs-primary: #1d63ed;
}
body{ -webkit-font-smoothing:antialiased; }
.card{ border-radius: var(--sp-radius); }
.btn{ border-radius: .6rem; }
.form-control, .form-select{ border-radius:.6rem; padding:.65rem .85rem; }
.badge{ font-weight:600; }

/* Sidebar ------------------------------------------------------------ */
.side-link{
  display:flex; align-items:center; gap:.6rem;
  padding:.6rem .9rem; margin-bottom:.15rem;
  border-radius:.6rem; color:#495057; text-decoration:none; font-size:.95rem;
}
.side-link:hover{ background:#f1f3f5; color:#212529; }
.side-link.active{ background:#e7f0ff; color:#1d63ed; font-weight:600; }
.side-link i{ font-size:1.05rem; }

/* Barra inferior movil ---------------------------------------------- */
.has-bottom-nav{ padding-bottom:72px; }
.bottom-nav{
  position:fixed; bottom:0; left:0; right:0; z-index:1030;
  display:flex; background:#fff; border-top:1px solid #dee2e6;
  padding-bottom:env(safe-area-inset-bottom);
}
.bottom-nav a{
  flex:1; text-align:center; padding:.5rem .2rem; color:#6c757d;
  text-decoration:none; font-size:.7rem; line-height:1.1;
}
.bottom-nav a i{ display:block; font-size:1.25rem; margin-bottom:.15rem; }
.bottom-nav a.active{ color:#1d63ed; font-weight:600; }

/* Tarjetas de solicitud --------------------------------------------- */
.request-card{ transition:box-shadow .15s ease, transform .15s ease; }
.request-card:hover{ box-shadow:0 .5rem 1.25rem rgba(0,0,0,.08); transform:translateY(-2px); }
.request-thumb{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:.5rem; background:#f1f3f5; }
.thumb-strip{ display:flex; gap:.35rem; overflow-x:auto; }
.thumb-strip img{ height:72px; width:96px; object-fit:cover; border-radius:.4rem; flex:0 0 auto; }

/* Dropzone ----------------------------------------------------------- */
.dropzone{
  border:2px dashed #ced4da; border-radius:var(--sp-radius);
  padding:1.75rem 1rem; text-align:center; color:#6c757d; cursor:pointer;
  background:#fff; transition:.15s;
}
.dropzone.dragover{ border-color:#1d63ed; background:#f4f8ff; color:#1d63ed; }
.preview-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); gap:.6rem; margin-top:.9rem; }
.preview-item{ position:relative; }
.preview-item img{ width:100%; aspect-ratio:1; object-fit:cover; border-radius:.5rem; }
.preview-item button{
  position:absolute; top:.25rem; right:.25rem; border:0; border-radius:50%;
  width:26px; height:26px; background:rgba(0,0,0,.65); color:#fff; line-height:1;
}

/* Chat --------------------------------------------------------------- */
.chat-scroll{ height:min(60vh,520px); overflow-y:auto; background:#f8f9fa; padding:1rem; }
.msg{ max-width:78%; padding:.55rem .8rem; border-radius:1rem; margin-bottom:.6rem; font-size:.93rem; }
.msg small{ display:block; font-size:.7rem; opacity:.7; margin-top:.2rem; }
.msg-in{ background:#fff; border:1px solid #e9ecef; border-bottom-left-radius:.25rem; }
.msg-out{ background:#1d63ed; color:#fff; margin-left:auto; border-bottom-right-radius:.25rem; }
.msg-system{ background:#fff3cd; border:1px solid #ffe69c; color:#664d03; max-width:100%; text-align:center; font-size:.85rem; }

/* Utilidades --------------------------------------------------------- */
.stat-card .h3{ margin:0; font-weight:700; }
.private-note{ font-size:.82rem; color:#6c757d; }
.text-pre-line{ white-space:pre-line; }
.step-num{
  width:38px; height:38px; border-radius:50%; background:#e7f0ff; color:#1d63ed;
  display:flex; align-items:center; justify-content:center; font-weight:700; flex:0 0 auto;
}
