*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#132c39;color:#f4faff;font-family:system-ui,-apple-system,sans-serif;touch-action:none;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none}button:focus-visible{outline:3px solid #fff;outline-offset:4px}[hidden]{display:none!important}#world{display:block;width:100%;height:100%}#hitFlash{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #ff364c;opacity:0;transition:opacity .1s}.overlay{position:fixed;inset:0;display:flex;align-items:center;background:linear-gradient(90deg,#071924f5,#0c2538d9 45%,#0c253821);overflow:auto;touch-action:pan-y}.overlay.center{justify-content:center;background:#061823bc;backdrop-filter:blur(6px)}.menuContent{width:min(680px,92%);margin:32px 0 32px 6vw}.eyebrow{font-size:12px;letter-spacing:.2em;color:#a0e0e5;font-weight:850}h1{font-size:clamp(36px,5.5vw,77px);font-weight:950;line-height:1.02;letter-spacing:-.055em;margin:15px 0 18px}h1 em{font-style:normal;color:#ffcd71;font-size:1.38em;letter-spacing:-.075em}.intro{color:#dae1df;font-size:17px;line-height:1.5}.heroes{display:flex;gap:14px;margin:20px 0}.heroCard{width:200px;max-width:46%;text-align:left;border:1px solid #78969880;border-radius:16px;padding:14px;background:#1b35488c;transition:background .2s,border .2s}.heroCard.selected{border:2px solid #ffd37d;background:#48606385;padding:13px}.heroCard[data-hero=grayson].selected{border-color:#6edeff}.heroCard img,.portrait{height:145px;max-width:100%;object-fit:contain;display:block;margin:auto}.portrait.jaxon{width:103px;background:url('assets/jaxon_walk_sheet.png') left center / 1030px 145px no-repeat}.heroCard>span{display:block;font-size:21px;font-weight:900;letter-spacing:.04em;margin:8px 0 4px}.heroCard small{font-size:13px;color:#d2dfdf}.primary{border:0;border-radius:10px;background:#ffcd71;color:#182e3b;font-size:17px;font-weight:850;padding:16px 28px;min-width:205px;box-shadow:0 4px 18px #00131b35}.primary:disabled{opacity:.55}.secondary,.utility{border:1px solid #8eaaa878;background:#193a50c9;border-radius:10px;padding:12px 18px;font-size:15px}.startButtons{display:flex;gap:10px;flex-wrap:wrap}.note{font-size:13px;color:#ccdad9;margin:13px 0 0}.note.subtle{font-size:12px;color:#a7b9bc;max-width:440px;line-height:1.5}.options{display:flex;gap:20px;flex-wrap:wrap;font-size:14px;color:#d1e1df;margin-top:18px}.options input{accent-color:#ffcd71}.buildBadge{position:absolute;right:28px;bottom:26px;font-size:11px;letter-spacing:.19em;padding:10px 14px;border:1px solid #b5dbd46b;border-radius:8px;color:#d4e6e4}.panel{background:#163448f5;padding:30px;border:1px solid #698b9499;border-radius:20px;width:min(430px,92%);text-align:center;max-height:92dvh;overflow:auto}.panel h2{font-size:32px;letter-spacing:-.04em;margin:14px 0}.panel p{color:#c9dadb;line-height:1.6}.panel button{display:block;width:100%;margin-top:12px}.helpPanel{width:min(580px,92%)}.helpGrid{display:grid;grid-template-columns:1fr 1.2fr;gap:10px;text-align:left;font-size:14px;line-height:1.4}.helpGrid span{color:#bdcfd3}.helpGrid b{font-weight:600}#hud{position:absolute;inset:0;pointer-events:none}#hud button,#stick{pointer-events:auto}.heroHud{position:absolute;top:max(18px,env(safe-area-inset-top));left:20px;width:188px;background:#0b273ca6;padding:12px 15px 10px;border-radius:12px;backdrop-filter:blur(4px)}.heroTitle{display:flex;align-items:center;justify-content:space-between;font-weight:950;letter-spacing:.06em;font-size:21px}.heroTitle button{border:1px solid #c6e0e44d;background:#32586a;font-size:22px;border-radius:7px;line-height:1;padding:2px 8px}.meterLabel{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.12em;margin:8px 0 4px;color:#dce8e6}.bar{height:7px;background:#051725b0;border-radius:4px;overflow:hidden}.bar i{display:block;height:100%;background:#87e2b3;width:100%;transition:width .1s}.bar.energy i{background:#ffcd71}.buddyLine{font-size:9px;letter-spacing:.03em;margin-top:9px;color:#b3d4e0}.missionHud{position:absolute;top:18px;left:50%;transform:translateX(-50%);text-align:center;background:#102e40b8;padding:12px 24px;border-radius:12px;min-width:280px;max-width:40%}.missionHud strong{display:block;font-size:17px;margin:4px 0}.missionHud>span:last-of-type{display:block;font-size:12px;color:#d6e5df}#bossBar{margin-top:12px}#bossBar>span{font-size:10px;letter-spacing:.14em}#bossBar .bar{height:9px;margin-top:4px}#bossHealth{background:#fa7890}.topRight{position:absolute;right:18px;top:18px;display:flex;gap:7px}.utility{font-size:19px;padding:8px 12px}.mapPanel{position:absolute;right:20px;top:76px;width:146px;border:1px solid #b4e2d459;border-radius:12px;overflow:hidden;background:#183c45cd;text-align:center;padding:6px;backdrop-filter:blur(5px)}#minimap{width:132px;height:132px;display:block}.mapPanel span{display:block;font-size:10px;font-weight:850;letter-spacing:.08em;padding:3px}.mapPanel small{display:block;color:#ffdc8c;font-size:12px;font-weight:700}#toast{position:absolute;left:50%;top:130px;transform:translateX(-50%);font-size:15px;font-weight:750;background:#102c41ed;padding:10px 22px;border-radius:24px;max-width:65%;text-align:center;opacity:0;transition:opacity .2s}#targetMarker{position:absolute;text-align:center;transform:translate(-50%,-50%);color:#fff2b9;text-shadow:0 2px 3px #173342}#targetMarker span{font-size:36px}#targetMarker small{font-size:10px;display:block;font-weight:800}#dialogue{position:absolute;left:50%;bottom:55px;transform:translateX(-50%);width:min(460px,44%);background:#132e42ec;border-left:3px solid #ffcb68;border-radius:10px;padding:14px 35px 14px 18px}#speaker{font-size:12px;font-weight:850;color:#ffcf7b;text-transform:uppercase;letter-spacing:.1em}#dialogueText{font-size:14px;line-height:1.5;color:#e3ece9;margin:6px 0 0}#dismissDialogue{position:absolute;right:8px;top:6px;background:none;border:0;font-size:22px}#stick{position:absolute;bottom:58px;left:38px;width:130px;height:130px;border-radius:50%;background:#b9dcdb19;border:2px solid #def8e766;touch-action:none}#knob{position:absolute;width:48px;height:48px;border-radius:50%;left:calc(50% - 24px);top:calc(50% - 24px);background:#e1f4e854;border:1px solid #fff8;pointer-events:none}#stick span{position:absolute;bottom:13px;left:0;width:100%;text-align:center;font-size:10px;letter-spacing:.15em;pointer-events:none}#actions{position:absolute;right:24px;bottom:38px;width:246px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}#actions button{height:61px;border-radius:30px;border:1px solid #c7e7e588;background:#1b3b50c9;font-size:11px;font-weight:850;touch-action:none;position:relative}#actions small{display:block;font-size:9px;margin-top:4px;opacity:.8;font-weight:650}#actions .blast{background:#e1ad4fdf;color:#132e39}#actions .charge{background:#3b765adc}#actions .special{grid-column:span 2;border-radius:28px;background:#5861a5ce}#actions button.pressed{filter:brightness(1.5);transform:scale(.95)}#actions button.ready{border-color:#ffeab5;box-shadow:0 0 15px #ffde914a}#actions button.unavailable{opacity:.48}#lookHint{position:absolute;bottom:250px;right:88px;font-size:10px;letter-spacing:.13em;opacity:.7}#desktopHelp{position:absolute;bottom:14px;width:100%;text-align:center;font-size:11px;color:#e0eeee;text-shadow:1px 2px 3px #102732}#fps{position:absolute;bottom:14px;left:15px;font-size:10px;color:#e5f3ed;opacity:.65}@media(pointer:fine){#actions{width:225px;gap:6px}#actions button{height:53px}#stick{width:110px;height:110px;opacity:.75}#lookHint{bottom:220px}}@media(max-height:650px){.menuContent{margin:18px 0 18px 5vw}h1{font-size:39px;margin:10px 0}.intro{margin:8px 0;font-size:15px}.heroes{margin:10px 0}.heroCard{width:180px;padding:10px}.heroCard.selected{padding:9px}.heroCard img,.portrait{height:100px}.portrait.jaxon{background-size:710px 100px;width:71px}.heroCard>span{font-size:18px;margin:4px 0}.heroCard small{font-size:12px}.primary{padding:12px 20px}.note{margin-top:8px;font-size:12px}.options{margin-top:12px;font-size:13px;gap:14px}.heroHud{top:12px;left:12px;width:167px;padding:9px 12px}.heroTitle{font-size:18px}.missionHud{top:12px;padding:9px 17px;min-width:240px}.missionHud strong{font-size:15px}.topRight{top:12px;right:12px}.mapPanel{top:65px;right:12px;width:114px;padding:4px}#minimap{width:104px;height:104px}.mapPanel span{font-size:9px}.mapPanel small{font-size:10px}#toast{top:105px;font-size:13px;padding:8px 18px}#stick{bottom:25px;left:25px;width:112px;height:112px}#actions{bottom:16px;width:224px;gap:6px;right:15px}#actions button{height:51px}#lookHint{bottom:190px;right:60px}#desktopHelp{display:none}#dialogue{bottom:28px;width:40%;padding:11px 30px 11px 14px}#dialogueText{font-size:12px}#fps{bottom:5px}}@media(max-width:620px){.menuContent{margin:30px auto;width:90%}h1{font-size:38px}.intro{font-size:15px}.heroes{gap:10px}.heroCard{width:48%;max-width:48%}.buildBadge{display:none}.missionHud{left:12px;top:162px;transform:none;min-width:0;max-width:calc(100% - 155px);text-align:left;padding:10px 12px}.missionHud strong{font-size:14px}.missionHud .eyebrow{font-size:10px}.heroHud{width:160px}.mapPanel{width:116px;right:12px}#minimap{width:104px;height:104px}.topRight{right:12px;gap:4px}.utility{padding:7px 10px}#toast{top:262px;max-width:90%;width:max-content;font-size:13px}#actions{width:212px;right:12px;bottom:25px;gap:6px}#actions button{height:56px}#stick{left:12px;bottom:60px;width:104px;height:104px}#lookHint{bottom:222px;right:55px}#desktopHelp{display:none}#dialogue{width:90%;max-width:none;bottom:235px}#dialogueText{font-size:12px}.heroCard img,.portrait{height:120px}.portrait.jaxon{background-size:850px 120px;width:85px}.helpGrid{font-size:12px;gap:8px}.panel{padding:22px}.panel h2{font-size:26px}.options{gap:12px;font-size:13px}}

.mouseLook{font-size:11px;font-weight:800;max-width:92px}#recenter{position:absolute;left:38px;bottom:204px;border:1px solid #bddcdb70;border-radius:18px;background:#193a50cc;padding:9px 13px;font-size:11px;font-weight:800}#recenter small{font-size:10px;opacity:.7;margin-left:5px}@media(pointer:coarse){.mouseLook{display:none}}@media(max-height:650px){#recenter{left:25px;bottom:149px}}@media(max-width:620px){#recenter{left:12px;bottom:178px}.topRight .utility{padding:7px 8px}.mouseLook{max-width:66px;font-size:9px}}

.mapPanel button{width:100%;margin-top:4px;background:#214556;border:1px solid #a9c9c569;border-radius:6px;padding:6px;font-size:10px;font-weight:800;letter-spacing:.1em}
#waypointStatus{position:absolute;top:100px;left:50%;transform:translateX(-50%);background:#0c3945e8;color:#9bf2ff;border:1px solid #81edff88;border-radius:20px;padding:7px 10px 7px 15px;font-size:12px;display:flex;align-items:center;gap:12px}
#waypointStatus button{background:none;border:0;color:#c4f5ff;font-size:20px;padding:0 5px}
.mapDialog{width:min(1000px,94%);text-align:left;padding:24px}.mapHeading{display:flex;align-items:center;justify-content:space-between;gap:16px}.mapHeading h2{margin:6px 0 18px}.mapHeading button{width:auto;margin:0;white-space:nowrap}.mapLayout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(220px,1fr);gap:22px;align-items:start}#largeMap{width:100%;height:auto;border-radius:14px;border:1px solid #8caaa0;display:block}.mapPlaces p{font-size:14px;margin:0}.mapPlaces button{text-align:left;padding:12px 16px}.mapPlaces button small{display:block;color:#b8d6d3;margin-top:4px;font-size:11px}.mapPlaces button:disabled{opacity:.35;cursor:default}.mapLegend{color:#bfd8d6;display:block;font-size:12px;line-height:1.7;margin-top:15px}
@media(max-height:650px) and (min-width:621px){.mapDialog{padding:18px}.mapHeading h2{font-size:26px;margin-bottom:10px}.mapLayout{grid-template-columns:minmax(0,1fr) minmax(220px,1fr);max-width:800px;margin:auto}#largeMap{max-height:65dvh;width:auto;max-width:100%}.mapPlaces button{padding:8px 12px;margin-top:7px}.mapPlaces p{font-size:12px}#waypointStatus{top:88px}}
@media(max-width:620px){.mapLayout{grid-template-columns:1fr;gap:12px}.mapDialog{padding:18px}.mapPlaces{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mapPlaces p,.mapLegend{grid-column:1/-1}.mapPlaces button{margin:0;font-size:13px}.mapHeading h2{font-size:24px}.mapHeading button{padding:8px;font-size:12px}#waypointStatus{top:230px;max-width:90%;width:max-content;font-size:11px}}

/* Tablet controls: separate captured fingers for movement, looking and held powers. */
#lookPad,.touchNote{display:none}
@media(any-pointer:coarse){
 .keyHint,#desktopHelp,.mouseLook,#lookHint{display:none!important}
 .touchNote{display:block;color:#ffe0a3;font-size:14px;line-height:1.4}
 .utility,#swap,#openMap,#dismissDialogue{min-width:48px;min-height:48px}
 #actions button{font-size:12px}
 #cloneState{font-size:11px;color:#ffda94}
}
@media(any-pointer:coarse) and (min-width:700px){
 #stick{width:144px;height:144px;left:max(32px,env(safe-area-inset-left));bottom:max(36px,env(safe-area-inset-bottom));opacity:1}
 #recenter{left:max(32px,env(safe-area-inset-left));bottom:196px;min-width:144px;min-height:48px}
 #actions{width:264px;gap:8px;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom))}
 #actions button{height:64px}
 #lookPad{display:flex;align-items:center;justify-content:center;position:absolute;right:max(24px,env(safe-area-inset-right));bottom:240px;width:264px;height:76px;border:1px dashed #d3ece46b;border-radius:22px;background:#13334548;pointer-events:auto;touch-action:none;user-select:none}
 #lookPad span{font-size:11px;letter-spacing:.12em;color:#daece7;pointer-events:none}
 #dialogue{bottom:30px;width:calc(100% - 600px);max-width:460px}
 .mapPanel{top:82px}
}
@media(any-pointer:coarse) and (min-width:700px) and (max-height:580px){
 .mapPanel{top:78px;padding:3px;width:112px}
 .mapPanel canvas,.mapPanel>span,.mapPanel>small{display:none}
 #dialogue{bottom:270px;width:calc(100% - 360px);left:20px;transform:none}
}

#buildingAction{position:absolute;bottom:28px;left:200px;width:calc(100% - 504px);max-width:280px;min-height:64px;padding:12px 8px;border:2px solid #b4fff0;border-radius:18px;background:#16766aee;font-size:16px;font-weight:850;touch-action:manipulation;box-shadow:0 4px 18px #09213080}
#hud.indoors #actions button:not([data-action="jump"]):not([data-action="charge"]){display:none}
#hud.indoors #actions{grid-template-columns:repeat(2,1fr)}
#hud.indoors #actions button{min-height:64px}
@media(max-width:699px){#buildingAction{bottom:252px;left:50%;transform:translateX(-50%);width:220px;max-width:70%;font-size:16px}}

.heroCard{min-width:0;flex:1}.heroes{max-width:640px}.heroCard[data-hero=jessi].selected{border-color:#e3edf7}.portrait.jessi{width:110px;display:flex;align-items:center;justify-content:center;font-size:78px;font-weight:900;color:#e6edf4;background:#26313f;border:2px solid #aebdca;border-radius:18px}.heroCard small{display:block;line-height:1.4}
@media(max-width:620px){.heroes{gap:7px}.heroCard{padding:9px;max-width:none;width:auto}.heroCard.selected{padding:8px}.heroCard>span{font-size:16px}.heroCard small{font-size:11px}.heroCard img,.portrait{height:96px}.portrait.jaxon{width:68px;background-size:680px 96px}.portrait.jessi{width:68px;font-size:56px}}

.roomControls{display:grid;gap:10px;margin:18px 0;padding:16px;background:#163e56d9;border:1px solid #8adbdc70;border-radius:14px;max-width:540px}.joinRow{display:flex;gap:10px}.joinRow input{min-width:0;flex:1;border:1px solid #8ab7c4;border-radius:9px;padding:12px;background:#0c2637;color:white;font:700 18px system-ui;letter-spacing:.12em;text-transform:uppercase}.joinRow button{min-height:52px}.roomPanel{width:min(480px,94%)}#roomCodeDisplay{font-size:42px;letter-spacing:.12em;color:#ffdb8a}#roomRoster{white-space:pre-line;text-align:left;line-height:2.2;background:#0d2637;padding:12px 20px;border-radius:12px;font-weight:700}#roomError{min-height:24px;color:#9ce1df}#teamHud{position:absolute;left:50%;top:112px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;background:#112b40ed;border:1px solid #7ab9c177;border-radius:10px;font-size:12px}#teamConnection{max-width:180px}#teamHud button{min-height:44px;background:#26475c;border:1px solid #6c9baa;border-radius:7px;padding:8px;font-size:12px}#hud:has(#teamHud:not([hidden])) #toast{top:175px}
@media(max-height:650px){.roomControls{margin:10px 0;padding:10px}.roomControls .primary{min-height:48px}#teamHud{top:105px}#hud:has(#teamHud:not([hidden])) #toast{top:170px}}
@media(max-width:620px){#teamHud{top:310px;width:94%;justify-content:space-between}#teamCode{white-space:nowrap}.roomControls{padding:10px}.joinRow{gap:6px}.joinRow input{width:120px;font-size:16px}.joinRow button{padding:9px}#hud:has(#teamHud:not([hidden])) #toast{top:378px}}
