:root{--bg:#07111c;--bg2:#0c1a27;--bg3:#0f2030;--surface:#112236;--surface2:#163044;--border:#1e3a50;--border2:#254d6a;--gr:#00d4a8;--gr2:#00b891;--gr-dim:#00d4a81f;--gr-glow:#00d4a840;--red:#ff4d6d;--red-dim:#ff4d6d1f;--yellow:#f9c74f;--blue:#4d9fff;--blue-dim:#4d9fff1f;--text:#e8f4f0;--text2:#8ab0c8;--text3:#4d7a96;--radius:10px;--radius-lg:16px;--shadow:0 4px 24px #0006;--transition:.18s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;overflow:hidden}a{color:var(--gr);text-decoration:none}button{cursor:pointer;transition:var(--transition);border:none;outline:none;font-family:inherit;font-size:14px}input,textarea,select{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);transition:var(--transition);outline:none;padding:10px 14px;font-family:inherit;font-size:14px}input:focus,textarea:focus,select:focus{border-color:var(--gr);box-shadow:0 0 0 3px var(--gr-dim)}.app-shell{flex-direction:column;height:100vh;display:flex;overflow:hidden}.topbar{background:var(--bg2);border-bottom:1px solid var(--border);z-index:100;align-items:center;gap:16px;height:56px;min-height:56px;padding:0 20px;display:flex}.topbar-logo{color:var(--gr);letter-spacing:-.5px;align-items:center;gap:8px;font-family:Inter,sans-serif;font-size:18px;font-weight:400;display:flex}.topbar-logo span{color:var(--text)}@keyframes ticker-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.topbar-ticker-wrap{flex:1;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 6% 94%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 6% 94%,#0000 100%)}.topbar-ticker-track{will-change:transform;align-items:center;width:max-content;animation:linear infinite ticker-scroll;display:flex}.topbar-ticker-track:hover{animation-play-state:paused}.ticker-item{white-space:nowrap;align-items:center;gap:6px;padding:0 16px;font-size:12px;display:flex}.ticker-sym{color:var(--text);font-weight:600}.ticker-price{color:var(--text2)}.ticker-chg.up{color:var(--gr)}.ticker-chg.dn{color:var(--red)}.ticker-sep{color:var(--border2);font-size:10px}.topbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.status-bar{align-items:center;gap:16px;font-size:12px;display:flex}.xp-bar-wrap{align-items:center;gap:8px;display:flex}.xp-label{color:var(--gr);white-space:nowrap;font-weight:600}.xp-bar{background:var(--surface2);border-radius:3px;width:80px;height:6px;overflow:hidden}.xp-bar-fill{background:linear-gradient(90deg, var(--gr2), var(--gr));border-radius:3px;height:100%;transition:width .4s}.avatar-btn{background:linear-gradient(135deg, var(--gr2), var(--gr));width:34px;height:34px;color:var(--bg);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.body-wrap{flex:1;display:flex;overflow:hidden}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;width:220px;min-width:220px;padding:12px 0;display:flex;overflow:hidden auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}.sidebar-section{margin-bottom:4px}.sidebar-section-label{color:var(--text3);text-transform:uppercase;letter-spacing:.8px;padding:8px 16px 4px;font-size:10px;font-weight:600}.nav-item{color:var(--text2);cursor:pointer;transition:var(--transition);text-align:left;background:0 0;border:none;border-radius:0;align-items:center;gap:10px;width:100%;padding:9px 16px;font-size:13px;display:flex;position:relative}.nav-item:hover{color:var(--text);background:var(--gr-dim)}.nav-item.active{color:var(--gr);background:var(--gr-dim);font-weight:500}.nav-item.active:before{content:"";background:var(--gr);border-radius:0 2px 2px 0;width:3px;position:absolute;top:0;bottom:0;left:0}.nav-item.locked{opacity:.4;cursor:not-allowed}.nav-icon{text-align:center;flex-shrink:0;width:20px;font-size:16px}.nav-lock{opacity:.6;margin-left:auto;font-size:11px}.main-content{flex-direction:column;flex:1;display:flex;overflow:hidden}.page-header{flex-shrink:0;justify-content:space-between;align-items:flex-end;padding:20px 24px 0;display:flex}.page-title{color:var(--text);font-size:22px;font-weight:700}.page-subtitle{color:var(--text2);margin-top:2px;font-size:13px}.page-body{flex:1;padding:20px 24px 24px;overflow-y:auto}.page-body::-webkit-scrollbar{width:6px}.page-body::-webkit-scrollbar-track{background:0 0}.page-body::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.card-sm{padding:14px 16px}.card-title{color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;font-size:13px;font-weight:600}.card-value{color:var(--text);letter-spacing:-1px;font-size:28px;font-weight:700}.card-value.green{color:var(--gr)}.card-value.red{color:var(--red)}.card-change{margin-top:4px;font-size:12px}.card-change.up{color:var(--gr)}.card-change.dn{color:var(--red)}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;display:grid}.btn{border-radius:var(--radius);transition:var(--transition);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:500;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--gr2), var(--gr));color:var(--bg)}.btn-primary:hover{box-shadow:0 4px 16px var(--gr-glow);transform:translateY(-1px)}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--gr);color:var(--gr)}.btn-danger{background:var(--red-dim);color:var(--red);border:1px solid #0000}.btn-danger:hover{border-color:var(--red)}.btn-sm{padding:6px 14px;font-size:12px}.btn-lg{padding:14px 28px;font-size:16px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.badge{border-radius:20px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-green{background:var(--gr-dim);color:var(--gr)}.badge-red{background:var(--red-dim);color:var(--red)}.badge-blue{background:var(--blue-dim);color:var(--blue)}.badge-yellow{color:var(--yellow);background:#f9c74f26}.table-wrap{border-radius:var(--radius-lg);border:1px solid var(--border);overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{background:var(--surface);text-align:left;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);padding:12px 16px;font-size:11px;font-weight:600}tbody tr{border-bottom:1px solid var(--border);transition:var(--transition)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--gr-dim)}tbody td{color:var(--text);padding:12px 16px;font-size:13px}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:400px;box-shadow:var(--shadow);padding:48px 40px}.login-logo{color:var(--gr);letter-spacing:-1px;margin-bottom:6px;font-size:32px;font-weight:800}.login-logo span{color:var(--text)}.login-tagline{color:var(--text2);margin-bottom:36px;font-size:14px}.login-label{color:var(--text2);text-align:left;margin-bottom:6px;font-size:12px;font-weight:500;display:block}.login-input{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);letter-spacing:2px;margin-bottom:20px;padding:12px 16px;font-size:16px}.login-input:focus{border-color:var(--gr);box-shadow:0 0 0 3px var(--gr-dim)}.login-btn{background:linear-gradient(135deg, var(--gr2), var(--gr));width:100%;color:var(--bg);border-radius:var(--radius);cursor:pointer;transition:var(--transition);border:none;margin-bottom:16px;padding:14px;font-size:15px;font-weight:700}.login-btn:hover{box-shadow:0 4px 20px var(--gr-glow);transform:translateY(-1px)}.login-error{color:var(--red);margin-top:8px;font-size:13px}.login-roles{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:20px;display:flex}.role-chip{background:var(--bg3);border:1px solid var(--border);color:var(--text3);cursor:pointer;transition:var(--transition);border-radius:20px;padding:4px 10px;font-size:11px}.role-chip:hover,.role-chip.active{background:var(--gr-dim);border-color:var(--gr);color:var(--gr)}.chart-wrap{width:100%;position:relative}.chart-wrap svg{width:100%;overflow:visible}.chart-tf-btns{gap:4px;margin-bottom:12px;display:flex}.chart-tf-btn{background:var(--surface2);color:var(--text2);border:none;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:600}.chart-tf-btn.active{background:var(--gr-dim);color:var(--gr)}.stats-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-label{color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px}.stat-value{color:var(--text);font-size:20px;font-weight:700}.stat-sub{color:var(--text2);margin-top:2px;font-size:12px}.stat-sub.up{color:var(--gr)}.stat-sub.dn{color:var(--red)}.stock-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:var(--transition);padding:14px 16px}.stock-card:hover{border-color:var(--gr);background:var(--gr-dim);box-shadow:var(--shadow);transform:translateY(-2px)}.stock-sym{color:var(--text);font-size:16px;font-weight:700}.stock-name{color:var(--text3);margin-top:1px;font-size:11px}.stock-price{margin-top:8px;font-size:18px;font-weight:600}.stock-chg{margin-top:2px;font-size:12px}.up{color:var(--gr)}.dn{color:var(--red)}.trade-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.trade-tabs{background:var(--bg3);border-radius:var(--radius);gap:4px;margin-bottom:20px;padding:4px;display:flex}.trade-tab{color:var(--text2);background:0 0;border-radius:6px;flex:1;padding:8px;font-size:13px;font-weight:600}.trade-tab.active.buy{background:var(--gr-dim);color:var(--gr)}.trade-tab.active.sell{background:var(--red-dim);color:var(--red)}.game-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;padding:28px}.game-timer{color:var(--gr);font-variant-numeric:tabular-nums;font-size:36px;font-weight:800}.game-timer.warning{color:var(--yellow)}.game-timer.danger{color:var(--red)}.game-progress-bar{background:var(--surface2);border-radius:4px;width:100%;height:8px;margin:12px 0;overflow:hidden}.game-progress-fill{background:linear-gradient(90deg, var(--gr2), var(--gr));border-radius:4px;height:100%;transition:width .1s linear}.game-option{text-align:left;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);cursor:pointer;transition:var(--transition);margin-bottom:8px;padding:14px 18px;font-size:14px}.game-option:hover{border-color:var(--gr);background:var(--gr-dim)}.game-option.correct{border-color:var(--gr);background:var(--gr-dim);color:var(--gr)}.game-option.wrong{border-color:var(--red);background:var(--red-dim);color:var(--red)}.level-map{flex-direction:column;gap:12px;display:flex}.level-node{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition);align-items:center;gap:16px;padding:16px 20px;display:flex}.level-node:hover:not(.locked){border-color:var(--gr);transform:translate(4px)}.level-node.completed{border-color:var(--gr2);background:var(--gr-dim)}.level-node.locked{opacity:.4;cursor:not-allowed}.level-node-num{background:var(--bg3);border:2px solid var(--border2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.level-node.completed .level-node-num{background:var(--gr-dim);border-color:var(--gr);color:var(--gr)}.diploma-card{background:linear-gradient(135deg, var(--surface), var(--bg3));border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;position:relative;overflow:hidden}.diploma-card:before{content:"";background:linear-gradient(90deg, var(--gr2), var(--gr));height:3px;position:absolute;top:0;left:0;right:0}.diploma-card.earned:before{background:linear-gradient(90deg,#f9c74f,#f8961e)}.diploma-icon{margin-bottom:12px;font-size:36px}.diploma-title{color:var(--text);margin-bottom:4px;font-size:16px;font-weight:700}.diploma-desc{color:var(--text2);margin-bottom:16px;font-size:12px}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-lg);width:90%;max-width:480px;box-shadow:var(--shadow);padding:28px;animation:.2s modal-in}@keyframes modal-in{0%{opacity:0;transform:scale(.95)translateY(-8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-title{color:var(--text);margin-bottom:20px;font-size:18px;font-weight:700}.modal-close{color:var(--text2);background:0 0;padding:4px;font-size:18px;position:absolute;top:16px;right:16px}.xp-tag{background:var(--gr-dim);color:var(--gr);border-radius:20px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.level-badge{background:linear-gradient(135deg, var(--gr2), var(--gr));color:var(--bg);border-radius:20px;align-items:center;gap:4px;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.section-title{color:var(--text);align-items:center;gap:8px;margin-bottom:14px;font-size:16px;font-weight:700;display:flex}.divider{background:var(--border);height:1px;margin:16px 0}.text-muted{color:var(--text2)}.text-sm{font-size:12px}.text-green{color:var(--gr)}.text-red{color:var(--red)}.text-yellow{color:var(--yellow)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mb-24{margin-bottom:24px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.empty-state{text-align:center;color:var(--text2);padding:48px 20px}.empty-state-icon{margin-bottom:12px;font-size:48px}.progress-bar{background:var(--surface2);border-radius:3px;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--gr2), var(--gr));border-radius:3px;height:100%}.ai-chat{flex-direction:column;height:100%;display:flex;overflow:hidden}.ai-messages{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.ai-msg{border-radius:var(--radius-lg);max-width:80%;padding:12px 16px;font-size:14px;line-height:1.5}.ai-msg.user{background:var(--gr-dim);border:1px solid var(--gr2);color:var(--text);align-self:flex-end}.ai-msg.assistant{background:var(--surface);border:1px solid var(--border);color:var(--text);align-self:flex-start}.ai-input-row{border-top:1px solid var(--border);gap:8px;padding:16px;display:flex}.ai-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);resize:none;flex:1;padding:10px 14px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text3)}
