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 .clTag{opacity:.75;margin-right:4px;font-size:10px;font-weight:700}
