/* ════════════════════════════════════════════════
   axel-site / css/style.css
   ────────────────────────────────────────────────
   ÍNDICE:
   01. Variables & Reset
   02. Cursor pixel
   03. Aura / Grain / Vignette
   04. Partículas
   05. Intro screen
   06. Minecraft loader
   07. Main layout & Scenes
   08. Tipografía
   09. Tags
   10. Now Playing / Vinyl
   11. Artist cards
   12. Game cards (temas por juego)
   13. Photo slots / Hero layout
   14. Video slot
   15. Gif slots
   16. Quote block
   17. Terminal / CMD windows
   18. Links / Footer
   19. Buzón / Guestbook
   20. Easter egg — Dance
   21. Easter egg — Hint overlay
   22. Polaroid fullscreen
   23. Context menu custom
   24. Mirror pet (horas espejo)
   25. Pixel trail (rastro cursor)
   26. Pet — drag, sleep, ZZZ
   27. Spider thread
   28. Mascot (muñequito)
   29. Music badge
   30. Scroll progress bar
   31. Responsive / Mobile
════════════════════════════════════════════════ */

/* ════════════════════════════════
   ROOT & RESET
════════════════════════════════ */
:root {
  --bg:    #07060e;
  --p1:    #5c3fa0;
  --p2:    #8b68cc;
  --p3:    #b99ee8;
  --p4:    #ddd0ff;
  --muted: #42326a;
  --text:  #e2daf5;
  --text2: #9e93be;
  --gold:  #c9a86c;
  --b:     rgba(92,63,160,.2);
  --b2:    rgba(139,104,204,.4);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'DM Mono',monospace;
  overflow-x:hidden;
  cursor:none;
}
@media(hover:none){body{cursor:auto;}}

/* ════════════════════════════════
   CANVAS BG (stars + web)
════════════════════════════════ */
#bgCanvas{
  position:fixed;inset:0;z-index:0;
  pointer-events:none;
  opacity:.7;
}

/* ════════════════════════════════
   GRADIENT BG SHIFT
════════════════════════════════ */
#gradBg{
  position:fixed;inset:0;z-index:0;
  background:radial-gradient(ellipse at 30% 40%,rgba(92,63,160,.18),transparent 60%),
             radial-gradient(ellipse at 80% 70%,rgba(139,104,204,.12),transparent 55%);
  animation:gradShift 12s ease-in-out infinite alternate;
  pointer-events:none;
}
@keyframes gradShift{
  0%  {background:radial-gradient(ellipse at 20% 35%,rgba(92,63,160,.2),transparent 58%),
                  radial-gradient(ellipse at 85% 65%,rgba(139,104,204,.12),transparent 52%);}
  50% {background:radial-gradient(ellipse at 75% 25%,rgba(92,63,160,.18),transparent 60%),
                  radial-gradient(ellipse at 15% 80%,rgba(185,158,232,.1),transparent 55%);}
  100%{background:radial-gradient(ellipse at 50% 70%,rgba(92,63,160,.22),transparent 58%),
                  radial-gradient(ellipse at 90% 20%,rgba(139,104,204,.13),transparent 50%);}
}

/* ════════════════════════════════
   GRAIN + VIGNETTE
════════════════════════════════ */
#grain{
  position:fixed;inset:0;z-index:9990;pointer-events:none;
  opacity:.45;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
}
#vignette{
  position:fixed;inset:0;z-index:9989;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 45%,rgba(7,6,14,.75) 100%);
}

/* ════════════════════════════════
   CURSOR (desktop only)
════════════════════════════════ */
#cur{
  position:fixed;top:0;left:0;
  width:18px;height:20px;
  pointer-events:none;z-index:99999;
  image-rendering:pixelated;
  transform:translate(-2px,-2px);
  will-change:transform;
  display:none;
}
#cur-ring{
  position:fixed;top:0;left:0;
  width:34px;height:34px;
  border:1px solid rgba(139,104,204,.5);
  border-radius:50%;pointer-events:none;z-index:99998;
  transform:translate(-50%,-50%);
  transition:width .18s,height .18s,border-color .18s;
  will-change:transform;
  display:none;
}
#cur-ring.big{width:50px;height:50px;border-color:rgba(139,104,204,.85);}
@media(hover:hover){#cur,#cur-ring{display:block;}}

/* touch ripple */
.ripple{
  position:fixed;pointer-events:none;z-index:9988;
  width:60px;height:60px;border-radius:50%;
  border:2px solid rgba(139,104,204,.6);
  transform:translate(-50%,-50%) scale(0);
  animation:rippleOut .6s ease forwards;
}
@keyframes rippleOut{to{transform:translate(-50%,-50%) scale(1);opacity:0;}}

/* ════════════════════════════════
   AURA (desktop)
════════════════════════════════ */
#aura{
  position:fixed;top:0;left:0;
  width:480px;height:480px;border-radius:50%;
  background:radial-gradient(circle,rgba(92,63,160,.2) 0%,rgba(92,63,160,.06) 45%,transparent 70%);
  pointer-events:none;z-index:1;mix-blend-mode:screen;
  transform:translate(-50%,-50%);
  will-change:transform;
  display:none;
}
@media(hover:hover){#aura{display:block;}}

/* ════════════════════════════════
   PROGRESS BAR
════════════════════════════════ */
#prog{
  position:fixed;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--p1),var(--p2),var(--p3));
  transform-origin:left;transform:scaleX(0);
  z-index:9999;box-shadow:0 0 8px var(--p2);
}

/* ════════════════════════════════
   MASCOT (fixed bottom right)
════════════════════════════════ */
#mascot{
  display:none;
  position:fixed;bottom:18px;right:18px;
  z-index:9980;width:68px;
  filter:drop-shadow(0 4px 16px rgba(92,63,160,.55));
  animation:bob 2.4s ease-in-out infinite;
  cursor:pointer;
}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-2deg);}50%{transform:translateY(-9px) rotate(2deg);}}
#mascot:hover,#mascot:active{animation:wave .3s ease-in-out 5;}
@keyframes wave{0%,100%{transform:rotate(-2deg);}50%{transform:rotate(16deg) scale(1.12);}}

/* ════════════════════════════════
   INTRO
════════════════════════════════ */
#intro{
  position:fixed;inset:0;z-index:8000;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--bg);overflow:hidden;
}
.intro-orb{
  position:absolute;border-radius:50%;pointer-events:none;
  animation:orbpulse 5s ease-in-out infinite;
}
@keyframes orbpulse{0%,100%{opacity:.5;transform:translate(-50%,-50%) scale(1);}50%{opacity:.9;transform:translate(-50%,-50%) scale(1.12);}}

/* glitch text effect for intro — VT323 pixel font */
.glitch{
  position:relative;
  font-family:'VT323',monospace;
  font-size:clamp(100px,24vw,180px);
  font-weight:400;line-height:.88;
  letter-spacing:.06em;text-align:center;
  image-rendering:pixelated;
  color:var(--text);
  opacity:0;animation:fu .8s ease .5s forwards;
}
.glitch em{font-style:italic;color:var(--p2);text-shadow:0 0 70px rgba(139,104,204,.6);}
.glitch::before,.glitch::after{
  content:attr(data-text);
  position:absolute;inset:0;
  font-family:inherit;font-size:inherit;font-weight:inherit;
  line-height:inherit;letter-spacing:inherit;text-align:center;
  animation:glitch1 4s infinite;
  pointer-events:none;
}
.glitch::before{color:rgba(185,158,232,.5);clip-path:polygon(0 20%,100% 20%,100% 40%,0 40%);animation:glitch1 4s infinite;}
.glitch::after {color:rgba(92,63,160,.6); clip-path:polygon(0 60%,100% 60%,100% 80%,0 80%);animation:glitch2 4s infinite;}
@keyframes glitch1{
  0%,89%,100%{transform:none;opacity:0;}
  90%{transform:translateX(-3px);opacity:.8;}
  93%{transform:translateX(3px);}
  96%{transform:translateX(-2px);}
}
@keyframes glitch2{
  0%,91%,100%{transform:none;opacity:0;}
  92%{transform:translateX(3px);opacity:.7;}
  95%{transform:translateX(-3px);}
  98%{transform:translateX(2px);}
}

.i-eye{
  font-family:'VT323',monospace;font-size:12px;
  letter-spacing:.28em;color:var(--p2);text-transform:uppercase;
  margin-bottom:22px;opacity:0;animation:fu .7s ease .3s forwards;
}
.i-sub{
  font-size:clamp(10px,2.5vw,12px);color:var(--muted);
  letter-spacing:.13em;margin-top:22px;text-align:center;line-height:2;
  opacity:0;animation:fu .7s ease .8s forwards;
}
.i-cta{
  margin-top:44px;font-family:'VT323',monospace;font-size:16px;
  color:var(--p3);letter-spacing:.22em;
  opacity:0;animation:fu .7s ease 1.1s forwards,blinkop 2.2s ease 2s infinite;
  cursor:pointer;
}
@keyframes fu{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
@keyframes blinkop{0%,100%{opacity:1;}50%{opacity:.2;}}

/* ════════════════════════════════
   MAIN
════════════════════════════════ */
#main{opacity:0;pointer-events:none;}
#main.on{opacity:1;pointer-events:auto;}

/* ════════════════════════════════
   SCENE BASE
════════════════════════════════ */
.scene{
  position:relative;
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:100px 24px 160px;
  overflow:hidden;
  z-index:2;
}
.s-inner{max-width:660px;width:100%;position:relative;z-index:3;}

/* scene bg overlays */
.scene::after{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(to bottom,rgba(7,6,14,.3),transparent 20%,transparent 80%,rgba(7,6,14,.4));
}

/* ════════════════════════════════
   FLOATING DECORATIVE ELEMENTS
════════════════════════════════ */
.deco{
  position:absolute;pointer-events:none;z-index:4;
  will-change:transform;
}

/* inclined label stickers */
.label-sticker{
  position:absolute;z-index:5;
  font-family:'VT323',monospace;font-size:clamp(10px,2.5vw,13px);
  letter-spacing:.18em;text-transform:uppercase;
  padding:6px 16px;
  border:1px solid var(--b2);
  border-radius:3px;
  background:rgba(7,6,14,.85);
  backdrop-filter:blur(8px);
  color:var(--p3);
  pointer-events:none;
  white-space:nowrap;
  box-shadow:0 4px 20px rgba(0,0,0,.4),0 0 16px rgba(92,63,160,.15);
}

/* ════════════════════════════════
   PHOTO PLACEHOLDER
════════════════════════════════ */
/* HOW TO ADD YOUR PHOTO:
   Replace the div.photo-slot with:
   <img src="tu-foto.jpg" class="photo-slot" alt="axel">
*/
.photo-slot{
  width:100%;height:100%;
  background:rgba(13,11,28,.9);
  border:1px dashed var(--b2);
  border-radius:inherit;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:10px;
  font-family:'VT323',monospace;font-size:13px;
  color:var(--muted);letter-spacing:.12em;text-transform:uppercase;
  object-fit:cover;
  cursor:inherit;
}
.photo-slot .ph-icon{font-size:32px;opacity:.4;}
.photo-slot .ph-txt{opacity:.5;text-align:center;line-height:1.8;font-size:11px;}
.photo-slot .ph-code{
  font-size:9px;color:rgba(139,104,204,.4);
  margin-top:6px;text-align:center;line-height:1.7;
}

/* photo frame */
.photo-frame{
  border-radius:8px;
  overflow:hidden;
  border:1px solid var(--b);
  box-shadow:0 8px 40px rgba(0,0,0,.5),0 0 30px rgba(92,63,160,.12);
  background:rgba(13,11,28,.9);
}
.photo-frame img{width:100%;height:100%;object-fit:cover;display:block;}

/* ════════════════════════════════
   GIF SLOT
════════════════════════════════ */
/* HOW TO ADD GIFs:
   Replace div.gif-slot with:
   <img src="tu-gif.gif" class="gif-slot" alt="">
   OR use online GIFs:
   <img src="https://media.giphy.com/media/XXXXX/giphy.gif" class="gif-slot" alt="">
*/
.gif-slot{
  border-radius:6px;overflow:hidden;
  background:rgba(13,11,28,.9);
  border:1px dashed var(--b);
  display:flex;align-items:center;justify-content:center;
  font-family:'VT323',monospace;font-size:11px;
  color:var(--muted);letter-spacing:.1em;
  text-transform:uppercase;text-align:center;
  padding:12px;
  object-fit:cover;width:100%;height:100%;
}

/* ════════════════════════════════
   TYPOGRAPHY
════════════════════════════════ */
.s-eye{
  font-family:'VT323',monospace;font-size:12px;
  letter-spacing:.28em;color:var(--p1);text-transform:uppercase;
  margin-bottom:18px;display:flex;align-items:center;gap:10px;
}
.s-eye::after{content:'';flex:1;height:1px;background:var(--b);}

.s-h{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(34px,7vw,60px);
  font-weight:300;line-height:1.04;letter-spacing:-.025em;
  color:var(--text);margin-bottom:20px;
}
.s-h em{font-style:italic;color:var(--p2);}
.s-h .scratch{position:relative;display:inline-block;}
.s-h .scratch::after{
  content:'';position:absolute;left:0;top:52%;
  width:100%;height:2px;background:var(--p1);transform:rotate(-1.5deg);
}

/* glitch word inline */
.gw{
  display:inline-block;position:relative;
  animation:gwAnim 8s ease-in-out infinite;
}
@keyframes gwAnim{
  0%,88%,100%{transform:none;filter:none;}
  90%{transform:translateX(-2px);filter:blur(.5px);color:var(--p3);}
  93%{transform:translateX(2px);color:var(--p2);}
  96%{transform:none;}
}

.s-p{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(17px,3.5vw,21px);
  font-weight:300;font-style:italic;
  color:var(--text2);line-height:1.9;margin-bottom:22px;
}
.s-p strong{font-style:normal;font-weight:400;color:var(--text);border-bottom:1px solid var(--p1);}
.s-p .quote{font-size:clamp(19px,4vw,24px);color:var(--p3);}

.s-div{
  height:1px;
  background:linear-gradient(90deg,transparent,var(--b2),transparent);
  margin:26px 0;
}

/* ════════════════════════════════
   TAGS
════════════════════════════════ */
.tags{display:flex;flex-wrap:wrap;gap:7px;}
.tag{
  font-size:9px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);border:1px solid var(--b);border-radius:2px;
  padding:4px 10px;background:rgba(13,11,28,.8);
  transition:all .22s;cursor:pointer;
}
.tag:hover,.tag:active{color:var(--p3);border-color:var(--b2);box-shadow:0 0 12px rgba(92,63,160,.22);}

/* ════════════════════════════════
   NOW PLAYING
════════════════════════════════ */
.np{
  display:flex;align-items:center;gap:16px;
  background:rgba(13,11,28,.9);border:1px solid var(--b);
  border-radius:8px;padding:18px 20px;
  position:relative;overflow:hidden;
  transition:border-color .3s;
}
.np::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 0 50%,rgba(92,63,160,.1),transparent 60%);
  pointer-events:none;
}
.np:hover{border-color:var(--b2);}
.vinyl{
  width:50px;height:50px;flex-shrink:0;border-radius:50%;
  background:conic-gradient(#13102a 0deg,#1e1b38 45deg,#13102a 90deg,#1e1b38 135deg,#13102a 180deg,#1e1b38 225deg,#13102a 270deg,#1e1b38 315deg,#13102a 360deg);
  border:1px solid rgba(92,63,160,.3);
  display:flex;align-items:center;justify-content:center;
  animation:spin 3.5s linear infinite;
}
.vinyl::after{content:'';width:13px;height:13px;border-radius:50%;background:var(--bg);border:1px solid rgba(92,63,160,.2);}
@keyframes spin{to{transform:rotate(360deg);}}
.track-info{flex:1;min-width:0;}
.track-name{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px;}
.track-art{font-size:11px;color:var(--muted);}
.bars{display:flex;align-items:flex-end;gap:2px;height:18px;}
.bars span{display:block;width:2px;background:var(--p2);border-radius:1px;animation:bar .72s ease-in-out infinite alternate;}
.bars span:nth-child(1){height:6px;animation-delay:0s;}
.bars span:nth-child(2){height:15px;animation-delay:.1s;}
.bars span:nth-child(3){height:9px;animation-delay:.22s;}
.bars span:nth-child(4){height:13px;animation-delay:.06s;}
.bars span:nth-child(5){height:5px;animation-delay:.31s;}
@keyframes bar{from{transform:scaleY(.2);}to{transform:scaleY(1);}}

/* artist cards */
.artist-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.artist-card{
  background:rgba(13,11,28,.9);border:1px solid var(--b);
  border-radius:6px;padding:14px;
  transition:all .22s;cursor:pointer;
  position:relative;overflow:hidden;
}
.artist-card::before{
  content:'';position:absolute;inset:0;opacity:0;
  background:radial-gradient(ellipse at center,rgba(92,63,160,.15),transparent 70%);
  transition:opacity .3s;
}
.artist-card:hover::before,.artist-card:active::before{opacity:1;}
.artist-card:hover,.artist-card:active{border-color:var(--b2);}
.ac-name{font-size:13px;color:var(--text);margin-bottom:3px;}
.ac-sub{font-size:9px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;}

/* ════════════════════════════════
   GAME CARDS
════════════════════════════════ */
.game-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.game-card{opacity:1 !important;}
@media(min-width:480px){.game-grid{grid-template-columns:repeat(3,1fr);}}
.game-card{
  aspect-ratio:3/4;border-radius:8px;overflow:hidden;
  border:1px solid var(--b);position:relative;
  background:rgba(13,11,28,.9);
  transition:transform .22s,border-color .22s;cursor:pointer;
}
.game-card:hover,.game-card:active{transform:scale(.97);border-color:var(--b2);}

/* HOW TO ADD GAME IMAGES:
   Inside .game-card add:
   <img src="tu-imagen.jpg" style="width:100%;height:100%;object-fit:cover;">
   Then the overlay stays on top.
*/
.game-card .gc-img{
  width:100%;height:100px;
  display:flex;align-items:center;justify-content:center;
  font-size:32px;background:rgba(10,8,20,.9);
}
.game-card .gc-lbl{
  position:absolute;bottom:0;left:0;right:0;
  padding:10px 12px;
  background:linear-gradient(to top,rgba(7,6,14,.95),transparent);
}
.game-card .gc-name{font-size:11px;color:var(--text);letter-spacing:.04em;}
.game-card .gc-vibe{font-size:9px;color:var(--muted);letter-spacing:.08em;margin-top:2px;}

/* ════════════════════════════════
   PHOTO LAYOUT (hero section)
════════════════════════════════ */
.hero-layout{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  align-items:start;
}
@media(max-width:480px){.hero-layout{grid-template-columns:1fr;}}

.hero-photo{
  aspect-ratio:3/4;
  border-radius:10px;
  overflow:hidden;
  border:1px solid var(--b);
  position:relative;
  background:rgba(13,11,28,.9);
  /* HOW TO ADD YOUR PHOTO:
     Replace the .photo-slot div with:
     <img src="tu-foto.jpg" style="width:100%;height:100%;object-fit:cover;display:block;">
  */
}
.hero-photo-sm{
  aspect-ratio:1;
  border-radius:8px;overflow:hidden;
  border:1px solid var(--b);
  background:rgba(13,11,28,.9);
  /* HOW TO ADD:
     <img src="tu-imagen.jpg" style="width:100%;height:100%;object-fit:cover;display:block;">
  */
}

/* ════════════════════════════════
   QUOTE BLOCK
════════════════════════════════ */
.quote-block{
  background:rgba(13,11,28,.8);
  border-left:2px solid var(--p2);
  border-radius:0 8px 8px 0;
  padding:20px 24px;
  position:relative;
  overflow:hidden;
}
.quote-block::before{
  content:'"';
  position:absolute;top:-10px;left:10px;
  font-family:'Cormorant Garamond',serif;
  font-size:100px;color:rgba(92,63,160,.08);
  line-height:1;pointer-events:none;
}
.qtext{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(18px,4vw,24px);
  font-style:italic;font-weight:300;
  color:var(--p3);line-height:1.7;margin-bottom:10px;
}
.qby{font-size:10px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;}


/* Esto hace que el overlay de video se comporte igual al de fotos */
#video-overlay {
  position: fixed;
  inset: 0;
  z-index: 20000;
  background: rgba(7, 6, 14, 0);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  transition: background .4s ease;
}

#video-overlay.active {
  background: rgba(7, 6, 14, .92);
  pointer-events: auto;
  backdrop-filter: blur(6px);
}

#video-overlay #polaroid-frame {
  background: #f0ece0;
  padding: 16px 16px 52px;
  border-radius: 2px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .7), 0 0 0 1px rgba(255, 255, 255, .05);
  transform: rotate(0deg) scale(.6);
  opacity: 0;
  transition: transform .5s cubic-bezier(.34, 1.56, .64, 1), opacity .4s ease;
  max-width: min(85vw, 420px);
  position: relative;
}

#video-overlay.active #polaroid-frame {
  transform: rotate(-1.5deg) scale(1);
  opacity: 1;
}

#p-video-player {
  width: 100%;
  display: block;
  border-radius: 1px;
}


.video-slot .vs-code {
  width: 100%;
  height: 100%;
  margin-top: 0;
  overflow: hidden;
  border-radius: 8px;
}

.video-slot .vs-code video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ════════════════════════════════
   TERMINAL WINDOWS
════════════════════════════════ */
.wbtns{display:flex;gap:8px;flex-wrap:wrap;}
.wbtn{
  font-family:'VT323',monospace;font-size:13px;
  padding:8px 16px;background:rgba(13,11,28,.9);
  border:1px solid var(--b);border-radius:4px;
  color:var(--p2);letter-spacing:.1em;
  cursor:pointer;transition:all .2s;user-select:none;
}
.wbtn:hover,.wbtn:active{background:rgba(92,63,160,.12);border-color:var(--b2);box-shadow:0 0 16px rgba(92,63,160,.2);}
.cmdw{
  position:fixed;width:clamp(270px,88vw,340px);
  background:rgba(8,7,18,.97);border:1px solid var(--b2);
  border-radius:8px;z-index:5000;
  backdrop-filter:blur(16px);
  box-shadow:0 28px 70px rgba(0,0,0,.7),0 0 40px rgba(92,63,160,.1);
  display:none;overflow:hidden;animation:wopen .22s ease;
}
.cmdw.open{display:block;}
@keyframes wopen{from{opacity:0;transform:scale(.92) translateY(-10px);}to{opacity:1;transform:none;}}
.wbar{
  background:rgba(13,11,28,.9);padding:10px 14px;
  display:flex;align-items:center;gap:10px;
  cursor:move;user-select:none;border-bottom:1px solid var(--b);
}
.wdots{display:flex;gap:5px;}
.wd{width:10px;height:10px;border-radius:50%;cursor:pointer;transition:opacity .2s;}
.wd:hover{opacity:.7;}
.wdr{background:#ff5f57;}.wdy{background:#ffbd2e;}.wdg{background:#28c840;}
.wtitle{font-family:'VT323',monospace;font-size:13px;color:var(--p2);letter-spacing:.1em;flex:1;text-align:center;}
.wbody{padding:14px 16px 18px;font-size:11px;line-height:2;color:var(--text2);max-height:240px;overflow-y:auto;}
.wbody::-webkit-scrollbar{width:3px;}
.wbody::-webkit-scrollbar-thumb{background:var(--b2);}
.wp{color:var(--p1);}.wa{color:var(--p3);}
.wblink{display:inline-block;width:7px;height:12px;background:var(--p2);vertical-align:middle;animation:blink 1s step-end infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:0;}}

/* ════════════════════════════════
   LINKS
════════════════════════════════ */
.lstack{display:flex;flex-direction:column;gap:8px;}
.lnk{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 20px;background:rgba(13,11,28,.9);
  border:1px solid var(--b);border-radius:6px;
  text-decoration:none;color:var(--text);font-size:12px;
  letter-spacing:.06em;transition:all .22s;
  position:relative;overflow:hidden;cursor:pointer;
}
.lnk::before{
  content:'';position:absolute;left:0;top:0;bottom:0;
  width:2px;background:var(--p2);transform:scaleY(0);transition:transform .22s;
}
.lnk:hover::before,.lnk:active::before{transform:scaleY(1);}
.lnk:hover,.lnk:active{background:rgba(92,63,160,.08);border-color:var(--b2);padding-left:24px;}
.lnk-sub{font-size:9px;color:var(--muted);margin-top:3px;letter-spacing:.08em;}
.lnk-arr{font-size:11px;color:var(--muted);transition:all .2s;}
.lnk:hover .lnk-arr,.lnk:active .lnk-arr{transform:translate(2px,-2px);color:var(--p2);}

/* ════════════════════════════════
   FOOTER
════════════════════════════════ */
footer{
  padding:40px 0 80px;text-align:center;
  font-family:'VT323',monospace;font-size:14px;
  color:var(--muted);letter-spacing:.14em;
}
footer .acc{color:var(--p2);}

/* ════════════════════════════════
   SCROLLBAR
════════════════════════════════ */
::-webkit-scrollbar{width:4px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:rgba(139,104,204,.35);border-radius:2px;}

/* ════════════════════════════════
   MUSIC BADGE
════════════════════════════════ */
#mbadge{
  position:fixed;top:18px;right:80px;z-index:9995;
  display:flex;align-items:center;gap:8px;
  font-family:'VT323',monospace;font-size:12px;
  color:var(--p2);letter-spacing:.12em;
  opacity:0;pointer-events:none;transition:opacity .4s;
}
#mbadge .mb{display:flex;align-items:flex-end;gap:1px;height:12px;}
#mbadge .mb span{display:block;width:2px;background:var(--p2);border-radius:1px;animation:bar .72s ease-in-out infinite alternate;}
#mbadge .mb span:nth-child(1){height:5px;animation-delay:0s;}
#mbadge .mb span:nth-child(2){height:11px;animation-delay:.14s;}
#mbadge .mb span:nth-child(3){height:7px;animation-delay:.28s;}
@media(max-width:480px){#mbadge{right:20px;top:16px;font-size:10px;}}


/* ════════════════════════════════
   IMAGE ENTRANCE ANIMATIONS
════════════════════════════════ */
/* photo-frame gets assigned one of these by JS */
.img-enter-glitch { opacity:0; }
.img-enter-bounce { opacity:0; }
.img-enter-drag   { opacity:0; }
.img-enter-slide  { opacity:0; }

/* game cards always visible */
.game-card{ clip-path: none !important; }

/* gif-slot entrance */
.gif-slot,.deco[style*="overflow:hidden"]{opacity:0;}
/* ════════════════════════════════
   RAIN + STARS (vibe cell)
════════════════════════════════ */
.rain-w{position:absolute;inset:0;overflow:hidden;pointer-events:none;}
.rdrop{position:absolute;width:1px;background:rgba(139,104,204,.4);animation:rfll linear infinite;}
@keyframes rfll{from{transform:translateY(-100%);}to{transform:translateY(200%);}}

/* ════════════════════════════════
   MINECRAFT LOADING SCREEN (OG style)
════════════════════════════════ */
#mcload{
  position:fixed;inset:0;z-index:8500;
  display:none;align-items:center;justify-content:center;
  flex-direction:column;gap:0;
  /* dirt texture via repeating pattern */
  background-color:#6b4423;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Crect width='32' height='32' fill='%236b4423'/%3E%3Crect x='0' y='0' width='8' height='8' fill='%23593819'/%3E%3Crect x='16' y='8' width='8' height='8' fill='%23593819'/%3E%3Crect x='8' y='16' width='8' height='8' fill='%23593819'/%3E%3Crect x='24' y='24' width='8' height='8' fill='%23593819'/%3E%3Crect x='4' y='4' width='4' height='4' fill='%237a4f2a'/%3E%3Crect x='20' y='12' width='4' height='4' fill='%237a4f2a'/%3E%3Crect x='12' y='20' width='4' height='4' fill='%237a4f2a'/%3E%3Crect x='28' y='28' width='4' height='4' fill='%237a4f2a'/%3E%3Crect x='0' y='16' width='4' height='4' fill='%23502f15'/%3E%3Crect x='16' y='0' width='4' height='4' fill='%23502f15'/%3E%3Crect x='8' y='24' width='4' height='4' fill='%23502f15'/%3E%3Crect x='24' y='8' width='4' height='4' fill='%23502f15'/%3E%3C/svg%3E");
  background-size:64px 64px;
  image-rendering:pixelated;
}
#mcload.show{display:flex;}

/* pct text above box */
#mc-pct-txt{
  font-family:'VT323',monospace;
  font-size:clamp(18px,4vw,22px);
  color:#fff;
  letter-spacing:.12em;
  margin-bottom:12px;
  image-rendering:pixelated;
  text-shadow:2px 2px 0 rgba(0,0,0,.8);
}

/* mc-box replaced by canvas */

/* tip below */
#mc-tip{
  font-family:'VT323',monospace;
  font-size:clamp(11px,2.5vw,14px);
  color:rgba(255,255,255,.55);
  letter-spacing:.1em;text-align:center;
  margin-top:14px;
  text-shadow:1px 1px 0 rgba(0,0,0,.8);
  transition:opacity .3s;
}

/* ════════════════════════════════
   MINI PET (deambula por la pantalla)
════════════════════════════════ */
#pet{
  display:none;
  position:fixed;
  z-index:9970;
  pointer-events:none;
  image-rendering:pixelated;
  width:38px;
  bottom:100px;
  left:80px;
  will-change:transform;
  filter:drop-shadow(0 3px 8px rgba(92,63,160,.5));
}
#pet svg{display:block;width:100%;image-rendering:pixelated;}

/* speech bubble */
#pet-bubble{
  display:none;
  position:fixed;z-index:9971;
  background:rgba(10,8,24,.92);
  border:2px solid var(--p2);
  border-radius:6px 6px 6px 0;
  padding:5px 10px;
  font-family:'VT323',monospace;font-size:13px;
  color:var(--p3);letter-spacing:.08em;
  white-space:nowrap;
  opacity:0;pointer-events:none;
  box-shadow:0 4px 16px rgba(0,0,0,.4),0 0 12px rgba(92,63,160,.2);
  transition:opacity .25s;
}


/* ════════════════════════════════
   PIXEL TRAIL
════════════════════════════════ */
.px-trail {
  position: fixed;
  width: 4px;
  height: 4px;
  border-radius: 0;          /* pixel — no border radius */
  pointer-events: none;
  z-index: 9985;
  image-rendering: pixelated;
  animation: px-fade .55s ease forwards;
}
@keyframes px-fade {
  0%   { opacity: .85; transform: scale(1); }
  60%  { opacity: .4;  transform: scale(.7); }
  100% { opacity: 0;   transform: scale(0); }
}

/* ════════════════════════════════
   EASTER EGG — DANCE MODE
════════════════════════════════ */
#easter-overlay {
  position:fixed;inset:0;z-index:19000;
  background:#000;opacity:0;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:24px;
}
#easter-overlay.active { pointer-events:auto; }
#easter-title {
  font-family:'VT323',monospace;
  font-size:clamp(28px,7vw,52px);
  color:var(--p3);letter-spacing:.2em;text-align:center;
  text-shadow:0 0 30px rgba(185,158,232,.8);
  opacity:0;
}
#easter-subtitle {
  font-family:'VT323',monospace;
  font-size:clamp(13px,3vw,18px);
  color:var(--muted);letter-spacing:.15em;text-align:center;
  opacity:0;
}
.dance-pet {
  position:fixed;bottom:30px;
  image-rendering:pixelated;
  pointer-events:none;z-index:19001;
}
.dance-pet svg { display:block; }
/* bounce bob while walking */
@keyframes petBob {
  0%,100%{ transform:translateY(0); }
  50%    { transform:translateY(-10px); }
}
/* speech bubble for dancing pet */
.dance-bubble {
  position:fixed;z-index:19003;
  background:rgba(10,8,24,.92);
  border:2px solid var(--p2);
  border-radius:6px 6px 6px 0;
  padding:4px 10px;
  font-family:'VT323',monospace;font-size:14px;
  color:var(--p3);letter-spacing:.08em;
  white-space:nowrap;pointer-events:none;
  opacity:0;
}
/* confetti pixel */
.confetti-px {
  position:fixed;pointer-events:none;z-index:19002;
  width:6px;height:6px;border-radius:0;
  animation:confettiFall linear forwards;
}
@keyframes confettiFall {
  0%   { transform:translateY(0) rotate(0deg);   opacity:1; }
  100% { transform:translateY(100vh) rotate(720deg); opacity:0; }
}

/* ════════════════════════════════
   EASTER EGG — HINT SEQUENCE
════════════════════════════════ */
#hint-overlay {
  position:fixed;inset:0;z-index:18000;
  background:rgba(7,6,14,.92);
  backdrop-filter:blur(8px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:20px;opacity:0;pointer-events:none;
}
#hint-overlay.active { pointer-events:auto; }
#hint-title {
  font-family:'VT323',monospace;
  font-size:clamp(22px,6vw,40px);
  color:var(--p3);letter-spacing:.18em;text-align:center;
  text-shadow:0 0 20px rgba(185,158,232,.6);
}
#hint-body {
  font-family:'VT323',monospace;
  font-size:clamp(14px,3.5vw,20px);
  color:var(--text2);letter-spacing:.12em;text-align:center;
  line-height:2;max-width:340px;
}
#hint-pattern {
  font-family:'VT323',monospace;
  font-size:clamp(18px,5vw,30px);
  color:var(--p2);letter-spacing:.25em;text-align:center;
  background:rgba(92,63,160,.15);
  border:1px solid var(--b2);border-radius:6px;
  padding:12px 24px;
}
#hint-input-display {
  font-family:'VT323',monospace;
  font-size:clamp(16px,4vw,24px);
  color:var(--gold);letter-spacing:.2em;
  min-height:32px;text-align:center;
}
#hint-close {
  font-family:'VT323',monospace;font-size:13px;
  color:var(--muted);letter-spacing:.15em;cursor:pointer;
  margin-top:8px;
}
#hint-close:hover { color:var(--p3); }

/* ════════════════════════════════
   DRAG PETS
════════════════════════════════ */
#pet {
  cursor: grab;
  transition: transform .2s ease, filter .2s ease;
}
#pet:hover {
  transform: scale(1.35) !important;
  filter: drop-shadow(0 0 10px rgba(139,104,204,.7)) !important;
  cursor: grab;
}
#pet.dragging {
  cursor: grabbing;
  z-index: 9995;
  transform: scale(1.2) !important;
}

/* ════════════════════════════════
   2AM SECRET MESSAGE
════════════════════════════════ */
#secret-2am {
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  z-index:9960;
  background:rgba(7,6,14,.9);
  border:1px solid var(--p2);
  border-radius:8px;
  padding:14px 22px;
  font-family:'VT323',monospace;font-size:clamp(13px,3vw,17px);
  color:var(--p3);letter-spacing:.12em;text-align:center;
  line-height:1.8;
  pointer-events:none;
  opacity:0;
  box-shadow:0 0 30px rgba(92,63,160,.3);
  max-width:min(340px,88vw);
}

/* ════════════════════════════════
   GLITCH SCREEN FLASH
════════════════════════════════ */
#glitch-flash {
  position:fixed;inset:0;z-index:9988;pointer-events:none;
  opacity:0;mix-blend-mode:screen;
  background:linear-gradient(
    180deg,
    transparent 0%,
    rgba(139,104,204,.15) 49%,
    rgba(0,0,0,.2) 50%,
    transparent 51%
  );
}

/* ════════════════════════════════
   SCROLL SECRET (bottom message)
════════════════════════════════ */
#scroll-secret {
  position:fixed;bottom:80px;left:50%;transform:translateX(-50%);
  z-index:9958;
  font-family:'VT323',monospace;font-size:clamp(11px,2.5vw,14px);
  color:rgba(92,63,160,.4);letter-spacing:.18em;
  pointer-events:none;opacity:0;white-space:nowrap;
  text-align:center;
}

/* ════════════════════════════════
   PET ZZZ (sleeping)
════════════════════════════════ */
.pet-zzz {
  position:fixed;z-index:9972;
  font-family:'VT323',monospace;font-size:14px;
  color:var(--p3);pointer-events:none;
  animation:zzzFloat 2s ease-in-out infinite;
  opacity:0;
}
@keyframes zzzFloat {
  0%   { transform:translateY(0) scale(1);   opacity:.8; }
  100% { transform:translateY(-28px) scale(.6); opacity:0; }
}

/* ════════════════════════════════
   MASCOT HINT BUBBLE (easter egg)
════════════════════════════════ */
#mascot-hint {
  position:fixed;z-index:9981;
  background:rgba(10,8,24,.92);
  border:2px solid var(--gold);
  border-radius:6px 6px 0 6px;
  padding:6px 12px;
  font-family:'VT323',monospace;font-size:13px;
  color:var(--gold);letter-spacing:.08em;
  white-space:nowrap;opacity:0;pointer-events:none;
  transition:opacity .3s;
}

/* ════════════════════════════════
   BUZÓN / GUESTBOOK
════════════════════════════════ */
#buzon-section { position:relative; }

.buzon-wrap {
  background: rgba(13,11,28,.9);
  border: 1px solid var(--b2);
  border-radius: 10px;
  padding: 24px 22px 28px;
  position: relative;
  overflow: hidden;
}
.buzon-wrap::before {
  content:'';position:absolute;inset:0;
  background: radial-gradient(ellipse at 0% 0%, rgba(92,63,160,.1), transparent 60%);
  pointer-events:none;
}

/* soy  */
.buzon-soy-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.buzon-soy-label {
  font-family: 'VT323', monospace;
  font-size: 16px;
  color: var(--p2);
  letter-spacing: .15em;
  white-space: nowrap;
}
.buzon-select {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  background: rgba(7,6,14,.9);
  border: 1px solid var(--b2);
  border-radius: 4px;
  color: var(--p3);
  padding: 6px 10px;
  letter-spacing: .06em;
  cursor: pointer;
  outline: none;
  transition: border-color .2s;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238b68cc'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  padding-right: 26px;
}
.buzon-select:focus { border-color: var(--p2); }

.buzon-name-input {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  background: rgba(7,6,14,.9);
  border: 1px solid var(--b2);
  border-radius: 4px;
  color: var(--p3);
  padding: 6px 10px;
  letter-spacing: .06em;
  outline: none;
  transition: border-color .2s, opacity .2s;
  width: 380px;
}
.buzon-name-input:focus { border-color: var(--p2); }
.buzon-name-input.hidden { opacity:0; pointer-events:none; width:0; padding:0; border:none; }

/* textarea */
.buzon-textarea {
  width: 100%;
  min-height: 100px;
  background: rgba(7,6,14,.85);
  border: 1px solid var(--b);
  border-radius: 6px;
  color: var(--text);
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  line-height: 1.8;
  padding: 12px 14px;
  resize: vertical;
  outline: none;
  letter-spacing: .04em;
  transition: border-color .2s;
  margin-bottom: 14px;
}
.buzon-textarea:focus { border-color: var(--p2); }
.buzon-textarea::placeholder { color: var(--muted); }

/* char counter */
.buzon-counter {
  font-family: 'VT323', monospace;
  font-size: 12px;
  color: var(--muted);
  letter-spacing: .1em;
  text-align: right;
  margin-top: -10px;
  margin-bottom: 12px;
}

/* send button */
.buzon-btn {
  font-family: 'VT323', monospace;
  font-size: 15px;
  letter-spacing: .15em;
  color: var(--bg);
  background: var(--p2);
  border: none;
  border-radius: 4px;
  padding: 10px 24px;
  cursor: pointer;
  transition: background .2s, transform .1s;
  display: flex;
  align-items: center;
  gap: 8px;
}
.buzon-btn:hover { background: var(--p3); }
.buzon-btn:active { transform: scale(.97); }
.buzon-btn:disabled { opacity:.5; cursor:not-allowed; }

/* status messages */
.buzon-status {
  font-family: 'VT323', monospace;
  font-size: 14px;
  letter-spacing: .1em;
  margin-top: 12px;
  min-height: 22px;
  text-align: center;
  opacity: 0;
  transition: opacity .3s;
}
.buzon-status.ok  { color: #54c000; }
.buzon-status.err { color: #ff5f57; }
.buzon-status.show { opacity: 1; }

/* success confetti overlay (reuses px-trail) */

/* ════════════════════════════════
   POLAROID FULLSCREEN
════════════════════════════════ */
#polaroid-overlay {
  position:fixed;inset:0;z-index:20000;
  background:rgba(7,6,14,0);
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
  transition:background .4s ease;
}
#polaroid-overlay.active {
  background:rgba(7,6,14,.92);
  pointer-events:auto;
  cursor:pointer;
  backdrop-filter:blur(6px);
}
#polaroid-frame {
  background:#f0ece0;
  padding:16px 16px 52px;
  border-radius:2px;
  box-shadow:0 20px 60px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.05);
  transform:rotate(0deg) scale(.6);
  opacity:0;
  transition:transform .5s cubic-bezier(.34,1.56,.64,1), opacity .4s ease;
  max-width:min(85vw,420px);
  position:relative;
}
#polaroid-overlay.active #polaroid-frame {
  transform:rotate(-1.5deg) scale(1);
  opacity:1;
}
#polaroid-img {
  width:100%;
  display:block;
  border-radius:1px;
  /* reveal: starts dark, fades to color */
  filter:brightness(0) sepia(0);
  transition:filter 1.2s ease .2s;
}
#polaroid-overlay.active #polaroid-img {
  filter:brightness(1) sepia(0);
}
#polaroid-caption {
  font-family:'VT323',monospace;
  font-size:15px;
  color:#3a3020;
  letter-spacing:.12em;
  text-align:center;
  margin-top:10px;
  opacity:0;
  transition:opacity .6s ease .8s;
}
#polaroid-overlay.active #polaroid-caption { opacity:1; }
#polaroid-close {
  display:block;
  margin-top:8px;
  font-family:'VT323',monospace;font-size:13px;
  color:#8a7a60;letter-spacing:.12em;
  cursor:pointer;text-align:center;
  transition:color .2s;
}
#polaroid-close:hover{color:#3a3020;}

/* make photo-frame images clickable */
.photo-frame img, .hero-photo img, .hero-photo-sm img {
  cursor:pointer;
  transition:transform .2s, filter .2s;
}
.photo-frame img:hover, .hero-photo img:hover, .hero-photo-sm img:hover {
  transform:scale(1.03);
  filter:brightness(1.1);
}
/* video slot */
video.clickable-media { cursor:pointer; }

/* ════════════════════════════════
   CUSTOM RIGHT-CLICK MENU
════════════════════════════════ */
#ctx-menu {
  position:fixed;z-index:21000;
  background:rgba(9,8,20,.97);
  border:1px solid var(--b2);
  border-radius:6px;
  padding:6px 0;
  min-width:200px;
  box-shadow:0 8px 32px rgba(0,0,0,.6), 0 0 20px rgba(92,63,160,.15);
  backdrop-filter:blur(12px);
  opacity:0;pointer-events:none;
  transform:scale(.92) translateY(-4px);
  transition:opacity .15s, transform .15s;
  font-family:'VT323',monospace;
}
#ctx-menu.show {
  opacity:1;pointer-events:auto;
  transform:scale(1) translateY(0);
}
.ctx-item {
  display:flex;align-items:center;gap:10px;
  padding:8px 16px;
  font-size:14px;letter-spacing:.1em;
  color:var(--text2);cursor:pointer;
  transition:background .15s, color .15s;
  user-select:none;
}
.ctx-item:hover {
  background:rgba(92,63,160,.18);
  color:var(--p3);
}
.ctx-item .ctx-icon { font-size:16px;width:20px;text-align:center; }
.ctx-sep {
  height:1px;background:var(--b);
  margin:4px 0;
}
.ctx-label {
  padding:6px 16px 2px;
  font-size:11px;color:var(--muted);
  letter-spacing:.2em;text-transform:uppercase;
}

/* ════════════════════════════════
   GAME CARDS — TEMAS POR JUEGO
════════════════════════════════ */

/* Base overrides — no subtitle vibe */
.game-card .gc-lbl {
  background: linear-gradient(to top, rgba(0,0,0,.85), transparent);
  padding: 8px 10px 10px;
}
.game-card .gc-name {
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(255,255,255,.6);
  font-family: 'DM Mono', monospace;
}
/* hide vibe subtitle completely */
.game-card .gc-vibe { display: none; }

/* gc-img fills full card */
.game-card .gc-img {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  position: relative;
}
.game-card .gc-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
}

/* ── FRAME OVERLAY (marco temático) ── */
.gc-frame {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  border-radius: inherit;
}

/* ── STARDEW — marco madera pixelado cálido ── */
.game-stardew { background: #0a1a08; }
.gc-frame-stardew {
  border: 3px solid #5a3a1a;
  box-shadow:
    inset 0 0 0 2px #8b5a2a,
    inset 0 0 0 4px #3a2010,
    0 0 20px rgba(90,180,60,.15);
}
.gc-frame-stardew::before {
  content: '';
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(140,200,80,.2);
  border-radius: 2px;
}

/* ── TERRARIA — marco metal/tierra pixel ── */
.game-terraria { background: #0d0a1a; }
.gc-frame-terraria {
  border: 3px solid #4a3a6a;
  box-shadow:
    inset 0 0 0 2px #8b68cc,
    inset 0 0 0 4px #1a1030,
    0 0 20px rgba(107,79,168,.2);
}
.gc-frame-terraria::before {
  content: '';
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(139,104,204,.25);
  border-radius: 2px;
}

/* ── BRAWL STARS — marco amarillo/dorado energético ── */
.game-brawl { background: #1a1100; }
.gc-frame-brawl {
  border: 3px solid #8a6000;
  box-shadow:
    inset 0 0 0 2px #ffbd2e,
    inset 0 0 0 4px #5a3a00,
    0 0 22px rgba(255,189,46,.18);
}
.gc-frame-brawl::before {
  content: '';
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(255,189,46,.2);
  border-radius: 2px;
}
/* corner stars Brawl style */
.gc-frame-brawl::after {
  content: '★';
  position: absolute;
  top: 4px; right: 6px;
  font-size: 9px;
  color: rgba(255,189,46,.4);
}

/* ── SPIDER-MAN — marco rojo/azul web ── */
.game-spider { background: #12010a; }
.gc-frame-spider {
  border: 3px solid #6a0010;
  box-shadow:
    inset 0 0 0 2px #cc2233,
    inset 0 0 0 4px #300008,
    0 0 22px rgba(204,34,51,.15);
}
.gc-frame-spider::before {
  content: '';
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(204,34,51,.2);
  border-radius: 2px;
  /* web pattern */
  background:
    repeating-linear-gradient(
      45deg,
      transparent,
      transparent 8px,
      rgba(204,34,51,.04) 8px,
      rgba(204,34,51,.04) 9px
    ),
    repeating-linear-gradient(
      -45deg,
      transparent,
      transparent 8px,
      rgba(204,34,51,.04) 8px,
      rgba(204,34,51,.04) 9px
    );
}

/* ── MINECRAFT — marco bloques pixel ── */
.game-minecraft { background: #07101a; }
.gc-frame-minecraft {
  border: 4px solid #2a4a1a;
  box-shadow:
    inset 0 0 0 2px #54c000,
    inset 0 0 0 5px #1a2a0a,
    0 0 20px rgba(84,192,0,.12);
  image-rendering: pixelated;
}
.gc-frame-minecraft::before {
  content: '';
  position: absolute;
  inset: 5px;
  border: 1px solid rgba(84,192,0,.15);
}
/* pixel corners */
.gc-frame-minecraft::after {
  content: '';
  position: absolute;
  top: 3px; left: 3px;
  width: 4px; height: 4px;
  background: #54c000;
  opacity: .4;
  box-shadow: calc(100% - 16px) 0 0 #54c000, 0 calc(100% - 16px) 0 #54c000, calc(100% - 16px) calc(100% - 16px) 0 #54c000;
}

/* ── ROBLOX —── */
.game-roblox { background: #150500; }
.gc-frame-roblox {
  border: 3px solid #5a1a00;
  box-shadow:
    inset 0 0 0 2px #cc4400,
    inset 0 0 0 4px #2a0800,
    0 0 24px rgba(200,60,0,.18);
}
.gc-frame-roblox::before {
  content: '';
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(200,80,0,.22);
  border-radius: 1px;
}
.gc-frame-roblox::after {
  content: '᛭';
  position: absolute;
  top: 5px; left: 7px;
  font-size: 10px;
  color: rgba(200,80,0,.35);
}

/* bloquear scroll durante intro y loader */
body.no-scroll {
  overflow: hidden;
  height: 100vh;
}