/* ============================================================
   estilos.css — Estilos COMUNES de Pifia 101
   Único sitio donde viven la paleta de colores y todo lo que
   comparten las páginas: tipografía base, navegación, pie,
   animaciones y el menú móvil. Lo enlazan todas las páginas
   (index, catalogo, mercadillo, eventos, legal).
   Cámbialo AQUÍ una sola vez y se aplica en toda la web.
   Cada página añade encima su CSS propio en su <style>.
   ============================================================ */

/* ---------- Paleta y variables ---------- */
:root{
  --crema:#f4ece0;       /* fondo principal (pergamino) */
  --crema-2:#ece1d0;     /* fondo alterno */
  --tinta:#221b16;       /* texto oscuro / casi negro */
  --tinta-suave:#5c4f44; /* texto secundario */
  --rojo:#c8472b;        /* acento principal (ficha roja) */
  --verde:#2f5d50;       /* acento secundario (tapete) */
  --mostaza:#d99a2b;     /* detalle dorado / dado */
  --sombra:6px 6px 0 var(--tinta);
  --r:14px;
}

/* ---------- Base / tipografía ---------- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--crema);color:var(--tinta);line-height:1.6;overflow-x:hidden;background-image:radial-gradient(rgba(34,27,22,.05) 1px, transparent 1px);background-size:22px 22px}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;line-height:1.05;font-weight:900}
a{color:inherit;text-decoration:none}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
.acento{color:var(--rojo)}

/* ---------- Navegación ---------- */
header{position:sticky;top:0;z-index:100;background:rgba(244,236,224,.85);backdrop-filter:blur(10px);border-bottom:2px solid var(--tinta)}
.nav{display:flex;align-items:center;justify-content:space-between;height:72px}
.logo{display:flex;align-items:center;gap:12px;font-family:'Fraunces',serif;font-weight:900;font-size:1.35rem}
.logo svg{width:34px;height:34px}.logo-101{color:var(--rojo)}
.logo svg.logo-dados{width:auto;height:36px}
.nav-links{display:flex;gap:24px;align-items:center}
.nav-links a{font-weight:500;font-size:.95rem;position:relative;padding:4px 0}
.nav-links a.activo{color:var(--rojo)}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--rojo);transition:width .25s}
.nav-links a:hover::after,.nav-links a.activo::after{width:100%}
/* El botón del encabezado: regla más específica que ".nav-links a" para
   que el padding lo mande esta y no se quede pegado a los bordes. */
.nav-links a.btn{padding:10px 26px}
.btn{display:inline-block;background:var(--rojo);color:var(--crema);padding:12px 30px;border:2px solid var(--tinta);border-radius:40px;font-weight:700;box-shadow:var(--sombra);transition:transform .15s, box-shadow .15s;cursor:pointer}
.btn:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--tinta)}
.btn.verde{background:var(--verde)}
.menu-btn{display:none;background:none;border:none;cursor:pointer}

/* ---------- Pie ---------- */
footer{background:var(--tinta);color:var(--crema);padding:60px 0 30px}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px;margin-bottom:40px}
footer h4{font-family:'Fraunces',serif;font-size:1.2rem;margin-bottom:14px}
footer a,footer p{color:rgba(244,236,224,.75);font-size:.95rem;display:block;margin-bottom:8px}
footer a:hover{color:var(--mostaza)}
.foot-logo{display:flex;align-items:center;gap:10px;font-family:'Fraunces',serif;font-weight:900;font-size:1.3rem;color:var(--crema);margin-bottom:14px}
.foot-logo svg{width:30px;height:30px}
.foot-logo svg.foot-dados{width:auto;height:32px}
.foot-bottom{border-top:1px solid rgba(244,236,224,.2);padding-top:24px;text-align:center;font-size:.85rem;color:rgba(244,236,224,.6)}
.foot-bottom a{color:inherit;text-decoration:underline;display:inline}

/* ---------- Animación al hacer scroll ----------
   Solo se ocultan si hay JS (la clase html.js la pone un script del <head>).
   Sin JS, .reveal se ve siempre, así la web nunca queda en blanco. */
.reveal{transition:opacity .6s ease, transform .6s ease}
html.js .reveal{opacity:0;transform:translateY(28px)}
html.js .reveal.visible{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){
  .reveal{transition:none}
  html.js .reveal{opacity:1;transform:none}
}

/* ---------- Responsive: menú móvil y pie ---------- */
@media(max-width:980px){
  .foot-grid{grid-template-columns:1fr}
  .nav-links{display:none;position:absolute;top:72px;left:0;right:0;background:var(--crema);flex-direction:column;padding:24px;gap:20px;border-bottom:2px solid var(--tinta)}
  .nav-links.abierto{display:flex}
  .menu-btn{display:block}
}

/* ============================================================
   MODO OSCURO
   El tema lo fija un script del <head> (data-theme="dark"/"light")
   según lo guardado o la preferencia del sistema. Aquí solo se
   redefine la paleta y se corrigen los colores que estaban fijos.
   ============================================================ */
:root{color-scheme:light}
html[data-theme="dark"]{
  color-scheme:dark;
  --crema:#191512;       /* fondo principal (casi negro cálido) */
  --crema-2:#241c16;     /* fondo alterno */
  --tinta:#f1e7d6;       /* texto claro */
  --tinta-suave:#b4a692; /* texto secundario */
  --rojo:#e15f3f;        /* acento principal (más vivo sobre oscuro) */
  --verde:#5c9a85;       /* acento secundario */
  --mostaza:#e6b052;     /* dorado */
  --sombra:5px 5px 0 rgba(0,0,0,.5);
}
html[data-theme="dark"] body{background-image:radial-gradient(rgba(241,231,214,.05) 1px, transparent 1px)}
html[data-theme="dark"] header{background:rgba(25,21,18,.85)}
html[data-theme="dark"] footer{background:#100c0a;color:#efe5d4}
html[data-theme="dark"] .foot-logo{color:#efe5d4}

/* Transición suave al cambiar de tema (solo tras la 1ª interacción) */
html.theme-anim,
html.theme-anim body,
html.theme-anim header,
html.theme-anim footer,
html.theme-anim .btn,
html.theme-anim [class*="card"],
html.theme-anim .valor,
html.theme-anim .info-bloque,
html.theme-anim .voto-card{transition:background-color .3s ease, color .3s ease, border-color .3s ease, box-shadow .3s ease}

/* ---------- Botón de cambio de tema (lo inserta comun.js en la nav) ---------- */
.theme-toggle{display:inline-grid;place-items:center;width:40px;height:40px;flex-shrink:0;border:2px solid var(--tinta);border-radius:50%;background:var(--crema-2);color:var(--tinta);cursor:pointer;transition:transform .15s, box-shadow .15s}
.theme-toggle:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--tinta)}
.theme-toggle svg{width:18px;height:18px;display:block}

/* ---------- Botón flotante de contacto/Telegram (lo inserta comun.js) ---------- */
.fab-contacto{position:fixed;right:20px;bottom:20px;z-index:200;display:inline-flex;align-items:center;gap:9px;background:var(--verde);color:var(--crema);border:2px solid var(--tinta);border-radius:40px;padding:12px 18px;font-weight:700;font-family:inherit;font-size:.95rem;box-shadow:var(--sombra);cursor:pointer;transition:transform .15s, box-shadow .15s}
.fab-contacto:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--tinta)}
.fab-contacto svg{width:20px;height:20px;flex-shrink:0}
@media(max-width:600px){
  .fab-contacto span{display:none}
  .fab-contacto{padding:14px;border-radius:50%}
}

/* ---------- Botón "Volver arriba" (lo inserta comun.js) ---------- */
.back-arriba{position:fixed;right:20px;bottom:84px;z-index:200;width:46px;height:46px;display:grid;place-items:center;background:var(--crema);color:var(--tinta);border:2px solid var(--tinta);border-radius:50%;box-shadow:var(--sombra);cursor:pointer;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s, transform .2s, visibility .2s}
.back-arriba.visible{opacity:1;visibility:visible;transform:none}
.back-arriba:hover{transform:translateY(-2px)}
.back-arriba svg{width:20px;height:20px}
@media(max-width:600px){ .back-arriba{right:16px;bottom:76px;width:42px;height:42px} }

/* ============================================================
   ACCESIBILIDAD
   Foco visible al navegar con teclado y enlace "saltar al
   contenido" (lo inserta comun.js como primer elemento).
   ============================================================ */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible{outline:3px solid var(--mostaza);outline-offset:3px;border-radius:6px}

.skip-link{position:fixed;top:-120px;left:12px;z-index:1000;background:var(--rojo);color:var(--crema);padding:10px 16px;border:2px solid var(--tinta);border-radius:8px;font-weight:700;box-shadow:var(--sombra);transition:top .2s}
.skip-link:focus{top:12px}

/* ============================================================
   IMPRESIÓN: deja solo el contenido (sin menú, pie ni botones)
   ============================================================ */
@media print{
  header, footer, .fab-contacto, .theme-toggle, .skip-link, .menu-btn,
  .filtros, .cat-barra-acciones, .hero-cta, .proxima-partida,
  .btn, .btn-cal, .btn-compartir-ev, .ficha-acciones { display:none !important; }
  body{ background:#fff !important; color:#000 !important; }
  body{ background-image:none !important; }
  a{ color:#000 !important; text-decoration:none !important; }
  .reveal{ opacity:1 !important; transform:none !important; }
  *{ box-shadow:none !important; }
  section{ padding:18px 0 !important; }
}
