@font-face{font-family:DotGothic;src:url('../assets/fonts/DotGothic16-Regular.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark;--bg:#141020;--panel:#251c39;--ink:#f9efd9;--muted:#b3a8c5;--line:#65517c;--gold:#f0c878;--purple:#c5a0f1;--shadow:#0d0a15;font-family:DotGothic,monospace;font-size:13px}*{box-sizing:border-box}body{margin:0;min-width:280px;color:var(--ink);background-color:var(--bg);background-image:linear-gradient(90deg,#21192a40 2px,transparent 2px),linear-gradient(#21192a40 2px,transparent 2px);background-size:48px 48px}button{color:inherit;font:inherit;cursor:pointer;touch-action:manipulation;border:2px solid #87709c;background:#332641;box-shadow:inset 2px 2px #5d466a,inset -2px -2px #21162c,0 3px #0b0712;padding:8px 12px;border-radius:0;line-height:1.5}button:hover:not(:disabled){background:#493251;border-color:#e1c2f0}button:active:not(:disabled){translate:0 2px;box-shadow:inset 2px 2px #24142f,inset -2px -2px #766079}button:focus-visible{outline:3px solid #ffe9a2;outline-offset:3px}button:disabled{opacity:.43;cursor:default}button.selected{border-color:#f1ce81;box-shadow:inset 0 0 0 2px #967342,0 0 0 1px #f1ce81}.small{font-size:11px;padding:6px 9px}.primary{display:flex;justify-content:center;align-items:center;gap:8px;background:#b97635;color:#fff8d8;border-color:#f7d598;box-shadow:inset 3px 3px #e7a64e,inset -3px -3px #724325,0 4px #0d0814;font-weight:bold;font-size:16px;padding:12px 16px;min-height:48px;text-shadow:2px 2px #765035}.primary:hover:not(:disabled){background:#d58b3e;border-color:#fff4c0}.primary>span{margin-left:auto}.secondary{background:#413456;font-size:12px;padding:9px 15px}.pixel{image-rendering:pixelated;object-fit:contain;user-select:none;pointer-events:none}h1,h2,h3,p{margin:0}h1{font-size:20px;font-weight:normal}h2{font-size:17px;line-height:1.4;letter-spacing:1px}h3{font-size:15px;font-weight:normal}.eyebrow{display:block;font-size:9px;letter-spacing:1.3px;color:var(--muted);margin-bottom:6px}.topbar{height:86px;max-width:1440px;padding:17px 32px;display:flex;justify-content:space-between;align-items:center;margin:auto;border-bottom:2px solid #3f304d;background:#191322e8}.brand{display:flex;align-items:center;gap:14px;font-size:25px;letter-spacing:3px}.brand small{display:block;color:#b2a4c1;font-size:10px;letter-spacing:2px;margin-top:5px}.brand-tower{font-size:24px;color:#eac783;border:2px solid #947c56;line-height:37px;box-shadow:inset 0 0 0 3px #332c32;padding:0 7px}.top-actions{display:flex;align-items:center;gap:9px}.best{font-size:10px;color:var(--muted);margin-right:10px}.best b{font-size:17px;color:var(--gold);margin-left:8px}.help-button{min-width:33px}.game-shell{display:grid;grid-template-columns:150px minmax(400px,1.28fr) minmax(310px,.9fr);align-items:start;gap:23px;max-width:1336px;margin:26px auto 0;padding:0 24px}.pixel-panel{position:relative;background:var(--panel);border:2px solid #8a709b;box-shadow:inset 0 0 0 3px #39284b,0 0 0 2px #100c17,0 5px 0 2px #0b0811}.pixel-panel:before,.pixel-panel:after{content:"";position:absolute;background:#e4cee8;width:4px;height:4px;top:2px;left:2px;pointer-events:none;z-index:2}.pixel-panel:after{left:auto;right:2px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.capacity{font-size:10px;color:#d6c4e1;border:1px solid #5c476e;padding:4px 8px;white-space:nowrap}.tower-title{padding:12px 0}.tower-title .eyebrow{color:var(--gold);font-size:8px;letter-spacing:1px}.tower-title h1{font-size:20px;margin-top:8px}.floor-number{display:flex;align-items:baseline;gap:8px;color:var(--gold);margin:8px 0}.floor-number>b{font-size:52px;line-height:1.2;text-shadow:3px 3px #6a4337}.floor-number>span{font-size:22px}.floor-number small{font-size:11px;color:#a592b9}.tower-title p{font-size:9px;line-height:1.8;color:#b6a5c4;letter-spacing:1px}.tower-map{display:flex;flex-direction:column;border-inline:5px solid #4d3b60;margin-top:17px;position:relative;box-shadow:0 0 0 2px #0b0912}.tower-map:before{content:"";position:absolute;top:-10px;left:-7px;right:-7px;height:9px;background:repeating-linear-gradient(90deg,#5c4970 0 17px,transparent 17px 28px)}.tower-floor{height:28px;display:flex;align-items:center;gap:8px;padding:0 6px;border-bottom:2px solid #21172d;background:#30243e;color:#927caa;font-size:10px}.tower-floor>span{width:10px;color:#b89dc6}.tower-floor>b{font-size:10px;white-space:nowrap}.tower-floor>i{width:5px;height:9px;background:#141020;box-shadow:0 -2px #5b4472;margin-left:auto}.tower-floor.current{background:#836343;color:#fff0bc;border-color:#cba677}.tower-floor.current>span{color:#ffe899}.tower-floor.current>i{background:#f8d47d;box-shadow:0 -2px #553637}.tower-floor.cleared{color:#b6cf9d;background:#304335}.tower-floor.cleared>span{color:#b4d391}.tower-floor.boss:not(.current){background:#432540;color:#d3abc9}.lives{display:flex;justify-content:space-between;align-items:center;padding:20px 0 17px;border-bottom:2px solid #3c2d4a}.lives small{font-size:10px;color:var(--muted)}.lives>span{font-size:19px;color:#ee8f8c;letter-spacing:2px}.lives i{font-style:normal;color:#76637a}.boon-summary{padding-top:17px}.boon-summary p{font-size:10px;line-height:1.9;color:var(--muted)}.boon-summary>div{display:flex;align-items:center;gap:5px;margin-top:8px;font-size:9px}.boon-summary img{width:23px;height:23px}.boon-summary>div>span{flex:1}.boon-summary b{color:var(--gold)}.adventure-column,.craft-column{display:flex;flex-direction:column;gap:20px;min-width:0}.arena{overflow:hidden}.arena-heading{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#352340;border-bottom:2px solid #785a83;font-size:12px}.floor-tag{background:#9e6449;padding:2px 7px;border:1px solid #d4a777;color:#ffe5b1;font-size:12px}.arena-heading>b{font-weight:normal}.phase-tag{font-size:10px;color:#dbb9e4;margin-left:auto}.battle-stage{height:188px;position:relative;background:#171329;isolation:isolate;overflow:hidden}#tower-scene{width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.fighter{position:absolute;width:100px;bottom:24px;text-align:center;z-index:1}.fighter>img{width:96px;height:96px;filter:drop-shadow(3px 3px 0 #100d24);transform-origin:bottom;animation:bob 2s steps(2,end) infinite}.fighter>span{display:block;font-size:9px;white-space:nowrap;text-shadow:1px 1px #0b0914;position:absolute;width:100%;top:99%}.fighter.player{left:13%}.fighter.enemy{right:12%}.fighter.enemy>img{animation:bobEnemy 2s steps(2,end) infinite;transform:scaleX(-1)}.fighter.enemy>span{color:#f5b09d}.stage-center{position:absolute;left:50%;top:42%;transform:translateX(-50%);z-index:1}.stage-center b{font-size:21px;color:#fae7b4;text-shadow:2px 2px #211327}#battle-fx{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}.attack-effect{position:absolute;top:25%;left:20%;width:64px;height:72px;animation:attackRight .75s steps(12,end) forwards;filter:drop-shadow(2px 2px #251625)}.attack-effect img{width:64px;height:64px}.attack-effect span{position:absolute;top:2px;right:-15px;font-size:21px;color:#ffe599;text-shadow:2px 0 #37203b,-2px 0 #37203b,0 2px #37203b,0 -2px #37203b}.attack-effect.from-enemy{left:auto;right:18%;animation:attackLeft .75s steps(12,end) forwards}.attack-effect.from-enemy span{color:#ff9691}.attack-effect.magic{filter:drop-shadow(3px 0 #9b79d9) drop-shadow(-3px 0 #69bdd7)}.attack-effect.hero-skill{width:96px;height:96px;top:12%}.attack-effect.hero-skill img{width:96px;height:96px}.attack-effect.hero-skill span{font-size:26px;color:#eee0ff}.support-effect{position:absolute;left:15%;top:35%;font-size:16px;color:#bdf8b0;text-shadow:2px 2px #223e36;animation:support .85s steps(6,end) forwards}@keyframes attackRight{0%{translate:0 15px;rotate:-35deg;opacity:1}50%{translate:calc(var(--travel, 200px) * .55) 0;rotate:30deg;opacity:1}80%{translate:var(--travel, 200px) 15px;rotate:65deg;opacity:1}100%{translate:var(--travel, 200px) -10px;opacity:0}}@keyframes attackLeft{0%{translate:0 0;rotate:35deg;opacity:1}70%{translate:calc(var(--travel, 200px) * -1) 15px;rotate:-65deg;opacity:1}100%{translate:calc(var(--travel, 200px) * -1) -10px;opacity:0}}@keyframes support{to{translate:0 -35px;opacity:0}}@keyframes bob{50%{transform:translateY(-2px)}}@keyframes bobEnemy{50%{transform:translateY(-2px) scaleX(-1)}}.health-row{display:flex;gap:20px;padding:12px 16px 0;background:#20182f}.health{flex:1;min-width:0}.health>div:first-child{display:flex;justify-content:space-between;gap:4px;font-size:9px}.health b{font-weight:normal;white-space:nowrap}.health>div>span{font-size:9px;color:#ddd0e0}.health-track{height:10px;border:2px solid #0b0913;box-shadow:0 0 0 1px #665175;background:#3c2337;margin-top:5px}.health-track>i{height:100%;display:block;background:#bd6891;box-shadow:inset 0 2px #eba5bf;max-width:100%}.enemy .health-track>i{background:#c26e59;box-shadow:inset 0 2px #f5b69b}.health>small{font-size:9px;color:#a8badc;display:block;margin-top:4px}.combat-bottom{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:8px 16px;background:#20182f}.skill-indicator{display:flex;align-items:center;gap:7px;min-width:125px}.skill-icon{color:var(--gold);font-size:21px}.skill-indicator b{font-size:10px;color:#e5caff;font-weight:normal}.skill-indicator small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.skill-track{height:3px;background:#4a345f;width:100%;margin-top:4px}.skill-track i{display:block;height:100%;background:#c6a1fd}.combat-log{display:flex;align-items:center;justify-content:flex-end;gap:4px;font-size:9px;min-width:0}.combat-log img{width:25px;height:25px}.combat-log b{color:var(--gold)}.combat-log>span{color:#d2bad7}.skill-flash{color:#e4bdff!important}.battle-controls{display:flex;gap:8px;align-items:center;padding:4px 15px 15px;background:#20182f}.battle-controls .primary{width:100%;font-size:15px;min-height:46px;padding:9px 16px}.track-name{font-size:9px;color:var(--muted);margin-left:auto}.pack-panel{padding:18px}.pack-layout{display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:17px;margin-top:16px}.bag{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));aspect-ratio:6/5;gap:3px;background:#0f0d17;position:relative;border:3px solid #100c1a;outline:1px solid #8c789c;box-shadow:0 0 0 5px #31243e}.cell{min-width:0;min-height:0;background:#191622;border:1px solid #514757;box-shadow:inset 1px 1px #292132;padding:0}.cell:nth-child(even){background:#1f1829}.cell:hover:not(:disabled){background:#3a3046}.bag-item{min-width:0;min-height:0;padding:6px;position:relative;z-index:1;display:grid;place-items:center;border:1px solid #ad9770;box-shadow:inset 0 0 0 2px #705844;background:#46382d;overflow:hidden;touch-action:none}.bag-item img{width:100%;height:100%;max-width:80px;max-height:80px;filter:drop-shadow(2px 2px #171120)}.bag-item.magic{background:#3b2d53;border-color:#bea0e0;box-shadow:inset 0 0 0 2px #655379}.bag-item.food{background:#2d3e32;border-color:#8fac76;box-shadow:inset 0 0 0 2px #4a6545}.bag-item.guard{background:#32394e;border-color:#91a9ce;box-shadow:inset 0 0 0 2px #536279}.bag-item.charm{background:#443248;border-color:#d49fbd;box-shadow:inset 0 0 0 2px #76576e}.bag-item.linked{outline:2px solid #c6e7a2;outline-offset:-3px}.item-level{position:absolute;left:3px;top:1px;letter-spacing:-2px;font-size:8px;color:#ffda88}.item-cd{position:absolute;right:2px;bottom:2px;font-size:8px;color:#f3ebd5;padding:0 2px;background:#120d1dbb}.charge{position:absolute;bottom:0;left:0;height:3px;background:#f3d291;width:var(--charge)}.bag-item.activated{animation:activate .3s steps(2,end)}@keyframes activate{from{filter:brightness(2)}to{filter:brightness(1)}}#placement-preview{pointer-events:none;z-index:3;background:#a2d69944;border:2px solid #b7e9a9}#placement-preview.invalid{background:#e9858b55;border-color:#ee8f88}.pack-tools{display:flex;gap:7px;align-items:center;justify-content:space-between;margin-top:12px}.pack-tools>span{font-size:8px;color:var(--muted)}.pack-tools button{padding:4px 6px;font-size:9px}kbd{font:inherit;font-size:9px;color:var(--gold);margin-left:4px}.hero-mini{display:flex;align-items:center;flex-direction:column;gap:7px;text-align:center;padding:5px 0}.hero-mini>img{width:64px;height:64px}.hero-mini>b{font-size:10px}.hero-mini>small{font-size:9px;line-height:1.65;color:var(--muted)}.hero-mini button{font-size:9px;padding:5px 7px}.rarity{font-size:9px;color:#e2d1eb;border:1px solid #8a719c;display:inline-block;line-height:1.35;padding:1px 4px;margin-right:4px}.rarity.R{color:#a6cfff;border-color:#658db5}.rarity.SR{color:#e3b4ff;border-color:#a078bd}.rarity.SSR{color:#ffdb89;border-color:#bf9357}.synergy-tip{border-top:1px dashed #695175;margin-top:13px;padding-top:12px;text-align:center}.synergy-tip>span{font-size:25px;color:var(--gold)}.synergy-tip p{font-size:9px;line-height:1.8;color:var(--muted)}.detail{display:flex;align-items:center;gap:10px;margin-top:15px;border-top:1px dashed #765881;padding-top:12px;min-height:65px}.detail>img{width:35px;height:35px}.detail>div:not(.detail-actions){flex:1}.detail-star{font-size:27px;color:var(--gold)}.detail b{font-size:11px;font-weight:normal}.detail p{font-size:9px;color:#c6b5d2;line-height:1.8;margin-top:4px}.detail small{font-size:9px;color:var(--gold)}.detail .eyebrow{font-size:8px;margin-bottom:3px}.detail-actions{display:flex;flex-direction:column;gap:5px}.detail-actions button{font-size:8px;padding:3px 5px}.stash{border-top:1px dashed #594666;margin-top:13px;padding-top:13px}.stash-items{display:flex;gap:7px;flex-wrap:wrap;min-height:28px}.stash-items>p{color:#a99abc;font-size:9px;margin-top:3px}.stash-item{display:flex;align-items:center;flex-direction:column;gap:3px;min-width:65px;padding:5px;font-size:9px;touch-action:none}.stash-item>img{width:40px;height:40px}.stash-item small{font-size:8px;color:var(--gold)}.cauldron-panel{padding:18px}.craft-instruction{display:flex;align-items:center;gap:10px;border-top:1px dashed #604571;margin-top:15px;padding-top:14px;font-size:11px;color:#dcc8e7}.craft-instruction b{color:var(--gold);font-size:15px}.cauldron-stage{position:relative;height:163px;display:flex;align-items:center;justify-content:center;isolation:isolate}.cauldron{width:128px;height:128px;position:relative;z-index:2;filter:drop-shadow(4px 4px 0 #110b1b);animation:potFloat 2.2s steps(3,end) infinite}.pot-halo{position:absolute;width:120px;height:68px;background:repeating-linear-gradient(0deg,#986adc33 0 4px,transparent 4px 8px);bottom:15px;clip-path:polygon(20% 0,80% 0,80% 15%,95% 15%,95% 35%,100% 35%,100% 70%,85% 70%,85% 90%,15% 90%,15% 70%,0 70%,0 35%,5% 35%,5% 15%,20% 15%);z-index:0;transform:scale(1.5)}.rune-orbit{position:absolute;left:9%;right:9%;top:50px;font-size:20px;display:flex;justify-content:space-between;color:#b688d5}.rune-orbit>span{position:absolute;top:-36px;left:48%;font-size:13px;color:#e4c0fa}.pot-count{position:absolute;bottom:8px;right:21%;font-size:9px;background:#372141;border:1px solid #8f6d9b;padding:2px 6px;z-index:3;color:#e7c9f3}@keyframes potFloat{50%{translate:0 -4px}}.pot-slots{display:flex;justify-content:center;gap:10px}.pot-slot{width:49px;height:44px;padding:3px;background:#171020;border:2px solid #785a8e;box-shadow:inset 2px 2px #31253e}.pot-slot>span{font-size:19px;color:#765a84}.pot-slot.filled{background:#3f2c53;border-color:#c096d6}.pot-slot img{width:32px;height:32px}.recipe-preview{display:flex;align-items:center;gap:11px;border:1px solid #66467d;background:#1c1428;padding:10px;margin-top:15px;min-height:67px}.recipe-preview>img{width:42px;height:42px}.recipe-preview b{display:block;font-size:12px;font-weight:normal}.recipe-preview small{display:block;font-size:9px;line-height:1.5;color:#ba9fce;margin-top:5px}.recipe-preview .rarity{float:right;margin-left:10px}.empty-symbol{font-size:29px;width:40px;text-align:center;color:#a583b9}.craft-buttons{display:flex;gap:9px;margin-top:13px;align-items:stretch}.craft-buttons .primary{flex:1;font-size:14px;min-height:43px;padding:10px}.tiny-note{font-size:9px;color:#b29ac5;line-height:1.8;margin-top:10px}.material-heading{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-top:16px;border-top:1px dashed #6b4f7d}.material-heading>b{font-size:11px;font-weight:normal}.material-heading>span{font-size:8px;color:var(--muted)}.materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:11px}.material{display:flex;flex-direction:column;align-items:center;padding:8px 4px 6px;gap:3px;background:#2f233d;border:1px solid #775c89;box-shadow:inset 2px 2px #4d365d,inset -2px -2px #1e1528;min-width:0;touch-action:none}.material-icon{width:32px;height:32px}.material>span{font-size:9px;white-space:nowrap}.material>b{font-size:12px;color:#edcf8b;font-weight:normal}.material.flame,.material.mist{border-color:#b084cb;background:#43264c}.jobs-panel{padding:16px}.jobs-panel h2{font-size:14px;letter-spacing:0}.craft-jobs{margin-top:12px}.craft-job{display:flex;align-items:center;gap:9px;padding:11px 0;border-top:1px dashed #6c507a}.craft-job>img{width:39px;height:39px}.job-info{flex:1;min-width:0}.job-info>b{font-size:10px;font-weight:normal;display:block}.job-info small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.job-progress{display:flex;gap:3px;margin-top:7px;max-width:130px}.job-progress i{height:5px;background:#4f3b5c;flex:1}.job-progress i.done{background:#cd9bee}.craft-job.ready .job-info small{color:#c6e7a1}.ad-button{font-size:9px;padding:5px 7px;background:#453049;border-color:#a17ba1;text-align:center}.ad-button>span{color:#f4cd87;display:block;font-size:10px}.ad-button small{display:block;font-size:8px;margin-top:2px}.empty-jobs{text-align:center;padding:13px 6px}.empty-jobs>span{font-size:23px;color:#c1a0da}.empty-jobs p{font-size:10px;color:var(--muted);line-height:1.8;margin:10px 0 6px}.empty-jobs small{font-size:9px;color:var(--gold)}.floor-tip{border-left:3px solid #765889;padding:3px 0 3px 12px}.floor-tip>b{font-size:11px;color:#d8b3ed;font-weight:normal}.floor-tip p{font-size:10px;color:#a896b5;line-height:1.8;margin-top:7px}footer{max-width:1336px;margin:25px auto 0;padding:0 24px 24px;display:flex;justify-content:space-between;gap:15px;font-size:9px;color:#a491b3}footer i{font-style:normal;color:var(--gold);margin:0 8px}.mobile-nav{display:none}.modal-scrim{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:25px;background:#0c0818e8;overflow:auto}.modal{width:100%;max-width:620px;max-height:calc(var(--game-height) * 0.9);overflow:auto;padding:27px}.modal h2{font-size:25px;margin:10px 0 15px}.modal p{font-size:12px;line-height:1.9;color:#d0bedd}.modal>.primary,.modal>.secondary{width:100%;margin-top:20px}.modal>.small{display:block;margin:16px auto 0}.hero-options{display:flex;flex-direction:column;gap:10px;margin-top:18px}.hero-option{display:flex;align-items:center;gap:12px;border:1px solid #795b89;background:#1d152b;padding:12px}.hero-option.selected{border-color:#e2c082;background:#3a2d34}.hero-option>img{width:64px;height:64px}.hero-option>div{flex:1}.hero-option b{font-size:13px}.hero-option small{display:block;font-size:10px;color:var(--muted);line-height:1.7;margin-top:5px}.hero-option p{font-size:10px;line-height:1.6;margin-top:7px;color:#e2c4f4}.recipe-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.recipe-row{display:flex;align-items:center;gap:8px;text-align:left;padding:10px 8px}.recipe-row>img{width:37px;height:37px}.recipe-row>div{flex:1;min-width:0}.recipe-row b{font-size:11px;font-weight:normal}.recipe-ingredients{display:flex;gap:4px;margin-top:5px}.recipe-ingredients>span{display:flex;align-items:center;font-size:9px}.recipe-ingredients img{width:18px;height:18px}.recipe-row>small{font-size:9px;color:#f2d895;text-align:right;line-height:2}.recipe-row:disabled{opacity:.5}.guide{padding-left:20px;display:flex;flex-direction:column;gap:17px}.guide li::marker{color:var(--gold)}.guide b{font-size:13px;color:#f2d895}.guide p{font-size:11px;margin-top:6px}.result-modal{text-align:center;max-width:650px}.result-emblem{font-size:58px;color:var(--gold);margin:10px 0 16px}.result-stats{display:flex;justify-content:space-around;padding:20px 0;margin:20px 0;border-block:1px dashed #88649c}.result-stats>b{font-size:28px;color:var(--gold);font-weight:normal}.result-stats small{display:block;font-size:9px;color:var(--muted);margin-top:9px}.loot-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:13px;padding:15px 0;margin:14px 0 20px;border-block:1px dashed #735383}.loot-row>span{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--gold)}.loot-row img{width:27px;height:27px}.boon-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.boon-option{display:flex;flex-direction:column;align-items:center;gap:10px;padding:15px 10px}.boon-option>img{width:52px;height:52px}.boon-option>b{font-size:13px;font-weight:normal;color:#e5c9f4}.boon-option>small{font-size:10px;color:#c1aace;line-height:1.8}.boon-option.selected:disabled{opacity:1;border-color:#f5d48d;background:#4d3950}.boon-option.selected:after{content:'✓';color:#f2d185;font-size:20px}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);border:2px solid #d2a6e1;background:#38233fee;box-shadow:inset 0 0 0 2px #614372,0 4px #100b19;padding:13px 20px;max-width:calc(var(--game-width) * 0.9);font-size:12px;z-index:30;opacity:0;pointer-events:none}#toast.show{opacity:1}#loading{min-height:calc(var(--game-height) * 1.0);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;color:var(--gold);font-size:28px;letter-spacing:4px}#loading span{font-size:12px;color:var(--muted);letter-spacing:1px}[hidden]{display:none!important}.host-paused *,.game-paused *{animation-play-state:paused!important}.pack-panel,.arena,.cauldron-panel{scroll-margin-top:15px}
@container game (min-width:1400px){.game-shell{grid-template-columns:166px minmax(480px,1.3fr) minmax(350px,.9fr);gap:28px}.battle-stage{height:205px}.pack-panel{padding:22px}.pack-layout{gap:22px;grid-template-columns:minmax(0,1fr) 110px}.bag-item img{max-width:88px;max-height:100px}}
@container game (max-width:1120px){.game-shell{grid-template-columns:105px minmax(340px,1.2fr) minmax(290px,1fr);gap:16px;padding:0 18px}.topbar{padding-inline:23px}.tower-title h1{font-size:16px}.tower-title .eyebrow{font-size:7px;letter-spacing:0}.tower-floor{gap:4px}.tower-floor>i{width:4px}.tower-floor>i:last-child{display:none}.floor-number>b{font-size:43px}.floor-number>span{font-size:18px}.floor-number small{font-size:9px}.pack-panel,.cauldron-panel{padding:15px}.pack-layout{grid-template-columns:minmax(0,1fr) 75px;gap:12px}.hero-mini>img{width:54px;height:54px}.hero-mini>b{font-size:9px}.hero-mini>small{font-size:8px}.synergy-tip{display:none}.battle-stage{height:170px}.fighter.player{left:7%}.fighter.enemy{right:6%}.health-row{padding-inline:12px;gap:13px}.combat-bottom{padding-inline:12px}.combat-log{font-size:8px}.combat-log img{width:22px;height:22px}.pack-tools>span{font-size:7px}.material>span{font-size:8px}.cauldron-stage{height:147px}.cauldron{width:112px;height:112px}.pot-slot{width:43px;height:41px}.section-heading h2{font-size:15px}.detail{flex-wrap:wrap}.detail-actions{flex-direction:row;width:100%;justify-content:flex-end}.tower-title p{font-size:8px}.lives{flex-direction:column;gap:7px}.boon-summary>div>span{display:none}.boon-summary>div{display:inline-flex;margin-right:5px}.boon-summary p{font-size:9px}.jobs-panel{padding:14px}.jobs-panel h2{font-size:12px}}
@container game (max-width:860px){.game-shell{grid-template-columns:minmax(320px,1.05fr) minmax(300px,1fr);gap:18px;max-width:790px}.tower-panel{grid-column:1/-1;display:flex;align-items:center;gap:24px}.tower-title{padding:0;min-width:160px;position:relative}.tower-title h1{font-size:18px}.floor-number{position:absolute;left:172px;top:0;width:130px;margin:0}.floor-number>b{font-size:43px}.tower-title p{display:none}.tower-map{display:none}.lives{margin-left:auto;flex-direction:row;border:0;gap:13px;padding:0}.boon-summary{display:none}.topbar{height:78px}.brand{font-size:23px}.brand small{font-size:9px}.best{display:none}.top-actions{gap:6px}.game-shell{margin-top:21px}.pack-layout{grid-template-columns:minmax(0,1fr) 75px}.hero-mini>small{font-size:9px}.arena-heading{padding:8px 10px;font-size:11px}.health b{font-size:8px}.health>div>span{font-size:8px}.battle-stage{height:160px}.fighter>img{width:80px;height:80px}.fighter{width:86px;bottom:23px}.combat-bottom{gap:6px}.combat-log>span{max-width:102px}.track-name{font-size:8px}.material-heading>span{font-size:7px}h2{font-size:15px}.detail p{font-size:9px}.modal{max-width:600px}}
@container game (max-width:660px){.topbar{height:75px;padding:13px 16px}.brand{font-size:21px;letter-spacing:2px;gap:9px}.brand-tower{font-size:18px;line-height:29px;padding:0 4px}.brand small{font-size:8px;letter-spacing:1px}.top-actions{gap:5px}.top-actions .small{font-size:9px;padding:5px 7px}.top-actions .help-button{min-width:27px}.game-shell{grid-template-columns:1fr;gap:17px;max-width:520px;padding:0 16px;margin-top:18px}.tower-panel{gap:15px}.tower-title .eyebrow{font-size:8px}.tower-title h1{font-size:19px}.floor-number{left:169px;top:1px}.floor-number>b{font-size:37px}.floor-number>span{font-size:16px}.floor-number small{font-size:9px}.lives{flex-direction:column;gap:3px;min-width:66px}.lives small{font-size:8px}.lives>span{font-size:16px}.adventure-column,.craft-column{gap:17px}.arena-heading{font-size:12px;padding:10px 12px}.battle-stage{height:178px}.fighter>img{width:96px;height:96px}.fighter{width:100px;bottom:25px}.fighter.player{left:9%}.fighter.enemy{right:8%}.health-row{padding:10px 13px 0;gap:20px}.health b,.health>div>span{font-size:9px}.combat-bottom{padding:8px 13px}.combat-log{font-size:9px}.combat-log>span{max-width:none}.combat-log img{width:26px;height:26px}.battle-controls{padding:6px 13px 15px}.pack-panel{padding:17px}.pack-layout{grid-template-columns:minmax(0,1fr) 85px;gap:15px}.hero-mini>img{width:64px;height:64px}.hero-mini>b{font-size:11px}.hero-mini>small{font-size:10px}.hero-mini button{font-size:10px}.bag{gap:3px}.pack-tools>span{font-size:8px}.bag-item img{max-width:70px;max-height:80px}.detail p{font-size:10px}.detail b{font-size:12px}.stash-items>p{font-size:10px}.cauldron-panel{padding:19px}.cauldron-stage{height:155px}.cauldron{width:128px;height:128px}.section-heading h2{font-size:17px}.material>span{font-size:10px}.material{padding:10px 6px;gap:5px}.material-icon{width:37px;height:37px}.material-heading>span{font-size:9px}.pot-slot{width:50px;height:45px}.jobs-panel{padding:18px}.jobs-panel h2{font-size:15px}.craft-job>img{width:48px;height:48px}.job-info>b{font-size:12px}.job-info small{font-size:10px}.ad-button{padding:8px}.floor-tip{margin:6px 0}.mobile-nav{position:fixed;display:flex;bottom:0;left:0;right:0;z-index:10;gap:8px;padding:10px 16px max(10px,env(safe-area-inset-bottom));border-top:2px solid #766084;background:#1a1029f5}.mobile-nav button{flex:1;font-size:12px;padding:7px}.mobile-nav button:last-child{border-color:#c595e1;color:#f3d9ff}footer{padding:0 16px 100px;font-size:8px;flex-direction:column;gap:7px;max-width:520px}#toast{bottom:78px;min-width:260px;text-align:center;font-size:11px}.modal-scrim{padding:18px}.modal{padding:20px;max-height:calc(var(--game-height) * 0.86)}.modal h2{font-size:21px}.recipe-list{grid-template-columns:1fr}.recipe-row>img{width:44px;height:44px}.recipe-row b{font-size:13px}.recipe-ingredients img{width:22px;height:22px}.recipe-ingredients>span{font-size:11px}.recipe-row>small{font-size:11px}.hero-option{gap:9px;padding:10px 8px}.hero-option>img{width:48px;height:48px}.hero-option b{font-size:11px}.hero-option p{font-size:9px}.hero-option small{font-size:9px}.boon-options{gap:8px}.boon-option{padding:12px 7px}.boon-option>b{font-size:11px}.boon-option>small{font-size:9px}.boon-option>img{width:42px;height:42px}.loot-row{gap:8px}.loot-row>span{font-size:10px}.loot-row img{width:23px;height:23px}}
@container game (max-width:380px){.brand-tower{display:none}.brand{font-size:20px}.brand small{font-size:7px}.topbar{padding-inline:12px}.game-shell{padding-inline:12px}.tower-title{min-width:140px}.tower-title h1{font-size:17px}.floor-number{left:146px;width:110px}.floor-number>b{font-size:32px}.floor-number small{display:none}.pack-panel{padding:13px}.pack-layout{grid-template-columns:minmax(0,1fr) 64px;gap:11px}.hero-mini>img{width:48px;height:48px}.hero-mini>b{font-size:9px}.hero-mini>small{font-size:8px}.hero-mini button{font-size:8px;padding:4px}.bag-item{padding:4px}.item-cd{font-size:7px}.pack-tools>span{font-size:7px}.section-heading h2{font-size:15px}.fighter.player{left:4%}.fighter.enemy{right:3%}.health b{font-size:8px}.health>div>span{font-size:8px}.combat-log>span{font-size:8px}.skill-indicator{min-width:110px}.skill-indicator b{font-size:9px}.recipe-preview b{font-size:11px}.materials{gap:6px}.cauldron-panel{padding:14px}.pot-slots{gap:8px}.boon-options{grid-template-columns:1fr}.boon-option{flex-direction:row;flex-wrap:wrap;gap:8px;text-align:left}.boon-option>small{width:100%}.modal h2{font-size:18px}.hero-option{flex-wrap:wrap}.hero-option>button{margin-left:auto}.result-stats>b{font-size:23px}}
@media(prefers-reduced-motion:reduce){.fighter>img,.cauldron{animation:none}.attack-effect{animation-duration:.45s;animation-timing-function:steps(1,end)}.support-effect{animation-duration:.45s}.bag-item.activated{animation:none}}
/* Craft progression and compact interface */
.bag{grid-template-rows:repeat(var(--rows,3),1fr);aspect-ratio:6 / var(--rows,3)}
.pack-layout{grid-template-columns:minmax(0,1fr) 84px}.pack-tools{gap:6px}.pack-tools button{font-size:10px}.hero-mini{gap:5px}.detail{min-height:80px}.craft-tabs{display:flex;gap:12px;justify-content:center;margin-top:14px;font-size:11px;color:#96839f}.craft-tabs .active{color:#f4d387;border-bottom:2px solid #e8bdf7;padding-bottom:6px}.craft-tabs span{padding:0 12px}.craft-instruction,.floor-tip{display:none}.cauldron-stage{height:135px}.cauldron{width:116px;height:116px}.recipe-preview{min-height:65px}.secret-hint{font-size:11px;line-height:2;color:#d3a3ef;margin-top:20px;text-align:center}.scroll-drop{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px;background:#574128;border:2px solid #efc873}.scroll-drop img{width:40px;height:40px}.scroll-drop b{font-size:12px}.rarity.E{color:#d39cff}.rarity.L{color:#ffe082;text-shadow:0 0 7px #f29b42}.discovery{color:#ffe099}.material-icon{object-fit:contain}.material>img{width:45px;height:45px}.recipe-preview .recipe-ingredients{margin-top:6px}.recipe-preview .recipe-ingredients img{width:24px;height:24px}.recipe-preview .recipe-ingredients span{font-size:12px}
/* Impacts stay at their target. No weapon travels across the arena. */
#battle-fx{z-index:1;overflow:visible}.fighter{z-index:2;pointer-events:none}.stage-center{z-index:3}.fighter.player{left:13%}.fighter.enemy{right:12%}.impact-effect,.self-effect{position:absolute;width:100px;height:112px;bottom:24px;animation:impactLifetime .7s steps(6,end) forwards}.at-player{left:13%}.at-enemy{right:12%}.impact-effect>img{position:absolute;width:90px;height:90px;top:-20px;left:16px;animation:impactSlash .45s steps(5,end) forwards;filter:drop-shadow(2px 2px #f9df87)}.hit-burst{position:absolute;width:105px;height:7px;background:#fff5c4;top:37px;left:0;transform:rotate(-38deg);box-shadow:0 9px #efb662,0 -7px #fff5c455;animation:hitSpark .45s steps(4,end) forwards}.magic-hit .hit-burst{width:104px;height:104px;border:5px dashed #c9b2ff;background:transparent;box-shadow:0 0 0 5px #8054ba55;top:-13px;transform:none}.damage-number{position:absolute;top:-42px;left:25px;z-index:5;font-size:25px;color:#ffda8a;text-shadow:2px 2px #2a1429,-2px -2px #2a1429}.at-player .damage-number{color:#ff9494}.self-effect{animation:selfLifetime .9s steps(6,end) forwards}.self-effect>img{position:absolute;width:48px;height:48px;left:-24px;top:6px}.self-effect>i{position:absolute;width:110px;height:110px;left:-5px;top:-6px;border:4px dashed #a2f0b4;color:#abffb4;font-style:normal;font-size:34px;box-shadow:0 0 0 5px #88ceaa33}.self-effect>span{position:absolute;top:-27px;left:0;white-space:nowrap;color:#b9ffb9;font-size:16px;text-shadow:2px 2px #162b1c}.self-effect.guarding>i{border-color:#a2caff;color:#acd9ff;box-shadow:0 0 0 5px #8eb7ff33}.self-effect.guarding>span{color:#b4d9ff}.fighter.hit{animation:takeHit .25s steps(3,end)}
@keyframes impactLifetime{0%,75%{opacity:1}100%{opacity:0}}
@keyframes impactSlash{0%{transform:rotate(-65deg) scale(.8)}55%{transform:rotate(25deg) scale(1.1)}100%{transform:rotate(45deg);opacity:0}}
@keyframes hitSpark{0%{opacity:0;scale:.4}25%{opacity:1;scale:1.1}100%{opacity:0;scale:.8}}
@keyframes selfLifetime{0%{opacity:0;translate:0 8px}20%,70%{opacity:1}100%{opacity:0;translate:0 -12px}}
@keyframes takeHit{0%,100%{translate:0}35%{translate:4px;filter:brightness(1.8)}70%{translate:-3px}}
@container game (max-width:660px){.pack-layout{grid-template-columns:minmax(0,1fr) 66px;gap:10px}.hero-mini>img{width:50px;height:50px}.hero-mini>b{font-size:9px}.hero-mini button{font-size:9px;padding:5px}.pack-tools button{font-size:9px;padding:6px}.bag-item img{max-height:64px}.fighter.player,.at-player{left:9%}.fighter.enemy,.at-enemy{right:8%}.impact-effect,.self-effect{bottom:25px}.material>img{width:49px;height:49px}}
@container game (max-width:380px){.fighter.player,.at-player{left:4%}.fighter.enemy,.at-enemy{right:3%}}
@media(prefers-reduced-motion:reduce){.impact-effect>img{animation:none;transform:rotate(20deg)}.hit-burst{animation:none}.fighter.hit{animation:none}.self-effect{translate:none}}
.material.mist>.material-icon,.recipe-ingredients img[src$="/mist.png"],.pot-slot img[src$="/mist.png"],.loot-row img[src$="/mist.png"]{filter:hue-rotate(195deg)}
.material.ore>img,.material.wood>img,.material.herb>img,.material.emblem>img{scale:1.35}
/* Upper-corner combat callouts leave the character silhouettes unobstructed. */
.battle-stage{height:238px}#battle-fx{z-index:4;overflow:hidden}.impact-effect,.self-effect,.condition-effect{width:66px;height:63px;top:15px;bottom:auto;animation:calloutFade .85s steps(6,end) forwards}.at-player{left:calc(13% - 18px + var(--slot,0)*70px);right:auto}.at-enemy{right:calc(12% - 18px + var(--slot,0)*70px);left:auto}.impact-effect>img{width:43px;height:43px;top:8px;left:0}.damage-number{top:7px;left:40px;font-size:19px}.hit-burst{width:42px;height:4px;top:32px;left:0;box-shadow:0 5px #efb662}.magic-hit .hit-burst{width:43px;height:43px;border:2px solid #c6a9ff;top:8px;box-shadow:0 0 0 2px #8054ba55}.self-effect>img{width:31px;height:31px;left:0;top:8px}.effect-icon{display:inline-block;width:28px;height:28px;vertical-align:middle;image-rendering:pixelated;filter:drop-shadow(2px 2px #201627)}.self-effect>.effect-icon{position:absolute;top:0;left:33px;width:27px;height:27px;animation:iconPulse .7s steps(3,end)}.self-effect>span{top:32px;left:13px;font-size:13px;white-space:nowrap}.condition-effect{position:absolute;text-align:center}.condition-effect>span{display:block;font-size:11px;color:#e0bcff}.condition-effect .effect-icon{width:30px;height:30px}.impact-effect>.effect-icon{position:absolute;left:0;top:8px;width:28px;height:28px}
@keyframes calloutFade{0%{opacity:1;translate:0 5px}15%,70%{opacity:1;translate:0 0}100%{opacity:0;translate:0 -5px}}
@keyframes iconPulse{0%{scale:.7}40%{scale:1.15}100%{scale:1}}
#skill-cutin{position:absolute;top:1px;left:0;right:0;height:85px;display:none;z-index:8;pointer-events:none;border-block:3px solid #e4be77;background:linear-gradient(90deg,#241538f5,#634072f5 65%,#392143ef);box-shadow:0 4px #110c1d;overflow:hidden}#skill-cutin.active{display:flex;align-items:center;gap:15px;animation:heroCutin 1.25s steps(8,end) forwards}#skill-cutin>img{width:94px;height:94px;flex:none;object-fit:contain;filter:drop-shadow(4px 0 #e2bd7455);margin-left:15px}#skill-cutin>div{display:flex;flex-direction:column;gap:2px;min-width:0}#skill-cutin small{font-size:9px;letter-spacing:2px;color:#f4ce87}#skill-cutin b{font-size:13px}#skill-cutin strong{font-size:22px;color:#ffe9ae;text-shadow:2px 2px #2f1e3a}#skill-cutin>span{margin-left:auto;padding-right:25px;font-size:42px;color:#f8dc91}
@keyframes heroCutin{0%{translate:-100% 0;opacity:0}15%,80%{translate:0;opacity:1}100%{translate:100% 0;opacity:0}}
.hero-params{display:flex;flex-wrap:wrap;gap:5px 10px;font-size:10px;color:#b6a1ca}.hero-params b,.battle-params b{color:#f3ddb0;font-weight:normal}.hero-mini .hero-params{display:grid;grid-template-columns:1fr;text-align:left;gap:3px;font-size:9px}.hero-mini .hero-params span{display:flex;justify-content:space-between;gap:7px}.battle-params{display:flex;gap:10px;font-size:9px;color:#a994b9;margin-top:2px}.conditions{min-height:20px;display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}.conditions>span{font-size:9px;color:#d8bded}.conditions .effect-icon{width:13px;height:13px;margin-right:3px}.recipe-entry{position:relative;min-width:0}.recipe-entry:focus-visible{outline:2px solid #f4d090}.recipe-row{width:100%;height:100%;padding-right:25px}.recipe-info{position:absolute;right:3px;top:3px;width:21px;height:21px;padding:0;font-size:12px;color:#f3d492;z-index:1}.recipe-tooltip{display:none;position:absolute;left:0;top:100%;width:300px;max-width:calc(calc(var(--game-width) * 1.0) - 65px);padding:15px;background:#21182ffb;border:2px solid #cba3de;box-shadow:4px 4px #0c0915;z-index:30;text-align:left;pointer-events:none}.recipe-entry:nth-child(even) .recipe-tooltip{left:auto;right:0}.recipe-entry:hover .recipe-tooltip,.recipe-entry:focus-visible .recipe-tooltip{display:block}.recipe-detail-heading{display:flex;gap:12px;align-items:center;margin-bottom:10px}.recipe-detail-heading>img{width:54px;height:54px;flex:none}.recipe-detail-heading b{font-size:15px;display:block;margin-top:5px}.recipe-stat-line{font-size:11px;color:#f0d6a8;margin:5px 0;line-height:1.7}.recipe-tooltip p{font-size:11px;line-height:1.6;margin:8px 0}.recipe-tooltip small{font-size:10px;color:#bc9acb}.recipe-tooltip .effect-icon{width:18px;height:18px}.recipe-list{align-items:start}.hero-option .hero-params{margin-top:7px}.cauldron-stage{margin-top:12px}
@container game (max-width:660px){.battle-stage{height:219px}.at-player{left:calc(9% - 12px + var(--slot,0)*60px)}.at-enemy{right:calc(8% - 12px + var(--slot,0)*60px)}.impact-effect,.self-effect,.condition-effect{top:12px}.hero-mini .hero-params{font-size:8px}.battle-params{font-size:8px;gap:5px}#skill-cutin{height:76px}#skill-cutin>img{width:76px;height:76px;margin-left:8px}#skill-cutin strong{font-size:18px}#skill-cutin b{font-size:11px}#skill-cutin>span{padding-right:12px;font-size:28px}.recipe-tooltip{width:100%;left:0;right:0}.recipe-entry:nth-child(even) .recipe-tooltip{left:0}}
@media(prefers-reduced-motion:reduce){#skill-cutin.active{animation:calloutFade 1.25s steps(1,end) forwards}.self-effect>.effect-icon{animation:none}}

/* Endless tower, shaped bag, temporary blessings and hero summons. */
.bag{background:transparent;border:0;box-shadow:none;gap:4px}.bag .cell{border:2px solid #6f5d82;background:#252338;box-shadow:inset 0 0 0 2px #171726}.impact-effect>img{animation:none;transform:none!important}.stone-star{filter:hue-rotate(65deg) saturate(1.5);}.stone-life{filter:hue-rotate(125deg)}.boon-bonus{font-style:normal;color:#9dde9b;font-size:10px;white-space:nowrap}.boon-chip{position:relative;display:flex;width:100%;align-items:center;justify-content:space-between;background:#242339;border:1px solid #524961;padding:5px;margin-top:5px;color:#dfd4e7;text-align:left;font-size:10px}.boon-chip>span:first-child{display:flex;align-items:center}.boon-chip img{width:25px;height:25px}.boon-chip>b{white-space:nowrap;color:#b9e59c}.boon-tip{display:none;position:absolute;z-index:20;left:0;bottom:100%;min-width:190px;padding:10px;background:#171524;border:2px solid #d9bc79;color:#fff;line-height:1.6}.boon-chip:hover .boon-tip,.boon-chip:focus-visible .boon-tip{display:block}.boon-duration{color:#b5de9d;font-size:11px}.summon-controls{padding:15px;border:2px solid #706188;margin-top:15px;display:grid;gap:10px}.summon-controls>b{display:flex;align-items:center;justify-content:center}.summon-controls img{width:38px;height:38px}.summon-controls small{font-size:10px;line-height:1.7}.summon-controls p{font-size:11px}.summon-show{position:relative;text-align:center;min-height:330px;overflow:hidden;background:radial-gradient(#5f496c,#1c1c30 70%)}.summon-show.L{background:radial-gradient(#987d36,#242135 70%)}.summon-orb{position:absolute;inset:70px 0 auto;font-size:110px;color:#e6cf8d;animation:summonOrb 1.6s steps(8) forwards;pointer-events:none}.summon-reveal{display:flex;flex-direction:column;align-items:center;gap:8px;padding:15px;animation:summonReveal 1.8s steps(8) both}.summon-reveal>img{width:150px;height:150px;object-fit:contain;filter:drop-shadow(0 0 15px #ddbd6c)}.summon-reveal h2,.summon-reveal p{margin:0}.summon-reveal strong{color:#edcc74}.summon-modal{max-width:480px}.locked-hero{font-size:11px;color:#a69bb6}@keyframes summonOrb{0%{transform:scale(.4);opacity:1}65%{transform:scale(1.4);opacity:1}85%{transform:scale(2.5);opacity:1}100%{transform:scale(3);opacity:0}}@keyframes summonReveal{0%,75%{opacity:0;transform:translateY(12px);filter:brightness(0)}100%{opacity:1;transform:translateY(0);filter:brightness(1)}}@media(prefers-reduced-motion:reduce){.summon-orb{display:none}.summon-reveal{animation:none}}

.bag{outline:none}

/* Sprite source artwork faces left. Mirror only the player, independently of bobbing. */
.fighter.player>img{scale:-1 1;transform:none;animation:bob 2s steps(2,end) infinite}.fighter.enemy>img{scale:1 1;transform:none;animation:bob 2s steps(2,end) infinite}.boon-chip{flex-wrap:wrap}.boon-chip>b{width:100%;text-align:right;font-size:9px}.growth-reward{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:10px;border:1px solid #766285}.growth-reward small{width:100%;color:#b9acce}.growth-reward b{color:#a6df9d}.gear-tooltip{position:fixed;width:265px;max-width:calc(calc(var(--game-width) * 1.0) - 16px);padding:12px;z-index:25;border:2px solid #e0c689;background:#20192f;color:#fff1db;box-shadow:3px 3px #100d19;pointer-events:none;font-size:12px;line-height:1.7}.gear-tooltip b{color:#f0d18a}.gear-tooltip div{color:#bce8b4}.gear-tooltip p{font-size:11px}@media(prefers-reduced-motion:reduce){.fighter.player>img,.fighter.enemy>img{animation:none}}

@container game (max-width:860px){.tower-panel{flex-wrap:wrap}.boon-summary{display:flex;flex-wrap:wrap;flex-basis:100%;gap:6px;border:0;padding:0}.boon-summary>.eyebrow{width:100%;margin:0}.boon-chip{width:calc(50% - 3px);margin:0}.boon-tip{min-width:160px;max-width:calc(var(--game-width) * 0.8)}.boon-chip:nth-of-type(even) .boon-tip{left:auto;right:0}}

.build-meter{color:#b9ccf2;font-size:9px}.combat-bottom{flex-wrap:wrap}.reward-offer{margin:5px 0}.hero-mini .reward-offer{font-size:8px;padding:4px}.reroll-actions{display:flex;justify-content:center;margin-top:12px}.summon-controls .reward-offer{width:100%}@container game (max-width:660px){.build-meter{order:3;width:100%;text-align:center}}

/* Readable battle silhouettes and separate popup lanes. */
.battle-stage{height:310px}.fighter{width:156px;bottom:27px}.fighter>img{width:156px;height:156px}.fighter.player{left:7%}.fighter.enemy{right:7%}.fighter>span{font-size:11px}.stage-center{top:auto;bottom:8px}.stage-center b{font-size:12px;color:#c5b4d4}
.impact-effect,.self-effect,.condition-effect{width:110px;height:70px;top:12px;animation-duration:1.05s}.at-player{left:calc(5% + var(--slot,0)*8px);right:auto;top:calc(10px + var(--slot,0)*65px)}.at-enemy{right:calc(5% + var(--slot,0)*8px);left:auto;top:calc(10px + var(--slot,0)*65px)}
.impact-effect>img,.self-effect>img{width:58px;height:58px;left:0;top:0}.damage-number{font-size:29px;top:22px;left:42px;font-weight:bold;z-index:2;white-space:nowrap}.self-effect>span{font-size:24px;left:39px;top:29px;z-index:2;font-weight:bold;text-shadow:2px 2px #12241b,-2px -2px #12241b}.self-effect>.effect-icon{left:43px;top:0;width:30px;height:30px}.impact-effect>.effect-icon{width:42px;height:42px}.hit-burst{top:36px;width:58px}.magic-hit .hit-burst{width:54px;height:54px}.condition-effect>span{font-size:16px}.condition-effect .effect-icon{width:36px;height:36px}
.claim{position:relative}.claim-dot{position:absolute;right:-5px;top:-5px;width:12px;height:12px;background:#ff5268;border:2px solid #ffe3df;box-shadow:0 0 0 2px #621e37}.craft-job.ready{border-color:#dca969}.claim:not(:disabled){border-color:#ffd791}
@keyframes confettiFall{0%{opacity:1;transform:translate(0,0) rotate(0)}85%{opacity:1}100%{opacity:0;transform:translate(var(--drift),420px) rotate(540deg)}}
.battle-finish{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;background:#1c122f88;animation:finishBanner 1.65s both;pointer-events:none}.battle-finish strong{font-size:42px;color:#ffe193;text-shadow:3px 3px #805136,-3px -2px #251530;letter-spacing:4px}.battle-finish small{font-size:18px;color:#ffdfad}.battle-finish span{font-size:13px}.battle-finish.loss strong{color:#eca8b3}.victory-stage .fighter.enemy{opacity:.2;transition:opacity .5s}.result-modal{animation:resultArrive .4s steps(8,end) both}@keyframes finishBanner{0%{opacity:0;scale:1.12}20%,85%{opacity:1;scale:1}100%{opacity:0;scale:1}}@keyframes resultArrive{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
@container game (max-width:660px){.battle-stage{height:294px}.fighter{width:128px;bottom:25px}.fighter>img{width:128px;height:128px}.fighter.player{left:3%}.fighter.enemy{right:3%}.fighter>span{font-size:10px}.damage-number{font-size:26px}.self-effect>span{font-size:23px}.impact-effect>img,.self-effect>img{width:54px;height:54px}.battle-finish strong{font-size:34px}}
@media(prefers-reduced-motion:reduce){.battle-finish,.result-modal{animation:none}.victory-stage .fighter.enemy{transition:none}}

.damage-number small{display:block;font-size:11px;line-height:1;color:#fff1c0}.damage-number{line-height:1.1}

.battle-stage{height:340px}@container game (max-width:660px){.battle-stage{height:310px}}

/* Give gear decisions room without letting an expanded bag dominate the panel. */
.pack-layout{grid-template-columns:minmax(0,340px) minmax(84px,1fr);gap:22px;align-items:start}.pack-side{justify-self:center;width:100%;max-width:120px}.pack-tools button{font-size:11px;min-height:36px;padding:6px 8px}
.detail{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:12px 16px;margin-top:18px;padding:16px;background:#21192f;border:1px solid #725884;min-height:136px}.detail>img{width:64px;height:64px}.detail b{font-size:16px;line-height:1.5}.detail p{font-size:13px;line-height:1.7;margin-top:6px}.detail small{display:block;font-size:13px;margin-top:7px}.detail .eyebrow{font-size:10px;margin-bottom:4px}.detail-star{text-align:center;font-size:38px}.detail-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:10px;margin-top:4px}.detail-actions button{font-size:14px;min-height:46px;padding:10px 8px}.detail-actions [data-action=forge]{background:#80502d;border-color:#eac384;color:#fff0c6}.detail-actions [data-action=salvage]{color:#e6b6c1}.detail-actions [data-action=forge]:hover:not(:disabled){background:#a16a39}
@container game (max-width:660px){.pack-layout{grid-template-columns:minmax(0,280px) 76px;gap:14px}.detail{grid-template-columns:48px minmax(0,1fr);padding:12px;gap:10px}.detail>img{width:48px;height:48px}.detail b{font-size:15px}.detail p,.detail small{font-size:12px}.detail-actions{gap:6px}.detail-actions button{font-size:12px;min-height:44px;padding:9px 5px}.pack-tools button{font-size:10px}}
@container game (max-width:360px){.pack-layout{grid-template-columns:minmax(0,1fr) 66px;gap:10px}.detail{padding:10px}.detail-actions{grid-template-columns:1fr 1fr}.detail-actions [data-action=forge]{grid-column:1/-1}}

/* A dedicated hero card keeps the full profile legible at every bag size. */
.hero-panel{padding:18px}.hero-profile{display:grid;grid-template-columns:116px minmax(0,1fr);gap:18px;align-items:center;margin-top:12px}.hero-profile>img{width:116px;height:116px}.hero-profile h2{font-size:18px;margin:4px 0 10px}.hero-profile .hero-params{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:14px}.hero-profile .hero-params span{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.hero-profile .hero-params b{font-size:17px}.hero-profile p{font-size:13px;color:#f1d693;margin-top:12px}.hero-profile small{display:block;font-size:12px;line-height:1.7;color:#c9b8dc;margin-top:5px}.pack-layout{grid-template-columns:minmax(0,360px);justify-content:center}.pack-layout>div{min-width:0}
.summon-show{min-height:440px;isolation:isolate}.summon-modal{max-width:540px}.summon-orb{top:110px;z-index:2;animation:gachaCrystal 2.8s steps(14,end) forwards}.summon-orb>img{width:112px;height:112px;filter:drop-shadow(0 0 8px #efd697)}.summon-reveal{position:relative;z-index:2;padding-top:30px;animation:gachaReveal 3.3s steps(12,end) both}.summon-reveal>img{width:190px;height:190px;filter:drop-shadow(4px 4px #33203f)}.summon-reveal h2{font-size:25px}.summon-reveal strong{font-size:20px;letter-spacing:4px}.summon-flash{position:absolute;inset:0;background:#fff2c4;z-index:4;pointer-events:none;animation:openFlash 3.2s steps(8,end) both}
@keyframes runeRise{0%{opacity:0;scale:.6}25%,75%{opacity:1;scale:1}100%{opacity:0;scale:1.35}}@keyframes gachaCrystal{0%{opacity:0;transform:translateY(35px) scale(.5)}25%,65%{opacity:1;transform:translateY(0) scale(1)}80%{opacity:1;transform:translateX(4px) scale(1.12)}90%{opacity:1;transform:translateX(-4px) scale(1.25)}100%{opacity:0;transform:scale(2)}}@keyframes gachaReveal{0%,78%{opacity:0;transform:translateY(18px) scale(.85)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes openFlash{0%,76%{opacity:0}82%{opacity:.85}100%{opacity:0}}@keyframes raysReveal{0%,78%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}
@container game (max-width:660px){.hero-panel{padding:14px}.hero-profile{grid-template-columns:88px minmax(0,1fr);gap:12px}.hero-profile>img{width:88px;height:100px}.hero-profile h2{font-size:16px}.hero-profile .hero-params{font-size:12px;gap:6px}.hero-profile .hero-params b{font-size:15px}.pack-layout{grid-template-columns:minmax(0,290px)}.summon-show{min-height:400px}.summon-reveal>img{width:165px;height:165px}.summon-reveal h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){.summon-reveal{animation:none}}
/* Source-art sprite rigs: pose changes are independent of facing and enemy treatment. */
.sprite-body{position:relative;width:156px;height:156px;transform-origin:50% 90%;animation:spriteBreathe 2.4s steps(4,end) infinite}.sprite-body>img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(3px 3px #171021)}.fighter.player .sprite-body{scale:-1 1}.fighter.enemy .sprite-body{scale:1 1}.motion-duelist{animation:spriteGuard 2s steps(4,end) infinite}.motion-ninja{animation:spriteNinja 1.8s steps(4,end) infinite}.motion-seer{animation:spriteFloat 2.8s steps(6,end) infinite}.motion-inventor{animation:spriteThink 2.4s steps(4,end) infinite}.motion-chrono{animation:spriteFloat 3.3s steps(6,end) infinite}.sprite-body.acting{animation:spriteStrike .42s steps(5,end)}.sprite-body.motion-ninja.acting{animation:ninjaStrike .38s steps(5,end)}.sprite-body.casting{animation:spriteCast .65s steps(6,end)}.sprite-body.motion-inventor.casting{animation:inventorCast .65s steps(6,end)}.sprite-body.motion-chrono.casting{animation:chronoCast .65s steps(6,end)}
@keyframes spriteBreathe{50%{transform:translateY(-2px) scaleY(1.015)}}@keyframes spriteGuard{50%{transform:translate(-2px,-2px) rotate(-1deg)}}@keyframes spriteNinja{50%{transform:translate(2px,2px) scaleY(.97)}}@keyframes spriteFloat{50%{transform:translateY(-7px)}}@keyframes spriteThink{50%{transform:translateY(-2px) rotate(2deg)}}@keyframes spriteStrike{35%{transform:translateX(-13px) rotate(-7deg)}70%{transform:translateX(-5px)}}@keyframes ninjaStrike{35%{transform:translate(-20px,-4px) skewX(-8deg)}70%{transform:translate(-8px,0)}}@keyframes spriteCast{40%{transform:translateY(-10px) scale(1.05)}70%{transform:translateY(-4px)}}@keyframes inventorCast{40%{transform:rotate(-5deg) translateY(-5px)}70%{transform:rotate(3deg)}}@keyframes chronoCast{35%{transform:translateY(-13px) scale(1.08)}70%{transform:translateY(-6px) scale(.98)}}
.fighter.enemy .sprite-body>img{filter:grayscale(.75) sepia(.4) hue-rotate(220deg) saturate(1.8) brightness(.57) contrast(1.25) drop-shadow(2px 0 #c049ec55) drop-shadow(-2px 0 #433166)}.dark-aura{position:absolute;inset:15px -8px 0;z-index:-1;background:radial-gradient(ellipse at 50% 85%,#a53bd866,transparent 65%);pointer-events:none}.dark-aura i{position:absolute;left:10%;bottom:0;width:8px;height:14px;background:#9c44da88;box-shadow:20px -20px #703b8d77;animation:darkEmber 1.8s steps(8,end) infinite}.dark-aura i:nth-child(2){left:70%;animation-delay:-.7s}.dark-aura i:nth-child(3){left:45%;animation-delay:-1.2s}@keyframes darkEmber{0%{opacity:0;translate:0 0}25%{opacity:1}100%{opacity:0;translate:8px -120px}}
.impact-effect.at-player,.self-effect.at-player,.condition-effect.at-player{left:calc(5% + var(--jitter,0px));top:calc(8px + var(--slot,0)*76px)}.impact-effect.at-enemy,.self-effect.at-enemy,.condition-effect.at-enemy{right:calc(5% + var(--jitter,0px));top:calc(8px + var(--slot,0)*76px)}
.home-screen{min-height:calc(calc(var(--game-height) * 1.0) - 86px);padding:36px 18px;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,#50326655,transparent 65%)}.home-card{width:min(100%,520px);padding:30px;display:grid;gap:16px;text-align:center}.home-card h1{font-size:42px;color:#f1cd87;letter-spacing:5px;text-shadow:3px 3px #72543f}.home-card>p{font-size:13px;color:#cebcdb}.home-heroes{height:170px;display:flex;align-items:center;justify-content:center;gap:25px}.home-heroes img:first-child{width:160px;height:160px;image-rendering:pixelated;animation:spriteFloat 3s steps(6,end) infinite}.home-best{color:#f0c87d;font-size:20px}.home-save{display:grid;gap:7px;border-block:1px solid #685179;padding:14px}.home-save span{color:#c6b2d1;font-size:12px}.home-card>small{color:#b7a2c9;font-size:11px;line-height:1.7}.home-card>.secondary{min-height:48px;font-size:16px}.audio-controls{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.audio-controls button{min-height:52px;font-size:17px}
@container game (max-width:660px){.sprite-body{width:128px;height:128px}.home-card{padding:22px}.home-card h1{font-size:32px}.top-actions{gap:5px}.top-actions>.small{font-size:10px;padding:6px}.brand{font-size:18px;letter-spacing:1px}.brand small{letter-spacing:0;font-size:8px}.brand-tower{display:none}.topbar{padding-inline:12px}}
@media(prefers-reduced-motion:reduce){.sprite-body,.sprite-body.acting,.sprite-body.casting,.home-heroes img:first-child,.dark-aura i{animation:none!important}}

/* A viewport overlay, outside the summon card and its clipping/animation context. */
@keyframes screenConfetti{0%{opacity:1;transform:translate(0,-20px) rotate(0)}88%{opacity:1}100%{opacity:0;transform:translate(var(--drift),calc(calc(var(--game-height) * 1.0) + 45px)) rotate(540deg)}}

.hero-options{max-height:min(calc(var(--game-height) * 0.48),430px);overflow-y:auto;overscroll-behavior:contain;padding:4px}.hero-option{flex-shrink:0}

/* Long bilingual brand and tiered blessing cards. */
.home-card h1{font-size:clamp(22px,calc(var(--game-width) * 0.05),38px);line-height:1.5;max-width:520px;overflow-wrap:anywhere;margin-inline:auto}
.topbar>b,.brand>div{font-size:14px;max-width:270px;line-height:1.5;overflow-wrap:anywhere}
.boon-rarity{font-size:12px;letter-spacing:2px;color:#b6cce9}
.boon-option.rarity-E,.boon-chip.rarity-E{border-color:#c896ed}.rarity-E .boon-rarity{color:#d7a8ff}
.boon-option.rarity-L,.boon-chip.rarity-L{border-color:#f1cb6c;box-shadow:inset 0 0 16px #f1cb6c16}.rarity-L .boon-rarity{color:#ffe18a}
@container game (max-width:600px){.topbar>b,.brand>div{font-size:11px;max-width:165px}.home-card h1{font-size:26px}footer>span:first-child{max-width:60%}}

.brand-name{display:inline-flex;flex-direction:column;letter-spacing:0}.brand-name>span{white-space:nowrap}.home-card h1{font-size:clamp(22px,calc(var(--game-width) * 0.05),34px)}

.blessing-icon{width:52px;height:52px;flex-shrink:0;image-rendering:pixelated}.boon-chip .blessing-icon{width:30px;height:30px;margin-right:5px}.boon-option>.blessing-icon{margin:auto}.summon-orb{animation-duration:1.6s}.summon-reveal{animation-duration:2s}.summon-flash{animation-duration:1.9s}

@media(prefers-reduced-motion:reduce){.summon-orb,.summon-flash{display:none}.summon-reveal{animation:none}}

.evolution-hint{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px;color:var(--gold,#f5ce73);font-size:11px}.evolution-hint>img{width:34px;height:34px;object-fit:contain}.recipe-preview>span{color:#f5ce73}.recipe-preview>img{flex-shrink:0}
/* Damage type is conveyed through shape, color and a text label. */
.physical-hit .damage-number{color:#ffd095}.magic-hit .damage-number{color:#dfb6ff}.condition-hit .damage-number{color:#bde68f}
.damage-number>small{display:block;white-space:nowrap;font-size:9px;line-height:1.3;text-shadow:1px 1px #100b19}
.physical-hit .hit-burst{background:#fff2d5;box-shadow:0 5px #ffac49,0 -5px #d97836;transform:rotate(-40deg);animation:physicalSlash .45s ease-out forwards}
.magic-hit .hit-burst{background:radial-gradient(circle,#f6e5ff 0 8%,#b867eb88 10% 35%,transparent 38%);border:3px solid #dfb1ff;border-radius:50%;box-shadow:0 0 10px #c67bff,inset 0 0 8px #c67bff;animation:magicRing .7s ease-out forwards}
.magic-hit .hit-burst:after{content:'';position:absolute;inset:6px;border:2px solid #d9a2ff;transform:rotate(45deg)}
.condition-hit .hit-burst{display:none}
#skill-cutin.enemy-cutin{border-color:#ff9985;background:linear-gradient(90deg,#391625f5,#803b46f5 65%,#321423f5)}
#skill-cutin.enemy-cutin small,#skill-cutin.enemy-cutin strong,#skill-cutin.enemy-cutin>span{color:#ffd0bd}
@keyframes physicalSlash{0%{scale:.2 1;opacity:0}25%{scale:1.3 1;opacity:1}100%{scale:1 1;opacity:0}}
@keyframes magicRing{0%{scale:.35;opacity:0;rotate:0deg}30%{opacity:1}100%{scale:1.3;opacity:0;rotate:90deg}}
@media(prefers-reduced-motion:reduce){.physical-hit .hit-burst,.magic-hit .hit-burst{animation:none}}

/* Each simultaneous effect has its own icon and numeric value. */
.self-effect-values{position:absolute;left:39px;top:0;display:grid;gap:2px;z-index:2}
.effect-value{display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:18px;line-height:22px;text-shadow:1px 1px #12241b,-1px -1px #12241b}
.effect-value .effect-icon{width:22px;height:22px;flex:none}
.effect-value b{font-weight:bold}
.effect-heart{color:#a8eda0}.effect-shield{color:#8ad4ff}.effect-sword{color:#ffe58b}.effect-magic{color:#c99aff}.effect-mana{color:#8ad4ff}
.combat-resource{display:inline-flex;align-items:center;gap:3px}
.combat-resource .effect-icon,.health>small .effect-icon{width:13px;height:13px;vertical-align:middle}
/* MCH battle UI assets retain their original colors and compact, readable size. */
.mch-battle-icon{object-fit:contain;flex-shrink:0;image-rendering:pixelated}
.battle-params .effect-icon,.hero-params .effect-icon,.enemy-detail-heading .effect-icon{width:13px;height:13px;margin-right:3px;filter:none}

.impact-symbols{display:flex;gap:2px;left:0;top:0}.impact-symbols .effect-icon{position:static;width:32px;height:32px}
