:root{--bg-0: #040813;--bg-1: #070f22;--bg-2: #101d2f;--ink: #d7e8ff;--muted: #89a3c2;--edge: rgba(105, 190, 255, .35);--edge-soft: rgba(105, 190, 255, .12);--accent: #50d8ff;--accent-2: #ffc562;--panel: rgba(5, 13, 26, .78);font-family:JetBrains Mono,monospace;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--ink);background-color:#000;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body,#root,#app-container{width:100%;height:100%;overflow:hidden;background:#000}body{background:radial-gradient(1000px 500px at 80% -10%,rgba(80,216,255,.2),transparent 70%),radial-gradient(700px 420px at 15% 100%,rgba(255,197,98,.1),transparent 70%),linear-gradient(180deg,var(--bg-2),var(--bg-1) 45%,var(--bg-0));color:var(--ink)}#game{image-rendering:pixelated;image-rendering:crisp-edges;position:fixed;top:0;left:0;width:100%;height:100%;touch-action:none;z-index:1}#loading{position:fixed;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;z-index:10;transition:opacity .5s;background:radial-gradient(900px 500px at 50% 15%,rgba(80,216,255,.18),transparent 72%),radial-gradient(700px 420px at 50% 100%,rgba(255,197,98,.12),transparent 70%),linear-gradient(180deg,#020610f5,#02050cfa)}#loading:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(120,170,255,.04) 0 1px,transparent 1px 4px);pointer-events:none}#loading h1{position:relative;z-index:1;font-family:Orbitron,sans-serif;font-size:34px;font-weight:800;letter-spacing:5px;color:#dff2ff;text-shadow:0 0 22px rgba(80,216,255,.38)}.loading-sub{position:relative;z-index:1;color:var(--muted);font-size:11px;letter-spacing:2px;text-transform:uppercase}.bar{position:relative;z-index:1;width:min(420px,74vw);height:16px;border:1px solid var(--edge);border-radius:999px;overflow:hidden;background:linear-gradient(180deg,#07101ee6,#040912e6);box-shadow:0 0 0 1px #50d8ff0f inset}.bar .fill{height:100%;background:linear-gradient(90deg,var(--accent),#7ee9ff 40%,var(--accent-2));width:0%;transition:width .15s;box-shadow:0 0 18px #50d8ff6b}.status{position:relative;z-index:1;margin-top:2px;font-size:11px;color:var(--muted);letter-spacing:1px}.name-overlay{display:flex;position:fixed;inset:0;z-index:15;align-items:center;justify-content:center;background:#030812d1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.name-card{width:min(92vw,380px);padding:18px 16px 16px;border-radius:12px;border:1px solid var(--edge);background:linear-gradient(180deg,#0b182af0,#060d18f0);box-shadow:0 18px 44px #00000075,inset 0 0 0 1px var(--edge-soft)}.name-title{font-family:Orbitron,sans-serif;font-size:14px;letter-spacing:2px;text-transform:uppercase;color:#dff2ff;margin-bottom:6px}.name-sub{color:var(--muted);font-size:11px;line-height:1.4;margin-bottom:10px}.name-input{width:100%;height:36px;border-radius:8px;border:1px solid rgba(105,190,255,.4);background:#020812db;color:#dff2ff;padding:0 10px;font:600 13px JetBrains Mono,monospace;outline:none}.name-input:focus{border-color:#69beffd9;box-shadow:0 0 0 2px #50d8ff26}.name-btn{margin-top:10px;width:100%;height:34px;border-radius:8px;border:1px solid rgba(105,190,255,.5);background:linear-gradient(180deg,#50d8ff4d,#50d8ff1f);color:#dff2ff;font:700 12px JetBrains Mono,monospace;letter-spacing:1px;text-transform:uppercase;cursor:pointer}.name-btn:hover{filter:brightness(1.1)}.npc-chat-overlay{display:flex;position:fixed;inset:0;z-index:18;align-items:center;justify-content:center;background:#020812db;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:14px}.npc-chat-card{width:min(94vw,520px);max-height:min(84vh,560px);border-radius:12px;border:1px solid var(--edge);background:linear-gradient(180deg,#0b182af2,#060d18f2);box-shadow:0 18px 44px #00000080,inset 0 0 0 1px var(--edge-soft);display:flex;flex-direction:column;overflow:hidden}.npc-chat-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 10px;border-bottom:1px solid rgba(105,190,255,.24)}.npc-chat-title{font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#dff2ff;margin-bottom:4px}.npc-chat-sub{color:var(--muted);font-size:10px;line-height:1.3}.npc-chat-close{height:30px;min-width:70px;padding:0 10px;border-radius:8px;border:1px solid rgba(255,127,142,.44);background:linear-gradient(180deg,#582430d6,#260e14eb);color:#ffd2da;font:700 11px JetBrains Mono,monospace;cursor:pointer}.npc-chat-log{flex:1;padding:12px 14px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:180px;background:linear-gradient(180deg,#040a14cc,#050b129e)}.npc-chat-msg{max-width:88%;border-radius:10px;padding:8px 10px;border:1px solid rgba(105,190,255,.28);background:#0c1626db;box-shadow:inset 0 0 0 1px #ffffff08}.npc-chat-msg.player{align-self:flex-end;border-color:#ffc5626b;background:#2c200fe0}.npc-chat-role{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:3px}.npc-chat-msg.player .npc-chat-role{color:#ffd78f}.npc-chat-text{color:#d7e8ff;font-size:12px;line-height:1.35;white-space:pre-wrap;word-break:break-word}.npc-chat-controls{padding:10px 12px 12px;border-top:1px solid rgba(105,190,255,.22);display:flex;gap:8px;align-items:center;background:#040b14d1}.npc-chat-input{flex:1;height:34px;border-radius:8px;border:1px solid rgba(105,190,255,.4);background:#020812e6;color:#dff2ff;padding:0 10px;font:600 12px JetBrains Mono,monospace;outline:none}.npc-chat-input:focus{border-color:#69beffd9;box-shadow:0 0 0 2px #50d8ff26}.npc-chat-send{height:34px;min-width:78px;padding:0 12px;border-radius:8px;border:1px solid rgba(105,190,255,.55);background:linear-gradient(180deg,#50d8ff4d,#50d8ff1f);color:#dff2ff;font:700 11px JetBrains Mono,monospace;letter-spacing:1px;text-transform:uppercase;cursor:pointer}.npc-chat-send:hover,.npc-chat-close:hover{filter:brightness(1.1)}.learning-overlay{display:flex;position:fixed;inset:0;z-index:24;align-items:center;justify-content:center;padding:14px;background:#020812e0;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.learning-card{width:min(94vw,560px);max-height:min(88vh,640px);border-radius:12px;border:1px solid var(--edge);background:linear-gradient(180deg,#0b182af5,#060d18f5);box-shadow:0 18px 44px #00000085,inset 0 0 0 1px var(--edge-soft);display:flex;flex-direction:column;overflow:hidden}.learning-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 14px 10px;border-bottom:1px solid rgba(105,190,255,.24)}.learning-title{font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#dff2ff;margin-bottom:4px}.learning-subtitle{color:var(--muted);font-size:10px;line-height:1.3}.learning-close{height:30px;min-width:36px;border-radius:8px;border:1px solid rgba(255,127,142,.44);background:linear-gradient(180deg,#582430d6,#260e14eb);color:#ffd2da;font:700 11px JetBrains Mono,monospace;cursor:pointer}.learning-progress{padding:8px 14px 7px;border-bottom:1px solid rgba(105,190,255,.16);color:#b9d9f8;font:700 10px JetBrains Mono,monospace;letter-spacing:.6px;text-transform:uppercase;background:#061220a8}.learning-body{flex:1;padding:12px 14px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;background:linear-gradient(180deg,#040a14d6,#040a129e)}.learning-label{color:#d7e8ff;font:600 11px JetBrains Mono,monospace;line-height:1.45}.learning-input{width:100%;min-height:88px;border-radius:8px;border:1px solid rgba(105,190,255,.4);background:#020812e6;color:#dff2ff;padding:8px 10px;font:600 12px JetBrains Mono,monospace;outline:none;resize:vertical}.learning-input:focus{border-color:#69beffd9;box-shadow:0 0 0 2px #50d8ff26}.learning-help{color:var(--muted);font-size:10px;line-height:1.35}.learning-inline-msg{padding:7px 8px;border-radius:8px;border:1px solid rgba(255,127,142,.44);background:#3a141cad;color:#ffd2da;font-size:10px;line-height:1.35}.learning-method-grid{display:grid;gap:8px}.learning-method{text-align:left;border-radius:10px;border:1px solid rgba(105,190,255,.24);background:#091423d1;padding:10px;cursor:pointer;color:#d7e8ff;transition:border-color .15s,transform .15s,background .15s}.learning-method:hover{border-color:#69beff85;transform:translateY(-1px)}.learning-method.selected{border-color:#50d8ffbf;background:#0e233ae0;box-shadow:inset 0 0 0 1px #50d8ff38}.learning-method-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:4px}.learning-method-name{font:700 12px JetBrains Mono,monospace;color:#e6f4ff}.learning-method-xp{color:#9be9ff;font-size:10px}.learning-method-summary{color:#b4cfe9;font-size:10px;line-height:1.35;margin-bottom:6px}.learning-method-badge{display:inline-block;border-radius:999px;border:1px solid rgba(255,197,98,.55);background:#423212b8;color:#ffdca1;font-size:9px;line-height:1;padding:4px 7px;text-transform:uppercase;letter-spacing:.5px}.learning-question-count{color:#9ed7ff;font-size:10px;text-transform:uppercase;letter-spacing:.5px}.learning-question{color:#dff2ff;font:600 12px JetBrains Mono,monospace;line-height:1.4}.learning-answer-list{display:grid;gap:7px}.learning-answer{border-radius:10px;border:1px solid rgba(105,190,255,.26);background:#091423d1;color:#d7e8ff;display:flex;align-items:center;gap:8px;padding:8px 10px;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.learning-answer:hover{border-color:#69beff80}.learning-answer.selected{border-color:#50d8ffbf;background:#0e233ae6;box-shadow:inset 0 0 0 1px #50d8ff38}.learning-answer-num{width:22px;height:22px;border-radius:6px;border:1px solid rgba(105,190,255,.45);display:inline-flex;align-items:center;justify-content:center;font:700 11px JetBrains Mono,monospace;color:#9fe6ff;flex:none}.learning-answer-text{font-size:11px;line-height:1.35}.learning-result{border-radius:10px;border:1px solid rgba(105,190,255,.24);background:#081422d1;padding:10px;display:flex;flex-direction:column;gap:6px}.learning-result.success{border-color:#6de8af94;background:#102822bd}.learning-result.retry{border-color:#ff7f8e80;background:#30121cb3}.learning-result-title{font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#e8f6ff}.learning-result-body{color:#d7e8ff;font-size:11px;line-height:1.45}.learning-result-meta{color:#9ad7ff;font-size:10px}.learning-footer{padding:10px 12px 12px;border-top:1px solid rgba(105,190,255,.22);display:flex;justify-content:flex-end;gap:8px;background:#040b14d6}.learning-btn{height:34px;min-width:104px;padding:0 12px;border-radius:8px;border:1px solid rgba(105,190,255,.55);background:linear-gradient(180deg,#50d8ff4d,#50d8ff1f);color:#dff2ff;font:700 11px JetBrains Mono,monospace;letter-spacing:1px;text-transform:uppercase;cursor:pointer}.learning-btn-subtle{border-color:#96b2ce73;background:linear-gradient(180deg,#283a5299,#121a26d9);color:#c1d6ed}.learning-btn:hover,.learning-close:hover{filter:brightness(1.1)}.touch-controls{position:fixed;left:0;right:0;bottom:0;z-index:15;display:none;justify-content:space-between;align-items:flex-end;pointer-events:none;user-select:none;-webkit-user-select:none;padding:0 14px calc(env(safe-area-inset-bottom,0px) + 12px)}.touch-controls.active{display:flex}.touch-joystick{position:relative;width:126px;height:126px;pointer-events:auto;touch-action:none;--jx: 0px;--jy: 0px}.touch-joystick-base{width:100%;height:100%;border-radius:50%;border:1px solid rgba(80,216,255,.38);background:radial-gradient(circle at 32% 28%,#4ebfff3d,#0f2136e0 62%),linear-gradient(180deg,#142c46f2,#081220f2);box-shadow:0 10px 26px #0000006b,inset 0 0 0 1px #ffffff12}.touch-joystick-knob{position:absolute;left:50%;top:50%;width:58px;height:58px;border-radius:50%;border:1px solid rgba(115,226,255,.7);background:radial-gradient(circle at 34% 30%,#a3f0ff5c,#183450f2 65%),linear-gradient(180deg,#2c5880f2,#0f1e31f2);box-shadow:0 8px 20px #00000075,inset 0 0 0 1px #ffffff1f;transform:translate(-50%,-50%) translate(var(--jx),var(--jy));transition:transform .06s ease-out;pointer-events:none}.touch-joystick.active .touch-joystick-base{border-color:#7ae7ffad;box-shadow:0 8px 24px #00000070,inset 0 0 0 1px #baf1ff29}.touch-joystick.active .touch-joystick-knob{transition-duration:.02s}.touch-actions{display:flex;gap:10px;align-items:flex-end}.touch-btn{width:56px;height:56px;border-radius:14px;border:1px solid rgba(80,216,255,.48);background:linear-gradient(180deg,#1a3454eb,#081424eb);box-shadow:0 8px 22px #0006,inset 0 0 0 1px #ffffff0f;color:#dff2ff;font-family:Orbitron,sans-serif;font-size:14px;letter-spacing:1px;text-transform:uppercase;pointer-events:auto;touch-action:none}.touch-btn[data-role=action]{border-color:#ffc56299;background:linear-gradient(180deg,#604a1ae6,#2c1c08f2);color:#ffe7bf}.touch-btn[data-role=menu]{border-color:#ff7f8e8f;background:linear-gradient(180deg,#582430e6,#260e14f2);color:#ffd2da}.touch-btn.pressed,.touch-btn:active{transform:translateY(1px) scale(.98);box-shadow:0 4px 14px #0000007a,inset 0 0 0 1px #ffffff1a}@media(max-width:840px){#loading h1{font-size:28px;letter-spacing:3px}.loading-sub,.status{font-size:10px;letter-spacing:1px}.npc-chat-overlay{padding:8px}.npc-chat-card{max-height:88vh}.npc-chat-header{padding:10px 10px 8px}.npc-chat-log{padding:10px}.npc-chat-controls{padding:8px 10px 10px}.npc-chat-input,.npc-chat-send,.npc-chat-close,.learning-close{height:32px}.learning-overlay{padding:8px}.learning-card{max-height:90vh}.learning-header{padding:10px 10px 8px}.learning-progress{padding:7px 10px 6px}.learning-body{padding:10px}.learning-footer{padding:8px 10px 10px}.touch-controls{padding:0 10px calc(env(safe-area-inset-bottom,0px) + 10px)}.touch-joystick{width:112px;height:112px}.touch-joystick-knob{width:52px;height:52px}.touch-actions{gap:8px}.touch-btn{width:50px;height:50px;border-radius:12px;font-size:12px}}@keyframes pulseLogo{0%,to{text-shadow:0 0 18px rgba(80,216,255,.24)}50%{text-shadow:0 0 28px rgba(80,216,255,.5)}}#loading h1{animation:pulseLogo 2.2s ease-in-out infinite}.bottom-actions{position:fixed;bottom:20px;right:20px;z-index:100;display:flex;gap:10px;align-items:center}.feedback-btn{width:32px;height:32px;border-radius:6px;background:#0a182eb3;border:1px solid rgba(80,216,255,.25);color:#50d8ff99;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s,border-color .2s,color .2s}.feedback-btn:hover{transform:scale(1.08);border-color:#50d8ff80;color:#50d8ffe6}.feedback-modal{display:flex;position:fixed;inset:0;z-index:101;background:#000000b3;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.feedback-content{background:#0b182af2;border:1px solid var(--edge);border-radius:12px;padding:20px;width:min(90vw,400px);box-shadow:0 10px 30px #00000080;display:flex;flex-direction:column;gap:12px}.feedback-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.feedback-title{color:var(--accent);font-family:Orbitron,sans-serif;font-size:16px;text-transform:uppercase;letter-spacing:1px}.feedback-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer}.feedback-close:hover{color:#fff}.feedback-textarea{width:100%;height:120px;background:#0000004d;border:1px solid var(--edge-soft);border-radius:6px;padding:10px;color:var(--ink);font-family:inherit;font-size:13px;resize:vertical;outline:none}.feedback-textarea:focus{border-color:var(--accent)}.feedback-submit{background:var(--accent);color:#000;border:none;border-radius:6px;padding:8px;font-weight:700;cursor:pointer;text-transform:uppercase;font-size:12px;letter-spacing:1px;transition:opacity .2s}.feedback-submit:hover{opacity:.9}.feedback-submit:disabled{opacity:.5;cursor:not-allowed}.feedback-status{text-align:center;font-size:11px;color:var(--muted);min-height:16px}
