/* ============================================================
   FÚTBOL SALA LEBRIJA — Estilos
   Paleta: verde césped + carbón + ámbar
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  /* "verde" = color primario (ahora ROJO cofrade) */
  --verde:      #B01B2E;
  --verde-osc:  #8A1222;
  --verde-claro:#CC3345;
  --carbon:     #12181C;
  --carbon-2:   #1B2429;
  --ambar:      #F5A623;
  --ambar-osc:  #D98A00;
  /* Colores de grupo para los partidos */
  --grupo-a:    #B01B2E;   /* Grupo A: rojo */
  --grupo-b:    #FFFFFF;   /* Grupo B: blanco */
  --grupo-vet:  #171717;   /* Veteranos: negro */
  --grupo-inf:  #BFE3F0;   /* Infantil: celeste */
  --neutro:     #465A65;   /* cabeceras de sección (no es de ningún grupo) */
  --rojo:       #D62828;
  --amarilla:   #F4C430;
  --roja:       #D62828;
  --gris-bg:    #F2F5F3;
  --gris-linea: #E4E9E6;
  --gris-txt:   #61706A;
  --negro:      #14201A;
  --blanco:     #FFFFFF;

  --radio:   10px;
  --radio-lg:16px;
  --sombra:  0 2px 14px rgba(18,24,28,.08);
  --sombra-lg:0 10px 34px rgba(18,24,28,.16);
  --trans:   .18s ease;

  --display:'Barlow Condensed', sans-serif;
  --body:   'Inter', sans-serif;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ font-size:16px; scroll-behavior:smooth; }
body{ font-family:var(--body); background:var(--gris-bg); color:var(--negro); min-height:100vh; line-height:1.6; }

h1,h2,h3,h4{ font-family:var(--display); letter-spacing:.01em; line-height:1.05; text-transform:uppercase; }
h1{ font-size:clamp(1.9rem,5vw,2.9rem); }
h2{ font-size:clamp(1.4rem,3vw,2rem); }
h3{ font-size:1.25rem; }
a{ color:var(--verde); text-decoration:none; transition:color var(--trans); }
a:hover{ color:var(--verde-osc); }
img{ max-width:100%; }

/* ── NAVBAR ─────────────────────────────────────────────── */
.navbar{
  background:var(--carbon); color:#fff; height:60px; padding:0 1.2rem;
  display:flex; align-items:center; justify-content:space-between;
  position:sticky; top:0; z-index:100; box-shadow:0 2px 10px rgba(0,0,0,.25);
}
.navbar-brand{ font-family:var(--display); font-size:1.5rem; letter-spacing:.03em; color:#fff; display:flex; align-items:center; gap:.5rem; }
.navbar-brand b{ color:var(--ambar); font-weight:700; }
.navbar-menu{ display:flex; gap:.15rem; align-items:center; }
.navbar-menu a{ color:rgba(255,255,255,.82); padding:.4rem .75rem; border-radius:var(--radio); font-size:.9rem; font-weight:600; }
.navbar-menu a:hover, .navbar-menu a.activo{ background:rgba(255,255,255,.12); color:#fff; }
.navbar-menu a.admin{ color:var(--ambar); }
.navbar-cta{ font-size:.88rem; color:#fff; }

.hamburger{ display:none; flex-direction:column; gap:5px; cursor:pointer; padding:6px; }
.hamburger span{ width:22px; height:2px; background:#fff; border-radius:2px; transition:var(--trans); }
.hamburger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2){ opacity:0; }
.hamburger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* ── DRAWER ─────────────────────────────────────────────── */
.drawer-overlay{ display:none; position:fixed; inset:0; z-index:1040; background:rgba(0,0,0,.5); }
.drawer-overlay.open{ display:block; }
.drawer{ display:none; position:fixed; top:0; left:0; bottom:0; z-index:1050; width:270px; background:var(--carbon); flex-direction:column; overflow-y:auto; }
.drawer.open{ display:flex; animation:slideIn .26s cubic-bezier(.4,0,.2,1) both; }
@keyframes slideIn{ from{ transform:translateX(-100%);} to{ transform:translateX(0);} }
.drawer-header{ display:flex; align-items:center; justify-content:space-between; padding:1rem 1.2rem; background:var(--carbon-2); color:#fff; font-family:var(--display); font-size:1.15rem; }
.drawer-close{ background:none; border:none; color:#fff; font-size:1.1rem; cursor:pointer; }
.drawer-nav{ display:flex; flex-direction:column; padding:.5rem 0; }
.drawer-nav a{ padding:.75rem 1.4rem; color:rgba(255,255,255,.9); font-size:.95rem; font-weight:500; border-left:3px solid transparent; }
.drawer-nav a:hover{ background:rgba(255,255,255,.07); }
.drawer-nav a.activo{ background:rgba(255,255,255,.1); border-left-color:var(--ambar); color:#fff; font-weight:700; }
.drawer-sep{ padding:.6rem 1.4rem .3rem; font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:rgba(255,255,255,.4); margin-top:.4rem; }

/* ── LAYOUT ─────────────────────────────────────────────── */
.container{ max-width:1100px; margin:0 auto; padding:1.3rem 1rem 3rem; }
.hero{ background:linear-gradient(135deg,var(--verde) 0%,var(--verde-osc) 100%); color:#fff; border-radius:var(--radio-lg); padding:1.7rem 1.5rem; margin-bottom:1.3rem; position:relative; overflow:hidden; }
.hero::after{ content:""; position:absolute; right:6px; bottom:-14px; width:150px; height:150px; background:url('/assets/img/escudos/esc_oracion.png') no-repeat center/contain; opacity:.14; }
.hero .kicker{ font-family:var(--display); font-size:1rem; letter-spacing:.14em; color:var(--ambar); text-transform:uppercase; }
.hero h1{ color:#fff; margin:.1rem 0; }
.hero p{ opacity:.9; margin:0; }

.page-title{ display:flex; align-items:baseline; gap:.6rem; margin-bottom:1rem; flex-wrap:wrap; }
.page-title h1{ color:var(--negro); }
.page-title .sub{ color:var(--gris-txt); font-size:.95rem; }

/* ── CARDS ──────────────────────────────────────────────── */
.card{ background:#fff; border-radius:var(--radio-lg); box-shadow:var(--sombra); overflow:hidden; }
.card + .card{ margin-top:1rem; }
.grid-2 > .card + .card, .grid-3 > .card + .card, .grid-auto > .card + .card{ margin-top:0; }  /* dentro de rejillas no desnivelar */
.card-header{ padding:.85rem 1.1rem; background:var(--neutro); color:#fff; font-family:var(--display); font-size:1.15rem; letter-spacing:.03em; display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.card-header.verde{ background:var(--verde); }
.card-header a{ color:var(--ambar); font-family:var(--body); font-size:.82rem; font-weight:600; text-transform:none; letter-spacing:0; }
.card-body{ padding:1.1rem; }
.card-body.tight{ padding:.4rem .5rem; }

.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:1.1rem; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.1rem; }
.grid-auto{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:1rem; align-items:stretch; }
.grid-auto > .card{ height:100%; }

/* ── BOTONES ────────────────────────────────────────────── */
.btn{ display:inline-flex; align-items:center; gap:.4rem; padding:.55rem 1.1rem; border-radius:var(--radio); font-family:var(--body); font-size:.9rem; font-weight:600; cursor:pointer; border:none; transition:all var(--trans); text-decoration:none; }
.btn-primary{ background:var(--verde); color:#fff; }
.btn-primary:hover{ background:var(--verde-osc); color:#fff; }
.btn-dark{ background:var(--carbon); color:#fff; }
.btn-dark:hover{ background:var(--carbon-2); color:#fff; }
.btn-ambar{ background:var(--ambar); color:#3a2600; }
.btn-ambar:hover{ background:var(--ambar-osc); }
.btn-outline{ background:#fff; color:var(--negro); border:1.5px solid var(--gris-linea); }
.btn-outline:hover{ border-color:var(--verde); color:var(--verde); }
.btn-danger{ background:var(--rojo); color:#fff; }
.btn-sm{ padding:.35rem .75rem; font-size:.8rem; }
.btn-lg{ padding:.8rem 1.6rem; font-size:1rem; }
.btn-block{ width:100%; justify-content:center; }

/* ── FORMULARIOS ────────────────────────────────────────── */
.form-group{ margin-bottom:1rem; }
.form-row{ display:flex; gap:.75rem; flex-wrap:wrap; }
.form-row > .form-group{ flex:1; min-width:130px; }
.form-label{ display:block; font-size:.78rem; font-weight:700; color:var(--gris-txt); margin-bottom:.35rem; text-transform:uppercase; letter-spacing:.03em; }
.form-control{ width:100%; padding:.6rem .85rem; border:1.5px solid var(--gris-linea); border-radius:var(--radio); font-family:var(--body); font-size:.95rem; background:#fff; color:var(--negro); transition:border-color var(--trans),box-shadow var(--trans); }
.form-control:focus{ outline:none; border-color:var(--verde-claro); box-shadow:0 0 0 3px rgba(176,27,46,.15); }
select.form-control{ appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2361706A' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right .85rem center; padding-right:2rem; }
.hint{ font-size:.78rem; color:var(--gris-txt); margin-top:.3rem; }

/* ── ALERTAS ────────────────────────────────────────────── */
.alert{ padding:.75rem 1rem; border-radius:var(--radio); font-size:.9rem; margin-bottom:1rem; display:flex; gap:.5rem; align-items:flex-start; }
.alert-error{ background:#FDE8E8; color:#8b1a1a; border-left:3px solid var(--rojo); }
.alert-success{ background:#E6F6ED; color:#12602f; border-left:3px solid var(--verde); }
.alert-warning{ background:#FFF6E4; color:#7a5000; border-left:3px solid var(--ambar); }
.alert-info{ background:#E9F0FF; color:#1a2e8a; border-left:3px solid #4A7AFF; }

/* ── TABS / PILLS ───────────────────────────────────────── */
.tabs{ display:flex; gap:.35rem; overflow-x:auto; padding-bottom:.25rem; margin-bottom:1rem; flex-wrap:wrap; }
.tab-btn{ white-space:nowrap; padding:.42rem .95rem; border-radius:20px; border:1.5px solid var(--gris-linea); background:#fff; font-size:.85rem; font-weight:600; cursor:pointer; color:var(--gris-txt); transition:all var(--trans); }
.tab-btn:hover{ border-color:var(--verde); color:var(--verde); }
.tab-btn.activo{ background:var(--verde); color:#fff; border-color:var(--verde); }

/* ── ESCUDO / EQUIPO ────────────────────────────────────── */
.escudo{ width:34px; height:34px; border-radius:8px; object-fit:cover; flex-shrink:0; background:var(--gris-bg); display:inline-flex; align-items:center; justify-content:center; font-family:var(--display); font-size:1rem; color:#fff; }
.escudo.lg{ width:56px; height:56px; font-size:1.5rem; border-radius:12px; }
.escudo.sm{ width:26px; height:26px; font-size:.8rem; border-radius:6px; }
.equipo-linea{ display:flex; align-items:center; gap:.6rem; min-width:0; }
.equipo-linea .nm{ font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* Tarjeta de equipo uniforme (página pública de Equipos) */
.equipo-card{ display:block; text-decoration:none; color:inherit; transition:box-shadow .15s, transform .15s; }
.equipo-card:hover{ box-shadow:var(--sombra-lg); transform:translateY(-2px); }
.equipo-card .cab{ display:flex; align-items:center; gap:.7rem; }
.equipo-card .cab .nom{ font-weight:700; font-size:1.05rem; line-height:1.15; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.3em; }
.equipo-card .ver-mas{ margin-top:.7rem; color:var(--verde); font-weight:600; font-size:.85rem; }

/* ── TABLA CLASIFICACIÓN ────────────────────────────────── */
.tabla{ width:100%; border-collapse:collapse; font-size:.9rem; }
.tabla thead th{ background:var(--carbon-2); color:#fff; padding:.55rem .5rem; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; text-align:center; }
.tabla thead th.izq{ text-align:left; }
.tabla tbody td{ padding:.5rem .5rem; border-bottom:1px solid var(--gris-linea); text-align:center; vertical-align:middle; }
.tabla tbody td.izq{ text-align:left; }
.tabla tbody tr:last-child td{ border-bottom:none; }
.tabla tbody tr:nth-child(even){ background:#fafbfa; }
.pos{ width:26px; height:26px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-weight:700; font-size:.82rem; background:var(--gris-bg); color:var(--gris-txt); }
.pos.clas{ background:var(--verde); color:#fff; }        /* clasifica a playoff */
.tabla .pts{ font-family:var(--display); font-size:1.15rem; color:var(--verde); }
.leyenda{ font-size:.8rem; color:var(--gris-txt); margin-top:.6rem; }
.leyenda .dot{ display:inline-block; width:10px; height:10px; border-radius:50%; background:var(--verde); margin-right:.3rem; vertical-align:middle; }

/* ── PARTIDOS ───────────────────────────────────────────── */
.partido{ display:flex; align-items:center; gap:.5rem; padding:.7rem .8rem; border:1px solid var(--gris-linea); border-radius:var(--radio); background:#fff; margin-bottom:.55rem; }
.partido .eq{ flex:1; display:flex; align-items:center; gap:.5rem; min-width:0; }
.partido .eq.der{ justify-content:flex-end; text-align:right; }
.partido .eq .nm{ font-weight:600; font-size:.92rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.partido .marcador{ font-family:var(--display); font-size:1.5rem; min-width:64px; text-align:center; background:var(--carbon); color:#fff; border-radius:8px; padding:.1rem .5rem; }
.partido .marcador.pend{ background:var(--gris-bg); color:var(--gris-txt); font-size:1rem; letter-spacing:.05em; }
/* Fondo según el grupo/categoría */
.partido.m-a{ background:var(--grupo-a); border-color:var(--grupo-a); color:#fff; }
.partido.m-a .nm{ color:#fff; }
.partido.m-b{ background:#fff; border-color:var(--gris-linea); color:var(--negro); }
.partido.m-vet{ background:var(--grupo-vet); border-color:var(--grupo-vet); color:#fff; }

/* Distintivo de fase junto al lugar */
.fbadge{ display:inline-block; font-size:.64rem; font-weight:800; padding:.14rem .55rem; border-radius:20px; text-transform:uppercase; letter-spacing:.03em; vertical-align:middle; margin-left:.35rem; white-space:nowrap; }
.fbadge-reg{ background:#eef1f3; color:#5a6a72; }
.fbadge-po{ background:linear-gradient(100deg,#f7d774,#e0a92e 55%,#c8891a); color:#3a2600; box-shadow:0 1px 5px rgba(200,137,26,.55); }

/* Fila de PLAYOFF resaltada: fondo dorado claro con brillo que recorre todo el fondo */
.partido.po{ border:2px solid #dca81f; color:#3a2600;
  background:linear-gradient(100deg,#f4d98a 0%,#f4d98a 38%,#fff7e0 50%,#f4d98a 62%,#f4d98a 100%);
  background-size:260% 100%;
  animation:po-shine 3.6s ease-in-out infinite;
  box-shadow:0 0 0 1px rgba(220,168,31,.35), 0 4px 16px rgba(220,168,31,.28); }
.partido.po .eq .nm{ color:#3a2600; }
.partido.po a.marcador.pend{ background:rgba(58,38,0,.14); color:#3a2600; }
.partido.po a.marcador{ background:#3a2600; color:#fff9e6; }
@keyframes po-shine{ 0%{ background-position:130% 0; } 100%{ background-position:-30% 0; } }
@media (prefers-reduced-motion: reduce){ .partido.po{ animation:none; background:#f4d98a; } }
.partido.m-vet .nm{ color:#fff; }
.partido.m-inf{ background:var(--grupo-inf); border-color:#9fcfe0; color:#0b2733; }
.partido.m-inf .nm{ color:#0b2733; }
/* Marcador contrastado sobre fondos oscuros */
.partido.m-a .marcador, .partido.m-vet .marcador{ background:#fff; color:#111; }
.partido.m-a .marcador.pend, .partido.m-vet .marcador.pend{ background:rgba(255,255,255,.22); color:#fff; }
.seccion-dia{ font-family:var(--display); font-size:1.05rem; text-transform:uppercase; letter-spacing:.03em; color:var(--gris-txt); margin:.6rem 0 .4rem; padding-left:.2rem; border-left:4px solid var(--neutro); }
.seccion-dia.inf{ border-left-color:var(--grupo-inf); }
.partido-meta{ font-size:.76rem; color:var(--gris-txt); display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; margin-bottom:.3rem; }
.badge{ display:inline-flex; align-items:center; gap:.25rem; padding:.15rem .55rem; border-radius:20px; font-size:.72rem; font-weight:700; }
.badge-pend{ background:#EAF0FF; color:#274690; }
.badge-jug{ background:#E6F6ED; color:#12602f; }
.badge-apl{ background:#FFF6E4; color:#7a5000; }
.badge-play{ background:#3a2600; color:var(--ambar); }

/* ── JUGADOR / ROSTER ───────────────────────────────────── */
.jug-row{ display:flex; align-items:center; gap:.7rem; padding:.5rem 0; border-bottom:1px solid var(--gris-linea); }
.jug-row:last-child{ border-bottom:none; }
.dorsal{ width:32px; height:32px; border-radius:8px; background:var(--carbon); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-size:1.05rem; flex-shrink:0; }
.tag{ display:inline-block; font-size:.68rem; font-weight:700; padding:.05rem .4rem; border-radius:5px; background:var(--gris-bg); color:var(--gris-txt); text-transform:uppercase; }
.tag.cap{ background:var(--ambar); color:#3a2600; }

/* ── FICHA DE PARTIDO ───────────────────────────────────── */
.ficha-score{ display:flex; align-items:center; justify-content:space-between; gap:.6rem; }
.ficha-score .lado{ flex:1; display:flex; flex-direction:column; align-items:center; gap:.4rem; text-align:center; min-width:0; }
.ficha-score .lado .nm{ font-weight:700; font-size:1rem; line-height:1.1; }
.ficha-score .res{ display:flex; flex-direction:column; align-items:center; gap:.4rem; }
.ficha-score .gg{ font-family:var(--display); font-size:2.6rem; line-height:1; letter-spacing:.02em; white-space:nowrap; }
.ficha-score .gg span{ color:var(--gris-txt); margin:0 .2rem; }
.ficha-score .gg.pend{ font-size:1.6rem; color:var(--gris-txt); }
.ficha-meta{ display:flex; align-items:center; justify-content:center; gap:1.2rem; flex-wrap:wrap; margin-top:1rem; padding-top:.8rem; border-top:1px solid var(--gris-linea); color:var(--gris-txt); font-size:.9rem; }
a.marcador{ text-decoration:none; cursor:pointer; }
a.marcador:hover{ filter:brightness(1.08); }

/* ── AVATAR JUGADOR ─────────────────────────────────────── */
.avatar{ width:38px; height:38px; border-radius:50%; overflow:hidden; flex-shrink:0; background:var(--gris-bg); display:inline-flex; align-items:center; justify-content:center; font-size:1.1rem; color:var(--gris-txt); }
.avatar img{ width:100%; height:100%; object-fit:cover; }
.avatar.ph{ background:var(--gris-linea); }
.avatar.lg{ width:60px; height:60px; font-size:1.7rem; }

/* ── STAT PILLS ─────────────────────────────────────────── */
.stat{ text-align:center; padding:.8rem .4rem; background:#fff; border-radius:var(--radio); box-shadow:var(--sombra); }
.stat .num{ font-family:var(--display); font-size:2rem; line-height:1; color:var(--verde); }
.stat .lab{ font-size:.74rem; color:var(--gris-txt); text-transform:uppercase; letter-spacing:.04em; }

/* ── AUTH ───────────────────────────────────────────────── */
.auth-wrap{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:1.5rem; background:linear-gradient(135deg,var(--verde) 0%,var(--verde-osc) 100%); }
.auth-card{ background:#fff; border-radius:var(--radio-lg); box-shadow:var(--sombra-lg); padding:2.4rem 2rem; width:100%; max-width:410px; }
.auth-logo{ text-align:center; margin-bottom:1.6rem; }
.auth-logo h1{ color:var(--verde); font-size:1.9rem; }
.auth-logo h1 span{ color:var(--ambar); }
.auth-logo p{ color:var(--gris-txt); font-size:.85rem; margin-top:.2rem; }

/* ── ADMIN LAYOUT ───────────────────────────────────────── */
.admin-wrap{ display:flex; min-height:100vh; }
.admin-sidebar{ width:230px; background:var(--carbon); color:#fff; flex-shrink:0; padding:1rem 0; position:sticky; top:0; align-self:flex-start; height:100vh; overflow-y:auto; }
.admin-sidebar .s-sec{ padding:.7rem 1.2rem .3rem; font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:rgba(255,255,255,.4); }
.admin-sidebar a{ display:flex; align-items:center; gap:.6rem; padding:.6rem 1.2rem; color:rgba(255,255,255,.85); font-size:.92rem; font-weight:500; border-left:3px solid transparent; }
.admin-sidebar a:hover{ background:rgba(255,255,255,.06); color:#fff; }
.admin-sidebar a.activo{ background:rgba(255,255,255,.1); border-left-color:var(--ambar); color:#fff; font-weight:700; }
.admin-brand{ font-family:var(--display); font-size:1.4rem; padding:.2rem 1.2rem 1rem; color:#fff; }
.admin-brand span{ color:var(--ambar); }
.admin-main{ flex:1; padding:1.4rem; min-width:0; background:var(--gris-bg); }
.admin-topbar{ display:none; }

/* Tabla admin genérica */
.tabla-admin{ width:100%; border-collapse:collapse; font-size:.9rem; background:#fff; border-radius:var(--radio); overflow:hidden; box-shadow:var(--sombra); }
.tabla-admin th{ background:var(--carbon-2); color:#fff; padding:.6rem .7rem; text-align:left; font-size:.75rem; text-transform:uppercase; letter-spacing:.03em; }
.tabla-admin td{ padding:.55rem .7rem; border-bottom:1px solid var(--gris-linea); vertical-align:middle; }
.tabla-admin tr:last-child td{ border-bottom:none; }
.acciones{ display:flex; gap:.35rem; flex-wrap:wrap; }

/* ── FOOTER ─────────────────────────────────────────────── */
footer{ background:var(--carbon); color:rgba(255,255,255,.65); text-align:center; padding:1.4rem; font-size:.82rem; margin-top:2rem; }
footer a{ color:var(--ambar); }

/* ── RESPONSIVE ─────────────────────────────────────────── */
@media (max-width:860px){
  .admin-sidebar{ position:fixed; z-index:1050; left:0; top:0; transform:translateX(-100%); transition:transform .25s; }
  .admin-sidebar.open{ transform:translateX(0); }
  .admin-topbar{ display:flex; align-items:center; justify-content:space-between; background:var(--carbon); color:#fff; padding:.7rem 1rem; position:sticky; top:0; z-index:90; }
  .admin-topbar .hamburger{ display:flex; }
  .admin-topbar .t-title{ font-family:var(--display); font-size:1.2rem; }
}
@media (max-width:768px){
  .hamburger{ display:flex; }
  .navbar-menu{ display:none; }
  .grid-2,.grid-3{ grid-template-columns:1fr; }
}
@media (max-width:480px){
  .container{ padding:1rem .7rem 3rem; }
  .tabla{ font-size:.82rem; }
  .tabla thead th, .tabla tbody td{ padding:.45rem .35rem; }
  .hide-xs{ display:none !important; }
}

/* ── UTILIDADES ─────────────────────────────────────────── */
.mt-1{ margin-top:.5rem; } .mt-2{ margin-top:1rem; } .mb-2{ margin-bottom:1rem; }
.text-muted{ color:var(--gris-txt); }
.text-center{ text-align:center; }
.flex{ display:flex; } .flex-between{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.gap-1{ gap:.5rem; } .wrap{ flex-wrap:wrap; }
.empty{ text-align:center; color:var(--gris-txt); padding:1.5rem; }
