/* La imagen del tablero es también la superficie jugable. */
.board{gap:1.25%;padding:12.9%;border:0;background:url('assets/tablero-prisma.png') center/contain no-repeat;filter:drop-shadow(0 28px 42px #000b);clip-path:none}
.cell{border:1px solid transparent;background:#07152b1c;border-radius:8%}
.corner{display:none}
.win-beam{width:68%}
.match-controls{display:flex;gap:8px;margin-top:12px}.match-controls .reset{margin-top:0}.match-controls .new-round{border-color:#61ebff;background:linear-gradient(100deg,#123a63,#281860);color:#bffaff}.match-controls .new-round:hover{box-shadow:0 0 22px #4fe9ff55}
@media(max-width:520px){.match-controls{width:92vw}.match-controls .reset{flex:1;padding:10px 6px;font-size:7px}}
@media(max-width:700px){.board{gap:1.25%;padding:12.9%}}

/* Portal de amigos y victoria exclusiva de Nebula */
.nebula-win{position:fixed;z-index:34;inset:0;display:grid;place-content:center;justify-items:center;pointer-events:none;background:radial-gradient(circle,#712cff66,transparent 42%)}.nebula-win[hidden]{display:none}.nebula-win img{width:min(42vw,360px);filter:drop-shadow(0 0 24px #a54cff) drop-shadow(0 0 64px #1686ff);animation:nebulaArrival 1.45s cubic-bezier(.16,.8,.22,1)}.nebula-win b{margin-top:-28px;padding:9px 24px;border:1px solid #e78bff;background:#09061ee8;color:#f2b1ff;font:900 clamp(26px,5vw,58px)/1 Impact;letter-spacing:.08em;box-shadow:0 0 28px #a84cff88;animation:nebulaText 1.45s ease-out}.champion-piece.nebula{width:190px;height:190px;background-image:url('assets/calavera-nebula.png');filter:drop-shadow(0 0 30px #a84cff) drop-shadow(0 0 60px #1686ff)}
.online-dialog{width:min(540px,92vw);padding:34px;border:1px solid #55edff;background:linear-gradient(145deg,#071126f7,#180b38f7);color:var(--white);text-align:center;box-shadow:0 0 0 1px #bd61ff55 inset,0 0 70px #3a8dff55;clip-path:polygon(5% 0,95% 0,100% 8%,100% 92%,95% 100%,5% 100%,0 92%,0 8%)}.online-dialog::backdrop{background:#01030bdc;backdrop-filter:blur(10px)}.online-dialog .dialog-close{position:absolute;right:14px;top:10px;width:40px;height:40px;border:1px solid #557295;background:#071327;color:#fff;font-size:26px;cursor:pointer}.online-dialog small{color:var(--cyan);font:900 9px monospace;letter-spacing:.22em}.online-dialog h2{margin:6px 0 10px;font:900 clamp(38px,8vw,72px)/.88 Impact;letter-spacing:.04em;color:#fff;text-shadow:0 0 24px #7d4cff}.online-dialog>p{margin:12px auto;max-width:430px;color:#9eb9d0;font-weight:700;line-height:1.5}.signal-orb{display:grid;place-items:center;width:76px;height:76px;margin:0 auto 12px;border:1px solid #46e8ff;border-radius:50%;background:conic-gradient(from 45deg,#4ceaff,#8c42ff,#ff4fd8,#4ceaff);box-shadow:0 0 30px #4ceaff55;animation:signalSpin 4s linear infinite}.signal-orb span{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle,#fff 0 5%,#61eaff 7%,#4423aa 24%,#05091b 65%);box-shadow:inset 0 0 18px #fff,0 0 18px #a84cff}.create-room,.join-row button{border:0;background:linear-gradient(100deg,var(--cyan),#8fe9ff);color:#061025;font:900 11px monospace;letter-spacing:.1em;cursor:pointer}.create-room{width:100%;padding:15px}.room-code{margin:18px 0 2px;color:var(--gold);font:900 clamp(34px,9vw,62px)/1 Impact;letter-spacing:.18em;text-shadow:0 0 22px #ffce4d}.join-row{display:flex;gap:8px;margin-top:20px}.join-row input{min-width:0;flex:1;padding:14px;border:1px solid #597ba3;background:#040b1e;color:#fff;text-align:center;text-transform:uppercase;font:900 19px monospace;letter-spacing:.18em;outline:none}.join-row input:focus{border-color:var(--cyan);box-shadow:0 0 18px #41eaff44}.join-row button{padding:0 20px}.online-dialog .online-message{min-height:22px;color:var(--cyan);font:900 10px monospace;letter-spacing:.07em}
@keyframes nebulaArrival{0%{opacity:0;scale:.1;rotate:-24deg}35%{opacity:1;scale:1.2;rotate:3deg}75%{scale:1;rotate:0}100%{opacity:0;scale:1.45}}@keyframes nebulaText{0%,12%,100%{opacity:0;scale:.6}28%,75%{opacity:1;scale:1}}@keyframes signalSpin{to{rotate:360deg}}
@media(max-width:700px){.top-actions{flex-wrap:wrap;justify-content:flex-end}.online-dialog{padding:28px 20px}.champion-piece.nebula{width:140px;height:140px}}

/* Cinco potencias reales para la mente de Nebula */
.difficulty-panel{position:relative;z-index:8;display:flex;align-items:stretch;gap:10px;width:min(690px,94vw);margin:10px auto -2px;padding:7px;border:1px solid #465f91;background:linear-gradient(90deg,#071127e8,#160b34e8);box-shadow:inset 0 0 22px #693cff18;clip-path:polygon(2% 0,98% 0,100% 18%,100% 82%,98% 100%,2% 100%,0 82%,0 18%)}.difficulty-panel[hidden]{display:none}.difficulty-title{display:grid;align-content:center;min-width:145px;padding:4px 10px;border-right:1px solid #4e6490}.difficulty-title small{color:#7898b9;font:900 7px monospace;letter-spacing:.14em}.difficulty-title b{color:var(--gold);font:900 13px/1.1 Impact;letter-spacing:.07em}.difficulty-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;flex:1}.difficulty-buttons button{position:relative;display:grid;place-content:center;min-width:0;padding:5px 4px;border:1px solid #344c75;background:#08152d;color:#7795b2;cursor:pointer;transition:.18s}.difficulty-buttons button strong{font:900 20px/1 Impact}.difficulty-buttons button span{font:900 6px monospace;letter-spacing:.08em}.difficulty-buttons button:hover{border-color:#76eaff;color:#dffcff;translate:0 -2px}.difficulty-buttons button.active{border-color:#d171ff;background:linear-gradient(145deg,#23356b,#57206f);color:#fff;box-shadow:0 0 18px #a84cff66,inset 0 0 14px #4deaff22}.difficulty-buttons button[data-level="5"].active{border-color:#ff5dca;background:linear-gradient(145deg,#281253,#8f155e);animation:dangerLevel 1.1s ease-in-out infinite alternate}.cell.portal-shift{animation:portalShift .52s ease-out}.cell.portal-arrive{animation:portalArrive .52s ease-out}
@keyframes dangerLevel{to{box-shadow:0 0 25px #ff4fd899,inset 0 0 20px #734cff55}}@keyframes portalShift{to{opacity:.1;scale:.2;rotate:120deg}}@keyframes portalArrive{0%{opacity:.1;scale:.2;rotate:-120deg}100%{opacity:1;scale:1;rotate:0}}
@media(max-width:620px){.difficulty-panel{display:block}.difficulty-title{display:flex;justify-content:space-between;border-right:0;border-bottom:1px solid #4e6490;margin-bottom:6px}.difficulty-buttons button span{font-size:5px}.difficulty-buttons button strong{font-size:18px}}

.trap-button{position:fixed;z-index:45;left:50%;top:39%;translate:-50% -50%;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;min-width:min(390px,86vw);padding:16px 28px;border:2px solid #fff1a1;background:linear-gradient(105deg,#ff2b4f,#b20d72 58%,#45109b);color:#fff;clip-path:polygon(5% 0,95% 0,100% 22%,100% 78%,95% 100%,5% 100%,0 78%,0 22%);box-shadow:0 0 0 5px #ff274744,0 0 45px #ff275dcc,0 0 100px #7a2aff99;cursor:pointer;animation:trapAlarm .22s ease-in-out infinite alternate}.trap-button[hidden]{display:none}.trap-button span{grid-row:1/3;font-size:48px;filter:drop-shadow(0 0 12px #fff)}.trap-button b{text-align:left;font:900 clamp(34px,7vw,62px)/.8 Impact;letter-spacing:.06em}.trap-button small{text-align:left;font:900 8px monospace;letter-spacing:.18em;color:#fff3b0}.trap-button:hover,.trap-button:focus-visible{scale:1.08;outline:3px solid #fff;outline-offset:5px}.trap-button:active{scale:.92}
@keyframes trapAlarm{from{filter:brightness(.85);rotate:-1deg}to{filter:brightness(1.35);rotate:1deg}}

/* El detector siempre se ve en nivel 5; solo crece cuando encuentra la trampa. */
.trap-button.dormant{left:auto;right:18px;top:auto;bottom:18px;translate:0 0;grid-template-columns:auto 1fr;min-width:230px;padding:10px 16px;border:1px solid #51eaff;background:linear-gradient(105deg,#07162d,#152763);clip-path:polygon(7% 0,100% 0,100% 82%,93% 100%,0 100%,0 18%);box-shadow:0 0 24px #43eaff44;color:#c8faff;animation:detectorPulse 1.6s ease-in-out infinite alternate}.trap-button.dormant span{font-size:30px;color:#4deaff}.trap-button.dormant b{font-size:25px;color:#fff}.trap-button.dormant small{font-size:7px;color:#74dce9}.trap-button.active{left:50%;right:auto;top:39%;bottom:auto;translate:-50% -50%;min-width:min(390px,86vw);padding:16px 28px;border:2px solid #fff1a1;background:linear-gradient(105deg,#ff2b4f,#b20d72 58%,#45109b);box-shadow:0 0 0 5px #ff274744,0 0 45px #ff275dcc,0 0 100px #7a2aff99;color:#fff;animation:trapAlarm .22s ease-in-out infinite alternate}.trap-button.active span{font-size:48px;color:#fff}.trap-button.active b{font-size:clamp(34px,7vw,62px)}.trap-button.active small{font-size:8px;color:#fff3b0}
@keyframes detectorPulse{to{border-color:#c3fbff;box-shadow:0 0 32px #43eaff77}}
@media(max-width:620px){.trap-button.dormant{right:9px;bottom:9px;min-width:185px;padding:8px 12px}.trap-button.dormant b{font-size:21px}}

.trap-victory{position:fixed;z-index:48;inset:0;display:grid;place-content:center;justify-items:center;pointer-events:none;background:radial-gradient(circle,#21ddff55,transparent 48%)}.trap-victory[hidden]{display:none}.trap-victory img{width:min(48vw,430px);max-height:64vh;object-fit:contain;filter:drop-shadow(0 0 20px #46eaff) drop-shadow(0 0 65px #b24cff);animation:tProof 1.8s cubic-bezier(.15,.8,.2,1)}.trap-victory b{margin-top:-20px;padding:10px 24px;border:1px solid #75f4ff;background:#07102be8;color:#fff4a8;font:900 clamp(26px,5vw,60px)/1 Impact;letter-spacing:.05em;text-shadow:0 0 18px #f355ff;animation:tProofText 1.8s ease-out}
@keyframes tProof{0%{opacity:0;scale:.08;rotate:-18deg}28%{opacity:1;scale:1.16;rotate:3deg}72%{opacity:1;scale:1;rotate:0}100%{opacity:0;scale:1.45}}@keyframes tProofText{0%,15%,100%{opacity:0;translate:0 30px}30%,75%{opacity:1;translate:0 0}}
.trap-button:disabled{pointer-events:none;filter:saturate(.45);opacity:.62;animation:none}

.player-cheat-button{position:fixed;z-index:35;left:18px;bottom:18px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;min-width:230px;padding:10px 16px;border:1px solid #e465ff;background:linear-gradient(105deg,#321253,#0d2d5d);color:#fff;clip-path:polygon(0 0,93% 0,100% 18%,100% 100%,7% 100%,0 82%);box-shadow:0 0 25px #d54cff44;cursor:pointer}.player-cheat-button[hidden]{display:none}.player-cheat-button span{grid-row:1/3;font-size:30px;color:#ff76e8;filter:drop-shadow(0 0 9px #ff4fd8)}.player-cheat-button b{text-align:left;font:900 22px/1 Impact;letter-spacing:.05em}.player-cheat-button small{text-align:left;font:900 7px monospace;letter-spacing:.12em;color:#d7a8e9}.player-cheat-button:hover:not(:disabled){translate:0 -3px;box-shadow:0 0 35px #d54cff77}.player-cheat-button.armed{border-color:#fff3a0;background:linear-gradient(105deg,#a91e73,#5623a4);box-shadow:0 0 35px #ff4fd8aa;animation:cheatArmed .45s ease-in-out infinite alternate}.player-cheat-button:disabled{pointer-events:none;filter:saturate(.35);opacity:.55}.trap-victory.nebula-caught{background:radial-gradient(circle,#ff2d7155,transparent 48%)}.trap-victory.nebula-caught img{filter:hue-rotate(35deg) drop-shadow(0 0 20px #ff3d74) drop-shadow(0 0 65px #8b35ff)}
@keyframes cheatArmed{to{filter:brightness(1.35);scale:1.025}}
@media(max-width:620px){.player-cheat-button{left:9px;bottom:9px;min-width:175px;padding:8px 11px}.player-cheat-button b{font-size:18px}.player-cheat-button small{font-size:6px}}

.status.last-chance{border-color:#fff09a;background:linear-gradient(90deg,#471341,#8d1b4b,#471341);color:#fff5ad;box-shadow:0 0 28px #ff405c88;animation:lastChancePulse .42s ease-in-out infinite alternate}.status.last-chance i{background:#fff09a;box-shadow:0 0 16px #fff09a}
@keyframes lastChancePulse{to{filter:brightness(1.35);scale:1.025}}

.difficulty-panel .trap-button.dormant{position:static;left:auto;right:auto;top:auto;bottom:auto;translate:0 0;min-width:150px;padding:7px 12px;border-color:#ff6f8f;background:linear-gradient(105deg,#3f1137,#791b50);color:#fff;clip-path:polygon(7% 0,100% 0,100% 82%,93% 100%,0 100%,0 18%);box-shadow:0 0 18px #ff396655;animation:accusePulse 1.6s ease-in-out infinite alternate}.difficulty-panel .trap-button.dormant span{font-size:24px;color:#ffdc73}.difficulty-panel .trap-button.dormant b{font-size:19px;white-space:nowrap}.difficulty-panel .trap-button.dormant small{font-size:6px;color:#ffc0cd}.difficulty-panel .trap-button.dormant:disabled{opacity:.5;animation:none}
@keyframes accusePulse{to{border-color:#fff1a1;box-shadow:0 0 25px #ff396688}}
@media(max-width:620px){.difficulty-panel .trap-button.dormant{width:100%;margin-top:6px}}
