/* =========================================================
   styles.css — todo el aspecto visual del sitio
   Los colores están arriba como "variables": cambia uno
   y cambia en toda la página.
   ========================================================= */

:root{
  --bg:        #0b0d12;   /* fondo general */
  --bg-2:      #11141b;   /* fondo de tarjetas / barras */
  --bg-3:      #171b24;   /* hover */
  --line:      #232936;   /* bordes */
  --text:      #e8ecf3;   /* texto principal */
  --muted:     #8c95a8;   /* texto secundario */
  --accent:    #ffb01f;   /* color de marca (dorado) */
  --accent-2:  #ff5c39;   /* color secundario */
  --verde:     #4ade80;   /* nota buena de Metacritic */
  --amarillo:  #facc15;   /* nota media */
  --rojo:      #f87171;   /* nota mala */
  --radius:    14px;
  --shadow:    0 18px 40px -18px rgba(0,0,0,.85);
  --topbar-h:  68px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
.wrap{ width:min(1280px, 100% - 40px); margin-inline:auto; }
.is-hidden{ display:none !important; }

/* ---------------- BARRA SUPERIOR ---------------- */
.topbar{
  position:sticky; top:0; z-index:50;
  height:var(--topbar-h);
  background:rgba(11,13,18,.72);
  backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:background .25s, border-color .25s;
}
.topbar.is-stuck{ background:rgba(11,13,18,.95); border-bottom-color:var(--line); }
.topbar-inner{ height:100%; display:flex; align-items:center; gap:22px; }

.logo{ display:flex; align-items:center; gap:10px; flex-shrink:0; }
.logo-mark{
  width:34px; height:34px; border-radius:10px;
  display:grid; place-items:center;
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  color:#151009; font-weight:800; font-size:18px;
}
.logo-text{ font-weight:600; font-size:19px; letter-spacing:-.02em; }
.logo-text b{ color:var(--accent); font-weight:800; }

.nav{ display:flex; gap:4px; margin-left:8px; }
.nav-link{
  padding:9px 15px; border-radius:9px;
  font-size:14.5px; font-weight:500; color:var(--muted);
  transition:color .18s, background .18s;
}
.nav-link:hover{ color:var(--text); background:var(--bg-3); }
.nav-link.is-active{ color:#151009; background:var(--accent); font-weight:600; }

.search{ position:relative; margin-left:auto; width:min(300px, 30vw); }
.search-icon{
  position:absolute; left:13px; top:50%; transform:translateY(-50%);
  width:17px; height:17px; fill:var(--muted); pointer-events:none;
}
#search{
  width:100%; height:42px; padding:0 14px 0 39px;
  background:var(--bg-2); border:1px solid var(--line);
  border-radius:11px; color:var(--text); font-size:14.5px; font-family:inherit;
  outline:none; transition:border-color .18s, background .18s;
}
#search::placeholder{ color:var(--muted); }
#search:focus{ border-color:var(--accent); background:var(--bg-3); }

.burger{ display:none; background:none; border:0; padding:6px; cursor:pointer; }
.burger span{ display:block; width:22px; height:2px; background:var(--text); margin:5px 0; border-radius:2px; }

/* ---------------- HERO ---------------- */
.hero{ position:relative; min-height:min(540px, 72vh); margin-top:calc(var(--topbar-h) * -1); display:flex; }
.hero-bg{ position:absolute; inset:0; transition:background .6s ease; }
.hero-shade{
  position:absolute; inset:0;
  background:
    linear-gradient(to top,   var(--bg) 2%, rgba(11,13,18,.35) 55%, rgba(11,13,18,.7) 100%),
    linear-gradient(to right, var(--bg) 0%, rgba(11,13,18,.72) 45%, rgba(11,13,18,.1) 100%);
}
.hero-inner{
  position:relative; z-index:2; align-self:flex-end;
  padding:calc(var(--topbar-h) + 40px) 0 46px;
}
.hero-content{ max-width:620px; }
.hero-kicker{
  display:inline-block; margin-bottom:14px; padding:5px 11px; border-radius:999px;
  background:rgba(255,176,31,.14); border:1px solid rgba(255,176,31,.35);
  color:var(--accent); font-size:11.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
}
.hero-title{
  margin:0 0 14px; font-size:clamp(34px, 5.4vw, 60px);
  line-height:1.03; letter-spacing:-.035em; font-weight:800;
}
.hero-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin-bottom:14px; font-size:14px; color:var(--muted); }
.hero-sinopsis{
  margin:0 0 24px; font-size:16px; line-height:1.6; color:#c3cad8;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.hero-actions{ display:flex; gap:12px; flex-wrap:wrap; }

.btn{
  display:inline-flex; align-items:center; gap:9px;
  padding:13px 24px; border:0; border-radius:11px; cursor:pointer;
  font-family:inherit; font-size:15px; font-weight:600;
  transition:transform .15s, filter .18s, background .18s;
}
.btn:hover{ transform:translateY(-2px); }
.btn-primary{ background:var(--accent); color:#151009; }
.btn-primary:hover{ filter:brightness(1.08); }
.btn-secondary{ background:rgba(255,255,255,.1); color:var(--text); border:1px solid rgba(255,255,255,.16); }
.btn-secondary:hover{ background:rgba(255,255,255,.17); }
.btn svg{ width:17px; height:17px; fill:currentColor; }

.hero-dots{ display:flex; gap:8px; margin-top:30px; }
.hero-dots button{
  width:26px; height:4px; border:0; border-radius:99px; padding:0; cursor:pointer;
  background:rgba(255,255,255,.24); transition:background .2s, width .2s;
}
.hero-dots button.is-active{ background:var(--accent); width:40px; }

/* ---------------- NOTA DE METACRITIC ---------------- */
.nota{ font-weight:700; }
.nota.is-buena{ color:var(--verde);    border-color:rgba(74,222,128,.4) !important; }
.nota.is-media{ color:var(--amarillo); border-color:rgba(250,204,21,.4) !important; }
.nota.is-mala { color:var(--rojo);     border-color:rgba(248,113,113,.4) !important; }

/* ---------------- FILTROS (chips) ---------------- */
.main{ padding:36px 0 60px; }
.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:30px; }
.chip{
  padding:8px 15px; border-radius:999px; cursor:pointer;
  background:var(--bg-2); border:1px solid var(--line);
  color:var(--muted); font-family:inherit; font-size:13.5px; font-weight:500;
  transition:all .18s;
}
.chip:hover{ color:var(--text); border-color:#39414f; }
.chip.is-active{ background:var(--accent); border-color:var(--accent); color:#151009; font-weight:600; }

/* ---------------- BLOQUES ---------------- */
.block{ margin-bottom:46px; }
.block-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; gap:16px; }
.block-title{
  margin:0; font-size:22px; font-weight:700; letter-spacing:-.02em;
  display:flex; align-items:center; gap:11px;
}
.block-title::before{
  content:''; width:4px; height:20px; border-radius:99px;
  background:linear-gradient(var(--accent), var(--accent-2));
}
.block-count{ font-size:13px; font-weight:500; color:var(--muted); flex-shrink:0; }

/* Rejilla de juegos: tarjetas apaisadas, como en RAWG o Steam */
.grid{
  display:grid; gap:26px 18px;
  grid-template-columns:repeat(auto-fill, minmax(290px, 1fr));
}

/* ---------------- TARJETA ---------------- */
.card{ cursor:pointer; }
.card-shot{
  position:relative; aspect-ratio:16/9; border-radius:var(--radius); overflow:hidden;
  background:var(--bg-2); border:1px solid var(--line);
  transition:transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s, border-color .22s;
}
.card:hover .card-shot{ transform:translateY(-5px); box-shadow:var(--shadow); border-color:#3a4252; }
.card-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }

.card-rating{
  position:absolute; top:9px; right:9px; z-index:2;
  padding:4px 8px; border-radius:7px;
  background:rgba(8,10,14,.82); backdrop-filter:blur(6px);
  font-size:12px; font-weight:700; color:var(--accent);
  display:flex; align-items:center; gap:4px;
}
.card-rating svg{ width:11px; height:11px; fill:var(--accent); }

.card-meta-score{
  position:absolute; top:9px; left:9px; z-index:2;
  min-width:28px; padding:4px 7px; border-radius:7px; text-align:center;
  background:rgba(8,10,14,.82); backdrop-filter:blur(6px);
  font-size:12px; font-weight:800;
}

.card-plats{ position:absolute; left:9px; bottom:9px; z-index:2; display:flex; gap:4px; flex-wrap:wrap; }
.plat{
  padding:3px 7px; border-radius:5px; font-size:10px; font-weight:700; letter-spacing:.03em;
  background:rgba(8,10,14,.8); backdrop-filter:blur(6px); color:#d7dde8; text-transform:uppercase;
}

.card-hover{
  position:absolute; inset:0; z-index:3;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  background:linear-gradient(to top, rgba(8,10,14,.9), rgba(8,10,14,.35));
  opacity:0; transition:opacity .22s;
}
.card:hover .card-hover{ opacity:1; }
.card-hover i{
  width:46px; height:46px; border-radius:50%; display:grid; place-items:center;
  background:var(--accent);
}
.card-hover svg{ width:20px; height:20px; fill:#151009; }
.card-hover span{ font-size:12px; font-weight:700; color:#fff; }

.card-body{ padding:11px 2px 0; }
.card-title{
  font-size:15px; font-weight:600; line-height:1.3; margin:0 0 4px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.card-meta{ font-size:12.5px; color:var(--muted); display:flex; gap:7px; }
.card-meta span+span::before{ content:'·'; margin-right:7px; }

.empty{ text-align:center; padding:60px 0; color:var(--muted); font-size:15px; }

/* ---------------- CATÁLOGO VACÍO ---------------- */
.vacio{
  grid-column:1/-1; text-align:left; max-width:560px; margin:20px auto 60px;
  background:var(--bg-2); border:1px solid var(--line); border-radius:18px; padding:34px;
}
.vacio h2{ margin:0 0 12px; font-size:23px; font-weight:700; letter-spacing:-.02em; }
.vacio p{ margin:0 0 16px; font-size:15px; line-height:1.65; color:#c3cad8; }
.vacio ol{ margin:0 0 18px; padding-left:20px; color:#c3cad8; font-size:15px; line-height:2; }
.vacio a{ color:var(--accent); text-decoration:underline; text-underline-offset:3px; }
.vacio code{
  background:var(--bg-3); padding:3px 8px; border-radius:6px;
  font-size:13px; color:var(--accent);
}
.vacio-nota{ margin:0 !important; font-size:13.5px !important; color:var(--muted) !important; }

/* ---------------- MODAL ---------------- */
.modal{ position:fixed; inset:0; z-index:100; display:none; place-items:center; padding:20px; }
.modal.is-open{ display:grid; }
.modal-backdrop{ position:absolute; inset:0; background:rgba(5,6,9,.78); backdrop-filter:blur(6px); }
.modal-card{
  position:relative; width:min(760px, 100%); max-height:88vh; overflow:auto;
  background:var(--bg-2); border:1px solid var(--line); border-radius:20px;
  box-shadow:var(--shadow); animation:pop .25s cubic-bezier(.2,.8,.3,1);
}
@keyframes pop{ from{ opacity:0; transform:translateY(18px) scale(.97);} }
/* El arte del juego arriba. El degradado solo tapa la mitad de
   abajo, para que la ilustración se vea de verdad y se funda
   con el fondo de la ventana sin un corte brusco. */
.modal-hero{ position:relative; aspect-ratio:16/7; min-height:230px; }
.modal-hero-shade{
  position:absolute; inset:0;
  background:linear-gradient(to top,
    var(--bg-2) 0%,
    rgba(17,20,27,.92) 26%,
    rgba(17,20,27,.55) 52%,
    rgba(17,20,27,.12) 78%,
    transparent 100%);
}
.modal-hero-texto{
  position:absolute; left:30px; right:30px; bottom:20px; z-index:2;
}
.modal-hero-texto .modal-meta{ margin-bottom:0; }
.modal-close{
  position:absolute; top:14px; right:14px; z-index:3;
  width:34px; height:34px; border-radius:50%; border:0; cursor:pointer;
  background:rgba(8,10,14,.7); color:#fff; font-size:19px; line-height:1;
}
.modal-close:hover{ background:rgba(8,10,14,.95); }
.modal-body{ padding:20px 30px 30px; position:relative; z-index:2; }
.modal-title{
  margin:0 0 12px; font-size:clamp(26px,3.4vw,34px); font-weight:800; letter-spacing:-.03em;
  text-shadow:0 2px 18px rgba(0,0,0,.75);
}
.modal-meta{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:18px; }
.pill{
  padding:5px 11px; border-radius:999px; font-size:12.5px; font-weight:600;
  background:var(--bg-3); border:1px solid var(--line); color:#b9c1d0;
}
.pill.is-rating{ background:rgba(255,176,31,.13); border-color:rgba(255,176,31,.35); color:var(--accent); }
.modal-sinopsis{ font-size:15.5px; line-height:1.68; color:#c3cad8; margin:0 0 20px; }
.modal-actions{ display:flex; gap:12px; flex-wrap:wrap; }

/* ---------------- PÁGINA DE FICHA (ver.html) ---------------- */
.ficha-top{ position:relative; padding:22px 0 44px; overflow:hidden; }
.ficha-fondo{ position:absolute; inset:0; filter:blur(3px) saturate(.85); transform:scale(1.07); }
.ficha-shade{
  position:absolute; inset:0;
  background:
    linear-gradient(to top,   var(--bg) 1%, rgba(11,13,18,.72) 60%, rgba(11,13,18,.86) 100%),
    linear-gradient(to right, rgba(11,13,18,.92) 10%, rgba(11,13,18,.5) 100%);
}
.ficha-top-inner{ position:relative; z-index:2; }
.back{
  display:inline-block; margin-bottom:26px; font-size:14px; color:#b9c1d0;
  transition:color .18s;
}
.back:hover{ color:var(--accent); }

/* Ficha: portada apaisada + datos al lado */
.ficha{ display:grid; grid-template-columns:380px 1fr; gap:34px; align-items:start; }
.ficha-portada{
  position:relative; aspect-ratio:16/9; border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--line); display:grid; place-items:center; padding:16px; text-align:center;
  box-shadow:var(--shadow);
}
.ficha-portada span{ font-size:17px; font-weight:800; color:rgba(255,255,255,.94); }
.ficha-titulo{
  margin:0 0 14px; font-size:clamp(28px,4vw,44px); font-weight:800;
  letter-spacing:-.035em; line-height:1.03;
}

/* Tabla de datos de la ficha */
.datos{ display:flex; flex-direction:column; gap:9px; }
.dato{ display:flex; gap:12px; font-size:14.5px; line-height:1.5; }
.dato b{ color:var(--muted); font-weight:600; min-width:108px; flex-shrink:0; }
.dato span{ color:#c3cad8; }
.dato a{ color:var(--accent); }
.dato a:hover{ text-decoration:underline; }

/* Galería de capturas */
.shots{
  display:grid; gap:14px;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
}
.shot{
  position:relative; aspect-ratio:16/9; border-radius:12px; overflow:hidden;
  padding:0; border:1px solid var(--line); background:var(--bg-2); cursor:pointer;
  transition:transform .2s cubic-bezier(.2,.7,.3,1), border-color .2s, box-shadow .2s;
}
.shot:hover{ transform:translateY(-4px); border-color:#3a4252; box-shadow:var(--shadow); }
.shot img{ width:100%; height:100%; object-fit:cover; }

/* Visor a pantalla completa */
.visor{
  position:fixed; inset:0; z-index:200; display:none;
  align-items:center; justify-content:center; padding:56px 20px;
  background:rgba(4,5,8,.93); backdrop-filter:blur(8px);
}
.visor.is-open{ display:flex; }
.visor img{
  max-width:100%; max-height:100%; border-radius:12px;
  box-shadow:0 30px 70px -20px rgba(0,0,0,.9);
}
.visor-cerrar, .visor-nav{
  position:absolute; z-index:2; cursor:pointer; color:#fff;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.18);
  border-radius:50%; line-height:1; transition:background .18s;
}
.visor-cerrar:hover, .visor-nav:hover{ background:rgba(255,255,255,.24); }
.visor-cerrar{ top:20px; right:22px; width:40px; height:40px; font-size:23px; }
.visor-nav{ top:50%; transform:translateY(-50%); width:46px; height:46px; font-size:30px; }
.visor-nav.is-prev{ left:20px; }
.visor-nav.is-next{ right:20px; }

/* ---------------- PIE ---------------- */
.footer{ border-top:1px solid var(--line); background:var(--bg-2); padding:44px 0 26px; }
.footer-inner{ display:flex; flex-wrap:wrap; gap:26px; justify-content:space-between; align-items:flex-start; }
.footer-note{ margin:12px 0 0; font-size:13.5px; color:var(--muted); max-width:340px; line-height:1.6; }
.footer-note a{ color:var(--accent); }
.footer-links{ display:flex; flex-wrap:wrap; gap:20px; }
.footer-links a{ font-size:14px; color:var(--muted); transition:color .18s; }
.footer-links a:hover{ color:var(--accent); }
.footer-copy{ margin-top:32px; padding-top:20px; border-top:1px solid var(--line); font-size:12.5px; color:var(--muted); }

/* ---------------- MÓVIL ---------------- */
@media (max-width:860px){
  .burger{ display:block; }
  .nav{
    position:absolute; top:var(--topbar-h); left:0; right:0;
    flex-direction:column; gap:2px; padding:12px 20px 18px;
    background:rgba(11,13,18,.98); border-bottom:1px solid var(--line);
    display:none;
  }
  .nav.is-open{ display:flex; }
  .nav-link{ padding:12px 14px; }
  .search{ width:auto; flex:1; }
  .logo-text{ display:none; }
  .grid{ grid-template-columns:1fr; gap:22px; }
  .modal-body{ padding:16px 20px 24px; }
  .modal-hero{ min-height:180px; }
  .modal-hero-texto{ left:20px; right:20px; bottom:16px; }
  .hero{ min-height:auto; }
  .hero-inner{ padding-bottom:34px; }
  .vacio{ padding:24px; }

  .ficha{ grid-template-columns:1fr; gap:22px; }
  .dato{ flex-direction:column; gap:2px; }
  .dato b{ min-width:0; }
  .shots{ grid-template-columns:1fr; gap:12px; }
  .visor{ padding:56px 12px; }
  .visor-nav{ width:38px; height:38px; font-size:25px; }
}
