:root{color-scheme:dark;--ink:#101d25;--panel:#101d25ed;--line:#53616a;--gold:#d5bb83;--muted:#9aabb4;--blue:#77c2e9;--safe-top:env(safe-area-inset-top,0px);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#edf0df;background:#091317}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}button,input,select{font:inherit}button{color:inherit;border:1px solid #56616a;border-radius:4px;background:linear-gradient(#263640,#182731);cursor:pointer;min-height:40px;padding:8px 12px;touch-action:manipulation;transition:filter .15s,border-color .15s}button:hover{filter:brightness(1.18);border-color:#a6bec8}button:focus-visible{outline:2px solid #e4c68c;outline-offset:2px}button:disabled{opacity:.4;cursor:default;filter:saturate(.4)}button.active,button.primary{background:linear-gradient(#315d70,#1f4153);border-color:#83c5e1;box-shadow:inset 0 0 10px #79c6ef18}.hidden{display:none!important}#game{position:fixed;inset:0;overflow:hidden;background:#091317}canvas#battlefield{width:100%;height:100%;display:block;touch-action:none;outline:none}header.topbar{position:absolute;left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right));top:max(12px,var(--safe-top));display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.brand{display:flex;align-items:center;gap:12px;text-shadow:0 2px 8px #000}.sigil{font:36px Georgia,serif;color:var(--gold);display:grid;place-items:center;width:47px;height:51px;border:1px solid #b7a16e;clip-path:polygon(0 0,100% 0,100% 80%,50% 100%,0 80%);background:#10212ae6}.brand h1{font:25px Georgia,serif;letter-spacing:5px;margin:0;color:#eee3c6}.subtitle{font-size:9px;letter-spacing:2px;color:#c1c7b4}.round{display:grid;grid-template-columns:9px 1fr;column-gap:8px;background:#0c1922e8;border:1px solid #7b88715e;padding:9px 18px;text-align:center;border-radius:4px;backdrop-filter:blur(10px)}.round strong{font-size:12px;letter-spacing:2px}.round small{grid-column:2;font-size:8px;letter-spacing:1px;color:#a0becb;padding-top:3px}#phaseDot{width:5px;height:5px;background:#94c3a9;border-radius:50%;margin-top:6px;box-shadow:0 0 9px #94c3a9}.tools{display:flex;gap:6px;pointer-events:auto}.tools button{background:#0e1b25dc;font-size:13px;min-width:40px}.mission{position:absolute;top:max(87px,calc(var(--safe-top) + 70px));left:max(20px,env(safe-area-inset-left));display:grid;grid-template-columns:16px 1fr;column-gap:7px;text-shadow:0 2px 5px #000;pointer-events:none;font:14px Georgia,serif;color:#e2dcc4}.mission small{grid-column:2;font:10px system-ui;color:#b1c1c1;margin-top:4px}.goldDiamond{color:var(--gold);font-size:10px;padding-top:3px}.battleDock{position:absolute;bottom:max(14px,env(safe-area-inset-bottom));left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));display:grid;grid-template-columns:260px 1fr;gap:12px;align-items:end;pointer-events:none}.heroCard{padding:12px;display:flex;gap:12px;align-items:center;background:var(--panel);border:1px solid #7d8b895e;box-shadow:0 8px 30px #0008;min-height:112px;pointer-events:auto;border-radius:5px}.heroCard img{width:70px;height:79px;object-fit:cover;border:1px solid #9c8c655e;background:#14232e;image-rendering:pixelated}.heroInfo{flex:1;min-width:0}.heroInfo h3{font:21px Georgia,serif;margin:0 0 2px;color:#f1e9d5}.className{font-size:9px;color:#a7bbc5;white-space:nowrap}.level{font-size:9px;color:#d4bc86;margin:4px 0 7px}.meter{height:5px;background:#070e15;border:1px solid #32414a;margin-top:4px;position:relative;border-radius:1px}.meter i{display:block;height:100%;background:linear-gradient(90deg,#478779,#9bc783)}.meter.mana i{background:linear-gradient(90deg,#30608f,#70bad8)}.meterLabel{font-size:9px;display:flex;justify-content:space-between;color:#c6d3cd;margin:3px 0}.statusText{font-size:9px;color:#dac59c;margin-top:5px;line-height:1.4;max-height:26px;overflow:hidden}.commandArea{border:1px solid #64747d6b;background:var(--panel);box-shadow:0 8px 30px #0008;border-radius:5px;padding:9px 12px;pointer-events:auto;max-width:650px}.activationLine{display:flex;justify-content:space-between;font-size:10px;color:#a4b5bd;margin-bottom:7px;letter-spacing:.4px}.activationLine span:first-child{color:#d5c293}.actions{display:flex;gap:7px}.actions button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;padding:8px 9px;font-size:11px;white-space:nowrap;min-height:46px;position:relative}.actions kbd{position:absolute;right:4px;top:3px;font:7px system-ui;color:#7c929f}.actionIcon{font:21px Georgia,serif;color:#c9dce1}.actions .endButton{flex:1.4;border-color:#a2926d;background:linear-gradient(#665b3e,#3c3a2d);color:#eee2bd}.endButton .actionIcon{color:#dfc58b}.actionHint{font-size:9px;color:#92a8b3;margin-top:7px;min-height:12px}.party{grid-column:1/-1;display:flex;justify-content:center;gap:7px;position:absolute;left:50%;bottom:123px;transform:translateX(-50%);pointer-events:auto}.party button{width:65px;height:74px;padding:0;position:relative;background:#0e1b24e8;border:1px solid #7c8a836b;overflow:hidden;border-radius:4px;min-height:0}.party img{position:absolute;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;left:0;top:0}.party .miniName{position:absolute;bottom:5px;left:0;right:0;font-size:8px;letter-spacing:.3px;text-shadow:0 1px 4px #000;background:#0a1721b3}.party .miniHP{position:absolute;bottom:0;left:0;height:3px;background:#83b789}.party .used{position:absolute;top:2px;right:4px;background:#09202bd9;border-radius:20px;font-size:11px;color:#e2d3a5}.party button.active{border-color:#aad7ec;box-shadow:0 0 15px #80bfe52b}.party button.done img{filter:saturate(.3) brightness(.65)}.party button.dead img{filter:grayscale(1) brightness(.4)}.cameraTools{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:160px;display:flex;gap:5px}.cameraTools button{background:#10222be3;width:36px;height:36px;min-height:36px;padding:0;font-size:20px}.panel{position:absolute;right:max(18px,env(safe-area-inset-right));top:max(78px,calc(var(--safe-top) + 64px));bottom:154px;width:340px;z-index:5;background:#101d26f5;border:1px solid #7b8b8c8c;border-radius:5px;box-shadow:0 10px 45px #0008;display:flex;flex-direction:column;backdrop-filter:blur(14px)}.panelHeading{padding:13px 15px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #6c7e7e4a}.panelHeading h2{font:21px Georgia,serif;color:#e2d5b7;margin:1px 0 0}.panelHeading small{font-size:8px;letter-spacing:1.8px;color:#9cabb0}.panelHeading button{border:0;background:none;padding:0;min-width:36px;font-size:23px;min-height:36px}.panel #skills{overflow-y:auto;padding:9px;overscroll-behavior:contain;touch-action:pan-y}.skill{width:100%;display:grid;grid-template-columns:37px 1fr;gap:10px;margin-bottom:6px;text-align:left;background:#1b2b35;padding:10px;border-color:#52656b6b;min-height:77px}.skillIcon{display:grid;place-items:center;font:24px Georgia;color:#d0b48e;border:1px solid #8a789466;width:36px;height:38px;background:radial-gradient(#75517c55,#17232e)}.skill b{font:14px Georgia,serif;color:#e4dcc7;display:block}.skill small{font-size:9px;line-height:1.5;color:#8eb8cd;display:block;margin:3px 0}.skill p{font-size:9px;line-height:1.5;margin:3px 0 0;color:#b8c4c8}.skill .unavailable{color:#efad8f}.skill.unusable{opacity:.52}.targetCard{position:absolute;top:85px;left:50%;transform:translateX(-50%);background:#13212bf0;border:1px solid #89978d88;padding:11px 15px;border-radius:5px;min-width:210px;max-width:320px;z-index:2;box-shadow:0 6px 20px #0006;font-size:11px}.targetCard h3{font:17px Georgia,serif;margin:0 0 3px;color:#e1d2b1}.targetCard small{font-size:9px;color:#a1b5bf}.targetCard p{margin:7px 0 0;color:#d4d5bd;font-size:10px}.confirmBar{position:absolute;bottom:222px;left:50%;transform:translateX(-50%);display:flex;gap:8px;align-items:center;max-width:90%;background:#12222bf5;border:1px solid #9fa68b88;border-radius:5px;padding:9px;z-index:8;box-shadow:0 5px 25px #000a}.confirmBar #confirmText{font-size:11px;max-width:320px;color:#dbd6bd}.confirmBar button{font-size:11px;min-height:40px}.logPanel{width:350px;z-index:7}.logPanel #logContent{overflow-y:auto;padding:8px 15px;touch-action:pan-y}.logEntry{font-size:10px;line-height:1.6;padding:7px 0;border-bottom:1px solid #40535c5e;color:#bdc9ca}.logEntry small{color:#c4b387;font-size:8px;display:block;letter-spacing:1px}#toast{position:absolute;top:23%;left:50%;transform:translateX(-50%);padding:9px 17px;max-width:80%;background:#10222bef;border:1px solid #73898888;color:#e9d5af;border-radius:4px;pointer-events:none;font-size:12px;opacity:0;transition:opacity .2s;z-index:15}#toast.show{opacity:1}.modal{position:absolute;inset:0;display:grid;place-items:center;background:#030d15c7;z-index:20;backdrop-filter:blur(7px);padding:22px}.modalContent{background:linear-gradient(#192c37,#101c26);border:1px solid #9b966d;width:500px;max-width:100%;max-height:95%;overflow-y:auto;padding:28px;border-radius:7px;box-shadow:0 15px 100px #000b;touch-action:pan-y}.modalContent h2{font:27px Georgia,serif;color:#e5d3a7;margin:0 0 15px}.modalContent p,.modalContent li{font-size:12px;line-height:1.7;color:#c6d1cf}.modalContent ul{padding-left:18px}.modalContent label{display:block;font-size:12px;color:#d1d5c7;margin:15px 0}.modalContent select{padding:8px;background:#233742;border:1px solid #687d83;border-radius:4px;margin-left:10px}.modalContent button{margin-top:12px;margin-right:7px;font-size:12px}.eyebrow{font-size:9px!important;letter-spacing:2px;color:#bca477!important}.resultTitle{font-size:40px!important}.resultStats{display:flex;gap:20px;margin:20px 0}.resultStats div{font:26px Georgia;color:#e2cd9d}.resultStats small{display:block;font:9px system-ui;color:#a8b8bf;margin-top:6px}#loading{position:absolute;inset:0;z-index:30;background:#0c1920;display:grid;place-content:center;text-align:center;color:#d8c79f}#loading .sigil{margin:auto;width:64px;height:70px;font-size:45px}#loading h2{font:21px Georgia;letter-spacing:3px;margin-top:28px}#loading p{font-size:12px;color:#92a8b1}
@media(min-width:1150px){.battleDock{grid-template-columns:276px 650px;justify-content:center}.party{bottom:130px}.heroCard{min-height:119px}.mission{left:28px}}
@media(max-width:900px),(max-height:550px){header.topbar{left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));top:max(7px,var(--safe-top));gap:8px}.brand{gap:7px}.brand .sigil{width:30px;height:35px;font-size:26px}.brand h1{font-size:17px;letter-spacing:3px}.subtitle{font-size:6px;letter-spacing:1px}.round{padding:6px 11px}.round strong{font-size:9px;letter-spacing:1px}.round small{font-size:6px}.tools{gap:4px}.tools button{min-height:34px;padding:5px 8px;font-size:11px;min-width:34px}.mission{top:max(56px,calc(var(--safe-top) + 48px));left:max(12px,env(safe-area-inset-left));font-size:11px}.mission small{font-size:8px;margin-top:2px}.battleDock{left:max(9px,env(safe-area-inset-left));right:max(9px,env(safe-area-inset-right));bottom:max(7px,env(safe-area-inset-bottom));grid-template-columns:195px 1fr;gap:7px}.heroCard{padding:7px;gap:8px;min-height:86px}.heroCard img{width:51px;height:60px}.heroInfo h3{font-size:17px}.className{font-size:8px}.level{font-size:8px;margin:2px 0 4px}.meterLabel{font-size:8px;margin:2px 0}.meter{height:4px;margin-top:3px}.statusText{font-size:7px;margin-top:3px;max-height:19px}.commandArea{padding:7px 8px}.activationLine{font-size:8px;margin-bottom:4px}.actions{gap:4px}.actions button{min-height:39px;font-size:9px;padding:6px 5px;gap:4px}.actions kbd{display:none}.actionIcon{font-size:18px}.actionHint{font-size:8px;margin-top:4px;min-height:10px}.party{bottom:96px;gap:5px;left:25%;}.party button{width:43px;height:49px}.party .miniName{font-size:6px}.cameraTools{right:max(10px,env(safe-area-inset-right));bottom:111px;gap:4px}.cameraTools button{width:33px;height:33px;min-height:33px;font-size:18px}.panel{top:max(52px,calc(var(--safe-top) + 42px));bottom:103px;width:290px;right:max(9px,env(safe-area-inset-right))}.panelHeading{padding:6px 10px}.panelHeading h2{font-size:17px}.panelHeading small{font-size:7px}.skill{padding:7px;gap:7px;margin-bottom:5px;min-height:70px}.skillIcon{width:31px;height:33px;font-size:21px}.skill b{font-size:12px}.skill small{font-size:8px;margin:2px 0}.skill p{font-size:8px}.targetCard{top:55px;font-size:10px;padding:8px 11px;max-width:260px}.targetCard h3{font-size:15px}.confirmBar{bottom:157px;padding:6px;gap:6px}.confirmBar #confirmText{font-size:9px;max-width:220px}.confirmBar button{font-size:10px;min-height:36px;padding:6px 9px}.modalContent{padding:20px}.modalContent h2{font-size:23px}.modalContent p,.modalContent li{font-size:11px}}
@media(max-width:560px) and (orientation:portrait){.battleDock{grid-template-columns:1fr;gap:6px}.heroCard{min-height:76px;max-width:235px;padding:6px}.heroCard img{width:47px;height:54px}.commandArea{max-width:none}.party{left:auto;right:0;bottom:99px;transform:none;display:grid;grid-template-columns:repeat(3,35px);gap:4px}.party button{width:35px;height:39px}.cameraTools{bottom:213px}.mission{top:64px}.round{margin-left:auto}.round small{display:none}.brand .subtitle{display:none}.brand h1{font-size:15px;letter-spacing:2px}.tools button{min-width:30px;padding:5px}.panel{bottom:207px;width:calc(100% - 20px);top:65px}.targetCard{top:106px;left:10px;transform:none;max-width:210px}.confirmBar{bottom:212px;width:calc(100% - 20px);max-width:none}.confirmBar #confirmText{flex:1}.actions button{min-height:44px}.actions .endButton span:last-of-type{font-size:8px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
/* v0.2.1: individual turn strip, side rails and explicit selection controls. */
html,body{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}
#game,#game *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#game img{-webkit-user-drag:none;user-drag:none;pointer-events:none}
button>span,button>img,button>kbd{pointer-events:none}
select,input{font-size:16px}
.topbar{justify-content:space-between;left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));top:max(9px,env(safe-area-inset-top));height:43px}
.round{margin:0;min-width:158px;max-width:45%;text-align:left;padding:7px 12px;touch-action:none}
.round small{max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mission{left:190px;top:max(17px,calc(env(safe-area-inset-top) + 8px));display:flex;align-items:center;gap:10px;font:12px Georgia,serif;touch-action:none;max-width:calc(100% - 350px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mission small{font:9px system-ui;margin:0;color:#9cb1b6}
.turnOrder{position:absolute;top:max(60px,calc(env(safe-area-inset-top) + 51px));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));height:76px;display:flex;align-items:stretch;gap:6px;padding:5px 8px;background:linear-gradient(90deg,#101f28ed,#10202bdd);border:1px solid #75838373;border-radius:5px;overflow-x:auto;overflow-y:hidden;touch-action:pan-x;overscroll-behavior:contain;scrollbar-width:none;z-index:3}
.turnOrder::-webkit-scrollbar,.party::-webkit-scrollbar{display:none}
.turnCard{position:relative;flex:0 0 70px;min-width:0;min-height:0;padding:0;overflow:hidden;border:1px solid #6e9aae88;border-bottom:3px solid #73b8d3;border-radius:4px;background:#162933}
.turnCard.enemy{border-color:#9c685c88;border-bottom-color:#cc7d70}
.turnCard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.turnCard.done{opacity:.4;filter:saturate(.5)}
.turnCard.current{border:2px solid #e8c881;box-shadow:0 0 12px #e2bf6740;background:#33434b}
.turnCard.attached{flex-basis:54px;border-style:dashed}
.turnStat{position:absolute;top:1px;left:2px;font:bold 9px system-ui;color:#e7dfbf;padding:1px 3px;border-radius:2px;background:#0c1824d9}
.turnName{position:absolute;bottom:0;left:0;right:0;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 2px;background:#0b1723cc;color:#d8e3db;text-shadow:0 1px 4px #000}
.nowFlag{position:absolute;top:1px;right:2px;font:bold 7px system-ui;color:#f4d493;background:#17242bca;padding:1px 2px}
.turnDone{position:absolute;right:3px;top:2px;font-size:12px;color:#d2c596}
.battleDock{grid-template-columns:260px minmax(0,650px);justify-content:center;bottom:max(11px,env(safe-area-inset-bottom));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));gap:10px}
.commandArea{position:relative;max-width:none;padding-top:8px}
.selectionTools{display:flex;justify-content:flex-end;gap:5px;margin-bottom:7px}
.selectionTools button{min-height:30px;padding:4px 10px;font-size:10px;border-color:#697c84;background:#20333f}
.selectionTools button:first-child{color:#dfc6a4}
.selectionTools button:disabled{opacity:.32}
.party{position:fixed!important;left:max(12px,env(safe-area-inset-left))!important;right:auto!important;top:50%!important;bottom:auto!important;transform:translateY(-40%)!important;display:flex!important;flex-direction:column;gap:6px;width:62px;max-height:calc(100dvh - 280px);overflow-y:auto;overflow-x:hidden;touch-action:pan-y;overscroll-behavior:contain;padding:3px;scrollbar-width:none}
.party button{flex:0 0 64px;width:56px;height:64px;min-height:0}
.party .miniName{font-size:8px}
.cameraTools{position:absolute;right:max(12px,env(safe-area-inset-right));top:50%;bottom:auto;transform:translateY(-30%);display:block;padding:7px 6px;border:1px solid #7d8d897a;border-radius:8px;background:#0d1d27e8;box-shadow:0 5px 18px #0005;z-index:4;transition:transform .2s}
.cameraControls{display:flex;flex-direction:column;gap:6px}
.cameraControls button{width:39px;height:39px;min-height:39px;font-size:23px;background:#213642}
.cameraTools .cameraToggle{position:absolute;left:-24px;top:calc(50% - 23px);width:25px;min-height:46px;height:46px;border-radius:7px 0 0 7px;border-right:0;padding:0;font-size:24px;background:#18303c}
.cameraTools.folded{transform:translateX(64px) translateY(-30%)}
.cameraTools.folded .cameraToggle{transform:rotate(180deg);border-radius:0 7px 7px 0}
.panel{top:max(146px,calc(env(safe-area-inset-top) + 137px));bottom:172px;right:max(78px,calc(env(safe-area-inset-right) + 64px));width:330px}
.targetCard{top:max(147px,calc(env(safe-area-inset-top) + 138px));left:90px;transform:none;max-width:300px;pointer-events:none}
.confirmBar{bottom:190px}
.gridSetting{display:flex!important;gap:10px;align-items:center}.gridSetting input{width:20px;height:20px;accent-color:#8ebfd2}
@media(max-width:900px),(max-height:550px){
 .topbar{height:34px;top:max(6px,env(safe-area-inset-top));left:max(9px,env(safe-area-inset-left));right:max(9px,env(safe-area-inset-right))}
 .round{min-width:128px;max-width:48%;padding:5px 9px}.round small{display:block;font-size:6px}.round strong{font-size:9px}.tools button{min-height:34px}
 .mission{left:155px;top:max(15px,calc(env(safe-area-inset-top) + 8px));max-width:calc(100% - 285px);font-size:10px}.mission small{display:none}
 .turnOrder{top:max(47px,calc(env(safe-area-inset-top) + 40px));height:58px;padding:4px 6px;gap:5px;left:max(9px,env(safe-area-inset-left));right:max(9px,env(safe-area-inset-right))}
 .turnCard{flex-basis:49px}.turnCard.attached{flex-basis:39px}.turnStat{font-size:7px}.turnName{font-size:6px}.nowFlag{font-size:6px;right:0;padding:1px}
 .battleDock{grid-template-columns:190px minmax(0,1fr);left:max(9px,env(safe-area-inset-left));right:max(9px,env(safe-area-inset-right));bottom:max(7px,env(safe-area-inset-bottom));gap:7px}
 .heroCard{min-height:87px}.heroCard img{width:49px;height:59px}.heroInfo h3{font-size:17px}.heroInfo .level{font-size:7px}.commandArea{padding:6px 7px}
 .selectionTools{gap:4px;margin-bottom:4px}.selectionTools button{min-height:27px;padding:3px 9px;font-size:9px}.actions button{min-height:40px}.actionHint{font-size:8px}
 .party{width:49px;left:max(7px,env(safe-area-inset-left))!important;gap:4px;top:calc(50% + 2px)!important;max-height:calc(100dvh - 215px);transform:translateY(-42%)!important;padding:2px}.party button{width:43px;height:47px;flex-basis:47px}.party .miniName{font-size:6px}
 .cameraTools{right:max(9px,env(safe-area-inset-right));padding:5px 4px;transform:translateY(-20%)}.cameraControls{gap:5px}.cameraControls button{width:35px;height:35px;min-height:35px;font-size:21px}.cameraTools.folded{transform:translateX(57px) translateY(-20%)}
 .panel{top:max(112px,calc(env(safe-area-inset-top) + 105px));bottom:127px;right:max(64px,calc(env(safe-area-inset-right) + 53px));width:285px}.panelHeading{padding:4px 8px}.panelHeading h2{font-size:15px}.skill{min-height:66px;padding:6px}.panelHeading button{min-height:28px}
 .targetCard{top:max(112px,calc(env(safe-area-inset-top) + 105px));left:max(64px,calc(env(safe-area-inset-left) + 53px));max-width:240px;padding:7px 9px}.targetCard h3{font-size:14px}.targetCard p{font-size:9px;margin-top:5px}
 .confirmBar{bottom:134px;max-width:calc(100% - 130px)}
}
@media(max-width:560px) and (orientation:portrait){
 .mission{display:none}.round{max-width:59%;min-width:145px}.round small{display:block}.turnOrder{height:64px}.turnCard{flex-basis:53px}.turnCard.attached{flex-basis:43px}
 .battleDock{grid-template-columns:1fr;gap:5px}.heroCard{max-width:235px;min-height:77px;padding:7px}.heroCard img{width:46px;height:53px}.commandArea{padding:7px}.selectionTools{margin-bottom:5px}.selectionTools button{min-height:29px;font-size:9px}.actions button{min-height:44px}.actions .endButton span:last-of-type{font-size:8px}
 .party{width:51px;max-height:calc(100dvh - 350px);top:calc(50% - 35px)!important;transform:translateY(-35%)!important;gap:6px}.party button{width:45px;height:53px;flex-basis:53px}
 .cameraTools{top:calc(50% - 30px);transform:translateY(-20%)}.cameraTools.folded{transform:translateX(57px) translateY(-20%)}
 .panel{left:62px;right:62px;width:auto;top:119px;bottom:230px}.targetCard{top:119px;left:63px;max-width:calc(100% - 125px);min-width:0}.confirmBar{bottom:240px;max-width:calc(100% - 30px);width:calc(100% - 30px)}
}
@media(max-height:420px) and (orientation:landscape){.heroCard{min-height:85px}.party{max-height:calc(100dvh - 213px)}.turnOrder{height:53px}.turnCard{flex-basis:47px}.panel{top:105px;bottom:127px}.targetCard{top:105px}.selectionTools button{min-height:25px}.commandArea{padding-top:4px}.selectionTools{margin-bottom:3px}}
/* v0.2.2: four visible enemies; noninteractive arrows; camera beneath. */
.rightRail{--enemy-row:64px;--enemy-gap:6px;position:absolute;right:max(12px,env(safe-area-inset-right));top:max(148px,calc(env(safe-area-inset-top) + 139px));display:flex;flex-direction:column;align-items:flex-end;gap:10px;width:64px;z-index:4}
.enemyRail{width:64px;padding:4px 3px;background:#0d1d27e8;border:1px solid #8f756980;border-radius:6px;box-shadow:0 5px 18px #0005}
.enemyScrollArrow{display:block;height:13px;line-height:13px;text-align:center;font-size:15px;color:#ebc88a;opacity:.18;pointer-events:none;user-select:none}
.enemyScrollArrow.available{opacity:.95;text-shadow:0 0 5px #d4a76155}
.enemyList{height:calc(var(--enemy-row)*4 + var(--enemy-gap)*3);display:grid;grid-auto-rows:var(--enemy-row);gap:var(--enemy-gap);overflow-y:auto;overflow-x:hidden;touch-action:pan-y;overscroll-behavior:contain;scrollbar-width:none;scroll-snap-type:y proximity}
.enemyList::-webkit-scrollbar{display:none}
.enemyPortrait{width:100%;height:var(--enemy-row);min-height:0;position:relative;overflow:hidden;padding:0;background:#172731;border:1px solid #a4786b99;border-radius:4px;scroll-snap-align:start}
.enemyPortrait img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.enemyPortrait .miniName{position:absolute;bottom:4px;left:0;right:0;font-size:7px;padding:1px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#0b1724cf;text-shadow:0 1px 4px #000}
.enemyPortrait .miniHP{position:absolute;bottom:0;left:0;height:3px;background:#ce8172}
.enemyPortrait.inspected{border:2px solid #e69a86;box-shadow:inset 0 0 8px #cd786133}
.enemyPortrait.current{border:2px solid #e6c47c}
.rightRail .cameraTools{position:relative;top:auto;right:auto;bottom:auto;transform:none;flex:none;transition:transform .2s}
.rightRail .cameraTools.folded{transform:translateX(64px)}
@media(max-width:900px),(max-height:550px){.rightRail{--enemy-row:clamp(32px,calc((100dvh - 560px)/4),56px);--enemy-gap:5px;right:max(9px,env(safe-area-inset-right));top:max(114px,calc(env(safe-area-inset-top) + 107px));width:50px;gap:8px}.enemyRail{width:50px;padding:3px 2px}.enemyScrollArrow{height:11px;line-height:11px;font-size:13px}.enemyPortrait .miniName{font-size:6px}.rightRail .cameraTools.folded{transform:translateX(57px)}}
@media(max-width:560px) and (orientation:portrait){.rightRail{--enemy-row:clamp(32px,calc((100dvh - 560px)/4),64px);top:120px}.rightRail .cameraTools{transform:none}.rightRail .cameraTools.folded{transform:translateX(57px)}}
@media(max-height:660px) and (orientation:portrait){.rightRail{--enemy-row:32px;--enemy-gap:4px;gap:6px}.rightRail .cameraTools{padding:4px}.rightRail .cameraControls{gap:4px}.rightRail .cameraControls button{width:30px;height:29px;min-height:29px;font-size:19px}}
@media(max-height:600px) and (orientation:landscape){.rightRail{--enemy-row:40px;--enemy-gap:4px;top:max(108px,calc(env(safe-area-inset-top) + 101px));width:106px;gap:6px}.enemyRail{width:106px;padding:3px}.enemyList{grid-template-columns:repeat(2,minmax(0,1fr));height:calc(var(--enemy-row)*2 + var(--enemy-gap))}.enemyScrollArrow{height:9px;line-height:9px;font-size:11px}.rightRail .cameraTools{width:106px;padding:4px}.rightRail .cameraControls{flex-direction:row;gap:4px}.rightRail .cameraControls button{width:30px;height:32px;min-height:32px;font-size:20px}.rightRail .cameraTools.folded{transform:translateX(115px)}.battleDock{right:max(125px,calc(env(safe-area-inset-right) + 115px))}.panel{right:max(125px,calc(env(safe-area-inset-right) + 115px))}}
/* v0.2.3 — landscape only. All portrait rules above remain unchanged. */
@media (orientation:landscape){
 #game.landscapeHUD{--land-safe-left:env(safe-area-inset-left,0px);--land-safe-right:env(safe-area-inset-right,0px);--land-safe-top:env(safe-area-inset-top,0px);--land-safe-bottom:env(safe-area-inset-bottom,0px)}
 .landscapeHUD .topbar{left:var(--land-topbar-x);top:var(--land-topbar-y);right:auto;width:var(--land-topbar-w);height:var(--land-topbar-h);gap:0;z-index:3}
 .landscapeHUD .round{width:96px;min-width:96px;max-width:96px;height:100%;margin:0;padding:4px 7px;column-gap:5px;text-align:left;overflow:hidden}
 .landscapeHUD .round strong{font-size:9px;letter-spacing:1px;white-space:nowrap}.landscapeHUD .round small{display:block;max-width:72px;font-size:6px;letter-spacing:.3px;padding-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .landscapeHUD #phaseDot{margin-top:4px;width:4px;height:4px}.landscapeHUD .mission{display:none}
 .landscapeHUD .tools{margin-left:auto;gap:4px}.landscapeHUD .tools button{width:32px;min-width:32px;height:var(--land-topbar-h);min-height:0;padding:2px 4px;font-size:10px}.landscapeHUD #helpButton{display:none}
 .landscapeHUD .turnOrder{position:absolute;left:var(--land-queue-x);top:var(--land-queue-y);right:auto;bottom:auto;width:var(--land-queue-w);height:var(--land-queue-h);padding:2px 3px;gap:4px;z-index:4;scroll-behavior:smooth}
 .landscapeHUD .turnCard{flex:0 0 39px;min-height:0;border-bottom-width:2px}.landscapeHUD .turnCard.attached{flex-basis:32px}.landscapeHUD .turnName{display:none}.landscapeHUD .turnStat{font-size:6px;padding:0 2px}.landscapeHUD .nowFlag{font-size:5px;padding:0 1px;top:1px;right:0}.landscapeHUD .turnDone{font-size:9px}
 .landscapeHUD .battleDock{left:var(--land-dock-x);top:var(--land-dock-y);right:auto;bottom:auto;width:var(--land-dock-w);height:var(--land-dock-h);display:grid;grid-template-columns:var(--land-info-width) minmax(0,1fr);gap:5px;justify-content:stretch;align-items:stretch;z-index:4}
 .landscapeHUD .heroCard{height:100%;min-height:0;max-width:none;padding:4px 6px;gap:0;overflow:hidden}.landscapeHUD .heroCard>img{display:none}.landscapeHUD .heroInfo h3{font-size:14px;line-height:16px;margin:0}.landscapeHUD .heroInfo .className,.landscapeHUD .heroInfo .level{display:none}.landscapeHUD .heroInfo .meterLabel{font-size:7px;line-height:8px;margin:1px 0}.landscapeHUD .heroInfo .meter{height:3px;margin:0}.landscapeHUD .heroInfo .statusText{font-size:7px;line-height:8px;max-height:8px;margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .landscapeHUD .commandArea{height:100%;min-width:0;max-width:none;padding:3px 5px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:11px minmax(0,1fr);column-gap:4px;row-gap:2px;overflow:hidden}
 .landscapeHUD .activationLine{grid-column:1/-1;grid-row:1;margin:0;font-size:7px;line-height:10px;letter-spacing:0;min-width:0}.landscapeHUD #activationLabel{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.landscapeHUD #movementLabel{white-space:nowrap;padding-left:4px}
 .landscapeHUD .actions{grid-column:1;grid-row:2;gap:4px;min-width:0;min-height:0}.landscapeHUD .actions button{height:100%;min-height:0;min-width:0;padding:2px 4px;font-size:9px;gap:3px;line-height:1.1}.landscapeHUD .actions .actionIcon{font-size:17px}.landscapeHUD .actions kbd{display:none}.landscapeHUD .actions .endButton{flex:1.35}.landscapeHUD .actions .endButton span:last-of-type{font-size:8px}.landscapeHUD .actionHint{display:none}
 .landscapeHUD .selectionTools{grid-column:2;grid-row:2;display:flex;align-items:stretch;gap:3px;margin:0}.landscapeHUD .selectionTools button{width:29px;min-width:29px;min-height:0;height:100%;padding:0;font-size:0}.landscapeHUD #cancelAction::after{content:'×';font-size:22px}.landscapeHUD #deselectButton::after{content:'○';font-size:21px}
 .landscapeHUD .party{position:fixed!important;left:var(--land-allies-x)!important;top:var(--land-allies-y)!important;right:auto!important;bottom:auto!important;transform:none!important;width:var(--land-allies-w);height:var(--land-allies-h);max-height:none;gap:3px;padding:0;display:flex!important;flex-direction:column;justify-content:center}
 .landscapeHUD .party button{flex:0 0 var(--land-ally-row);width:100%;height:var(--land-ally-row);min-height:0}.landscapeHUD .party .miniName{font-size:6px;bottom:3px}
 .landscapeHUD .rightRail{left:var(--land-right-x);top:var(--land-right-y);right:auto;bottom:auto;width:var(--land-right-w);gap:6px;align-items:stretch;--enemy-row:var(--land-enemy-row);--enemy-gap:4px}
 .landscapeHUD .enemyRail{width:100%;padding:3px}.landscapeHUD .enemyScrollArrow{height:10px;line-height:10px;font-size:11px}.landscapeHUD .enemyList{grid-template-columns:repeat(2,minmax(0,1fr));height:calc(var(--land-enemy-row)*2 + 4px);grid-auto-rows:var(--land-enemy-row);gap:4px}.landscapeHUD .enemyPortrait .miniName{font-size:6px;padding:0 1px;bottom:3px}
 .landscapeHUD .rightRail .cameraTools{position:fixed;left:var(--land-camera-x);top:var(--land-camera-y);right:auto;bottom:auto;width:var(--land-camera-w);height:var(--land-camera-h);padding:3px;transform:none}.landscapeHUD .cameraControls{height:100%;flex-direction:column;gap:3px;justify-content:space-between}.landscapeHUD .cameraControls button{width:30px;height:auto;flex:1;min-height:0;font-size:21px;padding:0}.landscapeHUD .rightRail .cameraTools.folded{transform:translateX(46px)}.landscapeHUD .cameraTools .cameraToggle{left:-22px;width:22px;top:calc(50% - 19px);height:38px;min-height:0;font-size:21px}
 .landscapeHUD .panel{left:calc(var(--land-stage-x) + var(--land-stage-w) - min(285px,var(--land-stage-w)));top:var(--land-stage-y);right:auto;bottom:auto;width:min(285px,var(--land-stage-w));height:var(--land-stage-h);max-height:var(--land-stage-h);z-index:6}.landscapeHUD .panelHeading{padding:3px 7px}.landscapeHUD .panelHeading h2{font-size:15px}.landscapeHUD .panelHeading button{min-height:27px}.landscapeHUD .skill{min-height:63px;padding:6px}.landscapeHUD .panel #skills{padding:6px}
 .landscapeHUD .targetCard{left:var(--land-stage-x);top:var(--land-stage-y);right:auto;bottom:auto;transform:none;min-width:0;width:min(220px,var(--land-stage-w));max-width:var(--land-stage-w);padding:6px 8px}.landscapeHUD .targetCard h3{font-size:14px}.landscapeHUD .targetCard p{font-size:8px;line-height:1.4;margin-top:4px}.landscapeHUD .targetCard small{font-size:8px}
 .landscapeHUD .confirmBar{left:calc(var(--land-stage-x) + var(--land-stage-w)/2);top:auto;bottom:calc(var(--land-dock-h) + 12px + var(--land-safe-bottom));max-width:calc(var(--land-stage-w) - 8px);width:max-content;padding:5px;gap:5px;transform:translateX(-50%);z-index:8}.landscapeHUD .confirmBar button{min-height:32px;font-size:10px;padding:4px 8px}.landscapeHUD #confirmText{font-size:9px}
}
@media (orientation:landscape) and (max-height:320px){.landscapeHUD .heroInfo .statusText{display:none}.landscapeHUD .round{padding-top:2px;padding-bottom:2px}.landscapeHUD .actions .actionIcon{font-size:15px}.landscapeHUD .turnStat,.landscapeHUD .nowFlag{font-size:5px}.landscapeHUD .turnCard{flex-basis:35px}}
