@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
[hidden]{display:none!important}
.combat-toolbar{display:flex;align-items:center;gap:12px;padding:14px 18px;background:#151e22;border:1px solid #2b3f33;border-radius:8px;margin-bottom:14px;flex-wrap:wrap}.combat-clock{display:flex;align-items:center;gap:12px}.combat-clock strong{font:600 25px 'Barlow Condensed',sans-serif;min-width:45px}.combat-clock .eyebrow{font-size:8px}.wave-progress{width:90px;height:4px;background:#384139;border-radius:10px;overflow:hidden}.wave-progress div{height:100%;background:#b9f66d;transition:width .1s linear}.combat-toolbar>.muted{flex:1;font-size:10px}.speed-buttons{gap:3px}.speed-buttons button{font-size:10px;padding:7px 9px}.arena-state{position:absolute;inset:40% 10% auto;text-align:center;pointer-events:none;padding:24px;background:#0c171ce8;border:1px solid #64795077;border-radius:8px;backdrop-filter:blur(4px)}.arena-state b{display:block;font:600 30px 'Barlow Condensed',sans-serif;color:#c6eea2;letter-spacing:3px}.arena-state span{display:block;font-size:11px;color:#99aea3;margin-top:8px}.wave-announcement{position:absolute;top:21%;left:20%;right:20%;text-align:center;pointer-events:none;opacity:0;padding:16px;background:linear-gradient(90deg,transparent,#111f1ce6,transparent)}.wave-announcement.show{animation:wave-arrive 2.4s ease-out forwards}.wave-announcement small{display:block;color:#e4d8a0;letter-spacing:3px;font-size:10px}.wave-announcement strong{font:700 45px 'Barlow Condensed',sans-serif;color:#ddf3bb;letter-spacing:3px}@keyframes wave-arrive{0%{opacity:0;transform:translateY(12px)}15%,70%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-8px)}}.inventory-tools{display:flex;gap:12px;align-items:center;margin-bottom:13px}.inventory-tools input:not([type=checkbox]){padding:7px 10px;width:160px;font-size:11px}.inventory-tools label{color:#8fa292;font-size:10px;white-space:nowrap}.inventory-tools input[type=checkbox]{accent-color:#b9f66d;vertical-align:middle}.inventory-tools select{font-size:10px;padding:6px}.wave-preview{margin-top:15px;padding-top:14px;border-top:1px solid #293c33}.wave-preview p{color:#bfccbd;font-size:11px;line-height:1.8;margin:8px 0}.defense-chip{display:inline-block;padding:4px 7px;border:1px solid #4f5f43;background:#8daf5710;border-radius:4px;font-size:9px;color:#c0cfad;margin:3px 4px 0 0}.enemy-inspector{border-top:1px solid #293c33;margin-top:15px;padding-top:12px}.enemy-inspector:empty{display:none}.enemy-inspector .muted{font-size:10px}.target-label{display:block;font-size:10px;color:#97aa9b;margin:15px 0 6px}#target-priority,#equip-target{width:100%;font-size:11px}.merge-hint{font-size:9px;margin:8px 0 0}.connection-warning{padding:12px 18px;background:#562e22;color:#ffd6b3;border:1px solid #965236;border-radius:6px;margin-bottom:12px;font-size:11px}.battle-side{align-self:start}.battle-layout>div{min-width:0}@media(max-width:800px){.combat-toolbar{gap:8px;padding:12px}.combat-toolbar>.muted{flex-basis:50%;font-size:9px}.wave-progress{width:60px}.arena-state b{font-size:23px}.arena-state span{font-size:9px}.arena-state{padding:16px}.inventory-tools{flex-wrap:wrap}.wave-announcement strong{font-size:33px}}@media(prefers-reduced-motion:reduce){.wave-announcement.show{animation:none;opacity:0}.wave-progress div{transition:none}}
:root{color-scheme:dark;--bg:#0c1015;--panel:#151b22;--line:#29323c;--text:#e8edf0;--muted:#87939f;--accent:#b9f66d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px 'Noto Sans KR',sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:#1a222b;border-radius:6px;padding:11px 16px;transition:.18s}button:hover{background:#28343c;border-color:#73876a}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}.shell{min-height:100vh;display:grid;grid-template-columns:232px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:232px;padding:36px 22px 22px;background:#11161c;border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;font:800 35px 'Barlow Condensed',sans-serif;letter-spacing:3px}.brand-icon{font:48px sans-serif;color:var(--accent);line-height:1}.brand small{font:8px 'Noto Sans KR',sans-serif;display:block;letter-spacing:2px;margin-top:1px;color:#98a2ac}.nav-label{color:#596573;font-size:9px;letter-spacing:1.8px;margin:57px 12px 18px}nav{display:grid;gap:9px}.nav{border:0;background:transparent;display:flex;align-items:center;gap:14px;text-align:left;padding:14px;font-size:18px;color:#7f8b97}.nav span{font-size:13px}.nav i{font-size:10px;font-style:normal;margin-left:auto;color:#596672}.nav.active{background:#b9f66d10;color:var(--accent);box-shadow:inset 3px 0 var(--accent);border-radius:3px}.side-bottom{margin-top:auto}.live{font-size:10px;color:#a7b3bd;margin-bottom:24px}.live b,.server-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:6px}.profile{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:20px 0}.avatar{width:36px;height:36px;background:#293333;border:1px solid #586545;border-radius:50%;display:grid;place-items:center;color:var(--accent)}.profile strong{font-size:12px}.profile small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.version{font-size:9px;letter-spacing:1px;color:#5f6c79}.version b{float:right;font-weight:400}main{grid-column:2;min-width:0}header{height:80px;border-bottom:1px solid var(--line);padding:0 40px;display:flex;align-items:center;justify-content:space-between;font-size:11px}.breadcrumb{color:#788490;font-size:10px;letter-spacing:1.5px}.slash{margin:0 14px;color:#3a4752}.header-right{display:flex;align-items:center;font-size:9px;color:#8e9ba6;letter-spacing:1px;gap:5px}.small-btn{padding:7px 12px;font-size:10px;margin-left:19px;background:transparent}#content{max-width:1560px;margin:auto;padding:34px 40px 28px}.eyebrow{font-size:10px;color:var(--accent);letter-spacing:2px;font-weight:600}h1,h2,h3,p{margin-top:0}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.page-heading h1{font-size:27px;letter-spacing:-1px;margin:7px 0 7px}.page-heading p{font-size:12px;color:var(--muted);margin:0}.season{border:1px solid var(--line);padding:8px 12px;border-radius:4px;font-size:9px;letter-spacing:1px;color:#9aa6ae}.hero{min-height:285px;border:1px solid #354138;border-radius:10px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 76% 50%,#32473466,transparent 57%),linear-gradient(110deg,#1a2421,#121b20);display:grid;grid-template-columns:1fr 45%;margin-bottom:30px}.hero-copy{padding:35px 32px;z-index:1}.badge{display:inline-block;border:1px solid #89b55677;background:#a6d87c0b;color:#c6ea99;letter-spacing:1.5px;font-size:9px;padding:5px 9px;border-radius:3px}.hero h2{font-size:38px;letter-spacing:-1.7px;line-height:1.28;margin:17px 0 12px}.hero h2 em{font-style:normal;color:var(--accent)}.hero p{font-size:12px;line-height:1.9;color:#9baaa3}.hero-tags{display:flex;gap:20px;font-size:10px;color:#b0c0b5;margin-top:22px}.hero-art{width:100%;height:100%;min-height:280px}.section-head{display:flex;align-items:baseline;gap:12px;margin:25px 0 14px}.section-head h2{font-size:16px;margin:0}.section-head span{font-size:10px;color:var(--muted)}.section-head .right{margin-left:auto;font-size:10px;color:#a3b093}.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.mode-card{text-align:left;min-height:166px;padding:22px;background:var(--panel);position:relative;border:1px solid var(--line);border-radius:8px}.mode-card.selected{border-color:var(--accent);background:linear-gradient(120deg,#24302280,#171f21)}.mode-card .check{position:absolute;right:17px;top:17px;color:var(--accent);font-size:14px}.mode-icon{font-size:26px;color:#a8b6c0;display:block;margin-bottom:20px}.selected .mode-icon{color:var(--accent)}.mode-card h3{font-size:16px;display:inline-block;margin:0 8px 9px 0}.mode-card .count{font-size:9px;color:#82917f;padding:3px 6px;border:1px solid #344033;border-radius:3px}.mode-card p{color:#87949e;font-size:11px;line-height:1.7;margin:0}.setup{display:grid;grid-template-columns:1fr 320px;gap:20px;margin-top:24px}.settings,.deploy{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:22px}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.settings-row+.settings-row{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.settings-row label{font-size:12px}.settings-row small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.segments{display:flex;gap:5px}.segments button{padding:8px 14px;font-size:11px;background:#10171e}.segments button.selected{background:#b9f66d19;color:var(--accent);border-color:#6c844f}select{border:1px solid var(--line);border-radius:4px;background:#111820;color:#cdd6de;padding:8px;font-size:11px}.deploy .label{color:#86949e;font-size:10px}.deploy h3{font-size:18px;margin:9px 0 6px}.deploy p{font-size:10px;color:var(--muted)}.primary{display:flex;justify-content:space-between;align-items:center;background:var(--accent);color:#1a2714;font-weight:700;border:0;width:100%;padding:15px 18px;margin-top:20px}.primary:hover{background:#d0ff91;color:#172411}.primary span{font-size:20px;line-height:14px}.footer-notes{display:flex;gap:24px;color:#64717c;font-size:10px;margin-top:23px}.room-list{margin-top:20px}.room-row{display:flex;align-items:center;gap:20px;background:var(--panel);border:1px solid var(--line);padding:16px;margin-bottom:8px;border-radius:6px}.room-row button{margin-left:auto;font-size:11px}.muted{color:var(--muted);font-size:12px;line-height:1.8}.empty{padding:35px;border:1px dashed #35414c;text-align:center;color:#84939e;border-radius:8px}.catalog{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.catalog-card{padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:7px}.catalog-card h3{font-size:13px;margin:14px 0 8px}.catalog-card p{color:var(--muted);font-size:10px;line-height:1.8;margin:0}.champ-icon{font:26px serif;color:var(--accent)}.filters{display:flex;gap:10px;margin:20px 0}.filters input{flex:1}input{background:#10171e;border:1px solid #384550;border-radius:5px;padding:12px;color:var(--text);min-width:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:15px}th{color:var(--muted);font-weight:400}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.guide-grid article{background:var(--panel);padding:25px;border:1px solid var(--line);border-radius:8px}.guide-grid h3{font-size:15px}.guide-grid p{font-size:12px;color:#a4b1bb;line-height:2}.battle-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.round-number{font:600 32px 'Barlow Condensed',sans-serif}.round-number small{font-size:16px;color:#657583}.battle-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px}.arena-wrap{position:relative;border:1px solid #35443c;border-radius:10px;background:#111c1b;overflow:hidden}#arena{width:100%;display:block;aspect-ratio:1;touch-action:none}.arena-caption{position:absolute;bottom:13px;left:0;right:0;text-align:center;color:#769086;font-size:9px;pointer-events:none}.battle-side{display:flex;flex-direction:column;gap:12px}.panel{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:7px}.panel h3{font-size:12px;margin-bottom:12px}.score{display:flex;justify-content:space-between;font-size:11px;margin:10px 0}.score.me{color:var(--accent)}.gold{font:600 28px 'Barlow Condensed',sans-serif;color:#f3d889}.gold small{font:10px 'Noto Sans KR',sans-serif;color:#b7a77d;margin-left:5px}.draw-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.draw-row button{font-size:11px;padding:12px 4px}.draw-row small{display:block;color:#e2ca86;font-size:10px;margin-top:6px}.upgrade{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:10px;color:#92a3b0}.upgrade button{padding:5px 7px;font-size:9px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:10px;color:#93a4ad}.stats b{color:#d6e0e6;float:right}.equipment{display:grid;gap:6px;margin-top:12px}.equipment button{font-size:10px;text-align:left;padding:8px}.inventory{display:flex;flex-wrap:wrap;gap:7px}.inventory button{font-size:10px;padding:9px;border-color:var(--tier);position:relative}.inventory .selected{background:#354437}.probabilities{font-size:9px;line-height:1.9;color:#7d8e9c;margin-top:12px}.wave-status{font-size:11px;color:#a5b6ad}.danger{color:#ff9292}.board-tabs{display:flex;gap:6px;margin-bottom:10px}.board-tabs button{font-size:10px;padding:6px 10px}.board-tabs .selected{color:var(--accent);border-color:var(--accent)}.selection-hint{text-align:center;color:#7c8e9a;font-size:11px;padding:20px 0}.mini-btn{font-size:10px;padding:7px 10px}dialog{border:1px solid #455147;background:#171f25;color:var(--text);border-radius:12px;padding:32px;max-width:460px;width:calc(100% - 32px)}dialog::backdrop{background:#04090ddd;backdrop-filter:blur(8px)}dialog h2{font-size:23px;margin-top:15px}dialog p,dialog label{font-size:12px;color:#9da9b3}dialog input{display:block;width:100%;margin-top:10px}.divider{display:flex;align-items:center;gap:15px;margin:22px 0;color:#61717c;font-size:11px}.divider:before,.divider:after{content:'';flex:1;height:1px;background:var(--line)}.text-button{border:0;background:transparent;display:block;margin:auto;font-size:11px;color:#899aa6}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px);padding:13px 22px;background:#d4edc0;color:#243318;border-radius:7px;z-index:100;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;font-size:12px}#toast.show{opacity:1;transform:translate(-50%,0)}.waiting{max-width:700px;margin:50px auto;text-align:center}.waiting .room-code{font:600 48px 'Barlow Condensed',sans-serif;color:var(--accent);letter-spacing:5px;margin:22px}.players-wait{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;margin:25px 0}.player-wait{padding:30px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.result{padding:20px;background:#b9f66d12;border:1px solid #87ad56;border-radius:8px;margin-bottom:15px;text-align:center;color:var(--accent)}
@media(min-width:1600px){.hero{min-height:330px}.hero h2{font-size:46px}.hero-copy{padding:45px}.mode-card{min-height:185px}.setup{grid-template-columns:1fr 380px}}@media(max-width:1100px){.shell{grid-template-columns:185px 1fr}.sidebar{width:185px;padding:28px 14px}.brand{font-size:29px}.brand-icon{font-size:37px}#content{padding:26px 24px}header{padding:0 24px}.setup{grid-template-columns:1fr 260px}.hero h2{font-size:31px}.hero-copy{padding:28px 24px}.battle-layout{grid-template-columns:1fr 240px}.catalog{grid-template-columns:repeat(3,1fr)}}@media(max-width:800px){.shell{display:block}.sidebar{position:static;width:100%;padding:14px 18px;display:block;border-bottom:1px solid var(--line)}.brand{font-size:24px}.brand-icon{font-size:32px}.brand small{font-size:6px}.nav-label,.side-bottom{display:none}nav{display:flex;gap:4px;margin-top:14px;overflow-x:auto}.nav{padding:9px;white-space:nowrap;gap:6px}.nav span{font-size:11px}.nav i{display:none}header{height:55px;padding:0 18px}.breadcrumb{display:none}.slash{display:none}.header-right{font-size:8px}#content{padding:24px 18px}.hero{grid-template-columns:1fr 40%;min-height:245px}.hero h2{font-size:28px}.hero-art{min-height:245px}.hero-tags{gap:10px;font-size:9px}.hero-copy{padding:24px 18px}.modes{gap:8px}.mode-card{padding:15px;min-height:166px}.mode-card h3{font-size:14px}.mode-card p{font-size:10px}.mode-card .count{display:none}.setup{grid-template-columns:1fr}.deploy{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.deploy .primary{width:auto;flex:1;min-width:160px;margin:0}.deploy p{margin:0}.catalog{grid-template-columns:repeat(2,1fr)}.battle-layout{grid-template-columns:1fr}.battle-side{display:grid;grid-template-columns:1fr 1fr}.guide-grid{grid-template-columns:1fr}.season{display:none}}@media(max-width:480px){.hero{display:block}.hero-copy{position:relative;background:linear-gradient(90deg,#18231feb,#15201db0)}.hero-art{position:absolute;inset:0 0 0 auto;width:65%;opacity:.35}.hero h2{font-size:29px}.hero-tags{font-size:8px}.page-heading h1{font-size:24px}.battle-side{grid-template-columns:1fr}.settings-row{flex-wrap:wrap}.catalog{grid-template-columns:1fr 1fr}.catalog-card{padding:12px}.footer-notes{font-size:8px;gap:10px}}
/* v0.3: generated character art */
.character-portrait{display:block;background-image:url('/assets/champions-v3.png');background-size:500% 200%;background-position:var(--portrait-x) var(--portrait-y);background-repeat:no-repeat;filter:hue-rotate(var(--variant,0deg));flex-shrink:0}
.catalog-card.character-card{position:relative;overflow:hidden;padding:0 18px 20px;background:linear-gradient(160deg,#222820,#141a20);border-color:#475039;transition:transform .2s,border-color .2s;box-shadow:0 8px 20px #0002}
.character-card:hover{transform:translateY(-4px);border-color:#a8c176}
.catalog-portrait{width:calc(100% + 36px);margin:0 -18px;height:auto;aspect-ratio:307/450;border-bottom:1px solid #77855255;mask-image:linear-gradient(#000 85%,#0000)}
.character-card>.champ-icon{position:absolute;top:12px;right:12px;background:#0d161bc9;border:1px solid #8d9a6666;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;font-size:17px}
.character-card h3{margin-top:4px;color:#f2ebd7}.character-card p{font-size:11px;line-height:1.9}
#heroes.inventory{display:grid;grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:10px}
#heroes.inventory button{overflow:hidden;padding:0 0 10px;background:linear-gradient(135deg,#212920,#161e23);border-color:color-mix(in srgb,var(--tier) 45%,#27332d);min-width:0}
#heroes.inventory button.selected{border-color:#d1f799;box-shadow:0 0 0 1px #d1f799,0 0 15px #b9f66d20}
.roster-portrait{width:100%;aspect-ratio:307/430;mask-image:linear-gradient(#000 80%,#0000);margin-bottom:-4px}
.roster-name{font-size:10px;display:inline-block;padding:0 4px}
#heroes.inventory small{font-size:9px}.detail-character{height:200px;position:relative;overflow:hidden;border:1px solid color-mix(in srgb,var(--tier) 50%,transparent);border-radius:6px;margin-bottom:16px;background:#141e1b}
.detail-portrait{height:100%;width:125px;max-width:100%;margin:auto;mask-image:linear-gradient(#000 75%,#0000)}
.detail-character>span:not(.character-portrait){position:absolute;bottom:10px;left:12px;color:var(--tier);font-size:10px;letter-spacing:1px;padding:4px 8px;background:#0a151bc9;border:1px solid var(--tier);border-radius:4px}
.hero{border-color:#586447;background:linear-gradient(120deg,#243027,#131c23)}.hero-copy{background:linear-gradient(90deg,#1c2924,#172221)}
.panel{box-shadow:0 5px 18px #0002}.arena-wrap{box-shadow:0 0 40px #b1db6608,inset 0 0 30px #0005;border-color:#526244}
@media(max-width:800px){.detail-character{height:180px}.catalog-portrait{aspect-ratio:307/430}#heroes.inventory{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}}
.preview-attack{display:block;width:100%;font-size:11px;color:#c4dda2;margin-top:14px;background:#273327;border-color:#4a6140;padding:10px}.preview-attack:hover{background:#364a2e}#animation-preview{max-width:770px;padding:26px}#animation-preview h2{margin:12px 0 8px}#animation-preview canvas{width:100%;display:block;border:1px solid #536443;border-radius:8px;background:#13241c}.preview-legend{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;color:#96ab89;font-size:11px}

/* Inventory drag-to-equip */
#items [data-item]{cursor:grab}#items [data-item]:active{cursor:grabbing}#items [data-item].dragging{opacity:.45}.item-option{display:inline-block;margin-top:5px;color:#c7d6c5;font-weight:600}.item-option-detail{display:inline-block;margin:7px 0;color:#d8f7ad;font-size:14px}[data-select].equip-drop{outline:2px solid #d4fba1;box-shadow:0 0 0 4px #b9f66d22,0 0 22px #b9f66d44;transform:translateY(-2px)}
.monster-portrait{display:block;width:108px;aspect-ratio:1.125;background-image:url('/assets/monsters-v4.png');background-size:400% 300%;background-repeat:no-repeat;margin:4px auto 12px}
#monster-preview{width:min(780px,94vw);max-height:92vh;overflow:auto;border:1px solid #536c55;border-radius:16px;background:#101e1a;color:#e4eddb;padding:24px}
#monster-preview::backdrop{background:#020b0bdd;backdrop-filter:blur(5px)}
#monster-preview canvas{display:block;width:100%;height:auto;border-radius:12px;margin:16px 0;background:#101c1b}
#monster-preview label{display:block;margin-bottom:6px;color:#adc19f;font-size:12px}
#monster-preview select{width:100%;padding:10px;color:#e4eddb;background:#1e3025;border:1px solid #536c55;border-radius:8px}
#monster-preview .preview-legend{flex-wrap:wrap;gap:12px}
#monster-preview .preview-legend>div{display:flex;gap:6px;flex-wrap:wrap}
.combat-status{font-size:11px;line-height:1.6;padding:9px 10px;background:#b9f66d0a;border-left:2px solid #b9f66d;color:#cde3bc}
#map-preview{width:min(720px,94vw);max-height:92vh;overflow:auto;border:1px solid #536c55;border-radius:16px;background:#101e1a;color:#e4eddb;padding:24px}
#map-preview::backdrop{background:#020b0bdd;backdrop-filter:blur(5px)}
#map-preview canvas{display:block;width:min(100%,60vh);height:auto;margin:16px auto;border-radius:12px}
#map-preview select{width:100%;padding:10px;color:#e4eddb;background:#1e3025;border:1px solid #536c55;border-radius:8px}
#map-preview label{display:block;margin-bottom:6px;color:#adc19f;font-size:12px}
/* Battle cockpit: reference-inspired blue steel panels and a full-width field. */
body.battle-mode{background:radial-gradient(ellipse at 40% 20%,#122637,#030a11 75%);--line:#294359;--accent:#aff174;--panel:#091622;--muted:#89a8c1}
.battle-mode .shell{display:block}.battle-mode .sidebar,.battle-mode main>header{display:none}.battle-mode #content{max-width:1920px;padding:14px 18px;margin:auto}
.battle-hud{display:flex;align-items:center;gap:20px;border-bottom:1px solid #29485d;padding:0 0 14px;margin-bottom:14px;min-height:76px}
.hud-round{display:flex;gap:15px;align-items:center;min-width:215px}.hud-emblem{font-size:45px;color:#f4cd6c;text-shadow:0 0 20px #edb84133}.hud-round small{color:#f4d374;font-weight:700;font-size:12px}.hud-round .round-number{font-size:34px;white-space:nowrap}.hud-round .round-number small{font-size:17px;color:#91adc5}
.hud-wave{flex:1;display:flex;gap:20px;align-items:center;border:1px solid #203849;border-radius:9px;padding:10px 18px;min-width:190px;background:#08131ccc}.hud-countdown{display:grid;gap:3px;white-space:nowrap}.hud-countdown small{font-size:10px;color:#8faebb}.hud-countdown strong{font-size:16px;color:#b3ef7a}.hud-wave-track{flex:1;min-width:60px}.battle-mode .wave-progress{width:100%;height:10px;border:1px solid #375069;padding:2px;background:#050d14;margin-bottom:5px}.battle-mode .wave-progress div{height:4px;box-shadow:0 0 12px #9bec62}.hud-wave .wave-status{font-size:9px;color:#7d9bb3}
.hud-speeds{display:flex;gap:5px}.hud-speeds button{padding:9px 13px;font-size:16px;font-weight:700;color:#8dabca;background:linear-gradient(#142637,#07101a);border-color:#34516a}.hud-speeds .selected{color:#ffe18e;border-color:#edbd53;box-shadow:inset 0 0 15px #eabb4222,0 0 8px #ebbb4215}.battle-hud .gold{font-size:26px;white-space:nowrap}.battle-hud .gold small{display:block;margin:0;font-size:8px;text-align:right}
.battle-menu{position:relative;z-index:20}.battle-menu>summary{list-style:none;cursor:pointer;white-space:nowrap;border:1px solid #46688e;border-radius:7px;background:linear-gradient(#1b2e45,#0a1421);padding:12px 16px;font-size:14px;font-weight:700}.battle-menu>div{position:absolute;right:0;top:52px;width:250px;padding:12px;display:grid;gap:8px;background:#07131ff5;border:1px solid #34536d;border-radius:8px;box-shadow:0 12px 40px #000a}.battle-menu:not([open])>div{display:none}.battle-menu .small-btn{margin:0}.battle-menu .muted{font-size:10px}
.battle-stage{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.battle-field{min-width:0}.battle-mode .arena-wrap{border-radius:10px;border-color:#396e7b;box-shadow:0 0 25px #0008}.battle-mode #arena{aspect-ratio:40/23;height:auto;width:100%}.battle-mode .arena-caption{font-size:8px;bottom:6px;color:#b3c9b099;text-shadow:0 1px 3px #000}.battle-mode .arena-state{inset:auto 25% 8%;padding:12px;background:#07151ed9;border-color:#51708b}.battle-mode .arena-state b{font-size:19px;letter-spacing:1px}.battle-mode .arena-state span{font-size:9px}.battle-mode .wave-announcement{top:12%}
.battle-inspector{display:grid;gap:12px;min-width:0}.battle-mode .panel{background:linear-gradient(130deg,#101f2d,#07111bec 65%);border:1px solid #2b4a61;box-shadow:inset 0 1px 0 #7195b610,0 3px 14px #0003;border-radius:9px;padding:16px}.battle-mode .panel h3{font-size:14px;color:#edf4fb}.battle-inspector #detail{min-height:265px}.champ-summary{display:grid;grid-template-columns:42% 1fr;gap:12px;align-items:center}.champ-summary .detail-character{border:0;background:none;height:225px;margin:0;overflow:hidden}.champ-summary .detail-portrait{width:140px;max-width:100%;height:100%;mask-image:linear-gradient(#000 82%,#0000)}.champ-summary .detail-character>span:not(.character-portrait){bottom:3px;left:5px;font-size:8px;padding:3px 6px}.champ-bio h3{margin:0 0 14px}.champ-bio .stats{display:grid;grid-template-columns:1fr;gap:10px;font-size:11px}.champ-bio .stats b{font-size:12px;color:#f0f4f9}.battle-mode #detail>p{font-size:10px;margin:8px 0 12px;color:#9abbd6;line-height:1.7}
#champion-more>summary,.enemy-extra>summary{cursor:pointer;list-style:none;border:1px solid #29455e;border-radius:5px;background:#101e2b;padding:9px;text-align:center;color:#b7cee1;font-size:10px}#champion-more[open]>summary{margin-bottom:12px}#champion-more .detail-character{display:none}.battle-mode #detail .combat-status{font-size:10px}.battle-mode .target-label{font-size:10px}.battle-mode .score{font-size:12px;padding:4px 0}.battle-mode .score b{font-size:16px}.battle-intel #briefing{font-size:10px;color:#738fa5}.battle-intel .wave-preview{border-top:1px solid #294256;margin-top:9px;padding-top:10px}.battle-intel .wave-preview p{font-size:11px;color:#b9d5eb}.battle-intel .eyebrow{font-size:9px}.battle-intel #map-stage{font-size:10px;color:#f3d488}.battle-mode #next-monsters{display:flex;gap:6px;margin-top:12px}.battle-mode #next-monsters .monster-portrait{width:47px;height:43px;margin:0;background-color:#091522;border:1px solid #344f65;border-radius:5px}.enemy-extra{margin-top:12px}.enemy-extra .enemy-inspector{margin:0;border:0}.enemy-extra:not([open])>div{display:none}
.battle-actions{display:grid;grid-template-columns:1.25fr 1.25fr 1fr 1fr 1.25fr;gap:10px;margin-top:12px}.battle-actions>button{display:flex;align-items:center;justify-content:center;gap:10px;margin:0;min-height:66px;padding:10px 8px;font-size:12px;font-weight:700;box-shadow:inset 0 0 20px #ffffff05}.action-icon{font-size:25px}.battle-actions small{display:block;font-size:16px;color:#ffda72;margin-top:3px}.battle-actions .action-summon{background:linear-gradient(130deg,#104a70,#06243d);border-color:#17bafa;box-shadow:inset 0 0 18px #0aa6fa33}.battle-actions .action-item{background:linear-gradient(130deg,#48216b,#1b1237);border-color:#ab69e1;box-shadow:inset 0 0 18px #a957da25}.battle-actions .action-shop{background:linear-gradient(130deg,#4e3b19,#19170f);border-color:#dba748;color:#ffe2a1}.battle-actions #formation{background:linear-gradient(#1b2e40,#0a1521);border-color:#537692;color:#bad5ea}.battle-actions #start,.battle-actions #pause-game{background:linear-gradient(120deg,#28571d,#103421);border:1px solid #a1ec66;color:#e8ffda;box-shadow:inset 0 0 20px #90e85822}.battle-actions #pause-game:disabled{display:none}.battle-actions:has(#start:not([hidden])) #pause-game{display:none}.battle-shop{margin-top:12px}.battle-shop h3{display:flex;justify-content:space-between}.battle-shop .upgrade{font-size:12px}.battle-shop .upgrade button{font-size:11px}.battle-shop .probabilities{font-size:10px}
.battle-storage{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;margin-top:16px}.battle-storage h3 span{color:#7e9ebb;font-weight:400}.battle-storage .inventory-tools{gap:10px;margin-bottom:12px}.battle-storage .inventory-tools input:not([type=checkbox]){font-size:10px;padding:6px 9px;width:145px}.battle-storage .inventory-tools label{font-size:9px;color:#8eacc5}.battle-mode #heroes.inventory{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;min-height:115px;padding:2px 2px 7px}.battle-mode #heroes.inventory button{flex:0 0 81px;min-height:112px;padding:0 0 5px;border-color:#3d5d76;border-radius:6px;background:linear-gradient(#172b3a,#08131f)}.battle-mode #heroes.inventory button.selected{border-color:#e0d497;box-shadow:0 0 0 1px #e0d49766}.battle-mode #heroes .roster-portrait{height:82px;aspect-ratio:auto;background-size:500% 200%;width:65px;margin:0 auto -4px}.battle-mode .roster-name{font-size:9px}.battle-mode #heroes small{font-size:8px}.battle-mode #items.inventory{flex-wrap:nowrap;overflow-x:auto;min-height:115px;align-items:stretch;padding-bottom:7px}.battle-mode #items.inventory button{flex:0 0 108px;font-size:9px;border-color:#3d5d76;background:#102130}.battle-mode #items .item-option{font-size:8px}.battle-storage .inventory>.muted{width:100%;min-height:103px;border:1px dashed #274054;border-radius:6px;display:grid;place-items:center;font-size:11px;color:#66849b;padding:14px;text-align:center}
@media(min-width:1450px){.battle-stage{grid-template-columns:minmax(0,1fr) 370px}.champ-summary .detail-character{height:250px}.champ-bio .stats{font-size:12px;gap:14px}.battle-actions>button{min-height:76px;font-size:15px}.battle-mode #heroes.inventory button{flex-basis:95px}.battle-mode #heroes .roster-portrait{height:96px;width:76px}}
@media(max-width:1100px){.battle-mode #content{padding:10px}.battle-hud{gap:10px}.hud-round{min-width:165px;gap:8px}.hud-round .round-number{font-size:28px}.hud-emblem{font-size:32px}.hud-wave{gap:10px;padding:10px}.hud-speeds button{padding:8px}.battle-stage{grid-template-columns:minmax(0,1fr) 280px;gap:10px}.champ-summary .detail-character{height:175px}.champ-bio .stats{font-size:9px;gap:8px}.battle-actions{gap:6px}.battle-actions>button{font-size:10px;gap:5px;min-height:58px}.action-icon{font-size:20px}.battle-mode .panel{padding:12px}.battle-storage{gap:10px}.hud-wave-track{min-width:40px}}
@media(max-width:760px){.battle-hud{flex-wrap:wrap;gap:8px}.hud-round{flex:1}.hud-wave{order:5;flex-basis:100%}.battle-menu>summary{padding:10px}.battle-hud .gold{font-size:20px}.battle-stage{grid-template-columns:1fr}.battle-inspector{grid-template-columns:1fr 1fr}.battle-inspector #detail{grid-column:1/-1;min-height:0}.champ-summary{grid-template-columns:120px 1fr}.champ-summary .detail-character{height:150px}.champ-bio .stats{grid-template-columns:1fr 1fr;font-size:11px;gap:10px}.battle-storage{grid-template-columns:1fr}.battle-mode .arena-state{inset:auto 15% 5%}.battle-actions>button{font-size:10px;min-height:60px;flex-direction:column;gap:3px}.battle-actions .action-icon{display:none}.battle-actions small{font-size:13px}.battle-mode #arena{aspect-ratio:40/23}}
@media(prefers-reduced-motion:reduce){.battle-mode button{transition:none}}

.battle-mode .inventory-empty-slot{display:grid;place-items:center;flex:0 0 81px;min-height:112px;color:#30475b;font:36px sans-serif;border:1px solid #233b4d;border-radius:6px;background:linear-gradient(#101f2e,#07121d);user-select:none}.battle-mode .equipment-empty{flex-basis:84px;font-size:30px}.battle-mode .bag-glyph{display:block;font-size:27px;color:#9dc4e2;margin-bottom:8px}.battle-storage .inventory>.muted{min-width:190px;width:190px;flex:0 0 190px}.battle-intel #briefing{display:none}.battle-intel .enemy-extra{margin-top:9px}.battle-inspector #detail{min-height:210px}
.battle-storage{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.battle-storage>.panel{min-width:0}.battle-mode .inventory{min-width:0;max-width:100%;width:100%}.battle-inspector #detail{min-height:0}.battle-intel .enemy-extra:not(:has(#inspect-enemy h3)){display:none}.battle-intel .eyebrow{display:none}.battle-intel .wave-preview{padding-top:6px;margin-top:6px}.battle-intel .wave-preview p{margin:4px 0;font-size:10px;line-height:1.4}.battle-intel #next-monsters{margin-top:7px}.battle-intel #next-monsters .monster-portrait{width:40px;height:36px}.battle-intel h3{margin-bottom:8px}.battle-intel .defense-chip{padding:3px 5px;font-size:8px}
@media(max-width:1100px){.champ-summary .detail-character{height:130px}.champ-bio h3{font-size:13px!important;margin-bottom:10px}.champ-bio .stats{gap:6px}.battle-mode #detail>p{font-size:9px;margin:6px 0 9px}.battle-inspector .panel{padding:12px}.battle-inspector .panel:has(#scores) h3{margin-bottom:4px}.battle-inspector .score{margin:5px 0;padding:0}.battle-storage h3{margin-bottom:9px}.battle-mode #heroes.inventory button{min-height:99px}.battle-mode .inventory-empty-slot{min-height:99px}.battle-storage .inventory-tools{flex-wrap:wrap;gap:6px}}
@media(max-width:760px){.battle-storage{grid-template-columns:minmax(0,1fr)}}
.battle-intel>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}.battle-intel>summary::-webkit-details-marker{display:none}.battle-intel>summary h3{margin:0}.battle-intel>summary:focus-visible{outline:2px solid #79caff;outline-offset:6px;border-radius:3px}.battle-intel .intel-toggle{font-size:11px;color:#a9c6dc}.battle-intel .intel-toggle::after{content:'펼치기 ▾'}.battle-intel[open] .intel-toggle::after{content:'접기 ▴'}.battle-intel[open]>.intel-content{margin-top:12px}.battle-intel:not([open])>.intel-content{display:none}

.battle-mode #heroes .roster-card{flex:0 0 95px;min-width:0;display:flex;flex-direction:column;gap:5px}.battle-mode #heroes .roster-card>button{flex:auto;width:100%;border-color:var(--tier)}.roster-equipment{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:6px 5px 0}.roster-slot{display:grid;place-items:center;height:20px;border:1px solid var(--slot-color);border-radius:3px;background:#07121d;color:#34485a;font-size:12px}.roster-slot.equipped{color:var(--slot-color);background:color-mix(in srgb,var(--slot-color) 18%,#07121d)}.battle-mode #heroes .roster-card>.roster-merge{min-height:28px;padding:5px 2px;font-size:10px;color:#d5f7a7;border-color:#779a48;background:#253b20;flex:0 0 auto}
.dps-panel{position:absolute;right:10px;top:10px;z-index:4;width:190px;max-width:40%;background:#06111ddb;border:1px solid #426079;border-radius:6px;padding:8px 10px;color:#dbe9f2;backdrop-filter:blur(4px)}.dps-panel summary{cursor:pointer;font-size:11px;font-weight:700}.dps-panel summary small{display:block;font-size:8px;color:#87a6bc;margin:3px 0 5px}#champion-dps{max-height:140px;overflow:auto}.dps-row{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:10px}.dps-row small{font-size:8px;color:#678298}.dps-row b{font-variant-numeric:tabular-nums;color:#e2eea3}.dps-panel p{font-size:9px;color:#7899b0}.equipment-icon{display:inline-block;width:70px;height:64px;background-size:500% 400%;background-repeat:no-repeat;vertical-align:middle}.battle-mode #items .equipment-icon{display:block;margin:0 auto 5px;width:85px;height:75px}.equipment button .equipment-icon{width:30px;height:27px;margin-right:6px}.equipment-icon.equipment-art{display:block;width:100%;height:150px;mix-blend-mode:normal}

/* Full pose portraits preserve the atlas aspect ratio in every UI slot. */
.character-portrait{background-repeat:no-repeat;mask-image:none!important}.codex-portrait{inset:0;width:100%;height:100%}.codex-large{right:0;bottom:0}
.boss-skill-notices{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.boss-skill-notices[hidden]{display:none}.boss-skill-card{display:flex;align-items:center;gap:10px;flex:1 1 320px;padding:8px 12px;background:#090f20;border:1px solid var(--skill-color);border-radius:8px;box-shadow:inset 0 0 22px #ffffff08}.boss-skill-icon{display:inline-block;flex:none;width:48px;height:48px;background-image:url('/assets/boss-skills-v1.png');background-size:500% 200%;background-repeat:no-repeat}.boss-skill-card>div{flex:1}.boss-skill-card strong{display:block;color:var(--skill-color);font-size:13px}.boss-skill-card small{display:block;color:#c0d1df;font-size:11px;margin-top:3px}.boss-skill-card>b{color:var(--skill-color);font-size:23px;white-space:nowrap}.boss-skill-card progress{display:block;width:100%;height:5px;accent-color:var(--skill-color);margin-top:7px}.boss-skill-card.is-warning{border-width:2px}
.champion-skill{display:flex;align-items:center;gap:9px;margin:12px 0;padding:10px;background:#0b1c2b;border:1px solid #476484;border-radius:7px}.champion-skill-icon{flex:none;display:block;width:48px;height:48px;background-image:url('/assets/champion-skills-v1.png');background-size:500% 300%;background-repeat:no-repeat}.champion-skill strong{color:#ffe5a1;font-size:13px}.champion-skill small{display:block;color:#a8c1d3;font-size:10px;line-height:1.6}.champion-skill b{display:block;color:#8dd8f6;font-size:11px;margin-top:4px}
#talent-panel{margin:12px 0}.talent-heading{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#ffe4a0;padding:12px 4px}.talent-heading span{color:#b3c9dc;font-size:12px}.talent-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.talent-cards button{position:relative;text-align:left;padding:18px;border:1px solid #7994b1;border-radius:10px;background:radial-gradient(at top right,#34537455,transparent 65%),#091a2b;min-height:170px;color:#eff4ff}.talent-cards button:hover:not(:disabled){border-color:#ffe29a;box-shadow:0 0 18px #ffcf5233;transform:translateY(-2px)}.talent-cards small{display:block;color:#8bcbff;letter-spacing:2px;font-size:11px}.talent-cards strong{display:block;font-size:19px;margin-top:10px;color:#ffe4a5}.talent-cards p{font-size:13px;color:#c4d8e9;line-height:1.7}.talent-cards button>span{display:block;text-align:right;color:#b6f084;font-size:12px}.owned-talents{padding:10px;background:#091523;border:1px solid #29475e;border-radius:7px;margin-top:8px}.owned-talents summary{cursor:pointer;color:#b4cddd;font-size:12px}.owned-talents span{display:inline-block;padding:6px 9px;margin:8px 5px 0 0;background:#1b3145;border-radius:4px;color:#e6d6a6;font-size:11px}@media(max-width:650px){.talent-cards{grid-template-columns:1fr}.talent-cards button{min-height:130px;padding:13px}}
.battle-fullscreen-announcement{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;pointer-events:none;background:radial-gradient(ellipse,#0b294bbb,#020812bb);backdrop-filter:blur(2px);text-align:center;padding:24px;animation:battleAnnounce .3s ease-out}.battle-fullscreen-announcement>div{width:min(100%,1100px);padding:48px 20px;border-block:1px solid #99d7ff77;background:linear-gradient(90deg,transparent,#082e53cc,transparent)}.battle-fullscreen-announcement small{display:block;letter-spacing:6px;color:#98d8ff;font-size:14px}.battle-fullscreen-announcement strong{display:block;margin:22px 0;color:#fff3c2;text-shadow:0 0 30px #ffc44c88;font-size:clamp(28px,5vw,70px);line-height:1.25}.battle-fullscreen-announcement strong:is(:last-child){font-size:90px}.battle-fullscreen-announcement p{font-size:clamp(14px,2vw,23px);color:#d1e6f8;line-height:1.7}.battle-fullscreen-announcement.boss{background:radial-gradient(ellipse,#511c31cc,#100510cc)}.battle-fullscreen-announcement.boss small{color:#ffae85}@keyframes battleAnnounce{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.battle-fullscreen-announcement{animation:none;backdrop-filter:none}}
.battle-fullscreen-announcement.countdown strong{font-size:clamp(100px,19vw,240px);font-weight:900;letter-spacing:8px}.battle-fullscreen-announcement.countdown>div{background:radial-gradient(circle,#24558655,transparent 65%);border:0}
.fixed-speed{display:inline-flex;align-items:center;gap:8px;padding:14px;color:#ffe199;font-size:24px;font-weight:800;white-space:nowrap}.fixed-speed small{font-size:11px;color:#9eb4c8}

/* Disable double-tap zoom while preserving pinch zoom and scrolling. */
html,body,button,a,input,select,label{touch-action:manipulation}
