:root{color-scheme:dark;--bg:#101613;--panel:#171e19;--ink:#edf0e5;--muted:#8b9888;--line:#303a2e;--lime:#d5ee88;--display:Georgia,'Times New Roman',serif;--sans:Inter,'Segoe UI',Arial,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--lime);outline-offset:4px}button{color:inherit}a{color:inherit;text-decoration:none}button{transition:background .18s,transform .18s,border-color .18s}button:hover:not(:disabled){filter:brightness(1.1)}button:active:not(:disabled){transform:translateY(1px)}.hidden{display:none!important}.app-shell{max-width:1600px;padding:0 48px;margin:auto}.topbar{height:103px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:3.8px;font-size:23px;line-height:1.05}.brand-mark{font-family:Georgia;font-size:49px;line-height:1;color:var(--lime);transform:rotate(-20deg)}.brand-sub{display:block;font-size:10px;letter-spacing:6.4px;color:var(--muted);margin-top:8px}.top-right{display:flex;gap:14px;align-items:center}.connection{font-size:12px;color:var(--muted);margin-right:10px;display:flex;gap:8px;align-items:center}.connection i,.eyebrow i{height:6px;width:6px;border-radius:50%;background:#d6a263;display:inline-block}.connection.online i{background:var(--lime)}.icon-button{border:1px solid var(--line);background:transparent;border-radius:50%;width:36px;height:36px;color:#b4bdb0;font-size:18px}.menu-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(365px,1fr);margin-top:30px;border:1px solid var(--line);min-height:600px}.world-preview{position:relative;overflow:hidden;min-height:600px;background:#16231f}.world-preview canvas{position:absolute;width:100%;height:100%;image-rendering:pixelated}.scene-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(10,19,16,.68),transparent 95%),linear-gradient(0deg,#101b18 0%,transparent 30%,rgba(8,14,12,.15) 65%,#111b17 100%)}.scene-top{position:absolute;top:28px;left:29px;right:29px;display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:600;color:#c9d6bf;display:flex;align-items:center;gap:8px}.eyebrow i{background:var(--lime)}.build-label{font-size:10px;letter-spacing:1px;color:#8a9b8b}.scene-title{position:absolute;top:102px;left:39px;pointer-events:none}.overline{font-size:10px;letter-spacing:2.6px;color:#adbda6;margin-bottom:22px}h1{font-family:var(--display);font-weight:400;font-size:clamp(55px,6.8vw,104px);line-height:.96;letter-spacing:-5px;margin:0;text-shadow:0 3px 15px #17251c}h1 em{color:var(--lime);font-style:normal}.scene-title p{color:#adbaa6;font-size:14px;line-height:1.8;margin-top:26px}.scene-bottom{position:absolute;bottom:25px;left:30px;right:30px;display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.5px;color:#cad2c0}.scene-bottom b{color:var(--lime);margin-right:14px;font-weight:400}.map-label{color:#849783}.map-label span{margin-left:12px;font-size:18px}.play-panel{padding:31px 36px 24px;background:linear-gradient(135deg,#1a221c,#161e18);border-left:1px solid var(--line)}.panel-heading{display:flex;justify-content:space-between;align-items:center}.section-index{font-size:10px;letter-spacing:1.8px;color:#b9c4b0;font-weight:600}.tiny-badge{font-size:9px;letter-spacing:1px;border:1px solid #46503c;padding:5px 7px;color:#aebc9e;border-radius:2px}h2{font-family:var(--display);font-size:32px;letter-spacing:-.9px;font-weight:400;margin:24px 0 7px}.muted{color:var(--muted);font-size:14px;line-height:1.6;margin:0 0 25px}.field-label{font-size:10px;font-weight:600;letter-spacing:1.5px;color:#a1af97;display:block;margin-bottom:9px}input{background:#111913;border:1px solid #3b4735;border-radius:3px;color:var(--ink);padding:12px 14px;width:100%;height:44px;font-size:14px}input::placeholder{color:#788570}.character-label{display:flex;align-items:center;justify-content:space-between;margin-top:25px}.character-label>span:last-child{font-size:10px;color:#778671;margin-bottom:9px;font-variant-numeric:tabular-nums}.character-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.character-card{position:relative;height:81px;display:flex;align-items:center;justify-content:center;border:1px solid #36402f;border-radius:3px;background:#131b15;overflow:hidden}.character-card canvas{width:65px;height:65px;image-rendering:pixelated}.character-card.selected{border-color:var(--lime);background:linear-gradient(0deg,#2d3820,#19231a)}.character-card.selected:after{content:'✓';position:absolute;right:5px;top:3px;color:var(--lime);font-size:11px}.character-detail{min-height:80px;padding:13px 0 15px;border-bottom:1px solid var(--line)}.character-name{display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:600}.class-tag{font-size:9px;letter-spacing:1px;color:var(--lime);font-weight:400}.character-detail p{font-size:12px;color:var(--muted);margin:7px 0 0;line-height:1.5}.actions{padding-top:20px}.button{border:1px solid transparent;border-radius:3px;height:45px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;font-weight:600}.button.primary{background:var(--lime);color:#1d2817;width:100%;border-color:var(--lime)}.button.primary span{font-size:21px;font-weight:400}.button.secondary{background:#1c261c;border-color:#3a4732;color:#d4dfc9;justify-content:center;flex:1}.action-row{display:flex;gap:10px;margin-top:9px}.solo-button{border:0;background:none;color:#8e9e80;width:100%;padding:17px 0 12px;font-size:12px}.solo-button span{margin-left:9px}.run-info{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:8px;padding-top:17px;gap:8px}.run-info>span{font-size:8px;letter-spacing:1px;color:#88987c;white-space:nowrap}.run-info b{font-size:13px;font-weight:500;color:#becdab;margin-right:5px}.how-strip{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--line);padding:29px 0 32px;gap:25px}.how-strip>div{display:flex;align-items:center;gap:17px;border-right:1px solid var(--line);padding-right:24px}.how-strip>div:last-child{border:0;padding-right:0}.tip-number{font-family:var(--display);font-size:26px;color:#637159}.how-strip p{font-size:12px;margin:0;flex:1;line-height:1.7}.how-strip strong{font-weight:500;color:#dae1d2}.how-strip p span{display:block;color:#85937c;font-size:11px}.keycaps{font-size:9px;letter-spacing:3px;white-space:nowrap;border:1px solid #36402e;padding:5px 6px;color:#9aa78d;border-radius:3px}.tip-symbol{font-size:29px;color:#96a47b}.app-shell>footer{display:flex;justify-content:space-between;gap:15px;color:#63715d;font-size:8px;letter-spacing:1.4px;padding:24px 0}.app-shell>footer i{font-style:normal;margin:0 10px}dialog{background:#1a231c;color:var(--ink);border:1px solid #455139;padding:35px;max-width:480px;width:calc(100% - 32px);border-radius:7px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#060d0ad6;backdrop-filter:blur(5px)}dialog h2{margin-top:18px}dialog .button{margin-top:24px}.dialog-close{position:absolute;right:16px;top:12px;background:none;border:0;font-size:26px;color:var(--muted)}#room-code{font-size:25px;letter-spacing:12px;text-transform:uppercase;text-align:center;height:60px}.help-list p{font-size:13px;line-height:1.65;color:#9aab91}.help-list b{display:block;color:var(--lime);font-weight:500;font-size:14px;margin-bottom:3px}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100% - 30px);background:#2a3625;color:#e2ecd5;box-shadow:0 6px 30px #0008;border:1px solid #526342;padding:14px 22px;font-size:14px;border-radius:5px}.lobby-screen{margin-top:30px;min-height:600px;border:1px solid var(--line);background:radial-gradient(ellipse at top,#2a3725,transparent 60%),#172019;padding:38px}.lobby-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.lobby-top h2{font-size:43px;margin-top:17px}.party-code{display:flex;align-items:center;gap:20px;padding:17px 20px;border:1px solid #49553d;background:#111a14;border-radius:4px}.party-code small{font-size:9px;color:var(--muted);letter-spacing:1.5px}.party-code strong{display:block;font-size:26px;letter-spacing:6px;color:var(--lime);margin-top:5px}.lobby-players{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:25px 0}.player-slot{height:250px;border:1px solid #45503a;background:linear-gradient(0deg,#283420,#18251d);text-align:center;padding:18px 10px;position:relative;border-radius:4px}.player-slot.empty{background:#121c1580;border-style:dashed;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#75866c}.empty-icon{font-size:34px;margin-bottom:20px;color:#47573e}.player-slot canvas{height:122px;width:122px;image-rendering:pixelated}.player-slot h3{font-size:16px;font-weight:500;margin:5px 0}.player-slot p{font-size:12px;color:#9aa98d;margin:8px 0}.slot-role{font-size:9px;letter-spacing:1.4px;color:var(--lime)}.slot-ready{position:absolute;left:10px;right:10px;bottom:15px;font-size:10px;color:#d1e49c;letter-spacing:1px}.lobby-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:26px}.lobby-bottom .primary{width:240px}.lobby-bottom .secondary{flex:unset}.visibility{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--muted)}.visibility input{width:16px;height:16px;accent-color:var(--lime)}.lobby-controls{display:flex;gap:10px;align-items:center}.lobby-note{font-size:12px;color:var(--muted);line-height:1.7}.lobby-class-options{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.lobby-class-options button{padding:7px 12px;background:transparent;border:1px solid #45503a;font-size:12px;border-radius:3px;color:#a8b79a}.lobby-class-options button.active{border-color:var(--lime);color:var(--lime)}.game-screen{position:relative;margin-top:22px;height:calc(100dvh - 180px);min-height:470px;max-height:1000px;overflow:hidden;border:1px solid #394331;background:#12221d}.game-screen>canvas{width:100%;height:100%;display:block;image-rendering:pixelated}.game-hud{position:absolute;top:0;left:0;right:0;pointer-events:none}.hud-top{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 60px 10px 20px;background:linear-gradient(#0a130deb,transparent)}.team-list{display:flex;flex-direction:column;gap:8px}.team-member{width:165px;display:grid;grid-template-columns:10px 1fr;column-gap:8px;align-items:center}.team-member i{width:7px;height:7px;border-radius:50%;grid-row:span 2}.team-member .member-name{font-size:11px;color:#dce4d4;display:flex;justify-content:space-between}.team-member .member-name small{font-size:9px;color:#9aac88}.hp-track{height:4px;background:#32402b;margin-top:5px}.hp-track span{display:block;height:100%;transition:width .15s}.hud-time{text-align:center;position:absolute;left:50%;transform:translateX(-50%)}.hud-time strong{font-size:30px;letter-spacing:3px;font-variant-numeric:tabular-nums;font-weight:400}.hud-time small{display:block;font-size:9px;letter-spacing:2px;color:#a8bc98;margin-top:4px}.hud-stats{text-align:right;font-size:20px;font-variant-numeric:tabular-nums}.hud-stats small{display:block;font-size:9px;letter-spacing:1.5px;color:#a8bc98;margin-top:4px}.xp-line{position:absolute;top:0;left:0;right:0;height:4px;background:#283827}.xp-line span{display:block;background:var(--lime);height:100%;box-shadow:0 0 10px #cbea7077}.level-label{position:absolute;left:20px;top:115px;font-size:10px;color:var(--lime);letter-spacing:1px}.game-pause{position:absolute;right:15px;top:19px;background:#162017d9}.game-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:25px;background:#09110bdc;backdrop-filter:blur(4px);z-index:5;overflow:auto}.overlay-content{text-align:center;max-width:850px;width:100%;margin:auto}.overlay-content h2{font-size:49px;margin:13px 0}.overlay-content>.muted{margin-bottom:28px}.upgrade-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.upgrade-card{text-align:left;position:relative;padding:25px 22px 22px;border:1px solid #5c6c45;border-radius:5px;background:linear-gradient(140deg,#2b3823,#18221a);min-height:216px;display:flex;flex-direction:column;align-items:flex-start;gap:14px}.upgrade-card:hover{border-color:var(--lime);transform:translateY(-4px)}.upgrade-card .upgrade-icon{font-family:Georgia;font-size:35px;color:var(--lime)}.upgrade-card .rarity{font-size:9px;letter-spacing:2px;color:#a9bd8b}.upgrade-card.rare{border-color:#796597;background:linear-gradient(140deg,#30273b,#1b2020)}.upgrade-card.rare .rarity,.upgrade-card.rare .upgrade-icon{color:#cbb1ef}.upgrade-card strong{font-family:var(--display);font-weight:400;font-size:24px}.upgrade-card p{font-size:13px;line-height:1.6;color:#a8b79c;margin:0}.upgrade-card kbd{position:absolute;top:15px;right:15px;font-size:10px;padding:4px 7px;border:1px solid #647151;border-radius:3px;color:#bccaaa}.upgrade-status{font-size:12px;color:#b1c295;margin:23px 0 0}.overlay-actions{display:flex;gap:12px;justify-content:center;max-width:470px;margin:28px auto 0}.overlay-actions .button{flex:1}.result-icon{font-size:47px;color:var(--lime)}.result-stats{display:flex;gap:30px;justify-content:center;margin:27px 0}.result-stats strong{display:block;font-family:var(--display);font-size:35px;font-weight:400;color:var(--lime)}.result-stats small{font-size:9px;letter-spacing:1.5px;color:#9bab8e}.score-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:20px;text-align:left}.score-table th{font-size:9px;letter-spacing:1.5px;font-weight:400;color:#8fa27e;padding:12px;border-bottom:1px solid #425038}.score-table td{padding:12px;border-bottom:1px solid #2d3a27}.score-table td:not(:first-child),.score-table th:not(:first-child){text-align:right}.touch-controls{display:none;position:absolute;bottom:36px;left:20px;right:20px;justify-content:space-between;align-items:center;pointer-events:none}.joystick{height:110px;width:110px;border:1px solid #b1ca7966;background:#b1ca7918;border-radius:50%;pointer-events:auto;touch-action:none;position:relative}.joystick span{height:43px;width:43px;background:#cbe18a55;border:1px solid #cbdf9888;border-radius:50%;position:absolute;top:33px;left:33px;pointer-events:none}.dash-button{width:68px;height:68px;border:1px solid #cfe49299;background:#1c301fb3;border-radius:50%;font-size:11px;letter-spacing:1px;pointer-events:auto;touch-action:none}.spectator-note{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);color:#e2c8a3;font-size:12px;text-align:center}.waiting-survivors{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:20px}.waiting-survivors span{font-size:12px;padding:8px 12px;border:1px solid #566844;border-radius:3px;color:#b4c59e}
@media(min-width:1600px){.menu-layout{min-height:660px}.world-preview{min-height:660px}.play-panel{padding:38px 45px}.actions{padding-top:30px}.character-card{height:93px}.scene-title{top:125px}.scene-title h1{font-size:106px}}
@media(max-width:1100px){.app-shell{padding:0 25px}.play-panel{padding:27px 24px}.scene-title{left:27px}h1{font-size:74px}.build-label{display:none}.how-strip{gap:15px}.keycaps,.tip-symbol{display:none}.how-strip>div{padding-right:10px;gap:10px}.lobby-screen{padding:25px}.player-slot canvas{height:100px;width:100px}}
@media(max-width:800px){.app-shell{padding:0 18px}.topbar{height:80px}.brand{font-size:19px}.brand-sub{font-size:8px}.brand-mark{font-size:41px}.menu-layout{grid-template-columns:1fr;margin-top:20px}.world-preview{min-height:430px}.scene-title{top:86px}.scene-title h1{font-size:76px}.scene-title p{margin-top:19px}.play-panel{border-left:0;border-top:1px solid var(--line);padding:28px}.character-card{height:95px}.how-strip{padding:23px 0;gap:10px}.how-strip>div{align-items:flex-start}.tip-number{font-size:21px}.how-strip p{font-size:11px}.how-strip p span{font-size:10px}.app-shell>footer{font-size:8px}.app-shell>footer>span:last-child{display:none}.game-screen{height:calc(100dvh - 122px);margin-top:15px}.lobby-top{flex-wrap:wrap}.lobby-top h2{font-size:33px}.lobby-players{grid-template-columns:repeat(2,1fr)}.player-slot{height:210px}.lobby-bottom{flex-direction:column;align-items:stretch}.lobby-controls .primary{width:auto;flex:1}.upgrade-grid{gap:9px}.upgrade-card{padding:19px 14px;min-height:220px}.upgrade-card strong{font-size:20px}.overlay-content h2{font-size:38px}.result-stats{gap:22px}}
@media(max-width:480px){.app-shell{padding:0 12px}.connection{font-size:10px;margin-right:0}.top-right{gap:8px}.brand{letter-spacing:2px}.icon-button{height:32px;width:32px}.world-preview{min-height:410px}.scene-top{left:22px;top:23px}.scene-title{left:23px}.scene-title h1{font-size:67px;letter-spacing:-3px}.overline{font-size:9px;letter-spacing:2px}.scene-bottom{left:22px;right:22px;font-size:9px}.map-label{font-size:8px}.play-panel{padding:25px 21px}.how-strip{grid-template-columns:1fr;gap:16px;padding:22px 10px}.how-strip>div{border:0;align-items:center;gap:18px}.how-strip p{font-size:13px}.how-strip p span{font-size:12px}.tip-symbol,.keycaps{display:block}.game-screen{margin-left:-12px;margin-right:-12px;border-left:0;border-right:0;min-height:440px}.hud-top{padding-left:12px}.team-member{width:112px}.team-member .member-name{font-size:9px}.hud-time strong{font-size:23px}.hud-time small{font-size:8px}.hud-stats{font-size:17px}.level-label{left:12px}.upgrade-grid{grid-template-columns:1fr}.upgrade-card{min-height:0;display:grid;grid-template-columns:37px 1fr;padding:16px;gap:5px 12px}.upgrade-card .upgrade-icon{grid-row:span 3;align-self:center}.upgrade-card strong{font-size:21px}.upgrade-card p{font-size:12px}.upgrade-card kbd{display:none}.overlay-content h2{font-size:31px}.overlay-content>.muted{margin-bottom:17px;font-size:12px}.game-overlay{padding:20px 16px}.result-stats{gap:18px}.result-stats strong{font-size:27px}.score-table{font-size:11px}.score-table td,.score-table th{padding:10px 5px}.lobby-screen{padding:22px 17px}.lobby-controls{flex-wrap:wrap}.lobby-controls .button{flex:1}.lobby-players{gap:10px}.slot-ready{font-size:9px}.overlay-actions{flex-wrap:wrap}}
@media(pointer:coarse){.touch-controls{display:flex}.spectator-note{bottom:15px}.game-screen{touch-action:none}}
.server-notice{font-size:14px;line-height:1.6;color:#d7c6a3;border:1px solid #695b37;background:#382f1d55;padding:12px;margin:0 0 14px;border-radius:3px}
.level-label{top:var(--team-bottom,115px)}
@media(max-width:800px){.play-panel{order:-1;border-top:0;border-bottom:1px solid var(--line)}.world-preview{min-height:280px}.scene-title{top:69px}.scene-title h1{font-size:57px;letter-spacing:-2px}.scene-title p{display:none}.overline{margin-bottom:15px;font-size:9px}.scene-bottom{bottom:19px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.language-button{flex-shrink:0;min-width:64px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--lime);font-size:14px;font-weight:600;white-space:nowrap}
.upgrade-card.uncommon{border-color:#719d8c}.upgrade-card.rare{border-color:#92afe3}.upgrade-card.epic{border-color:#c49aec;background:linear-gradient(145deg,#302737,#18231e)}
.upgrade-card .rarity{color:#a7b69c}.upgrade-card.uncommon .rarity{color:#a5d8be}.upgrade-card.rare .rarity{color:#aac5f4}.upgrade-card.epic .rarity{color:#d7b7f5}
.upgrade-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0;text-align:left}.upgrade-card p{font-size:14px;line-height:1.6;margin:0}.upgrade-category{font-size:13px;color:#bdc4af}.upgrade-values{margin-top:auto;padding-top:12px;font-size:14px;line-height:1.5;color:#dfebc9}.upgrade-card .rarity{font-size:12px;letter-spacing:1px}
.game-overlay{overflow-y:auto}.overlay-content{margin:auto}
@media(max-width:600px){.upgrade-card{display:flex;gap:5px;padding:14px}.upgrade-grid{grid-template-columns:1fr}.upgrade-card .upgrade-icon{display:none}.upgrade-values{padding-top:4px}.upgrade-card strong{font-size:19px}}
html[lang="zh-CN"]{--sans:'Segoe UI','Microsoft YaHei','PingFang SC',sans-serif;--display:Georgia,'Songti SC','SimSun',serif}
html[lang="zh-CN"] .scene-title h1{letter-spacing:0;line-height:1.14;font-size:clamp(50px,5.5vw,88px)}
html[lang="zh-CN"] .overlay-content h2{line-height:1.3;letter-spacing:0}
html[lang="zh-CN"] .class-tag{letter-spacing:.5px}
@media(max-width:600px){.topbar{height:auto;min-height:80px;gap:10px;padding-block:14px;flex-wrap:wrap}.top-right{margin-left:auto;gap:8px}.connection{font-size:11px;margin-right:0}.language-button{min-width:59px}.game-screen{height:calc(100dvh - 158px)}}@media(max-width:600px){.upgrade-card{min-height:0}}

.game-network{position:absolute;left:16px;bottom:14px;z-index:3;font-size:12px;line-height:1.4;color:#b7cda6;pointer-events:auto;text-shadow:0 1px 3px #000}.connection-help{font-size:14px;line-height:1.6;padding:12px;border:1px solid #93775a;border-radius:4px;color:#e6c9a3;background:#30271d;margin:0 0 12px}.hud-time{pointer-events:none}.hud-stats{pointer-events:none}@media(pointer:coarse){.game-network{bottom:125px}}

.upgrade-build{margin:20px auto 0;max-width:780px;text-align:left;color:#b8c8aa;font-size:13px;line-height:1.7}.upgrade-build summary{cursor:pointer;color:var(--lime)}.upgrade-build p{margin:8px 0}
.menu-status{color:var(--lime);font-size:14px;line-height:1.6;margin:0 0 12px;pointer-events:none}[aria-busy="true"]{cursor:progress;opacity:.8}#menu-retry{margin-bottom:12px}

.audio-settings{display:grid;gap:12px;margin:24px 0}.audio-settings label{display:flex;align-items:center;justify-content:space-between;gap:12px}.audio-settings input[type=range]{width:100%;padding:0;accent-color:var(--lime)}.audio-settings .audio-mute{justify-content:flex-start;margin-top:14px}.audio-settings input[type=checkbox]{width:18px;height:18px;accent-color:var(--lime)}#audio-dialog{max-width:500px}#audio-dialog .muted{font-size:13px;line-height:1.6}

.visual-settings{margin:20px 0}.visual-settings select{margin-left:15px;background:#182a24;color:#edf4dd;padding:8px;border:1px solid #5c6b51}.upgrade-card.red{position:relative;isolation:isolate;overflow:hidden;border:2px solid #ff5878;background:radial-gradient(ellipse at 80% 0%,#751c46aa,transparent 65%),linear-gradient(140deg,#361327,#211d20);box-shadow:0 0 24px #ff30543b;animation:crimson-reveal .65s ease-out,crimson-pulse 2.4s ease-in-out infinite}.upgrade-card.red .rarity{color:#ff9caf}.upgrade-card.red strong{color:#fff0d3}.upgrade-card.red::before{content:'';position:absolute;inset:-80%;z-index:-1;pointer-events:none;background:repeating-conic-gradient(from 0deg,transparent 0deg 65deg,#ff597311 68deg 70deg);animation:crimson-turn 16s linear infinite}.upgrade-card.red::after{content:'✧ · ✦ · ✧';position:absolute;right:10px;top:18px;color:#ff899daa;pointer-events:none;animation:crimson-pulse 3s ease-in-out infinite}.upgrade-card.red:focus-visible{outline:3px solid #ffe09c;outline-offset:5px}@keyframes crimson-reveal{from{transform:translateY(20px) scale(.94);filter:brightness(1.8)}to{transform:none;filter:none}}@keyframes crimson-pulse{50%{border-color:#ffb4c1;box-shadow:0 0 28px #ff30546b}}@keyframes crimson-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.upgrade-card.red,.upgrade-card.red::before,.upgrade-card.red::after{animation:none}}
.boss-bars{position:absolute;top:90px;left:max(205px,calc(50% - 240px));right:max(105px,calc(50% - 240px));display:flex;flex-direction:column;gap:8px;pointer-events:none}.boss-bar{background:#11121ee8;border:1px solid #735e66;padding:9px 14px 7px;box-shadow:0 3px 12px #0005}.boss-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#e5cbc0}.boss-heading strong{font:15px Georgia,serif;letter-spacing:1.5px;text-transform:uppercase}.boss-heading span{font-size:11px;color:#c4a8aa}.boss-track{height:9px;background:#39272e;margin:7px 0 5px;border:1px solid #705057}.boss-track i{display:block;height:100%;background:linear-gradient(90deg,#89566d,#d89388)}.boss-numbers{font-size:11px;color:#cfbdbc;font-variant-numeric:tabular-nums;display:flex;justify-content:space-between}.boss-numbers b{color:#f1d8bf}.boss-bar.low{border-color:#c77e69}.boss-bar.low .boss-track i{background:#ee9c78}.boss-bar.windup .boss-heading span{color:#ffcf94}.boss-bar.windup{border-color:#b5936d}@media(max-width:700px){.boss-bars{top:90px;left:12px;right:12px}.team-list{position:absolute;top:177px;left:12px}.level-label{top:calc(177px + var(--team-bottom,115px))}.boss-heading strong{font-size:13px}.boss-heading span{font-size:10px}.boss-bar{padding:7px 10px}.hud-top{min-height:75px}.boss-bars .boss-numbers{font-size:11px}}

@media(max-width:700px){#game-hud .level-label{top:calc(177px + var(--team-bottom,115px))}}

.hud-stats{margin-left:auto}

@media(max-width:700px){#game-hud{--party-top:calc(90px + var(--boss-count,0)*87px)}#game-hud .team-list{top:var(--party-top)}#game-hud .level-label{top:calc(var(--party-top) + var(--party-height,70px))}}

.field-announcement{position:fixed;left:50%;bottom:15%;transform:translateX(-50%);max-width:min(620px,90vw);width:max-content;padding:14px 22px;background:#171222e8;border:1px solid #9b83b6;text-align:center;pointer-events:none;z-index:4}.field-announcement strong{font:20px Georgia;color:#e4d3fa}.field-announcement small{display:block;margin-top:7px;font-size:13px;color:#d9ceba}.field-timers{position:absolute;right:14px;top:var(--field-top,178px);display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11px;color:#ead4a1;pointer-events:none}.field-timers span{padding:4px 7px;background:#141921bb}.cinematic-overlay{background:transparent;backdrop-filter:none;pointer-events:none;align-items:flex-end;padding-bottom:60px}.encounter-caption{font:clamp(22px,3vw,40px) Georgia;color:#e8d8ac;text-shadow:0 2px 12px #000;text-align:center}.encounter-summary{font-size:12px;color:#c9c0a7;line-height:1.6}.encounter-summary p:last-child{max-height:75px;overflow:auto}.score-table td:last-child{max-width:160px;font-size:11px}@media(max-width:700px){.field-timers{top:calc(var(--party-top,177px) + var(--party-height,70px) + 32px);right:12px}.field-announcement{bottom:10%;padding:10px 14px}.field-announcement strong{font-size:16px}.field-announcement small{font-size:11px}}

/* One persistent notice per event: snapshot redraws never restart its entrance. */
.field-announcement{position:absolute;bottom:11%;left:50%;display:flex;gap:16px;align-items:center;width:min(540px,88%);max-width:620px;padding:17px 24px;text-align:left;background:linear-gradient(110deg,#10171aed,#21192be8);border:1px solid #bba67766;border-left:2px solid #bba677aa;border-radius:2px 16px 2px 16px;box-shadow:0 12px 34px #0006,inset 0 1px #d8bc8b18;backdrop-filter:blur(5px);z-index:6;animation:omen-life 4.8s both;pointer-events:none}.field-announcement strong{display:block;font:600 20px Georgia,serif;color:#ece0c5;line-height:1.3}.field-announcement small{font-size:13px;line-height:1.5;color:#cabfa9}.omen-kicker{display:block;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#ac9e82;margin-bottom:5px}.omen-sigil{font:36px Georgia;color:#d6bd84;text-shadow:0 0 16px #d6bd8460}.omen-crimson{border-color:#b84b6077;background:linear-gradient(110deg,#1b111aed,#391621e8);box-shadow:0 12px 34px #0007,0 0 22px #a42c3520}.omen-crimson .omen-sigil{color:#f19998}.omen-boss{border-color:#dbc39288;background:linear-gradient(110deg,#12151cec,#342a23ec);padding:21px 26px}.omen-boss strong{font-size:24px;letter-spacing:.05em}.omen-subtle{width:max-content;max-width:85%;padding:12px 18px}.omen-subtle .omen-sigil{font-size:24px}.omen-subtle strong{font-size:17px}.toast{background:linear-gradient(115deg,#111a1ded,#252332ed);border:1px solid #a8956966;border-radius:2px 12px 2px 12px;box-shadow:0 8px 28px #0006;backdrop-filter:blur(5px);line-height:1.5}.encounter-caption{animation:encounter-reveal .9s both;letter-spacing:.08em}.cinematic-overlay:has(.encounter-caption){background:linear-gradient(transparent 50%,#0c111550)}
@keyframes omen-life{0%{opacity:0;transform:translate(-50%,18px);filter:blur(3px)}12%,84%{opacity:1;transform:translate(-50%,0);filter:blur(0)}100%{opacity:0;transform:translate(-50%,-10px)}}@keyframes encounter-reveal{from{opacity:0;transform:translateY(24px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@media(max-width:700px){.field-announcement{bottom:9%;padding:12px 15px;gap:10px}.field-announcement strong,.omen-boss strong{font-size:17px}.field-announcement small{font-size:12px}.omen-sigil{font-size:26px}}
@media(prefers-reduced-motion:reduce){.field-announcement{animation-name:omen-fade}.encounter-caption{animation:none}}@keyframes omen-fade{0%,100%{opacity:0}12%,84%{opacity:1}}

.dash-cooldown{--cooldown:0deg;position:absolute;bottom:15px;right:18px;width:44px;height:44px;border-radius:50%;background:conic-gradient(from 0deg,#53656dcc 0deg var(--cooldown),#cbe58c var(--cooldown) 360deg);border:1px solid #b4c58b;display:grid;place-items:center;z-index:3;pointer-events:none}.dash-cooldown span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#17241e;color:#eef4d9;font:12px var(--sans)}.dash-cooldown.ready{animation:dash-ready 2.3s ease-in-out infinite}.dash-cooldown.ready span{font-size:24px}@keyframes dash-ready{50%{box-shadow:0 0 14px #c5e69b55}}@media(pointer:coarse){.dash-cooldown{bottom:116px;right:31px}}.death-cause{display:block;font-size:10px;color:#bca898;max-width:250px;line-height:1.5;margin-top:5px}.redemption-dialogue{text-align:center;width:min(700px,95%);padding:35px 24px;border-top:1px solid #c6aa6c66;border-bottom:1px solid #c6aa6c66;background:radial-gradient(ellipse,#56422333,transparent 75%)}.redemption-dialogue h2{font:clamp(25px,3vw,40px)/1.7 var(--display);color:#f6e2b5}.redemption-eye{font-size:70px;color:#e7c98b;text-shadow:0 0 35px #ddc38f55}.redemption-choice{min-width:130px;padding:18px 40px;background:#c6a96b12;border:1px solid #b69a61;color:#f5e5bd;font-family:var(--display);font-size:23px;letter-spacing:4px}.redemption-choice:hover{background:#c6a96b33}.boss-refill{text-align:center;color:#f4d9a6}.boss-refill p{font-size:11px}.boss-refill .boss-track i{width:100%;animation:boss-refill 3s ease-in forwards}@keyframes boss-refill{0%,30%{width:0}100%{width:100%}}@media(prefers-reduced-motion:reduce){.dash-cooldown.ready{animation:none}}

/* Desktop keeps its existing minimap and HUD; only move the cooldown above it. */
.minimap-anchor{position:absolute;right:17px;bottom:18px;width:86px;height:86px;pointer-events:none}
.dash-icon{display:none}
@media(min-width:701px) and (pointer:fine){.dash-cooldown{right:38px;bottom:114px}}
/* Phone/touch layout is independent from desktop styling. */
@media(max-width:700px),(pointer:coarse){
 .game-screen{min-height:360px}
 .minimap-anchor{width:64px;height:64px;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(118px + env(safe-area-inset-bottom,0px))}
 .touch-controls{display:flex;left:max(20px,env(safe-area-inset-left,0px));right:max(14px,env(safe-area-inset-right,0px));bottom:calc(24px + env(safe-area-inset-bottom,0px))}
 .dash-cooldown{display:none}
 .dash-button{--cooldown:0deg;position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:68px;height:68px;background:conic-gradient(#53656d var(--cooldown),#cbe58c 0);border:1px solid #b4c58b;color:#edf4dc}
 .dash-button:before{content:'';position:absolute;inset:5px;background:#17241e;border-radius:50%;z-index:-1}
 .dash-button .dash-icon{display:block;font-size:23px;line-height:1}
 .dash-button .dash-label{font-size:11px;line-height:1.3;letter-spacing:.5px}
 .field-announcement,.field-announcement.omen-boss,.field-announcement.omen-subtle{left:max(12px,env(safe-area-inset-left,0px));right:auto;bottom:calc(154px + env(safe-area-inset-bottom,0px));width:min(240px,calc(100% - 110px));max-width:240px;transform:none;padding:9px 11px;gap:8px;border-radius:2px 12px 2px 12px;animation-name:mobile-omen-life}
 .field-announcement strong,.field-announcement.omen-boss strong,.field-announcement.omen-subtle strong{font-size:15px;line-height:1.3;letter-spacing:0}
 .field-announcement small{font-size:12px;line-height:1.4;margin-top:4px}
 .field-announcement .omen-kicker{font-size:10px;letter-spacing:.05em;margin-bottom:3px}
 .field-announcement .omen-sigil{font-size:23px;flex-shrink:0}
 .game-network{bottom:calc(140px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 110px);font-size:11px}
}
@keyframes mobile-omen-life{0%,100%{opacity:0}12%,84%{opacity:1}}
