@charset "UTF-8";
:root{color-scheme:dark;--bg:#101c18;--panel:#14251f;--line:#e3dab625;--text:#f2efdb;--muted:#9aafa2;--gold:#dfbd76;--mint:#9edfc8;--red:#ec9985;font-family:"Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;font-size:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);height:100vh;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}button,select,input{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button{color:var(--text);background:#24352d;border:1px solid var(--line);border-radius:10px;cursor:pointer;padding:11px 15px;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#334a3a;border-color:#d8cc9b80}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}[hidden]{display:none!important}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}small.eyebrow,.eyebrow{color:var(--gold);font-size:10px;letter-spacing:2px}h1,h2,h3,p{margin:0}h1{font-size:19px;font-weight:600;letter-spacing:-.5px}h2{font-size:25px;margin-top:6px}h3{font-size:15px;margin:24px 0 12px}button.primary{background:var(--gold);color:#1a251b;font-weight:700;border-color:var(--gold)}button.primary:hover{background:#f2d291}.wide{width:100%;margin-top:15px}.muted{color:var(--muted);font-size:12px;line-height:1.7;margin:15px 0}
dialog{color:var(--text);background:linear-gradient(140deg,#20352a,#12231d);border:1px solid #bba57455;border-radius:20px;padding:26px;width:min(520px,94vw);max-height:88vh;box-shadow:0 30px 130px #0009}dialog::backdrop{background:#040d09b0;backdrop-filter:blur(7px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:24px}.dialog-head button{padding:6px 11px;background:transparent;font-size:18px}.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:13px 0}.setting{display:flex;align-items:center;justify-content:space-between;margin-top:20px;font-size:13px;gap:10px}select{background:#112219;border:1px solid var(--line);border-radius:8px;padding:9px;color:var(--text);max-width:100%}input[type=checkbox]{accent-color:var(--gold);width:18px;height:18px}.studio-link{display:block;text-align:center;margin-top:27px;color:var(--muted);font-size:12px;text-underline-offset:5px}.map-cards{display:flex;flex-direction:column;gap:12px}.map-card{text-align:left;padding:22px;position:relative;background:linear-gradient(120deg,#53643b70,#19362d);border-color:#d5c58840}.map-card:nth-child(2){background:linear-gradient(120deg,#335762,#30412e)}.map-card strong{display:block;font-size:19px;margin:8px 0}.map-card small{color:var(--gold);letter-spacing:2px}.map-card span{display:block;font-size:12px;color:#c7d4c6;line-height:1.7}.map-card .cleared{position:absolute;right:16px;top:15px;color:#b4e5bd;font-size:11px}.gear-stats{padding:15px 0;line-height:1.9;font-size:12px;color:#d7dcb8}.gear-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.gear-slot{border:1px solid var(--line);border-radius:10px;padding:13px 10px;text-align:center;min-width:0}.gear-slot small{color:var(--gold);display:block;margin-bottom:8px}.gear-slot strong{font-size:12px;display:block;overflow-wrap:anywhere}.gear-slot button{font-size:10px;padding:5px 8px;margin-top:10px}.inventory-item{display:flex;align-items:center;gap:12px;justify-content:space-between;border-bottom:1px solid var(--line);padding:13px 0}.inventory-item strong{font-size:13px}.inventory-item small{display:block;color:var(--muted);font-size:11px;line-height:1.7;margin-top:4px}.inventory-item button{font-size:11px;padding:8px 10px;flex-shrink:0}.help-list{padding-left:22px}.help-list li{padding-left:5px;margin-bottom:18px}.help-list p{color:#b8c7b6;line-height:1.8;margin-top:6px;font-size:13px}.result-dialog{text-align:center;padding:35px}.result-crest{display:block;font-size:75px;color:var(--gold);margin-bottom:15px}.result-dialog h2{font-size:40px;margin:10px 0}.result-dialog p{color:#c6d3c0;line-height:1.7}.result-stats{display:flex;justify-content:center;gap:30px;margin:26px 0;padding:18px 0;border-block:1px solid var(--line);color:var(--gold)}

/* World-anchored skill choices remain finger-sized at any zoom. */
#gameCanvas{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.unit-skill-menu{position:absolute;z-index:5;display:flex;gap:10px;transform:translate(-50%,-100%);pointer-events:none;isolation:isolate}
.unit-skill{width:66px;height:66px;border-radius:50%;padding:8px 3px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;pointer-events:auto;touch-action:manipulation;user-select:none;background:rgba(16,35,30,.72);backdrop-filter:blur(5px);border:1px solid #ebd9a78a;color:#f6e3af;box-shadow:0 4px 15px #0005,inset 0 0 18px #e7d49a0a}
.unit-skill svg{width:23px;height:23px;flex-shrink:0}.unit-skill .skill-name{font-size:10px;line-height:12px;white-space:nowrap}.unit-skill small{font-size:8px;line-height:10px;color:#e1dbbf}.unit-skill[aria-pressed=true]{border-color:#ffe3a0;background:rgba(108,82,30,.76);box-shadow:0 0 0 3px #f9d67f20,0 5px 20px #0004}.unit-skill:disabled{opacity:.68;color:#a7b0a4;background:rgba(22,32,27,.82)}.unit-skill:focus-visible{outline:3px solid #fff0b2;outline-offset:3px}
/* Fixed-size feedback follows the finger while the world camera changes scale. */
.aim-readout{position:absolute;z-index:6;width:208px;max-width:calc(100% - 16px);padding:10px 12px;pointer-events:none;border:1px solid #e7cd8799;border-radius:12px;background:#10281ce8;box-shadow:0 5px 22px #0005;color:#ffe6a5;backdrop-filter:blur(4px)}
.aim-readout>div:first-child{display:flex;justify-content:space-between;gap:10px;align-items:center}.aim-readout strong{font-size:13px}.aim-readout span{font-size:11px;color:#bfe5cc}.aim-readout small{display:block;font-size:10px;line-height:1.4;color:#e1e6cb}.aim-meter{height:4px;margin:7px 0;background:#0005;border-radius:5px;overflow:hidden}.aim-meter i{display:block;height:100%;background:#f0cb78;border-radius:5px}.aim-readout.insufficient{border-color:#ed9b84;color:#ffc1aa}.aim-readout.insufficient .aim-meter i{background:#ed9b84}

/* The battlefield fills the viewport; HUD panels float above it. */
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
body{display:block;height:100vh;height:100dvh;touch-action:manipulation}
.arena{--edge:20px;--hud-top:132px;--hud-bottom:190px;position:fixed;inset:0;width:100%;height:100vh;height:100dvh;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at center,#334631,#12231e 68%,#0b1713)}
#gameCanvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#gameCanvas.dragging{cursor:grabbing}#gameCanvas.aiming{cursor:crosshair}
#cameraFrame{position:absolute;top:calc(var(--hud-top) + env(safe-area-inset-top));bottom:calc(var(--hud-bottom) + env(safe-area-inset-bottom));left:calc(var(--edge) + env(safe-area-inset-left));right:calc(76px + env(safe-area-inset-right));pointer-events:none;visibility:hidden}
.game-header{position:absolute;z-index:10;left:calc(var(--edge) + env(safe-area-inset-left));right:calc(var(--edge) + env(safe-area-inset-right));top:calc(14px + env(safe-area-inset-top));display:grid;grid-template-columns:minmax(180px,1fr) minmax(230px,1.5fr) auto minmax(170px,.85fr) auto;grid-template-areas:"identity objective turn st tools";gap:20px;align-items:center;pointer-events:none;padding:12px 16px;border:1px solid #d7d9b72e;border-radius:18px;background:linear-gradient(125deg,#0d241fed,#0d1c19d6);box-shadow:0 8px 26px #0004;backdrop-filter:blur(10px)}
.identity{grid-area:identity;display:flex;gap:10px;align-items:center;min-width:0}.identity>div{min-width:0}.identity h1{font-size:18px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.identity small{display:block;font-size:9px;letter-spacing:.5px;color:#ddc799;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crest{font-size:30px;flex-shrink:0;width:42px;height:46px;display:grid;place-items:center;border:1px solid #dcc18155;border-radius:14px;color:#ecd195;background:#c09f5312}
.objective{grid-area:objective;min-width:0;border-left:1px solid var(--line);padding-left:20px;display:flex;gap:8px;flex-direction:column}.objective .eyebrow{font-size:9px;letter-spacing:1px}.objective strong{font-size:14px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.turn-info{grid-area:turn;display:flex;gap:5px;flex-direction:column;text-align:right;white-space:nowrap}.turn-info strong{font-size:14px;color:#aee9cb}.turn-info.enemy strong{color:var(--red)}.turn-info span{font-size:10px;color:#b8cdbd;letter-spacing:1px}
.header-tools{grid-area:tools;display:flex;gap:6px;pointer-events:auto}.icon-button{width:44px;height:44px;padding:10px;background:#294236b3;border-radius:13px}.arena-top{position:absolute;z-index:9;left:calc(var(--edge) + env(safe-area-inset-left));right:calc(var(--edge) + env(safe-area-inset-right));top:calc(96px + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}.tag{font-size:11px;letter-spacing:.5px;padding:7px 12px;border:1px solid #d4d6b42b;border-radius:20px;color:#dcebd6;background:#10251ddc;backdrop-filter:blur(5px)}.pill{pointer-events:auto;min-height:36px;border-radius:22px;background:#10251de8;font-size:11px;padding:6px 14px}
.camera-tools{position:absolute;z-index:10;right:calc(var(--edge) + env(safe-area-inset-right));top:50%;transform:translateY(-50%);display:grid;gap:5px}.camera-tools button{display:grid;place-items:center;width:44px;height:44px;padding:9px;font-size:22px;border-radius:14px;border-color:#d4dfbf3d;background:#132b23de;box-shadow:0 3px 13px #0004;backdrop-filter:blur(6px)}
.arena-bottom{position:absolute;left:calc(var(--edge) + env(safe-area-inset-left));right:calc(76px + env(safe-area-inset-right));bottom:calc(var(--hud-bottom) - 4px + env(safe-area-inset-bottom));display:flex;justify-content:center;z-index:8;pointer-events:none}.arena-bottom span{font-size:11px;line-height:1.5;color:#e0ebd4;text-align:center;text-shadow:0 2px 5px #000;padding:5px 13px;border-radius:20px;background:#0a22198c;backdrop-filter:blur(4px)}
.toast{position:absolute;z-index:25;top:calc(var(--hud-top) + 12px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:max-content;max-width:min(540px,calc(100% - 36px));background:#10291ff2;border:1px solid #e2c68070;border-radius:13px;padding:11px 18px;box-shadow:0 8px 28px #0005;text-align:center;pointer-events:none;opacity:0;transition:opacity .2s;font-size:12px;line-height:1.5}.toast.visible{opacity:1}.toast.error{border-color:#e8937b;color:#ffd1be}
.command-deck{position:absolute;z-index:12;bottom:0;left:0;right:0;padding:18px calc(var(--edge) + env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) calc(var(--edge) + env(safe-area-inset-left));background:linear-gradient(transparent,#061b1394 30%,#081c16de);pointer-events:none}
.squad-row{display:flex;align-items:center;gap:9px;margin-bottom:10px;max-width:100%;pointer-events:none}.roster{display:flex;gap:6px;overflow-x:auto;min-width:0;max-width:calc(100% - 82px);padding:2px;scrollbar-width:thin;scrollbar-color:#dfbd7666 transparent;pointer-events:auto;overscroll-behavior-x:contain}.portrait{display:flex;align-items:center;gap:6px;background:#17352bed;border:1px solid #bed3b638;border-radius:14px;padding:4px 11px 4px 4px;min-height:48px;flex-shrink:0;box-shadow:0 3px 12px #0003}.portrait img{width:34px;height:40px;object-fit:contain}.portrait span{font-size:11px;white-space:nowrap}.portrait em{display:block;font-size:9px;font-style:normal;color:#b0c7b6;margin-top:3px}.portrait.selected{background:#5c542ee6;border-color:#f1d591;box-shadow:0 0 0 2px #eed39925}.portrait:disabled{opacity:.62}.cancel{pointer-events:auto;min-width:68px;min-height:44px;font-size:11px;padding:8px 10px;border-radius:22px;background:#173429d9;white-space:nowrap}.cancel kbd{display:none}
.controls-row{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;pointer-events:none}.unit-info{min-width:230px;max-width:420px;display:flex;flex-direction:column;gap:7px;padding:12px 15px;background:#10281fde;border:1px solid #cee0b929;border-radius:16px;backdrop-filter:blur(8px)}.unit-info>strong{font-size:15px}.unit-info>span{font-size:11px;color:#b7cebd;line-height:1.5}.unit-bars{display:flex;gap:14px;flex-wrap:nowrap}.stat b{font-size:10px;font-weight:600;color:#b6e19f;white-space:nowrap}.stat.st b{color:#8edcdb}.stat.mp b{color:#c7a5ed}.stat meter{display:block;width:76px;height:5px;margin-top:4px}.stat meter::-webkit-meter-bar{background:#06170f;border:0;border-radius:4px}.stat meter::-webkit-meter-optimum-value{background:#a0d68b}.stat.st meter::-webkit-meter-optimum-value{background:#8edcdb}.stat.mp meter::-webkit-meter-optimum-value{background:#c7a5ed}
.actions{display:flex;gap:6px;pointer-events:none;flex-wrap:wrap;justify-content:flex-end}.action{pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:72px;min-height:82px;padding:10px 12px;border-radius:24px;background:linear-gradient(#284637f0,#102b23f0);border:1px solid #c9deab48;box-shadow:0 5px 16px #0005,inset 0 1px #ffffff0b;backdrop-filter:blur(6px)}.action>span{font-size:11px;font-weight:600;white-space:nowrap}.action>small{font-size:9px;color:#a5c3ac;white-space:nowrap}.action svg{width:27px;height:27px}.action.active{border-color:#e8cd8c;background:linear-gradient(#6b613ce8,#413f25f0);color:#ffedb2;box-shadow:0 0 0 2px #e8cd8c20,0 4px 15px #0004}.action.bag{background:linear-gradient(#3d493ee8,#26372df0);border-radius:22px}.action .rest-icon{font-size:30px;line-height:27px}.action:disabled{opacity:.57}
.enemy-cctv{position:absolute;top:calc(var(--hud-top) + 25px);right:calc(var(--edge) + 70px);z-index:9;width:clamp(120px,30vw,200px);height:auto;aspect-ratio:200/132;pointer-events:none;border:2px solid #ec7064;border-radius:12px;background:#10201a;box-shadow:0 8px 20px #0009;opacity:0;transition:opacity .45s ease}.enemy-cctv.visible{opacity:1}.enemy-cctv[hidden]{display:none}
.action[hidden]{display:none}
.unit-skill-menu{z-index:15}.aim-readout{z-index:16}
dialog{position:fixed;margin:auto;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}dialog button{min-height:44px}dialog select{min-height:44px}dialog input,dialog select{font-size:16px}.dialog-head button{min-width:44px;min-height:44px}.setting{flex-wrap:wrap}
@media(max-width:1000px){.game-header{grid-template-columns:minmax(120px,1fr) minmax(190px,1.2fr) auto minmax(145px,.8fr) auto;gap:12px;padding:10px 12px}.objective{padding-left:12px}.objective strong{font-size:12px}.identity h1{font-size:16px}.crest{display:none}.action{min-width:70px;padding:8px}.unit-info{min-width:205px;padding:10px}.stat meter{width:62px}.unit-bars{gap:10px}}
@media(max-width:680px){
  .arena{--edge:10px;--hud-top:147px;--hud-bottom:207px}.game-header{top:calc(8px + env(safe-area-inset-top));padding:8px 10px;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"identity turn tools" "objective objective objective" "st st st";gap:7px 8px;border-radius:16px}.identity h1{font-size:15px;margin-top:4px}.identity small{font-size:8px;max-width:155px}.turn-info{gap:4px}.turn-info strong{font-size:12px}.turn-info span{font-size:9px;letter-spacing:.3px}.header-tools{gap:4px}.icon-button{width:44px;height:44px;padding:11px;border-radius:13px}.objective{padding:7px 0 0;border:0;border-top:1px solid var(--line);flex-direction:row;gap:8px;align-items:center}.objective .eyebrow{white-space:nowrap;font-size:9px;letter-spacing:0}.objective strong{font-size:11px;line-height:1.4}.arena-top{top:calc(164px + env(safe-area-inset-top));gap:6px}.tag{font-size:10px;padding:6px 10px}.pill{min-height:36px;font-size:10px;padding:6px 10px}.camera-tools{right:calc(8px + env(safe-area-inset-right));gap:4px}.camera-tools button{width:44px;height:44px;border-radius:14px}.arena-bottom{right:calc(var(--edge) + env(safe-area-inset-right));bottom:calc(var(--hud-bottom) - 9px + env(safe-area-inset-bottom))}.arena-bottom span{font-size:9px;padding:4px 10px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.command-deck{padding-top:12px;padding-bottom:calc(9px + env(safe-area-inset-bottom))}.squad-row{gap:6px;margin-bottom:6px}.roster{gap:5px;max-width:calc(100% - 72px)}.portrait{min-width:56px;min-height:49px;padding:3px 7px;gap:4px;border-radius:13px}.portrait img{width:25px;height:33px}.portrait span{font-size:10px}.portrait em{font-size:8px}.cancel{min-width:64px;padding:6px 7px;font-size:10px}.controls-row{display:flex;flex-direction:column;gap:6px;align-items:stretch}.unit-info{min-width:0;max-width:none;min-height:38px;height:38px;flex-direction:row;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:12px;overflow:hidden;gap:7px}.unit-info>strong{font-size:12px;flex-shrink:0;max-width:95px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unit-info>span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unit-bars{gap:8px;min-width:0}.stat b{font-size:8px}.stat meter{width:57px;height:4px;margin-top:3px}.actions{gap:6px;justify-content:flex-end}.action{flex:1;min-width:0;min-height:72px;gap:3px;padding:8px 4px;border-radius:20px}.action svg{width:24px;height:24px}.action>span{font-size:10px}.action>small{font-size:8px}.action .rest-icon{font-size:27px;line-height:24px}.action.bag{border-radius:20px}.toast{font-size:11px;padding:9px 13px;top:calc(var(--hud-top) + env(safe-area-inset-top));max-width:calc(100% - 30px)}dialog{padding:18px;width:calc(100% - 20px);border-radius:20px;max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.dialog-head{margin-bottom:16px}.gear-slots{gap:6px}.gear-slot{padding:10px 6px}.unit-skill{width:60px;height:60px}.unit-skill-menu{gap:8px}.aim-readout{width:184px;padding:8px 10px}
}

/* v0.6.3 campaign map */
.world-dialog{width:min(1120px,96vw);max-width:1120px;padding-bottom:18px}
.world-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:16px;align-items:stretch}
.world-map-compat{display:none!important}
.world-map-board{position:relative;aspect-ratio:1672/941;min-height:340px;border:1px solid #98af8455;border-radius:18px;overflow:hidden;background-size:cover;background-position:center;box-shadow:inset 0 0 60px #06120ba8,0 18px 48px #0008}
.world-map-nodes{position:absolute;inset:0}
.world-stage-node{position:absolute;translate:-50% -50%;width:112px;min-height:90px;padding:0;border:0;background:transparent;color:#fff;filter:drop-shadow(0 5px 5px #071008c9);transition:transform .18s ease,filter .18s ease;overflow:visible}
.world-stage-node:hover,.world-stage-node:focus-visible{transform:scale(1.13);filter:drop-shadow(0 0 12px #ffe58c)}
.world-stage-node.current{filter:drop-shadow(0 0 10px #ffe071)}
.world-stage-node.cleared::after{content:"✓";position:absolute;right:5px;top:2px;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#39794f;color:#efffdc;border:2px solid #c9e88c;font-weight:900}
.world-stage-art{display:block;margin:auto;background-repeat:no-repeat;pointer-events:none}
.world-stage-node>span:last-child{display:block;margin:-2px auto 0;width:max-content;max-width:120px;padding:4px 9px;border:1px solid #e9d98d77;border-radius:999px;background:#0b1c15e6;font-size:12px;font-weight:800;white-space:nowrap}
.world-map-detail{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:20px;border:1px solid #9db08355;border-radius:18px;background:linear-gradient(165deg,#173526,#0b1d16);box-shadow:inset 0 1px #ffffff12}
.world-map-detail h3{margin:8px 0 5px;font-size:26px}.world-map-detail p{color:#cad5c5;line-height:1.55}.world-clear{color:#bce798}.world-map-actions{display:grid;gap:8px;margin-top:18px}.world-map-actions button{width:100%}
@media(max-width:760px){.world-dialog{width:100%;max-width:100%;height:100dvh;max-height:none;border-radius:0;margin:0;overflow-x:hidden}.world-map-layout{width:calc(100vw - 36px);max-width:calc(100vw - 36px);grid-template-columns:minmax(0,1fr);overflow:auto}.world-map-board{width:calc(100vw - 36px);max-width:calc(100vw - 36px);min-width:0;min-height:0;height:clamp(185px,52vw,225px);aspect-ratio:auto;background-size:100% 100%}.world-map-detail{width:100%;max-width:100%;padding:14px}.world-stage-node{transform:scale(.64)}.world-stage-node:hover,.world-stage-node:focus-visible{transform:scale(.72)}}
@media(max-width:360px){.identity small{max-width:126px}.objective strong{font-size:10px}.stat meter{width:48px}.stat b{font-size:7px}.unit-bars{gap:6px}.unit-info>strong{max-width:74px}.action>span{font-size:9px}.action>small{font-size:7px}.portrait img{width:22px}}
@media(max-height:620px) and (orientation:portrait){.arena{--hud-top:138px;--hud-bottom:184px}.game-header{top:6px}.arena-top{top:104px}.portrait{min-height:44px}.portrait img{height:28px}.action{min-height:63px}.unit-info{height:32px;min-height:32px}.camera-tools{gap:3px}.camera-tools button{height:40px}.arena-bottom{display:none}}
@media(max-height:500px) and (orientation:landscape){
  .arena{--edge:12px;--hud-top:99px;--hud-bottom:115px}.game-header{top:calc(6px + env(safe-area-inset-top));padding:6px 10px;grid-template-columns:minmax(90px,.7fr) minmax(150px,1.2fr) auto minmax(125px,.9fr) auto;grid-template-areas:"identity objective turn st tools";gap:6px;border-radius:13px}.identity h1{font-size:14px}.identity small{display:none}.crest{display:none}.objective{flex-direction:column;border-top:0;border-left:1px solid var(--line);padding:0 0 0 10px;gap:2px}.objective strong{font-size:11px}.objective .eyebrow{font-size:8px}.turn-info strong{font-size:12px}.turn-info span{font-size:9px}.player-st-hud{min-width:112px;padding:5px 7px}.player-st-label{font-size:9px;gap:5px}.player-st-track{height:5px;margin-top:4px}.header-tools{gap:4px}.icon-button{width:44px;height:44px;padding:10px}.arena-top{top:calc(68px + env(safe-area-inset-top))}.tag{font-size:9px;padding:4px 10px}.pill{font-size:9px;min-height:28px;padding:5px 10px}.arena-bottom{display:none}.camera-tools{right:calc(8px + env(safe-area-inset-right));grid-template-columns:44px 44px;gap:4px;top:50%}.camera-tools button{height:44px}.command-deck{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(300px,1.3fr);gap:5px 14px;padding-top:10px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.squad-row{grid-column:1;grid-row:1;margin:0;gap:4px}.roster{max-width:calc(100% - 54px);gap:4px}.portrait{min-height:40px;padding:3px 7px;gap:4px}.portrait img{width:25px;height:31px}.portrait span{font-size:10px}.portrait em{display:none}.cancel{min-width:48px;min-height:40px;padding:4px;font-size:9px}.controls-row{display:contents}.unit-info{grid-column:1;grid-row:2;min-width:0;max-width:none;min-height:32px;height:32px;padding:5px 8px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-radius:11px;gap:5px;overflow:hidden}.unit-info>strong{font-size:11px;white-space:nowrap;max-width:80px;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.unit-info>span{display:none}.unit-bars{gap:5px}.stat b{font-size:8px}.stat meter{width:50px;height:3px;margin-top:2px}.actions{grid-column:2;grid-row:1/3;align-self:end;gap:6px;justify-content:flex-end}.action{flex:1;min-width:0;min-height:79px;padding:8px 5px;border-radius:22px;flex-direction:column}.action>span{font-size:10px}.action>small{font-size:8px}.action svg{width:24px;height:24px}#cameraFrame{right:calc(110px + env(safe-area-inset-right))}.toast{top:calc(var(--hud-top) + env(safe-area-inset-top));padding:7px 13px;font-size:11px;max-width:55%}dialog{max-height:calc(100dvh - 16px);padding:18px}.dialog-head{margin-bottom:10px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.game-header,.unit-info{pointer-events:auto}

/* Mobile game bag: inventory grid and the selected hero's equipment share one modal. */
.bag-dialog{width:min(980px,calc(100vw - 28px));padding:20px;background:linear-gradient(145deg,#173d31f7,#0b241cf7);border-color:#cfbd7a70;overflow:hidden}.bag-dialog .dialog-head{margin-bottom:14px}.bag-layout{display:grid;grid-template-columns:minmax(310px,1.08fr) minmax(300px,.92fr);gap:12px;max-height:min(660px,calc(100dvh - 190px))}.bag-panel{min-height:0;padding:14px;border:1px solid #cbd7b52e;border-radius:16px;background:linear-gradient(150deg,#1a4939dc,#113328e6);box-shadow:inset 0 1px #ffffff0c}.bag-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid #d6d7b22d}.bag-panel-head h3{font-size:17px;margin:2px 0 0}.bag-panel-head small{font-size:9px;letter-spacing:1.5px;color:#d9bd78}.bag-panel-head>strong{font-size:12px;color:#d9cf9b}.bag-panel-head label{display:flex;align-items:center;gap:7px;font-size:10px;color:#bcd2c1}.bag-panel-head select{min-height:36px!important;padding:6px 8px;font-size:12px!important}.inventory-panel{display:flex;flex-direction:column}.inventory-grid{display:grid;grid-template-columns:repeat(5,minmax(48px,1fr));gap:7px;padding:12px 0;overflow:auto;min-height:170px}.inventory-cell{position:relative;aspect-ratio:1;padding:3px;border-radius:11px;background:#153d31;border:2px solid #93a69a55;display:grid;place-items:center;min-height:52px}.inventory-cell:hover:not(:disabled){background:#225443}.inventory-cell.selected{box-shadow:0 0 0 2px #f5df9c,0 0 18px #e9c76044}.inventory-cell.empty{border:1px solid #9caf9e2c;background:#0d2c234f}.item-icon,.slot-icon,.detail-icon{display:block;width:100%;height:100%;object-fit:contain;border-radius:8px}.item-quantity{position:absolute;right:4px;bottom:2px;min-width:18px;padding:2px 4px;border-radius:8px;background:#071811e8;font-size:9px;text-align:center}.equipped-mark{position:absolute;left:4px;top:3px;width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:#f0cb75;color:#163026;font-weight:800;font-size:9px}.rarity-common{border-color:#aebbb0}.rarity-uncommon{border-color:#72d58b}.rarity-rare{border-color:#65aef2}.rarity-epic{border-color:#c988ff}.rarity-legendary{border-color:#ffbf53}.item-detail{margin-top:auto;min-height:112px;padding:12px;border:1px solid #dad2ad27;border-radius:13px;background:#0c2b21a6;font-size:11px;color:#b9cfbf}.item-detail-heading{display:grid;grid-template-columns:64px 1fr;gap:11px;align-items:center}.item-detail-heading strong{display:block;margin:3px 0 5px;font-size:14px;color:#f2efdb}.item-detail-heading p{line-height:1.5}.item-detail>.primary{width:100%;margin-top:10px;padding:8px}.rarity-text{font-size:9px}.equipment-panel{display:flex;flex-direction:column}.gear-portrait{display:flex;align-items:center;justify-content:center;gap:15px;min-height:112px;margin:10px 0;padding:8px;border-radius:14px;background:radial-gradient(circle,#37614c75,#0b2b2260)}.gear-portrait img{width:84px;height:96px;object-fit:contain;filter:drop-shadow(0 7px 7px #0006)}.portrait-fallback{width:72px;height:72px;display:grid;place-items:center;border-radius:50%;background:#294b3d;font-size:32px}.gear-portrait strong{display:block;font-size:16px}.gear-portrait small{display:block;margin-top:7px;color:#b6cbb9;font-size:10px}.bag-dialog .gear-slots{grid-template-columns:repeat(5,1fr);gap:7px}.bag-dialog .gear-slot{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:112px;padding:6px 4px;border-radius:11px;background:#12392dbd}.bag-dialog .gear-slot:disabled{opacity:.72}.bag-dialog .gear-slot small{font-size:9px;margin:4px 0;color:#d9bd78}.bag-dialog .gear-slot strong{font-size:9px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.slot-icon{width:52px;height:52px}.empty-slot-icon{width:52px;height:52px;display:grid;place-items:center;border:1px dashed #adc1af45;border-radius:10px;color:#89a393;font-size:22px}.bag-dialog .gear-stats{padding:11px 4px 8px;line-height:1.65;text-align:center}.danger-soft{margin-top:auto;background:#6d352f99;border-color:#d98d7c55}.bag-dialog>#backupBag{min-height:36px;padding:7px 12px;font-size:10px}.bag-dialog>#bagMessage{margin:9px 0 7px}
@media(max-width:720px){.bag-dialog{padding:14px;width:calc(100vw - 12px);max-height:calc(100dvh - 12px)}.bag-layout{grid-template-columns:1fr;max-height:calc(100dvh - 170px);overflow:auto}.inventory-grid{grid-template-columns:repeat(5,1fr);min-height:auto;overflow:visible}.item-detail{min-height:96px}.bag-dialog .gear-slots{grid-template-columns:repeat(5,1fr)}.gear-portrait{min-height:90px}.gear-portrait img{width:64px;height:72px}.bag-dialog .gear-slot{min-height:97px}.slot-icon,.empty-slot-icon{width:42px;height:42px}}
@media(max-width:390px){.bag-dialog{padding:10px}.bag-dialog .dialog-head h2{font-size:20px}.bag-panel{padding:10px}.inventory-grid{gap:5px}.inventory-cell{min-height:45px}.bag-dialog .gear-slots{gap:4px}.bag-dialog .gear-slot{min-height:88px;padding-inline:2px}.slot-icon,.empty-slot-icon{width:36px;height:36px}.bag-dialog .gear-slot strong{font-size:8px}}
.item-detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.item-detail-actions button{margin:0!important;padding:8px}.inventory-cell[draggable=true]{cursor:grab}.inventory-cell[draggable=true]:active{cursor:grabbing}.inventory-grid.moving .inventory-cell{border-style:dashed}.inventory-grid.moving .inventory-cell:hover{border-color:#ffe09b;background:#315b47}.inventory-cell.moving-source{opacity:.55;transform:scale(.93);box-shadow:0 0 0 2px #ffe09b}.move-item{background:#294d3e;color:#e9ddb2}
.bag-dialog{overflow:auto}.bag-layout{max-height:min(560px,calc(100dvh - 205px))}.inventory-grid{grid-auto-rows:66px;min-height:0;flex:1}.inventory-cell{aspect-ratio:auto;min-height:62px}@media(max-width:720px){.bag-layout{max-height:calc(100dvh - 170px)}.inventory-grid{grid-auto-rows:minmax(56px,auto);flex:none}.inventory-cell{aspect-ratio:1;min-height:45px}}

/* Player-wide bow equipment and author-authored bow options. */
.game-header{grid-template-columns:minmax(180px,1fr) minmax(210px,1.4fr) auto minmax(160px,.8fr) minmax(112px,.55fr) auto;grid-template-areas:"identity objective turn st bow tools"}
.player-bow-hud{grid-area:bow;pointer-events:auto;min-width:0;min-height:48px;display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #d9bd7866;border-radius:11px;background:linear-gradient(135deg,#3d3420d9,#17271fef);color:#f5e6b5;text-align:left;box-shadow:0 3px 12px #0004}
.player-bow-hud>span{font-size:20px}.player-bow-hud b,.player-bow-hud small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-bow-hud b{font-size:11px}.player-bow-hud small{margin-top:3px;font-size:9px;color:#d4bd83}
.user-bow-panel{margin:10px 0;padding:11px;border:1px solid #d8bb7650;border-radius:13px;background:linear-gradient(120deg,#4b3b2140,#12342790)}.user-bow-panel>small{display:block;margin-bottom:8px;color:#e4cc8e;font-size:10px}.equipped-bow-slot{width:100%;display:flex;align-items:center;gap:10px;text-align:left;padding:9px 11px;border:1px solid #dabc7d75;border-radius:10px;background:#102b22;color:#f5edcf}.equipped-bow-slot b{font-size:12px}.equipped-bow-slot small{margin-left:auto;color:#d8c17e;font-size:10px}.bow-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:7px}.bow-choice{min-width:0;padding:8px;text-align:left;background:#17382dbf;border-color:#c7d1ad35}.bow-choice:disabled{opacity:.55}.bow-choice strong,.bow-choice small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bow-choice strong{font-size:11px}.bow-choice small{margin-top:3px;color:#bdcdb1;font-size:9px}
.sprite-frame-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.sprite-frame-actions button{padding:7px;font-size:10px}
.bow-assembly-preview{display:block;width:100%;height:auto;max-height:180px;margin:8px 0;border:1px solid #d7c08244;border-radius:10px;background:#0d211a}
@media(max-width:1000px){.game-header{grid-template-columns:minmax(120px,1fr) minmax(180px,1.2fr) auto minmax(135px,.8fr) minmax(100px,.6fr) auto;grid-template-areas:"identity objective turn st bow tools"}}
@media(max-width:680px){.game-header{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"identity turn tools" "objective objective objective" "st bow bow"}.player-st-hud{justify-self:center;width:min(260px,50vw);min-width:145px}.player-bow-hud{justify-self:end;width:min(175px,42vw);min-height:38px;padding:5px 8px}.player-bow-hud>span{font-size:17px}.player-bow-hud b{font-size:10px}.player-bow-hud small{font-size:8px}.bow-choices{grid-template-columns:1fr}}

/* Item gestures keep scrolling available outside occupied cells. */
[data-item-id]{touch-action:none}.bag-drag-ghost{position:fixed!important;transform:translate(-50%,-50%);width:76px!important;height:86px!important;pointer-events:none!important;opacity:.85;z-index:10000}

/* v0.6.5 title and castle lobby. All visible artwork comes from the supplied PNG sheets. */
.front-screen{position:absolute;inset:0;z-index:100;overflow:hidden;background-repeat:no-repeat;background-position:center;background-size:cover;user-select:none;-webkit-user-select:none}
.title-screen{background-image:url("../assets/alkkagi-studio/main title.png")}
.title-logo,.title-heroes,.title-start{position:absolute;background-image:url("../assets/alkkagi-studio/main title object.png");background-repeat:no-repeat}
.title-logo{z-index:2;top:37.5%;left:50%;translate:-50% 0;width:min(930px,82vw);aspect-ratio:4.15;background-size:150.8% 472%;background-position:41% 3.5%;filter:drop-shadow(0 8px 12px #061a3b99)}
.title-heroes{z-index:1;left:50%;bottom:160 !important;translate:-50% 0;width:min(1520px,96vw);aspect-ratio:1448/486;background-size:100% auto;background-position:center bottom;pointer-events:none;filter:drop-shadow(0 10px 12px #0007)}
.title-start{z-index:3;left:50%;bottom:4.5%;translate:-50% 0;width:min(560px,68vw);aspect-ratio:3.5;padding:0;border:0;border-radius:0;background-color:transparent;background-size:258.6% 678.8%;background-position:3.9% 31.3%;filter:drop-shadow(0 8px 8px #0009);transition:transform .16s ease,filter .16s ease}
.title-start:hover:not(:disabled),.title-start:focus-visible{background-color:transparent;border:0;transform:scale(1.035);filter:drop-shadow(0 0 16px #fff0a9) drop-shadow(0 9px 10px #000b)}
.title-start:active{transform:scale(.975)}.title-start span,.lobby-sprite span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lobby-screen{background-image:url("../assets/alkkagi-studio/waiting room.png")}
.lobby-back{position:absolute;z-index:5;top:max(14px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));min-height:42px;padding:8px 15px;border:1px solid #ffe5a791;background:#102b57df;color:#ffe6a4;font-weight:800;box-shadow:0 5px 14px #0007}
.lobby-nav{position:absolute;z-index:4;top:4%;bottom:4%;width:min(306px,20vw);display:flex;flex-direction:column;justify-content:space-around;align-items:center;pointer-events:none}.lobby-nav-left{left:1.5%}.lobby-nav-right{right:1.5%}
.lobby-sprite{position:relative;width:100%;aspect-ratio:2.54;padding:0;border:0;border-radius:0;background-color:transparent;background-image:url("../assets/alkkagi-studio/waiting room button.png");background-repeat:no-repeat;background-size:213.12% 483.34%;pointer-events:auto;filter:drop-shadow(0 7px 5px #0009);transition:transform .14s ease,filter .14s ease}
.lobby-sprite:hover:not(:disabled),.lobby-sprite:focus-visible,.lobby-sprite.active{background-color:transparent;border:0;transform:scale(1.065);filter:drop-shadow(0 0 11px #fff0a1) drop-shadow(0 7px 5px #0009)}
.lobby-sprite:active{transform:scale(.97)}
.lobby-world{background-position:5% 5%}.lobby-character{background-position:98% 5%}.lobby-inventory{background-position:5% 35%}.lobby-shop{background-position:98% 35%}.lobby-ranking{background-position:5% 66%}.lobby-multi{background-position:98% 66%}.lobby-collection{background-position:5% 97%}.lobby-upgrade{background-position:98% 97%}
.lobby-panel{position:absolute;z-index:2;left:52%;top:50%;translate:-50% -50%;width:min(46vw,940px);height:min(90vh,833px);background-image:url("../assets/alkkagi-studio/waiting room button v2.png");background-repeat:no-repeat;background-size:395% 196%;filter:drop-shadow(0 16px 20px #0009)}
.panel-world{background-position:-1px -29px}.panel-character{background-position:33.333% 0}.panel-inventory{background-position:66.666% 0}.panel-shop{background-position:100% 0}.panel-ranking{background-position:0 104%}.panel-multi{background-position:33.333% 100%}.panel-collection{background-position:66% 101%}.panel-upgrade{background-position:101% 101%}
.lobby-world-map{position:absolute;left:7.2%;right:7.2%;top:24%;height:42%;overflow:hidden;border:2px solid #be8d39;border-radius:9px;background:#10291e;box-shadow:inset 0 0 20px #0008}
.lobby-map-board{position:absolute;inset:0;background-repeat:no-repeat;background-position:center;background-size:100% 100%}
.lobby-map-board .world-map-nodes{position:absolute;inset:0}.lobby-map-board .world-stage-node{transform:scale(.68)}.lobby-map-board .world-stage-node:hover,.lobby-map-board .world-stage-node:focus-visible{transform:scale(.78)}
.lobby-panel-hint{position:absolute;left:11%;right:11%;bottom:13%;padding:8px 12px;border-radius:10px;background:#281b0ed9;color:#ffe1a0;text-align:center;font-size:12px;font-weight:800;text-shadow:0 2px 3px #000}
.lobby-panel:not(.panel-world) .lobby-world-map,.lobby-panel:not(.panel-world) .lobby-panel-hint{display:none}
@media(max-width:900px){.lobby-nav{width:min(245px,22vw)}.lobby-panel{width:62vw}.lobby-map-board .world-stage-node{transform:scale(.55)}}
@media(max-width:680px){
  .title-logo{top:5%;width:96vw}.title-heroes{width:124vw}.title-start{bottom:6%;width:86vw}
  .lobby-back{top:max(6px,env(safe-area-inset-top));left:max(6px,env(safe-area-inset-left));min-height:34px;padding:5px 10px;font-size:10px}
  .lobby-panel{top:37%;width:96vw;height:68vh}.lobby-world-map{top:24%;height:42%}.lobby-panel-hint{bottom:12%;font-size:9px;padding:5px}
  .lobby-nav{left:2%!important;right:2%!important;top:auto;width:96%;height:auto;bottom:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;justify-content:stretch}.lobby-nav-left{bottom:10.5%}.lobby-nav-right{bottom:2%}
  .lobby-sprite{width:100%}.lobby-map-board .world-stage-node{transform:scale(.38)}.lobby-map-board .world-stage-node:hover,.lobby-map-board .world-stage-node:focus-visible{transform:scale(.44)}.lobby-map-board .world-stage-node>span:last-child{font-size:8px;padding:2px 5px}
}
@media(max-height:520px) and (orientation:landscape){.title-logo{top:1%;width:64vw}.title-heroes{width:84vw}.title-start{width:38vw;bottom:2%}.lobby-panel{width:58vw;height:96vh}.lobby-nav{top:1%;bottom:1%;width:20vw}.lobby-back{top:5px;left:5px}.lobby-panel-hint{bottom:10%;font-size:9px}.lobby-map-board .world-stage-node{transform:scale(.48)}}

/* Shared player stamina meter: the full gauge burns down until an action spends it. */
.player-st-hud{min-width:min(190px,18vw);padding:8px 12px;border:1px solid #a9c3aa45;border-radius:11px;background:#10271fd9;box-shadow:0 3px 12px #0004}.player-st-label{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:#d8e9d7}.player-st-label b{color:#ffe3a0}.player-st-track{height:7px;margin-top:6px;overflow:hidden;border-radius:8px;background:#07140f}.player-st-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#54d7a2,#c9ef87);transition:width .12s linear}.player-st-hud.burning{border-color:#ff875c;background:linear-gradient(100deg,#4e281c,#16251c);box-shadow:0 0 16px #ff5c344d;animation:st-pulse .35s infinite alternate}.player-st-hud.burning .player-st-track i{background:linear-gradient(90deg,#ffbd42,#ff573b);box-shadow:0 0 10px #ff6b39;animation:st-flame .24s infinite alternate}@keyframes st-pulse{to{filter:brightness(1.25)}}@keyframes st-flame{to{filter:brightness(1.55)}}.portrait.st-ready{border-color:#80ebbc;box-shadow:0 0 0 2px #72e3b455,0 0 14px #70dca766}.portrait.st-ready em{color:#a7f6c8}
.player-bow-hud.overdrive-ready,.player-skill-button.overdrive-ready{border-color:#ffe59a;box-shadow:0 0 0 2px #f9d76c66,0 0 23px #ffbe45b3;animation:overdrive-glow .65s ease-in-out infinite alternate}.player-skill-button.overdrive-ready{background:linear-gradient(#7a551e,#402a15);color:#fff0b5}.portrait.overdrive-target{border-color:#f6d779;box-shadow:0 0 0 2px #eac86088,0 0 13px #f6db7b}.portrait.overdrive-target em{color:#ffe9a2}@keyframes overdrive-glow{to{filter:brightness(1.3);box-shadow:0 0 0 3px #ffe081aa,0 0 31px #ffb632}}
@media(max-width:680px) and (orientation:portrait){.arena{--hud-bottom:240px}.actions{flex-wrap:wrap}.action{flex:1 1 calc(25% - 6px);min-height:57px}.action .rest-icon{font-size:22px;line-height:22px}}
@media(prefers-reduced-motion:reduce){.player-bow-hud.overdrive-ready,.player-skill-button.overdrive-ready{animation:none}}
@media(max-width:720px){.player-st-hud{position:relative;z-index:3;grid-area:st;justify-self:center;width:min(260px,54vw);min-width:150px;padding:5px 8px}.player-st-label{font-size:9px}.player-st-track{height:5px;margin-top:4px}}
/* Skill icons authored in Studio share the same space as built-in SVG icons. */
.unit-skill img{width:2rem;height:2rem;object-fit:contain;flex:none}
.ui-skinned{background-repeat:no-repeat!important;background-position:center!important;background-size:100% 100%!important}.ui-skinned>.ui-skin-binding{position:absolute;z-index:2;left:50%;bottom:8%;transform:translateX(-50%);max-width:92%;padding:.16em .45em;border-radius:.35em;background:#071321bf;color:#fff2c7;font-weight:800;text-align:center;text-shadow:0 2px 3px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.portrait .portrait-grade{display:inline-block;margin-right:4px;padding:1px 4px;border-radius:4px;font-size:9px;line-height:1.2;color:#fff;background:#5a6570}.portrait .portrait-grade.grade-R{background:#286caa}.portrait .portrait-grade.grade-SR{background:#8150b1}.portrait .portrait-grade.grade-SSR{background:#a96b18;box-shadow:0 0 5px #f0c76a}
