.levels-view{color:var(--ff-ink);font-family:var(--ff-font-body);position:relative}.levels-stage{position:absolute;inset:0;overflow:hidden}.levels-bg,.levels-shade{width:100%;height:100%;position:absolute;inset:0}.levels-bg{object-fit:cover;filter:blur(6px)saturate(1.05);transform:scale(1.08)}.levels-shade{background:linear-gradient(#27140980,#2714094d 40%,#27140999)}.levels-shell{gap:var(--ff-space-3);max-width:1180px;height:100%;padding:var(--ff-space-4) var(--ff-space-6) var(--ff-space-4);flex-direction:column;margin:0 auto;display:flex;position:relative}.levels-header{align-items:center;gap:var(--ff-space-3);grid-template-columns:1fr auto 1fr;display:grid}.levels-header>.ff-btn{justify-self:start}.levels-heading{flex-direction:column;align-items:center;gap:2px;display:flex}.levels-title{font-size:var(--ff-text-2xl);text-align:center}.levels-world-stars{color:#ffefc6;font-family:var(--ff-font-display);font-size:var(--ff-text-md);text-shadow:0 2px #28140899;align-items:center;gap:4px;margin:0;font-weight:700;display:inline-flex}.levels-world-stars svg{color:#ffc531;width:18px;height:18px}.levels-header-actions{justify-content:flex-end;gap:var(--ff-space-2);display:flex}.levels-header-actions .ff-btn{position:relative}.levels-badge{border-radius:50%;place-items:center;width:20px;height:20px;display:grid;position:absolute;top:-6px;right:-6px;box-shadow:0 0 0 2px #fff}.levels-badge svg{width:12px;height:12px}.levels-badge.is-new{background:var(--ff-danger-bottom);width:14px;height:14px;top:-4px;right:-4px}.levels-badge.is-done{background:var(--ff-success);color:#fff}.levels-badge.is-locked{color:#fff;background:#9b8664}.levels-worlds{gap:var(--ff-space-2);scrollbar-width:none;padding:2px;display:flex;overflow-x:auto}.levels-world{border-radius:var(--ff-radius-pill);min-height:40px;color:var(--ff-ink-soft);font-family:var(--ff-font-display);font-size:var(--ff-text-sm);cursor:pointer;background:#fff8e4e0;border:2px solid #ffecbe8c;flex:none;align-items:center;gap:8px;padding:3px 12px 3px 3px;font-weight:700;display:inline-flex}.levels-world img{object-fit:cover;border-radius:50%;width:32px;height:32px;box-shadow:0 0 0 2px #fff}.levels-world>svg{width:18px;height:18px;margin-left:8px}.levels-world small{color:var(--ff-ink-muted);font-size:var(--ff-text-xs);align-items:center;gap:2px;display:inline-flex}.levels-world small svg{color:#e3a91c;width:13px;height:13px}.levels-world.is-active{border-color:var(--ff-gold);box-shadow:0 3px 0 var(--ff-gold-deep);color:var(--ff-ink);background:linear-gradient(#fff1c4,#ffd97a)}.levels-world:disabled{cursor:default;opacity:.7}.levels-strip{scrollbar-width:thin;scrollbar-color:#e5aa42 transparent;gap:6px;padding:6px 4px 8px;scroll-padding-inline:40%;display:flex;position:relative;overflow-x:auto}.levels-node{border-radius:var(--ff-radius-md);background:var(--ff-surface);width:44px;height:50px;color:var(--ff-ink);font-family:var(--ff-font-display);font-size:var(--ff-text-sm);cursor:pointer;border:2px solid #e6c88c;flex:none;align-content:center;place-items:center;gap:1px;padding:0;font-weight:700;display:grid;position:relative;box-shadow:0 2px #d1ae6b}.levels-node.is-done{background:linear-gradient(#fff6d8,#ffe7a6)}.levels-node.is-current{border-color:var(--ff-focus);background:linear-gradient(#e9f6ff,#c8e8ff);transform:translateY(-2px);box-shadow:0 3px #0f5f96,0 0 0 3px #1f7fc440}.levels-node.is-locked{box-shadow:none;color:#86704c;cursor:default;background:#f0e2c4b3}.levels-node.is-boss{border-color:#b3261e}.levels-node-boss{color:#b3261e;width:20px;height:20px}.levels-node-stars{gap:2px;display:flex}.levels-node-stars b,.levels-node-stars em{border-radius:50%;width:6px;height:6px}.levels-node-stars b{background:#f0a91a;box-shadow:0 0 0 1px #b8770f}.levels-node-stars em{background:#e7d4ad}.levels-card{gap:var(--ff-space-5);min-height:0;padding:var(--ff-space-4);touch-action:pan-y;animation:ff-fade-in var(--ff-dur) var(--ff-ease);flex:1;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);display:grid}.levels-preview{border-radius:var(--ff-radius-lg);min-height:0;box-shadow:0 0 0 2px var(--ff-gold-deep), inset 0 0 30px #00000026;background:#6f9a3c;border:3px solid #fff;position:relative;overflow:hidden}.levels-preview img,.levels-preview canvas{width:100%;height:100%;position:absolute;inset:0}.levels-preview img{object-fit:cover}.levels-boss-tag{border-radius:var(--ff-radius-pill);color:#fff;font-family:var(--ff-font-display);font-size:var(--ff-text-xs);background:#b3261e;align-items:center;gap:4px;padding:4px 10px;font-weight:700;display:inline-flex;position:absolute;top:8px;left:8px}.levels-boss-tag svg{width:14px;height:14px}.levels-info{flex-direction:column;min-height:0;display:flex}.levels-info-body{overscroll-behavior:contain;flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow-y:auto}.levels-name{font-family:var(--ff-font-display);font-size:var(--ff-text-xl);margin:0;font-weight:700;line-height:1.1}.levels-blurb{color:var(--ff-ink-soft);font-size:var(--ff-text-sm);margin:0;font-weight:600;line-height:1.35}.levels-threats{flex-wrap:wrap;gap:6px;display:flex}.levels-threat{border-radius:var(--ff-radius-pill);color:#8f2f22;font-family:var(--ff-font-display);font-size:var(--ff-text-xs);letter-spacing:.04em;background:#fbe3d8;align-items:center;gap:4px;padding:3px 10px 3px 6px;font-weight:700;display:inline-flex}.levels-threat svg{width:15px;height:15px}.levels-threat.is-theme{color:#fff;background:#b3261e;box-shadow:0 2px #7c1813}.levels-stars{gap:4px;display:flex}.levels-star svg{color:#e2cfa6;width:30px;height:30px}.levels-star.is-earned svg{color:#ffc531;filter:drop-shadow(0 2px #b8770f)}.levels-incomplete,.levels-record{color:var(--ff-ink-muted);font-family:var(--ff-font-display);font-size:var(--ff-text-md);align-items:center;gap:6px;margin:0;font-weight:700;display:inline-flex}.levels-record svg{color:#e06a1c;width:20px;height:20px}.levels-challenges{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.levels-challenges .ff-eyebrow{flex-basis:100%}.levels-challenge{border-radius:var(--ff-radius-pill);background:var(--ff-surface);min-height:36px;color:var(--ff-ink-soft);font-family:var(--ff-font-body);font-size:var(--ff-text-sm);cursor:pointer;border:2px dashed #d2b47a;align-items:center;gap:6px;padding:4px 12px 4px 8px;font-weight:700;display:inline-flex}.levels-challenge svg{width:16px;height:16px}.levels-challenge b{color:var(--ff-info);font-family:var(--ff-font-display)}.levels-challenge[aria-pressed=true]{border-style:solid;border-color:var(--ff-info);color:var(--ff-ink);background:#dff1ff}.levels-challenge[aria-pressed=true] svg{color:var(--ff-success)}.levels-play-row{align-items:center;gap:var(--ff-space-2);padding-top:var(--ff-space-2);flex:none;display:flex}.levels-play{flex:1}.levels-daily .ff-modal-body{min-width:min(420px,100vw - 48px)}.levels-daily-title{font-family:var(--ff-font-display);font-size:var(--ff-text-xl);align-items:center;gap:8px;margin:0;display:flex}.levels-daily-title svg{color:var(--ff-info)}.levels-daily-map{font-family:var(--ff-font-display);font-size:var(--ff-text-lg);margin:0;font-weight:700}.levels-daily-mods{flex-direction:column;gap:4px;margin:0;padding:0;font-weight:700;list-style:none;display:flex}.levels-daily-mods li,.levels-daily-reward,.levels-daily-locked{align-items:center;gap:8px;margin:0;display:flex}.levels-daily-mods svg,.levels-daily-reward svg,.levels-daily-locked svg{color:#e06a1c;flex:none;width:18px;height:18px}.levels-daily-reward{color:var(--ff-success);font-weight:700}.levels-daily-reward.is-done{color:var(--ff-ink-muted)}.levels-daily-actions{justify-content:flex-end;gap:var(--ff-space-2);margin-top:var(--ff-space-2);flex-wrap:wrap;display:flex}.levels-view.is-compact .levels-shell{gap:var(--ff-space-2);padding:var(--ff-space-2) var(--ff-space-4) var(--ff-space-3)}.levels-view.is-compact .levels-title{font-size:var(--ff-text-xl)}.levels-view.is-compact .levels-world-stars{font-size:var(--ff-text-sm)}.levels-view.is-compact .levels-world{min-height:34px}.levels-view.is-compact .levels-world img{width:26px;height:26px}.levels-view.is-compact .levels-strip{padding:4px 4px 6px}.levels-view.is-compact .levels-node{width:40px;height:44px}.levels-view.is-compact .levels-card{gap:var(--ff-space-4);padding:var(--ff-space-3)}.levels-view.is-compact .levels-blurb{display:none}.levels-view.is-compact .levels-name{font-size:var(--ff-text-lg)}.levels-view.is-compact .levels-star svg{width:24px;height:24px}.levels-view.is-compact .levels-play-row .ff-btn--lg{min-height:48px;font-size:var(--ff-text-lg)}.levels-view.is-narrow .levels-header-actions .ff-btn span{display:none}.battle-ui{--ink:var(--ff-ink);--gold:#c79236;color:var(--ink);font-family:var(--ff-font-body);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:14px;position:relative}.battle-ui [hidden]{display:none!important}.battle-ui button{font:inherit;color:var(--ink);cursor:pointer;touch-action:manipulation;background:linear-gradient(#fff8da,#efdcaa);border:2px solid #b98b43;border-radius:12px;padding:8px;box-shadow:0 3px #94652e}.battle-ui button:hover:enabled{filter:brightness(1.08)}.battle-ui button:active:enabled{transform:translateY(2px);box-shadow:0 1px #94652e}.battle-ui button:focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}.battle-ui button:disabled{cursor:default;filter:saturate(.45);opacity:.6}.battle-hud{top:0;left:0;right:var(--rail-width);pointer-events:auto;background:linear-gradient(#fff4cc,#edcf8f);border-bottom:3px solid #b68438;align-items:center;gap:clamp(6px,1.2vw,18px);height:6.3%;min-height:40px;padding:0 10px;display:flex;position:absolute;box-shadow:0 3px 8px #533c252a}.battle-hud button{border-radius:10px;place-items:center;min-width:40px;height:34px;margin-left:0;padding:0;display:inline-grid;box-shadow:0 2px #94652e}.battle-hud button svg{width:18px;height:18px}.battle-hud button:first-of-type{margin-left:auto}.battle-mode{font-family:var(--ff-font-display);font-size:var(--ff-text-xs);letter-spacing:.06em;text-transform:uppercase;color:#fff4d3;border-radius:var(--ff-radius-pill);background:#a57538;padding:5px 10px;font-weight:700}.battle-stat{border-radius:var(--ff-radius-pill);white-space:nowrap;font-family:var(--ff-font-display);background:#ffffff8c;align-items:center;gap:6px;padding:3px 12px 3px 6px;font-size:clamp(14px,1.35vw,20px);font-weight:700;line-height:1;display:inline-flex;box-shadow:inset 0 0 0 1px #96692d40}.battle-stat svg{width:1.15em;height:1.15em}.battle-stat b{color:var(--ff-ink);font-variant-numeric:tabular-nums}.battle-lives{color:var(--ff-lives)}.battle-money{color:#d99a1e}.battle-wave{color:var(--ff-wave)}.battle-rail{width:var(--rail-width);pointer-events:auto;background:linear-gradient(100deg,#f1d6a2,#fff5d5 12%,#f8e7bd);border-left:5px solid #bd8c42;flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-5px 0 12px #5c472b2b}.battle-rail-title{text-align:center;letter-spacing:1px;border-bottom:1px solid #d8b474;padding:12px 6px 8px;font-weight:900}.battle-rail-title small{letter-spacing:0;margin-top:5px;font-size:10px;font-weight:400;display:block}.battle-roster{overscroll-behavior:contain;touch-action:pan-y;flex:1;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:9px;min-height:0;padding:10px;display:grid;overflow-y:auto}.battle-roster button{touch-action:pan-y;flex-direction:column;align-items:center;min-width:0;min-height:108px;padding:5px;display:flex;position:relative}.battle-roster img{object-fit:contain;filter:drop-shadow(0 3px 2px #8f613339);pointer-events:none;width:100%;height:68px}.battle-roster span{overflow-wrap:anywhere;font-size:11px;font-weight:700}.battle-roster strong{color:#477b45;font-size:12px}.battle-roster small{font-size:8px}.battle-roster .is-locked img{filter:grayscale();opacity:.6}.battle-roster .is-placing{outline:3px solid var(--ff-focus)}.battle-wave-controls{background:#ead1a1;border-top:2px solid #ceaa6d;gap:8px;padding:10px;display:flex}.battle-wave-controls button{min-height:44px;font-family:var(--ff-font-display);font-size:var(--ff-text-sm);justify-content:center;align-items:center;gap:6px;font-weight:700;display:inline-flex}.battle-wave-controls button svg{flex:none;width:16px;height:16px}.battle-speed{flex:0 0 30%}.battle-ui .battle-play{background:linear-gradient(var(--ff-go-top), var(--ff-go-bottom));box-shadow:0 3px 0 var(--ff-go-edge);color:#fff;text-shadow:0 2px #1e460c8c;white-space:nowrap;border-color:#ffdd76;flex:1;padding:6px}.battle-play-text{flex-direction:column;align-items:flex-start;line-height:1.1;display:flex}.battle-detail{overscroll-behavior:contain;flex:1;min-height:0;padding:10px;overflow-y:auto}.battle-detail>button{width:100%;margin:3px 0}.battle-back{font-size:11px!important}.battle-selected{text-align:center}.battle-selected img{object-fit:contain;max-width:100%;height:100px}.battle-selected h3{margin:0;font-size:18px}.battle-selected p{margin:5px 0;font-size:11px}.battle-upgrades{flex-direction:column;gap:10px;margin:10px 0;display:flex}.battle-upgrades button{text-align:left;background:linear-gradient(#e5f1cf,#b8d78e);border-color:#85a455;flex-direction:column;align-items:start;gap:4px;display:flex;box-shadow:0 3px #64833e}.battle-upgrades strong{font-size:12px}.battle-upgrades span{font-size:11px}.battle-upgrades small{font-size:10px;line-height:1.3}.battle-upgrades b{align-self:end}.battle-pips{letter-spacing:3px;color:#6d8f39}.battle-sell{background:linear-gradient(#f7d7b5,#e6b68d)!important}.battle-abilities{bottom:8px;left:10px;right:calc(var(--rail-width) + 10px);pointer-events:auto;gap:8px;max-width:max-content;padding:4px 2px 5px;display:flex;position:absolute;overflow-x:auto}.battle-abilities button{background:linear-gradient(90deg, #fff3cf var(--cooldown), #d9c89f var(--cooldown));border-radius:var(--ff-radius-pill);flex-shrink:0;grid-template-rows:auto auto;grid-template-columns:38px auto;gap:0 6px;min-width:114px;max-width:150px;padding:4px 10px 4px 4px;display:grid}.battle-abilities img{object-fit:contain;grid-row:span 2;width:38px;height:38px}.battle-abilities span{align-self:end;font-size:10px;font-weight:700}.battle-abilities strong{color:#548841;align-self:start;font-size:10px}.battle-abilities .is-active{border-color:#75b5b2;box-shadow:0 0 8px #75b5b2}.battle-pause{pointer-events:auto;color:var(--ink);text-align:center;background:linear-gradient(#fff5d8,#edd3a1);border:5px solid #bd8c42;border-radius:24px;width:70%;max-width:340px;padding:28px;box-shadow:0 12px 35px #291e3270}.battle-pause::backdrop{background:#27233088}.battle-pause h2{letter-spacing:2px;margin:0 0 14px}.battle-pause p{font-size:13px;line-height:1.5}.battle-pause button{width:100%;margin-top:12px;padding:12px;display:block}.battle-compact{font-size:11px}.battle-compact .battle-hud{gap:7px;padding:0 6px}.battle-compact .battle-mode{padding:4px 8px;font-size:10px}.battle-compact .battle-rail{border-left-width:3px}.battle-compact .battle-rail-title{padding:6px 3px;font-size:12px}.battle-compact .battle-rail-title small{font-size:8px}.battle-compact .battle-roster{gap:6px;padding:6px}.battle-compact .battle-roster button{border-radius:9px;min-height:70px;padding:3px}.battle-compact .battle-roster img{height:37px}.battle-compact .battle-roster span{font-size:8px}.battle-compact .battle-roster strong{font-size:10px}.battle-compact .battle-wave-controls{gap:4px;padding:5px}.battle-compact .battle-wave-controls button{min-height:40px;padding:4px;font-size:12px}.battle-compact .battle-detail{padding:5px}.battle-compact .battle-selected img{height:52px}.battle-compact .battle-selected h3{font-size:13px}.battle-compact .battle-selected p{font-size:9px}.battle-compact .battle-upgrades{gap:7px}.battle-compact .battle-upgrades button{padding:5px}.battle-compact .battle-upgrades strong{font-size:10px}.battle-compact .battle-upgrades span,.battle-compact .battle-upgrades small{font-size:9px}.battle-compact .battle-pips{letter-spacing:1px}.battle-compact .battle-abilities{gap:5px;bottom:5px;left:5px}.battle-compact .battle-abilities button{background:conic-gradient(#ffcf4a var(--cooldown), #785a3273 var(--cooldown));border:0;border-radius:50%;place-items:center;width:46px;min-width:0;height:46px;padding:0;display:grid;position:relative;box-shadow:0 2px #94652e}.battle-compact .battle-abilities button:before{content:"";background:#fff3cf;border-radius:50%;position:absolute;inset:4px}.battle-compact .battle-abilities img{grid-row:auto;width:34px;height:34px;position:relative}.battle-compact .battle-abilities span{display:none}.battle-compact .battle-abilities strong{border-radius:var(--ff-radius-pill);background:var(--ff-surface-raised);padding:1px 5px;font-size:9px;line-height:1.2;position:absolute;bottom:-4px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #d7b46e}.battle-compact .battle-pause{padding:15px}.is-muted{opacity:.5}.battle-ui[data-tutorial=true] .battle-abilities{display:none}.battle-ui[hidden]{display:none!important}.battle-abilities button:disabled{opacity:1;filter:none}.battle-skill{background:#f2e2c0;border:1px solid #c5a36d;border-radius:12px;padding:9px;font-size:11px;line-height:1.4}.battle-skill p{margin:4px 0 8px}.battle-skill button{background:linear-gradient(#b5d9e1,#81b2bd);width:100%}.battle-compact .battle-skill{padding:6px;font-size:9px}.battle-narrow .battle-roster{grid-template-columns:1fr}.battle-narrow .battle-roster span{font-size:10px}.battle-narrow .battle-roster img{height:40px}.battle-narrow .battle-roster button{min-height:73px}.battle-narrow .battle-hud{gap:4px;padding:0 4px}.battle-narrow .battle-wave{font-size:10px}.battle-narrow .battle-hud button{min-width:36px;padding:0}.battle-narrow .battle-rail-title{font-size:10px}.battle-narrow .battle-wave-controls{flex-direction:column}.battle-narrow .battle-rail-title small{display:none}.battle-ui .battle-perks{width:100%;box-shadow:none;background:0 0;border:0;border-bottom:1px solid #d8b474;border-radius:0;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px;max-height:72px;padding:6px 8px;display:flex;overflow-y:auto}.battle-ui .battle-perks:active:enabled{box-shadow:none;background:#0000000d;transform:none}.battle-perks:after{content:"›";opacity:.55;margin-left:auto;font-size:18px;font-weight:900;line-height:1}.battle-pause-cards{text-align:left;margin:4px 0 6px}.battle-pause-cards h3{letter-spacing:1px;text-align:center;margin:0 0 6px;font-size:13px}.battle-pause-cards ul{overscroll-behavior:contain;flex-direction:column;gap:5px;max-height:40vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.battle-pause-cards li{border:2px solid var(--rarity);background:#fff8e2;border-radius:10px;grid-template-columns:32px 1fr;align-items:center;gap:0 8px;padding:4px 6px;display:grid}.battle-pause-card-icon{color:#8d6721;grid-row:span 2;place-items:center;width:32px;height:32px;font-size:20px;display:grid}.battle-pause-card-icon img{object-fit:contain;width:32px;height:32px}.battle-pause-cards strong{font-size:12px}.battle-pause-cards small{font-size:11px;line-height:1.3}.battle-ui .battle-pause{max-height:92%;overflow-y:auto}.battle-perk{border:2px solid var(--rarity);background:#fff8e2;border-radius:8px;place-items:center;width:28px;height:28px;font-size:15px;line-height:1;display:grid;position:relative}.battle-perk img{object-fit:contain;pointer-events:none;width:22px;height:22px}.battle-perk b{background:var(--ff-ink);color:#fff4d3;border-radius:6px;padding:1px 3px;font-size:9px;position:absolute;bottom:-6px;right:-5px}.battle-cards{pointer-events:auto;color:var(--ink);text-align:center;background:linear-gradient(#fff5d8,#edd3a1);border:5px solid #bd8c42;border-radius:24px;width:min(680px,92%);padding:22px 24px 14px;box-shadow:0 12px 35px #291e3270}.battle-cards::backdrop{background:#27233099}.battle-cards h2{letter-spacing:2px;margin:0 0 6px}.battle-cards-intro{margin:0 0 10px;font-size:13px;line-height:1.4}.battle-card-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:10px;display:grid}.battle-ui .battle-card{border:3px solid var(--rarity);background:linear-gradient(#fffdf3,#f6e6bf);border-radius:16px;flex-direction:column;align-items:center;gap:6px;min-height:210px;padding:12px 10px;display:flex;position:relative;box-shadow:0 4px #94652e,inset 0 0 0 3px #fff8}.battle-ui .battle-card:hover:enabled{filter:brightness(1.05);transform:translateY(-3px)}.battle-card-rarity{letter-spacing:1px;text-transform:uppercase;background:var(--rarity);color:#3d2a17;border-radius:8px;padding:2px 8px;font-size:10px;font-weight:900}.battle-card-icon{color:#8d6721;place-items:center;width:64px;height:64px;font-size:40px;display:grid}.battle-card-icon img{object-fit:contain;filter:drop-shadow(0 3px 2px #8f613339);width:64px;height:64px}.battle-card strong{font-size:15px}.battle-card small{font-size:12px;line-height:1.35}.battle-card em{color:#477b45;font-size:11px;font-style:normal;font-weight:700}.battle-card kbd{opacity:.55;font:700 10px Arial,sans-serif;position:absolute;top:6px;left:8px}.battle-cards-keys{opacity:.6;margin-top:10px;font-size:10px;display:block}.battle-compact .battle-cards{padding:12px 12px 8px}.battle-compact .battle-card{gap:3px;min-height:150px;padding:8px 6px}.battle-compact .battle-card-icon,.battle-compact .battle-card-icon img{width:40px;height:40px;font-size:26px}.battle-compact .battle-card strong{font-size:12px}.battle-compact .battle-card small{font-size:10px}.battle-compact .battle-perk{width:22px;height:22px;font-size:12px}.battle-compact .battle-perk img{width:17px;height:17px}.battle-compact .battle-pause-cards li{grid-template-columns:24px 1fr;padding:3px 5px}.battle-compact .battle-pause-card-icon,.battle-compact .battle-pause-card-icon img{width:24px;height:24px;font-size:15px}.battle-compact .battle-pause-cards strong{font-size:11px}.battle-compact .battle-pause-cards small{font-size:10px}.battle-compact .battle-pause button{margin-top:8px;padding:8px}.battle-narrow .battle-card-list{grid-template-columns:1fr;gap:6px}.battle-narrow .battle-card{text-align:left;flex-flow:wrap;min-height:0}.battle-narrow .battle-card small{flex-basis:100%}.battle-narrow .battle-cards-keys,.battle-narrow .battle-card kbd{display:none}.battle-hud .battle-fullscreen{justify-content:center;align-items:center;display:inline-flex}.battle-play [data-stat=bonus]{color:#2f5a22;font-size:.85em;display:block}.battle-play [data-stat=bonus]:empty{display:none}.battle-radial{pointer-events:none;z-index:2;position:absolute;inset:0}.battle-radial button{width:var(--radial-w);height:var(--radial-h);pointer-events:auto;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:3px 6px;line-height:1.1;display:flex;position:absolute;box-shadow:0 3px #94652e,0 5px 12px #3d2a1a59}.battle-radial span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;font-weight:700;overflow:hidden}.battle-radial b{white-space:nowrap;font-size:13px}.battle-radial .battle-pips{letter-spacing:1px;font-size:8px}.battle-radial .battle-radial-upgrade{background:linear-gradient(#e5f1cf,#b8d78e);border-color:#85a455;box-shadow:0 3px #64833e,0 5px 12px #3d2a1a59}.battle-radial .battle-radial-sell{background:linear-gradient(#f7d7b5,#e6b68d)}.battle-radial .battle-radial-details span{font-size:15px;line-height:1}.battle-radial .battle-radial-details[aria-pressed=true]{outline:3px solid var(--ff-focus)}.battle-compact .battle-radial button{border-radius:11px;padding:2px 4px}.battle-compact .battle-radial span{font-size:9px}.battle-compact .battle-radial b{font-size:11px}.battle-compact .battle-radial .battle-pips{font-size:7px}.battle-ui[data-no-abilities=true] .battle-skill,.battle-ui[data-no-abilities=true] .battle-radial-ability{display:none!important}.battle-card-icon .card-glyph{width:48px;height:48px}.battle-pause-card-icon .card-glyph{width:24px;height:24px}.battle-perk .card-glyph{width:18px;height:18px;color:var(--ff-money)}.battle-ui .battle-notice{top:calc(max(6.3%,32px) + 10px);left:0;right:var(--rail-width);width:max-content;max-width:calc(100% - var(--rail-width) - 24px);border:2px solid var(--ff-danger-bottom);border-radius:var(--ff-radius-pill);background:var(--ff-surface-raised);box-shadow:0 3px 0 var(--ff-danger-edge), 0 8px 18px #291e3240;color:var(--ff-error);font-family:var(--ff-font-display);font-size:var(--ff-text-sm);text-align:center;pointer-events:none;z-index:5;animation:ff-toast-in var(--ff-dur) var(--ff-ease-out-back);margin:0 auto;padding:8px 16px;font-weight:700;position:absolute}.battle-ui .battle-notice.is-leaving{opacity:0;transition:opacity var(--ff-dur) var(--ff-ease)}.battle-pause-actions[hidden],.battle-pause-confirm[hidden]{display:none!important}.battle-pause-confirm p{margin:4px 0 2px;font-weight:700}.battle-ui .battle-pause .battle-confirm-yes{border-color:var(--ff-danger-bottom);background:linear-gradient(var(--ff-danger-top), var(--ff-danger-bottom));box-shadow:0 3px 0 var(--ff-danger-edge);color:#fff;font-weight:700}.battle-ui .battle-detail .battle-sell.is-armed,.battle-ui .battle-radial .battle-radial-sell.is-armed{border-color:var(--ff-danger-bottom);color:var(--ff-error);background:linear-gradient(#ffd9d2,#f3a79c)}.tutorial-overlay{pointer-events:none;font-family:var(--ff-font-body);position:relative}.tutorial-overlay[hidden],.tutorial-overlay [hidden]{display:none!important}.tutorial-card{top:calc(var(--hud-height) + 10px);left:calc(var(--play-width) / 2);width:max-content;max-width:calc(var(--play-width) - 32px);border:2px solid var(--ff-gold);border-radius:var(--ff-radius-lg);background:var(--ff-surface-raised);box-shadow:0 3px 0 var(--ff-gold-deep), 0 10px 24px #291e3247;color:var(--ff-ink);animation:ff-toast-in var(--ff-dur) var(--ff-ease-out-back);align-items:center;gap:10px;padding:10px 16px;display:flex;position:absolute;transform:translate(-50%)}.tutorial-card.is-bottom{top:auto;bottom:72px}.tutorial-card p{font-size:var(--ff-text-md);margin:0;font-weight:700;line-height:1.3}.tutorial-card-icon{width:22px;height:22px;color:var(--ff-gold-deep);flex:none}.tutorial-ring{border:3px solid var(--ff-focus);border-radius:var(--ff-radius-md);animation:1.4s ease-in-out infinite tutorial-pulse;position:absolute;box-shadow:0 0 0 4px #ffffffb3,0 0 18px 4px #1f7fc48c}@keyframes tutorial-pulse{50%{box-shadow:0 0 0 7px #ffffff73,0 0 26px 8px #1f7fc459}}@media (prefers-reduced-motion:reduce){.tutorial-ring,.tutorial-card{animation:none}}.battle-compact+.tutorial-overlay .tutorial-card p{font-size:var(--ff-text-sm)}.battle-roster button.is-short [data-cost]{color:var(--ff-error)}.battle-roster button small{color:var(--ff-ink-muted);font-size:10px;font-weight:700}.battle-roster button.is-short small{color:var(--ff-error)}.battle-ui .battle-roster button.is-locked{height:auto;min-height:0;box-shadow:none;opacity:.7;flex-direction:row;order:2;justify-content:flex-start;gap:4px;padding:3px 6px 3px 3px;overflow:hidden}.battle-ui .battle-roster button.is-locked img{flex:none;width:26px;height:26px}.battle-ui .battle-roster button.is-locked span{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.battle-ui .battle-roster button.is-locked [data-cost],.battle-ui .battle-roster button.is-locked small{display:none}.battle-roster-divider{color:var(--ff-ink-muted);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);letter-spacing:.04em;text-transform:uppercase;order:1;grid-column:1/-1;align-items:center;gap:6px;margin:4px 0 0;font-weight:700;display:none}.battle-roster-divider svg{width:14px;height:14px}.battle-roster.has-locked .battle-roster-divider{display:flex}.battle-next{background:#f6e3b9;border-top:1px solid #d8b474;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.battle-next>span{color:var(--ff-ink-soft);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.battle-next-list{flex-wrap:wrap;gap:4px;display:flex}.battle-next-item{border-radius:var(--ff-radius-pill);background:var(--ff-surface-raised);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);align-items:center;gap:2px;padding:2px 6px 2px 2px;font-weight:700;display:inline-flex;position:relative;box-shadow:inset 0 0 0 1px #e0c389}.battle-next-item img{object-fit:contain;width:24px;height:24px}.battle-next-item i{color:#8f2f22;display:inline-grid}.battle-next-item i svg{width:13px;height:13px}.battle-compact .battle-next{padding:4px 6px}.battle-compact .battle-next-item img{width:20px;height:20px}.battle-ui .battle-banner{top:34%;left:0;right:var(--rail-width);pointer-events:none;z-index:4;flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute}.battle-banner strong{color:#fff6d8;font-family:var(--ff-font-display);letter-spacing:.03em;-webkit-text-stroke:5px #6b3a14;paint-order:stroke fill;text-shadow:0 5px #3c1e0a66;font-size:clamp(30px,5vw,56px);font-weight:700}.battle-banner[data-tone=clear] strong{-webkit-text-stroke-color:#2f6b16}.battle-banner span{color:#ffe58a;font-family:var(--ff-font-display);-webkit-text-stroke:4px #6b4a10;paint-order:stroke fill;font-size:clamp(18px,2.6vw,28px);font-weight:700}.battle-banner span:empty{display:none}.battle-banner.is-showing{animation:battle-banner 1.7s var(--ff-ease) both}@keyframes battle-banner{0%{opacity:0;transform:scale(.7)}14%{opacity:1;transform:scale(1.06)}22%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(-12px)}}.battle-vignette{inset:0 var(--rail-width) 0 0;pointer-events:none;opacity:0;transition:opacity var(--ff-dur-slow) var(--ff-ease);position:absolute;box-shadow:inset 0 0 80px 18px #c81e148c}.battle-ui.is-low-lives .battle-vignette{opacity:1;animation:1.6s ease-in-out infinite battle-low-lives}.battle-ui.is-low-lives .battle-lives{box-shadow:inset 0 0 0 2px var(--ff-error);background:#ffd9d2;animation:1.6s ease-in-out infinite battle-heart}@keyframes battle-low-lives{50%{opacity:.55}}@keyframes battle-heart{50%{transform:scale(1.08)}}.battle-pause-sound{justify-content:center;align-items:center;gap:8px;margin:6px 0 2px;font-weight:700;display:flex}.battle-pause-sound>span{margin-right:4px}.battle-ui .battle-pause .battle-pause-sound button{place-items:center;width:40px;height:40px;margin:0;padding:0;font-size:20px;font-weight:700;display:inline-grid}.battle-pause-sound output{min-width:4ch;font-family:var(--ff-font-display);font-variant-numeric:tabular-nums;font-weight:700}.battle-pause-sound svg{width:18px;height:18px}.battle-pause-mute[aria-pressed=true]{background:#ffd9d2!important}.battle-pause-keys{color:var(--ff-ink-muted);font-size:var(--ff-text-xs)!important}@media (prefers-reduced-motion:reduce){.battle-banner.is-showing,.battle-ui.is-low-lives .battle-vignette,.battle-ui.is-low-lives .battle-lives{animation:none}}.battle-compact .battle-roster button.is-locked{justify-content:center;padding:3px}.battle-compact .battle-roster button.is-locked span{display:none}.battle-compact .battle-roster-divider{letter-spacing:.02em;font-size:10px}.battle-ui .battle-pause[open],.battle-ui .battle-cards[open]{animation:ff-pop-in var(--ff-dur) var(--ff-ease-out-back)}.battle-ui .battle-pause[open]::backdrop,.battle-ui .battle-cards[open]::backdrop{animation:ff-fade-in var(--ff-dur) var(--ff-ease)}.battle-radial.is-opening button{animation:battle-radial-in .18s var(--ff-ease-out-back) both}.battle-radial.is-opening button:nth-child(2){animation-delay:20ms}.battle-radial.is-opening button:nth-child(3){animation-delay:40ms}.battle-radial.is-opening button:nth-child(4){animation-delay:60ms}.battle-radial.is-opening button:nth-child(5){animation-delay:80ms}.battle-radial.is-opening button:nth-child(6){animation-delay:.1s}@keyframes battle-radial-in{0%{opacity:0;transform:scale(.6)}}@media (prefers-reduced-motion:reduce){.battle-ui .battle-pause[open],.battle-ui .battle-cards[open],.battle-radial.is-opening button{animation:none}}.battle-radial .battle-radial-copies{border-radius:var(--ff-radius-pill);background:var(--ff-info);color:#fff;min-width:24px;height:20px;font-family:var(--ff-font-display);place-items:center;padding:0 5px;font-size:11px;font-style:normal;font-weight:700;line-height:1;display:grid;position:absolute;top:-8px;right:-8px;box-shadow:0 0 0 2px #fff}.battle-detail .battle-shared-note{color:var(--ff-info);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);margin:6px 2px 0;font-weight:700}.battle-roster button small{white-space:nowrap}.battle-roster button.has-tiers [data-cost]:after{content:"";background:var(--ff-info);width:9px;height:10px;margin-left:2px;display:inline-block;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3.5 4.5 11h4.5v9.5h6V11h4.5z'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3.5 4.5 11h4.5v9.5h6V11h4.5z'/%3E%3C/svg%3E") 50%/contain no-repeat}.battle-pause-sound-gap{width:40px}.battle-pause-sound>span:first-child{text-align:right;min-width:5.5em}.dialogue-overlay{padding:0 var(--ff-space-4) max(var(--ff-space-4), env(safe-area-inset-bottom));color:var(--ff-ink);font-family:var(--ff-font-body);cursor:pointer;-webkit-user-select:none;user-select:none;animation:ff-fade-in var(--ff-dur) var(--ff-ease);background:linear-gradient(#180e0726 0%,#180e079e 60%,#180e07c7 100%);justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.dialogue-panel{align-items:end;gap:var(--ff-space-4);width:min(960px,100%);min-height:150px;padding:var(--ff-space-5) var(--ff-space-6) var(--ff-space-4);border:3px solid var(--ff-gold);border-radius:var(--ff-radius-xl);background:linear-gradient(var(--ff-surface-raised), var(--ff-surface));box-shadow:0 4px 0 var(--ff-gold-deep), 0 18px 40px #140a0473;animation:dialogue-rise var(--ff-dur-slow) var(--ff-ease-out-back);grid-template-columns:minmax(0,1fr);display:grid;position:relative}.dialogue-overlay.has-portrait .dialogue-panel{padding-left:var(--ff-space-4);grid-template-columns:150px minmax(0,1fr)}.dialogue-portrait{align-self:stretch;display:none;position:relative}.dialogue-overlay.has-portrait .dialogue-portrait{display:block}.dialogue-portrait img{object-fit:contain;filter:drop-shadow(0 6px 6px #3c1e0c59);width:170px;height:170px;animation:dialogue-portrait-in var(--ff-dur-slow) var(--ff-ease-out-back);position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.dialogue-copy{flex-direction:column;gap:6px;min-width:0;display:flex}.dialogue-name{border-radius:var(--ff-radius-md);color:#fff8e5;font-family:var(--ff-font-display);font-size:var(--ff-text-lg);text-shadow:0 2px #32160699;background:linear-gradient(#b86c2a,#8a4a18);border:2px solid #ffdd76;align-self:flex-start;margin:-40px 0 4px;padding:6px 16px;font-weight:700;line-height:1.1;box-shadow:0 3px #5a2f0f}.dialogue-body{min-height:3.1em;font-size:var(--ff-text-lg);overflow-wrap:anywhere;margin:0;font-weight:700;line-height:1.45}.dialogue-hint{color:var(--ff-ink-muted);font-family:var(--ff-font-display);font-size:var(--ff-text-sm);align-self:flex-end;margin:0;font-weight:600;animation:1.6s ease-in-out infinite dialogue-hint}.dialogue-overlay.is-system .dialogue-panel{color:#bfe9f7;background:linear-gradient(#1c2b36,#13202a);border-color:#6fb7d6;box-shadow:0 4px #0c151c,0 18px 40px #050a0e8c}.dialogue-overlay.is-system .dialogue-name{color:#7ed3f0;font-family:var(--ff-font-mono);font-size:var(--ff-text-sm);letter-spacing:.08em;text-shadow:none;background:#0f1a22;border-color:#6fb7d6;box-shadow:0 3px #08111a}.dialogue-overlay.is-system .dialogue-body{font-family:var(--ff-font-mono);font-size:var(--ff-text-md);letter-spacing:.02em;text-transform:uppercase}.dialogue-overlay.is-system .dialogue-hint{color:#6f93a6}.dialogue-skip{top:max(var(--ff-space-3), env(safe-area-inset-top));right:max(var(--ff-space-3), env(safe-area-inset-right));min-height:var(--ff-tap);border-radius:var(--ff-radius-pill);color:#fff;font-family:var(--ff-font-display);font-size:var(--ff-text-md);cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;background:#180e078c;border:2px solid #ffffff8c;align-items:center;gap:8px;padding:6px 16px 6px 8px;font-weight:700;display:inline-flex;position:absolute}.dialogue-skip-ring{--p:0;background:conic-gradient(#ffdd76 calc(var(--p) * 1%), #ffffff40 0);border-radius:50%;width:26px;height:26px;-webkit-mask:radial-gradient(circle,#0000 7px,#000 8px);mask:radial-gradient(circle,#0000 7px,#000 8px)}.dialogue-skip.is-holding .dialogue-skip-ring{animation:.65s linear forwards dialogue-skip-fill}@property --p{syntax:"<number>";inherits:false;initial-value:0}@keyframes dialogue-skip-fill{to{--p:100}}.dialogue-overlay.is-compact .dialogue-panel{min-height:112px;padding:var(--ff-space-4) var(--ff-space-5) var(--ff-space-3)}.dialogue-overlay.is-compact.has-portrait .dialogue-panel{grid-template-columns:104px minmax(0,1fr)}.dialogue-overlay.is-compact .dialogue-portrait img{width:124px;height:124px}.dialogue-overlay.is-compact .dialogue-name{font-size:var(--ff-text-md);margin-top:-32px}.dialogue-overlay.is-compact .dialogue-body{font-size:var(--ff-text-md)}@keyframes dialogue-rise{0%{opacity:0;transform:translateY(18px)}}@keyframes dialogue-portrait-in{0%{opacity:0;transform:translate(-50%,14px)scale(.92)}}@keyframes dialogue-hint{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.dialogue-overlay,.dialogue-panel,.dialogue-portrait img,.dialogue-hint{animation:none}}.gameover-view{color:var(--ff-ink);font-family:var(--ff-font-body);position:relative}.gameover-stage{padding:var(--ff-space-4);color:var(--ff-ink);font-family:var(--ff-font-body);grid-template:minmax(0,1fr)/minmax(0,1fr);place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.gameover-bg,.gameover-shade{width:100%;height:100%;position:absolute;inset:0}.gameover-bg{object-fit:cover;filter:saturate(.9);transform:scale(1.04)}.gameover-shade{background:radial-gradient(at 50% 40%,#1e120840,#1e1208b3)}.gameover-view[data-outcome=lost] .gameover-shade{background:radial-gradient(at 50% 40%,#280e0a59,#1e0a08c7)}.gameover-card{gap:var(--ff-space-4);width:min(760px,100%);max-height:100%;padding:var(--ff-space-5) var(--ff-space-6) var(--ff-space-5);animation:ff-pop-in var(--ff-dur-slow) var(--ff-ease-out-back);flex-direction:column;display:flex;position:relative}.gameover-head{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.gameover-mode{color:var(--ff-ink-soft)}.gameover-title{color:#fff3c8;font-family:var(--ff-font-display);font-size:var(--ff-text-3xl);letter-spacing:.04em;-webkit-text-stroke:4px #3f7a1f;paint-order:stroke fill;text-shadow:0 4px #28461473;margin:0;font-weight:700;line-height:1.05}.gameover-view[data-outcome=lost] .gameover-title{color:#ffe2d6;-webkit-text-stroke-color:#9b2c22;text-shadow:0 4px #5a140e73}.gameover-message{max-width:46ch;color:var(--ff-ink-soft);font-size:var(--ff-text-sm);margin:0;font-weight:600;line-height:1.4}.gameover-stars{gap:6px;margin-top:4px;display:flex}.gameover-star svg{color:#e2cfa6;filter:drop-shadow(0 2px #78501e59);width:44px;height:44px}.gameover-star.is-earned svg{color:#ffc531;filter:drop-shadow(0 2px #b8770f)drop-shadow(0 0 10px #ffc83c8c);animation:gameover-star .42s var(--ff-ease-out-back) both;animation-delay:calc(.25s + var(--i) * .22s)}.gameover-star:nth-child(2) svg{width:54px;height:54px;margin-top:-6px}.gameover-best{color:var(--ff-ink-muted);font-size:var(--ff-text-xs);margin:0;font-weight:700}.gameover-stats{gap:var(--ff-space-2);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid}.gameover-stat{border:2px solid var(--ff-line);border-radius:var(--ff-radius-md);background:var(--ff-surface);grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;column-gap:8px;padding:8px 12px;display:grid}.gameover-stat svg{grid-row:span 2;width:24px;height:24px}.gameover-stat dt{color:var(--ff-ink-muted);font-size:var(--ff-text-xs);font-weight:700}.gameover-stat dd{font-family:var(--ff-font-display);font-size:var(--ff-text-lg);margin:0;font-weight:700;line-height:1.1}.gameover-stat-wave svg{color:var(--ff-wave)}.gameover-stat-lives svg{color:var(--ff-lives)}.gameover-stat-money svg{color:#d99a1e}.gameover-stat-time svg{color:var(--ff-info)}.gameover-rewards{gap:var(--ff-space-2);flex-direction:column;min-height:0;display:flex}.gameover-rewards ul{overscroll-behavior:contain;flex-direction:column;gap:6px;min-height:0;margin:0;padding:0 4px 2px 0;list-style:none;display:flex;overflow-y:auto}.gameover-reward{border-radius:var(--ff-radius-md);min-height:40px;animation:gameover-reward .32s var(--ff-ease) both;animation-delay:calc(.7s + var(--i) * 90ms);background:#fff3d6;flex:none;align-items:center;gap:10px;padding:6px 10px;font-weight:700;display:flex;box-shadow:inset 0 0 0 1px #f0d7a2}.gameover-reward-icon{color:#c98a12;flex:none;width:22px;height:22px}.gameover-reward[data-tone=green] .gameover-reward-icon{color:var(--ff-success)}.gameover-reward[data-tone=blue] .gameover-reward-icon{color:var(--ff-info)}.gameover-reward[data-tone=error]{color:var(--ff-error);background:#ffe7e2;box-shadow:inset 0 0 0 1px #f2b3a8}.gameover-reward[data-tone=error] .gameover-reward-icon{color:var(--ff-error)}.gameover-reward-text{min-width:0;font-size:var(--ff-text-sm);flex:1;line-height:1.3}.gameover-reward-cats{gap:2px;display:flex}.gameover-reward-cats img{object-fit:contain;width:34px;height:34px}.gameover-actions{justify-content:space-between;align-items:center;gap:var(--ff-space-2) var(--ff-space-3);padding-top:var(--ff-space-3);border-top:1px solid var(--ff-line);flex-wrap:wrap;display:flex}.gameover-secondary{gap:var(--ff-space-2);flex-wrap:wrap;display:flex}.gameover-actions>.ff-btn--primary{min-width:180px;margin-left:auto}.gameover-view.is-compact .gameover-stage{padding:var(--ff-space-2)}.gameover-view.is-compact .gameover-card{gap:var(--ff-space-2);padding:var(--ff-space-3) var(--ff-space-4)}.gameover-view.is-compact .gameover-title{font-size:var(--ff-text-2xl);-webkit-text-stroke-width:3px}.gameover-view.is-compact .gameover-message{display:none}.gameover-view.is-compact .gameover-star svg{width:32px;height:32px}.gameover-view.is-compact .gameover-star:nth-child(2) svg{width:38px;height:38px;margin-top:-4px}.gameover-view.is-compact .gameover-stat{padding:4px 8px}.gameover-view.is-compact .gameover-stat svg{width:20px;height:20px}.gameover-view.is-compact .gameover-reward{min-height:34px;padding:4px 8px}.gameover-view.is-compact .gameover-stat dd{font-size:var(--ff-text-md)}.gameover-view.is-compact .gameover-actions{padding-top:var(--ff-space-2)}.gameover-view.is-compact .gameover-actions .ff-btn--lg{min-height:48px;font-size:var(--ff-text-lg)}.gameover-view.is-compact:not(.is-narrow) .gameover-card{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:min(820px,100%);height:100%;display:grid}.gameover-view.is-compact .gameover-rewards ul{flex:1}.gameover-view.is-compact:not(.is-narrow) .gameover-head{grid-row:1/span 2;justify-content:center}.gameover-view.is-compact:not(.is-narrow) .gameover-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.gameover-view.is-compact:not(.is-narrow) .gameover-rewards{grid-column:2}.gameover-view.is-compact:not(.is-narrow) .gameover-actions{grid-column:1/-1}.gameover-view.is-narrow .gameover-stats{grid-template-columns:repeat(2,minmax(0,1fr))}@keyframes gameover-star{0%{opacity:0;transform:scale(.3)rotate(-25deg)}}@keyframes gameover-reward{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.gameover-card,.gameover-star.is-earned svg,.gameover-reward{animation:none}}.upgrade-view{--upgrade-tree-width:430px;color:var(--ff-ink);font-family:var(--ff-font-body);-webkit-user-select:none;user-select:none;isolation:isolate;position:relative;overflow:hidden}.upgrade-view [hidden]{display:none!important}.upgrade-view button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.upgrade-view button:disabled{cursor:default}.upgrade-view button:focus-visible{outline:3px solid var(--ff-focus);outline-offset:4px}.upgrade-background{object-fit:cover;z-index:-2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.upgrade-view:before{content:"";z-index:-1;background:#101311a6;position:absolute;inset:0}.upgrade-shell{grid-template-rows:auto auto minmax(0,1fr) auto;gap:12px;width:min(1480px,100%);height:100%;margin:0 auto;padding:18px 24px;display:grid}.upgrade-header{grid-template-columns:150px minmax(0,1fr) 150px;align-items:center;gap:16px;display:grid}.upgrade-header h1{text-align:center;color:#fff2d5;-webkit-text-stroke:4px #603114;paint-order:stroke fill;text-shadow:0 3px #351d14;margin:0;font-size:clamp(24px,2.3vw,36px);font-weight:900;line-height:1.15}.upgrade-points{color:#ffe4a1;text-align:center;margin:6px 0 0;font-size:18px;font-weight:700}.upgrade-action{color:#fffdf2;background:0 0;border:0;border-radius:18px;place-items:center;min-height:48px;padding:10px 20px;line-height:1.15;transition:transform .12s,filter .12s;display:grid;position:relative;font-size:19px!important;font-weight:900!important}.upgrade-action>:last-child{z-index:1;-webkit-text-stroke:2px #473018;paint-order:stroke fill;text-shadow:0 2px 1px #2e2715;position:relative}.upgrade-action:disabled{filter:saturate(.35);opacity:.65}@media (hover:hover){.upgrade-action:not(:disabled):hover,.upgrade-cat-tab:hover,.upgrade-node:hover{filter:brightness(1.1);transform:scale(1.045)}}.upgrade-action:not(:disabled):active,.upgrade-cat-tab:active,.upgrade-node:active{transform:scale(.96)}.upgrade-art{pointer-events:none;display:block;position:relative;overflow:hidden}.upgrade-art>img{pointer-events:none;max-width:none;position:absolute}.upgrade-segments{pointer-events:none;display:grid;position:absolute;inset:0}.upgrade-segments>span{background-repeat:no-repeat}.upgrade-cat-tabs{scrollbar-width:thin;scrollbar-color:#e2b457 #382923;justify-content:flex-start;gap:8px;min-width:0;padding:0 6px 8px;display:flex;position:relative;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 22px calc(100% - 22px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 22px calc(100% - 22px),#0000 100%)}.upgrade-cat-count{text-align:center;color:#ffe6b2;flex:0 0 76px;align-self:center;margin:0 8px 0 0;font-size:14px;font-weight:700}.upgrade-cat-tab{color:#fff1d5;background:0 0;border:0;flex:1 0 84px;min-width:0;height:91px;padding:0;transition:transform .12s,filter .12s;position:relative}.upgrade-tab-base{width:62px;position:absolute;top:3px;left:50%;transform:translate(-50%)}.upgrade-tab-portrait{top:calc(5px + (56px - 56px * var(--art-fit-height)) / 2);width:calc(56px * var(--art-fit-width));height:calc(56px * var(--art-fit-height));position:absolute;left:50%;transform:translate(-50%)}.upgrade-tab-portrait img{object-fit:contain}.upgrade-tab-name{white-space:normal;width:100%;padding:0 2px;font-size:13px;font-weight:700;line-height:1.1;position:absolute;top:72px;left:0}.upgrade-cat-tab.is-selected .upgrade-tab-base{filter:drop-shadow(0 0 5px #ffe288)}.upgrade-cat-tab.is-selected .upgrade-tab-portrait{transform:translate(-50%)scale(1.08)}.upgrade-cat-tab.is-locked .upgrade-tab-portrait{filter:saturate(.35);opacity:.68}.upgrade-lock{color:#fff1d5;background:#574438;border:2px solid #ddb779;border-radius:50%;place-items:center;width:20px;height:20px;font-weight:700;display:grid;position:absolute;top:46px;left:calc(50% + 17px)}.upgrade-stage{min-height:0;position:relative}.upgrade-body{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ddb266 #654226;touch-action:pan-y;position:absolute;inset:0 48px;overflow:hidden auto;-webkit-mask-image:linear-gradient(#0000 0,#000 10px calc(100% - 22px),#0000 100%);mask-image:linear-gradient(#0000 0,#000 10px calc(100% - 22px),#0000 100%)}.upgrade-tree-layout{justify-content:center;align-items:center;gap:48px;min-height:100%;padding:4px 12px 14px;display:flex}.upgrade-profile{flex:0 0 235px;align-self:center}.upgrade-profile-portrait{filter:drop-shadow(0 8px 3px #231c2855);width:220px;margin:0 auto 20px}.upgrade-profile-portrait.is-locked{filter:saturate(.4)drop-shadow(0 8px 3px #231c2855)}.upgrade-profile-copy{overscroll-behavior:contain;max-height:220px;padding:26px;position:relative;overflow-y:auto}.upgrade-profile-copy p{margin:0;font-size:17px;line-height:1.4;position:relative}.upgrade-tree{flex:0 0 var(--upgrade-tree-width);width:var(--upgrade-tree-width);aspect-ratio:1016/1383;position:relative}.upgrade-tree-art{position:absolute;inset:0}.upgrade-tree h2{text-align:center;color:#fff1cc;-webkit-text-stroke:2px #613012;paint-order:stroke fill;margin:0;font-size:clamp(21px,2vw,28px);font-weight:900;line-height:1.1;position:absolute;inset:8.3% 17% auto}.upgrade-branches{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:80%;height:65.5%;display:grid;position:absolute;top:21%;left:10%}.upgrade-branch{grid-template-rows:30px minmax(0,1fr);min-width:0;display:grid}.upgrade-branch h3{text-align:center;overflow-wrap:anywhere;align-self:center;margin:0;font-size:16px;font-weight:900;line-height:1.05}.upgrade-branch ol{grid-template-rows:repeat(6,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.upgrade-branch li{flex-direction:column;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.upgrade-branch li+li:before{content:"";z-index:0;background:#c8aa70;width:4px;height:30px;position:absolute;bottom:calc(50% + 16px);left:calc(50% - 2px)}.upgrade-node{width:clamp(44px, calc(var(--upgrade-tree-width) * .101), 54px);aspect-ratio:1;z-index:1;background:0 0;border:0;border-radius:50%;flex:none;padding:0;transition:transform .12s,filter .12s;position:relative}.upgrade-node-base,.upgrade-node-frame{position:absolute;inset:0}.upgrade-node-frame>.upgrade-art{width:100%;height:100%}.upgrade-node-icon{width:calc(70% * var(--art-fit-width));height:calc(70% * var(--art-fit-height));top:calc(50% - 35% * var(--art-fit-height));left:calc(50% - 35% * var(--art-fit-width));position:absolute}.upgrade-node[data-state=locked] .upgrade-node-icon{filter:saturate(.45);opacity:.72}.upgrade-node-tier{text-align:right;width:15px;margin:0;font-size:11px;font-weight:700;line-height:1.05;position:absolute;top:calc(50% - 6px);left:calc(50% - 41px)}.upgrade-node-cost{min-width:24px;color:var(--ff-ink);background:#fff5d9;border:2px solid #dcab4b;border-radius:10px;padding:2px 5px;font-size:13px;font-weight:700;line-height:1;position:absolute;bottom:-1px;right:-4px}.upgrade-node-mark{color:#fff;-webkit-text-stroke:3px #246e1d;paint-order:stroke fill;font-size:17px;font-weight:700;position:absolute;top:-2px;left:-3px}.upgrade-node:focus-visible{outline-color:var(--ff-focus)!important}.upgrade-navigation{width:44px;min-height:48px;padding:11px;position:absolute;top:calc(50% - 24px)}.upgrade-navigation[data-upgrade-action=previous]{left:0}.upgrade-navigation[data-upgrade-action=next]{right:0}.upgrade-navigation svg{width:20px;height:24px;filter:drop-shadow(1px 2px 0 var(--ff-ink))}.upgrade-detail{grid-template-columns:minmax(0,1fr) 190px;align-items:center;gap:24px;min-height:124px;padding:23px 34px;display:grid;position:relative}.upgrade-detail-copy{min-width:0;position:relative}.upgrade-detail h2{margin:0 0 6px;font-size:23px;font-weight:900}.upgrade-detail p{margin:0;font-size:17px;line-height:1.3}.upgrade-detail-effects{color:var(--ff-ink);font-weight:700}.upgrade-detail-status{color:#825334}.upgrade-detail-status[data-state=purchased]{color:#347531}.upgrade-detail-status[data-state=available]{color:#1c658a}.upgrade-mastery-dialog{color:var(--ff-ink);overscroll-behavior:contain;width:850px;font-family:var(--ff-font-body);background:#fff3d3;border:4px solid #e4ac45;border-radius:24px;padding:25px;position:fixed;overflow-y:auto;box-shadow:0 6px #6a391d,0 15px 45px #0007}.upgrade-mastery-dialog::backdrop{background:#050a08b3}.upgrade-mastery-dialog>h2{text-align:center;margin:0;font-size:30px}.upgrade-mastery-points{text-align:center;margin:6px 0 18px;font-size:18px;font-weight:700}.upgrade-mastery-row{grid-template-columns:78px minmax(0,1fr) 160px;align-items:center;gap:16px;min-height:128px;margin-bottom:12px;padding:20px 24px;display:grid;position:relative}.upgrade-mastery-row>div,.upgrade-mastery-row>.upgrade-mastery-icon{position:relative}.upgrade-mastery-icon{width:78px}.upgrade-mastery-row h3{margin:0 0 5px;font-size:23px}.upgrade-mastery-row p{margin:0;font-size:17px;line-height:1.25}.upgrade-mastery-level{color:#956627;font-weight:700;margin-top:6px!important}.upgrade-mastery-dialog>.upgrade-action{width:180px;margin:16px auto 0}.upgrade-compact .upgrade-shell{gap:6px;padding:8px 12px}.upgrade-compact .upgrade-header{grid-template-columns:112px minmax(0,1fr) 112px;gap:8px}.upgrade-compact .upgrade-header h1{-webkit-text-stroke-width:3px;font-size:23px}.upgrade-compact .upgrade-points{margin-top:3px;font-size:14px}.upgrade-compact .upgrade-action{min-height:42px;padding:8px 14px;font-size:16px!important}.upgrade-compact .upgrade-cat-tab{flex-basis:76px;height:69px}.upgrade-compact .upgrade-tab-base{width:43px;top:0}.upgrade-compact .upgrade-tab-portrait{width:calc(40px * var(--art-fit-width));height:calc(40px * var(--art-fit-height));top:calc(1px + (40px - 40px * var(--art-fit-height)) / 2)}.upgrade-compact .upgrade-tab-name{font-size:11px;top:45px}.upgrade-compact .upgrade-lock{width:17px;height:17px;top:29px;left:calc(50% + 9px)}.upgrade-compact .upgrade-cat-count{flex-basis:58px;margin-right:2px;font-size:12px}.upgrade-compact .upgrade-cat-tabs{gap:4px;padding-bottom:3px}.upgrade-compact .upgrade-detail{grid-template-columns:minmax(0,1fr) 142px;gap:14px;min-height:96px;padding:20px 30px}.upgrade-compact .upgrade-detail h2{margin-bottom:3px;font-size:17px}.upgrade-compact .upgrade-detail p{font-size:13px;line-height:1.25}.upgrade-compact .upgrade-profile{flex-basis:185px;align-self:flex-start;position:sticky;top:6px}.upgrade-compact .upgrade-profile-portrait{width:130px;margin-bottom:5px}.upgrade-compact .upgrade-profile-copy{padding:18px}.upgrade-compact .upgrade-profile-copy p{font-size:14px}.upgrade-compact .upgrade-tree-layout{gap:18px}.upgrade-narrow .upgrade-profile{display:none}.upgrade-narrow .upgrade-tree-layout{padding-left:0;padding-right:0}.upgrade-narrow .upgrade-body{inset-inline:40px}.upgrade-narrow .upgrade-header h1{font-size:20px}.upgrade-narrow .upgrade-header{grid-template-columns:92px minmax(0,1fr) 100px}.upgrade-narrow .upgrade-detail{grid-template-columns:minmax(0,1fr) 124px;gap:10px;padding:14px 20px}@media (width<=650px){.upgrade-mastery-dialog{padding:16px}.upgrade-mastery-row{grid-template-columns:54px minmax(0,1fr) 116px;gap:10px;padding:18px}.upgrade-mastery-icon{width:54px}.upgrade-mastery-row h3{font-size:19px}.upgrade-mastery-row p{font-size:15px}.upgrade-mastery-row .upgrade-action{padding-inline:8px}}@media (prefers-reduced-motion:reduce){.upgrade-view button{transition:none}}.upgrade-tab-frame{visibility:hidden;width:68px;height:68px;position:absolute;top:0;left:50%;transform:translate(-50%)}.upgrade-cat-tab.is-selected .upgrade-tab-frame{visibility:visible}.upgrade-compact .upgrade-tab-frame{width:48px;height:48px;top:-2px}.upgrade-mastery-header{z-index:2;background:#fff3d3;grid-template-columns:132px 1fr;align-items:center;gap:16px;padding:0 0 14px;display:grid;position:sticky;top:-25px}.upgrade-mastery-header h2{margin:0;font-size:28px}.upgrade-mastery-header .upgrade-mastery-points{text-align:left;margin:4px 0 0}.upgrade-mastery-header .upgrade-action{min-height:44px}@media (width<=650px){.upgrade-mastery-header{grid-template-columns:104px 1fr;top:-16px}.upgrade-mastery-header h2{font-size:24px}}.achievements-view{color:var(--ff-ink);font-family:var(--ff-font-body);position:relative}.achievements-stage{position:absolute;inset:0;overflow:hidden}.achievements-bg,.achievements-shade{width:100%;height:100%;position:absolute;inset:0}.achievements-bg{object-fit:cover}.achievements-shade{background:linear-gradient(#27140973,#271409b8)}.achievements-shell{gap:var(--ff-space-3);max-width:1180px;height:100%;padding:var(--ff-space-5) var(--ff-space-6) 0;flex-direction:column;margin:0 auto;display:flex;position:relative}.achievements-header{align-items:center;gap:var(--ff-space-4);grid-template-columns:1fr auto 1fr;display:grid}.achievements-header>.ff-btn{justify-self:start}.achievements-heading{flex-direction:column;align-items:center;gap:6px;min-width:240px;display:flex}.achievements-title{font-size:var(--ff-text-2xl)}.achievements-summary{color:#ffefc6;font-family:var(--ff-font-display);font-size:var(--ff-text-md);text-shadow:0 2px #28140899;margin:0;font-weight:600}.achievements-total{background:#fff0d259;width:100%;height:8px}.achievements-tabs{justify-content:center}.achievements-count{border-radius:var(--ff-radius-pill);min-width:22px;height:20px;font-size:var(--ff-text-xs);background:#6137191f;place-items:center;margin-left:4px;padding:0 6px;display:inline-grid}.achievements-list{align-content:start;gap:var(--ff-space-3);min-height:0;padding:2px 4px var(--ff-space-5);overscroll-behavior:contain;scrollbar-color:#e5aa42 transparent;flex:1;grid-template-columns:minmax(0,1fr);margin:0;list-style:none;display:grid;overflow-y:auto}.achievements-view.is-wide .achievements-list{grid-template-columns:repeat(2,minmax(0,1fr))}.achievement-card{align-items:center;gap:var(--ff-space-4);padding:var(--ff-space-3) var(--ff-space-4);border:3px solid var(--ff-gold);box-shadow:0 3px 0 var(--ff-gold-deep);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.achievement-card:not(.is-done){border-color:#e9cf96;box-shadow:0 3px #cfae6c}.achievement-badge{width:72px;height:72px;position:relative}.achievement-badge img{object-fit:contain;width:100%;height:100%}.achievement-card:not(.is-done) .achievement-badge img{filter:grayscale(.85)opacity(.7)}.achievement-check{background:var(--ff-success);color:#fff;border:2px solid #ffe3a2;border-radius:50%;place-items:center;width:26px;height:26px;display:grid;position:absolute;bottom:-2px;right:-2px}.achievement-check svg{width:16px;height:16px}.achievement-body{flex-direction:column;gap:4px;min-width:0;display:flex}.achievement-name{font-family:var(--ff-font-display);font-size:var(--ff-text-lg);margin:0;font-weight:700;line-height:1.15}.achievement-desc{color:var(--ff-ink-soft);font-size:var(--ff-text-sm);margin:0;font-weight:600;line-height:1.35}.achievement-progress{align-items:center;gap:var(--ff-space-2);grid-template-columns:minmax(0,1fr) auto;margin-top:4px;display:grid}.achievement-card:not(.is-done) .achievement-progress .ff-progress>span{background:linear-gradient(#e7b54b,#b98c35)}.achievement-counter{font-family:var(--ff-font-display);font-size:var(--ff-text-sm);font-weight:700}.achievement-side{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.achievement-reward{color:#7a4f12;font-size:var(--ff-text-sm);background:#ffe7a6}.achievement-reward svg{color:#d99a1e}.achievement-state{color:var(--ff-ink-muted);font-size:var(--ff-text-xs);font-weight:700}.achievement-card.is-done .achievement-state{color:var(--ff-success)}.achievements-view.is-compact .achievements-shell{gap:var(--ff-space-2);padding:var(--ff-space-3) var(--ff-space-4) 0}.achievements-view.is-compact .achievements-title{font-size:var(--ff-text-xl)}.achievements-view.is-compact .achievements-summary{font-size:var(--ff-text-sm)}.achievements-view.is-compact .achievement-card{gap:var(--ff-space-3);padding:var(--ff-space-2) var(--ff-space-3)}.achievements-view.is-compact .achievement-badge{width:52px;height:52px}.achievements-view.is-compact .achievement-name{font-size:var(--ff-text-md)}.loadout-view{--loadout-board-width:300px}.loadout-body{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ddb266 #654226;touch-action:pan-y;min-height:0;position:relative;overflow:hidden auto}.loadout-layout{grid-template-columns:230px var(--loadout-board-width) minmax(280px, 1fr);align-items:center;gap:22px;min-height:100%;padding:2px 8px 6px;display:grid}.loadout-hero{align-self:center;min-width:0}.loadout-portrait{filter:drop-shadow(0 8px 3px #231c2855);width:150px;margin:0 auto 8px}.loadout-portrait.is-locked{filter:saturate(.4)drop-shadow(0 8px 3px #231c2855)}.loadout-hero-copy{padding:18px 20px;position:relative}.loadout-hero-copy>:not(.upgrade-segments){position:relative}.loadout-role{color:var(--ff-ink);margin:0 0 8px;font-size:15px;font-weight:900}.loadout-hero-copy h3{margin:0 0 4px;font-size:15px;font-weight:900}.loadout-set-empty{color:#825334;margin:0;font-size:13px;line-height:1.3}.loadout-set+.loadout-set{margin-top:8px}.loadout-set strong{color:#6a3fa0;font-size:14px;display:block}.loadout-set p{color:#9b7b5c;margin:2px 0 0;font-size:12.5px;line-height:1.25}.loadout-set p.is-active{color:#347531;font-weight:700}.loadout-board{width:var(--loadout-board-width);aspect-ratio:1016/1383;position:relative}.loadout-board-art{position:absolute;inset:0}.loadout-board h2{text-align:center;color:#fff1cc;-webkit-text-stroke:2px #613012;paint-order:stroke fill;margin:0;font-size:clamp(19px,1.9vw,26px);font-weight:900;line-height:1.1;position:absolute;inset:8.3% 17% auto}.loadout-slots{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:78%;height:64%;display:grid;position:absolute;top:22%;left:11%}.loadout-slot{min-width:0;color:var(--ff-ink);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;padding:0;transition:transform .12s,filter .12s;display:flex}.loadout-slot-node{width:calc(var(--loadout-board-width) * .25);aspect-ratio:1;position:relative}.loadout-slot h3{margin:4px 0 0;font-size:15px;font-weight:900;line-height:1.1}.loadout-slot small{text-align:center;color:#9b7b5c;overflow-wrap:anywhere;max-width:100%;font-size:12px;font-weight:700;line-height:1.1}.loadout-slot[data-filled=false] .loadout-icon{opacity:.35;filter:grayscale()}.loadout-inventory{min-width:0;min-height:0;max-height:calc(var(--loadout-board-width) * 1383 / 1016);flex-direction:column;align-self:stretch;gap:8px;padding:18px 18px 14px;display:flex;position:relative}.loadout-inventory>:not(.upgrade-segments){position:relative}.loadout-inventory-header{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.loadout-inventory h2{margin:0;font-size:20px;font-weight:900}.loadout-collection{color:#825334;margin:0;font-size:14px;font-weight:700}.loadout-filters{flex-wrap:wrap;gap:6px;display:flex}.loadout-filter{color:var(--ff-ink);background:#fff3d6;border:2px solid #c79a4e;border-radius:14px;padding:4px 11px;font-size:13px;font-weight:700;transition:filter .12s}.loadout-filter[aria-pressed=true]{color:#3d2412;background:#f1bf52;border-color:#9a6a22}.loadout-hint{color:#825334;margin:0;font-size:14px;line-height:1.3}.loadout-grid{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ddb266 #f3dfb6;flex:1;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));align-content:start;gap:8px 6px;min-height:0;padding:6px 2px 2px;display:grid;overflow-y:auto}.loadout-piece{min-width:0;color:var(--ff-ink);background:0 0;border:0;flex-direction:column;align-items:center;padding:2px;transition:transform .12s,filter .12s;display:flex}.loadout-piece-node{aspect-ratio:1;width:58px;position:relative}.loadout-piece-name{text-align:center;overflow-wrap:anywhere;max-width:100%;margin-top:3px;font-size:11.5px;font-weight:700;line-height:1.1}.loadout-piece[data-state=unknown] .loadout-icon{opacity:.55}.loadout-piece[data-state=unknown] .loadout-piece-name{color:#a58b6c}.loadout-node-base,.loadout-node-frame{position:absolute;inset:0}.loadout-node-frame{z-index:1}.loadout-icon{position:absolute;inset:22%}.loadout-icon svg{filter:drop-shadow(0 2px #4a2a1455);width:100%;height:100%;display:block}.loadout-level{z-index:2;color:var(--ff-ink);white-space:nowrap;background:#fff5d9;border:2px solid #dcab4b;border-radius:9px;padding:2px 4px;font-size:10.5px;font-weight:700;line-height:1;position:absolute;bottom:-2px;right:-8px}.loadout-mark{z-index:2;color:#fff;-webkit-text-stroke:3px #246e1d;paint-order:stroke fill;font-size:16px;font-weight:700;position:absolute;top:-3px;left:-3px}[data-rarity=common]{color:#66707b!important}[data-rarity=special]{color:#1f73a8!important}[data-rarity=epic]{color:#7440ad!important}[data-rarity=relic]{color:#a87300!important}.loadout-detail{grid-template-columns:minmax(0,1fr) auto}.loadout-detail h2 small{margin-left:10px;font-size:15px;font-weight:700}.loadout-actions{gap:10px;display:flex;position:relative}.loadout-actions .upgrade-action{min-width:150px}@media (hover:hover){.loadout-slot:hover,.loadout-piece:hover{filter:brightness(1.08);transform:scale(1.05)}.loadout-filter:hover{filter:brightness(1.06)}}.loadout-slot:active,.loadout-piece:active{transform:scale(.96)}.loadout-slot:focus-visible,.loadout-piece:focus-visible,.loadout-filter:focus-visible{outline-color:var(--ff-focus)!important}.upgrade-compact .loadout-layout{grid-template-columns:auto minmax(0,1fr);align-items:stretch;gap:10px;height:100%;padding:0 4px}.upgrade-compact .loadout-hero,.upgrade-compact .loadout-board-art,.upgrade-compact .loadout-board h2{display:none}.upgrade-compact .loadout-board{aspect-ratio:auto;align-self:center;width:auto}.upgrade-compact .loadout-slots{grid-template-rows:none;grid-template-columns:repeat(2,70px);gap:4px 6px;width:auto;height:auto;position:static}.upgrade-compact .loadout-slot-node{width:40px}.upgrade-compact .loadout-slot h3{color:#fff1d5;-webkit-text-stroke:3px #473018;paint-order:stroke fill;margin-top:1px;font-size:12px}.upgrade-compact .loadout-slot small{display:none}.upgrade-compact .loadout-inventory{gap:5px;max-height:none;padding:18px 22px 14px}.upgrade-compact .loadout-inventory h2{font-size:17px}.upgrade-compact .loadout-filter{padding:2px 8px;font-size:12px}.upgrade-compact .loadout-grid{grid-template-columns:repeat(auto-fill,minmax(70px,1fr))}.upgrade-compact .loadout-piece-node{width:46px}.upgrade-compact .loadout-detail{gap:10px;min-height:64px;padding:18px 28px}.upgrade-compact .loadout-detail h2{margin-bottom:1px;font-size:15px}.upgrade-compact .loadout-detail h2 small{margin-left:6px;font-size:12px}.upgrade-compact .loadout-detail p{font-size:12.5px;line-height:1.25}.upgrade-compact .loadout-actions{flex-direction:column;gap:4px}.upgrade-compact .loadout-actions .upgrade-action{white-space:nowrap;min-width:128px;min-height:32px;padding:4px 12px;font-size:14px!important}.upgrade-narrow .loadout-layout{grid-template-columns:var(--loadout-board-width) minmax(220px, 1fr)}.upgrade-narrow .loadout-hero{display:none}.upgrade-narrow .loadout-actions{flex-direction:column;gap:4px}@media (prefers-reduced-motion:reduce){.loadout-slot,.loadout-piece,.loadout-filter{transition:none}}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-hebrew-wght-normal-DdnsCkLr.woff2)format("woff2-variations");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-latin-ext-wght-normal-CYrqKuxd.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-latin-wght-normal-DM6njrJ3.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ff-font-display:"Fredoka Variable", "Nunito Variable", system-ui, sans-serif;--ff-font-body:"Nunito Variable", system-ui, "Segoe UI", sans-serif;--ff-font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ff-text-xs:12px;--ff-text-sm:14px;--ff-text-md:16px;--ff-text-lg:20px;--ff-text-xl:24px;--ff-text-2xl:32px;--ff-text-3xl:40px;--ff-ink:#59351d;--ff-ink-soft:#825334;--ff-ink-muted:#7d5a3b;--ff-ink-inverse:#fffaf0;--ff-ink-stroke:#3f2718;--ff-page:#f7e9c7;--ff-surface:#fff9ea;--ff-surface-raised:#fffdf6;--ff-surface-sunken:#f1dcb0;--ff-scrim:#1c120a94;--ff-gold:#e5aa42;--ff-gold-deep:#bd8c42;--ff-edge:#94652e;--ff-line:#e6c88c;--ff-go-top:#6ad54a;--ff-go-bottom:#2f9a22;--ff-go-edge:#1f6b15;--ff-blue-top:#3cc4ee;--ff-blue-bottom:#0a7fb0;--ff-blue-edge:#05587a;--ff-danger-top:#ec6a5e;--ff-danger-bottom:#b3261e;--ff-danger-edge:#7c1813;--ff-success:#2f7a28;--ff-warning:#b86a0c;--ff-error:#b3261e;--ff-info:#1f6f9c;--ff-lives:#c0453a;--ff-money:#8d6721;--ff-wave:#5e6f3c;--ff-space-1:4px;--ff-space-2:8px;--ff-space-3:12px;--ff-space-4:16px;--ff-space-5:20px;--ff-space-6:24px;--ff-space-8:32px;--ff-radius-sm:8px;--ff-radius-md:12px;--ff-radius-lg:16px;--ff-radius-xl:24px;--ff-radius-pill:999px;--ff-shadow-edge:0 3px 0 var(--ff-edge);--ff-shadow-raised:0 12px 32px #291e3257;--ff-tap:44px;--ff-focus:#1f7fc4;--ff-focus-ring:0 0 0 3px #fffaf0, 0 0 0 6px var(--ff-focus);--ff-dur-fast:.12s;--ff-dur:.2s;--ff-dur-slow:.32s;--ff-ease:cubic-bezier(.2, .8, .2, 1);--ff-ease-out-back:cubic-bezier(.34, 1.4, .64, 1)}@media (prefers-reduced-motion:reduce){:root{--ff-dur-fast:0s;--ff-dur:0s;--ff-dur-slow:0s}}:where(button,[role=button],[tabindex],a,input,select,summary):focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}.ff-btn{--btn-top:#fff8da;--btn-bottom:#efdcaa;--btn-edge:var(--ff-edge);--btn-rim:var(--ff-gold-deep);--btn-ink:var(--ff-ink);justify-content:center;align-items:center;gap:var(--ff-space-2);min-height:var(--ff-tap);border:2px solid var(--btn-rim);border-radius:var(--ff-radius-lg);background:linear-gradient(var(--btn-top), var(--btn-bottom));box-shadow:0 3px 0 var(--btn-edge), inset 0 2px 0 #ffffff59;color:var(--btn-ink);font-family:var(--ff-font-display);font-size:var(--ff-text-md);letter-spacing:.01em;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:transform var(--ff-dur-fast) var(--ff-ease), filter var(--ff-dur-fast) var(--ff-ease), box-shadow var(--ff-dur-fast) var(--ff-ease);padding:8px 18px;font-weight:700;line-height:1.15;display:inline-flex;position:relative}.ff-btn>svg{flex:none;width:1.15em;height:1.15em}.ff-btn--primary,.ff-btn--secondary,.ff-btn--danger{--btn-rim:#ffdd76;--btn-ink:#fff;-webkit-text-stroke:2px var(--btn-edge);paint-order:stroke fill;text-shadow:0 2px #321c0c8c}.ff-btn--primary{--btn-top:var(--ff-go-top);--btn-bottom:var(--ff-go-bottom);--btn-edge:var(--ff-go-edge)}.ff-btn--secondary{--btn-top:var(--ff-blue-top);--btn-bottom:var(--ff-blue-bottom);--btn-edge:var(--ff-blue-edge)}.ff-btn--danger{--btn-top:var(--ff-danger-top);--btn-bottom:var(--ff-danger-bottom);--btn-edge:var(--ff-danger-edge)}.ff-btn--ghost{--btn-top:transparent;--btn-bottom:transparent;--btn-rim:transparent;box-shadow:none;color:var(--ff-ink-soft)}.ff-btn--icon{min-width:var(--ff-tap);border-radius:var(--ff-radius-md);padding:0}.ff-btn--sm{min-height:36px;font-size:var(--ff-text-sm);border-radius:var(--ff-radius-md);padding:4px 12px}.ff-btn--sm.ff-btn--icon{min-width:36px;padding:0}.ff-btn--lg{min-height:56px;font-size:var(--ff-text-xl);border-radius:var(--ff-radius-xl);padding:10px 28px}.ff-btn--block{width:100%;display:flex}@media (hover:hover){.ff-btn:not(:disabled):hover{filter:brightness(1.07);transform:translateY(-1px)}}.ff-btn:not(:disabled):active{box-shadow:0 1px 0 var(--btn-edge), inset 0 2px 0 #ffffff40;transform:translateY(2px)scale(.98)}.ff-btn:disabled{cursor:default;filter:saturate(.4);opacity:.6}.ff-btn:focus-visible{outline:3px solid var(--ff-focus);outline-offset:3px}.ff-panel{border:3px solid var(--ff-gold);border-radius:var(--ff-radius-xl);background:linear-gradient(var(--ff-surface-raised), var(--ff-surface));box-shadow:0 4px 0 var(--ff-gold-deep), var(--ff-shadow-raised);color:var(--ff-ink)}.ff-card{border:2px solid var(--ff-line);border-radius:var(--ff-radius-lg);background:var(--ff-surface);color:var(--ff-ink);box-shadow:inset 0 1px #fff,0 2px #e2c48a}.ff-title{color:#fff5de;font-family:var(--ff-font-display);-webkit-text-stroke:3px #613719;paint-order:stroke fill;text-shadow:0 3px #3c1e0c73;margin:0;font-weight:700;line-height:1.1}.ff-eyebrow{color:var(--ff-ink-soft);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);letter-spacing:.08em;text-transform:uppercase;margin:0;font-weight:700}.ff-muted{color:var(--ff-ink-muted)}.ff-chip{border-radius:var(--ff-radius-pill);background:var(--ff-surface-sunken);min-height:24px;color:var(--ff-ink);font-family:var(--ff-font-display);font-size:var(--ff-text-xs);white-space:nowrap;align-items:center;gap:4px;padding:2px 10px;font-weight:700;display:inline-flex}.ff-chip>svg{width:14px;height:14px}.ff-badge{border-radius:var(--ff-radius-pill);background:var(--ff-danger-bottom);color:#fff;min-width:20px;height:20px;font-family:var(--ff-font-display);place-items:center;padding:0 6px;font-size:12px;font-weight:700;display:inline-grid;box-shadow:0 0 0 2px #fff}.ff-progress{border-radius:var(--ff-radius-pill);background:var(--ff-surface-sunken);height:10px;position:relative;overflow:hidden;box-shadow:inset 0 1px 2px #6137194d}.ff-progress>span{width:var(--value,0%);border-radius:inherit;background:linear-gradient(var(--ff-go-top), var(--ff-go-bottom));transition:width var(--ff-dur-slow) var(--ff-ease);position:absolute;inset:0 auto 0 0}.ff-tabs{gap:var(--ff-space-2);scrollbar-width:none;display:flex;overflow-x:auto}.ff-tab{border:2px solid var(--ff-line);border-radius:var(--ff-radius-pill);background:var(--ff-surface);min-height:36px;color:var(--ff-ink-soft);font-family:var(--ff-font-display);font-size:var(--ff-text-sm);cursor:pointer;flex:none;padding:4px 14px;font-weight:700}.ff-tab[aria-selected=true]{border-color:var(--ff-gold-deep);background:linear-gradient(#ffe39a, var(--ff-gold));color:var(--ff-ink);box-shadow:0 2px 0 var(--ff-gold-deep)}.ff-modal{max-width:min(560px,100vw - 32px);max-height:calc(100vh - 24px);color:var(--ff-ink);background:0 0;border:0;padding:0;overflow:visible}.ff-modal::backdrop{background:var(--ff-scrim)}.ff-modal[open]{animation:ff-pop-in var(--ff-dur) var(--ff-ease-out-back)}.ff-modal[open]::backdrop{animation:ff-fade-in var(--ff-dur) var(--ff-ease)}.ff-modal-body{gap:var(--ff-space-3);max-height:calc(100vh - 24px);padding:var(--ff-space-5) var(--ff-space-6);flex-direction:column;display:flex;overflow-y:auto}.ff-toast-host{bottom:max(16px, env(safe-area-inset-bottom));z-index:1000;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.ff-toast{border:2px solid var(--ff-gold);border-radius:var(--ff-radius-lg);background:var(--ff-surface-raised);max-width:min(520px,100vw - 32px);box-shadow:0 3px 0 var(--ff-gold-deep), var(--ff-shadow-raised);color:var(--ff-ink);font-family:var(--ff-font-body);font-size:var(--ff-text-sm);animation:ff-toast-in var(--ff-dur) var(--ff-ease-out-back);align-items:center;gap:10px;padding:10px 16px;font-weight:700;display:flex}.ff-toast[data-tone=error]{border-color:var(--ff-error);box-shadow:0 3px 0 var(--ff-danger-edge), var(--ff-shadow-raised)}.ff-toast>svg{flex:none;width:20px;height:20px}.ff-toast.is-leaving{opacity:0;transition:opacity var(--ff-dur) var(--ff-ease), transform var(--ff-dur) var(--ff-ease);transform:translateY(8px)}.ff-curtain{z-index:2000;opacity:0;pointer-events:none;transition:opacity var(--ff-dur) var(--ff-ease);background:#1d130b;position:fixed;inset:0}.ff-curtain.is-closed{opacity:1;pointer-events:auto}@keyframes ff-fade-in{0%{opacity:0}}@keyframes ff-pop-in{0%{opacity:0;transform:scale(.94)}}@keyframes ff-toast-in{0%{opacity:0;transform:translateY(10px)scale(.96)}}@media (prefers-reduced-motion:reduce){.ff-modal[open],.ff-modal[open]::backdrop,.ff-toast{animation:none}}.ff-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--ff-font-body);background:#10131a}*{box-sizing:border-box}html,body,#game{background:#10131a;width:100%;min-width:0;height:100dvh;margin:0}html,body{overflow:clip}#game{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flow-root;position:relative}.game-dom-overlay{top:0;left:0}canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;max-width:100%;max-height:100%;display:block}.home-menu{font-family:var(--ff-font-body);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.home-menu img{pointer-events:none;width:100%;height:100%;display:block}.home-background{object-fit:cover;position:absolute;inset:0}.home-title{aspect-ratio:1947/808;width:380px;position:absolute;top:74px;transform:translate(-50%,-50%)}.home-subtitle{color:#fff4ce;-webkit-text-stroke:2px #592608;paint-order:stroke fill;background:#9c551f;border:2px solid #eeb15a;border-radius:12px;place-items:center;width:62%;height:34px;font-size:17px;font-weight:700;display:grid;position:absolute;top:72%;left:50%;transform:translate(-50%,-50%)}.home-button{transition:transform var(--ff-dur) var(--ff-ease-out-back), filter var(--ff-dur-fast) var(--ff-ease);cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:12px;padding:0;display:block;position:absolute;transform:translate(-50%,-50%)}.home-button:focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}@media (hover:hover) and (pointer:fine){.home-button:hover{transform:translate(-50%,-50%)scale(1.06)}}.home-button img{clip-path:inset(0 0 34%)}.home-badge{min-width:calc(var(--button-size) * .15);height:calc(var(--button-size) * .15);background:var(--ff-danger-bottom);color:#fff;font-family:var(--ff-font-display);font-size:calc(var(--button-size) * .09);pointer-events:none;animation:ff-pop-in var(--ff-dur-slow) var(--ff-ease-out-back) both;border-radius:999px;place-items:center;padding:0 6px;font-weight:700;display:grid;position:absolute;top:6%;right:12%;box-shadow:0 0 0 3px #fff,0 3px 6px #0000004d}.home-button:active{transform:translate(-50%,-50%)scale(.96)}.home-button-label{font-family:var(--ff-font-display);border-radius:calc(var(--button-size) * .06);color:#fff8e5;white-space:nowrap;-webkit-text-stroke:var(--label-stroke) #592608;paint-order:stroke fill;background:#98541b;border-style:solid;border-color:#f7b42b;outline:3px solid #683109;place-items:center;padding-block:3px;font-weight:700;line-height:1.2;display:grid;position:absolute;top:66%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 1px #ffe593}.options-window{color:var(--ff-ink);font-family:var(--ff-font-body);font-size:var(--options-font-size);-webkit-user-select:none;user-select:none;touch-action:pan-y;background:#00000094}.options-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.options-panel-art{z-index:0;pointer-events:none;display:flex;position:absolute;inset:0}.options-panel-art svg{flex:none;height:100%;display:block}.options-panel-art .options-panel-stretch{flex:1 1 0;min-width:0;margin-inline:-1px}.options-panel-art .options-panel-fixed{z-index:1;position:relative}.options-title{left:var(--options-title-inset);right:var(--options-title-inset);color:#fff5de;font-size:var(--options-title-size);text-align:center;-webkit-text-stroke:3px #613719;paint-order:stroke fill;margin:0;font-weight:900;line-height:1.1;position:absolute;top:17%;transform:translateY(-50%)}.options-content{top:25.5%;right:var(--options-inset-x);bottom:12%;left:var(--options-inset-x);gap:var(--options-gap);overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#bb7b2e #f8e4b5;flex-direction:column;padding:6px 8px;display:flex;position:absolute;overflow-y:auto}.options-content[hidden],.options-account-buttons .options-button[hidden],.options-account-form [hidden]{display:none}.options-account-form .options-button{flex:none}.options-input{flex-shrink:0;gap:4px;font-weight:700;display:grid}.options-input input{color:#3d2412;min-height:40px;font:inherit;-webkit-user-select:text;user-select:text;background:#fffaf0;border:2px solid #c79a4e;border-radius:12px;padding:6px 12px;font-weight:400}.options-input input:focus-visible{outline:3px solid var(--ff-focus);outline-offset:1px}.options-form-hint{color:#825334;margin:0;font-size:.85em;font-weight:400}.options-form-message{color:#2f6b29;text-align:center;flex-shrink:0;margin:0;font-weight:700;line-height:1.35}.options-form-message.is-error{color:#b3261e}.options-link{color:#7a4a1c;font:inherit;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:2px;font-size:.9em;text-decoration:underline}.options-link:focus-visible{outline:3px solid var(--ff-focus);border-radius:6px}.options-button-row{justify-content:center;gap:16px;display:flex}.options-button-row .options-button:not(.options-square-button){padding-inline:12px}.options-button{--button-height:44px;width:100%;min-width:0;height:auto;min-height:var(--button-height);color:#fff;font:inherit;cursor:pointer;touch-action:pan-y;background:0 0;border:0;border-radius:18px;flex:1 0 0;place-items:center;padding:6px 24px;font-weight:700;line-height:1.25;transition:filter .1s,transform .1s;display:grid;position:relative}.options-button-art{pointer-events:none;display:flex;position:absolute;inset:0;overflow:hidden}.options-button-art svg{height:100%;display:block}.options-button-cap{flex:0 0 calc(var(--button-height) / 2);width:calc(var(--button-height) / 2)}.options-button-center{flex:1;min-width:0}.options-button-text{z-index:1;text-align:center;-webkit-text-stroke:1px #3f291d;paint-order:stroke fill;pointer-events:none;max-width:100%;position:relative}.options-square-button{--button-height:48px;flex:0 0 var(--button-height);width:var(--button-height);border-radius:12px;padding:0;font-size:30px}.options-square-button svg{width:100%}.options-main{gap:0;padding:0;overflow:hidden}.options-body{gap:var(--options-gap);overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#bb7b2e #f8e4b5;flex-direction:column;flex:1;min-height:0;padding:4px 6px 10px;display:flex;overflow-y:auto}.options-group{background:#fff9ea;border:2px solid #e6c88c;border-radius:16px;flex-direction:column;flex-shrink:0;padding:8px 14px 10px;display:flex;box-shadow:inset 0 1px #fff,0 2px #e2c48a}.options-group[hidden]{display:none}.options-group-title{color:#a0703c;letter-spacing:.08em;text-transform:uppercase;margin:0 0 2px;font-size:.72em;font-weight:900}.options-row{justify-content:space-between;align-items:center;gap:12px;min-height:52px;padding:6px 0;display:flex}.options-row[hidden]{display:none}.options-row+.options-row{border-top:1px solid #efdcb6}.options-row-label{font-weight:700}.options-row-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.options-row-copy small{color:#9b7552;font-size:.8em;line-height:1.3}.options-segmented{background:#f1dcb0;border-radius:999px;flex-shrink:0;padding:3px;display:inline-flex;box-shadow:inset 0 1px 3px #61371947}.options-segment{color:#7a5230;min-width:92px;min-height:36px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:4px 14px;font-weight:700}.options-segment[aria-pressed=true]{color:#fff;text-shadow:0 1px 1px #1d4f12;background:linear-gradient(#6ad54a,#2f9a22);box-shadow:0 2px #1f6b15,inset 0 1px #fff6}.options-stepper{flex-shrink:0;align-items:center;gap:10px;display:flex}.options-stepper .options-square-button{--button-height:38px;font-size:24px}.options-stepper-value{font-variant-numeric:tabular-nums;text-align:center;min-width:4.5ch;font-weight:900}.options-switch{cursor:pointer;background:#d7bf96;border:0;border-radius:999px;flex:none;width:58px;height:32px;padding:0;transition:background .15s;position:relative;box-shadow:inset 0 2px 3px #61371959}.options-switch[aria-checked=true]{background:linear-gradient(#6ad54a,#2f9a22)}.options-switch-knob{background:#fffaf0;border-radius:50%;width:26px;height:26px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 2px 2px #3c1e0b59}.options-switch[aria-checked=true] .options-switch-knob{transform:translate(26px)}.options-account-identity{align-items:center;gap:12px;padding:6px 0 10px;display:flex}.options-account-identity strong{overflow-wrap:anywhere}.options-account[data-state=synced] .options-account-identity small,.options-account[data-state=notice] .options-account-identity small{color:#2f7a28}.options-account[data-state=error] .options-account-identity small{color:#b3261e}.options-avatar{color:#fff;text-shadow:0 1px 1px #8a4f17;background:linear-gradient(#ffd27a,#f0a93b);border-radius:50%;flex:0 0 44px;place-items:center;width:44px;height:44px;font-size:20px;font-weight:900;display:grid;overflow:hidden;box-shadow:0 0 0 2px #fff,0 0 0 4px #e0b066}.options-avatar img{object-fit:cover;width:100%;height:100%}.options-avatar .options-icon{fill:#fff;width:26px;height:26px}.options-account-buttons{gap:10px}.options-account-buttons .options-button{--button-height:42px}.options-button:has(.options-icon){justify-content:center;align-items:center;gap:8px;display:flex}.options-button .options-icon{z-index:1;fill:#fff;filter:drop-shadow(0 1px #3f291d);flex:0 0 20px;width:20px;height:20px;position:relative}.options-footer{border-top:1px solid #71491d33;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 6px 2px;display:flex}.options-footer .options-button{flex:0 200px}.options-install{color:#fff;min-height:36px;font:inherit;text-shadow:0 1px 1px #1d4f12;white-space:nowrap;cursor:pointer;background:linear-gradient(#6ad54a,#2f9a22);border:0;border-radius:999px;flex-shrink:0;padding:4px 18px;font-weight:700;box-shadow:0 2px #1f6b15,inset 0 1px #fff6}.options-install[hidden]{display:none}.options-danger{white-space:nowrap;background:linear-gradient(var(--ff-danger-top), var(--ff-danger-bottom));min-height:40px;box-shadow:0 3px 0 var(--ff-danger-edge), inset 0 2px 0 #ffffff4d;color:#fff;font:inherit;font-family:var(--ff-font-display);text-shadow:0 2px #5a0e088c;cursor:pointer;transition:transform var(--ff-dur-fast) var(--ff-ease), filter var(--ff-dur-fast) var(--ff-ease);border:2px solid #ffb4a8;border-radius:12px;flex-shrink:0;align-items:center;gap:6px;padding:6px 16px 6px 12px;font-size:.9em;font-weight:700;display:inline-flex}.options-danger svg{filter:drop-shadow(0 1px #5a0e088c);flex:none;width:1.15em;height:1.15em}.options-danger:active{box-shadow:0 1px 0 var(--ff-danger-edge);transform:translateY(2px)}.options-compact .options-body{gap:8px;padding:2px 2px 6px}.options-compact .options-group{border-radius:12px;padding:4px 10px 6px}.options-compact .options-row{gap:8px;min-height:40px;padding:3px 0}.options-compact .options-row-copy small,.options-compact .options-account-identity small{display:none}.options-compact .options-install-row.is-ios .options-row-copy small{display:block}.options-compact .options-segment{min-width:0;min-height:30px;padding:2px 8px}.options-compact .options-stepper{gap:6px}.options-compact .options-stepper .options-square-button{--button-height:32px;font-size:20px}.options-compact .options-switch{width:50px;height:28px}.options-compact .options-switch-knob{width:22px;height:22px}.options-compact .options-switch[aria-checked=true] .options-switch-knob{transform:translate(22px)}.options-compact .options-account-identity{padding:2px 0 6px}.options-compact .options-avatar{flex-basis:32px;width:32px;height:32px;font-size:16px}.options-compact .options-avatar .options-icon{width:20px;height:20px}.options-compact .options-account-buttons .options-button{--button-height:36px}.options-compact .options-footer{padding-top:6px}.options-compact .options-danger{min-height:36px;padding:4px 10px;font-size:.8em}.options-segment:focus-visible,.options-switch:focus-visible,.options-danger:focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}@media (hover:hover) and (pointer:fine){.options-segment[aria-pressed=false]:hover{background:#ffffff8c}.options-danger:hover{filter:brightness(1.08)}}@media (prefers-reduced-motion:reduce){.options-switch,.options-switch-knob{transition:none}}.options-confirmation-text{text-align:center;flex-shrink:0;margin:auto 0 12px;line-height:1.6}.options-confirmation .options-button{flex:none}.options-confirmation .options-button:last-child{margin-bottom:auto}.options-button:focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}@media (hover:hover) and (pointer:fine){.options-button:hover{filter:brightness(1.12)}}.options-button:active{filter:brightness(.94);transform:scale(.97)}@media (prefers-reduced-motion:reduce){.options-button{transition:none}}#rotate-gate{z-index:9999;padding:24px;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));color:#e8ecf2;font-family:var(--ff-font-body);text-align:center;background:#10131a;justify-content:center;align-items:center;font-size:18px;line-height:1.4;display:none;position:fixed;inset:0}#rotate-gate.is-visible{display:flex}.archive-view{color:var(--ff-ink);font-family:var(--ff-font-body);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;container-type:size}.archive-view[hidden]{display:none!important}.archive-background,.archive-shade{width:100%;height:100%;position:absolute;inset:0}.archive-background{object-fit:cover;pointer-events:none}.archive-shade{pointer-events:none;background:linear-gradient(#27140961,#271409b3)}.archive-shell{flex-direction:column;gap:22px;max-width:1160px;height:100%;margin:0 auto;padding:24px 28px;display:flex;position:relative}.archive-header{text-align:center;flex:none;grid-template-columns:124px 1fr 124px;align-items:center;gap:16px;display:grid}.archive-header h1{color:#fff3d0;-webkit-text-stroke:3px #653317;paint-order:stroke fill;text-shadow:0 3px #653317;margin:0;font-size:36px;font-weight:900;line-height:1.1}.archive-subtitle{color:#ffe4a4;text-shadow:0 2px 2px #39200d;margin:8px 0 0;font-size:16px}.archive-back{box-shadow:0 3px 0 var(--ff-ink), inset 0 2px 0 #ffffff4d;color:#fff;font:inherit;cursor:pointer;text-shadow:0 2px 1px #4b2918;background:linear-gradient(#30bce9,#078fc9 55%,#067ba9);border:2px solid #ffdd76;border-radius:16px;min-height:44px;padding:8px 18px;font-size:18px;font-weight:700}.archive-content{flex:1;grid-template-columns:228px minmax(0,1fr);gap:22px;min-height:0;display:grid}.archive-nav{scrollbar-width:thin;scrollbar-color:#e7b45c transparent;flex-direction:column;gap:12px;padding:3px 5px 6px;display:flex;overflow-y:auto}.archive-category{min-height:92px;color:var(--ff-ink);font:inherit;text-align:left;cursor:pointer;background:linear-gradient(#f8e5b3,#e9c788);border:2px solid #a76628;border-radius:20px;flex-shrink:0;align-items:center;gap:12px;padding:8px 12px;display:flex;box-shadow:0 4px #60391c}.archive-category[aria-pressed=true]{background:linear-gradient(#ffdb70,#f6b83b);border-color:#fff0b1;box-shadow:0 4px #824313,0 0 0 2px #df982f}.archive-category img{object-fit:contain;flex-shrink:0;width:64px;height:64px}.archive-category-copy{flex-direction:column;gap:6px;min-width:0;font-size:18px;font-weight:700;display:flex}.archive-category-copy small{color:#855e3b;font-size:13px;font-weight:400}.archive-panel{background:#fff2d2;border:6px solid #e5aa42;border-radius:26px;flex-direction:column;min-width:0;min-height:0;padding:22px;display:flex;box-shadow:0 0 0 2px #70401f,inset 0 0 0 2px #ffdb7b,0 8px #3c1e0b73}.archive-panel-header{border-bottom:1px solid #dfc393;justify-content:space-between;align-items:center;gap:16px;padding:0 3px 14px;display:flex}.archive-panel h2{margin:0;font-size:26px}.archive-summary{color:#8d633e;flex-shrink:0;margin:0;font-size:14px}.archive-list{overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#bf8435 #f6e4bd;flex-direction:column;gap:10px;min-height:0;padding:14px 5px 6px;display:flex;overflow-y:auto}.archive-entry{width:100%;min-height:76px;color:var(--ff-ink);font:inherit;cursor:pointer;text-align:left;background:linear-gradient(135deg,#fffcf0,#f7e7c2);border:2px solid #dab266;border-radius:16px;flex-shrink:0;align-items:center;gap:16px;padding:10px 18px;display:flex;position:relative;box-shadow:0 3px #d6b276}.archive-entry-icon{object-fit:contain;flex-shrink:0;width:48px;height:48px}.archive-entry-title{overflow-wrap:anywhere;flex:1;font-size:19px;font-weight:700}.archive-entry-state{color:#a76c20;font-size:30px}.archive-entry-state:not([aria-hidden]){color:#814915;background:#ffd46a;border-radius:12px;padding:5px 9px;font-size:11px;font-weight:700}.archive-entry:disabled{color:#9a8367;cursor:default;background:#f2e5cf;border-color:#dfceb0;box-shadow:0 2px #e2cfab}.archive-entry:disabled img{filter:grayscale();opacity:.32}.archive-entry:disabled .archive-entry-state{opacity:.55;font-size:18px}.archive-empty{color:#8c6240;flex-shrink:0;align-items:center;gap:18px;min-height:128px;padding:16px;display:flex}.archive-empty img{object-fit:contain;opacity:.75;width:84px;height:84px}.archive-empty strong{font-size:18px}.archive-empty p{margin:8px 0 0;font-size:15px;line-height:1.5}.archive-reader{box-sizing:border-box;width:min(680px,100vw - 32px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ff-ink);font-family:var(--ff-font-body);background:#fff2d2;border:6px solid #e5aa42;border-radius:24px;margin:auto;padding:24px;box-shadow:0 0 0 2px #70401f,inset 0 0 0 2px #ffdb7b,0 10px 30px #0006}.archive-reader[open]{flex-direction:column;gap:16px;display:flex}.archive-reader::backdrop{background:#1d0f05bf}.archive-reader header{flex:none;align-items:center;gap:16px;display:flex}.archive-reader header img{object-fit:contain;width:64px;height:64px}.archive-reader h2{margin:0;font-size:24px;line-height:1.2}.archive-reader-body{overscroll-behavior:contain;white-space:pre-wrap;scrollbar-width:thin;scrollbar-color:#bf8435 #f6e4bd;-webkit-user-select:text;user-select:text;min-height:0;padding:4px 8px;font-size:18px;line-height:1.65;overflow-y:auto}.archive-reader-close{flex:none;align-self:center;min-width:132px}.archive-view button:focus-visible,.archive-reader button:focus-visible,.archive-reader-body:focus-visible{outline:3px solid var(--ff-focus);outline-offset:3px}.archive-view[data-compact=true] .archive-shell{gap:12px;padding:12px 20px}.archive-view[data-compact=true] .archive-header{grid-template-columns:108px 1fr 108px;gap:10px}.archive-view[data-compact=true] .archive-header h1{font-size:28px}.archive-view[data-compact=true] .archive-subtitle{margin-top:4px;font-size:13px}.archive-view[data-compact=true] .archive-content{grid-template-columns:174px minmax(0,1fr);gap:14px}.archive-view[data-compact=true] .archive-nav{gap:8px}.archive-view[data-compact=true] .archive-category{border-radius:14px;gap:6px;min-height:62px;padding:5px 8px}.archive-view[data-compact=true] .archive-category img{width:44px;height:44px}.archive-view[data-compact=true] .archive-category-copy{gap:3px;font-size:15px}.archive-view[data-compact=true] .archive-category-copy small{font-size:12px}.archive-view[data-compact=true] .archive-panel{border-width:4px;border-radius:20px;padding:12px}.archive-view[data-compact=true] .archive-panel-header{padding-bottom:8px}.archive-view[data-compact=true] .archive-panel h2{font-size:21px}.archive-view[data-compact=true] .archive-summary{font-size:12px}.archive-view[data-compact=true] .archive-list{gap:8px;padding-top:10px}.archive-view[data-compact=true] .archive-entry{gap:12px;min-height:62px;padding:8px 12px}.archive-view[data-compact=true] .archive-entry-icon{width:36px;height:36px}.archive-view[data-compact=true] .archive-entry-title{font-size:16px}.archive-view[data-compact=true] .archive-empty{gap:12px;min-height:94px;padding:8px}.archive-view[data-compact=true] .archive-empty img{width:62px;height:62px}.archive-view[data-compact=true] .archive-empty strong{font-size:16px}.archive-view[data-compact=true] .archive-empty p{margin-top:4px;font-size:14px}.archive-view[data-small=true] .archive-shell{gap:8px;padding:8px 12px}.archive-view[data-small=true] .archive-header{text-align:left;grid-template-columns:88px 1fr}.archive-view[data-small=true] .archive-header h1{font-size:23px}.archive-view[data-small=true] .archive-subtitle{display:none}.archive-view[data-small=true] .archive-back{padding:6px 10px;font-size:15px}.archive-view[data-small=true] .archive-content{grid-template-columns:136px minmax(0,1fr);gap:8px}.archive-view[data-small=true] .archive-category{gap:4px;min-height:52px;padding:4px}.archive-view[data-small=true] .archive-category img{width:32px;height:32px}.archive-view[data-small=true] .archive-category-copy{font-size:13px}.archive-view[data-small=true] .archive-panel{padding:8px}.archive-view[data-small=true] .archive-panel h2{font-size:18px}.archive-view[data-small=true] .archive-summary{font-size:11px}.archive-view[data-small=true] .archive-panel-header{gap:6px}@media (height<=550px){.archive-reader{max-height:calc(100dvh - 20px);padding:14px}.archive-reader[open]{gap:10px}.archive-reader h2{font-size:20px}.archive-reader header img{width:44px;height:44px}.archive-reader-body{font-size:16px;line-height:1.5}}@media (hover:hover) and (pointer:fine){.archive-category:hover,.archive-entry:not(:disabled):hover,.archive-back:hover{filter:brightness(1.06)}}.options-button:disabled{filter:grayscale(.4)opacity(.7);cursor:progress}.menu-notice{color:#fff3d0;text-align:center;white-space:pre-line;pointer-events:none;background:#5a3418f0;border:2px solid #f0c060;border-radius:14px;padding:10px 16px;font:700 15px/1.35 Arial,sans-serif;box-shadow:0 4px #3c1e0b80}.ff-dialog{border:3px solid var(--ff-gold);border-radius:var(--ff-radius-xl);background:linear-gradient(var(--ff-surface-raised), var(--ff-surface));color:var(--ff-ink);font-family:var(--ff-font-body);padding:var(--ff-space-5) var(--ff-space-6);width:min(560px,100vw - 32px);max-height:calc(100dvh - 24px);box-shadow:0 4px 0 var(--ff-gold-deep), var(--ff-shadow-raised);text-align:left;overflow-y:auto}.ff-dialog[open]{animation:ff-pop-in var(--ff-dur) var(--ff-ease-out-back)}.ff-dialog::backdrop{background:var(--ff-scrim)}.ff-dialog h2{font-family:var(--ff-font-display);font-size:var(--ff-text-xl);text-align:center;margin:0 0 6px;font-weight:700}.ff-dialog p{font-size:var(--ff-text-sm);margin:6px 0;line-height:1.4}.ff-dialog .ff-dialog-sub{color:var(--ff-ink-muted);font-size:var(--ff-text-xs);text-align:center;font-weight:700}.ff-dialog button{min-height:40px;font:inherit;font-family:var(--ff-font-display);color:var(--ff-ink);cursor:pointer;border:2px solid var(--ff-gold-deep);border-radius:var(--ff-radius-md);box-shadow:0 3px 0 var(--ff-edge);touch-action:manipulation;background:linear-gradient(#fff8da,#efdcaa);padding:6px 14px;font-weight:700}.ff-dialog button:active:not(:disabled){box-shadow:0 1px 0 var(--ff-edge);transform:translateY(2px)}.ff-dialog button:disabled{cursor:default;opacity:.55}.ff-dialog button:focus-visible{outline:3px solid var(--ff-focus);outline-offset:2px}.ff-dialog .ff-dialog-close{min-width:140px;margin:12px auto 0;display:block}.ff-event-rules{color:#9f4d3e;margin:6px 0;padding-left:20px;font-size:13px;font-weight:700}.ff-event-maps{gap:8px;margin:8px 0;padding:0;list-style:none;display:grid}.ff-event-maps li{background:#fff8e3;border:1px solid #d8b474;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.ff-event-maps li span{flex:160px}.ff-event-maps li em{color:#4c8a3a;font-style:normal;font-weight:700}.ff-event-maps [data-play],.ff-board [data-retry]{background:linear-gradient(var(--ff-go-top), var(--ff-go-bottom));box-shadow:0 3px 0 var(--ff-go-edge);color:#fff;text-shadow:0 2px #1e460c8c;border-color:#ffdd76}.ff-board [data-retry]{margin:8px auto 0;display:block}.ff-board-offline{color:var(--ff-error);text-align:center;font-weight:700}.ff-event-locked{color:#a14b3c;text-align:center;font-weight:700}.ff-board table{border-collapse:collapse;width:100%;margin:6px 0;font-size:13px}.ff-board th,.ff-board td{text-align:left;border-bottom:1px solid #e2c793;padding:5px 6px}.ff-board td:last-child,.ff-board th:last-child{text-align:right;font-variant-numeric:tabular-nums}.ff-board tr.is-me td{background:#ffe9a8;font-weight:700}.ff-board .ff-board-me{text-align:center;font-weight:700}.options-nickname{flex-wrap:wrap;align-items:flex-end;gap:4px 10px;margin-top:8px;display:flex}.options-nickname .options-input{flex:180px}.options-nickname small{flex-basis:100%}.options-nickname[hidden]{display:none}
