/* Javi Rivas — Director
   Dirección: noche de ciudad. Asfalto, luz de sodio, tipografía condensada a gran escala,
   grano de película sobre todo. Cada trabajo es un cuadro 16:9 con su timecode. */
:root{
  --asfalto:#0c0c0b;
  --asfalto-2:#161614;
  --asfalto-3:#1f1f1c;
  --papel:#ecebe4;
  --concreto:#8d8a82;
  --linea:#2b2b27;
  --sodio:#ffa31a;
  --display:"Big Shoulders Display","Oswald","Arial Narrow",Impact,sans-serif;
  --body:"Archivo","Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --gl:max(20px,env(safe-area-inset-left,0px));
  --gr:max(20px,env(safe-area-inset-right,0px));
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--asfalto);color:var(--papel);font:400 16px/1.55 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::after{content:"";position:fixed;inset:-50%;z-index:100;pointer-events:none;opacity:.07;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1s steps(4) infinite}
@keyframes grain{25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-1%,3%)}}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--sodio);outline-offset:3px}
.wrap{max-width:1520px;margin:0 auto;padding-left:var(--gl);padding-right:var(--gr)}
.label{font:500 11px/1.2 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--concreto)}
.amber{color:var(--sodio)}

/* ---------- header ---------- */
.top{position:fixed;inset:0 0 auto;z-index:30;padding-top:env(safe-area-inset-top,0px);transition:background .3s,border-color .3s;border-bottom:1px solid transparent}
.top.solid,.top.always{background:rgba(12,12,11,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom-color:var(--linea)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:16px}
.brand{display:flex;align-items:baseline;gap:12px;text-decoration:none}
.brand b{font:900 26px/1 var(--display);letter-spacing:.02em;text-transform:uppercase}
.brand b i{font-style:normal;color:var(--sodio)}
.nav{display:flex;gap:30px;align-items:center}
.nav a{position:relative;font:500 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;padding-block:6px;opacity:.85}
.nav a sup{font-size:9px;color:var(--sodio);margin-left:3px;letter-spacing:0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--sodio);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.nav a:hover,.nav a[aria-current="page"]{opacity:1}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.menu-btn{display:none;background:none;border:1px solid var(--linea);font:500 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:10px 12px;cursor:pointer}

/* ---------- hero (portada) ---------- */
.hero{position:relative;height:100vh;height:100svh;min-height:560px;max-height:1100px;overflow:hidden;display:flex;align-items:flex-end}
.hero-video{position:absolute;inset:0;pointer-events:none;background:var(--asfalto-2)}
.hero-video iframe{position:absolute;top:50%;left:50%;width:100vw;height:56.25vw;min-height:100%;min-width:177.78vh;transform:translate(-50%,-50%) scale(1.02);border:0}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--asfalto) 0%,rgba(12,12,11,.5) 35%,rgba(12,12,11,.05) 65%,rgba(12,12,11,.45) 100%)}
.hero-inner{position:relative;z-index:2;width:100%;padding-block:0 40px;display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px}
.name{font:900 clamp(88px,20vw,340px)/.78 var(--display);text-transform:uppercase;margin:0;letter-spacing:-.015em}
.name span{display:block;overflow:hidden}
.name span i{display:block;font-style:normal;animation:rise 1s cubic-bezier(.2,.8,.2,1) both}
.name span:nth-child(2) i{animation-delay:.1s;color:transparent;-webkit-text-stroke:2px var(--papel)}
@keyframes rise{from{transform:translateY(100%)}}
.hero-side{display:grid;gap:18px;justify-items:end;text-align:right;padding-bottom:12px}
.hero-side p{margin:0;font:600 clamp(15px,1.4vw,19px)/1.35 var(--body);max-width:26ch}
.rec{display:inline-flex;align-items:center;gap:10px}
.rec i{width:8px;height:8px;border-radius:50%;background:#ff3b2f;animation:blink 1.4s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.reel-btn{display:inline-flex;align-items:center;gap:14px;background:none;border:0;cursor:pointer;padding:0;text-align:left}
.reel-btn .disc{width:74px;height:74px;border-radius:50%;background:var(--sodio);color:var(--asfalto);display:grid;place-items:center;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.reel-btn:hover .disc{transform:scale(1.1)}
.reel-btn svg{width:18px;height:18px;margin-left:4px}
.reel-btn b{display:block;font:800 22px/1 var(--display);text-transform:uppercase;letter-spacing:.02em}

/* ---------- page head (interiores) ---------- */
.page-head{padding-block:140px 0}
.page-head .wrap{display:grid;gap:22px}
.page-head h1{font:900 clamp(44px,13vw,250px)/.8 var(--display);text-transform:uppercase;margin:0;letter-spacing:-.015em;display:flex;align-items:flex-start;gap:.08em;flex-wrap:wrap}
.page-head h1 sup{font:500 clamp(14px,1.6vw,22px)/1 var(--mono);color:var(--sodio);letter-spacing:0;margin-top:.4em}
.page-head p{margin:0;max-width:58ch;color:var(--concreto);font-size:clamp(16px,1.3vw,18px)}
.toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;border-block:1px solid var(--linea);padding-block:14px;margin-top:34px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 63px);z-index:10;background:var(--asfalto)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:none;border:1px solid var(--linea);padding:9px 14px;font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;text-decoration:none;transition:border-color .2s,background .2s,color .2s}
.chip:hover{border-color:var(--concreto)}
.chip[aria-pressed="true"]{background:var(--sodio);border-color:var(--sodio);color:var(--asfalto)}

/* ---------- cards ---------- */
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 22px;padding-top:40px}
.grid.lead > .card:first-child{grid-column:span 2;grid-row:span 2;align-self:start}
.grid.lead > .card:first-child .meta h3{font-size:clamp(22px,2.2vw,30px)}
.card{display:block;cursor:pointer;background:none;border:0;padding:0;text-align:left;width:100%;min-width:0}
.thumb{position:relative;display:block;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;background:var(--asfalto-3)}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.8,.2,1),filter .5s;filter:saturate(.8) contrast(1.05)}
.thumb.noimg img{display:none}
.thumb.noimg::before{content:attr(data-t);position:absolute;inset:0;display:grid;place-items:center;padding:16px;text-align:center;font:900 clamp(26px,3vw,44px)/.9 var(--display);text-transform:uppercase;color:var(--linea)}
.card:hover .thumb img,.card:focus-visible .thumb img{transform:scale(1.045);filter:saturate(1.1) contrast(1.05)}
.thumb::after{content:"";position:absolute;inset:0;border:1px solid rgba(255,163,26,0);transition:border-color .3s}
.card:hover .thumb::after{border-color:var(--sodio)}
.tc{position:absolute;left:10px;top:10px;font:500 10px/1 var(--mono);letter-spacing:.1em;background:rgba(12,12,11,.78);padding:6px 7px}
.meta{display:flex;justify-content:space-between;gap:12px;margin-top:14px;align-items:baseline}
.meta h3{font:600 17px/1.25 var(--body);margin:0;min-width:0}
.meta .label{white-space:nowrap}
.client{font:500 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sodio);margin-top:6px}

/* cursor "VER" */
.cursor{position:fixed;left:0;top:0;z-index:40;pointer-events:none;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;background:var(--sodio);color:var(--asfalto);
  display:grid;place-items:center;font:700 13px/1 var(--mono);letter-spacing:.16em;transform:scale(0);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.cursor.on{transform:scale(1)}
@media (hover:none),(pointer:coarse){.cursor{display:none}}

/* lista (vista índice) */
.list{padding-top:20px}
.list .row-item{display:grid;grid-template-columns:70px minmax(0,1.1fr) minmax(0,2fr) 60px;gap:20px;align-items:baseline;width:100%;background:none;border:0;border-bottom:1px solid var(--linea);padding:20px 0;cursor:pointer;text-align:left;transition:padding .3s,color .2s}
.list .row-item:hover{padding-left:12px;color:var(--sodio)}
.list .row-item b{font:800 clamp(22px,2.6vw,36px)/1 var(--display);text-transform:uppercase}
.list .row-item span:last-child{text-align:right}
.peek{position:fixed;left:0;top:0;z-index:35;width:320px;height:180px;pointer-events:none;opacity:0;transition:opacity .2s;background:var(--asfalto-3) center/cover}
.peek.on{opacity:1}

/* ---------- portada: selección + índice ---------- */
.sel{padding-block:110px 0}
.sec-title{display:flex;justify-content:space-between;align-items:baseline;gap:16px;border-bottom:1px solid var(--linea);padding-bottom:16px}
.sec-title h2{font:900 clamp(40px,5vw,72px)/.9 var(--display);text-transform:uppercase;margin:0}
.mosaic{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:40px 22px;padding-top:40px}
.mosaic .card:nth-child(6n+1){grid-column:1 / span 7}
.mosaic .card:nth-child(6n+2){grid-column:8 / span 5;margin-top:120px}
.mosaic .card:nth-child(6n+3){grid-column:2 / span 5}
.mosaic .card:nth-child(6n+4){grid-column:7 / span 6}
.mosaic .card:nth-child(6n+5){grid-column:1 / span 6}
.mosaic .card:nth-child(6n+6){grid-column:7 / span 6;margin-top:80px}

.index{padding-block:120px 0}
.index a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:24px;align-items:center;text-decoration:none;border-top:1px solid var(--linea);padding-block:26px;position:relative;overflow:hidden}
.index a:last-child{border-bottom:1px solid var(--linea)}
.index a b{font:900 clamp(60px,11vw,180px)/.85 var(--display);text-transform:uppercase;transition:color .3s,transform .5s cubic-bezier(.2,.8,.2,1)}
.index a:hover b{color:var(--sodio);transform:translateX(16px)}
.index a .strip{display:flex;gap:8px;justify-content:flex-end;opacity:.0;transition:opacity .4s;min-width:0}
.index a:hover .strip{opacity:1}
.index a .strip img{width:150px;height:84px;object-fit:cover}
.index a .arrow{font:400 clamp(36px,5vw,72px)/1 var(--display);transition:transform .4s}
.index a:hover .arrow{transform:translateX(8px) rotate(-45deg);color:var(--sodio)}

.ticker{border-block:1px solid var(--linea);overflow:hidden;white-space:nowrap;padding-block:20px;margin-top:120px}
.ticker div{display:inline-flex;gap:56px;animation:slide 60s linear infinite;padding-left:56px}
.ticker span{font:800 clamp(24px,3vw,40px)/1 var(--display);text-transform:uppercase;letter-spacing:.04em;color:var(--concreto)}
.ticker span::after{content:"✳";margin-left:56px;color:var(--sodio);font-size:.5em;vertical-align:middle}
@keyframes slide{to{transform:translateX(-50%)}}

/* ---------- videoclips ---------- */
.block{padding-top:90px;scroll-margin-top:140px}
.block > .sec-title h2{font-size:clamp(36px,4.4vw,64px)}
.feature{display:grid;grid-template-columns:1.5fr 1fr;gap:36px;align-items:end;margin-top:40px}
.feature h3{font:900 clamp(48px,6.4vw,104px)/.84 var(--display);text-transform:uppercase;margin:14px 0 18px}
.feature p{color:var(--concreto);max-width:40ch;margin:0 0 26px}
.btn{display:inline-flex;align-items:center;gap:12px;background:var(--sodio);color:var(--asfalto);border:0;cursor:pointer;
  font:500 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:16px 22px;text-decoration:none;transition:transform .2s}
.btn:hover{transform:translateY(-2px)}
.rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,24%);gap:18px;overflow-x:auto;padding:36px 0 16px;scroll-snap-type:x mandatory;scrollbar-color:var(--linea) transparent}
.rail .card{scroll-snap-align:start}
.rail .meta h3{font-size:15px}

/* ---------- about ---------- */
.page-head .statement{color:var(--papel);font:800 clamp(34px,4.6vw,72px)/1 var(--display);text-transform:uppercase;margin:0;max-width:20ch;text-wrap:balance}
.about{display:grid;grid-template-columns:1.2fr 1fr;gap:70px;padding-top:60px}
.about p{font-size:clamp(17px,1.4vw,20px);line-height:1.6;max-width:56ch;margin:0 0 18px}
.facts{display:grid;align-content:start}
.facts div{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--linea);padding-block:16px}
.facts div:last-child{border-bottom:1px solid var(--linea)}
.facts b{font-weight:500;text-align:right}
.contact{padding-top:110px;scroll-margin-top:90px}
.contact-big{display:block;font:900 clamp(48px,9vw,150px)/.85 var(--display);text-transform:uppercase;text-decoration:none;word-break:break-word;margin-top:24px;transition:color .3s}
.contact-big:hover{color:var(--sodio)}
.links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-top:56px;border-top:1px solid var(--linea)}
.links a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 0;border-bottom:1px solid var(--linea);text-decoration:none;font:600 17px/1 var(--body);padding-right:20px}
.links a:hover{color:var(--sodio)}

/* ---------- footer ---------- */
footer{margin-top:130px;border-top:1px solid var(--linea)}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding-block:30px calc(30px + env(safe-area-inset-bottom,0px))}
.asilo{display:flex;align-items:center;gap:16px;text-decoration:none}
.asilo img{height:22px;width:auto}
footer nav{display:flex;gap:22px;flex-wrap:wrap}
footer nav a{text-decoration:none}
footer nav a:hover{color:var(--sodio)}

/* ---------- reproductor ---------- */
.modal{position:fixed;inset:0;z-index:60;background:rgba(6,6,6,.96);display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:calc(16px + env(safe-area-inset-top,0px)) var(--gr) calc(16px + env(safe-area-inset-bottom,0px)) var(--gl);animation:fade .25s}
@keyframes fade{from{opacity:0}}
.modal-box{width:min(1320px,100%,calc((100vh - 150px) * 16 / 9))}
.modal-frame{position:relative;width:100%;height:0;padding-bottom:56.25%;background:#000}
.modal-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.modal-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:16px}
.modal-bar h4{margin:0;font:700 clamp(20px,2vw,28px)/1.1 var(--display);text-transform:uppercase}
.modal-bar a{font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--concreto);white-space:nowrap}
.close{position:absolute;top:calc(16px + env(safe-area-inset-top,0px));right:var(--gr);background:none;border:1px solid var(--linea);
  font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:12px 14px;cursor:pointer}
.close:hover{border-color:var(--sodio);color:var(--sodio)}
.blocked{position:absolute;inset:0;display:grid;place-items:center;background-size:cover;background-position:center;text-decoration:none}
.blocked::before{content:"";position:absolute;inset:0;background:rgba(12,12,11,.72)}
.blocked>span{position:relative;display:grid;gap:18px;justify-items:center;text-align:center;padding:16px}
.blocked b{font:800 clamp(24px,3vw,38px)/1.05 var(--display);text-transform:uppercase}

/* ---------- responsive ---------- */
@media (max-width:1050px){
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .feature,.about{grid-template-columns:1fr;gap:36px}
  .rail{grid-auto-columns:minmax(240px,42%)}
  .mosaic .card:nth-child(n){grid-column:auto / span 6;margin-top:0}
  .index a .strip{display:none}
}
@media (max-width:720px){
  :root{--gl:max(16px,env(safe-area-inset-left,0px));--gr:max(16px,env(safe-area-inset-right,0px))}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--asfalto);border-bottom:1px solid var(--linea);padding:8px var(--gr) 18px var(--gl)}
  .nav.open{display:flex}
  .nav a{padding-block:16px;font-size:14px;border-bottom:1px solid var(--linea)}
  .nav a::after{display:none}
  .menu-btn{display:block}
  .hero-inner{grid-template-columns:1fr}
  .hero-side{justify-items:start;text-align:left}
  .grid{grid-template-columns:1fr}
  .grid.lead > .card:first-child{grid-column:auto;grid-row:auto}
  .mosaic{grid-template-columns:1fr}
  .mosaic .card:nth-child(n){grid-column:auto}
  .rail{grid-auto-columns:80%}
  .list .row-item{grid-template-columns:52px minmax(0,1fr) 46px}
  .list .row-item .c-client{display:none}
  .page-head{padding-block:110px 0}
  .toolbar{top:calc(env(safe-area-inset-top,0px) + 59px)}
  .name span:nth-child(2) i{-webkit-text-stroke-width:1.5px}
}
@media (prefers-reduced-motion:reduce){
  *,body::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
}

/* ---------- muros de frames ---------- */
.wall{padding-top:56px}
.wall-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.film-row{overflow:hidden;padding-block:5px;position:relative}
.film-track{display:flex;gap:10px;width:max-content;animation:filmL var(--dur,70s) linear infinite}
.film-row.rev .film-track{animation-name:filmR}
.film-row:hover .film-track{animation-play-state:paused}
@keyframes filmL{to{transform:translateX(-50%)}}
@keyframes filmR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.fr{--w:clamp(220px,24vw,400px);position:relative;flex:none;display:block;width:var(--w);height:calc(var(--w) * .5625);padding:0;border:0;background:var(--asfalto-3);cursor:pointer;overflow:hidden}
.wall .film-row:nth-child(2) .fr{--w:clamp(260px,30vw,520px)}
.fr img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(.35) contrast(1.08) brightness(.82);transition:filter .4s,transform .7s cubic-bezier(.2,.8,.2,1)}
.fr:hover img,.fr:focus-visible img{filter:none;transform:scale(1.06)}
.fr.noimg img{display:none}
.fr-n{position:absolute;left:8px;top:8px;font:500 10px/1 var(--mono);letter-spacing:.1em;color:var(--sodio);background:rgba(12,12,11,.7);padding:5px 6px}
.fr-t{position:absolute;left:0;right:0;bottom:0;padding:22px 10px 9px;text-align:left;font:800 clamp(15px,1.3vw,20px)/1.05 var(--display);text-transform:uppercase;
  background:linear-gradient(to top,rgba(12,12,11,.85),transparent);transform:translateY(100%);transition:transform .35s}
.fr:hover .fr-t,.fr:focus-visible .fr-t,.fr.noimg .fr-t{transform:none}
/* perforaciones de película a los lados del muro */
.wall #wall{position:relative;padding-block:14px;background:
  radial-gradient(circle at 50% 50%,var(--asfalto) 3px,transparent 3.5px) 0 2px/18px 10px repeat-x,
  radial-gradient(circle at 50% 50%,var(--asfalto) 3px,transparent 3.5px) 0 calc(100% - 2px)/18px 10px repeat-x,var(--asfalto-2)}
.head-wall{margin-top:40px;opacity:.9}
.head-wall .fr{--w:clamp(200px,20vw,320px)}
.about-wall{margin-top:110px}
.about-wall .fr{--w:clamp(180px,18vw,300px)}
.index a .strip{opacity:.55}
.index a:hover .strip{opacity:1}
.index a .strip img{width:140px;height:79px}

/* ---------- equipo / teléfonos ---------- */
.team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:56px}
.person{display:grid;gap:10px;align-content:start;background:var(--asfalto-2);padding:24px}
.person b{font:800 clamp(26px,2.4vw,36px)/1 var(--display);text-transform:uppercase}
.person .tel{font:500 clamp(17px,1.4vw,20px)/1.2 var(--mono);text-decoration:none;user-select:all}
.person .tel:hover{color:var(--sodio)}
.person .wa{justify-self:start;margin-top:6px;font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;border:1px solid var(--linea);padding:10px 12px}
.person .wa:hover{border-color:var(--sodio);color:var(--sodio)}
footer .label a{text-decoration:none}
footer .label a:hover{color:var(--sodio)}
@media (max-width:900px){.team{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.film-row{overflow-x:auto}}
