:root{--ink: #141019;--stone0: #2c2838;--stone1: #3d3a4f;--stone2: #565670;--bone: #d8d2bd;--gold: #e8b33a;--gold-dark: #8a6420;--str: #c0392b;--agi: #2ecc71;--int: #4f7cff;--danger: #ff6a1f;--px: "Rubik", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--ink);color:var(--bone);overflow:hidden;font-family:var(--px)}#game{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}#game canvas{image-rendering:pixelated;image-rendering:crisp-edges}#ui{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;display:flex;align-items:center;justify-content:center}.screen{pointer-events:auto;display:flex;align-items:safe center;justify-content:center;width:100%;height:100%;padding:16px;overflow-y:auto}.hidden{display:none!important}.panel{background:linear-gradient(180deg,#2c2838f0,#1c1824f5);border:4px solid var(--stone2);outline:2px solid var(--gold-dark);box-shadow:0 0 0 6px var(--ink),0 16px 48px #0009,inset 0 0 0 2px #e8b33a40;padding:20px 24px;max-width:100%;image-rendering:pixelated}.menu-panel{width:420px;display:flex;flex-direction:column;gap:12px;text-align:center}.logo{margin:0;font-size:40px;letter-spacing:2px;color:var(--gold);text-shadow:0 3px 0 var(--gold-dark),0 0 18px rgba(255,179,71,.55),0 6px 0 var(--ink)}.tag{margin:0 0 6px;color:#a39e8f;font-size:14px}.hint{margin:4px 0 0;color:#7a7f94;font-size:12px;line-height:1.6}.field{display:flex;flex-direction:column;gap:4px;text-align:left;font-size:13px;color:#a39e8f}input{font:inherit;font-size:16px;padding:8px 10px;background:var(--ink);color:var(--bone);border:2px solid var(--stone2);outline:none}input:focus{border-color:var(--gold)}.join-row{display:flex;gap:8px}.join-row input{flex:1;text-transform:uppercase;letter-spacing:4px;text-align:center;min-width:0}.btn{font:inherit;font-size:16px;padding:10px 14px;cursor:pointer;color:var(--bone);background:var(--stone1);border:2px solid var(--stone2);box-shadow:0 3px 0 var(--ink)}.btn:hover{border-color:var(--gold)}.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}.btn.primary{background:#6b1d24;border-color:var(--str)}.btn.primary:hover{border-color:var(--gold)}.btn.ghost{background:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.lobby-panel{width:720px;display:flex;flex-direction:column;gap:12px}.plaque{align-self:center;padding:8px 18px;background:var(--stone0);border:2px solid var(--gold-dark);color:#a39e8f;font-size:14px;letter-spacing:2px}.plaque span{color:var(--gold);font-size:26px;letter-spacing:6px;margin-left:8px;vertical-align:middle}.lobby-panel .hint{text-align:center}.classes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.class-card{background:var(--stone0);border:2px solid var(--stone2);padding:8px;cursor:pointer;text-align:center;display:flex;flex-direction:column;gap:6px;align-items:center}.class-card:hover{border-color:var(--bone)}.class-card.selected{border-color:var(--gold);box-shadow:inset 0 0 0 2px #e8b33a59}.class-card img.portrait{width:48px;height:48px;image-rendering:pixelated}.class-card h3{margin:0;font-size:16px}.class-card .subs{display:flex;gap:6px;justify-content:center}.sub-toggle{flex:1 1 0;min-width:0;white-space:nowrap;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 4px;font:inherit;font-size:12px;color:#7a7f94;background:#00000040;border:2px solid var(--stone2);cursor:pointer}.sub-toggle img{width:32px;height:32px;image-rendering:pixelated;opacity:.55}.sub-toggle:hover{border-color:var(--bone)}.sub-toggle.on{color:var(--bone);border-color:var(--bone)}.class-card.selected .sub-toggle.on{border-color:var(--gold);box-shadow:inset 0 0 0 2px #e8b33a40}.sub-toggle.on img{opacity:1}.class-card .attrs{font-size:13px;display:flex;gap:8px}.class-card .hearts{color:#d8434b;letter-spacing:1px}.class-card h3 .cls{font-size:12px;color:#7a7f94}.class-card h3.warrior{color:var(--str)}.class-card h3.rogue{color:var(--agi)}.class-card h3.mage{color:var(--int)}.class-card .blurb{font-size:12px;color:#a39e8f;line-height:1.4;min-height:28px}.class-card .kit{font-size:12px;color:#7a7f94;line-height:1.6}.s{color:var(--str)}.a{color:var(--agi)}.i{color:var(--int)}.party{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.slot{background:var(--ink);border:2px dashed var(--stone1);padding:8px;min-height:92px;text-align:center;font-size:13px}.slot.filled{border-style:solid}.slot img{width:48px;height:48px;image-rendering:pixelated;display:block;margin:0 auto 4px}.slot .ready{color:var(--agi)}.slot .notready{color:#7a7f94}.lobby-actions{display:flex;gap:10px;justify-content:center}.over-panel{width:560px;text-align:center}.over-panel h2{margin:0 0 12px;font-size:32px}.over-panel h2.win{color:var(--gold);text-shadow:0 0 16px rgba(255,179,71,.6)}.over-panel h2.lose{color:var(--str)}.over-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0;text-align:left;font-size:13px}.over-player{background:var(--ink);border:2px solid var(--stone1);padding:8px}.over-player img.item{width:16px;height:16px;image-rendering:pixelated;margin-right:2px;vertical-align:middle}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:#6b1d24;border:2px solid var(--str);padding:8px 14px;font-size:14px;pointer-events:none}@media(max-width:760px){.classes{grid-template-columns:1fr}.party{grid-template-columns:repeat(2,1fr)}.logo{font-size:30px}}.invite-row{display:flex;gap:8px}.invite-row input{flex:1;min-width:0;font-size:14px;color:#a39e8f}.ctrl-icon{height:22px;width:auto;vertical-align:middle;image-rendering:pixelated;margin:0 1px}.ctrl-icon.mouse{height:24px}.controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px 10px;text-align:left;font-size:13px;line-height:1.4;color:#a39e8f;margin-top:4px}.controls>div{display:contents}.controls .keys{display:inline-flex;align-items:center;gap:2px}.class-card .kit{display:grid;justify-content:center;row-gap:3px}.kit div{display:flex;align-items:center;gap:6px}.kit .ctrl-icon{height:18px;width:28px;object-fit:contain}.kit .ctrl-icon.mouse{height:20px}#screen-pause{background:#0a080e8c}.pause-panel{width:440px;display:flex;flex-direction:column;gap:12px;text-align:center}.pause-panel h2{margin:0;font-size:30px;color:var(--gold);text-shadow:0 3px 0 var(--gold-dark)}.pause-actions{display:flex;flex-direction:column;gap:8px}.slider{display:grid;grid-template-columns:11em 1fr 3em;align-items:center;gap:10px;padding:2px 4px;font-size:16px;text-align:left}.slider input{width:100%;accent-color:var(--gold)}.slider output{text-align:right;font-variant-numeric:tabular-nums}.slider input:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}#perf{position:fixed;top:6px;right:6px;z-index:50;padding:4px 6px;font:11px/1.35 ui-monospace,monospace;white-space:pre;color:#e8e0c8;background:#0e0a12cc;border:1px solid #3a2f40;pointer-events:none}.run-settings{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px;padding:8px 10px;border:1px solid #3a2f40;background:#140e1899}.heat-row{display:flex;align-items:center;gap:10px}.heat-info{flex:1;display:flex;flex-direction:column;gap:2px;text-align:left}.heat-info b{color:#ff9a3c}.btn.small{min-width:34px;padding:4px 8px}.toggle{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.over-panel .score{font-size:20px;margin:4px 0}.over-panel .score b{color:#f4c542}.badges{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.badges span{padding:2px 6px;border:1px solid #f4c542;color:#f4c542;font-size:13px}.records-panel{max-width:640px;max-height:90vh;overflow-y:auto}.records-panel h3{margin:10px 0 4px;font-size:15px}.runs{width:100%;border-collapse:collapse;font-size:13px}.runs th,.runs td{padding:2px 4px;text-align:left}.runs tr.win td:first-child{color:#8fd36a}.runs tr.lose td:first-child{color:#c86a5a}.codex{display:flex;flex-wrap:wrap;gap:3px}.codex .item,.codex .unknown{width:24px;height:24px;image-rendering:pixelated}.codex .unknown{display:inline-flex;align-items:center;justify-content:center;color:#5a4d60;border:1px dashed #3a2f40;font-size:13px}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-arabic-400-normal-B6c_9tGI.woff2) format("woff2"),url(/assets/rubik-arabic-400-normal-Dci85dQr.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-cyrillic-ext-400-normal-D-KNTwvG.woff2) format("woff2"),url(/assets/rubik-cyrillic-ext-400-normal-CTkTGo13.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-cyrillic-400-normal-C5G8_8ug.woff2) format("woff2"),url(/assets/rubik-cyrillic-400-normal-D5R8xuhl.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-hebrew-400-normal-Dp0lvSRB.woff2) format("woff2"),url(/assets/rubik-hebrew-400-normal-BQDoxs6C.woff) format("woff");unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-latin-ext-400-normal-BtzQ7olK.woff2) format("woff2"),url(/assets/rubik-latin-ext-400-normal-E7wwwcV8.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-latin-400-normal-j0pmKyiQ.woff2) format("woff2"),url(/assets/rubik-latin-400-normal-BV1Ho3GG.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-arabic-700-normal-DNWlnGaX.woff2) format("woff2"),url(/assets/rubik-arabic-700-normal-BJDbbalN.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-cyrillic-ext-700-normal-3CKVJqgg.woff2) format("woff2"),url(/assets/rubik-cyrillic-ext-700-normal-CEbQMks9.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-cyrillic-700-normal-DFnztZBh.woff2) format("woff2"),url(/assets/rubik-cyrillic-700-normal-C_jxLOfU.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-hebrew-700-normal-Da14F88e.woff2) format("woff2"),url(/assets/rubik-hebrew-700-normal-B2Hm7hpE.woff) format("woff");unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-latin-ext-700-normal-D5I4eEgK.woff2) format("woff2"),url(/assets/rubik-latin-ext-700-normal-CQ1www4I.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/rubik-latin-700-normal-D-tMm-eS.woff2) format("woff2"),url(/assets/rubik-latin-700-normal-KHOtubUA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
