/* Opening notice: the server reserves these three seconds before the first turn. */
.opening-notice{position:fixed;z-index:110;top:18%;left:50%;transform:translateX(-50%);width:min(680px,calc(100% - 28px));background:#243f34f5;color:#fff2cf;border:1px solid #d3b77a;border-radius:10px;box-shadow:0 18px 65px #142e2970;overflow:hidden;pointer-events:none}
.opening-heading{display:flex;justify-content:space-between;align-items:center;padding:13px 20px;border-bottom:1px solid #adc49036}.opening-heading strong{font-size:16px;letter-spacing:3px}.opening-heading small{font:12px var(--mono);color:#ead19c}
.opening-bans{display:grid;grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr);align-items:center;padding:18px 24px;gap:15px}.opening-player{min-width:0}.opening-player small{display:block;font-size:13px;margin-bottom:7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#e7c7ae}.opening-player.jade small{color:#c6e3cc}.opening-player>span{display:block;font-size:12px;color:#c6d6bf}.opening-player strong{display:block;font-size:25px;color:#fff3da;font-weight:700;margin-top:3px;overflow-wrap:anywhere}.opening-vs{text-align:center;font:italic 700 16px var(--mono);color:#93ac8d}.opening-track{height:3px;background:#67826640}.opening-track span{display:block;height:100%;background:#e6c47e}
/* Fixed four-reaction palette. Bubbles use reserved slots and never cover HP or energy. */
.emote-bar{grid-column:1/-1;display:grid;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);align-items:center;gap:8px;min-height:42px;padding:4px 10px;border-top:1px solid #dce3d2;background:#edf1e5b0}
.emote-buttons,.reveal-emotes{display:flex;justify-content:center;align-items:center;gap:8px}.emote-buttons{grid-column:2}.emote-buttons button,.reveal-emotes button{width:34px;height:32px;border:1px solid #bbcbae;border-radius:7px;background:#fffdf4;color:#344f37;font-size:23px;line-height:1;display:grid;place-items:center;transition:background .15s,transform .15s;touch-action:manipulation}.emote-buttons button:hover:not(:disabled),.reveal-emotes button:hover:not(:disabled){transform:translateY(-2px);background:#f9e8bb}.emote-buttons button:disabled,.reveal-emotes button:disabled{opacity:.5;cursor:default}.emote-buttons button:focus-visible,.reveal-emotes button:focus-visible{outline:2px solid #9b682e;outline-offset:2px}
.emote-bubble{font-family:'Segoe UI Emoji','Apple Color Emoji',sans-serif;font-size:28px;line-height:1;background:#fffaf0;border:1px solid #b2c09f;border-radius:12px;padding:5px 9px;box-shadow:0 3px 9px #24413220;white-space:nowrap;pointer-events:none;z-index:12}.hud-bubble{justify-self:center;font-size:23px;padding:3px 10px}.hud-bubble[data-emote-bubble="0"]{grid-column:1;grid-row:1}.hud-bubble[data-emote-bubble="1"]{grid-column:3;grid-row:1}.stage-emote{position:absolute;top:24%;transform:translateX(-50%)}.stage-emote[data-emote-bubble="0"]{left:27%}.stage-emote[data-emote-bubble="1"]{left:73%}.stage-emote:after{content:'';position:absolute;bottom:-6px;left:50%;width:9px;height:9px;background:#fffaf0;border-right:1px solid #b2c09f;border-bottom:1px solid #b2c09f;transform:rotate(45deg)}.reveal-emotes{padding:6px 10px;background:#e5ebd9;border-bottom:1px solid #cbd4ba}.reveal-emotes button{width:30px;height:29px;font-size:21px}
/* Distinct visual vocabulary for light wave, guard, first aid and charge. */
.fx-light-wave{width:76px;height:24px;border-radius:50%;background:radial-gradient(ellipse,#fffef4 0 18%,#b7fff2 32%,#61e9de99 54%,transparent 70%);box-shadow:0 0 22px 6px #9dffdf60}.fx-light-wave:before,.fx-light-wave:after{content:'';position:absolute;inset:-12px 10px;border:2px solid #dafff4;border-radius:50%;box-shadow:0 0 9px #8fffdf}.fx-light-wave:after{inset:-22px 22px;border-color:#d6fff690}.fx-light-origin{width:54px;height:54px;border:2px solid #c5ffeb;border-radius:50%;box-shadow:0 0 20px #86ffce}
.fx-aid-kit{width:61px;height:52px;z-index:9;filter:drop-shadow(0 4px 10px #17382977)}.fx-aid-kit svg{width:100%;height:100%}.fx-aid-ring,.fx-aid-reserve{width:102px;height:102px;border:2px solid #ffe9c4;border-radius:50%;box-shadow:0 0 24px #f3b29188,inset 0 0 20px #ffe8bb55}.fx-aid-reserve{border-style:dashed;border-width:3px;border-color:#ffe8a4;background:radial-gradient(transparent,#eadb8c40);width:92px;height:92px}.fx-aid-cross{width:13px;height:13px;clip-path:polygon(33% 0,66% 0,66% 33%,100% 33%,100% 66%,66% 66%,66% 100%,33% 100%,33% 66%,0 66%,0 33%,33% 33%);background:#ffddbe}
.fx-guard-wall{width:93px;height:114px;border:3px solid #dbfbff;border-radius:35% 35% 48% 48%;background:repeating-linear-gradient(60deg,transparent 0 15px,#b7f4ff35 16px 17px),linear-gradient(110deg,#5aabc355,#c2f5ed70,#7ba8d050);box-shadow:0 0 25px #c4f4ff99,inset 0 0 20px #d9ffef55}.fx-guard-sigil{width:36px;height:45px;border:3px solid #ecfff0;clip-path:polygon(50% 0,100% 17%,90% 70%,50% 100%,10% 70%,0 17%);background:#ddfff0aa;box-shadow:0 0 20px #a5f9ce}
.fx-charge-mote{width:6px;height:10px;background:#fff3bb;border-radius:50%;box-shadow:0 0 9px 3px #f9d56e99}.fx-charge-core{width:65px;height:65px;border:2px solid #ffe895;border-radius:50%;background:radial-gradient(#fff9cbb3,#ffe18d33,transparent 72%);box-shadow:0 0 30px #ffe28f77}.fx-charge-core:after{content:'';position:absolute;inset:14px 20px;background:#fff6b9;clip-path:polygon(48% 0,100% 0,60% 40%,100% 40%,0 100%,30% 55%,0 55%)}.fx-number.energy{font-size:18px;color:#fff1ad}
@media(max-width:560px){.opening-notice{top:19%;border-radius:8px}.opening-heading{padding:10px 14px}.opening-heading strong{font-size:14px}.opening-heading small{font-size:10px}.opening-bans{padding:15px 17px;gap:8px;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr)}.opening-player strong{font-size:21px}.opening-player small{font-size:12px}.emote-bar{gap:4px;min-height:39px;padding:3px 6px}.emote-buttons{gap:7px}.emote-buttons button{width:31px;height:30px;font-size:22px}.emote-bubble{font-size:25px}.hud-bubble{font-size:22px;padding:3px 8px}.stage-emote{top:15%}.scene.finished .stage-emote{top:52%}.fx-guard-wall{width:73px;height:90px}.fx-aid-kit{width:49px;height:43px}}
@media(prefers-reduced-motion:reduce){.emote-buttons button,.reveal-emotes button{transition:none}}
