@import "https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@500;700&family=Noto+Sans+KR:wght@400;500;700&display=swap";:root{--bg:#100e1c;--panel:#1b1730;--panel-alt:#221c3b;--border-gold:#c9a227;--border-soft:#352c54;--text:#ede7f6;--text-dim:#9c8fc4;--accent-teal:#2f9e7a;--danger:#d1554a;--rarity-common:#8b8b99;--rarity-rare:#4c8dff;--rarity-epic:#a855f7;--rarity-legendary:#f2a93b}*{box-sizing:border-box}html,body,#root{overscroll-behavior-y:none;min-height:100vh;margin:0;padding:0}body{background:radial-gradient(ellipse at top, #221c3b 0%, var(--bg) 55%);color:var(--text);font-family:Noto Sans KR,sans-serif}h1,h2,h3{margin:0;font-family:Noto Serif KR,serif}.wrap{max-width:980px;margin:0 auto;padding:28px 16px 60px}header{margin-bottom:22px}header h1{letter-spacing:.5px;font-size:26px;font-weight:700}header p{color:var(--text-dim);max-width:640px;margin:6px 0 0;font-size:13.5px;line-height:1.6}.header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.tab-row{align-items:center;gap:8px;margin-top:14px;display:flex}.tab-btn{border:1px solid var(--border-soft);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:4px;padding:7px 16px;font-family:Noto Sans KR,sans-serif;font-size:13px}.tab-btn.active{border-color:var(--border-gold);color:var(--border-gold);background:#c9a22714}.mute-btn{margin-left:auto}.tab-btn.hunt-btn{color:#f0c4a0;letter-spacing:.02em;background:linear-gradient(#a83e1c4d 0%,#481c107a 100%);border-color:#b45a32;font-weight:700}.tab-btn.hunt-btn.active{color:#fff3e0;background:linear-gradient(#d25c2885 0%,#602412a3 100%);border-color:#e8a060;box-shadow:0 0 14px #e88c4647}.board-single{display:block}.board.board-single{grid-template-columns:1fr;grid-template-areas:none;display:block}.board{grid-template-columns:300px 1fr;grid-template-areas:"hero inv""slots detail""stats detail";align-items:stretch;gap:14px;display:grid}.area-hero,.area-inv{flex-direction:column;min-height:0;display:flex}.area-inv .inv-body{flex-direction:column;flex:1;min-height:0;display:flex}.area-inv .inv-grid{-webkit-overflow-scrolling:touch;flex:1;align-content:start;min-height:180px;max-height:380px;overflow-y:auto}.area-hero{grid-area:hero}.area-inv{grid-area:inv}.area-slots{grid-area:slots}.area-stats{grid-area:stats}.area-detail{grid-area:detail}@media (width<=760px){.board{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"hero inv""slots slots""stats stats""detail detail";align-items:stretch;gap:10px}.wrap{padding:16px 10px 48px}header h1{font-size:18px}header p{font-size:12.5px}.area-hero,.area-inv{flex-direction:column;height:100%;min-height:0;padding:10px;display:flex}.area-hero .avatar-stage{flex:auto;min-height:168px;margin-bottom:8px}.area-hero .avatar-class{margin-bottom:0}.area-hero .avatar-svg{width:118px;max-width:100%;height:auto}.area-inv .inv-body{flex-direction:column;flex:1;min-height:0;display:flex}.area-inv .inv-grid{-webkit-overflow-scrolling:touch;flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:6px;min-height:0;max-height:none;margin-bottom:10px;overflow-y:auto}.area-hero .class-row{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:10px}.area-hero .class-btn{padding:6px 2px;font-size:11px}.slot{font-size:9px}.slot .emoji{font-size:16px}.dungeon-grid{gap:3px}.dpad-btn{width:44px;height:44px}.field-controls{flex-direction:column;align-items:stretch}.map-tile{aspect-ratio:1;width:100%;height:auto}.modal-backdrop{align-items:flex-end;padding:8px}.modal-box{border-radius:10px 10px 0 0;max-height:92dvh;padding:14px}.battle-floor{gap:4px;padding:10px 4px}.battle-sprite{height:108px}.battle-side{grid-template-rows:minmax(108px,1fr) auto auto}.battle-side .avatar-svg{width:86px}.monster-svg{max-width:86px}.dice-row{flex-wrap:wrap}.hp-bar-wrap{max-width:100%}}.panel{background:var(--panel);border:1px solid var(--border-soft);border-radius:6px;padding:16px;position:relative}.panel:before{content:"";pointer-events:none;border:1px solid #c9a2272e;border-radius:4px;position:absolute;inset:6px}.panel-title{color:var(--border-gold);letter-spacing:1px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;font-size:13px;display:flex}.dim{color:var(--text-dim);letter-spacing:0;font-size:12px;font-weight:400}.class-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:8px;display:grid}.gender-row{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px;display:grid}.class-btn{background:var(--panel-alt);border:1px solid var(--border-soft);width:100%;min-width:0;color:var(--text-dim);cursor:pointer;white-space:nowrap;border-radius:4px;padding:7px 2px;font-family:Noto Sans KR,sans-serif;font-size:12px;transition:border-color .15s,color .15s}.class-btn:hover{color:var(--text)}.class-btn.active{border-color:var(--border-gold);color:var(--border-gold);background:#c9a22714}.avatar-stage{border:1px solid var(--border-soft);background:radial-gradient(circle at 50% 30%,#2a2348 0%,#191430 70%);border-radius:6px;justify-content:center;margin-bottom:14px;padding:10px 0 4px;display:flex}.avatar-svg{width:170px;max-width:46vw;height:auto}.avatar-name{text-align:center;margin-bottom:2px;font-size:14px}.avatar-class{text-align:center;color:var(--text-dim);margin-bottom:14px;font-size:12px}.slot-grid{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.slot{aspect-ratio:1;background:var(--panel-alt);border:1px solid var(--border-soft);cursor:pointer;color:var(--text-dim);border-radius:5px;flex-direction:column;justify-content:center;align-items:center;font-size:10.5px;transition:border-color .15s;display:flex;position:relative}.slot:hover{border-color:var(--border-gold)}.slot .emoji{margin-bottom:2px;font-size:20px;line-height:1}.slot .plus{color:var(--rarity-legendary);font-size:9.5px;font-weight:700;position:absolute;top:2px;right:4px}.slot.filled{border-style:solid}.slot.selected{outline:2px solid var(--border-gold);outline-offset:1px}.slot-label{color:var(--text-dim);font-size:9px;position:absolute;bottom:2px}.stat-list{flex-direction:column;gap:6px;display:flex}.stat-row{justify-content:space-between;font-size:13px;display:flex}.stat-row .k{color:var(--text-dim)}.stat-row .v{font-weight:700}.exp-bar{border:1px solid var(--border-soft);background:#2a2348;border-radius:3px;height:6px;margin:0 0 8px;overflow:hidden}.exp-bar i{background:linear-gradient(90deg,#c9a227,#f2d56b);height:100%;display:block}.inv-grid{grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px;display:grid}@media (width<=520px){.inv-grid{grid-template-columns:repeat(3,1fr);gap:6px}}.inv-slot{aspect-ratio:1;background:var(--panel-alt);cursor:pointer;border:1.5px solid var(--rarity-common);border-radius:5px;flex-direction:column;justify-content:center;align-items:center;transition:transform .1s;display:flex;position:relative}.inv-slot:hover{transform:translateY(-2px)}.inv-slot.selected{outline:2px solid var(--border-gold);outline-offset:1px}.inv-slot .emoji{font-size:22px}.inv-slot .plus{color:var(--rarity-legendary);font-size:9.5px;font-weight:700;position:absolute;top:2px;right:3px}.inv-slot .lv-badge{color:var(--text-dim);font-size:8.5px;font-weight:700;position:absolute;top:2px;left:3px}.inv-slot.locked{opacity:.72;cursor:not-allowed}.inv-slot.locked .emoji{filter:grayscale(.35)}.inv-slot .lock-badge{color:#ff8a7a;text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:8.5px;font-weight:700;position:absolute;bottom:2px;left:3px;right:3px;overflow:hidden}.equip-lock-line{color:#ff8a7a;margin:6px 0 8px;font-size:12px}.inv-empty{color:var(--text-dim);text-align:center;grid-column:1/-1;padding:10px 4px;font-size:12.5px}.mat-row{background:var(--panel-alt);border:1px solid var(--border-soft);border-radius:5px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.mat-row .name{color:var(--text-dim)}.mat-row .count{margin-left:auto;font-weight:700}.detail{background:var(--panel-alt);border:1px solid var(--border-soft);border-radius:5px;min-height:150px;padding:14px}.detail-empty{color:var(--text-dim);font-size:13px;line-height:1.7}.detail-name{margin-bottom:2px;font-size:15px;font-weight:700}.detail-meta{color:var(--text-dim);margin-bottom:10px;font-size:12px}.detail-stats{flex-wrap:wrap;gap:6px 14px;margin-bottom:14px;display:flex}.detail-stats span{color:var(--text-dim);font-size:12.5px}.detail-stats b{color:var(--text)}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.btn{border:1px solid var(--border-gold);color:var(--border-gold);cursor:pointer;background:0 0;border-radius:4px;padding:8px 14px;font-family:Noto Sans KR,sans-serif;font-size:13px;transition:background .15s}.btn:hover{background:#c9a2271f}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.secondary{border-color:var(--border-soft);color:var(--text-dim)}.btn.enhance{border-color:var(--accent-teal);color:var(--accent-teal)}.btn.enhance:hover{background:#2f9e7a1f}.btn.tiny{padding:4px 9px;font-size:11px}.chance-line{color:var(--text-dim);margin:8px 0 10px;font-size:12px}.teal{color:var(--accent-teal)}.toast{border:1px solid var(--border-soft);background:#ffffff0a;border-radius:4px;margin-top:10px;padding:7px 10px;font-size:12.5px}.toast.success{color:var(--accent-teal);border-color:#2f9e7a66}.toast.fail{color:var(--danger);border-color:#d1554a66}.toast.info{color:var(--text-dim)}.rarity-common{border-color:var(--rarity-common)!important}.rarity-rare{border-color:var(--rarity-rare)!important}.rarity-epic{border-color:var(--rarity-epic)!important}.rarity-legendary{border-color:var(--rarity-legendary)!important}.modal-backdrop{z-index:50;background:#080610b8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-box{background:var(--panel);border:1px solid var(--border-gold);border-radius:8px;width:100%;max-width:460px;max-height:88vh;padding:22px;overflow-y:auto}.modal-title{color:var(--border-gold);margin-bottom:14px;font-family:Noto Serif KR,serif;font-size:17px}.story-line{color:var(--text-dim);margin:0 0 10px;font-size:13.5px;line-height:1.8}.story-actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}.quest-log{color:var(--text-dim);background:var(--panel-alt);border:1px solid var(--border-soft);border-radius:5px;min-height:18px;margin-bottom:14px;padding:8px 10px;font-size:12.5px}.dungeon-grid{border:1px solid var(--border-soft);background:#09070f;border-radius:6px;gap:0;margin-bottom:14px;padding:4px;display:grid;position:relative;overflow:hidden}.dungeon-cell{aspect-ratio:1;min-width:0;opacity:var(--light,1);filter:brightness(calc(.28 + var(--light,1) * .72));background:#2a2438;border:1px solid #4a3f2a;border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.dungeon-cell.tile-void{filter:none;background:#07050c;border-color:#0000;border-radius:2px}.dungeon-cell.tile-start{background:#243044;border-radius:8px}.dungeon-cell.tile-monster{background:#2a1c2e}.dungeon-cell.tile-named{background:#2e1b40}.dungeon-cell.tile-boss{border-color:var(--danger);background:#3a1c1c}.dungeon-cell.tile-treasure{background:#2a2618}.dungeon-cell.tile-event{background:#1b2a28}.walker{z-index:4;pointer-events:none;justify-content:center;align-items:center;transition:left .28s linear,top .28s linear;display:flex;position:absolute;transform:translate(-50%,-58%)}.walker.face-left{transform:translate(-50%,-58%)scaleX(-1)}.walker.walking .token-dot{animation:.28s linear infinite walkBob}.walker .token-dot,.walker .token-img{width:46%;height:46%;position:relative}@keyframes walkBob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.hp-alarm{z-index:6;color:#f2c950;pointer-events:none;background:#100a08b8;border:1px solid #f2c950;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:700;position:absolute;top:8px;left:50%;transform:translate(-50%)}.hp-alarm.deadly{color:#ff6b5c;border-color:#d1554a;animation:.6s steps(2,end) infinite alarmPulse}@keyframes alarmPulse{50%{opacity:.45}}.hp-warn-text{color:#f2c950}.hp-danger-text,.hp-danger-tag{color:#ff5a4c}.hp-warn-tag{color:#f2c950}.loot-list{flex-direction:column;gap:6px;margin-top:8px;display:flex}.loot-row{background:var(--panel-alt);border:1px solid var(--border-soft);border-radius:5px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.loot-row .name{flex:1}.loot-row .count{font-weight:700}.dungeon-cell .tile-icon{opacity:.85;font-size:13px}.dungeon-cell.passed .tile-icon{opacity:.35}.token-dot{background:var(--border-gold);border-radius:50%;width:38%;height:38%;position:absolute;box-shadow:0 0 8px #c9a227cc}.token-img{object-fit:contain;width:78%;height:78%;image-rendering:pixelated;pointer-events:none;position:absolute}.field-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.steps-badge{color:var(--text-dim);font-size:13px}.steps-badge b{color:var(--border-gold);margin-left:4px;font-size:18px}.field-hint{color:var(--text-dim);margin:8px 0 12px;font-size:12px}.dpad{grid-template:".up."48px"left down right"48px/48px 48px 48px;gap:4px;display:grid}.dpad-up{grid-area:up}.dpad-left{grid-area:left}.dpad-down{grid-area:down}.dpad-right{grid-area:right}.dpad-btn{border:1px solid var(--border-gold);background:var(--panel-alt);width:48px;height:48px;color:var(--border-gold);cursor:pointer;border-radius:6px;font-size:16px}.dpad-btn:disabled{opacity:.35;cursor:not-allowed}.asset-panel{margin-top:8px}.asset-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:10px;display:grid}.asset-slot{color:var(--text-dim);background:var(--panel-alt);border:1px solid var(--border-soft);cursor:pointer;border-radius:5px;flex-direction:column;gap:4px;padding:8px;font-size:11px;display:flex}.asset-slot input{max-width:100%;font-size:11px}.asset-thumb{object-fit:contain;width:48px;height:48px;image-rendering:pixelated}.map-track{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex;overflow:visible}.map-tile{background:var(--panel-alt);border:1px solid var(--border-soft);opacity:.55;border-radius:5px;justify-content:center;align-items:center;width:40px;height:40px;font-size:17px;display:flex;position:relative}.map-tile.passed{opacity:.8;border-color:var(--accent-teal)}.map-tile.current{opacity:1;border-color:var(--border-gold);box-shadow:0 0 8px #c9a22780}.map-tile.tile-boss{border-color:var(--danger)}.token{font-size:18px;animation:.6s ease-in-out infinite tokenBounce;position:absolute;top:-20px}@keyframes tokenBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.dice-row{align-items:center;gap:12px;display:flex}.auto-hunt{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}.auto-hunt input{accent-color:#c45c3a}.auto-hunt.on{color:#f0c4a0;font-weight:700}.die{background:var(--panel-alt);border:1px solid var(--border-gold);width:44px;height:44px;color:var(--text);border-radius:6px;justify-content:center;align-items:center;font-size:20px;font-weight:700;display:flex}.die.rolling{color:var(--text-dim);animation:.4s linear infinite diceSpin}@keyframes diceSpin{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(.9)}to{transform:rotate(360deg)scale(1)}}.battle-box{max-width:620px}.battle-floor{border:1px solid var(--border-soft);background:radial-gradient(circle at 50% 20%,#2a2348 0%,#14111f 75%);border-radius:6px;grid-template-columns:1fr 1fr;align-items:stretch;gap:10px;margin-bottom:14px;padding:18px 10px 14px;display:grid;position:relative;overflow:hidden}.battle-side{grid-template-rows:minmax(128px,1fr) auto auto;place-items:end center;gap:6px;width:100%;min-width:0;display:grid;position:relative}.battle-sprite{justify-content:center;align-items:flex-end;width:100%;height:128px;display:flex}.battle-sprite .avatar-svg,.battle-sprite .monster-svg,.battle-sprite .monster-img{object-fit:contain;width:auto;max-width:92%;max-height:100%}.battle-side .vital{width:100%;max-width:168px}.battle-side.frozen{filter:saturate(.55)brightness(.85)}.potion-row{margin-bottom:8px}.field-event{background:var(--panel-alt);border:1px solid var(--border-gold);border-radius:6px;margin:0 0 12px;padding:12px}.field-event-title{margin-bottom:6px;font-weight:700}.fx-heal{opacity:0;border:2px solid #6ee0b0;border-radius:50%;width:46%;height:46%;animation:.6s healPulse;position:absolute}.fx-heal.to-monster{top:18%;right:8%}.fx-heal.to-player{top:18%;left:8%}@keyframes healPulse{0%{opacity:0;transform:scale(.4)}40%{opacity:.9;transform:scale(1.05)}to{opacity:0;transform:scale(1.2)}}.vital.empty .vital-label{color:var(--text-dim)}.battle-side.striking-right{animation:.42s lungeRight}.battle-side.striking-left{animation:.42s lungeLeft}.battle-side.hurt{animation:.4s recoilHit}.battle-side.is-left.pose-slash .battle-sprite,.battle-side.is-left.pose-stab .battle-sprite,.battle-side.is-left.pose-claw .battle-sprite{animation:.56s cubic-bezier(.2,.8,.3,1) poseLungeRight}.battle-side.is-right.pose-slash .battle-sprite,.battle-side.is-right.pose-stab .battle-sprite,.battle-side.is-right.pose-claw .battle-sprite{animation:.56s cubic-bezier(.2,.8,.3,1) poseLungeLeft}.battle-side.is-left.pose-cast .battle-sprite{animation:.62s poseCastRight}.battle-side.is-right.pose-cast .battle-sprite{animation:.62s poseCastLeft}.battle-side.is-left.pose-shoot .battle-sprite{animation:.6s poseShootRight}.battle-side.is-right.pose-shoot .battle-sprite{animation:.6s poseShootLeft}.battle-side.is-left.pose-dodge .battle-sprite{animation:.55s poseDodgeLeft}.battle-side.is-right.pose-dodge .battle-sprite{animation:.55s poseDodgeRight}.battle-side.pose-guard .battle-sprite{animation:.5s poseGuard}.battle-side.pose-hurt .battle-sprite{animation:.5s poseHurt}.battle-side.pose-heal .battle-sprite{animation:.6s poseHeal}.battle-side.is-crit-atk .battle-sprite{filter:drop-shadow(0 0 10px #f2c950a6)}.battle-side.is-magic .battle-sprite{filter:drop-shadow(0 0 12px #82aaffb3)}.battle-side.pose-stab .battle-sprite{animation-duration:.42s}@keyframes poseLungeRight{0%{transform:translate(0)scale(1)}18%{transform:translate(-10px)scale(.96)rotate(-3deg)}42%{transform:translate(34px)scale(1.08)rotate(4deg)}to{transform:translate(0)scale(1)}}@keyframes poseLungeLeft{0%{transform:translate(0)scale(1)}18%{transform:translate(10px)scale(.96)rotate(3deg)}42%{transform:translate(-34px)scale(1.08)rotate(-4deg)}to{transform:translate(0)scale(1)}}@keyframes poseCastRight{0%{filter:brightness();transform:translate(0)scale(1)}28%{filter:brightness(1.25);transform:translate(-8px,-10px)scale(1.04)}55%{filter:brightness(1.4);transform:translate(6px,-4px)scale(1.08)}to{filter:brightness();transform:translate(0)scale(1)}}@keyframes poseCastLeft{0%{filter:brightness();transform:translate(0)scale(1)}28%{filter:brightness(1.25);transform:translate(8px,-10px)scale(1.04)}55%{filter:brightness(1.4);transform:translate(-6px,-4px)scale(1.08)}to{filter:brightness();transform:translate(0)scale(1)}}@keyframes poseShootRight{0%{transform:translate(0)}22%{transform:translate(-14px)rotate(-2deg)}48%{transform:translate(16px)rotate(2deg)}to{transform:translate(0)}}@keyframes poseShootLeft{0%{transform:translate(0)}22%{transform:translate(14px)rotate(2deg)}48%{transform:translate(-16px)rotate(-2deg)}to{transform:translate(0)}}@keyframes poseDodgeLeft{0%{opacity:1;transform:translate(0)}30%{opacity:.45;transform:translate(-22px,-8px)scale(.94)}to{opacity:1;transform:translate(0)}}@keyframes poseDodgeRight{0%{opacity:1;transform:translate(0)}30%{opacity:.45;transform:translate(22px,-8px)scale(.94)}to{opacity:1;transform:translate(0)}}@keyframes poseGuard{0%{transform:scale(1)}25%{transform:scale(.92)translateY(4px)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes poseHurt{0%,to{transform:translate(0)rotate(0)}16%{transform:translate(-10px)rotate(-5deg)}38%{transform:translate(9px)rotate(4deg)}58%{transform:translate(-5px)rotate(-2deg)}}@keyframes poseHeal{0%{filter:brightness();transform:translateY(0)scale(1)}40%{filter:brightness(1.35);transform:translateY(-10px)scale(1.06)}to{filter:brightness();transform:translateY(0)scale(1)}}.guard-veil{pointer-events:none;z-index:2;border:2px solid #f2d56b;border-radius:10px;animation:.45s forwards veilOut;position:absolute;inset:8% 12% 30%;box-shadow:0 0 16px #f2c95073}.magic-flash .battle-floor{box-shadow:inset 0 0 36px #6ea0ff47}@keyframes lungeRight{0%,to{transform:translate(0)}35%{transform:translate(26px)scale(1.05)}}@keyframes lungeLeft{0%,to{transform:translate(0)}35%{transform:translate(-26px)scale(1.05)}}@keyframes recoilHit{0%,to{transform:translate(0)}18%{transform:translate(-9px)rotate(-4deg)}42%{transform:translate(8px)rotate(3deg)}}.hurt-veil{pointer-events:none;z-index:2;background:#ffffff47;border-radius:8px;animation:.28s forwards veilOut;position:absolute;inset:0 10% 28%}@keyframes veilOut{to{opacity:0}}.crit-flash .battle-floor{box-shadow:inset 0 0 40px #f2c95059}.battle-fx{pointer-events:none;z-index:5;position:absolute;inset:0}.fx-slash,.fx-claw{background:linear-gradient(90deg,#0000,#fff 40%,#f2c950);width:92px;height:5px;animation:.32s ease-out forwards slashSweep;position:absolute;top:28%}.fx-slash.to-monster,.fx-claw.to-monster{right:14%;transform:rotate(-32deg)}.fx-slash.to-player,.fx-claw.to-player{left:14%;transform:rotate(148deg)}.fx-claw{background:linear-gradient(90deg,#0000,#ff8a7a,#fff);height:7px}.is-crit .fx-slash,.is-crit .fx-claw{height:9px;box-shadow:0 0 14px #f2c950}@keyframes slashSweep{0%{opacity:0;width:12px}40%{opacity:1}to{opacity:0;width:110px}}.fx-bolt,.fx-arrow,.fx-stab{background:#c9a227;border-radius:50%;width:14px;height:14px;animation:.38s ease-out forwards boltFly;position:absolute;top:34%;box-shadow:0 0 10px #f2c950}.fx-bolt.from-player,.fx-arrow.from-player,.fx-stab.from-player{left:22%}.fx-bolt.from-monster,.fx-arrow.from-monster,.fx-stab.from-monster{animation-name:boltFlyBack;right:22%}.fx-arrow{border-radius:2px;width:22px;height:4px}.fx-stab{background:#ede7f6;border-radius:2px;width:8px;height:18px}@keyframes boltFly{0%{opacity:1;transform:translate(0)scale(.6)}to{opacity:.15;transform:translate(170px)scale(1.2)}}@keyframes boltFlyBack{0%{opacity:1;transform:translate(0)scale(.6)}to{opacity:.15;transform:translate(-170px)scale(1.2)}}.fx-impact{opacity:0;border:2px solid #fff;border-radius:50%;width:54px;height:54px;animation:.34s ease-out forwards impactPop;position:absolute;top:26%}.fx-impact.to-monster{right:16%}.fx-impact.to-player{left:16%}.fx-impact.is-crit{border-color:#f2c950;box-shadow:0 0 18px #f2c950}@keyframes impactPop{0%{opacity:.9;transform:scale(.2)}to{opacity:0;transform:scale(1.6)}}.fx-crit{color:#f2c950;font-style:normal;font-weight:700;animation:.5s ease-out forwards critPop;position:absolute;top:18%}.fx-crit.to-monster{right:18%}.fx-crit.to-player{left:18%}.fx-crit:after{content:"★";font-size:22px}@keyframes critPop{0%{opacity:0;transform:scale(.4)}40%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(1)}}.fx-slash-arc{opacity:0;border:3px solid #fff4c4;border-color:#fff4c4 #f2c950 #0000 #0000;border-radius:50%;width:78px;height:78px;animation:.42s ease-out forwards slashArc;position:absolute;top:22%}.fx-slash-arc.to-monster{right:12%}.fx-slash-arc.to-player{left:12%;transform:scaleX(-1)}@keyframes slashArc{0%{opacity:0;transform:rotate(-40deg)scale(.5)}35%{opacity:1}to{opacity:0;transform:rotate(50deg)scale(1.15)}}.fx-claw-b{animation-delay:60ms;top:36%}.fx-cast-ring{border:2px solid #8eb4ff;border-radius:50%;width:52px;height:52px;animation:.5s ease-out forwards castRing;position:absolute;top:24%;box-shadow:0 0 16px #4c8dff}.fx-cast-ring.from-player{left:18%}.fx-cast-ring.from-monster{right:18%}@keyframes castRing{0%{opacity:.9;transform:scale(.3)}to{opacity:0;transform:scale(1.7)}}.fx-arrow-trail{opacity:.7;background:linear-gradient(90deg,#0000,#f6edd4);width:46px;height:3px;animation:.4s ease-out forwards boltFly;position:absolute;top:36%}.fx-arrow-trail.from-player{left:24%}.fx-arrow-trail.from-monster{animation-name:boltFlyBack;right:24%}.fx-stab-flash{clip-path:polygon(50% 0,100% 100%,0 100%);background:linear-gradient(#fff,#c9a227);width:18px;height:28px;animation:.36s ease-out forwards stabFlash;position:absolute;top:30%}.fx-stab-flash.to-monster{right:22%}.fx-stab-flash.to-player{left:22%}@keyframes stabFlash{0%{opacity:0;transform:translateY(10px)scale(.4)}35%{opacity:1}to{opacity:0;transform:translateY(-8px)scale(1.2)}}.fx-dodge{border:2px dashed #c9b8ff;border-radius:50%;width:36px;height:36px;animation:.45s ease-out forwards dodgeMark;position:absolute;top:30%}.fx-dodge.to-monster{right:18%}.fx-dodge.to-player{left:18%}@keyframes dodgeMark{0%{opacity:.9;transform:scale(.4)}to{opacity:0;transform:scale(1.5)translateY(-12px)}}.fx-guard{border:3px solid #f2d56b;border-radius:8px;width:58px;height:58px;animation:.45s ease-out forwards guardFlash;position:absolute;top:24%;transform:rotate(45deg)}.fx-guard.to-monster{right:16%}.fx-guard.to-player{left:16%}@keyframes guardFlash{0%{opacity:1;transform:rotate(45deg)scale(.4)}to{opacity:0;transform:rotate(45deg)scale(1.35)}}.spark-hit{opacity:.85}.vital{width:100%;max-width:148px}.vital-label{color:var(--text-dim);text-align:center;margin-bottom:3px;font-size:11px}.vital-track{clip-path:polygon(0 18%,6% 0,18% 16%,30% 0,44% 18%,58% 2%,72% 16%,86% 0,100% 14%,100% 84%,88% 100%,74% 82%,60% 100%,46% 80%,32% 100%,18% 82%,6% 100%,0 80%);background:repeating-linear-gradient(90deg,#ffffff0d 0 3px,#0000 3px 6px),#161225;border:1px solid #3a3058;height:11px;position:relative;overflow:hidden}.vital-fill{height:100%;transition:width .38s}.vital-hp .vital-fill{background:linear-gradient(#6ee0b0 0%,#2f9e7a 55%,#1c6b52 100%)}.vital-hp.warn .vital-fill{background:linear-gradient(#f2c950 0%,#c9a227 100%)}.vital-hp.danger .vital-fill{background:linear-gradient(#ff8a7a 0%,#d1554a 55%,#8a2018 100%);animation:.45s steps(2,end) infinite vitalFlicker}.vital-mp .vital-fill{background:linear-gradient(#8eb4ff 0%,#4c8dff 55%,#2a4ead 100%)}.vital-jag,.vital-chips{pointer-events:none;position:absolute;inset:0}.vital-jag{background:repeating-linear-gradient(-18deg,#0000 0 7px,#00000047 7px 8px)}.vital.ragged .vital-track{box-shadow:inset 0 0 0 1px #d1554a59}.vital.ragged .vital-chips{background:repeating-linear-gradient(90deg,#0000 0 10px,#0806108c 10px 12px,#0000 12px 19px,#d1554a59 19px 21px)}.vital.critical .vital-fill{animation:.5s steps(2,end) infinite vitalFlicker}.vital.hurt .vital-track{animation:.32s barJolt}@keyframes vitalFlicker{50%{filter:none;opacity:.72}}@keyframes barJolt{20%{transform:translate(-3px)}50%{transform:translate(3px)}}.spark{color:var(--border-gold);pointer-events:none;font-size:12px;animation:1.8s ease-in-out infinite twinkle;position:absolute}@keyframes twinkle{0%,to{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1)}}.battle-vs{color:var(--danger);flex:none;font-family:Noto Serif KR,serif;font-size:14px}.hp-bar-wrap{width:100%;max-width:140px}.hp-bar-label{color:var(--text-dim);text-align:center;white-space:nowrap;text-overflow:ellipsis;margin-bottom:3px;font-size:11px;overflow:hidden}.hp-bar{background:#ffffff14;border-radius:4px;height:8px;overflow:hidden}.hp-fill{background:var(--accent-teal);height:100%;transition:width .35s}.hp-bar.energy{height:5px;margin-top:4px}.hp-fill.energy{background:var(--border-gold)}.battle-compare{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;font-size:12.5px;display:flex}.battle-banner-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-bottom:6px;display:flex}.battle-banner{text-align:center;min-height:24px;font-size:15px;font-weight:700}.battle-formula{text-align:center;margin-bottom:12px;font-size:11px}.float-dmg{pointer-events:none;z-index:3;text-shadow:0 1px 2px #000;font-size:18px;font-weight:700;animation:.7s ease-out forwards floatUp;position:absolute;top:28%}.float-dmg.player{color:var(--danger);left:16%}.float-dmg.monster{color:var(--border-gold);right:16%}.float-dmg.crit{font-size:22px}.float-dmg.guard{color:#f2d56b;font-size:16px}.battle-floor.floor-hit{animation:.45s floorHit}.battle-floor.floor-phys.floor-hit{box-shadow:inset 0 0 48px #ff5a4647}.battle-floor.floor-magic{box-shadow:inset 0 0 44px #6ea0ff52}.battle-floor.floor-dodge{box-shadow:inset 0 0 36px #b4aaff38}.battle-floor.floor-guard{box-shadow:inset 0 0 36px #f2d56b47}.battle-floor.floor-crit{animation:.5s floorCrit}@keyframes floorHit{0%{filter:brightness(1.35)}to{filter:brightness()}}@keyframes floorCrit{0%{filter:brightness(1.55)saturate(1.3)}40%{filter:brightness(1.15)}to{filter:brightness()}}.battle-side.pose-hurt .battle-sprite:after,.battle-side.pose-atk .battle-sprite:after{content:"";pointer-events:none;border-radius:10px;position:absolute;inset:8% 18% 18%}.battle-side.pose-hurt .battle-sprite{position:relative}.battle-side.pose-hurt .battle-sprite:after{background:radial-gradient(circle,#ff504673,#0000 70%);animation:.42s forwards hurtBloom}.battle-side.pose-atk .battle-sprite{position:relative}.battle-side.pose-atk .battle-sprite:after{background:radial-gradient(circle,#fff0b447,#0000 72%);animation:.5s forwards atkBloom}.battle-side.is-magic.pose-atk .battle-sprite:after{background:radial-gradient(circle,#82b4ff66,#0000 72%)}@keyframes hurtBloom{0%{opacity:1;transform:scale(.7)}to{opacity:0;transform:scale(1.4)}}@keyframes atkBloom{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.5)}}.fx-floor-flash{pointer-events:none;opacity:0;animation:.4s forwards floorFlash;position:absolute;inset:0}.fx-floor-flash.to-monster{background:linear-gradient(90deg,#0000 40%,#ffffff29 78%,#0000)}.fx-floor-flash.to-player{background:linear-gradient(270deg,#0000 40%,#ffffff29 78%,#0000)}.fx-floor-flash.is-magic{background:linear-gradient(90deg,#0000 35%,#6ea0ff47 75%,#0000)}.fx-floor-flash.is-crit{background:linear-gradient(90deg,#0000 30%,#f2c95052 70%,#0000)}.fx-floor-flash.is-miss{background:linear-gradient(90deg,#0000 40%,#beb4ff2e 75%,#0000)}.fx-floor-flash.is-guard{background:linear-gradient(90deg,#0000 40%,#f2d56b38 75%,#0000)}@keyframes floorFlash{0%{opacity:.95}to{opacity:0}}.fx-vignette{background:radial-gradient(circle,#ff463c59,#0000 68%);border-radius:50%;width:46%;height:70%;animation:.48s forwards vignetteOut;position:absolute;top:8%}.fx-vignette.to-monster{right:2%}.fx-vignette.to-player{left:2%}.fx-vignette.is-magic{background:radial-gradient(circle,#5a8cff61,#0000 68%)}.fx-vignette.is-crit{background:radial-gradient(circle,#f2c95066,#0000 68%)}@keyframes vignetteOut{0%{opacity:.9;transform:scale(.75)}to{opacity:0;transform:scale(1.25)}}.fx-shock{border:2px solid #ffffffd9;border-radius:50%;width:72px;height:72px;animation:.46s ease-out forwards shockOut;position:absolute;top:24%}.fx-shock.to-monster{right:12%}.fx-shock.to-player{left:12%}.fx-shock.is-magic{border-color:#8eb4ff;box-shadow:0 0 18px #4c8dff}@keyframes shockOut{0%{opacity:.9;transform:scale(.25)}to{opacity:0;transform:scale(1.85)}}.fx-shard{background:#fff4d2;width:10px;height:3px;animation:.42s ease-out forwards shardFly;position:absolute;top:32%}.fx-shard.to-monster{right:20%}.fx-shard.to-player{left:20%}.fx-shard.is-magic{background:#b7d0ff}.fx-shard.is-crit{background:#f2d56b;box-shadow:0 0 6px #f2c950}.fx-shard.n0{animation-delay:20ms;transform:rotate(-28deg)}.fx-shard.n1{top:28%;transform:rotate(18deg)}.fx-shard.n2{animation-delay:40ms;top:38%;transform:rotate(-8deg)}.fx-shard.n3{animation-delay:60ms;top:24%;transform:rotate(42deg)}.fx-shard.n4{animation-delay:30ms;top:40%;transform:rotate(-50deg)}.fx-shard.to-monster.n0,.fx-shard.to-monster.n1,.fx-shard.to-monster.n2,.fx-shard.to-monster.n3,.fx-shard.to-monster.n4{animation-name:shardRight}.fx-shard.to-player.n0,.fx-shard.to-player.n1,.fx-shard.to-player.n2,.fx-shard.to-player.n3,.fx-shard.to-player.n4{animation-name:shardLeft}@keyframes shardRight{0%{opacity:1;margin-right:0}to{opacity:0;margin-right:-36px}}@keyframes shardLeft{0%{opacity:1;margin-left:0}to{opacity:0;margin-left:-36px}}.fx-orb{background:radial-gradient(circle,#fff,#6ea0ff);border-radius:50%;width:16px;height:16px;animation:.5s ease-out forwards orbPulse;position:absolute;top:30%;box-shadow:0 0 16px #4c8dff}.fx-orb.from-player{left:20%}.fx-orb.from-monster{right:20%}@keyframes orbPulse{0%{opacity:1;transform:scale(.3)}50%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(.2)}}.fx-cast-ring-b{border-color:#d6e6ff;animation-delay:.1s}.fx-slash-b{opacity:.75;animation-delay:50ms;top:36%}.fx-slash-arc-b{width:64px;height:64px;animation-delay:70ms;top:30%}.fx-claw-c{animation-delay:.1s;top:22%}.fx-arrow-trail-b{opacity:.45;animation-delay:50ms;top:32%}.fx-after{border-left:2px solid #d2c8ffb3;width:40px;height:56px;animation:.4s ease-out forwards afterDash;position:absolute;top:26%}.fx-after.to-monster{right:14%}.fx-after.to-player{left:14%}@keyframes afterDash{0%{opacity:.8;transform:translateY(8px)skew(-18deg)}to{opacity:0;transform:translateY(-16px)skew(-18deg)}}.fx-guard-b{border-color:#fff4c4;width:42px;height:42px;animation-delay:80ms}.fx-crit-burst{background:radial-gradient(circle,#f2c9508c,#0000 68%);border-radius:50%;width:88px;height:88px;animation:.5s ease-out forwards critBurst;position:absolute;top:16%}.fx-crit-burst.to-monster{right:10%}.fx-crit-burst.to-player{left:10%}@keyframes critBurst{0%{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(1.6)}}.fx-heal-glow{background:radial-gradient(circle,#6ee0b080,#0000 70%);border-radius:50%;width:70px;height:70px;animation:.6s forwards healPulse;position:absolute;top:16%}.fx-heal-glow.to-monster{right:12%}.fx-heal-glow.to-player{left:12%}.fx-impact.is-magic{border-color:#8eb4ff;box-shadow:0 0 20px #4c8dff}@keyframes floatUp{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-34px)scale(1.1)}}.spark-img,.hit-fx{pointer-events:none;image-rendering:pixelated;position:absolute}.spark-img{width:18px;height:18px;animation:1.8s ease-in-out infinite twinkle}.hit-fx{z-index:4;width:72px;height:72px;top:30%}.hit-fx-player{left:12%}.hit-fx-monster{right:12%}.monster-img{object-fit:contain;height:auto;image-rendering:pixelated}.battle-log{background:var(--panel-alt);border:1px solid var(--border-soft);height:90px;color:var(--text-dim);border-radius:5px;margin-bottom:14px;padding:8px 10px;font-size:12px;overflow-y:auto}.battle-log-line{padding:2px 0}.hit-flash{animation:.25s hitFlash}@keyframes hitFlash{0%{opacity:.35}to{opacity:1}}.battle-shake{animation:.32s shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(3px)}30%,50%,70%{transform:translate(-5px)}40%,60%{transform:translate(5px)}}.wing{transform-box:fill-box}.wing-left{transform-origin:90% 30%;animation:1.3s ease-in-out infinite flapLeft}.wing-right{transform-origin:10% 30%;animation:1.3s ease-in-out infinite flapRight}@keyframes flapLeft{0%,to{transform:rotate(0)}50%{transform:rotate(-16deg)}}@keyframes flapRight{0%,to{transform:rotate(0)}50%{transform:rotate(16deg)}}.pupils{transition:transform .5s}.glint{opacity:0;mix-blend-mode:screen;animation:4.5s linear infinite glintSweep}@keyframes glintSweep{0%{opacity:0;transform:translate(-40px)skew(-18deg)}3%{opacity:.35}16%{opacity:.35}20%{opacity:0;transform:translate(260px)skew(-18deg)}to{opacity:0;transform:translate(260px)skew(-18deg)}}.eyelid{transform-origin:50%}.blinking .eyelid{animation:.16s ease-in-out blink}@keyframes blink{0%{transform:scaleY(0)}50%{transform:scaleY(1)}to{transform:scaleY(0)}}.breathe{transform-origin:100px 170px;animation:3.4s ease-in-out infinite breathe}@keyframes breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.012)}}
