/* LinksDV Custom Styles - v3.0 (Bootstrap 5.3) */

:root {
  --ldv-accent: #4a6cf7;
  --ldv-accent-hover: #3a5ce5;
  --ldv-card-radius: 0.75rem;
  --ldv-transition: 0.2s ease;
}

/* Typography & Base */
body {
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  line-height: 1.6;
}

a {
  text-decoration: none;
}

a:hover {
  text-decoration: none;
}

.bd-placeholder-img {
  font-size: 1.125rem;
  text-anchor: middle;
  user-select: none;
}

@media (min-width: 768px) {
  .bd-placeholder-img-lg {
    font-size: 3.5rem;
  }
}

/* Cards */
.card {
  border-radius: var(--ldv-card-radius);
  border: 1px solid rgba(0,0,0,.08);
  transition: transform var(--ldv-transition), box-shadow var(--ldv-transition);
  overflow: hidden;
}

.card:hover {
  transform: translateY(-2px);
  box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,.1);
}

.card-link+.card-link {
  margin-left: 0.25rem;
}

.card-text img {
  max-width: 100%;
  border-radius: 0.375rem;
}

/* Vote buttons */
.botonsvg {
  fill: var(--bs-secondary-color, #888) !important;
  transition: fill var(--ldv-transition);
}

.botonsvg:hover {
  fill: var(--ldv-accent) !important;
}

.botonvotadosvg {
  fill: var(--bs-tertiary-color, #aaa) !important;
}

.botonvotadosvg:hover {
  fill: var(--bs-tertiary-color, #aaa) !important;
}

/* Link image thumbnails */
.iconoportada {
  height: 202px;
  object-fit: cover;
  transition: opacity var(--ldv-transition);
}

.card:hover .iconoportada {
  opacity: 0.92;
}

/* Blockquote */
.bq {
  margin-left: 2em;
  margin-top: 1em;
  margin-bottom: 1em;
  background-color: var(--bs-tertiary-bg, #f8f9fa);
  border-left: 4px solid var(--ldv-accent);
  padding: 1em;
  font-size: 90%;
  border-radius: 0.375rem;
  display: block;
}

/* Old/expired links */
.old, .old a {
  background: var(--bs-tertiary-bg, #e9ecef);
  color: var(--bs-secondary-color, #888);
}

.old h5 a {
  color: var(--bs-secondary-color, #888);
}

.old .iconoportada {
  filter: blur(5px);
}

/* Botonera navigation */
.botonera {
  border-bottom: 1px solid var(--bs-border-color, #dee2e6) !important;
  background-color: var(--bs-tertiary-bg, #f8f9fa) !important;
}

/* Footer */
footer {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

footer p {
  margin-bottom: .25rem;
}

/* Admin toolbar PROM button states */
.btn-prom-activo {
  background-color: #198754 !important;
  border-color: #198754 !important;
  color: #fff !important;
}

.btn-prom-activo:hover {
  background-color: #157347 !important;
  border-color: #146c43 !important;
  color: #fff !important;
}

/* Smooth scroll behavior */
html {
  scroll-behavior: smooth;
}

/* Navbar dark mode toggle */
#darkModeToggle {
  border-radius: 50%;
  width: 2rem;
  height: 2rem;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Dark mode adjustments */
[data-bs-theme="dark"] .botonera {
  background-color: var(--bs-body-bg) !important;
}

[data-bs-theme="dark"] .card {
  border-color: rgba(255,255,255,.08);
}

[data-bs-theme="dark"] .card:hover {
  box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,.3);
}

[data-bs-theme="dark"] .navbar-dark {
  background-color: #1a1d23 !important;
}

[data-bs-theme="dark"] .bg-light {
  background-color: #1e2127 !important;
}

/* Badges de categoría (issue #55). Cada .cat-<id> define --ldv-cat-bg y
   --ldv-cat-fg en cache/categorias.css, generado desde el admin. */
.cat-badge {
  background-color: var(--ldv-cat-bg, #6c757d);
  color: var(--ldv-cat-fg, #fff);
  text-decoration: none;
  font-weight: 600;
  letter-spacing: .01em;
}
.cat-badge:hover,
.cat-badge:focus {
  color: var(--ldv-cat-fg, #fff);
  filter: brightness(1.12);
}
/* Sobre la imagen de la tarjeta */
.card-cat {
  position: absolute;
  top: .5rem;
  left: .5rem;
  z-index: 1;
  box-shadow: 0 1px 3px rgba(0,0,0,.35);
}

/* Perfil de usuario (issue #57) */
.perfil-avatar {
  border: 3px solid var(--bs-body-bg);
  box-shadow: 0 .25rem .75rem rgba(0,0,0,.15);
  object-fit: cover;
}
.perfil-avatar-sm { object-fit: cover; }
.perfil-frase {
  font-size: 1.05rem;
  font-style: italic;
  color: var(--bs-secondary-color);
}
.perfil-bio {
  max-width: 60ch;
  overflow-wrap: anywhere;
}
.perfil-redes .list-inline-item:not(:last-child) { margin-right: .35rem; }
.perfil-redes a {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  color: var(--bs-secondary-color);
}
.perfil-redes .perfil-red { font-size: 1.35rem; }
.perfil-redes a:hover,
.perfil-redes a:focus { color: var(--ldv-accent); }
.perfil-stats .perfil-stat-num {
  font-size: 1.15rem;
  font-weight: 600;
  white-space: nowrap;
}
.perfil-stats .perfil-stat-txt {
  font-size: .8rem;
  color: var(--bs-secondary-color);
}
.perfil-edicion { max-width: 960px; }

/* Páginas estáticas (issue #58) */
.pagina { max-width: 820px; }
.pagina-contenido { line-height: 1.65; overflow-wrap: anywhere; }
.pagina-contenido h2 { font-size: 1.35rem; margin-top: 1.75rem; }
.pagina-contenido h3 { font-size: 1.15rem; margin-top: 1.5rem; }
.pagina-contenido img { max-width: 100%; height: auto; }
.pagina-contenido blockquote {
  border-left: 4px solid var(--ldv-accent);
  padding-left: 1rem;
  color: var(--bs-secondary-color);
}
.pagina-contenido table { width: 100%; margin-bottom: 1rem; border-collapse: collapse; }
.pagina-contenido th, .pagina-contenido td { border: 1px solid var(--bs-border-color); padding: .4rem .6rem; }
.pagina-contenido pre { background: var(--bs-tertiary-bg); padding: .75rem; border-radius: .375rem; }
