@font-face{font-family:system-fallback;src:local(Arial)}*{box-sizing:border-box}html,body,#app{color:#fbecd3;background:#08050e;width:100%;min-height:100%;margin:0;font-family:Arial,Helvetica,sans-serif}body{overscroll-behavior:none}button,select,input{font:inherit}button,select,summary{cursor:pointer}button{color:#fff0d5;letter-spacing:.045em;touch-action:manipulation;background:#211329;border:1px solid #6d516f;border-radius:5px;min-height:44px;font-weight:800}button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #ffe6a7}button:active,button.pressed{filter:brightness(1.3);transform:translateY(1px)}[hidden]{display:none!important}.game-stage{max-width:1100px;height:100dvh;min-height:300px;padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));grid-template-rows:48px minmax(0,1fr) 98px;gap:8px;margin:auto;display:grid;overflow:hidden}.play-header{color:#c9a9c6;align-items:center;gap:12px;min-width:0;font-size:12px;display:flex}.wordmark{letter-spacing:.06em;color:#ffc66d;font-size:22px;font-weight:900}.play-header #wave-name{flex:1}.play-header button{min-width:44px;padding:0 12px;font-size:12px}.arena-wrap{justify-content:center;align-items:center;min-width:0;min-height:0;display:flex}.arena-wrap canvas{aspect-ratio:4/3;object-fit:contain;width:100%;max-width:100%;height:100%;max-height:100%;image-rendering:pixelated;touch-action:none;background:#000;display:block;box-shadow:0 0 0 1px #39213e}.touch-controls{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:14px;display:flex}.seat-controls{--accent:#ffcf68;grid-template-rows:17px 62px;grid-template-columns:minmax(54px,80px) minmax(90px,156px) minmax(54px,80px);gap:6px;width:min(100%,340px);display:grid}.seat-1{--accent:#82dded}.seat-label{letter-spacing:.12em;color:var(--accent);text-align:center;grid-column:1/-1;font-size:10px;font-weight:800}.seat-controls button{border-color:color-mix(in srgb,var(--accent) 50%,#1a1121);color:var(--accent);touch-action:none;background:#1b1421;font-size:22px}.seat-controls .flap{background:var(--accent);color:#1b1021;border-color:var(--accent);font-size:16px}.flap span{letter-spacing:.08em;margin-top:4px;font-size:8px;display:block}.seat-1{display:none}[data-players="2"] .seat-1{display:grid}.game-menu{z-index:5;overscroll-behavior:contain;padding:max(20px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#08050eed;position:fixed;inset:0;overflow-y:auto}.menu-inner{text-align:center;width:min(100%,470px);margin:0 auto}.festly-logo{object-fit:contain;width:85px;height:auto;max-height:38px}.release{letter-spacing:.22em;color:#c39abf;margin:10px 0 16px;font-size:10px}.menu-inner h1{color:#ffc174;letter-spacing:.055em;text-shadow:3px 3px #2d153c;background:#662983;border-top:2px solid #e89d54;border-bottom:2px solid #e89d54;margin:0;padding:9px 0 5px;font-size:clamp(60px,15vw,96px);font-weight:900;line-height:1.1}.subtitle{letter-spacing:.28em;color:#e9b980;margin:12px 0 0;font-size:13px;font-weight:800}.hero{width:150px;height:131px;margin:8px auto 0;overflow:hidden}.hero img{width:150px;max-width:none;height:131px;display:block}.objective{color:#f2d9b5;margin:10px 0 20px;font-size:16px;line-height:1.5}.game-options{grid-template-columns:1fr 1fr;gap:10px;margin:12px 0;display:grid}.game-options label{text-align:left;letter-spacing:.06em;color:#ccb1c8;flex-direction:column;gap:7px;font-size:12px;display:flex}.game-options select{color:#ffedcc;background:#1d1425;border:1px solid #755276;border-radius:4px;width:100%;min-height:44px;padding:12px 8px;font-size:12px;font-weight:700}.primary{color:#261126;letter-spacing:.15em;background:#ffcd72;border-color:#ffdfa4;width:100%;min-height:56px;margin:8px 0;font-size:19px;box-shadow:0 3px #8d583c}.control-hint{color:#ceb8d0;font-size:12px;line-height:1.7}.sound-controls{justify-content:center;align-items:center;gap:20px;margin:18px 0;display:flex}.sound-controls button{padding:8px 13px;font-size:12px}.sound-controls label{text-align:left;color:#cdb7ce;gap:4px;font-size:12px;display:grid}.sound-controls input{accent-color:#f6c86d;width:110px}details{text-align:left;color:#d1bbd1;border-top:1px solid #46304b;padding:13px 0;font-size:14px;line-height:1.6}summary{color:#f0dac0;font-weight:700}details p{margin:10px 0}.menu-inner h2{color:#ffcf78;margin:20px 0 12px;font-size:42px}.result-copy{font-size:18px;line-height:1.6}.quiet{margin:16px;padding:10px 24px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#app[data-screen=title] .game-stage{visibility:hidden}#app[data-screen=playing]{touch-action:none;-webkit-user-select:none;user-select:none}#app[data-screen=playing] .game-stage{width:100%;position:fixed;inset:0}@media (width<=600px){.game-stage{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right));grid-template-rows:44px minmax(0,1fr) 94px;gap:5px}.play-header{gap:6px}.play-header .wordmark{font-size:17px}.play-header button{padding:0 9px;font-size:10px}.play-header #wave-name{font-size:10px}.touch-controls{gap:8px}[data-players="2"] .touch-controls{grid-template-rows:1fr 1fr;grid-template-columns:1fr;gap:4px;display:grid}[data-players="2"] .game-stage{grid-template-rows:44px minmax(0,1fr) 164px}[data-players="2"] .seat-controls{grid-template-rows:14px 52px;grid-template-columns:1fr 1.65fr 1fr;gap:4px;width:100%;max-width:330px}.game-menu{padding-top:14px}.release{margin:7px 0 12px}.hero,.hero img{width:120px;height:105px}.objective{margin:6px 0 12px;font-size:14px}.game-options select{font-size:11px}.game-options{gap:8px}.subtitle{font-size:11px}}@media (orientation:landscape) and (height<=600px){.game-stage{max-width:none;padding-top:max(4px,env(safe-area-inset-top));padding-bottom:max(4px,env(safe-area-inset-bottom));grid-template-rows:40px minmax(0,1fr);grid-template-columns:100px minmax(0,1fr) 100px;column-gap:6px}.play-header{grid-column:1/-1}.arena-wrap{grid-area:2/2}.touch-controls{display:contents!important}.seat-controls{grid-area:2/1;grid-template-rows:18px 54px 65px;grid-template-columns:1fr 1fr;align-self:center;gap:6px;width:auto;display:grid}.seat-controls .seat-label{grid-row:1}.seat-controls button[data-input=left]{grid-area:2/1}.seat-controls button[data-input=right]{grid-area:2/2}.seat-controls .flap{grid-area:3/1/auto/-1}.seat-1{grid-column:3;display:none}[data-players="1"] .seat-0{display:contents}[data-players="1"] .seat-0 .seat-label{display:none}[data-players="1"] .seat-0 button[data-input=left]{grid-area:2/1;place-self:center start;width:46px;height:65px}[data-players="1"] .seat-0 button[data-input=right]{grid-area:2/1;place-self:center end;width:46px;height:65px}[data-players="1"] .seat-0 .flap{grid-area:2/3;align-self:center;height:84px}[data-players="2"] .game-stage{grid-template-rows:40px minmax(0,1fr)}[data-players="2"] .seat-controls{grid-template-rows:18px 54px 65px;grid-template-columns:1fr 1fr;width:auto}.menu-inner{max-width:540px}.hero{float:left;width:120px;height:105px;margin:6px 16px 0 0}.hero img{width:120px;height:105px}.menu-inner h1{font-size:54px}.game-options{margin-top:8px}.objective{margin:12px 0 8px}.game-menu{padding-top:12px}}@media (prefers-reduced-motion:reduce){button:active{transform:none}}@media (orientation:landscape) and (height<=600px){.game-stage{min-height:0}#app[data-screen=title] .menu-inner{grid-template-columns:130px minmax(0,1fr);align-items:center;column-gap:14px;display:grid}#app[data-screen=title] .festly-logo{grid-area:1/1;justify-self:center}#app[data-screen=title] .release{letter-spacing:.12em;grid-area:2/1;margin:4px 0;font-size:8px}#app[data-screen=title] h1{grid-area:1/2/3;font-size:48px}#app[data-screen=title] .subtitle{grid-area:3/2;margin:6px 0;font-size:10px}#app[data-screen=title] .hero{float:none;grid-area:3/1/7;margin:0 auto}#app[data-screen=title] .objective{grid-area:4/2;margin:4px 0;font-size:13px;line-height:1.4}#app[data-screen=title] .game-options{grid-area:5/2;margin:6px 0}#app[data-screen=title] .primary{grid-area:6/2;min-height:48px;margin:5px 0}#app[data-screen=title] .control-hint{grid-area:7/1/auto/-1;margin:5px 0}#app[data-screen=title] .sound-controls,#app[data-screen=title] details{grid-column:1/-1}}html,body,#app{color:#edf1eb;background:#080f20}body{background:radial-gradient(at 50% 20%,#26334c 0,#101a2d 55%,#080f20 100%)}button,select{color:#e8eced;background:linear-gradient(#26364d,#172338);border-color:#596982;border-radius:3px;box-shadow:inset 0 1px #ffffff12,0 2px #050b16}button:hover{background:linear-gradient(#364861,#22314b);border-color:#c9b187}button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible{outline-color:#a4e8ed}.game-stage{grid-template-rows:44px minmax(0,1fr) 88px;gap:7px;max-width:1180px}.play-header{color:#aab9c9;gap:10px}.round-status{flex:1;gap:3px;min-width:0;line-height:1.15;display:grid}#glow-count{letter-spacing:.08em;color:#a0e9e5;font-size:9px}.wordmark{color:#f7d697;letter-spacing:.1em;text-shadow:0 2px #744b3f;font-size:23px}.play-header #wave-name{letter-spacing:.1em;font-size:10px}.play-header button{background:linear-gradient(#24344a,#162138);border-color:#52647a;font-size:10px}.arena-wrap{overflow:hidden}.arena-wrap canvas{object-fit:initial;background:#101a2d;flex:none;box-shadow:0 0 0 1px #ad895b,0 0 0 3px #28384f,0 10px 35px #0008}.seat-controls{grid-template-rows:14px 56px;gap:5px}.seat-controls button{background:linear-gradient(#263950,#172438);border-color:#67788b;box-shadow:inset 0 1px #ffffff1c,0 3px #030916}.seat-controls .flap{color:#242339;text-shadow:0 1px #fff8;background:linear-gradient(#f8dfac,#d8b16f);border-color:#ffe9bb}.seat-1 .flap{background:linear-gradient(#bbeced,#70bccb);border-color:#d5ffff}.seat-label{letter-spacing:.14em;color:var(--accent)}.flap span{opacity:.8;font-size:8px;font-weight:600}.game-menu{image-rendering:auto;background:linear-gradient(#08122466,#091326bb),url(/art/echo-party-title.png) 50%/cover fixed;padding:32px 18px}.menu-inner{background:linear-gradient(145deg,#24334ce8,#111d32f5);border:1px solid #a48e6a;width:min(100%,500px);padding:24px;box-shadow:0 0 0 3px #111b2d,0 0 0 4px #42506a,0 20px 80px #0009}.festly-logo{filter:drop-shadow(0 2px 2px #0008);width:96px;max-height:40px}.release{color:#abc4cf;letter-spacing:.2em;font-size:9px}.menu-inner h1{color:#f8d58e;letter-spacing:.05em;text-shadow:0 1px #fff0be,0 3px #b58151,0 5px #664239,3px 7px #081121;background:0 0;border:0;padding:0;font-size:82px;line-height:1.03}.subtitle{color:#a4d4dd;letter-spacing:.28em;font-size:12px}.objective{color:#e4dcc8;font-size:15px;line-height:1.5}.hero{background:radial-gradient(#d1a46025,#0000 65%);border-radius:50%;width:180px;height:185px;position:relative}.hero img{filter:drop-shadow(0 6px 4px #060e20aa);width:250px;height:219px;position:absolute;top:-18px;left:-35px}.game-options label{color:#adc1d0;letter-spacing:.1em;font-size:11px}.game-options select{color:#f1ddaf;background:#111e33;border-color:#536880;font-size:12px}.primary{color:#23253b;letter-spacing:.13em;background:linear-gradient(#ffe8b6,#d6af70);border-color:#ffebc1;box-shadow:inset 0 1px #fff9,0 3px #785f45,0 5px #081123}.primary:hover{color:#172338;background:linear-gradient(#fff0c9,#e7bd7b)}.control-hint{color:#a7bdcd;font-size:11px}.sound-controls{color:#b4c5d2;margin:14px 0}.sound-controls label{color:#b4c5d2}.sound-controls input{accent-color:#b6dadd}details{color:#b8c9d4;border-color:#445570;font-size:13px}summary{color:#d9d8c5}.menu-inner h2{color:#f5d394;text-shadow:0 2px #7d5a46;margin:14px 0;font-size:38px}.result-copy{color:#d5e1e6;white-space:pre-line;font-size:17px}.quiet{margin-bottom:0;font-size:12px}@media (width>=701px) and (height>=601px){#app[data-screen=title] .game-menu{padding-top:clamp(28px,8vh,90px)}#app[data-screen=title] .menu-inner{grid-template-columns:210px minmax(0,1fr);column-gap:28px;width:min(100%,790px);padding:30px;display:grid}#app[data-screen=title] .festly-logo{grid-area:1/1;justify-self:center}#app[data-screen=title] .release{grid-area:1/2;align-self:end}#app[data-screen=title] h1{grid-area:2/2}#app[data-screen=title] .subtitle{grid-area:3/2;margin:9px 0}#app[data-screen=title] .hero{background:radial-gradient(#c1a46025,#0000 67%);grid-area:2/1/7;align-self:center;width:210px;height:240px;margin:auto}#app[data-screen=title] .hero img{width:320px;height:280px;top:-18px;left:-55px}#app[data-screen=title] .objective{grid-area:4/2;margin:8px 0 10px}#app[data-screen=title] .game-options{grid-area:5/2;margin:8px 0}#app[data-screen=title] .primary{grid-area:6/2}#app[data-screen=title] .control-hint{grid-area:7/1/auto/-1;margin:15px 0 5px}#app[data-screen=title] .sound-controls,#app[data-screen=title] details{grid-column:1/-1}}@media (width<=600px){.game-stage{grid-template-rows:44px minmax(0,1fr) 86px}[data-players="2"] .game-stage{grid-template-rows:44px minmax(0,1fr) 160px}.play-header .wordmark{font-size:17px}.play-header #wave-name{letter-spacing:0;font-size:9px}#glow-count{letter-spacing:0;font-size:8px}.game-menu{padding:12px}.menu-inner{width:100%;padding:14px}.festly-logo{width:78px;height:24px}.release{margin:5px 0 10px;font-size:8px}.menu-inner h1{font-size:57px}.subtitle{margin:6px 0;font-size:10px}.hero{width:116px;height:92px;margin:2px auto}.hero img{width:157px;height:137px;top:-20px;left:-20px}.objective{margin:7px 0 10px;font-size:12px;line-height:1.4}.game-options{margin:8px 0}.game-options label{gap:4px;font-size:10px}.game-options select{padding:10px 6px;font-size:11px}.primary{min-height:48px;margin:6px 0;font-size:16px}.control-hint{margin:8px 0;font-size:10px}.sound-controls{gap:16px;margin:12px 0}.sound-controls input{width:90px}details{padding:10px 0}.menu-inner h2{font-size:34px}.result-copy{font-size:15px}}@media (orientation:landscape) and (height<=600px){.game-stage{grid-template-rows:40px minmax(0,1fr);gap:6px;max-width:none}[data-players="2"] .game-stage{grid-template-rows:40px minmax(0,1fr)}.game-menu{padding:10px 16px}.menu-inner{padding:12px 16px}#app[data-screen=title] .menu-inner{grid-template-columns:110px minmax(0,1fr);column-gap:16px;max-width:660px}#app[data-screen=title] h1{font-size:48px}#app[data-screen=title] .hero{width:110px;height:113px;overflow:hidden}#app[data-screen=title] .hero img{width:184px;height:161px;top:-20px;left:-37px}#app[data-screen=title] .objective{font-size:12px}#app[data-screen=title] .game-options select{min-height:44px;padding:7px 6px}#app[data-screen=title] .primary{min-height:44px}#app[data-screen=title] .control-hint{margin:5px 0}.seat-controls,[data-players="2"] .seat-controls{grid-template-rows:18px 54px 65px}}.game-stage{grid-template-rows:44px minmax(0,1fr) 140px}.console-controls{justify-content:center;align-items:center;gap:40px;display:flex;position:relative}.console-controls .controller{grid-template-rows:14px 112px;grid-template-columns:112px 124px;align-self:center;gap:4px 24px;width:260px;max-width:none;display:grid}.console-controls .controller>.seat-label{grid-area:1/1/auto/-1;display:block}.console-controls .seat-1{display:none}[data-players="2"] .console-controls .seat-1{display:grid}.console-controls .dpad{touch-action:none;-webkit-user-select:none;user-select:none;isolation:isolate;grid-area:2/1;grid-template-rows:1fr;grid-template-columns:1fr 1fr;width:112px;height:112px;display:grid;position:relative}.console-controls .dpad:before{content:"";clip-path:polygon(32% 0,68% 0,68% 32%,100% 32%,100% 68%,68% 68%,68% 100%,32% 100%,32% 68%,0 68%,0 32%,32% 32%);pointer-events:none;z-index:-1;background:linear-gradient(140deg,#5b6b80,#27364b 35%,#142137);position:absolute;inset:2px;box-shadow:inset 0 2px #9cabb766}.console-controls .dpad:after{content:"";pointer-events:none;background:#152339;border:1px solid #64768b;border-radius:50%;width:19px;height:19px;position:absolute;top:calc(50% - 9.5px);left:calc(50% - 9.5px);box-shadow:inset 0 2px 3px #020a13}.console-controls .dpad button[data-input]{width:auto;min-width:44px;height:100%;min-height:44px;box-shadow:none;color:#e1d6b7;touch-action:none;background:0 0;border:0;border-radius:0;grid-area:auto;place-self:stretch stretch;padding:0;font-size:19px;transform:none}.console-controls .dpad button.pressed{color:#fff4ba;text-shadow:0 0 9px #e6bc72;filter:brightness(1.3);background:#e4bd7610}.console-controls .action-buttons{grid-area:2/2;grid-template-columns:1fr 1fr;align-items:center;gap:8px;width:124px;height:112px;display:grid}.console-controls .action-buttons button{touch-action:none;letter-spacing:0;border:2px solid #e0c697;border-radius:50%;width:58px;min-width:44px;height:58px;min-height:44px;padding:5px 0;position:relative;box-shadow:inset 0 2px #fff6,0 4px #775d42,0 7px 10px #0007}.console-controls .action-buttons b{font-size:23px;line-height:25px;display:block}.console-controls .action-buttons span{letter-spacing:.07em;font-size:8px;line-height:10px;display:block}.console-controls .action-primary{color:#24263c;background:linear-gradient(#ffe6ad,#dcb06b);top:-12px}.console-controls .action-secondary{color:#14293b;background:linear-gradient(#a7cdd5,#6195ad);top:12px;border-color:#c1e0e6!important;box-shadow:inset 0 2px #fff6,0 4px #315b75,0 7px 10px #0007!important}.console-controls .action-buttons button.pressed{filter:brightness(1.25);transform:translateY(2px);box-shadow:inset 0 1px #fff6,0 2px #4c5362!important}.console-controls .seat-1 .action-primary{color:#163b50;background:linear-gradient(#b7eef1,#68bbc9);border-color:#d5fbff;box-shadow:inset 0 2px #fff6,0 4px #315b75,0 7px 10px #0007}@media (width<=600px) and (orientation:portrait){.game-stage{grid-template-rows:44px minmax(0,1fr) 150px}.console-controls{gap:12px;padding-bottom:12px}.console-controls:after{content:"TURN PHONE FOR WIDE PLAY";color:#92a8bd;letter-spacing:.13em;font-size:8px;position:absolute;bottom:0}[data-players="2"] .game-stage{grid-template-rows:44px minmax(0,1fr) 184px}[data-players="2"] .console-controls{flex-direction:row;gap:16px;display:flex}[data-players="2"] .console-controls .controller{grid-template-rows:14px 88px 52px;grid-template-columns:112px;gap:3px;width:112px}[data-players="2"] .console-controls .dpad{justify-self:center;width:88px;height:88px}[data-players="2"] .console-controls .action-buttons{grid-area:3/1;gap:8px;width:112px;height:52px}[data-players="2"] .console-controls .action-buttons button{width:52px;height:52px;top:0}}@media (orientation:landscape) and (height<=600px){.game-stage,[data-players="2"] .game-stage{grid-template-rows:40px minmax(0,1fr);grid-template-columns:112px minmax(0,1fr) 112px;gap:6px;min-height:0}.console-controls{display:contents!important}[data-players="1"] .console-controls .controller.seat-0{display:contents}[data-players="1"] .console-controls .controller.seat-0>.seat-label{display:none}[data-players="1"] .console-controls .dpad{grid-area:2/1;place-self:center}[data-players="1"] .console-controls .action-buttons{grid-area:2/3;place-self:center;gap:8px;width:112px;height:112px}[data-players="1"] .console-controls .action-buttons button{width:52px;height:56px}[data-players="2"] .console-controls .controller{grid-area:2/1;grid-template-rows:14px 88px 52px;grid-template-columns:112px;align-self:center;gap:3px;width:112px;display:grid}[data-players="2"] .console-controls .controller.seat-1{grid-column:3}[data-players="2"] .console-controls .dpad{grid-area:2/1;justify-self:center;width:88px;height:88px}[data-players="2"] .console-controls .action-buttons{grid-area:3/1;gap:8px;width:112px;height:52px}[data-players="2"] .console-controls .action-buttons button{width:52px;height:52px;top:0}}@media (prefers-reduced-motion:reduce){.console-controls .action-buttons button.pressed{transform:none}}@media (hover:hover) and (pointer:fine){.console-controls{display:none!important}.game-stage,[data-players="2"] .game-stage{grid-template-rows:44px minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.play-header{grid-column:1}.arena-wrap{grid-area:2/1}}.display-help{display:none}@media (pointer:coarse){.display-help{text-align:left;color:#dbe7ea;background:#111f34;border:1px solid #5a7188;border-radius:3px;grid-column:1/-1;margin:12px 0;padding:10px 12px;font-size:12px;line-height:1.45;display:block}.display-help strong{color:#ffe1a0;margin-bottom:3px;display:block}.display-help p{margin:0}}@media (pointer:coarse) and (orientation:landscape) and (height<=600px){.game-stage,[data-players="2"] .game-stage{grid-template-rows:minmax(0,1fr);grid-template-columns:112px minmax(0,1fr) 112px}.arena-wrap{grid-area:1/2}.play-header{pointer-events:none;position:absolute;inset:0}.play-header>*{pointer-events:auto;position:absolute}.play-header .wordmark{left:max(8px,env(safe-area-inset-left));top:max(4px,env(safe-area-inset-top));font-size:17px;line-height:20px}.play-header .round-status{left:max(8px,env(safe-area-inset-left));top:calc(max(4px,env(safe-area-inset-top)) + 24px);gap:2px;width:112px}.play-header #wave-name,.play-header #glow-count{letter-spacing:0;font-size:9px}.play-header #pause,.play-header #exit{top:max(4px,env(safe-area-inset-top));width:52px;min-width:44px;min-height:44px;padding:0;font-size:9px}.play-header #exit{right:max(8px,env(safe-area-inset-right))}.play-header #pause{right:calc(max(8px,env(safe-area-inset-right)) + 58px)}[data-players="1"] .console-controls .dpad,[data-players="1"] .console-controls .action-buttons,[data-players="2"] .console-controls .controller{grid-row:1;align-self:end}.game-menu{padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}#app[data-screen=paused] .menu-inner{grid-template-columns:100px minmax(0,1fr);gap:4px 16px;width:100%;max-width:660px;padding:12px;display:grid}#app[data-screen=paused] .festly-logo{grid-area:1/1;justify-self:center;width:78px;height:28px}#app[data-screen=paused] .release{letter-spacing:.1em;grid-area:2/1/4;align-self:start;margin:0;font-size:8px;line-height:1.5}#app[data-screen=paused] h2{grid-area:1/2;margin:0;font-size:26px;line-height:28px}#app[data-screen=paused] .result-copy{grid-area:2/2;margin:0;font-size:12px;line-height:18px}#app[data-screen=paused] .primary{grid-area:3/2;min-height:44px;margin:3px 0;font-size:16px}#app[data-screen=paused] .control-hint{grid-area:4/1/auto/-1;margin:3px 0;font-size:10px;line-height:1.4}#app[data-screen=paused] .display-help,#app[data-screen=paused] .sound-controls,#app[data-screen=paused] details,#app[data-screen=paused] .quiet{grid-column:1/-1}.display-help{margin:5px 0;padding:7px 10px;font-size:11px}#app[data-screen=paused] .sound-controls{margin:5px 0}}@media (pointer:coarse) and (orientation:landscape) and (height<=260px){[data-players="2"] .console-controls .controller{grid-template-rows:88px 52px}[data-players="2"] .console-controls .controller>.seat-label{display:none}[data-players="2"] .console-controls .dpad{grid-row:1}[data-players="2"] .console-controls .action-buttons{grid-row:2}}@media (display-mode:standalone),(display-mode:fullscreen){.display-help{display:none}}.game-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.game-options label{min-width:0}.game-options select{width:100%}[data-players="1"] .pilot-1{display:none}.story-scene{color:#eee5cf;background:#101a2c;border:1px solid #9d9274;width:min(880px,100vw - 28px);max-height:calc(100dvh - 28px);padding:0;overflow:auto;box-shadow:0 20px 100px #000b}.story-scene::backdrop{background:#050b19ee}.story-scene[open]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;display:grid}.story-scene canvas{width:100%;height:auto;image-rendering:pixelated;display:block}.story-copy{padding:22px}.story-copy h2{color:#ffdfa2;font-size:clamp(20px,3vw,30px);line-height:1.15}.story-copy p{font-size:14px;line-height:1.5}.story-actions{gap:10px;display:grid}.story-actions button{min-height:44px;padding:10px}.story-scene .primary{font-size:13px}@media (orientation:portrait){.story-scene[open]{grid-template-columns:1fr}.story-scene canvas{width:auto;max-width:100%;max-height:32dvh;margin:auto}.story-copy{padding:16px}.story-copy h2{margin:8px 0}.story-copy p{margin:9px 0}}@media (orientation:landscape) and (height<=450px){.story-copy{padding:12px}.story-copy h2{margin:8px 0;font-size:19px}.story-copy p{margin:7px 0;font-size:12px}.story-copy .release{font-size:8px}.story-actions{gap:6px}.story-actions button{min-height:42px;padding:7px}}#app .story-scene .story-actions .primary{grid-area:auto;width:100%;margin:0}#app .story-scene .release{grid-area:auto}.console-controls .dpad:before{filter:drop-shadow(0 3px #020912);background:linear-gradient(145deg,#718598 0,#344859 25%,#172c3e 60%,#0b1a2b 100%);box-shadow:inset 0 2px #d1e6ed99}.console-controls .dpad:after{background:radial-gradient(circle at 35% 28%,#345367,#122332 65%);border:2px solid #6f929d;width:22px;height:22px;top:calc(50% - 11px);left:calc(50% - 11px);box-shadow:0 0 0 3px #0b192655,inset 0 2px 3px #040c16}.console-controls .dpad button[data-input]{color:#c9e7e8;text-shadow:0 2px #071322;font-size:22px}.console-controls .dpad button.pressed{color:#fff0b4;text-shadow:0 0 10px #f8d379;background:radial-gradient(#efd28a40,#0000 70%)}.console-controls .action-buttons button{border-width:2px;outline:3px solid #081525;box-shadow:inset 0 2px #fff9,inset 0 -3px #0003,0 4px #725635,0 6px 0 2px #020a15}.console-controls .action-primary{color:#192237;background:radial-gradient(circle at 35% 20%,#ffe7aa,#eac274 50%,#b77d3e);border-color:#fce0a7}.console-controls .action-secondary{color:#102b3b;background:radial-gradient(circle at 35% 20%,#abebe2,#69b9b6 55%,#376b83);border-color:#b4e7e2!important;box-shadow:inset 0 2px #efffff99,inset 0 -3px #0003,0 4px #2b5669,0 6px 0 2px #020a15!important}.console-controls .action-buttons b{text-shadow:0 1px #fff6;font-size:25px}.console-controls .action-buttons span{letter-spacing:.04em;font-size:9px;font-weight:900;line-height:11px}.console-controls .action-buttons button.pressed{filter:brightness(1.12);box-shadow:inset 0 3px 5px #0005,0 2px #163044!important}.console-controls button:focus-visible{outline-offset:4px;outline:3px solid #fff2b8}.score-dialog{color:#e4edf1;background:#102039;border:1px solid #6d879a;border-radius:12px;width:min(560px,100% - 24px);max-height:85dvh;padding:24px;overflow:auto;box-shadow:0 18px 80px #000b}.score-dialog::backdrop{background:#020919cf}.score-dialog h2{margin:0 70px 15px 0;font-size:24px}.score-dialog p{font-size:14px;line-height:1.5}.score-close{position:absolute;top:16px;right:16px}.score-tabs{gap:8px;display:flex}.score-tabs button{flex:1}.score-tabs [aria-pressed=true]{color:#152338;background:#e6c685}.score-list{padding:0;list-style:none}.score-list li{border-bottom:1px solid #3c5368;grid-template-columns:30px 1fr auto;gap:14px;padding:12px 4px;display:grid}.score-list li:first-child{color:#ffe1a0}.score-submit{border-top:1px solid #526377;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin-top:20px;padding-top:14px;display:grid}.score-submit label{font-size:13px}.score-submit input{color:#fff;text-transform:uppercase;background:#09162a;border:1px solid #7f9daf;border-radius:4px;width:100%;min-height:44px;padding:10px;font-size:18px;display:block}.score-submit p{grid-column:1/-1;margin:0}.score-note{color:#a8bdcc}.score-dialog a{color:#afe4d5}.scores-menu-button{color:#d5e9df;background:#182e43;border-color:#5a7d89;width:100%;margin:8px 0}.score-retry{color:#e3f3ec;background:#18334a;border-color:#6a91a3;margin:0 0 12px;padding:8px 14px}.crew-link{color:#9fddd5;text-underline-offset:4px;align-items:center;min-height:44px;font-size:12px;display:inline-flex}.wordmark{letter-spacing:.02em;max-width:130px;font-size:clamp(12px,2.2vw,21px);line-height:1.05}.menu-inner h1{min-width:0;height:118px;margin:8px 0;text-shadow:none!important;background:url(/art/flap-fights-title.webp) 50%/contain no-repeat!important;font-size:0!important;line-height:0!important}.menu-inner .subtitle{letter-spacing:.12em;font-size:11px}.game-menu{background:linear-gradient(#07112285,#071122e0),url(/art/flap-fights-key-art.webp) 50%/cover fixed}.story-scene{background:#0d1827;border:1px solid #bd9d64;border-radius:9px;width:min(1180px,100vw - 20px);max-height:calc(100dvh - 20px)}.story-scene[open]{grid-template-columns:minmax(0,2.5fr) minmax(210px,1fr)}.story-visual{background:#050d18;align-self:center;min-width:0;position:relative}.story-scene .story-visual canvas{image-rendering:auto;aspect-ratio:16/9;width:100%;height:auto;max-height:none}.story-caption{text-align:center;color:#fff0c9;letter-spacing:.045em;background:#07121bdd;border-radius:4px;margin:0;padding:9px 12px;font-size:clamp(10px,1.3vw,17px);font-weight:800;position:absolute;bottom:3%;left:3%;right:3%}.story-copy h2{margin:8px 0 12px}.story-copy .release{letter-spacing:.13em;font-size:9px}.story-copy p{font-size:13px}.story-copy .story-timer{color:#94bfc4;min-height:15px;font-size:11px}.story-actions{gap:9px}.story-actions button{font-size:11px}.scene-resume{color:#ffe0a0;background:#102c3b;padding:12px 20px;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 25px #000b}.scene-resume:active{transform:translate(-50%,-50%)}.story-replays{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.story-replays button{flex:1;min-height:44px;padding:7px;font-size:10px}.camp-record{color:#94d5cd;grid-column:1/-1;margin:6px 0;font-size:11px}.save-transfer{grid-column:1/-1}.save-transfer button{margin:5px 5px 0 0;padding:8px 12px;font-size:11px}.save-transfer input{max-width:100%}.save-transfer p{font-size:12px;line-height:1.5}@media (orientation:landscape) and (height<=600px){#app[data-screen=title] .menu-inner h1{height:75px!important}.story-scene[open]{grid-template-columns:minmax(0,1.65fr) minmax(190px,1fr)}.story-copy{padding:12px}.story-copy p{font-size:11px}.story-copy h2{font-size:20px}.story-caption{padding:6px;font-size:10px}.story-scene{max-height:calc(100dvh - 12px)}}@media (orientation:portrait){.story-scene[open]{grid-template-columns:1fr}.story-scene .story-visual canvas{width:100%;max-height:none}.story-caption{font-size:11px}.story-copy{padding:15px}.menu-inner h1{height:106px!important}.story-copy h2{font-size:24px}.story-actions{grid-template-columns:1fr 1fr}.story-copy .story-timer{margin:8px 0}}@media (pointer:coarse) and (orientation:landscape) and (height<=600px){.play-header .wordmark{max-width:110px;font-size:13px}.play-header .round-status{width:110px}.play-header #wave-name,.play-header #glow-count{font-size:8px}}@media (width<=600px),(orientation:landscape) and (height<=600px){.game-menu{padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.menu-inner{width:min(100%,420px);padding:10px 12px}.menu-inner .festly-logo{object-fit:contain;width:66px;height:22px;max-height:22px}.menu-inner .release{letter-spacing:.1em;margin:4px 0;font-size:8px}.menu-inner h2{margin:8px 0;font-size:24px;line-height:1.2}.menu-inner .result-copy{margin:8px 0;font-size:13px;line-height:1.4}.menu-inner .objective{margin:6px 0;font-size:12px;line-height:1.4}.menu-inner .primary{min-height:44px;margin:6px 0;font-size:15px}.menu-inner .game-options{gap:6px 8px;margin:6px 0}.menu-inner .game-options label{gap:3px;font-size:10px}.menu-inner .game-options select{min-height:44px;padding:7px 5px;font-size:11px}.menu-inner .control-hint{margin:6px 0;font-size:10px;line-height:1.5}.menu-inner .sound-controls{gap:10px;margin:8px 0}.menu-inner .scores-menu-button{min-height:44px;margin:4px 0;font-size:11px}.menu-inner details{padding:0;font-size:12px}.menu-inner summary{align-content:center;min-height:44px;padding:10px 0}.menu-inner .display-help{margin:6px 0;padding:8px;font-size:11px}.menu-inner .display-help p{margin:4px 0;line-height:1.4}.score-dialog{width:min(440px,100vw - 20px);max-height:calc(100dvh - 20px);padding:14px}.score-dialog h2{font-size:20px}.story-copy{padding:10px 12px}.story-copy h2{margin:5px 0 7px;font-size:20px}.story-copy p{margin:6px 0;font-size:12px;line-height:1.4}.story-copy .story-timer{margin:6px 0;font-size:10px}.story-actions{gap:8px}#app .story-scene .story-actions button{letter-spacing:.06em;min-height:44px;padding:8px;font-size:11px}}@media (width<=600px) and (orientation:portrait){#app[data-screen=title] .menu-inner{grid-template-columns:72px minmax(0,1fr);align-items:center;column-gap:8px;display:grid}#app[data-screen=title] .menu-inner>*{grid-column:1/-1}#app[data-screen=title] .festly-logo{grid-area:1/1;justify-self:center}#app[data-screen=title] .release{grid-area:1/2}#app[data-screen=title] .menu-inner h1{grid-area:2/2;margin:4px 0 0;height:58px!important}#app[data-screen=title] .subtitle{grid-area:3/2;margin:3px 0 5px;font-size:9px}#app[data-screen=title] .hero{grid-area:2/1/4;width:72px;height:76px;margin:0 auto}#app[data-screen=title] .hero img{width:112px;height:98px;top:-8px;left:-20px}.story-scene{width:min(420px,100vw - 20px)}.story-scene .story-visual canvas{object-fit:contain;width:100%;height:auto;max-height:28dvh}.story-caption{padding:5px 7px;font-size:10px}}@media (orientation:landscape) and (height<=600px){#app[data-screen=title] .menu-inner{grid-template-columns:120px minmax(0,1fr);align-items:center;gap:0 14px;width:min(100%,680px);max-width:680px}#app[data-screen=title] .festly-logo{grid-area:1/1;justify-self:center}#app[data-screen=title] .release{grid-area:2/1}#app[data-screen=title] .menu-inner h1{grid-area:3/1;margin:0;height:48px!important}#app[data-screen=title] .subtitle{grid-area:4/1;margin:3px 0;font-size:8px}#app[data-screen=title] .hero{grid-area:5/1;width:72px;height:64px;margin:0 auto}#app[data-screen=title] .hero img{width:104px;height:91px;top:-10px;left:-16px}#app[data-screen=title] .objective{grid-area:1/2/3}#app[data-screen=title] .game-options{grid-area:3/2/5}#app[data-screen=title] .primary{grid-area:5/2}#app[data-screen=title] .control-hint{grid-area:6/1/auto/-1}.story-scene[open]{grid-template-columns:minmax(0,1.4fr) minmax(220px,1fr)}.story-scene{width:min(840px,100vw - 20px)}.story-copy .release{font-size:8px}.story-copy h2{font-size:19px}.story-actions{grid-template-columns:1fr 1fr}}
