:root{--ink:#2B2038;--cream:#EADFCB}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:#CFE9FF;font-family:"Trebuchet MS","Segoe UI",system-ui,sans-serif;color:var(--ink);user-select:none;-webkit-user-select:none}
#game{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;cursor:crosshair}
#fx-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden}
#fx-layer::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(0,0,0,0) 62%,rgba(43,32,56,.28) 100%)}
#fx-layer .dmg{position:absolute;left:0;top:0;font-weight:900;font-size:22px;text-shadow:-1px -1px 0 #2B2038,1px -1px 0 #2B2038,-1px 1px 0 #2B2038,1px 1px 0 #2B2038,0 3px 0 #2B2038;will-change:transform,opacity;white-space:nowrap}
#fx-layer .flash{position:absolute;inset:0;background:#FFF3D6;opacity:0}
#ui-root{position:fixed;inset:0;pointer-events:none}
#ui-root>*{pointer-events:auto}
#dbg{position:fixed;left:8px;top:8px;margin:0;padding:6px 8px;font:12px/1.35 Consolas,monospace;color:#fff;background:rgba(43,32,56,.7);border-radius:6px;display:none;pointer-events:none;white-space:pre}
#qhud{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);font:700 15px/1.3 "Trebuchet MS",system-ui,sans-serif;color:#fff;background:rgba(43,32,56,.72);padding:8px 14px;border-radius:10px;display:none;pointer-events:none;white-space:pre;text-align:center;min-width:300px}
