/* HeroX festival: jewel-like arcade controls, open-world play and a compact journal. */
#festivalBtn{position:absolute;right:18px;top:111px;display:flex;align-items:center;gap:6px;border:1px solid #ffe8a780;border-radius:12px;padding:9px 12px;color:#fff5cb;background:linear-gradient(145deg,#625397ec,#263d64eb);box-shadow:inset 0 1px 0 #ffffff39,0 4px 12px #19325630;font-size:10px;font-weight:800;pointer-events:auto}
#festivalBtn>span{font-size:17px;color:#ffda7e}#festivalBadge{font-size:8px;opacity:.8}body.cinema #festivalBtn,body.cinema #festivalRun{display:none!important}
#festivalRun{position:absolute;left:50%;top:80px;transform:translateX(-50%);width:min(440px,46vw);text-align:center;color:#fff9e7;pointer-events:none}
.fx-run-top{display:inline-flex;gap:16px;align-items:center;background:#1b3158ed;border:1px solid #a9eee26b;border-radius:30px;padding:6px 7px 6px 20px;box-shadow:0 4px 20px #17274930}
#festivalClock{font-size:22px;font-weight:900;font-variant-numeric:tabular-nums}.fx-run-top button{pointer-events:auto;background:#ffffff18;color:#fff4d2;border-radius:50%;width:32px;height:32px;font-size:20px}
#festivalInstruction{font-size:11px;line-height:1.5;text-shadow:0 2px 4px #142c46,0 0 12px #142c46;background:#15365465;border-radius:12px;padding:7px 12px;margin:7px 0}#festivalCountdown{position:fixed;top:30vh;left:50%;transform:translateX(-50%);font-size:110px;font-weight:1000;color:#ffebaf;text-shadow:0 5px 0 #4e6a9a,0 0 50px #72ffed;line-height:1}
.fx-stop .fx-run-top{border-color:#ff9db5;background:#803f66ed}.fx-stop #festivalInstruction{background:#a83d62dd}
.festival-modal{padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#10233c30}.festival-modal .panel{border:1px solid #d8f5ff55;border-top:2px solid #b3ffeb;border-radius:28px;color:#f9f6e8;background:radial-gradient(ellipse at 12% 0%,#59749670,transparent 52%),linear-gradient(145deg,#273b61f7,#202d50fc);box-shadow:inset 0 1px 0 #ffffff20,0 24px 100px #101c4e80;max-height:94dvh;padding:28px;scrollbar-width:thin;scrollbar-color:#80d6ce70 transparent}
.festival-modal .panel p{color:#d4e0eb}.festival-modal .panel h2{color:#fff7de;letter-spacing:-.8px}.festival-modal .kicker{color:#9aebdc;letter-spacing:1.5px}.festival-modal .panel .close{background:#ffffff15;border:1px solid #ffffff20;color:#edf5ff;z-index:5;min-width:36px;min-height:36px}.festival-modal .panel .secondary{background:#c3e0ff12;color:#f4efdf;border:1px solid #d1e7ff33}.festival-modal .textbtn{color:#cadce7}.festival-modal button:focus-visible{outline:3px solid #ffe5a1;outline-offset:3px}
.festival-panel{max-width:900px!important;text-align:left}.fx-header{display:flex;align-items:center;gap:18px;padding-right:28px}.fx-header h2{font-size:31px;margin:0 0 5px}.fx-header p{margin:0;font-size:12px}.fx-header .kicker{font-size:8px;margin-bottom:8px}.fx-seal{height:64px;width:64px;flex-shrink:0;display:grid;place-items:center;border-radius:23px;transform:rotate(-8deg);font-size:46px;color:#fff2b3;background:linear-gradient(145deg,#c1fff5,#42b7c4 42%,#675baa);border:1px solid #d3fff5;box-shadow:inset 0 3px 0 #ffffff70,0 5px 0 #223b76,0 0 25px #75d6d629}
.fx-summary{display:flex;justify-content:space-around;background:#14284e50;border:1px solid #b2d8f124;border-radius:17px;margin:23px 0 18px;padding:12px 8px;gap:8px}.fx-summary>span{text-align:center;display:flex;flex-direction:column;gap:3px;min-width:0}.fx-summary b{font-size:24px;color:#ffdf8f;letter-spacing:-.8px}.fx-summary span span{font-size:9px;color:#b8cbdf}
.fx-worlds{display:flex;gap:7px;margin-bottom:18px}.fx-worlds button{flex:1;min-width:0;background:#e4f0ff09;border:1px solid #b5d8ff20;border-radius:15px;padding:12px 10px;color:#bbd1e7;display:grid;grid-template-columns:25px 1fr auto;align-items:center;gap:6px;text-align:start}.fx-worlds b{font-size:10px;line-height:1.3;font-weight:700}.fx-worlds button>span{font-size:22px}.fx-worlds small{font-size:9px}.fx-worlds [aria-selected=true]{border-color:#a4eedb;background:linear-gradient(140deg,#65cbbb2b,#92b8ff17);color:#fff0c2;box-shadow:inset 0 1px 0 #ffffff30}.fx-worlds button:disabled{opacity:.4}
.fx-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fx-card{display:flex;gap:14px;align-items:center;text-align:start;padding:12px;border-radius:20px;background:linear-gradient(135deg,#ffffff14,#bedbff06);border:1px solid #ffffff1b;color:#fff8e6;position:relative;overflow:hidden;transition:background .18s,transform .18s;min-height:116px}.fx-card:hover{background:linear-gradient(135deg,#ffffff26,#bedbff10);border-color:var(--accent)}.fx-card-art{display:grid;place-items:center;position:relative;flex-shrink:0;width:78px;height:85px;border-radius:18px;background:radial-gradient(ellipse at 35% 20%,#fff8,var(--accent) 3%,#ffffff08 70%);color:var(--accent);filter:drop-shadow(0 6px 6px #10193050)}.fx-card-art svg{width:62px;height:62px;transform:rotate(-12deg);opacity:.3}.fx-card-art i{position:absolute;font-style:normal;font-size:40px;color:var(--accent);text-shadow:0 2px 0 #fff7,0 5px 0 #172c5b66}.fx-card-copy{display:flex;flex-direction:column;gap:5px;min-width:0;padding-right:6px}.fx-card-copy small{font-size:7px;letter-spacing:1.5px;color:var(--accent);font-weight:800}.fx-card-copy strong{font-size:15px;line-height:1.2}.fx-card-copy>span:not(.fx-stars){font-size:10px;color:#a9c1d6}.fx-card-arrow{font-size:16px;color:#d1f2ec;position:absolute;inset-inline-end:12px;bottom:14px}
.fx-stars{display:flex;justify-content:center;gap:8px;font-size:29px;line-height:1.2}.fx-stars i{font-style:normal;color:#8b9bb23d;text-shadow:none}.fx-stars .earned{color:#ffdc85;text-shadow:0 2px 0 #986554,0 0 15px #ffdc8530}.fx-card .fx-stars{justify-content:flex-start;font-size:16px;gap:4px;margin-top:2px}
.fx-rewards{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:20px;padding:17px 0 5px;border-top:1px solid #b7d6ff22}.fx-rewards b{font-size:12px;display:block}.fx-rewards small{display:block;font-size:9px;color:#b5c8db;margin-top:6px;max-width:300px}.fx-trails{display:flex;gap:9px}.fx-trails button{width:44px;height:54px;border:1px solid #cadfff30;background:#14284988;border-radius:12px;color:var(--trail);padding:4px;display:grid;place-items:center}.fx-trails button span{font-size:25px;text-shadow:0 0 14px var(--trail)}.fx-trails button small{font-size:8px;margin:0;color:inherit}.fx-trails [aria-pressed=true]{border-color:var(--trail);box-shadow:0 0 10px #fff1}.fx-trails button:disabled{opacity:.25}.fx-cup{margin-top:20px;text-align:center;color:#ffe1a4;background:#ffe8a912;padding:15px;border-radius:18px}.fx-cup p{font-size:11px;margin:6px 0 0}
.fx-brief{max-width:500px!important}.fx-brief h2{margin-top:8px}.fx-brief>p{max-width:370px;margin:14px auto 20px;line-height:1.65}.fx-brief-art{height:115px;width:120px;margin:4px auto 22px;display:grid;place-items:center;position:relative;color:var(--accent);border-radius:36px;background:radial-gradient(ellipse at 35% 20%,#ffffff66,transparent 55%),linear-gradient(145deg,#8aafd020,#6da6c608);box-shadow:inset 0 2px 1px #ffffff4a,0 15px 30px #0f234366;transform:rotate(-6deg)}.fx-brief-art svg{width:90px;opacity:.25}.fx-brief-art>span{position:absolute;font-size:70px;text-shadow:0 3px 0 #fff3,0 8px 0 #17284550}.fx-difficulty{display:flex;gap:5px;background:#12244380;border-radius:14px;padding:5px;margin:20px 0}.fx-difficulty button{flex:1;padding:12px 5px;color:#c9d6e7;background:none;border-radius:10px;font-size:11px;min-height:42px;border:1px solid transparent}.fx-difficulty [aria-pressed=true]{background:#8ff0dc;color:#214968;border-color:#dcfff2;box-shadow:0 3px 0 #2d8f9b;font-weight:900}.fx-best{display:flex;justify-content:center;align-items:center;gap:12px;margin:20px 0}.fx-best .fx-stars{font-size:22px}.fx-best>span:not(.fx-stars){font-size:9px;color:#a6c0d6}.fx-best>b{font-size:16px;color:#ffdf97}.fx-brief>.primary{width:100%;margin-top:0!important}.fx-brief>.textbtn{display:block;width:100%}
.fx-result{max-width:460px!important}.fx-result-emblem{font-size:75px;color:var(--accent);text-shadow:0 0 50px #f7d68b55,0 4px 0 #fff3;margin:3px 0 10px;animation:fx-bloom .55s cubic-bezier(.2,1.6,.5,1)}.fx-result h2{margin-top:6px}.fx-result-score{display:flex;flex-direction:column;gap:3px;background:#152a4a70;border:1px solid #c8e4ff22;padding:15px;border-radius:18px;margin:18px 0}.fx-result-score>span{font-size:10px;color:#b2c9e0}.fx-result-score>b{font-size:42px;font-variant-numeric:tabular-nums;color:#fff0bf;letter-spacing:-2px}.fx-result-score small{font-size:10px;color:#9ee8d5}.fx-unlock{font-size:11px;color:#ffdd91;margin:12px 0}.fx-result>.primary{width:100%}
.fx-arcade{width:100%;max-width:540px!important;padding:22px!important;overflow:auto}.fx-game-header{display:flex;justify-content:space-between;align-items:center;text-align:start;padding-right:40px;gap:10px}.fx-game-header .kicker{font-size:7px;letter-spacing:1px;margin:0 0 5px}.fx-game-header h2{font-size:21px!important;margin:0!important;line-height:1.15}.fx-pause{width:36px;height:36px;flex-shrink:0;border:1px solid #c3e4ff40;border-radius:12px;color:#f8f3df;background:#fff1}.fx-game-stats{display:flex;justify-content:space-around;margin:18px 0 14px;padding:11px 3px;border:1px solid #c0e0ff21;border-radius:15px;background:#132a4b80;gap:6px}.fx-game-stats>span{display:flex;flex-direction:column;gap:4px}.fx-game-stats small{font-size:8px;letter-spacing:.5px;color:#9cb6d0}.fx-game-stats b{font-size:20px;font-variant-numeric:tabular-nums;color:#fff0b5}
.fx-arena{position:relative;isolation:isolate;border:1px solid #bedbff29;border-radius:20px;padding:12px;background:radial-gradient(ellipse at 50% 0%,#5e8cbd33,transparent 70%),#142648;box-shadow:inset 0 2px 15px #0c1b3c40;min-height:225px;overflow:hidden;touch-action:none}.fx-countdown,.fx-paused{position:absolute;inset:0;background:#152a4beb;z-index:10;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:96px;font-weight:1000;color:#ffdf91;backdrop-filter:blur(8px)}.fx-paused{font-size:24px;gap:20px}.fx-paused .primary{font-size:14px}
.fx-pairs,.fx-odd{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:9px}.fx-tile{border:1px solid #d3efff45;background:linear-gradient(145deg,#3e638b,#293d6b);border-radius:15px;min-height:64px;aspect-ratio:1;display:grid;place-items:center;box-shadow:inset 0 2px 0 #ffffff2a,0 4px 0 #0b1c3e80;transition:transform .16s,background .2s;color:#8db6d4;position:relative}.fx-tile svg{width:67%;height:67%;filter:drop-shadow(0 3px 2px #1b2c5355)}.fx-card-front{width:100%;height:100%;display:grid;place-items:center}.fx-card-front b{font-size:30px;opacity:.5}.fx-tile.flipped{background:linear-gradient(145deg,#eefeff1c,#74b7d92b);border-color:#bdedf1}.fx-tile.matched{opacity:.42;box-shadow:none;transform:scale(.93);border-color:#87e5ce}.fx-odd .fx-tile{min-height:58px}
.fx-reflex{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.fx-pad{aspect-ratio:1;background:radial-gradient(ellipse,#142945,#263956);border:1px solid #98bade40;box-shadow:inset 0 3px 15px #051b4255,0 4px 0 #10203e;border-radius:50%;color:#577291;position:relative;display:grid;place-items:center}.fx-pad>span{display:grid;place-items:center;width:100%;height:100%;font-size:40px}.fx-pad svg{height:65%;width:65%}.fx-pad small{position:absolute;bottom:6px;font-size:8px;opacity:.6}.fx-pad.good{color:#fff4bf;border-color:#a7ffe6;background:radial-gradient(ellipse at 35% 20%,#cffff2,#51d6c0 25%,#267b9c);box-shadow:inset 0 2px 0 #fff9,0 4px 0 #185b76,0 0 19px #6ef7d444;animation:fx-bloom .17s ease-out}.fx-pad.danger{background:radial-gradient(ellipse at 35% 20%,#ffc1cf,#d76184 45%,#84395f);border-color:#ffb6d1;color:#fff4eb}
.fx-pipes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.fx-pipe{background:#2c4263;border:1px solid #526e8c;border-radius:12px;aspect-ratio:1;padding:0;overflow:hidden;box-shadow:inset 0 2px 0 #ffffff1b}.fx-pipe svg{display:block;width:100%;height:100%;overflow:visible}.fx-pipe path{stroke:#92a7bc;stroke-width:14;fill:none;stroke-linecap:round}.fx-pipe circle{fill:#bacbdb;stroke:#f6fff66b;stroke-width:3}.fx-pipe.flow path{stroke:#75edd8;filter:drop-shadow(0 0 3px #72ffde)}.fx-pipe.flow circle{fill:#d1fff0}.fx-pipe-labels{display:flex;justify-content:space-between;font-size:9px;color:#a2f1df;margin:0 2px 8px}
.fx-lanes{height:min(38vh,300px);min-height:200px;position:relative;display:grid;grid-template-columns:repeat(3,1fr);background:linear-gradient(#192742,#21395c);border-radius:13px;overflow:hidden}.fx-lanes>i{border-inline-end:1px solid #9bb9e223;background:linear-gradient(0deg,#80dac611,transparent 60%)}.fx-lanes>i:nth-child(2){background:linear-gradient(0deg,#bca2e51b,transparent 65%)}.fx-hitline{position:absolute;top:85%;height:3px;left:0;right:0;background:#e4ffe0;box-shadow:0 0 14px #99ffdf,0 0 2px #fff}#fxNotes{position:absolute;inset:0;pointer-events:none}.fx-note{position:absolute;transform:translate(-50%,-50%);height:42px;width:42px;filter:drop-shadow(0 0 6px #dbebff60);display:grid;place-items:center}.fx-note svg{height:100%;width:100%}.fx-note.meteor{border-radius:18px;background:linear-gradient(145deg,#ff8f9c,#963c63);font-size:35px;line-height:1;color:#fff!important;border:1px solid #ffb6c2;box-shadow:0 -9px 20px #fb608c45}#fxShip{position:absolute;top:85%;height:44px;width:50px;color:#d1ffef;transform:translate(-50%,-50%);transition:left .08s ease-out;filter:drop-shadow(0 0 8px #74f3e0)}#fxShip svg{width:100%;height:100%}.fx-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.fx-keys button{min-height:50px;border-radius:13px;background:linear-gradient(155deg,#ffffff30,#ffffff09);border:1px solid var(--key);color:var(--key);box-shadow:0 4px 0 #0a1f3b;display:flex;align-items:center;justify-content:center;gap:7px}.fx-keys button:active{background:var(--key);color:#274867;transform:translateY(3px)}.fx-keys span{width:28px;height:28px}.fx-keys svg{width:100%;height:100%}.fx-keys small{font-size:10px}.fx-game-tip{font-size:10px!important;margin:12px 0 0!important;line-height:1.55!important}.fx-game-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:10px;color:#ffde89;min-height:30px}.fx-game-foot .textbtn{font-size:10px;padding:12px 0 0}.fx-game-foot>span{padding-top:12px}
@keyframes fx-bloom{from{scale:.72;opacity:.25}to{scale:1;opacity:1}}
@media(orientation:portrait){#festivalBtn{top:102px;right:12px;padding:8px 10px;font-size:9px}#festivalRun{top:155px;width:calc(100% - 38px);max-width:390px}.fx-run-top{padding:5px 6px 5px 17px}#festivalClock{font-size:19px}#festivalInstruction{font-size:10px;margin:5px 0;padding:6px 10px}#festivalCountdown{top:20vh}.festival-modal{padding:12px}.festival-modal .panel{padding:24px 17px;border-radius:24px}.fx-header{gap:12px;padding-right:18px}.fx-seal{height:45px;width:45px;font-size:32px;border-radius:15px}.fx-header h2{font-size:24px!important}.fx-header .kicker{font-size:6px;letter-spacing:1px}.fx-header p{font-size:10px!important}.fx-summary{margin:18px 0 14px}.fx-summary b{font-size:22px}.fx-worlds{gap:5px}.fx-worlds button{display:flex;flex-direction:column;text-align:center;padding:10px 5px;gap:4px}.fx-worlds button>span{font-size:20px}.fx-worlds b{font-size:8px;min-height:22px}.fx-worlds small{font-size:8px}.fx-cards{gap:8px}.fx-card{flex-direction:column;align-items:flex-start;gap:7px;padding:11px;min-height:175px;border-radius:16px}.fx-card-art{width:100%;height:65px;border-radius:12px}.fx-card-art svg{height:52px}.fx-card-art i{font-size:37px}.fx-card-copy strong{font-size:12px;line-height:1.25}.fx-card-copy small{font-size:6px;letter-spacing:1px}.fx-card-copy>span:not(.fx-stars){font-size:8px}.fx-card-copy{gap:4px}.fx-rewards{align-items:flex-start;flex-direction:column;gap:12px}.fx-trails{width:100%;justify-content:space-between}.fx-trails button{width:56px}.fx-arcade{padding:20px 14px!important}.fx-game-header h2{font-size:19px!important}.fx-game-stats{margin:15px 0 12px}.fx-arena{padding:10px}.fx-pairs,.fx-odd{gap:7px}.fx-tile{min-height:52px;border-radius:12px}.fx-odd .fx-tile{min-height:50px}.fx-reflex{gap:12px}.fx-game-tip{font-size:10px!important}.fx-brief-art{height:100px;width:110px}.fx-brief h2{font-size:24px}.fx-brief>p{font-size:12px}.fx-brief .fx-difficulty button{font-size:10px}.fx-game-stats b{font-size:20px}}
@media(orientation:landscape) and (max-height:550px){#festivalBtn{top:98px;font-size:8px;padding:6px 9px}#festivalRun{top:59px;width:38vw;max-width:330px}#festivalInstruction{font-size:8px;padding:4px 8px}#festivalCountdown{top:28vh;font-size:70px}.fx-run-top{padding:3px 4px 3px 15px}#festivalClock{font-size:18px}.fx-run-top button{width:26px;height:26px}.festival-modal .panel{max-height:94dvh}.fx-arcade{max-width:750px!important;display:grid;grid-template-columns:minmax(175px,1fr) minmax(240px,1.2fr);column-gap:22px;padding:18px!important;align-items:start}.fx-game-header{grid-column:1;grid-row:1;padding-right:0}.fx-game-header h2{font-size:19px!important}.fx-game-stats{grid-column:1;grid-row:2;margin:12px 0}.fx-game-tip{grid-column:1;grid-row:3}.fx-game-foot{grid-column:1;grid-row:4}.fx-arena{grid-column:2;grid-row:1/6;min-height:220px;margin-right:25px;padding:9px}.fx-tile,.fx-odd .fx-tile{min-height:41px}.fx-pairs,.fx-odd{gap:6px}.fx-lanes{height:180px;min-height:180px}.fx-keys{margin-top:8px}.fx-keys button{min-height:38px}.fx-pipe-labels{font-size:8px}.fx-arcade .close{right:9px;top:9px;width:29px!important;min-width:29px!important;height:29px;min-height:29px!important}.fx-note{width:30px;height:30px}.fx-note.meteor{font-size:26px}.fx-brief-art{height:70px;width:80px;margin-bottom:10px}.fx-brief-art>span{font-size:45px}.fx-brief-art svg{height:60px}.fx-brief h2{font-size:22px}.fx-brief>p{margin:8px auto;font-size:11px}.fx-difficulty{margin:12px 0}.fx-best{margin:10px 0}}
[dir=rtl] .fx-card,[dir=rtl] .fx-game-header{text-align:right}[dir=rtl] .fx-card .fx-stars{justify-content:flex-start}[dir=rtl] .fx-header{padding-left:28px;padding-right:0}[dir=rtl] .fx-game-header{padding-left:40px;padding-right:0}
@media(prefers-reduced-motion:reduce){.fx-result-emblem,.fx-pad.good{animation:none}.fx-card,.fx-tile,#fxShip{transition:none}}

/* Keep the timer clear of the mission and camera controls on small screens. */
#festivalRun{inset:0;transform:none;width:auto;max-width:none;pointer-events:none}#festivalRun .fx-run-top{position:absolute;right:18px;top:106px}#festivalInstruction{display:none}#festivalCountdown{top:37vh}.festival-playing #festivalBtn{display:none}
@media(orientation:portrait){#festivalRun .fx-run-top{right:12px;top:102px;gap:8px;padding-left:12px}#festivalClock{font-size:17px}#festivalCountdown{top:38vh}}
@media(orientation:landscape) and (max-height:550px){#festivalRun .fx-run-top{top:100px;right:16px}#festivalCountdown{top:35vh}}

[dir=rtl] .fx-arcade .close{left:12px;right:auto}[dir=rtl] .fx-game-header{padding-left:40px;padding-right:0}
@media(orientation:landscape) and (max-height:550px){[dir=rtl] .fx-game-header{padding-left:0}[dir=rtl] .fx-arcade .close{left:9px;right:auto}[dir=rtl] .fx-arena{margin-left:25px;margin-right:0}}

#festivalInstruction{display:block;position:absolute;top:80px;left:50%;transform:translateX(-50%);width:min(440px,42vw);margin:0;line-height:1.45}
@media(orientation:portrait){#festivalInstruction{top:174px;width:calc(100% - 32px);max-width:440px;font-size:10px;padding:8px 12px}}
@media(orientation:landscape) and (max-height:550px){#festivalInstruction{top:62px;width:35vw;font-size:9px;padding:7px 10px}}
