*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{font-family:'PingFang SC','Microsoft YaHei',system-ui,sans-serif;background:#123b32;color:#25463a;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed;filter:saturate(.4);opacity:.55}button:focus-visible,a:focus-visible{outline:3px solid #735bce;outline-offset:2px}button{transition:filter .15s,transform .15s}button:not(:disabled):active{transform:translateY(2px)}button:not(:disabled):hover{filter:brightness(1.035)}.game{--green:#239875;--ink:#244b3e;--gold:#f5c655;position:absolute;inset:0;margin:auto;width:min(100dvw,1100px);height:min(100dvh,540px);display:flex;flex-direction:column;gap:8px;padding:8px max(12px,env(safe-area-inset-right)) 5px max(12px,env(safe-area-inset-left));background:#e8f3df;overflow:hidden;isolation:isolate}.topbar{height:42px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:8px;min-width:164px}.brand-heart{font-size:34px;color:#e47572;text-shadow:0 3px #ad54533b}.brand h1{font-size:24px;line-height:1.05;margin:0;letter-spacing:2px;font-weight:900}.brand div>span{font-size:9px;letter-spacing:1.6px;color:#6c8c79;font-weight:700}.status-pill{display:flex;align-items:center;gap:10px;border:1px solid #c7dec5;background:#f7f9ec;border-radius:20px;padding:8px 14px;font-size:13px}.status-pill>b{font-weight:700}.status-pill>span:last-child{color:#758c77}.live-dot{width:7px;height:7px;border-radius:50%;background:#65b789}.top-tools{display:flex;gap:6px}.top-tools button{border:1px solid #cadbc5;border-bottom-width:3px;background:#f8faef;border-radius:10px;color:#345543;min-height:40px;min-width:42px;font-size:17px;padding:4px 11px}.top-tools button span{font-size:13px}.loadout{height:76px;flex-shrink:0;display:flex;gap:8px;align-items:stretch}.energy{display:flex;align-items:center;gap:7px;background:#f7dea1;border:2px solid #dcbb75;border-bottom-width:4px;border-radius:12px;width:99px;flex-shrink:0;padding:10px 8px}.energy>span{font-size:30px;color:#e2a533;text-shadow:0 2px #fff6}.energy>div{display:grid;gap:2px}.energy b{font-size:24px;line-height:1}.energy small{font-size:10px;white-space:nowrap;color:#866e3d}.cards{display:flex;flex:1;gap:6px;min-width:0}.unit-card{position:relative;flex:1;min-width:0;border:2px solid #c3d3bf;border-bottom-width:4px;background:#f8faee;border-radius:10px;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:1px;padding:3px 2px;overflow:hidden;color:var(--ink)}.unit-card.selected{border-color:#259976;box-shadow:0 0 0 2px #25997626;background:#fffef2}.unit-card.locked{background:#dce7d7}.unit-card .sprite{width:42px;height:42px;position:absolute;top:-1px;left:calc(50% - 21px)}.unit-card>b{font-size:12px;z-index:1;margin-top:35px;white-space:nowrap}.unit-card>small{font-size:11px;color:#7b875c}.unit-card .lock{position:absolute;inset:0 0 27px;display:grid;place-items:center;color:#425847;font-size:18px;background:#cfddc066;z-index:2}.unit-card .cooldown{position:absolute;inset:0;background:#29423880;display:grid;place-items:center;color:white;font-weight:800;z-index:3}.unit-card .cost{color:#a27923}.recruit-button{width:102px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:#6855a3;color:#fff4e7;border:2px solid #514084;border-bottom:5px solid #493674;border-radius:12px}.recruit-button>span{font-size:23px;line-height:1}.recruit-button>b{font-size:14px}.recruit-button>small{font-size:10px;color:#e5d6fd}.arena{display:flex;flex:1;gap:8px;min-height:0}.base{display:flex;width:44px;flex-shrink:0;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#cee4d1;border:2px solid #a9c5ac;border-radius:12px;box-shadow:inset 0 0 0 3px #dbeed5}.base>span{font-size:30px;color:#ec8881;animation:heartbeat 2s ease-in-out infinite}.base>b{font-size:17px;line-height:1.4}.base>small{font-size:10px;line-height:1.5;text-align:center;color:#6c876e}.field-shell{flex:1;display:flex;flex-direction:column;min-width:0;border:3px solid #659b6c;border-bottom-width:6px;border-radius:12px;overflow:hidden;background:#8bba7d;box-shadow:0 3px #325b3822}.field-top{height:24px;display:flex;justify-content:space-between;align-items:center;padding:0 10px;color:#385d3c;font-size:11px;flex-shrink:0;background:#cee6b3;border-bottom:1px solid #87b67d}.field-top span:first-child{max-width:78%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field{flex:1;position:relative;min-height:0;background:#b6d898;overflow:hidden}.grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(5,1fr)}.cell{border:0;border-right:1px solid #5f995d22;border-bottom:2px solid #719c6033;background:#b7d89a66;position:relative;padding:0;border-radius:0;min-width:0;min-height:0}.cell:nth-child(16n+9),.cell:nth-child(16n+10),.cell:nth-child(16n+11),.cell:nth-child(16n+12),.cell:nth-child(16n+13),.cell:nth-child(16n+14),.cell:nth-child(16n+15),.cell:nth-child(16n+16){background:#97c38355}.cell:nth-child(2n){box-shadow:inset 0 0 24px #f0ffcf22}.cell:not(:disabled):hover{background:#eaffc585}.cell:focus-visible{outline-offset:-3px}.cell.picked{box-shadow:inset 0 0 0 3px #f9eb9f}.cell.shovel-mode{background:#eccbb166}.cell .sprite{position:absolute;height:140%;width:100%;aspect-ratio:1;left:0;bottom:-4%;pointer-events:none}.cell .unit-hp{position:absolute;left:22%;right:22%;bottom:4px;height:4px;background:#4a614133;border-radius:4px;overflow:hidden;pointer-events:none}.unit-hp>i{display:block;height:100%;background:#36966b;width:100%}.cell .level-label{position:absolute;top:3px;left:3px;font-size:9px;color:#226845}.actors,.effects,.lane-alerts{position:absolute;inset:0;pointer-events:none}.enemy{position:absolute;width:12.5%;height:20%;will-change:left;display:flex;align-items:center;justify-content:center}.enemy>.sprite{width:100%;height:145%;flex-shrink:0}.enemy.boss{width:17%;margin-left:-2.25%;z-index:4}.enemy.boss>.sprite{height:190%}.enemy .enemy-hp{position:absolute;bottom:5%;left:24%;width:52%;height:4px;background:#28463455;overflow:hidden;border-radius:4px}.enemy-hp>i{display:block;height:100%;background:#ef9072}.enemy.slowed{filter:drop-shadow(0 0 5px #a6f9ff)}.enemy.hit .sprite{filter:brightness(1.6)}.enemy.attacking .sprite{animation:nibble .35s ease-in-out infinite}.enemy .sprite{animation:wobble 1s ease-in-out infinite}.sprite{display:block;background-image:url('./assets/characters.png');background-repeat:no-repeat;background-size:400% 300%;background-position:calc(var(--sx)*100%/3) calc(var(--sy)*100%/2);aspect-ratio:1}.projectile{position:absolute;width:11px;height:11px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff4bb;border:2px solid #64b9a3;box-shadow:-7px 0 0 -3px #e8fff199,0 0 7px #fff8;will-change:left;pointer-events:none}.projectile.frost{background:#e2ffff;border-color:#4ea6c5;box-shadow:-8px 0 6px #c5fffd88}.projectile.twin{background:#dec6ff;border-color:#8d5abb}.projectile.mortar{width:16px;height:16px;background:#fff0a0;border:3px solid #e6a855}.pop{position:absolute;transform:translate(-50%,-50%);color:#fffdf2;font-weight:900;font-size:20px;text-shadow:0 2px #417c56;animation:float-away .8s ease-out forwards}.pop.burst{font-size:34px;color:#fff0ac}.lane-warning{position:absolute;right:0;width:25%;height:20%;background:linear-gradient(90deg,transparent,#e99e7088);animation:warning 1s ease-in-out infinite}.side-tools{width:88px;flex-shrink:0;display:flex;flex-direction:column;gap:7px}.wave-info{border:1px solid #c0d6b9;border-radius:10px;background:#f2f6e7;display:grid;gap:4px;padding:9px 8px}.wave-info small{font-size:10px;color:#7b9078}.wave-info b{font-size:20px;line-height:1}.progress{height:5px;background:#dce7cf;overflow:hidden;border-radius:5px}.progress>i{height:100%;display:block;background:#4caa7d;width:0;transition:width .2s}.side-tools>button{min-height:44px;border:1px solid #b7cfb1;border-bottom-width:3px;background:#f6f8e9;border-radius:10px;color:#406345;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;font-size:19px;padding:5px}.side-tools>button span{font-size:12px}.side-tools>button small{font-size:10px;display:block;width:100%;color:#839778}.side-tools .wave-button{background:#369878;border-color:#287257;color:#fff9df;min-height:61px;display:flex;flex-direction:column;font-size:15px;font-weight:800}.side-tools .wave-button span{font-size:10px;opacity:.8;font-weight:500}.side-tools #burst{background:#fae7b2;color:#96712c;border-color:#e0c37a;flex:1}.side-tools #shovel[aria-pressed=true]{border-color:#d79460;background:#f6dab6}footer{height:20px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-shrink:0;font-size:11px;color:#6c896c}footer>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}footer button{background:transparent;border:0;color:#47715c;font-size:11px;white-space:nowrap;min-height:24px}#toast{position:absolute;z-index:10;bottom:34px;left:50%;transform:translateX(-50%);background:#183f35ee;color:#fff8df;padding:10px 18px;border-radius:12px;font-size:14px;pointer-events:none;opacity:0;transition:opacity .2s;max-width:85%;text-align:center}#toast.show{opacity:1}dialog{position:absolute;inset:0;margin:auto;border:2px solid #89ac89;border-radius:20px;padding:16px 22px;max-height:calc(100% - 20px);width:min(630px,90%);color:#2f503f;background:#f9f9eb;box-shadow:0 18px 75px #163c3666;overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#123d3477;backdrop-filter:blur(5px)}.modal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px;color:#8b9d7a;letter-spacing:2px}.modal-top button{width:38px;height:38px;border:1px solid #d5dec9;border-radius:50%;font-size:24px;background:#eff3e2;color:#688465;line-height:1;letter-spacing:0}.modal-title{font-size:29px;line-height:1.25;margin:0 0 9px;font-weight:900;letter-spacing:1px}.modal-lead{font-size:14px;line-height:1.7;color:#688069;margin:0 0 14px}.primary,.secondary{min-height:44px;border-radius:10px;border:2px solid #288568;border-bottom-width:4px;background:#3aa481;color:#fff9e6;padding:10px 18px;font-size:15px;font-weight:750}.secondary{background:#eef1df;border-color:#cfdbc3;color:#587354}.modal-actions{display:flex;gap:10px;justify-content:center;align-items:center;margin-top:14px}.modal-actions>button{flex:1}.intro{text-align:center}.intro .cast{display:flex;justify-content:center;align-items:center;height:98px}.intro .sprite{width:100px;height:100px}.intro .sprite:nth-child(2){width:120px;height:120px;margin:0 -5px;transform:translateY(-4px)}.intro .modal-title{font-size:38px;color:#28684f}.intro .steps{display:flex;gap:8px;justify-content:center;margin:10px 0}.steps>span{padding:8px 10px;border:1px solid #d1ddbf;border-radius:8px;background:#eff3de;font-size:12px;color:#6a7d58}.note{font-size:11px;color:#87977b;line-height:1.6;margin:12px 0 0}.hall-header{display:flex;align-items:center;justify-content:space-between;gap:18px}.ticket-count{background:#eee7fb;border:1px solid #cfbfec;color:#765a9e;border-radius:12px;padding:10px 14px;white-space:nowrap;font-size:15px}.draw-pool{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.draw-card{border:2px solid #cebbe8;background:#eee8f7;border-radius:12px;text-align:center;padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}.draw-card .sprite{height:64px;width:64px}.draw-card b{font-size:14px}.draw-card small{font-size:11px;color:#8b74a4}.draw-card.owned{background:#e4eee0;border-color:#b4d0b1}.quiz-top{display:flex;align-items:center;justify-content:space-between;margin:5px 0 10px;font-size:12px;color:#8a9a73}.quiz-top strong{color:#8261ae}.question{font-size:23px;font-weight:800;line-height:1.5;margin:10px 0 14px}.answers{display:grid;gap:8px}.answers button{display:flex;gap:12px;align-items:center;min-height:48px;font-size:15px;text-align:left;padding:10px 14px;border:1px solid #cfdac1;border-bottom-width:3px;background:#f0f3e3;color:#3d5842;border-radius:10px}.answers button span{width:24px;height:24px;background:#dfe9ce;border-radius:6px;display:grid;place-items:center;font-size:12px;flex-shrink:0}.answers button.correct{background:#d5eed8;border-color:#69ad79;opacity:1;filter:none}.answers button.incorrect{background:#f5dcd2;border-color:#d49381;opacity:1;filter:none}.feedback{padding:10px 13px;margin-top:10px;background:#eaf0d9;border-radius:10px;font-size:13px;line-height:1.7;color:#607953}.feedback b{color:#377353}.feedback p{margin:5px 0}.feedback a,.source{color:#688e7b;font-size:12px}.reveal{display:flex;gap:24px;align-items:center}.reveal .reveal-art{width:170px;height:175px;flex-shrink:0;border-radius:18px;background:radial-gradient(#f5e9ac,#e9e4ed);border:2px solid #ddc686;display:grid;place-items:center;animation:card-flip .75s cubic-bezier(.2,.8,.2,1)}.reveal-art .sprite{width:166px;height:166px}.rarity{font-size:12px;letter-spacing:3px;color:#a077b4}.reveal .stats{display:flex;gap:8px;flex-wrap:wrap}.stats span{padding:6px 9px;border-radius:7px;background:#e9eddb;font-size:12px}.book-layout{display:grid;grid-template-columns:156px 1fr;gap:20px}.book-list{display:flex;flex-direction:column;gap:5px}.book-list button{display:flex;align-items:center;gap:7px;min-height:42px;background:#eff2e1;border:1px solid #d7dfc5;border-radius:8px;padding:2px 8px;text-align:left;font-size:13px;color:#547256}.book-list button.active{background:#dcebd3;border-color:#82b489}.book-list .sprite{width:34px;height:34px}.book-hero{display:flex;align-items:center;gap:8px}.book-hero .sprite{width:80px;height:80px;flex-shrink:0}.book-hero h2{font-size:23px;margin:0 0 5px}.book-hero span{font-size:12px;color:#8a9c7d}.book-text{font-size:14px;line-height:1.8}.book-text p{margin:8px 0}.book-text strong{color:#3b815f}.book-game{padding:9px 12px;background:#f3ecd2;border-radius:10px;font-size:12px;line-height:1.6;color:#968047}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help-grid section{padding:12px;background:#eef2df;border-radius:12px}.help-grid b{font-size:15px;color:#4a785a}.help-grid p{font-size:13px;line-height:1.7;margin:6px 0 0;color:#73876b}.result{text-align:center}.result-symbol{font-size:54px;color:#eab85c}.result-stats{display:flex;justify-content:space-evenly;gap:12px;margin:17px 0}.result-stats div{display:grid;gap:4px;font-size:12px;color:#8a9a7d}.result-stats b{font-size:26px;color:#3d7656}a{color:#427f62}@keyframes wobble{0%,100%{transform:rotate(-4deg) translateY(1px)}50%{transform:rotate(3deg) translateY(-2px)}}@keyframes nibble{50%{transform:translateX(-5px) rotate(-8deg)}}@keyframes heartbeat{50%{transform:scale(1.1)}}@keyframes warning{50%{opacity:.3}}@keyframes float-away{to{opacity:0;transform:translate(-50%,-120%) scale(1.3)}}@keyframes card-flip{from{transform:perspective(600px) rotateY(-100deg) scale(.8);opacity:0}to{transform:perspective(600px) rotateY(0);opacity:1}}
@media(max-height:430px) and (orientation:landscape){.game{gap:6px;padding-top:5px}.topbar{height:37px}.brand h1{font-size:22px}.loadout{height:70px}.unit-card .sprite{height:38px;width:38px;left:calc(50% - 19px)}.unit-card>b{margin-top:31px}.energy b{font-size:22px}.field-top{height:21px}.base{gap:6px}.side-tools{gap:5px}.wave-info{padding:7px}.side-tools .wave-button{min-height:52px}.side-tools>button{min-height:41px}dialog{padding:12px 20px;max-height:calc(100% - 12px)}.modal-top{margin-bottom:3px}.intro .cast{height:76px}.intro .sprite{height:80px;width:80px}.intro .sprite:nth-child(2){height:100px;width:100px}.intro .modal-title{font-size:32px}.modal-lead{margin-bottom:9px}.modal-actions{margin-top:10px}.reveal .reveal-art{height:150px;width:150px}.reveal-art .sprite{height:145px;width:145px}.question{font-size:21px;margin:7px 0 10px}.answers{gap:6px}.answers button{min-height:43px;padding:8px 12px}.draw-card .sprite{width:52px;height:52px}.modal-title{font-size:27px}.top-tools button{min-height:36px}.feedback{font-size:13px}}
@media(orientation:portrait){.game{width:100dvh;height:100dvw;max-width:none;max-height:none;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%) rotate(90deg);padding:6px max(16px,env(safe-area-inset-top)) 5px max(12px,env(safe-area-inset-bottom));gap:6px}.topbar{height:38px}.loadout{height:68px}.unit-card .sprite{height:38px;width:38px;left:calc(50% - 19px)}.unit-card>b{margin-top:31px}.unit-card>small{font-size:10px}.energy{width:92px}.energy b{font-size:22px}.field-top{height:21px}.side-tools{width:82px;gap:5px}.wave-info{padding:7px}.side-tools .wave-button{min-height:52px}.side-tools>button{min-height:40px}.base{gap:6px}dialog{position:fixed;width:min(640px,92dvh);max-height:calc(100dvw - 12px);max-width:calc(100dvh - 24px);left:50%;top:50%;right:auto;bottom:auto;margin:0;transform:translate(-50%,-50%) rotate(90deg);padding:12px 20px}.modal-top{margin-bottom:3px}.intro .cast{height:75px}.intro .sprite{width:82px;height:82px}.intro .sprite:nth-child(2){height:100px;width:100px}.intro .modal-title{font-size:32px}.modal-actions{margin-top:10px}.modal-lead{margin-bottom:9px}.question{font-size:21px;margin:7px 0 10px}.answers{gap:6px}.answers button{min-height:43px;padding:8px 12px}.draw-card .sprite{width:52px;height:52px}.reveal .reveal-art{width:150px;height:150px}.reveal-art .sprite{width:145px;height:145px}}
[hidden]{display:none!important}.game.is-paused .enemy .sprite,.game.is-paused .base>span{animation-play-state:paused}.purify-flash{position:absolute;inset:0;background:radial-gradient(ellipse,#fffccda8,#71d9a688);animation:purify .75s ease-out forwards;pointer-events:none}@keyframes purify{to{opacity:0}}.sprite{filter:drop-shadow(0 2px 1px #315d4022)}
.brand div>span{display:block;line-height:1.2;margin-top:3px}.unit-card .sprite{top:2px;width:34px;height:34px;left:calc(50% - 17px)}.unit-card>b{margin:0;line-height:1.2}.unit-card>small{line-height:1.25;font-size:10px}.unit-card .lock{bottom:31px}.cell .sprite{height:110%;width:auto;aspect-ratio:1.13;left:50%;transform:translateX(-50%);bottom:0}.enemy>.sprite{height:112%;width:auto;aspect-ratio:1.1}.enemy.boss>.sprite{height:160%}dialog:focus{outline:none}
.privacy-banner{position:absolute;z-index:20;left:12px;right:12px;bottom:8px;display:grid;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:9px;padding:10px 12px;border:2px solid #789d80;border-radius:14px;background:#fffdf2f5;box-shadow:0 9px 35px #163c3655;color:#45634c}.privacy-banner>div{display:grid;gap:2px}.privacy-banner b{font-size:13px}.privacy-banner span{font-size:10px;color:#788b71}.privacy-banner button{min-height:38px;border-radius:9px;border:1px solid #bed0b6;background:#edf1df;color:#526f54;padding:7px 11px;font-size:12px;font-weight:700}.privacy-banner button:last-child{background:#3a9d7b;border-color:#28785e;color:#fffceb}.feedback-form fieldset{border:0;padding:0;margin:8px 0 13px;display:flex;gap:7px;flex-wrap:wrap}.feedback-form legend{font-size:12px;font-weight:800;margin-bottom:6px;color:#668069}.feedback-form fieldset:not(.rating) label{position:relative;border:1px solid #cfdbc5;border-radius:9px;background:#eff3e4;padding:8px 10px;font-size:12px}.feedback-form fieldset:not(.rating) input{position:absolute;opacity:0}.feedback-form fieldset:not(.rating) label:has(input:checked){border-color:#419477;background:#dcefe1;color:#28674f}.rating label{position:relative}.rating input{position:absolute;opacity:0}.rating span{display:grid;place-items:center;width:34px;height:34px;border:1px solid #d7d9b9;border-radius:50%;background:#f5f0d6;color:#9a7b38;font-weight:900}.rating input:checked+span{background:#f2c95f;border-color:#dca933;color:#604718;transform:scale(1.08)}.feedback-message{display:grid;gap:5px;position:relative}.feedback-message>span{font-size:12px;font-weight:800;color:#668069}.feedback-message textarea{resize:none;width:100%;border:1px solid #bfceb7;border-radius:10px;background:#fffef5;color:#355343;padding:10px 12px;font:inherit;font-size:13px;line-height:1.6;outline:none}.feedback-message textarea:focus{border-color:#379173;box-shadow:0 0 0 3px #37917320}.feedback-message small{text-align:right;color:#8d9b80;font-size:10px}.form-error{display:block;margin-top:7px;padding:7px 9px;border-radius:8px;background:#f6ddd3;color:#a0523f;font-size:12px}.feedback-thanks{text-align:center;padding:22px 10px}.feedback-thanks>span{display:grid;place-items:center;margin:0 auto 12px;width:62px;height:62px;border-radius:50%;background:#d7efdd;color:#33805c;font-size:32px;font-weight:900}.result-actions>button{padding-left:8px;padding-right:8px;font-size:13px}
@media(max-height:430px) and (orientation:landscape){.feedback-form .modal-title{font-size:24px}.feedback-form .modal-lead{line-height:1.35}.feedback-form fieldset{margin:4px 0 7px}.feedback-message textarea{min-height:55px;max-height:68px}.privacy-banner{padding:7px 9px;bottom:5px}.privacy-banner button{min-height:34px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Virus challenge expansion */
.top-tools{gap:4px}.top-tools button{padding:4px 8px}.top-tools #wheel-open{background:#ede3ff;border-color:#b79bcf;color:#62418a}
.enemy-tag{position:absolute;top:-2px;left:0;right:0;font-style:normal;font-size:10px;text-align:center;color:#fff;background:#314735b8;border-radius:5px;max-width:90%;margin:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.enemy.cloaked{opacity:.17}.enemy.cloaked .enemy-tag{visibility:hidden}.enemy.enraged{filter:drop-shadow(0 0 8px #ff405b)}.enemy.dashing .sprite{animation:nibble .15s infinite}.enemy.enraged .enemy-hp>i{background:#ff375c}
.sprite.v-flu{filter:hue-rotate(5deg)}.sprite.v-sars{filter:hue-rotate(155deg) saturate(1.4)}.sprite.v-je{filter:hue-rotate(60deg) brightness(1.1)}.sprite.v-hiv{filter:hue-rotate(225deg) saturate(1.6)}.sprite.v-rabies{filter:hue-rotate(315deg) saturate(1.7)}.sprite.v-ebola{filter:hue-rotate(310deg) saturate(2) drop-shadow(0 0 6px #d32b64)}.sprite.v-hp{filter:saturate(.7)}
.jam-status{position:absolute;z-index:8;top:7px;left:50%;transform:translateX(-50%);padding:5px 13px;border-radius:20px;background:#56288fdf;color:#fff;font-size:12px;white-space:nowrap;pointer-events:none}.jammed .field-shell{border-color:#9570bc}.jammed .cell .sprite{filter:drop-shadow(0 0 5px #974bea)}
.game[data-theme=flu] .field{background:#a9d8e6}.game[data-theme=sars] .field{background:#9cbbce}.game[data-theme=noro] .field{background:#c5bfeb}.game[data-theme=je] .field{background:#8dcaad}.game[data-theme=hiv] .field{background:#b5a1d9}.game[data-theme=rabies] .field{background:#e2b792}.game[data-theme=ebola] .field{background:#d09fa9}.game:not([data-theme=garden]) .cell{background:#fff1}.game:not([data-theme=garden]) .cell:nth-child(2n){background:#152d4012}
.wheel-layout{display:grid;grid-template-columns:260px 1fr;gap:20px;align-items:center}.wheel-wrap{position:relative;width:250px;height:250px;margin:12px auto}.virus-wheel{position:absolute;inset:0;border:8px solid #51437a;border-radius:50%;background:conic-gradient(#75c5d9 0deg 51.43deg,#bea0e1 51.43deg 102.86deg,#689dae 102.86deg 154.29deg,#7cbf97 154.29deg 205.71deg,#9269b8 205.71deg 257.14deg,#eab26f 257.14deg 308.57deg,#d7768a 308.57deg 360deg);box-shadow:0 8px 0 #332b55,0 12px 24px #51437a40;transition:transform 2.8s cubic-bezier(.12,.7,.12,1)}.virus-wheel>span{position:absolute;inset:0;transform:rotate(var(--angle));text-align:center;padding-top:17px}.virus-wheel b{display:inline-block;color:#fff;font-size:16px;text-shadow:0 1px 3px #283140;writing-mode:vertical-rl;letter-spacing:2px}.wheel-pointer{position:absolute;z-index:3;left:calc(50% - 14px);top:-16px;color:#fff5bc;font-size:35px;text-shadow:0 2px 2px #43345f}.wheel-wrap>button{position:absolute;width:91px;height:91px;top:calc(50% - 45.5px);left:calc(50% - 45.5px);border-radius:50%;border:5px solid #f6ecc7;background:#51417b;color:white;font-size:18px;font-weight:800;box-shadow:0 3px 12px #42305f;z-index:2}.wheel-wrap small{display:block;font-size:10px;margin-top:4px;letter-spacing:0;color:#e8d9f6}.wheel-result .modal-title{font-size:25px}.wheel-result .modal-lead{font-size:14px}.wheel-picked{display:flex;align-items:center;gap:8px;border:1px solid #c7b4da;border-radius:12px;background:#ece5f7;padding:8px}.wheel-picked .sprite{width:64px;height:64px;flex-shrink:0}.wheel-picked strong{font-size:16px}.wheel-picked p{font-size:12px;line-height:1.5;margin:5px 0}.wheel-result #wheel-choice{font-size:13px;line-height:1.7}.book-list{max-height:300px;overflow-y:auto;padding-right:4px}.book-list button{flex-shrink:0}.enemy-stats{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0}.enemy-stats span{font-size:12px}.book-game{margin-top:10px}.result-actions{flex-wrap:wrap}.result-actions>button{flex:1 1 35%}
@media(max-height:450px) and (orientation:landscape){.wheel-wrap{width:210px;height:210px}.wheel-layout{grid-template-columns:215px 1fr;gap:14px}.wheel-result .modal-title{font-size:23px}.wheel-result .modal-lead{line-height:1.45}.wheel-picked .sprite{width:48px;height:48px}.top-tools button span{font-size:11px}.status-pill{padding:6px 8px;font-size:12px}.brand h1{font-size:22px}}
@media(orientation:portrait){.wheel-wrap{width:210px;height:210px}.wheel-layout{grid-template-columns:215px 1fr;gap:14px}.top-tools button span{font-size:11px}.wheel-result .modal-lead{line-height:1.45}.wheel-picked .sprite{width:48px;height:48px}.status-pill{font-size:11px;padding:6px 7px}.brand h1{font-size:22px}}
@media(prefers-reduced-motion:reduce){.virus-wheel{transition:none}}
