/* Panoramic worlds retain their height and lateral travel on portrait screens. */
.narcos-story{--n-width:max(110vw,155vh);--n-origin:calc(50vw - var(--n-width)*.5)}
.narcos-hacienda{left:calc(var(--n-origin) + var(--n-width)*.01);bottom:0;width:calc(var(--n-width)*.98);height:auto;z-index:0}
.scene img.narcos-hacienda{filter:grayscale(1) brightness(.47) contrast(1.03)}
.narcos-band{left:calc(var(--n-origin) + var(--n-width)*.015);bottom:0;height:42vh;width:auto;z-index:2}
.narcos-singer{left:calc(var(--n-origin) + var(--n-width)*.43);bottom:-3vh;height:83vh;width:auto;z-index:5}
.scene img.narcos-singer{filter:grayscale(1) brightness(1.05) contrast(1.06)}
.narcos-title{left:calc(var(--n-origin) + var(--n-width)*.39);top:22vh;width:calc(var(--n-width)*.43);translate:-50% 0;z-index:4;text-align:center}
.narcos-title strong{display:block;font-family:Georgia,serif;font-size:clamp(92px,18vh,190px);font-weight:400;line-height:1.08;letter-spacing:.04em;color:#eee9e2;text-shadow:0 0 12px #ffffff50,0 0 34px #ffffff25}
.narcos-kicker{display:block;color:#d41f24;font-size:clamp(18px,3vh,30px);letter-spacing:.4em;text-indent:.4em;text-shadow:0 0 14px #da000150}
.narcos-credit{display:block;font-size:12px;letter-spacing:.26em;margin-top:12px;color:#c2bcb7}
.narcos-title .art-cue{position:static;display:block;margin-top:17px;font-size:9px;color:#847e7b;letter-spacing:.2em}
.narcos-cash{left:calc(var(--n-origin) + var(--n-width)*.03);bottom:-1vh;width:calc(var(--n-width)*.26);height:auto;z-index:7}
.narcos-packages{left:calc(var(--n-origin) + var(--n-width)*.8);bottom:1vh;width:calc(var(--n-width)*.19);height:auto;z-index:7}
.narcos-folded{left:calc(var(--n-origin) + var(--n-width)*.87);top:22vh;width:calc(var(--n-width)*.13);z-index:6}
.narcos-folded img{display:block;width:100%;height:auto}
.narcos-lanterns{left:calc(var(--n-origin) + var(--n-width)*.1);bottom:25vh;width:calc(var(--n-width)*.77);height:8vh;z-index:1}
.narcos-lanterns i{position:absolute;width:10vh;height:10vh;border-radius:50%;background:radial-gradient(ellipse,#d79e4735,transparent 68%);animation:courtyard-breathe 7s ease-in-out infinite}
.narcos-lanterns i:nth-child(2){left:44%;animation-delay:-3s}.narcos-lanterns i:nth-child(3){right:0;animation-delay:-5s}
@keyframes courtyard-breathe{0%,100%{opacity:.55}50%{opacity:1}}
.narcos-resonance{left:calc(var(--n-origin) + var(--n-width)*.39);top:34vh;width:38vh;height:38vh;translate:-50% -50%;z-index:3}
.narcos-resonance i{position:absolute;inset:0;border:1px solid #d92b2b;border-radius:50%;opacity:0}
.narcos-story.is-echoing .narcos-resonance i{animation:tuyo-echo 2.4s ease-out both}
.narcos-story.is-echoing .narcos-resonance i:nth-child(2){animation-delay:.35s}.narcos-story.is-echoing .narcos-resonance i:nth-child(3){animation-delay:.7s}
.narcos-story.is-echoing .narcos-title strong{animation:tuyo-glow 3.1s ease-out}
@keyframes tuyo-echo{0%{scale:.6;opacity:.55}100%{scale:2.1;opacity:0}}
@keyframes tuyo-glow{0%,100%{text-shadow:0 0 12px #ffffff50,0 0 34px #ffffff25}30%{text-shadow:0 0 16px #ffffff95,0 0 48px #d8232350}}
.gleague-story{--g-width:max(130vw,180vh);--g-origin:calc(50vw - var(--g-width)*.5)}
.gleague-skyline{left:var(--g-origin);width:var(--g-width);height:auto;bottom:0;z-index:0}
.scene img.gleague-skyline{filter:grayscale(1) brightness(.55) contrast(1.04)}
.gleague-apartment{left:calc(var(--g-origin) + var(--g-width)*.48);bottom:0;height:78vh;width:auto;z-index:1}
.scene img.gleague-apartment{filter:grayscale(1) brightness(.62) contrast(1.04)}
.gleague-billboard{left:calc(var(--g-origin) - var(--g-width)*.015);bottom:0;height:87vh;aspect-ratio:1400/1681;z-index:2}
.gleague-billboard>img{height:100%;width:100%;display:block}
.gleague-board-face{position:absolute;left:4%;top:4%;width:89%;height:36%;transform:skewY(1deg);display:flex;flex-direction:column;align-items:center;justify-content:center;background:#101215;color:#e9e9e9;border:1px solid #ffffff12;box-shadow:inset 0 0 28px #ffffff08}
.scene .gleague-board-face>img{width:70%;height:auto;margin:8% 0 5%;filter:drop-shadow(0 0 5px #ffffff70)}
.board-cities{font-size:clamp(8px,1.2vh,12px);letter-spacing:.1em}
.board-score{display:flex;gap:5vh;font-size:clamp(12px,2vh,20px);font-family:monospace;letter-spacing:.08em}
.board-score b{font-size:1.25em;color:#e84840;text-shadow:0 0 8px #e8484055}
.board-message{margin-top:5%;font-family:monospace;font-size:clamp(9px,1.4vh,14px);letter-spacing:.2em}
.gleague-hoop{left:calc(var(--g-origin) + var(--g-width)*.19);bottom:-2vh;height:81vh;width:auto;aspect-ratio:943/1504;z-index:3}
.gleague-hoop img{display:block;height:100%;width:auto}
.scene .gleague-hoop img{filter:contrast(1.04)}
.gleague-mac{left:calc(var(--g-origin) + var(--g-width)*.29);height:86vh;bottom:-5vh;width:auto;z-index:5}
.gleague-andre{left:calc(var(--g-origin) + var(--g-width)*.52);height:90vh;bottom:-7vh;width:auto;z-index:8}
.gleague-aaron{left:calc(var(--g-origin) + var(--g-width)*.84);height:84vh;bottom:-2vh;width:auto;z-index:5}
.gleague-logo{left:calc(var(--g-origin) + var(--g-width)*.59);top:48vh;translate:-50% -50%;width:min(50vw,82vh);z-index:9}
.scene .gleague-logo img{width:100%;height:auto;display:block;filter:drop-shadow(0 0 10px #ffffff90) drop-shadow(0 0 30px #ffffff55) drop-shadow(0 0 60px #ffffff25)}
.gleague-city{display:block;text-align:center;font-size:10px;letter-spacing:.22em;color:#b5b5b5;margin-top:12px}
.gleague-year{left:calc(var(--g-origin) + var(--g-width)*.18);top:52vh;z-index:4}
.gleague-lamp{left:calc(var(--g-origin) + var(--g-width)*.99);bottom:0;height:95vh;aspect-ratio:1096/1859;z-index:4}
.gleague-lamp>img{height:100%;width:auto;display:block}
.gleague-lamp-glow{position:absolute;left:1%;top:0;width:22%;height:12%;border-radius:50%;background:radial-gradient(ellipse,#f0d26570,transparent 68%);rotate:-28deg;pointer-events:none}
.gleague-sign{left:calc(var(--g-origin) + var(--g-width)*.92);height:46vh;width:24vh;bottom:0;z-index:6}
.gleague-sign span{position:relative;display:block;border:2px solid #888b89;background:#1e2321;font-family:'Arial Narrow',Arial,sans-serif;text-align:center;font-size:2vh;font-weight:bold;letter-spacing:.06em;padding:1vh .5vh;box-shadow:1px 3px 4px #000;rotate:-3deg}
.gleague-sign span+span{rotate:3deg;margin-top:.7vh}.gleague-sign small{display:block;font-size:1.2vh;letter-spacing:.14em;margin-top:.5vh;color:#a9afac}
.gleague-sign i{position:absolute;z-index:-1;top:0;bottom:0;left:48%;width:1.2vh;background:linear-gradient(90deg,#262626,#999,#333)}
.gleague-ball{left:calc(var(--g-origin) + var(--g-width)*.77);bottom:7vh;width:18vh;height:18vh;z-index:12;overflow:visible}
.gleague-ball canvas{display:block;width:100%;height:100%;animation:street-ball-float 5s ease-in-out infinite}
.gleague-ball .art-cue{position:absolute;top:104%;width:100%;text-align:center;left:0;font-size:9px;letter-spacing:.17em;white-space:nowrap;color:#aaa}
@keyframes street-ball-float{0%,100%{translate:0 0}50%{translate:0 -1vh}}
.gleague-ball.is-shooting canvas{animation:street-ball-shot 1.5s cubic-bezier(.22,.61,.36,1) both}
@keyframes street-ball-shot{0%{transform:translate(0,0) scale(1) rotate(0deg)}48%{transform:translate(calc(var(--shot-x)*.65),calc(var(--shot-y) - 13vh)) scale(.65) rotate(200deg)}72%{transform:translate(var(--shot-x),var(--shot-y)) scale(.45) rotate(300deg);opacity:1}90%,100%{transform:translate(var(--shot-x),calc(var(--shot-y) + 14vh)) scale(.45) rotate(380deg);opacity:0}}
.gleague-ball.is-bouncing canvas{animation:street-ball-bounce 1s ease-out}
@keyframes street-ball-bounce{0%,100%{translate:0 0}35%{translate:0 -24vh;rotate:140deg}80%{translate:0 3vh;rotate:270deg}}
.narcos-story.art-selected .narcos-title strong{color:#d92b2b}
@media(max-aspect-ratio:1/1){.gleague-logo{width:94vw}.narcos-title strong{font-size:18vh}.narcos-credit{font-size:11px}.gleague-year{top:64vh}}
@media(prefers-reduced-motion:reduce){.narcos-lanterns i,.gleague-ball canvas,.gleague-ball.is-shooting canvas,.gleague-ball.is-bouncing canvas,.narcos-story.is-echoing .narcos-title strong,.narcos-story.is-echoing .narcos-resonance i{animation:none}}

/* Ground architecture by its visible bottom edge, including object fitting. */
.narcos-hacienda{bottom:-1vh;aspect-ratio:1700/799}
.narcos-house-art{display:block;width:100%;height:auto}
.scene .narcos-house-art{filter:grayscale(1) brightness(.47) contrast(1.03)}
.narcos-hacienda .narcos-lanterns{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.narcos-lanterns i{width:2.2%;height:5%;translate:-50% -50%;background:radial-gradient(ellipse,#ffe7b39a,#d79e4720 34%,transparent 70%);border-radius:50%;animation:courtyard-breathe 7s ease-in-out infinite}
.narcos-lanterns i:nth-child(1){left:15.6%;top:58.7%}
.narcos-lanterns i:nth-child(2){left:31.7%;top:65.3%}
.narcos-lanterns i:nth-child(3){left:49.8%;top:65.3%;right:auto}
.narcos-lanterns i:nth-child(4){left:68.4%;top:65.3%;animation-delay:-2s}
.narcos-lanterns i:nth-child(5){left:81.2%;top:60.3%;animation-delay:-4s}
.scene img.narcos-band{filter:grayscale(1) brightness(.64) contrast(1.06)}
.narcos-cash{width:calc(var(--n-width)*.25);left:calc(var(--n-origin) + var(--n-width)*.76);bottom:-2vh;z-index:7}
.scene img.narcos-cash{filter:grayscale(1) brightness(.77) contrast(1.05)}
.gleague-skyline,.gleague-apartment{bottom:-1vh;object-position:center bottom!important}
.gleague-billboard{bottom:-1vh;aspect-ratio:1208/1450}
.gleague-billboard>img{object-position:center bottom!important}
.gleague-board-face{left:5%;top:2%;width:82%;height:39%;clip-path:polygon(0 0,100% 4%,98% 94%,1% 100%);padding:2.5% 3%;transform:none;background:#111315;box-shadow:inset 0 0 28px #ffffff0a}
.board-preview{width:100%;height:65%;object-fit:contain}
.board-message{margin-top:2%;color:#d9d9d9;font-size:1.3vh}
.gleague-sign span,.gleague-sign span+span{rotate:none;transform:none;translate:none;animation:none}
.gleague-sign span{z-index:1;background:linear-gradient(#343b36,#1b211d);border-color:#939991}
.gleague-sign i{z-index:0}
.gleague-lamp-glow{left:2.2%;top:3.25%;width:11%;height:1.5%;rotate:35deg;background:#ffe7b3;box-shadow:0 0 5px 2px #ffd18c66,0 0 15px 6px #ffaf5828;border-radius:45%}
.gleague-lamp-glow::after{content:'';position:absolute;left:-60%;top:110%;width:240%;height:65vh;rotate:-35deg;transform-origin:top center;background:linear-gradient(#f2c66918,transparent 90%);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);filter:blur(4px)}
.gleague-bolt{position:absolute;left:43.5%;top:22%;width:10%;height:49%;background:#ffbe6d;clip-path:polygon(80% 0,7% 43%,30% 40%,0 100%,100% 7%,61% 19%);opacity:0;pointer-events:none;filter:drop-shadow(0 0 7px #ff6f00)}
.gleague-logo.is-lightning .gleague-bolt{animation:gatorade-flash .8s steps(1) both}
.gleague-sparks{position:absolute;left:0;top:0;width:100%;height:auto;aspect-ratio:800/172;fill:none;stroke:#ffd498;stroke-width:1.6;opacity:0;pointer-events:none;filter:drop-shadow(0 0 4px #ff9100)}
.gleague-logo.is-lightning .gleague-sparks{animation:gatorade-flash .8s steps(1) both}
@keyframes gatorade-flash{0%,18%,39%,63%,100%{opacity:0}8%,25%,47%{opacity:1}70%{opacity:.4}}

/* Shared editorial titles extend the TUYO vocabulary without altering year typography. */
.editorial-title{text-align:center;z-index:6;translate:-50% 0}
.editorial-title strong{display:block;font-family:Georgia,serif;font-weight:400;line-height:1.06;letter-spacing:.035em;color:#eee9e2;font-size:clamp(74px,14vh,155px);text-shadow:0 0 12px #ffffff50,0 0 34px #ffffff25}
.editorial-kicker{display:block;color:#d41f24;font-size:clamp(16px,2.5vh,27px);letter-spacing:.35em;text-indent:.35em;margin-bottom:12px;text-shadow:0 0 14px #da000150}
.editorial-credit{display:block;font-size:12px;letter-spacing:.26em;margin-top:15px;color:#c2bcb7}
.editorial-title .art-cue{position:static;display:block;margin-top:17px;font-size:9px;color:#9a9290;letter-spacing:.2em}
.editorial-title.is-echoing strong{animation:tuyo-glow 3.1s ease-out}
.editorial-title.art-selected strong{text-shadow:0 0 16px #ffffff95,0 0 48px #d8232350}
.editorial-title.is-echoing::before,.editorial-title.is-echoing::after{content:'';position:absolute;left:50%;top:40%;width:28vh;height:28vh;translate:-50% -50%;border:1px solid #d92b2b66;border-radius:50%;pointer-events:none;animation:tuyo-echo 2.4s ease-out both;z-index:-1}
.editorial-title.is-echoing::after{animation-delay:.3s}
.spaces-title{left:calc(var(--room-origin) + var(--room-width)*.73);top:15vh;width:calc(var(--room-width)*.43);z-index:6}
.spaces-portrait{left:calc(var(--room-origin) + var(--room-width)*.36);top:9vh;width:23vh;padding:.8vh;background:#161513;border:.35vh solid #38322d;box-shadow:2px 3px 8px #0008;z-index:2;text-decoration:none}
.spaces-portrait img{display:block;width:100%;height:auto;filter:grayscale(1) brightness(.72)!important}
.spaces-portrait span{display:block;text-align:center;font-size:7px;letter-spacing:.12em;color:#a9a19b;padding-top:5px}
.tour-title{left:24vw;top:26vh;width:48vw;z-index:5}
.tour-title strong{font-size:clamp(54px,9vh,100px)}
.adidas-shoe .shoe-motion{animation:shoe-sway 6.5s ease-in-out infinite;transform-origin:50% 50%;will-change:auto}
@keyframes shoe-sway{0%,100%{transform:translateY(0) rotateZ(-1.2deg) rotateX(-2deg)}50%{transform:translateY(-14px) rotateZ(1.2deg) rotateX(2deg)}}
@media(min-aspect-ratio:1/1){.street-gotti{left:calc(var(--collage-origin) + var(--collage-width)*.145 - 12vw)}.gotti-year{left:calc(var(--collage-origin) - 12vw)}}
@media(max-aspect-ratio:1/1){.tour-title{left:35vw;top:31vh;width:90vw}.tour-title strong{font-size:8vh}.spaces-title strong{font-size:14vh}.spaces-portrait{width:21vh}}

/* More projects must not push previous/next and timeline stops off desktop. */
footer{width:calc(100% - 32px);max-width:1480px;gap:16px}
footer>button{flex:none}
footer nav{min-width:0;flex:1;overflow-x:auto;scrollbar-width:none}
footer nav::-webkit-scrollbar{display:none}
footer nav button{flex:none}
@media(prefers-reduced-motion:reduce){.narcos-lanterns i,.adidas-shoe .shoe-motion,.editorial-title.is-echoing strong,.editorial-title.is-echoing::before,.editorial-title.is-echoing::after,.gleague-logo.is-lightning .gleague-bolt,.gleague-logo.is-lightning .gleague-sparks{animation:none!important}.gleague-logo.is-lightning .gleague-bolt{opacity:.75}}
/* The pole's visible bottom is at source y=1264, not at the 1450px transparent canvas edge. */
.gleague-billboard{height:87vh!important;width:calc(87vh * 1208 / 1264);aspect-ratio:1208/1264;bottom:-1vh;overflow:visible}
.gleague-billboard>img{position:absolute;top:0;left:0;width:100%;height:auto;max-width:none}
.billboard-pinned{position:absolute;left:0;top:0;width:1208px;height:1264px;transform-origin:0 0;pointer-events:none}
.gleague-board-face{position:absolute;left:0;top:0;width:720px;height:500px;transform-origin:0 0;display:flex;flex-direction:column;clip-path:none;padding:0;background:#090b0e;box-shadow:inset 0 0 35px #ffffff08;border:0;pointer-events:auto;color:#eee;overflow:hidden}
.board-hud{height:50px;flex:none;width:100%;display:flex;align-items:center;justify-content:space-between;padding:0 26px;font-size:16px;letter-spacing:.1em;background:#16191d}
.board-hud>span{font-size:13px;color:#aaa}.board-hud #arcade-time{font-size:22px;color:#eee}
#arcade-court{display:block;width:720px;height:330px;flex:none;pointer-events:none}
.board-controls{height:120px;flex:none;width:100%;padding:8px 26px;display:grid;grid-template-columns:1fr 210px;grid-template-rows:27px 25px 35px;gap:3px 24px;text-align:left;background:#14171a}
#arcade-instructions{grid-column:1/3;margin:0;font-size:14px;letter-spacing:.01em;color:#bfbfc3}
.shot-meter{grid-column:1;grid-row:2;align-self:center;height:13px;background:#34383d;position:relative;overflow:hidden;border-radius:2px}
.shot-target{position:absolute;left:57.3%;width:9.4%;top:0;bottom:0;background:#dc2636;z-index:1}.shot-power{position:absolute;left:0;top:0;bottom:0;width:0;background:#dad9d7;opacity:.65;z-index:2}
#arcade-start,#arcade-shoot{grid-column:2;grid-row:2/4;border:1px solid #b23740;background:#661b24;color:#fff;font-size:15px;letter-spacing:.04em;border-radius:3px;touch-action:none;user-select:none;cursor:pointer}
#arcade-start:hover,#arcade-shoot:hover{background:#922331}#arcade-shoot:disabled{opacity:.5;cursor:wait}
.board-controls [hidden]{display:none!important}#arcade-result{grid-row:3;grid-column:1;align-self:center;font-size:14px;letter-spacing:.04em;color:#ded9d1}

.gleague-billboard.arcade-playing{z-index:12}
.board-controls{grid-template-columns:210px 1fr}
#arcade-start,#arcade-shoot{grid-column:1}.shot-meter,#arcade-result{grid-column:2}

@media(max-aspect-ratio:1/1){.gleague-billboard{height:min(87vh,150vw)!important;width:calc(min(87vh,150vw) * 1208 / 1264)}.board-hud{font-size:20px}.board-hud>span{font-size:17px}#arcade-instructions{font-size:19px}#arcade-start,#arcade-shoot{font-size:20px}#arcade-result{font-size:19px}.board-controls{grid-template-columns:230px 1fr;gap:3px 16px}}
