/* Interação de punhal: camada visual independente dos controles do site. */
.horror-dagger { position:fixed; top:0; left:0; width:32px; height:32px; z-index:2147483646; pointer-events:none; will-change:transform; }
.horror-dagger img { width:32px; height:32px; max-width:none; transform-origin:2px 1.5px; filter:drop-shadow(0 1px 2px #000b); }
.horror-impact-layer { position:fixed; inset:0; z-index:2147483645; overflow:hidden; pointer-events:none; }
.horror-impact { position:absolute; width:0; height:0; pointer-events:none; }
.horror-blood-mark { position:absolute; left:-32px; top:-32px; width:64px; height:64px; overflow:visible; rotate:var(--impact-turn); filter:drop-shadow(0 1px 1px #250208aa); animation:horror-mark 2.35s ease-out both; }
.impact-blood { fill:#ae1427; stroke:#da3842; stroke-width:.45; opacity:.93; }
.impact-cut { fill:#21080e; }
.impact-cut-edge { fill:none; stroke:#f28184; stroke-width:1.4; stroke-linecap:round; opacity:.6; }
.horror-blood-drop { position:absolute; width:var(--drop-size); height:calc(var(--drop-size) * 1.15); background:radial-gradient(circle at 32% 25%,#fb7583 0 8%,#c81e37 25%,#7d081d 90%); border-radius:50%; box-shadow:0 1px 1px #2c060a; animation:horror-splatter .72s cubic-bezier(.08,.7,.25,1) both; }
@keyframes horror-splatter { 0% { opacity:1; transform:translate(-2px,-2px) scale(.25); } 70% { opacity:.9; } 100% { opacity:0; transform:translate(var(--drop-x),var(--drop-y)) rotate(var(--drop-turn)) scale(.55); } }
@keyframes horror-mark { 0% { opacity:0; scale:.4; } 10%,58% { opacity:.9; scale:1; } 100% { opacity:0; scale:.95; } }
@media (pointer:fine) {
  body[data-active-tab="proxima"], body[data-active-tab="proxima"] :is(a,button,summary,[role="button"]) { cursor:url("../assets/cursors/punhal.svg?v=2") 2 2,crosshair; }
  body[data-active-tab="proxima"].has-dagger-cursor, body[data-active-tab="proxima"].has-dagger-cursor * { cursor:none !important; }
  body[data-active-tab="proxima"] :is(input,textarea,[contenteditable="true"]) { cursor:text; }
  body[data-active-tab="proxima"] select { cursor:default; }
}
body:not([data-active-tab="proxima"]) :is(.horror-dagger,.horror-impact-layer) { display:none; }
.event-scene-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
#proxima .event-sound { min-height:0; padding:4px 9px; border:1px solid #94514466; border-radius:4px; background:#211317; color:#ddb49e; font:12px var(--font-ui); }
/* Ambientação mais presente: luz, fumaça e movimento visíveis nas bordas. */
#proxima .scene-candle-glow { background:radial-gradient(ellipse,#ffe7a391,#f387364f 36%,#d342151c 58%,transparent 75%); }
#proxima .scene-blue-glow { left:60%; top:0; width:23%; height:31%; background:radial-gradient(ellipse,#6dd4ff66,#4a82db28 43%,transparent 70%); animation-duration:5.5s; }
#proxima .scene-ember { width:3px; height:3px; box-shadow:0 0 8px #ff9f46; }
.scene-atmosphere::after { content:""; position:absolute; inset:0; background:radial-gradient(ellipse at 10% 90%,#db722123,transparent 38%),radial-gradient(ellipse at 83% 24%,#5d9fe52c,transparent 35%); mix-blend-mode:screen; animation:haunt-room-light 9s ease-in-out infinite alternate; }
.event-scene.is-paused .scene-atmosphere::after, body:not([data-active-tab="proxima"]) .scene-atmosphere::after { animation-play-state:paused; }
@keyframes haunt-room-light { from { opacity:.4; } to { opacity:.95; } }
.haunt-side-fog { position:absolute; top:0; bottom:-8%; width:clamp(90px,calc((100vw - 1200px)/2),300px); background:radial-gradient(ellipse at 25% 22%,#8f30343d,transparent 55%),radial-gradient(ellipse at 60% 72%,#7b485236,transparent 50%); filter:blur(18px); animation:haunt-side-mist 19s ease-in-out infinite alternate; }
.haunt-side-fog.is-left { left:-25px; }
.haunt-side-fog.is-right { right:-25px; animation-delay:-8s; }
@keyframes haunt-side-mist { from { translate:0 3%; scale:1 .93; opacity:.6; } to { translate:15px -4%; scale:1.13 1.1; opacity:1; } }
.haunt-spider { position:absolute; top:7%; width:44px; height:90px; animation:haunt-spider-descend 17s ease-in-out infinite alternate; }
.haunt-spider.is-left { left:clamp(25px,calc((100vw - 1240px)/2 - 42px),170px); }
.haunt-spider.is-right { right:clamp(25px,calc((100vw - 1240px)/2 - 42px),170px); top:16%; animation-delay:-11s; }
.haunt-spider svg { width:100%; height:100%; overflow:visible; }
.spider-thread { stroke:#bea69a70; stroke-width:.55; fill:none; }
.spider-legs { fill:none; stroke:#100c10; stroke-width:1.8; stroke-linecap:round; filter:drop-shadow(0 0 1px #ac7e79); }
.spider-body { fill:#160b10; stroke:#a44b4166; stroke-width:.7; }
@keyframes haunt-spider-descend { 0%,20% { translate:0 -20px; rotate:-4deg; } 70%,100% { translate:0 70px; rotate:4deg; } }
#proxima .haunt-web { opacity:.33; stroke:#c5ada4; }
#proxima .haunt-eyes i { width:27px; height:14px; box-shadow:0 0 15px #d8322873,0 0 34px #ae212a28; }
#proxima .haunt-drips i { background:linear-gradient(#971f2d,#8f1222bb 80%,#bd3a39); box-shadow:1px 0 2px #a6282522; }
@media (max-width:1420px) { .haunt-spider { opacity:.5; } .haunt-side-fog { opacity:.45; width:80px; } #proxima .haunt-web { opacity:.2; } }
@media (max-width:640px) { .haunt-spider { display:none; } }
@media (prefers-reduced-motion:reduce) { .scene-atmosphere::after { animation:none; opacity:.5; } .horror-impact { display:none; } }
/* ---------- Punhal com inércia, rastro e respingos que escorrem ---------- */
.horror-dagger { transform-origin:2px 1.5px; }
.horror-dagger img { transition:filter .18s ease; }
.horror-dagger.is-armed img { filter:drop-shadow(0 1px 2px #000b) drop-shadow(0 0 5px #ff3b30aa) brightness(1.15); }
.horror-trail { position:fixed; inset:0; width:100vw; height:100vh; z-index:2147483644; pointer-events:none; }
.horror-run { position:absolute; width:3px; height:var(--run); border-radius:0 0 3px 3px; background:linear-gradient(#a3112590,#7d071bcc 70%,#c1263a); transform-origin:top; scale:1 0; animation:horror-run 2.2s cubic-bezier(.3,.6,.4,1) var(--run-delay) both; }
@keyframes horror-run { 0% { scale:1 0; opacity:.95; } 55% { scale:1 1; opacity:.9; } 100% { scale:1 1.08; opacity:0; } }
body:not([data-active-tab="proxima"]) .horror-trail { display:none; }

/* ---------- Película de filme antigo: granulado, vinheta, linhas e luz falhando ---------- */
.horror-veil { position:fixed; inset:0; z-index:2147483000; pointer-events:none; overflow:hidden; }
.horror-veil::before { content:""; position:absolute; inset:-60%; opacity:.09; mix-blend-mode:overlay; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1.4 -.25'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E"); animation:horror-grain .9s steps(6) infinite; }
.horror-veil::after { content:""; position:absolute; inset:0; background:repeating-linear-gradient(0deg,#0000 0 2px,#00000014 2px 3px),radial-gradient(ellipse at 50% 45%,transparent 55%,#05000299 100%); }
.horror-veil.is-flickering { animation:horror-flicker .75s steps(1) both; }
@keyframes horror-grain { 0% { transform:translate(0,0); } 17% { transform:translate(-7%,4%); } 33% { transform:translate(5%,-6%); } 50% { transform:translate(-4%,-3%); } 67% { transform:translate(6%,5%); } 83% { transform:translate(-6%,7%); } 100% { transform:translate(3%,-2%); } }
@keyframes horror-flicker { 0% { background:#0000; } 8% { background:#000a; } 16% { background:#0000; } 30% { background:#0007; } 38% { background:#0002; } 52% { background:#0009; } 64%,100% { background:#0000; } }
body:not([data-active-tab="proxima"]) .horror-veil { display:none; }

/* ---------- Título com defeito de fita VHS ---------- */
#proxima .horror-glitch-text { position:relative; }
#proxima .horror-glitch-text::before, #proxima .horror-glitch-text::after { content:attr(data-text); position:absolute; inset:0; pointer-events:none; opacity:0; }
#proxima .horror-glitch-text.is-glitching { animation:horror-title-jitter .5s steps(2) both; }
#proxima .horror-glitch-text.is-glitching::before { opacity:.85; color:#3fe0ff; text-shadow:none; mix-blend-mode:screen; animation:horror-slice-a .5s steps(1) both; }
#proxima .horror-glitch-text.is-glitching::after { opacity:.9; color:#ff2a3c; text-shadow:none; mix-blend-mode:screen; animation:horror-slice-b .5s steps(1) both; }
@keyframes horror-title-jitter { 0%,100% { transform:none; filter:none; } 20% { transform:translate(-2px,1px) skewX(-4deg); } 40% { transform:translate(3px,-1px); filter:contrast(1.4); } 60% { transform:translate(-1px,0) skewX(6deg); } 80% { transform:translate(1px,1px); } }
@keyframes horror-slice-a { 0% { transform:translate(-5px,0); clip-path:inset(10% 0 62% 0); } 25% { transform:translate(4px,0); clip-path:inset(55% 0 20% 0); } 50% { transform:translate(-7px,0); clip-path:inset(30% 0 45% 0); } 75% { transform:translate(2px,0); clip-path:inset(75% 0 4% 0); } 100% { transform:none; clip-path:inset(0 0 100% 0); } }
@keyframes horror-slice-b { 0% { transform:translate(5px,0); clip-path:inset(60% 0 12% 0); } 25% { transform:translate(-4px,0); clip-path:inset(18% 0 58% 0); } 50% { transform:translate(6px,0); clip-path:inset(42% 0 33% 0); } 75% { transform:translate(-3px,0); clip-path:inset(2% 0 80% 0); } 100% { transform:none; clip-path:inset(0 0 100% 0); } }

/* ---------- Entrada em cena: surge do escuro piscando ---------- */
#proxima .horror-dormant { opacity:0; transform:translateY(16px); }
#proxima .is-awake { animation:horror-wake 1s ease-out both; }
#proxima .event-teams > .is-awake:nth-child(2n) { animation-delay:.12s; }
#proxima .event-teams.is-individual-view > .is-awake:nth-child(3n) { animation-delay:.2s; }
@keyframes horror-wake { 0% { opacity:0; transform:translateY(16px); filter:brightness(.3); } 18% { opacity:.75; } 24% { opacity:.1; } 38% { opacity:.9; filter:brightness(1.35); } 46% { opacity:.35; } 62%,100% { opacity:1; transform:none; filter:none; } }

/* ---------- Cena viva (WebGL) e cartas jogadas ---------- */
.scene-canvas { position:absolute; inset:0; width:100%; height:100%; display:block; pointer-events:none; }
.scene-play { position:absolute; inset:0; pointer-events:none; transform:scale(1.035); }
.event-scene.is-live :is(.scene-candle-glow,.scene-blue-glow) { display:none; }
.event-scene.is-live .scene-atmosphere::after { display:none; }
.event-scene.is-live .event-ensemble-art { cursor:pointer; }
.event-scene.is-static .event-ensemble-art { cursor:zoom-in; }
.scene-enlarge { position:absolute; top:12px; right:12px; z-index:4; display:inline-flex; align-items:center; gap:6px; padding:6px 11px; border:1px solid #c4554780; border-radius:4px; background:#14090bd9; color:#ffd8c6; font:600 12px var(--font-ui); letter-spacing:.02em; box-shadow:0 4px 14px #000a; backdrop-filter:blur(3px); opacity:.82; transition:opacity .2s ease,border-color .2s ease; }
.scene-enlarge span { font-size:15px; line-height:1; }
.scene-enlarge:hover, .scene-enlarge:focus-visible { opacity:1; border-color:#ff9a84; }
.event-scene.is-dialog { border-radius:4px; }
.event-scene.is-dialog .event-ensemble-art img { width:100%; height:auto; }
.event-scene.is-dialog.is-static + .event-note { display:none; }
@media (max-width:640px) { .scene-enlarge { top:8px; right:8px; padding:5px 8px; font-size:11px; } }
.scene-card { position:absolute; width:2.6%; aspect-ratio:63 / 88; margin:-1.82% 0 0 -1.3%; translate:calc(var(--plx,0px) * var(--d,0)) calc(var(--ply,0px) * var(--d,0)); filter:brightness(.92) saturate(.9) drop-shadow(0 2px 3px #000c); will-change:transform; }
.scene-card i { position:absolute; inset:0; border-radius:5% / 3.6%; }
.card-back { background:radial-gradient(ellipse at 50% 50%,#d6a65c 0 13%,#6a2a16 15% 27%,transparent 29%),radial-gradient(ellipse at 50% 50%,#3c1610 0 46%,#20090a 48%); border:1px solid #0b0304; box-shadow:inset 0 0 0 1.5px #7a4520; }
.card-face { opacity:0; border:1px solid #0d0909; background:linear-gradient(#efe4c6 0 9%,var(--card-art) 9% 52%,#e3d6b5 52% 58%,#cfc0a0 58%); box-shadow:inset 0 0 0 1.2px #111; }
.scene-die { position:absolute; width:.85%; aspect-ratio:1; margin:-.42% 0 0 -.42%; clip-path:polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%); background:radial-gradient(circle at 35% 30%,#ff9a8c,#c11f27 45%,#5a070c); translate:calc(var(--plx,0px) * var(--d,0)) calc(var(--ply,0px) * var(--d,0)); filter:brightness(.85) drop-shadow(0 1px 1px #000); }
@media (max-width:640px) { .scene-card { width:3.6%; margin:-2.51% 0 0 -1.8%; } .scene-die { width:1.4%; } }

/* ---------- Trilha sonora ---------- */
.scene-music, .event-music-float { display:inline-flex; align-items:center; gap:7px; cursor:pointer; }
#proxima .scene-music { padding:5px 11px; border-color:#c4554766; color:#ffd2bd; background:linear-gradient(#3a171b,#1d0d10); box-shadow:0 0 0 0 #e0412f66; animation:music-call 2.4s ease-out infinite; }
#proxima .scene-music.is-on { animation:none; border-color:#e0705c; }
#proxima .scene-music.is-waiting, .event-music-float.is-waiting { border-color:#ff8a70; color:#fff0e6; animation:music-call 1.6s ease-out infinite; }
.is-waiting .music-wave { animation:music-wave .9s ease-in-out infinite; }
.music-icon { width:16px; height:16px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.music-speaker { fill:currentColor; }
.is-on .music-wave { animation:music-wave 1.4s ease-in-out infinite; }
.is-on .music-wave.is-far { animation-delay:.25s; }
@keyframes music-wave { 0%,100% { opacity:.35; } 50% { opacity:1; } }
@keyframes music-call { 0% { box-shadow:0 0 0 0 #e0412f66; } 70%,100% { box-shadow:0 0 0 10px #e0412f00; } }
.event-music-float { position:fixed; right:16px; bottom:16px; z-index:50; padding:10px 14px; border:1px solid #9b4a3f; border-radius:100px; background:#1a0d10e8; color:#ffd2bd; font:600 12px var(--font-ui); box-shadow:0 6px 20px #000a,0 0 18px #b3221c33; backdrop-filter:blur(4px); }
.event-music-float:hover { border-color:#e0705c; background:#2a1216; }
.event-music-float { transition:opacity .3s ease,translate .3s ease,visibility .3s; }
.event-music-float:not(.is-on) { animation:music-call 2.4s ease-out infinite; }
.event-music-float.is-tucked { opacity:0; translate:0 12px; visibility:hidden; pointer-events:none; }
body:not([data-active-tab="proxima"]) .event-music-float { display:none; }
@media (max-width:640px) { .event-music-float { right:12px; bottom:12px; padding:9px 12px; } .event-music-float .music-label { display:none; } }

/* ---------- Fundo: névoa no chão, cinzas, recados e mãos escondidos ---------- */
.haunt-ash { position:absolute; bottom:-8px; width:3px; height:3px; border-radius:50%; background:#d6c4b4; box-shadow:0 0 4px #ff8a4a55; opacity:0; animation:haunt-ash var(--ash-period) linear infinite; animation-delay:var(--ash-delay); }
.haunt-ash:nth-child(3n) { width:2px; height:2px; background:#ff9d5c; }
@keyframes haunt-ash { 0% { transform:translate(0,0); opacity:0; } 8% { opacity:.45; } 85% { opacity:.25; } 100% { transform:translate(var(--ash-drift),-108vh); opacity:0; } }
.haunt-writings { position:absolute; inset:0; -webkit-mask-image:radial-gradient(circle 210px at var(--mx,-999px) var(--my,-999px),#000 0,#000c 40%,transparent 100%); mask-image:radial-gradient(circle 210px at var(--mx,-999px) var(--my,-999px),#000 0,#000c 40%,transparent 100%); }
.haunt-writing { position:absolute; writing-mode:vertical-rl; text-orientation:mixed; max-height:27vh; font:400 clamp(15px,min(1.5vw,2.7vh),26px)/1.15 "Creepster",fantasy; letter-spacing:.08em; white-space:normal; color:#9e1622; text-shadow:0 0 1px #4a0309,1px 2px 0 #3a020766; opacity:.85; transform-origin:top center; }
.haunt-hand { position:absolute; width:clamp(36px,2.8vw,56px); height:auto; fill:#7d0d18; opacity:.75; filter:drop-shadow(0 0 1px #3b0207); }
.haunt-hand-drip { fill:none; stroke:#7d0d18; stroke-width:3; stroke-linecap:round; }
.haunt-tally { position:absolute; display:flex; gap:10px; font:700 28px/1 Georgia,serif; letter-spacing:-2px; color:#b9a08c; opacity:.55; }
.haunt-tally s { text-decoration-thickness:2px; text-decoration-color:#b9a08c; }
@media (max-width:1360px) { .haunt-writings { display:none; } }
@media (max-width:1500px) { .haunt-hand, .haunt-tally { display:none; } }
@media (max-width:1599px) { .haunt-writing.is-long { display:none; } }
@media (max-width:1799px) { .haunt-tally { display:none; } }
@media (pointer:coarse) { .haunt-writings { display:none; } }

/* ---------- Pôsteres das duplas: zoom lento e reflexo vermelho ao passar o mouse ---------- */
#proxima .event-poster-button { overflow:hidden; isolation:isolate; }
#proxima .event-poster-button img { transition:transform 6s cubic-bezier(.2,.6,.2,1),filter .6s ease; }
#proxima .event-poster-button::after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:linear-gradient(105deg,transparent 35%,#ff3b2a1f 46%,#ffd8b836 50%,#ff3b2a1f 54%,transparent 64%); transform:translateX(-110%); }
#proxima .event-poster-button:is(:hover,:focus-visible) img { transform:scale(1.06); filter:contrast(1.08) saturate(1.12); }
#proxima .event-poster-button:is(:hover,:focus-visible)::after { transform:translateX(110%); transition:transform 1.2s ease; }
#proxima .event-poster-button > span { z-index:2; }
#proxima .event-team { transition:box-shadow .4s ease,border-color .4s ease; }
#proxima .event-team:hover { border-color:#8c4a40; box-shadow:0 0 0 1px #8c4a4055,0 10px 34px #000a,0 0 30px #a3201a2b; }

/* ---------- Válvulas Nixie: zumbido da luz e clarão a cada troca ---------- */
#proxima .nixie-hot-wire { animation:nixie-hum 9s steps(1) infinite; }
#proxima .nixie-pair .nixie-tube:nth-child(2) .nixie-hot-wire { animation-duration:13s; animation-delay:-4s; }
#proxima .event-countdown-unit:nth-child(2n) .nixie-hot-wire { animation-duration:11s; animation-delay:-7s; }
#proxima .nixie-tube.is-strike .nixie-hot-wire { animation:nixie-strike .32s ease-out; }
@keyframes nixie-hum { 0%,100% { opacity:1; } 47% { opacity:.55; } 47.6% { opacity:1; } 81% { opacity:.7; } 81.4% { opacity:1; } 81.8% { opacity:.6; } 82.2% { opacity:1; } }
@keyframes nixie-strike { 0% { opacity:.35; stroke:#fff3d6; } 35% { opacity:1; stroke:#fff3d6; } 100% { opacity:1; } }

@media (prefers-reduced-motion:reduce) {
  .horror-veil::before, .horror-veil.is-flickering, #proxima .horror-glitch-text.is-glitching, #proxima .horror-glitch-text.is-glitching::before, #proxima .horror-glitch-text.is-glitching::after, #proxima .is-awake, .haunt-ash, #proxima .scene-music, .event-music-float, .is-on .music-wave, #proxima .nixie-hot-wire, .horror-run { animation:none !important; }
  .haunt-ash, .horror-trail { display:none; }
  #proxima .horror-dormant { opacity:1; transform:none; }
  #proxima .event-poster-button img { transition:none; }
}

/* ---------- Sangue escorrendo da borda do banner ---------- */
#proxima .event-banner { position:relative; }
.banner-blood { position:absolute; inset:0 0 auto; height:80px; z-index:2; pointer-events:none; }
.blood-band { position:absolute; inset:0 0 auto; width:100%; height:9px; display:block; filter:drop-shadow(0 1px 1px #1a0104); }
.blood-drip { position:absolute; top:4px; width:var(--w); height:calc(var(--h) * (1 + var(--terror, 0) * 1.1)); margin-left:calc(var(--w) / -2); transform-origin:top; animation:blood-grow var(--grow) ease-in-out infinite alternate; filter:drop-shadow(0 1px 1px #1a0104); }
.blood-drip svg { display:block; width:100%; height:100%; overflow:visible; }
.blood-drip b { position:absolute; left:50%; top:calc(100% - 4px); width:calc(var(--w) * .55); aspect-ratio:.8; translate:-50% 0; border-radius:50% 50% 50% 50% / 60% 60% 40% 40%; background:radial-gradient(circle at 35% 30%,#ff7c86 0 10%,#b4142a 40%,#650612 90%); opacity:0; animation:blood-fall calc(var(--fall) / (1 + var(--terror, 0) * 1.6)) linear infinite; animation-delay:var(--fall-delay); }
.blood-drip.is-extra { opacity:clamp(0, calc((var(--terror, 0) - .45) * 3), 1); }
@keyframes blood-grow { from { scale:1 .7; } to { scale:1 1.15; } }
@keyframes blood-fall { 0%,72% { opacity:0; transform:translateY(0) scale(.3); } 76% { opacity:1; transform:translateY(0) scale(1); } 90% { opacity:.95; transform:translateY(150px) scaleY(1.3); } 92%,100% { opacity:0; transform:translateY(190px) scaleY(1.3); } }
body:not([data-active-tab="proxima"]) .banner-blood * { animation-play-state:paused; }
@media (max-width:640px) { .blood-drip:nth-of-type(2n) { display:none; } }
@media (prefers-reduced-motion:reduce) { .blood-drip, .blood-drip b { animation:none !important; } .blood-drip b { display:none; } }

/* ---------- Olho esfaqueado: apaga, sangra e o par treme ---------- */
.haunt-eyes i.is-stabbed { animation:none !important; scale:1 1; background:radial-gradient(ellipse,#0d0204 0 30%,#4a0811 52%,#2a050a 70%,transparent 78%); box-shadow:0 0 7px #8a0a18aa !important; }
.haunt-eyes i.is-stabbed::before { content:""; position:absolute; left:-4px; right:-4px; top:42%; height:2px; border-radius:2px; background:#d11c30; rotate:-20deg; box-shadow:0 0 4px #ff2a3c; }
.haunt-eyes i.is-stabbed::after { content:""; position:absolute; left:44%; top:62%; width:3px; height:58px; border-radius:0 0 3px 3px; background:linear-gradient(#c01a2e,#7d0817 65%,#d02a3c); box-shadow:0 0 3px #a3101f88; transform-origin:top; scale:1 0; animation:eye-bleed 4.5s cubic-bezier(.2,.6,.3,1) forwards; }
.haunt-eyes i.is-healing { animation:eye-heal 1.6s steps(1) both !important; }
@keyframes eye-bleed { 0% { scale:1 0; } 100% { scale:1 1; } }
@keyframes eye-heal { 0% { opacity:0; } 20% { opacity:.8; } 30% { opacity:.1; } 55% { opacity:1; } 65% { opacity:.3; } 100% { opacity:1; } }

/* ---------- Terror que cresce: vinheta de sangue pulsando no ritmo do coração ---------- */
.veil-blood { position:absolute; inset:0; background:radial-gradient(ellipse at 50% 50%,transparent 52%,#7a0612 100%); opacity:calc(var(--terror, 0) * .5); }
.horror-veil.is-pulsing .veil-blood { animation:veil-beat var(--beat, 1s) ease-out infinite; }
@keyframes veil-beat { 0%,100% { opacity:calc(var(--terror, 0) * .42); } 10% { opacity:calc(var(--terror, 0) * .75); } 22% { opacity:calc(var(--terror, 0) * .5); } 32% { opacity:calc(var(--terror, 0) * .68); } }

/* ---------- Susto em tela cheia: o vilão (PNG sem fundo) avança contra a tela ---------- */
.horror-jumpscare { position:fixed; inset:0; z-index:2147483647; overflow:hidden; pointer-events:none; background:radial-gradient(ellipse at 50% 45%,#4a0610 0,#140204 55%,#000 100%); animation:jumpscare-in .65s steps(1) both; }
.horror-jumpscare::after { content:""; position:absolute; inset:0; background:repeating-linear-gradient(0deg,#0000 0 2px,#0005 2px 4px),radial-gradient(ellipse,transparent 40%,#000c 95%); }
.jumpscare-zoom { position:absolute; inset:0; animation:jumpscare-lunge .65s cubic-bezier(.12,.9,.25,1) both; }
/* Centralizado de verdade: mais largo que a tela, a imagem saía alinhada à esquerda no celular. */
.jumpscare-villain { position:absolute; left:50%; top:50%; translate:-50% -50%; width:auto; height:min(118vh,112vw); max-width:none; filter:contrast(1.12) saturate(1.1) drop-shadow(0 0 40px #ff1f2f66); }
/* O busto termina num corte reto: um degradê esconde a linha na borda de baixo e nas laterais. */
.jumpscare-villain { -webkit-mask-image:linear-gradient(to bottom,#000 74%,transparent 98%),linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%); -webkit-mask-composite:source-in; mask-image:linear-gradient(to bottom,#000 74%,transparent 98%),linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%); mask-composite:intersect; }
@keyframes jumpscare-lunge { 0% { transform:scale(.25); filter:blur(6px); } 22% { transform:scale(1.08) translate(-12px,6px); filter:none; } 34% { transform:scale(1.12) translate(10px,-8px); } 46% { transform:scale(1.15) translate(-6px,4px); } 100% { transform:scale(1.24) translate(0,0); } }
@keyframes jumpscare-in { 0%,86% { opacity:1; } 100% { opacity:0; } }
/* Tela em pé: avanço mais curto para o vilão não sair pelos lados. */
@keyframes jumpscare-lunge-tall { 0% { transform:scale(.3); filter:blur(6px); } 22% { transform:scale(1) translate(-8px,5px); filter:none; } 34% { transform:scale(1.03) translate(7px,-6px); } 46% { transform:scale(1.05) translate(-4px,3px); } 100% { transform:scale(1.1) translate(0,0); } }
@media (max-aspect-ratio:4/5) { .jumpscare-zoom { animation-name:jumpscare-lunge-tall; } }

/* ---------- Palavra secreta: todos os olhos acordam ---------- */
#event-haunt.is-frenzy .haunt-eyes { opacity:1 !important; animation:none !important; }
#event-haunt.is-frenzy .haunt-eyes i:not(.is-stabbed) { animation:frenzy-eye .5s steps(2) infinite !important; box-shadow:0 0 22px #ff2a2ad0,0 0 50px #c3141e88 !important; scale:1.25; }
@keyframes frenzy-eye { 0% { filter:brightness(1.6); } 50% { filter:brightness(.8); } }
.horror-summoned { position:absolute; left:50%; top:46%; z-index:5; translate:-50% -50%; pointer-events:none; width:92%; text-align:center; font:400 clamp(20px,6vw,78px)/1.25 "Nosifer",fantasy; color:#d11c30; text-shadow:0 0 18px #ff1f2f99,0 3px #3a0207; animation:summoned 4.2s ease-out both; }
@keyframes summoned { 0% { opacity:0; scale:1.4; filter:blur(6px); } 12% { opacity:1; scale:1; filter:none; } 18% { opacity:.3; } 24%,75% { opacity:1; } 100% { opacity:0; scale:.96; } }
@media (prefers-reduced-motion:reduce) { .horror-veil.is-pulsing .veil-blood, #event-haunt.is-frenzy .haunt-eyes i, .horror-summoned, .jumpscare-zoom { animation:none !important; } }

/* ---------- Cartas reais na cena: face com a carta, registro e prévia ---------- */
.scene-card .card-face { background-size:cover; background-position:center top; }
.scene-card.has-info { pointer-events:auto; cursor:pointer; }
.scene-card.has-info::after { content:""; position:absolute; inset:-7px; }
.scene-card.is-cast .card-face { opacity:1; }
.scene-card.is-cast .card-back { opacity:0; }
.scene-card.is-cast { filter:brightness(.92) saturate(.9) drop-shadow(0 0 5px #c29bff); }
.scene-log { position:absolute; left:12px; bottom:12px; z-index:4; display:flex; flex-direction:column-reverse; gap:6px; max-width:min(380px,62%); pointer-events:none; }
.scene-log-entry { display:flex; align-items:center; gap:8px; padding:5px 10px 5px 5px; border:1px solid #8c4a4066; border-radius:4px; background:#12070ae0; color:#efd7c8; font:12px/1.3 var(--font-ui); box-shadow:0 4px 14px #000a; pointer-events:auto; cursor:pointer; }
.scene-log-entry img { width:22px; height:31px; flex-shrink:0; border-radius:2px; object-fit:cover; background:#2a1416; }
.scene-log-entry b { color:#ffcfb8; font-weight:600; }
.scene-log-entry:hover { border-color:#e0705c; }
.scene-card-preview { position:absolute; z-index:6; padding:8px; border:1px solid #9b4a3f; border-radius:6px; background:#140a0cf2; color:#efd7c8; box-shadow:0 14px 40px #000c,0 0 24px #a3201a44; animation:card-preview-in .25s ease-out both; }
.scene-card-preview img { display:block; width:100%; height:auto; border-radius:4.5% / 3.3%; background:#2a1416; aspect-ratio:488 / 680; }
.scene-card-preview p { margin:8px 2px 2px; font:12px/1.35 var(--font-ui); }
.scene-card-preview p span { display:block; color:#c79b88; font-size:11px; }
.scene-card-preview p b { display:block; font-size:13px; color:#ffd9c6; }
.scene-card-preview small { display:block; margin:2px; font:11px var(--font-ui); color:#a98575; }
.scene-card-close { position:absolute; top:-10px; right:-10px; width:26px; height:26px; border:1px solid #9b4a3f; border-radius:50%; background:#1d0c0f; color:#ffd2bd; font:16px/1 var(--font-ui); cursor:pointer; }
@keyframes card-preview-in { from { opacity:0; transform:translateY(8px) scale(.96); } to { opacity:1; transform:none; } }
@media (max-width:640px) { .scene-log { left:6px; bottom:6px; max-width:78%; } .scene-log-entry { font-size:10px; padding:3px 7px 3px 3px; gap:5px; } .scene-log-entry img { width:16px; height:22px; } .scene-log-entry + .scene-log-entry { display:none; } }
@media (prefers-reduced-motion:reduce) { .scene-card-preview { animation:none; } }

/* ---------- Vida de Commander: dano de comandante a cada facada ---------- */
.horror-life { position:fixed; left:16px; bottom:16px; z-index:50; display:flex; align-items:center; gap:10px; padding:6px 14px 6px 6px; border:1px solid #9b4a3f; border-radius:100px; background:#1a0d10e8; color:#efd7c8; box-shadow:0 6px 20px #000a; backdrop-filter:blur(4px); pointer-events:none; }
.horror-life[hidden] { display:none; }
.life-die { display:grid; place-items:center; width:40px; height:40px; clip-path:polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%); background:radial-gradient(circle at 35% 30%,#ff8a7c,#b4142a 45%,#4e050c); }
.life-die b { font:400 19px/1 "Creepster",fantasy; color:#fff0e6; text-shadow:0 1px 2px #000; }
.life-text { display:flex; flex-direction:column; font:11px/1.35 var(--font-ui); }
.life-text small { color:#c79b88; font-size:10px; text-transform:uppercase; letter-spacing:.08em; }
.life-text b { color:#ffcfb8; }
.horror-life.is-near { border-color:#ff6a50; box-shadow:0 6px 20px #000a,0 0 18px #ff2a2a55; }
.horror-life.is-lethal { border-color:#ff3b30; }
.horror-life.is-lethal .life-text small { color:#ff8a70; }
body:not([data-active-tab="proxima"]) .horror-life { display:none; }
@media (pointer:coarse) { .horror-life { display:none; } }
.horror-verdict { position:fixed; left:50%; top:42%; z-index:2147483000; translate:-50% -50%; display:flex; flex-direction:column; align-items:center; gap:10px; pointer-events:none; text-align:center; animation:verdict-in 5.6s ease-out both; }
.horror-verdict b { font:400 clamp(24px,4.4vw,58px)/1.2 "Nosifer",fantasy; color:#d11c30; text-shadow:0 0 18px #ff1f2f99,0 3px #3a0207; }
.horror-verdict span { font:400 clamp(20px,2.6vw,34px)/1 "Creepster",fantasy; letter-spacing:.06em; color:#f2dfcf; text-shadow:0 2px 6px #000; }
.horror-verdict .is-return { font-size:clamp(28px,4vw,52px); color:#ff8a70; animation:verdict-return 2.4s steps(1) both; }
@keyframes verdict-in { 0% { opacity:0; scale:1.3; } 6% { opacity:1; scale:1; } 92% { opacity:1; } 100% { opacity:0; } }
@keyframes verdict-return { 0% { opacity:0; } 10% { opacity:1; } 18% { opacity:.2; } 30%,100% { opacity:1; } }
#event-haunt.is-dead .haunt-eyes { opacity:0 !important; transition:opacity .4s; }

/* ---------- Símbolos de mana nos olhos do fundo ---------- */
.haunt-eyes.is-mana { animation:none !important; opacity:1 !important; }
.haunt-eyes.is-mana i { opacity:0 !important; transition:opacity .3s; }
.haunt-mana { position:absolute; left:50%; top:50%; width:30px; height:30px; translate:-50% -50%; animation:mana-appear 4.5s ease-in-out both; }
.haunt-mana.is-W { filter:drop-shadow(0 0 6px #fff2c4) drop-shadow(0 0 16px #f3dc8a); }
.haunt-mana.is-U { filter:drop-shadow(0 0 6px #7cc4ff) drop-shadow(0 0 16px #2e8cff); }
.haunt-mana.is-B { filter:drop-shadow(0 0 6px #c18cff) drop-shadow(0 0 16px #7a3dd6); }
.haunt-mana.is-R { filter:drop-shadow(0 0 6px #ff8a5c) drop-shadow(0 0 16px #ff3a1a); }
.haunt-mana.is-G { filter:drop-shadow(0 0 6px #8cf59c) drop-shadow(0 0 16px #2fbf55); }
@keyframes mana-appear { 0% { opacity:0; scale:.3; } 12% { opacity:1; scale:1.15; } 20% { scale:1; } 30% { opacity:.4; } 36%,82% { opacity:1; } 100% { opacity:0; scale:.85; } }
@media (prefers-reduced-motion:reduce) { .horror-verdict, .horror-verdict .is-return, .haunt-mana { animation:none !important; } }

/* ---------- Tela de entrada: o clique que libera o som ---------- */
.horror-gate { position:fixed; inset:0; width:100vw; height:100dvh; max-width:none; max-height:none; margin:0; padding:24px 16px; border:0; overflow:hidden; background:#050102; color:#f2dfcf; }
.horror-gate[open] { display:grid; place-items:center; }
.horror-gate::backdrop { background:#000; }
.gate-art { position:absolute; inset:-30px; background-size:cover; background-position:center; filter:blur(7px) brightness(.32) saturate(.8); transform:scale(1.04); animation:gate-drift 18s ease-in-out infinite alternate; }
.horror-gate::after { content:""; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(0deg,#0000 0 2px,#0004 2px 3px),radial-gradient(ellipse at 50% 45%,#5a0a1440 0,transparent 45%,#000d 100%); }
.gate-box { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; gap:18px; max-width:1120px; text-align:center; }
.gate-eyes { display:flex; gap:22px; margin-bottom:4px; }
.gate-eyes i { width:34px; height:15px; border-radius:80% 10% 70% 20%; background:radial-gradient(ellipse,#130204 0 16%,#ff3a24 20% 44%,#7a1214 52%,transparent 76%); box-shadow:0 0 18px #e0291c99,0 0 44px #ae212a55; animation:gate-blink 5.5s ease-in-out infinite; }
.gate-eyes i:last-child { transform:scaleX(-1); }
.gate-kicker { display:flex; flex-direction:column; gap:4px; margin:0; font:600 12px/1.4 var(--font-ui); letter-spacing:.18em; text-transform:uppercase; color:#c79b88; }
.gate-title { display:flex; flex-direction:column; margin:0; font:400 clamp(26px,5.2vw,68px)/1.3 "Nosifer",fantasy; color:#d11c30; text-shadow:0 0 22px #ff1f2f88,0 3px #3a0207; animation:gate-flicker 6s steps(1) infinite; }
.gate-enter { margin-top:10px; min-width:220px; padding:16px 42px; border:1px solid #ff7a62; border-radius:6px; background:linear-gradient(#c23a2f,#7a1714); color:#fff2e6; font:400 clamp(26px,3vw,34px)/1 "Creepster",fantasy; letter-spacing:.1em; cursor:pointer; box-shadow:0 0 0 0 #ff3b2a88,0 10px 30px #000c; animation:gate-call 1.8s ease-out infinite; transition:transform .15s ease,filter .15s ease; }
.gate-enter:hover, .gate-enter:focus-visible { transform:scale(1.05); filter:brightness(1.15); outline:2px solid #ffd2bd; outline-offset:4px; }
.horror-gate.is-thunder::before { content:""; position:absolute; inset:0; z-index:2; pointer-events:none; background:radial-gradient(ellipse at 50% 20%,#e8f0ffcc,#9bb4ff55 45%,transparent 75%); animation:gate-thunder .7s ease-out both; }
.horror-gate.is-leaving .gate-box { animation:gate-leave .9s ease-in both; }
.horror-gate.is-leaving { animation:gate-fade .9s ease-in both; }
@keyframes gate-drift { from { transform:scale(1.04) translate(-1%,0); } to { transform:scale(1.1) translate(1%,-1%); } }
@keyframes gate-blink { 0%,44%,50%,100% { scale:1 1; } 46%,48% { scale:1 .08; } }
@keyframes gate-flicker { 0%,100% { opacity:1; } 61% { opacity:.25; } 62% { opacity:1; } 64% { opacity:.4; } 65% { opacity:1; } }
@keyframes gate-call { 0% { box-shadow:0 0 0 0 #ff3b2a88,0 10px 30px #000c; } 70%,100% { box-shadow:0 0 0 18px #ff3b2a00,0 10px 30px #000c; } }
@keyframes gate-thunder { 0% { opacity:0; } 8% { opacity:1; } 30% { opacity:.2; } 38% { opacity:.8; } 100% { opacity:0; } }
@keyframes gate-leave { to { opacity:0; transform:scale(1.15); filter:blur(6px); } }
@keyframes gate-fade { 0%,30% { opacity:1; } 100% { opacity:0; } }
@media (max-width:640px) { .gate-box { gap:14px; } .gate-eyes i { width:26px; height:12px; } .gate-enter { min-width:180px; padding:14px 30px; } }
@media (prefers-reduced-motion:reduce) { .gate-art, .gate-eyes i, .gate-title, .gate-enter, .horror-gate.is-thunder::before, .horror-gate.is-leaving, .horror-gate.is-leaving .gate-box { animation:none !important; } }
