/* ---------------------------------------------------------------
   Sistema visual: escala fluida donde 1rem = 1px a 1440px de ancho
   (y 1px a 375px en móvil). Todas las medidas van en rem = px del
   diseño, así el layout escala con la ventana sin breakpoints.
   --------------------------------------------------------------- */

:root{
  --color-primary:#050505;
  --color-secondary:#dbdbdb;
  --color-line:#bababa;
  --color-dim:#565656;
  --grid-col-repeat:4;
  --grid-col-gap:10rem;
  --grid-padding:20rem;

  /* PP Neue Montreal es comercial. Si tienes licencia, declara el
     @font-face y ponla la primera en esta pila. */
  --font:"Helvetica Neue",Helvetica,Inter,Arial,sans-serif;
}

*,*:before,*:after{box-sizing:border-box}

html{
  font-size:.0694444444vw;      /* 1440px de referencia */
  -webkit-text-size-adjust:100%;
  -webkit-tap-highlight-color:transparent;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}

body{
  width:100%; min-height:100svh; margin:0; overflow-x:hidden;
  background:var(--color-secondary);
  color:var(--color-primary);
  font-family:var(--font);
  font-size:13rem;
  font-feature-settings:"palt";
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

::selection{background:var(--color-primary);color:var(--color-secondary)}

a{color:inherit;text-decoration:none}

/* subrayado que crece en hover */
.u{position:relative;display:inline-block}
.u:after{
  content:"";position:absolute;left:0;bottom:-1rem;
  width:0;height:1px;background:var(--color-primary);
  transition:width .3s ease;
}
@media(hover:hover){ .u:hover:after{width:100%} }

/* ---------------- cabecera fija ---------------- */
.header{position:fixed;top:6px;left:0;width:100%;z-index:1000;mix-blend-mode:normal}
.header__inner{
  padding-inline:var(--grid-padding);
  display:grid;grid-template-columns:repeat(var(--grid-col-repeat),1fr);
  column-gap:var(--grid-col-gap);
}
.header__nav{grid-column:1/span 1}
.header__ul{display:flex;gap:16rem;list-style:none;margin:0;padding:0}
.header__list{font-size:12rem}
.header__list a{display:inline-block;height:fit-content}
.header__list a[aria-current="page"]:after{width:100%}
.header__source{
  display:flex;gap:6rem;width:fit-content;grid-column:3/span 1;
  font-size:12rem;height:fit-content;
}
.header__arrow{display:inline-block;transform:rotate(-35deg)}
.header__meta{
  width:fit-content;grid-column:4/span 1;font-size:12rem;
  margin-left:auto;color:var(--color-dim);
}

/* ---------------- titular ---------------- */
.head{padding-inline:var(--grid-padding);padding-top:120rem}
.head__contents{
  row-gap:10rem;display:grid;
  grid-template-columns:repeat(var(--grid-col-repeat),1fr);
  column-gap:var(--grid-col-gap);
}
.head__text{
  font-size:120rem;line-height:1;letter-spacing:-.02em;
  text-transform:uppercase;margin:0;overflow:hidden;
}
.head__text[data-grid="1"]{grid-column:1/span 2;grid-row:1}
.head__text[data-grid="2"]{grid-column:4/span 1;grid-row:1}
.head__text[data-grid="3"]{grid-column:2/span 2;grid-row:2}
.head__text[data-grid="4"]{grid-column:4/span 1;grid-row:2;text-align:right;font-size:50rem}
.head__text span{display:block;animation:rise .9s cubic-bezier(.16,1,.3,1) both}

.head__lede{
  grid-column:1/span 2;grid-row:3;font-size:12rem;line-height:1.5;
  color:var(--color-dim);margin:24rem 0 0;max-width:46ch;
}
.head__back{grid-column:4/span 1;grid-row:3;text-align:right;font-size:12rem;margin:24rem 0 0}

@keyframes rise{from{transform:translateY(110%)}to{transform:translateY(0)}}

/* ---------------- controles ---------------- */
.tools{
  padding-inline:var(--grid-padding);margin-top:60rem;
  display:grid;grid-template-columns:repeat(var(--grid-col-repeat),1fr);
  column-gap:var(--grid-col-gap);align-items:end;
}
.tabs{grid-column:1/span 2;display:flex;gap:16rem;flex-wrap:wrap}
.tab{
  font-family:inherit;font-size:12rem;color:var(--color-dim);
  background:none;border:0;padding:0 0 2rem;cursor:pointer;
  text-transform:uppercase;position:relative;
}
.tab:after{
  content:"";position:absolute;left:0;bottom:0;width:0;height:1px;
  background:var(--color-primary);transition:width .3s ease;
}
.tab[aria-selected="true"]{color:var(--color-primary)}
.tab[aria-selected="true"]:after{width:100%}

.search{
  grid-column:4/span 1;font-family:inherit;font-size:12rem;color:var(--color-primary);
  background:none;border:0;border-bottom:1px solid var(--color-line);
  padding:0 0 4rem;text-align:right;width:100%;
}
.search::placeholder{color:var(--color-dim)}
.search:focus{outline:none;border-bottom-color:var(--color-primary)}

/* ---------------- cabecera de columnas (sticky) ---------------- */
.lists{position:relative;padding-inline:var(--grid-padding);padding-bottom:80rem}
.lists__head{
  position:sticky;top:400px;z-index:1;pointer-events:none;
  display:flex;padding-block:0;
}
.lists__head p{
  font-size:10rem;text-transform:uppercase;margin:0;color:var(--color-dim);
}
.lists__head .c-group{min-width:150rem}
.lists__head .c-id{min-width:150rem;padding-left:30rem}
.lists__head .c-title{flex:1}
.lists__head .c-num{min-width:100rem;text-align:right}

/* ---------------- filas ---------------- */
.lists__contents{display:flex;flex-direction:column;margin-top:4rem}

/* lente: el texto de las dos primeras columnas se aparta al pasar por la
   línea de la cabecera flotante. Solo se mueve el contenido, no la celda. */
.row .id > *,.row .title > *{display:inline-block;will-change:transform}
.group{display:flex}
.group .year{
  min-width:150rem;max-width:150rem;height:fit-content;font-size:12rem;
  position:relative;top:4rem;text-transform:uppercase;
  padding-right:10rem;line-height:1.3;
}
.group .year .count{color:var(--color-dim)}
.group .contents{width:calc(100% - 150rem)}

/* La línea vive en el envoltorio y no se mueve; el contenido de la fila
   es lo que se desplaza con el scroll. */
.row-wrap{position:relative}
.row-wrap:after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;
  background:var(--color-line);
}
.row-wrap.is-hidden{display:none}

.row{display:flex;gap:0;padding-block:4rem 6rem;position:relative;font-size:12rem}
.row p{margin:0;font-size:12rem}
.row .id{min-width:150rem;padding-left:30rem;color:var(--color-dim);overflow:hidden}
.row .title{flex:1;overflow:hidden;white-space:nowrap}
.row .num{min-width:100rem;text-align:right;font-variant-numeric:tabular-nums}
.row .na{color:var(--color-dim)}

/* filas de datos con muchas columnas */
.row--data .title{flex:1;min-width:0;padding-right:20rem}
.row--data .num{min-width:80rem}

.empty{font-size:12rem;color:var(--color-dim);padding-block:40rem}

/* ---------------- prosa ---------------- */
.prose{
  padding-inline:var(--grid-padding);padding-bottom:80rem;
  display:grid;grid-template-columns:repeat(var(--grid-col-repeat),1fr);
  column-gap:var(--grid-col-gap);
}
.prose__body{grid-column:2/span 2;font-size:12rem;line-height:1.6}
.prose__body h2{font-size:12rem;text-transform:uppercase;margin:40rem 0 8rem;font-weight:400}
.prose__body p{margin:0 0 12rem;color:var(--color-dim)}
.prose__body ul{margin:0 0 12rem;padding-left:16rem;color:var(--color-dim)}
.prose__body a{border-bottom:1px solid var(--color-line)}

/* ---------------- móvil ---------------- */
@media(max-width:768px){
  :root{--grid-padding:10rem;--grid-col-gap:6rem}
  html{font-size:.2666666667vw}   /* 375px de referencia */
  .head{padding-top:90rem}
  .head__text{font-size:52rem}
  .head__text[data-grid="1"]{grid-column:1/span 4}
  .head__text[data-grid="2"]{grid-column:1/span 4;grid-row:2;text-align:left}
  .head__text[data-grid="3"]{grid-column:1/span 4;grid-row:3}
  .head__text[data-grid="4"]{grid-column:1/span 4;grid-row:4;text-align:left}
  .head__lede,.head__back{grid-column:1/span 4;grid-row:auto;text-align:left}
  .header__source{grid-column:2/span 2}
  .header__meta{display:none}
  .tabs{grid-column:1/span 3}
  .search{grid-column:4/span 1}
  .lists__head .c-group,.group .year{min-width:70rem}
  .lists__head .c-id,.row .id{min-width:52rem;padding-left:10rem}
  .group .contents{width:calc(100% - 70rem)}
  .lists__head .c-num,.row .num{min-width:56rem}
  .prose__body{grid-column:1/span 4}

  /* tablas anchas: scroll horizontal dentro del bloque */
  .lists--data{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .lists--data .lists__head,
  .lists--data .lists__contents{min-width:620rem}
  .lists--data .row--data .num{min-width:52rem}
}
