html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#0b1020;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}#renderCanvas{width:100%;height:100%;display:block;outline:none;touch-action:none}#hud{position:absolute;left:12px;top:12px;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}#status{color:#e8eefc;background:#080c18b8;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:8px 12px;font-size:13px;line-height:1.35;max-width:min(520px,90vw);white-space:pre-wrap}#combatBars{display:flex;flex-direction:column;gap:6px;width:min(280px,80vw)}.bar{position:relative;height:18px;background:#080c18b8;border:1px solid rgba(255,255,255,.14);border-radius:6px;overflow:hidden}.bar.hidden{display:none}.barFill{position:absolute;left:0;top:0;bottom:0;width:0%;background:linear-gradient(90deg,#3a6fd8,#6aa2ff);transition:width 50ms linear}.barFill.ready{background:linear-gradient(90deg,#2f8f55,#5ed68a);width:100%!important;opacity:.35}.barFill.cast{background:linear-gradient(90deg,#c45a12,#ffb347)}.barLabel{position:relative;z-index:1;display:block;padding:1px 8px;font-size:11px;line-height:16px;color:#e8eefc;text-shadow:0 1px 2px rgba(0,0,0,.7)}.persistMark{color:#b8f0c8;background:#082012c7;border:1px solid rgba(94,214,138,.35);border-radius:8px;padding:6px 10px;font-size:12px;line-height:1.35;max-width:min(520px,90vw);min-height:0}.persistMark:empty{display:none}#minimap{position:absolute;right:12px;top:12px;z-index:10;width:160px;height:160px;pointer-events:none;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:#060a14b8;box-shadow:0 4px 18px #00000059}#targetFrame{display:flex;flex-direction:column;width:min(280px,80vw);padding:7px 10px 8px;background:#080c18c7;border:1px solid rgba(106,162,255,.35);border-radius:8px;box-shadow:0 2px 12px #00000052}#targetFrame.hidden{display:none}.tfNameRow{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px}#tfName{color:#e8eefc;font-size:13px;font-weight:650;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.7)}.tfId{color:#8aa0c8;font-size:11px;font-variant-numeric:tabular-nums}.tfHpBar{position:relative;height:16px;background:#0c0c10d9;border:1px solid rgba(255,255,255,.12);border-radius:5px;overflow:hidden}.tfHpFill{position:absolute;left:0;top:0;bottom:0;width:100%;background:linear-gradient(90deg,#2f8f55,#5ed68a);transition:width 80ms linear,background .12s ease}.tfHpFill.mid{background:linear-gradient(90deg,#a87a12,#e6be37)}.tfHpFill.low{background:linear-gradient(90deg,#a02820,#dc463c)}.tfHpLabel{position:relative;z-index:1;display:block;padding:0 8px;font-size:11px;line-height:16px;color:#e8eefc;text-shadow:0 1px 2px rgba(0,0,0,.75);text-align:center}#spellHotbar{position:absolute;left:50%;bottom:22px;transform:translate(-50%);z-index:12;pointer-events:none;display:flex;gap:10px}.spellSlot{position:relative;width:72px;height:72px;border-radius:12px;background:#080c18d1;border:1px solid rgba(106,162,255,.4);box-shadow:0 4px 16px #0006;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.spellSlot.disabled{opacity:.42;filter:grayscale(.55);border-color:#ffffff1f}.spellSlot.onGcd{border-color:#6aa2ff38}.spellSlot.casting{border-color:#ffb347bf;box-shadow:0 0 14px #ff8c2859}.slotKey{position:absolute;left:6px;top:4px;z-index:2;font-size:11px;font-weight:700;color:#9ec0ff;text-shadow:0 1px 2px rgba(0,0,0,.8)}.slotName{position:relative;z-index:2;font-size:12px;font-weight:650;color:#e8eefc;text-shadow:0 1px 2px rgba(0,0,0,.8)}.slotSweep{position:absolute;left:0;right:0;bottom:0;height:0%;z-index:1;background:#040812b8;pointer-events:none;transition:height 40ms linear}.slotCast{position:absolute;left:0;right:0;bottom:0;height:0%;z-index:1;background:linear-gradient(0deg,#c45a128c,#ffb34759);pointer-events:none;transition:height 40ms linear}#slotSpark .slotName{color:#b8d8ff}#slotEmberbolt .slotName{color:#ffc48a}#selfFrame{position:absolute;left:12px;bottom:22px;z-index:12;pointer-events:none;display:flex;flex-direction:column;width:min(220px,42vw);padding:8px 11px 7px;background:#080c18d1;border:1px solid rgba(106,162,255,.42);border-radius:8px;box-shadow:0 2px 12px #00000059}#selfFrame.hidden{display:none}.sfNameRow{display:flex;align-items:baseline;justify-content:space-between;gap:10px}#sfName{color:#9ec0ff;font-size:13px;font-weight:700;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.7)}.sfXp{color:#e8eefc;font-size:12px;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px rgba(0,0,0,.7)}.sfHint{margin-top:4px;color:#8aa0c8;font-size:10px}#loadoutStrip{position:absolute;left:12px;bottom:78px;z-index:12;pointer-events:none;display:flex;gap:6px;flex-wrap:wrap;max-width:min(360px,70vw)}#loadoutStrip.hidden{display:none}.loChip{display:flex;align-items:center;gap:5px;padding:5px 8px;background:#080c18d1;border:1px solid rgba(255,255,255,.14);border-radius:7px;box-shadow:0 2px 10px #0000004d;min-width:0}.loChip.on{border-color:#5ed68a73}.loChip.off{opacity:.55;filter:grayscale(.45);border-color:#dc463c59}.loIcon{font-size:12px;line-height:1;color:#c8d6f0}.loIcon.staff{color:#c4a06a}.loIcon.robes{color:#7a9adf}.loIcon.spark{color:#9ec0ff}.loIcon.ember{color:#ffb347}.loLabel{color:#e8eefc;font-size:11px;font-weight:650}.loState{color:#8aa0c8;font-size:10px;font-variant-numeric:tabular-nums}.loChip.on .loState{color:#5ed68a}.loChip.off .loState{color:#dc463c}#bagPanel{position:absolute;right:12px;bottom:22px;z-index:13;pointer-events:none;width:min(240px,48vw);padding:10px 12px 9px;background:#080c18e0;border:1px solid rgba(196,160,106,.4);border-radius:10px;box-shadow:0 4px 18px #0006;display:flex;flex-direction:column;gap:5px}#bagPanel.hidden{display:none}.bagHead{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:4px}.bagTitle{color:#e8c89a;font-size:13px;font-weight:700;letter-spacing:.02em}.bagKey{color:#9ec0ff;font-size:11px;font-weight:700;border:1px solid rgba(106,162,255,.35);border-radius:4px;padding:1px 6px}.bagRow{display:flex;justify-content:space-between;gap:12px;color:#c8d6f0;font-size:12px}.bagRow span:last-child{color:#e8eefc;font-variant-numeric:tabular-nums;font-weight:600}.bagRow span:last-child.ok{color:#5ed68a}.bagRow span:last-child.bad{color:#dc463c}.bagFoot{margin-top:4px;color:#8aa0c8;font-size:10px;line-height:1.35}#partyFrames{display:flex;flex-direction:column;gap:5px;width:min(240px,70vw);pointer-events:none}#partyFrames.hidden{display:none}.pfHead{color:#9dffb0;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.9;padding:0 2px}.pfRow{display:flex;flex-direction:column;gap:2px;padding:6px 9px 5px;background:#08120ed1;border:1px solid rgba(94,214,138,.38);border-radius:7px;box-shadow:0 2px 10px #0000004d}.pfRow.self{border-color:#6aa2ff6b;background:#080c18d1}.pfRow.leader{border-color:#ffd26e73}.pfNameRow{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.pfName{color:#c8f5d4;font-size:12px;font-weight:700;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.7)}.pfRow.self .pfName{color:#9ec0ff}.pfTag{color:#e8c89a;font-size:10px;font-weight:650}.pfMeta{color:#8ab89a;font-size:10px;font-variant-numeric:tabular-nums}.pfRow.self .pfMeta{color:#8aa0c8}#combatLog{position:absolute;right:12px;top:184px;z-index:12;pointer-events:none;width:min(280px,42vw);max-height:min(280px,42vh);display:flex;flex-direction:column;background:#080c18c7;border:1px solid rgba(255,179,71,.28);border-radius:8px;box-shadow:0 2px 12px #00000059;overflow:hidden}.clHead{padding:5px 9px 3px;color:#ffc48a;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid rgba(255,179,71,.18)}.clLines{display:flex;flex-direction:column;gap:2px;padding:5px 9px 7px;overflow:hidden;max-height:min(250px,38vh)}.clLine{color:#c8d6f0;font-size:11px;line-height:1.35;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px rgba(0,0,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clLine.cast{color:#9ec0ff}.clLine.damage{color:#ffb347;font-weight:650}.clLine.equip{color:#e8c89a}.clLine.party{color:#5ed68a}.clLine.death{color:#ff7a7a;font-weight:700}.clLine.respawn{color:#9ee6c4;font-weight:650}.clLine .clTag{opacity:.75;margin-right:4px;font-size:10px;font-weight:700}#fpsHud{position:absolute;right:184px;top:12px;z-index:12;pointer-events:none;min-width:168px;padding:7px 10px 8px;border-radius:8px;background:#080c18d1;border:1px solid rgba(255,255,255,.16);box-shadow:0 2px 10px #00000059;color:#e8eefc;font-variant-numeric:tabular-nums}#fpsHud .fpsRow{display:flex;align-items:baseline;gap:8px}#fpsHud .fpsLabel{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#8aa0c8}#fpsHud .fpsValue{font-size:22px;font-weight:750;line-height:1;min-width:2ch}#fpsHud .fpsFloor{font-size:10px;color:#8ab89a;margin-left:auto}#fpsHud .fpsCounts{margin-top:4px;font-size:11px;line-height:1.35;color:#c8d6f0}#fpsHud.fps-green{border-color:#5ed68a73}#fpsHud.fps-green .fpsValue{color:#5ed68a}#fpsHud.fps-amber{border-color:#ffb34780}#fpsHud.fps-amber .fpsValue{color:#ffb347}#fpsHud.fps-red{border-color:#dc50508c}#fpsHud.fps-red .fpsValue{color:#f07070}#toastStack{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:20;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:6px;width:min(420px,70vw);max-width:70vw}.sysToast{display:flex;align-items:baseline;gap:8px;padding:8px 14px 9px;border-radius:9px;background:#080c18e0;border:1px solid rgba(255,255,255,.18);box-shadow:0 4px 18px #00000073;color:#e8eefc;font-size:13px;line-height:1.3;text-shadow:0 1px 2px rgba(0,0,0,.65);opacity:0;transform:translateY(-10px);animation:toastIn .18s ease-out forwards,toastOut .32s ease-in forwards;animation-delay:0ms,var(--toast-ttl, 2.8s);max-width:100%}.sysToast .toastTag{font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;opacity:.85;flex-shrink:0}.sysToast .toastMsg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sysToast.connected{border-color:#6ea8ff80}.sysToast.connected .toastTag{color:#9ec0ff}.sysToast.invite{border-color:#5ed68a8c}.sysToast.invite .toastTag{color:#5ed68a}.sysToast.party{border-color:#5ed68a73}.sysToast.party .toastTag{color:#7ee0a4}.sysToast.xp{border-color:#ffc4648c}.sysToast.xp .toastTag{color:#ffc464}.sysToast.equip{border-color:#e8c89a80}.sysToast.equip .toastTag{color:#e8c89a}.sysToast.death{border-color:#ff6e6e73}.sysToast.death .toastTag{color:#ff8a8a}.sysToast.respawn{border-color:#78e6b46b}.sysToast.respawn .toastTag{color:#8fe6bf}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}#chatPanel{position:absolute;left:12px;bottom:118px;z-index:14;display:flex;flex-direction:column;width:min(320px,48vw);max-height:min(168px,28vh);background:#080c18d1;border:1px solid rgba(140,180,255,.28);border-radius:8px;box-shadow:0 2px 12px #00000059;overflow:hidden;pointer-events:none}#chatPanel.composing{pointer-events:auto;border-color:#8cb4ff8c;box-shadow:0 0 16px #5082ff38}.chatHead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:5px 9px 3px;color:#9ec0ff;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid rgba(140,180,255,.16);pointer-events:none}.chatHint{opacity:.7;font-weight:600;letter-spacing:.02em;text-transform:none;font-size:10px;color:#a8b8d8}.chatLines{display:flex;flex-direction:column;gap:2px;padding:5px 9px 6px;overflow:hidden;max-height:min(110px,18vh);pointer-events:none}.chatLine{color:#c8d6f0;font-size:11px;line-height:1.35;text-shadow:0 1px 2px rgba(0,0,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chatLine.say{color:#d4e4ff}.chatLine .chatWho{color:#9ec0ff;font-weight:700;margin-right:4px}.chatLine .chatTag{opacity:.7;margin-right:4px;font-size:10px;font-weight:700}.chatForm{display:flex;align-items:center;gap:6px;padding:4px 8px 6px;border-top:1px solid rgba(140,180,255,.14);opacity:.55;pointer-events:none}#chatPanel.composing .chatForm{opacity:1;pointer-events:auto}.chatPrompt{color:#9ec0ff;font-size:10px;font-weight:750;letter-spacing:.04em;text-transform:uppercase;flex-shrink:0}#chatInput{flex:1;min-width:0;background:#00000059;border:1px solid rgba(140,180,255,.28);border-radius:5px;color:#e8eefc;font:inherit;font-size:12px;padding:4px 7px;outline:none}#chatInput:focus{border-color:#8cb4ffa6}.sysToast.say{border-color:#8cb4ff80}.sysToast.say .toastTag{color:#9ec0ff}
