*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#0c121b;color:#e5edf3;font:15px system-ui,-apple-system,sans-serif;overscroll-behavior:none}body{touch-action:none;user-select:none;-webkit-user-select:none}canvas{display:block;width:100%;height:100%}button,select{font:inherit;color:inherit;border:1px solid #405361;background:#182631;border-radius:9px;padding:13px;cursor:pointer;touch-action:none}button:hover{border-color:#91e9ec}button:focus-visible{outline:2px solid #9cffff}button:disabled{opacity:.5}main{position:absolute;inset:0;overflow:auto;touch-action:pan-y;background:radial-gradient(ellipse at 85% 20%,#1d4045a8,transparent 55%),#0c121bf2;padding:5vh 7vw}.eyebrow,small{font-size:11px;letter-spacing:2px;color:#9baebd}h1{font-size:clamp(44px,8vw,94px);letter-spacing:-5px;line-height:.95;margin:28px 0 16px}h1 span{display:block;font-size:17px;letter-spacing:9px;margin-top:15px;color:#80dedd}.sub{color:#a6b8c5}section{display:grid;grid-template-columns:1.2fr 1fr;gap:5vw;margin:28px 0;max-width:1000px}section>div{padding:24px;border:1px solid #31404e;border-radius:15px;background:#15212bb0}h2{margin:12px 0;font-size:28px}#skillList p{font-size:13px;color:#9fb5c3;margin:12px 0}#skillList b{color:#e1f4f3}label{display:block;margin-bottom:18px}select{display:block;width:100%;margin-top:8px}.primary{background:#9ee9df;color:#102320;border:0;font-weight:750;width:100%}.note,footer{font-size:12px;line-height:1.8;color:#92a7b7}footer b{margin-left:18px;color:#a7dbd8}.top{position:absolute;left:3%;right:3%;top:max(14px,env(safe-area-inset-top));display:flex;gap:22px;align-items:center;justify-content:space-between;pointer-events:none}.top>div{width:30%;max-width:350px}.top b{font-size:12px;letter-spacing:1px}progress{display:block;width:100%;height:13px;appearance:none;border:0;border-radius:9px;overflow:hidden;background:#24343d;margin-top:5px}progress::-webkit-progress-bar{background:#24343d}progress::-webkit-progress-value{background:#7be0ba}#energy::-webkit-progress-value{background:#7db9fa}#enemy::-webkit-progress-value{background:#f28c84}progress::-moz-progress-bar{background:#7be0ba}.top button{pointer-events:auto}#clock{font-variant-numeric:tabular-nums}#hint{position:absolute;top:90px;width:100%;text-align:center;font-size:11px;color:#b1c7d0;pointer-events:none}#stick{position:absolute;left:5%;bottom:7%;width:125px;height:125px;border-radius:50%;background:#b4e5ed13;border:1px solid #b4e5ed44;touch-action:none}#stick i{position:absolute;left:40px;top:40px;width:45px;height:45px;border:1px solid #b3e8e8;border-radius:50%;background:#b3e8e833;pointer-events:none}#actions{position:absolute;right:3%;bottom:max(20px,env(safe-area-inset-bottom));display:flex;gap:9px;align-items:flex-end}#actions button{width:75px;height:75px;border-radius:50%;padding:4px;font-size:11px;background:#162d3ce8;white-space:pre-line}#actions #attack{width:95px;height:95px;border:2px solid #a4e8dc}#actions button.aiming{border:2px solid #fff;background:#376072}#overlay{position:absolute;inset:0;background:#07101ad9;backdrop-filter:blur(9px);display:grid;place-items:center}#overlay[hidden],#hud[hidden],#menu[hidden]{display:none}#overlay>div{width:min(90%,400px);text-align:center}#overlay button{margin:7px 0;width:100%}@media(max-width:650px){main{padding:25px}section{grid-template-columns:1fr;gap:12px}section>div{padding:16px}h1{letter-spacing:-2px}#actions{gap:5px;right:2%}#actions button{width:53px;height:53px;font-size:9px}#actions #attack{width:67px;height:67px;font-size:9px}#stick{width:100px;height:100px;left:3%;bottom:6%}#stick i{left:27px;top:27px}#hint{font-size:9px}.top{gap:10px}.top b{font-size:9px}.top>div{width:35%}}@media(pointer:coarse){#hint{display:none}}
/* 0.2.0: scope gesture suppression to combat; keep menu zoom and selection usable. */
html,body{touch-action:auto;user-select:auto;-webkit-user-select:auto}button,select,input{font-size:16px}main,main *{touch-action:manipulation}main{touch-action:pan-y pinch-zoom}body.playing{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;position:fixed;inset:0;width:100%;height:100%;overflow:hidden}body.playing #arena,body.playing #hud,body.playing #hud *{touch-action:none;-webkit-tap-highlight-color:transparent}#menu button,#overlay button,#upgradePanel button{touch-action:manipulation;min-height:44px}#hud button{font-size:13px}#hud .top{gap:10px}#hud .top>div{width:29%}#xp{height:5px}#xp::-webkit-progress-value{background:#e7cd87}#xp::-moz-progress-bar{background:#e7cd87}#playerStatus,#status{font-size:10px;letter-spacing:0}#hint{top:122px}#combo{position:absolute;top:145px;width:100%;text-align:center;color:#ffe3a3;font-size:13px;pointer-events:none}#upgradeOpen{max-width:130px}#points{background:#b8e9d5;color:#13392e;padding:2px 7px;border-radius:12px}#actions button{position:relative;font-size:11px;line-height:1.5}#actions button.lacking{border-color:#78a6da;color:#8eb7e4}#actions button.cooling{border-color:#44545d}#actions button.ultimate{border-color:#e6d79e;transform:translateY(-16px)}#cancelAim{position:absolute;right:12%;bottom:175px;padding:16px;border:2px dashed #d68e8e;border-radius:20px;font-size:11px;text-align:center;pointer-events:none;background:#241c2ce8}#cancelAim.cancelled{background:#813443;color:#fff}#upgradePanel{position:absolute;inset:0;z-index:20;background:#08131dec;backdrop-filter:blur(10px);display:grid;place-items:center}#upgradePanel[hidden]{display:none}#upgradePanel>div{padding:22px;width:min(94%,730px);max-height:90%;overflow:auto;touch-action:pan-y;background:#172632;border:1px solid #526572;border-radius:16px}#upgradeChoices article{padding:12px 0;border-top:1px solid #3f5361}#upgradeChoices h3{font-size:16px;margin:5px 0}#upgradeChoices .branch-row{display:flex;gap:10px}#upgradeChoices button{flex:1;text-align:left;font-size:13px}#upgradeClose{margin-top:12px;width:100%}.selected{border-color:#a0eadc;background:#244b48}#passiveInfo{font-size:13px;color:#c4d9c8}#skillList p{line-height:1.5}@media(max-width:650px){#hud .top{gap:4px;left:2%;right:2%}#hud .top>div{width:29%}#hud .top button{padding:8px 4px;font-size:10px}#playerStatus,#status{font-size:8px}#hint{top:110px}#combo{top:130px;font-size:10px}#actions button{font-size:9px}#cancelAim{bottom:130px;right:6%;max-width:170px}#upgradeChoices .branch-row{flex-direction:column}#hud #clock{font-size:10px}.top b{letter-spacing:0}}
@media(max-height:500px){#hint{display:none}#combo{top:95px}#stick{width:95px;height:95px;bottom:5%}#stick i{left:25px;top:25px}#actions button{width:59px;height:59px}#actions #attack{width:73px;height:73px}#cancelAim{bottom:115px}}
body.playing{touch-action:auto}#upgradePanel,#upgradePanel *{touch-action:pan-y}#upgradePanel button{touch-action:manipulation}#overlay{z-index:10}.top small{display:block}#hp,#energy,#xp,#enemy{margin-top:4px}
#combatLog{position:absolute;left:3%;bottom:4px;max-width:60%;pointer-events:none;color:#c9b3e0;font-size:10px}#menu,#upgradePanel{overscroll-behavior:contain}#cancelAim[hidden]{display:none}
@media(max-width:650px){#stick{width:88px;height:88px;left:2%}#stick i{width:38px;height:38px;left:25px;top:25px}#actions{gap:4px}#actions button{width:47px;height:47px;min-width:47px}#actions #attack{width:61px;height:61px;min-width:61px}}
/* POWER 0.3.0 — roster and illustrated arena HUD */
main{background:radial-gradient(ellipse at 10% 0%,#263847dc,transparent 55%),linear-gradient(120deg,#0c1723f5,#14262df7);padding:32px 5vw 28px}h1{font-size:68px;margin:22px 0 12px;letter-spacing:-3px}h1 span{font-size:12px;letter-spacing:8px}.eyebrow{color:#e6c792}.sub{margin-bottom:28px}#roster{max-width:1280px;display:grid;grid-template-columns:1fr 1fr;gap:24px}.roster-group h3{font-size:11px;letter-spacing:4px;color:#d7c38e;font-weight:500;border-bottom:1px solid #46535d;padding-bottom:11px}.roster-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.roster-grid button{padding:0;overflow:hidden;border-radius:8px;background:#152430;text-align:left;transition:border-color .2s,transform .2s;min-width:0}.roster-grid button:hover{transform:translateY(-3px)}.roster-grid button.active{border-color:#dfc68c;box-shadow:0 0 0 1px #dfc68c55,inset 0 -40px 40px #b4c5a816}.roster-grid img{display:block;width:100%;height:105px;object-fit:cover;object-position:center 25%;background:#20313d}.roster-grid span{font-size:11px;font-weight:650;display:block;padding:9px 7px 2px}.roster-grid small{font-size:8px;letter-spacing:0;display:block;padding:0 7px 10px;line-height:1.4;min-height:32px;color:#a4b5c0}section{max-width:1280px;grid-template-columns:1.65fr 1fr;gap:24px;margin:25px 0}section>div{background:#15232eaa;border-color:#3a4c58}.character-detail{display:flex;gap:20px}.detail-body{flex:1;min-width:0}#selectedPortrait{width:125px;height:160px;object-fit:cover;border:1px solid #4a5e66;border-radius:8px}#ratings{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}#ratings span{font-size:9px;display:block;color:#c1cfcf;margin-bottom:4px}#ratings meter{width:100%;height:7px}#skillList p{font-size:12px;line-height:1.6;margin:10px 0;padding-bottom:9px;border-bottom:1px solid #344b5544}#skillList small{font-size:10px;letter-spacing:0}#skillList em{font-size:9px;font-style:normal;border:1px solid #6a807a;padding:2px 5px;border-radius:4px;color:#ddcf9e;margin-right:3px}#passiveInfo{font-size:11px;line-height:1.6}#characterName{font-size:25px}#characterStats{font-size:11px;line-height:1.6}.top>div{background:#132731bb;padding:9px 11px;border:1px solid #6c8b8244;border-radius:11px;backdrop-filter:blur(5px)}#clock{color:#ecd9aa;font-size:13px}#actions button{border-color:#8b9f9288;background:radial-gradient(circle at 40% 30%,#315366e8,#152c3cef);box-shadow:inset 0 0 0 3px #0b202c77,0 3px 12px #08161d77;font-weight:600;color:#dce8e6}#actions #attack{border-color:#dbca96;background:radial-gradient(circle at 40% 35%,#6d6a45,#273a37);color:#fff1c9;letter-spacing:.5px}#actions button.ultimate{border-color:#caa6e1}#stick{background:radial-gradient(circle,#b7e5db10,#091b2a3a);border:2px solid #a8c8be66;box-shadow:inset 0 0 0 7px #112d3b44}#stick i{background:radial-gradient(circle at 35% 30%,#a9d2c266,#42656144);border-color:#c1d4bb}#hint{color:#c1d1c3;background:#13271b66;width:auto;left:50%;transform:translateX(-50%);white-space:nowrap;padding:4px 10px;border-radius:6px;font-size:10px}#combo{color:#f2d8a2;text-shadow:0 1px 8px #000}#upgradeOpen{background:#203b42d9;border-color:#6b8e80}.primary{background:linear-gradient(100deg,#c7d5ad,#9ac5ba);color:#172a27;border:1px solid #dce4c1}.note{line-height:1.8}
@media(max-width:1000px){#roster{gap:16px}.roster-grid{gap:5px}.roster-grid span{font-size:9px}.roster-grid img{height:96px}.character-detail{gap:12px}#selectedPortrait{width:88px;height:126px}section{grid-template-columns:1.4fr 1fr;gap:16px}section>div{padding:18px}}
@media(max-width:650px){main{padding:23px 18px}h1{font-size:54px}#roster{grid-template-columns:1fr;gap:6px}.roster-grid img{height:103px}.roster-grid span{font-size:10px}.roster-grid small{font-size:8px;min-height:32px}section{grid-template-columns:1fr;gap:12px}.character-detail{display:block}#selectedPortrait{float:right;width:85px;height:125px;margin-left:12px}#ratings{gap:6px}#playerStatus,#status{font-size:7px}.top>div{padding:6px 5px}#actions button{font-size:9px;line-height:1.4}.top b{font-size:8px}#combatLog{font-size:8px;bottom:2px}#hint{display:none}}
@media(max-height:500px) and (min-width:651px){#actions{bottom:12px}#actions button{width:58px;height:58px}#actions #attack{width:72px;height:72px}.top>div{padding:5px 8px}#combo{top:102px}}
select{-webkit-appearance:none;appearance:none;background:#1c3441!important;color:#e4eeea!important;border:1px solid #4b646c;line-height:1.5;padding-right:30px}select option{background:#1c3441;color:#e4eeea}
#terrain{position:absolute;inset:0;pointer-events:none}#arena{position:relative;background:transparent}
