/* ═══════════════════════════════════════════════════════════
   CERTUAP — Catálogo de Programas
   Versión mejorada real
   Responsive: celular, laptop y PC
   ═══════════════════════════════════════════════════════════ */

:root{
  --bg:#060708;
  --bg-2:#0b0d10;
  --bg-3:#10131a;
  --bg-4:#151923;

  --text:#edf2ff;
  --muted:#b5bdd1;
  --muted-2:#8992a7;
  --muted-3:#646d82;

  --ai:#ff6b35;
  --ai2:#f7931e;
  --ai3:#ff874f;

  --green:#22c55e;
  --green-soft:rgba(34,197,94,.12);

  --bdr:1px solid rgba(255,255,255,.08);
  --bdr-soft:1px solid rgba(255,255,255,.05);

  --shadow-sm:0 8px 20px rgba(0,0,0,.18);
  --shadow-md:0 14px 30px rgba(0,0,0,.26);
  --shadow-lg:0 22px 48px rgba(0,0,0,.38);
  --shadow-ai:0 12px 30px rgba(255,107,53,.16);

  --r:14px;
  --r2:18px;
  --pill:999px;

  --nav-h:78px;
}

*,
*::before,
*::after{
  margin:0;
  padding:0;
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  font-family:'Inter',sans-serif;
  color:var(--text);
  overflow-x:hidden;
  background:
    radial-gradient(circle at top center, rgba(255,107,53,.05), transparent 20%),
    linear-gradient(180deg, #040506 0%, #08090b 30%, #0b0d11 100%);
  padding-bottom:0;
}

main{
  flex:1;
  width:100%;
}

img{
  max-width:100%;
  display:block;
}

button,
input{
  font:inherit;
}

a{
  text-decoration:none;
}

::-webkit-scrollbar{
  width:6px;
  height:6px;
}

::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,#1a5f7a,#0e4d64);
  border-radius:999px;
}

::-webkit-scrollbar-track{
  background:rgba(255,255,255,.03);
}

/* ── NAVBAR ─────────────────────────────────────────────── */
.navbar{
  min-height:var(--nav-h);
  background:rgba(0,0,0,.84)!important;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border-bottom:var(--bdr-soft);
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:500;
  padding:.8rem 0;
  box-shadow:0 8px 28px rgba(0,0,0,.26);
}

.navbar-brand{
  display:flex;
  align-items:center;
}

.navbar-brand img{
  height:42px;
  width:auto;
  object-fit:contain;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.35));
}

.nav-link{
  color:rgba(255,255,255,.92)!important;
  padding:.55rem .95rem!important;
  border-radius:10px;
  transition:all .24s ease;
  font-weight:700;
  font-size:.92rem;
}

.nav-link:hover{
  color:var(--ai)!important;
  background:rgba(255,107,53,.08);
}

.nav-link.active{
  color:var(--ai)!important;
  background:rgba(255,107,53,.10);
}

.navbar-toggler{
  border-color:rgba(255,255,255,.15)!important;
  box-shadow:none!important;
}

/* ── HERO ───────────────────────────────────────────────── */
.hero{
  padding:calc(var(--nav-h) + 40px) 0 58px;
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 0%, rgba(87,197,182,.08), transparent 25%),
    linear-gradient(180deg, #020304 0%, #08090d 52%, transparent 100%);
}

.hero::before{
  content:'';
  position:absolute;
  inset:0;
  background-image:radial-gradient(rgba(255,255,255,.03) 1px, transparent 1px);
  background-size:28px 28px;
  mask-image:linear-gradient(to bottom, rgba(0,0,0,.95), rgba(0,0,0,.12));
  pointer-events:none;
}

.hero::after{
  content:'';
  position:absolute;
  left:50%;
  top:-120px;
  transform:translateX(-50%);
  width:780px;
  height:340px;
  background:radial-gradient(circle, rgba(255,107,53,.14), transparent 68%);
  filter:blur(18px);
  pointer-events:none;
}

.hero .container{
  position:relative;
  z-index:2;
}

.hero-badge{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  background:linear-gradient(135deg,#0e4d64,#1a5f7a);
  color:#fff;
  padding:.65rem 1.25rem;
  border-radius:var(--pill);
  font-weight:800;
  font-size:.82rem;
  margin-bottom:1rem;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:0 10px 28px rgba(14,77,100,.28);
}

.hero-title{
  font-size:clamp(2.15rem,5vw,3.5rem);
  font-weight:900;
  line-height:1.06;
  letter-spacing:-.03em;
  color:#fff;
  margin:.85rem 0 .9rem;
  text-wrap:balance;
}

.hero-sub{
  max-width:780px;
  margin:0 auto 1.6rem;
  font-size:clamp(.95rem,2vw,1.08rem);
  line-height:1.75;
  color:var(--muted);
  text-wrap:balance;
}

.hero-sub strong{
  color:#fff;
  font-weight:800;
}

.stat-pill{
  min-height:96px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  text-align:center;
  padding:.95rem .9rem;
  border-radius:18px;
  border:var(--bdr);
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
  transition:all .26s ease;
  box-shadow:var(--shadow-sm);
}

.stat-pill:hover{
  transform:translateY(-3px);
  border-color:rgba(255,107,53,.24);
  background:linear-gradient(180deg, rgba(255,107,53,.08), rgba(255,255,255,.04));
  box-shadow:var(--shadow-ai);
}

.stat-num{
  font-size:1.65rem;
  font-weight:900;
  line-height:1;
  color:var(--ai);
}

.stat-lbl{
  margin-top:.35rem;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--muted-2);
}

/* ── FILTROS DE ÁREA ────────────────────────────────────── */
.filtros-wrap{
  position:sticky;
  top:var(--nav-h);
  z-index:350;
  background:rgba(10,11,14,.88);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-top:var(--bdr-soft);
  border-bottom:var(--bdr);
  padding:1rem 0;
}

.filtros-inner{
  display:flex;
  gap:.7rem;
  flex-wrap:wrap;
  justify-content:center;
  scrollbar-width:none;
}

.filtros-inner::-webkit-scrollbar{
  display:none;
}

.filtro-btn{
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.1);
  color:#d5dbeb;
  padding:.8rem 1.45rem;
  border-radius:var(--pill);
  font-size:.94rem;
  font-weight:800;
  cursor:pointer;
  transition:all .22s ease;
  white-space:nowrap;
  flex-shrink:0;
  box-shadow:0 6px 16px rgba(0,0,0,.14);
}

.filtro-btn:hover{
  transform:translateY(-2px) scale(1.01);
}

.filtro-btn:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px rgba(255,107,53,.18);
}

.filtro-btn.area-edu:hover{
  background:rgba(167,139,250,.12);
  border-color:rgba(167,139,250,.4);
  color:#d8b4fe;
}
.filtro-btn.area-edu.active{
  background:linear-gradient(135deg,#6d28d9,#9333ea);
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(147,51,234,.34);
}

.filtro-btn.area-ing:hover{
  background:rgba(59,130,246,.12);
  border-color:rgba(59,130,246,.4);
  color:#93c5fd;
}
.filtro-btn.area-ing.active{
  background:linear-gradient(135deg,#1d4ed8,#2563eb);
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(37,99,235,.34);
}

.filtro-btn.area-adm:hover{
  background:rgba(34,197,94,.12);
  border-color:rgba(34,197,94,.4);
  color:#86efac;
}
.filtro-btn.area-adm.active{
  background:linear-gradient(135deg,#15803d,#16a34a);
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(22,163,74,.34);
}

.filtro-btn.area-sal:hover{
  background:rgba(239,68,68,.12);
  border-color:rgba(239,68,68,.4);
  color:#fca5a5;
}
.filtro-btn.area-sal.active{
  background:linear-gradient(135deg,#b91c1c,#dc2626);
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(220,38,38,.34);
}

.filtro-btn.area-tec:hover{
  background:rgba(139,92,246,.12);
  border-color:rgba(139,92,246,.4);
  color:#d8b4fe;
}
.filtro-btn.area-tec.active{
  background:linear-gradient(135deg,#7e22ce,#9333ea);
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(147,51,234,.34);
}

/* ── BUSCADOR ───────────────────────────────────────────── */
.buscador-wrap{
  display:none;
  padding:1rem 0 .35rem;
}

.buscador-wrap.show{
  display:block;
}

.buscador-box{
  position:relative;
  max-width:620px;
  margin:0 auto;
}

.buscador-inp{
  width:100%;
  height:52px;
  padding:.7rem 3rem .7rem 3rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.1);
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.035));
  color:#fff;
  font-size:.92rem;
  transition:all .22s ease;
  box-shadow:var(--shadow-sm);
}

.buscador-inp:focus{
  outline:none;
  border-color:rgba(255,107,53,.42);
  background:rgba(255,255,255,.08);
  box-shadow:0 0 0 4px rgba(255,107,53,.08);
}

.buscador-inp::placeholder{
  color:var(--muted-3);
}

.buscador-icon{
  position:absolute;
  left:1rem;
  top:50%;
  transform:translateY(-50%);
  color:var(--muted-3);
  font-size:.9rem;
}

.buscador-clear{
  position:absolute;
  right:1rem;
  top:50%;
  transform:translateY(-50%);
  border:none;
  background:transparent;
  color:var(--muted-3);
  font-size:.86rem;
  cursor:pointer;
  transition:.2s;
}

.buscador-clear:hover{
  color:#fff;
}

/* ── SECCIÓN ÁREA ───────────────────────────────────────── */
.area-section{
  display:none;
  min-height:220px;
}

.area-section.show{
  display:block;
  animation:fadeUp .32s ease;
}

@keyframes fadeUp{
  from{
    opacity:0;
    transform:translateY(10px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}

.sec-head{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.8rem;
  padding:1.5rem 0 .55rem;
  margin-bottom:1rem;
}

.sec-icon{
  width:42px;
  height:42px;
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:1rem;
  box-shadow:0 10px 24px rgba(0,0,0,.24);
}

.sec-head h3{
  margin:0;
  font-size:1.24rem;
  font-weight:900;
  letter-spacing:-.01em;
  color:#fff;
}

/* ── TABS ESPECIALIDADES ────────────────────────────────── */
.esp-tabs{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:.5rem;
  margin-bottom:1.35rem;
}

.esp-tab{
  background:rgba(255,255,255,.04);
  border:var(--bdr);
  color:#9ba4ba;
  padding:.62rem 1.08rem;
  border-radius:var(--pill);
  font-size:.88rem;
  font-weight:700;
  cursor:pointer;
  transition:all .22s ease;
  text-align:center;
}

.esp-tab:hover{
  color:#ffd0bf;
  border-color:rgba(255,107,53,.22);
  background:rgba(255,107,53,.06);
  transform:translateY(-1px);
}

.esp-tab.active{
  color:var(--ai3);
  border-color:rgba(255,107,53,.34);
  background:rgba(255,107,53,.12);
  box-shadow:0 8px 18px rgba(255,107,53,.10);
}

/* ── GRID PROGRAMAS ─────────────────────────────────────── */
.progs-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:1rem;
  margin-bottom:1rem;
}

/* ── TARJETAS ───────────────────────────────────────────── */
.prog-card{
  position:relative;
  overflow:hidden;
  min-height:96px;
  padding:1.05rem 1.1rem;
  border-radius:16px;
  border:var(--bdr);
  background:
    linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.01)),
    var(--bg-3);
  cursor:pointer;
  user-select:none;
  transition:all .24s ease;
  box-shadow:var(--shadow-sm);
}

.prog-card::before{
  content:'';
  position:absolute;
  top:0;
  left:0;
  bottom:0;
  width:3px;
  background:linear-gradient(180deg, transparent, rgba(255,107,53,.68), transparent);
  opacity:0;
  transition:opacity .24s ease;
}

.prog-card:hover{
  transform:translateY(-4px);
  background:
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015)),
    var(--bg-4);
  border-color:rgba(255,107,53,.22);
  box-shadow:var(--shadow-md);
}

.prog-card:hover::before{
  opacity:1;
}

.prog-card.selected{
  border-color:rgba(255,107,53,.46);
  background:
    linear-gradient(180deg, rgba(255,107,53,.08), rgba(255,255,255,.015)),
    #16131b;
  box-shadow:0 0 0 1px rgba(255,107,53,.16), var(--shadow-ai);
}

.prog-card.selected::before{
  opacity:1;
}

.prog-card.hidden{
  display:none !important;
}

.prog-card:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px rgba(255,107,53,.18);
}

.prog-inner{
  display:flex;
  align-items:flex-start;
  gap:.62rem;
}

.prog-check{
  width:22px;
  height:22px;
  margin-top:1px;
  border-radius:6px;
  border:2px solid rgba(255,255,255,.16);
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  background:transparent;
  transition:all .22s ease;
}

.prog-card.selected .prog-check{
  background:linear-gradient(135deg,var(--ai),var(--ai2));
  border-color:transparent;
  color:#fff;
  box-shadow:0 6px 16px rgba(255,107,53,.24);
}

.prog-num{
  min-width:20px;
  padding-top:2px;
  font-size:.75rem;
  font-weight:800;
  color:#5d6680;
}

.prog-nombre{
  flex:1;
  font-size:1rem;
  font-weight:700;
  line-height:1.38;
  letter-spacing:-.01em;
  color:#dfe5f5;
}

.prog-card.selected .prog-nombre{
  color:#fff;
}

.badge-hrs{
  flex-shrink:0;
  border-radius:999px;
  padding:4px 10px;
  line-height:1;
  font-size:.71rem;
  font-weight:800;
  color:#4ade80;
  background:rgba(34,197,94,.10);
  border:1px solid rgba(34,197,94,.20);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);
}

/* ── SIN RESULTADOS ─────────────────────────────────────── */
.sin-resultados{
  display:none;
  text-align:center;
  padding:2.3rem 1rem;
  color:var(--muted-3);
  border-radius:16px;
  border:var(--bdr-soft);
  background:rgba(255,255,255,.02);
}

.sin-resultados.show{
  display:block;
}

/* ── CUSTOM BOX ─────────────────────────────────────────── */
.custom-box{
  margin-top:.9rem;
  padding:1rem;
  border-radius:16px;
  border:1px dashed rgba(255,107,53,.24);
  background:linear-gradient(180deg, rgba(255,107,53,.05), rgba(255,107,53,.03));
  box-shadow:var(--shadow-sm);
}

.custom-box label{
  display:block;
  margin-bottom:.7rem;
  font-size:.92rem;
  font-weight:800;
  color:var(--ai3);
}

.custom-row{
  display:flex;
  gap:.55rem;
  flex-wrap:wrap;
}

.custom-inp{
  flex:1;
  min-width:220px;
  height:48px;
  padding:.7rem .95rem;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.05);
  color:#fff;
  font-size:.92rem;
  transition:all .22s ease;
}

.custom-inp:focus{
  outline:none;
  border-color:rgba(255,107,53,.42);
  background:rgba(255,255,255,.07);
  box-shadow:0 0 0 4px rgba(255,107,53,.08);
}

.custom-inp::placeholder{
  color:#697287;
}

.btn-add{
  height:48px;
  padding:0 1.1rem;
  border:none;
  border-radius:10px;
  font-size:.9rem;
  font-weight:800;
  color:#fff;
  cursor:pointer;
  white-space:nowrap;
  background:linear-gradient(135deg,var(--ai),var(--ai2));
  box-shadow:0 10px 22px rgba(255,107,53,.18);
  transition:all .22s ease;
}

.btn-add:hover{
  transform:translateY(-2px);
  filter:brightness(1.05);
  box-shadow:0 14px 26px rgba(255,107,53,.24);
}

.btn-add:active{
  transform:translateY(0);
}

/* ── BARRA INFERIOR ─────────────────────────────────────── */
#barraCarrito{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:600;
  display:none;
  align-items:center;
  gap:1rem;
  padding:.9rem 1.2rem;
  background:linear-gradient(135deg, rgba(13,13,24,.96), rgba(18,18,31,.98));
  border-top:1px solid rgba(255,107,53,.24);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  box-shadow:0 -10px 30px rgba(0,0,0,.55);
}

.barra-info{
  flex:1;
  min-width:0;
}

.barra-count{
  margin-bottom:3px;
  font-size:.83rem;
  font-weight:600;
  color:#a8b0c2;
}

.barra-precio{
  font-size:1.36rem;
  font-weight:900;
  line-height:1.05;
  color:var(--ai3);
}

.barra-tach{
  margin-left:6px;
  font-size:.74rem;
  color:#687189;
  text-decoration:line-through;
}

.btn-ir-carrito{
  display:flex;
  align-items:center;
  gap:.55rem;
  padding:.88rem 1.35rem;
  border:none;
  border-radius:14px;
  white-space:nowrap;
  cursor:pointer;
  color:#fff;
  font-size:.95rem;
  font-weight:900;
  background:linear-gradient(135deg,var(--ai),var(--ai2));
  box-shadow:0 10px 24px rgba(255,107,53,.28);
  transition:all .22s ease;
}

.btn-ir-carrito:hover{
  transform:translateY(-2px);
  filter:brightness(1.06);
  box-shadow:0 16px 28px rgba(255,107,53,.30);
}

.btn-badge{
  padding:2px 10px;
  border-radius:999px;
  background:rgba(0,0,0,.24);
  font-size:.74rem;
  font-weight:900;
}

/* ── TOAST ──────────────────────────────────────────────── */
#toast{
  position:fixed;
  top:90px;
  right:20px;
  z-index:700;
  display:none;
  align-items:center;
  gap:.55rem;
  max-width:320px;
  padding:.75rem 1rem;
  border-radius:14px;
  color:#4ade80;
  font-size:.84rem;
  font-weight:700;
  background:linear-gradient(135deg,#1a2a1a,#0d1a0d);
  border:1px solid rgba(34,197,94,.35);
  box-shadow:0 14px 28px rgba(0,0,0,.38);
  animation:slideIn .28s ease;
}

@keyframes slideIn{
  from{
    opacity:0;
    transform:translateX(70px);
  }
  to{
    opacity:1;
    transform:translateX(0);
  }
}

/* ── FOOTER ─────────────────────────────────────────────── */
footer{
  margin-top:auto;
  background:
    linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,0)),
    #050607;
  border-top:var(--bdr);
  padding:2rem 0;
  text-align:center;
  color:var(--muted-3);
  font-size:.84rem;
}

footer img{
  height:34px;
  width:auto;
  margin:0 auto .65rem;
  opacity:.96;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.25));
}

footer p{
  margin:0;
  letter-spacing:.01em;
}

/* espacio correcto para barra fija */
main.container.py-3{
  padding-bottom:130px !important;
}

/* ── RESPONSIVE PC MEDIANA ──────────────────────────────── */
@media (max-width:1400px){
  .progs-grid{
    grid-template-columns:repeat(4, minmax(0,1fr));
  }
}

/* ── RESPONSIVE LAPTOP ──────────────────────────────────── */
@media (max-width:1200px){
  .hero{
    padding-top:calc(var(--nav-h) + 34px);
  }

  .progs-grid{
    grid-template-columns:repeat(3, minmax(0,1fr));
  }

  .hero-sub{
    max-width:720px;
  }
}

/* ── RESPONSIVE TABLET ──────────────────────────────────── */
@media (max-width:992px){
  :root{
    --nav-h:74px;
  }

  .navbar-brand img{
    height:38px;
  }

  .hero{
    padding-bottom:50px;
  }

  .hero-title{
    font-size:clamp(2rem,6vw,3rem);
  }

  .hero-sub{
    font-size:.98rem;
  }

  .stat-pill{
    min-height:90px;
  }

  .progs-grid{
    grid-template-columns:repeat(2, minmax(0,1fr));
  }

  .filtros-inner{
    justify-content:flex-start;
    flex-wrap:nowrap;
    overflow-x:auto;
    padding-bottom:.1rem;
  }

  .esp-tabs{
    justify-content:flex-start;
    flex-wrap:nowrap;
    overflow-x:auto;
    padding-bottom:.15rem;
    scrollbar-width:none;
  }

  .esp-tabs::-webkit-scrollbar{
    display:none;
  }

  .esp-tab{
    flex-shrink:0;
  }

  .custom-row{
    flex-direction:column;
  }

  .btn-add{
    width:100%;
  }
}

/* ── RESPONSIVE CELULAR ─────────────────────────────────── */
@media (max-width:768px){
  .navbar{
    padding:.7rem 0;
  }

  .nav-link{
    font-size:.9rem;
    padding:.66rem .82rem !important;
  }

  .hero{
    padding-top:calc(var(--nav-h) + 24px);
    padding-bottom:40px;
  }

  .hero-badge{
    font-size:.74rem;
    padding:.58rem 1rem;
  }

  .hero-title{
    font-size:clamp(1.8rem,8vw,2.55rem);
    line-height:1.08;
  }

  .hero-sub{
    margin-bottom:1.25rem;
    font-size:.94rem;
    line-height:1.62;
  }

  .stat-pill{
    min-height:84px;
    padding:.8rem .55rem;
    border-radius:16px;
  }

  .stat-num{
    font-size:1.32rem;
  }

  .stat-lbl{
    font-size:.67rem;
  }

  .filtros-wrap{
    padding:.85rem 0;
  }

  .filtro-btn{
    font-size:.84rem;
    padding:.68rem 1rem;
  }

  .buscador-wrap{
    padding:.85rem 0 .18rem;
  }

  .buscador-inp{
    height:48px;
    font-size:.88rem;
  }

  .sec-head{
    padding:1.15rem 0 .45rem;
  }

  .sec-head h3{
    font-size:1.08rem;
  }

  .sec-icon{
    width:38px;
    height:38px;
    font-size:.9rem;
  }

  .esp-tab{
    font-size:.84rem;
    padding:.58rem .92rem;
  }

  .progs-grid{
    grid-template-columns:1fr 1fr;
    gap:.8rem;
  }

  .prog-card{
    min-height:88px;
    padding:.95rem .92rem;
    border-radius:14px;
  }

  .prog-inner{
    gap:.5rem;
  }

  .prog-num{
    min-width:16px;
    font-size:.72rem;
  }

  .prog-nombre{
    font-size:.9rem;
    line-height:1.34;
  }

  .badge-hrs{
    font-size:.67rem;
    padding:4px 8px;
  }

  .custom-box{
    padding:.9rem;
  }

  .custom-box label{
    font-size:.86rem;
  }

  .custom-inp,
  .btn-add{
    height:46px;
    font-size:.88rem;
  }

  #barraCarrito{
    gap:.75rem;
    padding:.82rem .9rem;
  }

  .barra-count{
    font-size:.76rem;
  }

  .barra-precio{
    font-size:1.12rem;
  }

  .btn-ir-carrito{
    padding:.82rem 1rem;
    font-size:.88rem;
    border-radius:12px;
  }

  #toast{
    top:84px;
    right:12px;
    left:12px;
    max-width:none;
  }

  footer{
    padding:1.6rem 0;
    font-size:.8rem;
  }

  main.container.py-3{
    padding-bottom:118px !important;
  }
}

/* ── RESPONSIVE CELULAR PEQUEÑO ─────────────────────────── */
@media (max-width:560px){
  .hero .row.g-2 > div{
    width:50%;
    flex:0 0 auto;
  }

  .progs-grid{
    grid-template-columns:1fr;
  }

  .prog-card{
    min-height:auto;
  }

  #barraCarrito{
    align-items:stretch;
  }

  .btn-ir-carrito{
    padding:.8rem .95rem;
  }
}

/* ── RESPONSIVE MUY PEQUEÑO ─────────────────────────────── */
@media (max-width:420px){
  .hero-title{
    font-size:1.65rem;
  }

  .hero-sub{
    font-size:.9rem;
  }

  .filtro-btn{
    font-size:.8rem;
    padding:.64rem .92rem;
  }

  .buscador-inp{
    padding-left:2.65rem;
    padding-right:2.65rem;
  }

  .prog-nombre{
    font-size:.88rem;
  }

  .barra-precio{
    font-size:1rem;
  }

  .btn-ir-carrito{
    font-size:.84rem;
  }
}