:root{--bg: #0b1020;--panel: rgba(16, 22, 40, .92);--line: rgba(120, 140, 190, .18);--text: #dbe4f5;--dim: #8fa3c8;--accent: #4f8ef7}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 800px at 65% 20%,#131b33,#0b1020 55%,#070a15);color:var(--text);font-family:-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;overflow:hidden}.app{position:relative;width:100%;height:100%}.galaxy-host{position:fixed;top:0;right:0;bottom:0;left:0}.galaxy-host canvas{display:block;touch-action:none}.topbar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:12px 16px 18px;pointer-events:none;background:linear-gradient(#070a15e0,#070a1500)}.topbar>*{pointer-events:auto}.brand h1{margin:0;font-size:20px;letter-spacing:1px}.brand p{margin:3px 0 0;font-size:12px;color:var(--dim)}.controls{display:flex;gap:8px;align-items:center;margin-left:auto;flex-wrap:wrap}.controls select,.controls .ghost,.demo-btn{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}.ctl-label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--dim)}.more{display:contents}.filters-toggle{display:none;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer;white-space:nowrap}.filters-toggle.on{border-color:var(--accent);color:#fff}.demo-btn{border-color:#ffd16673;color:#ffd166}.controls .ghost{color:var(--dim)}.controls .ghost.on{color:var(--text);border-color:var(--accent);background:#4f8ef729}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:999px;color:var(--text);font-size:12px;padding:5px 10px;cursor:pointer}.chip i{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c)}.chip em{font-style:normal;color:var(--dim);font-size:11px}.chip.off{opacity:.35}.search{position:relative}.search input{width:220px;background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:7px 12px;font-size:13px;outline:none}.search input:focus{border-color:var(--accent)}.search .drop{position:absolute;top:40px;left:0;width:340px;max-height:340px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;z-index:30}.search .drop button{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);padding:8px 12px;font-size:13px;cursor:pointer}.search .drop button:hover{background:#4f8ef726}.search .drop small{color:var(--dim);margin-left:6px}.panel{position:fixed;top:118px;right:14px;bottom:46px;width:384px;z-index:25;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;overflow:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.panel h2{margin:0 26px 2px 0;font-size:18px;line-height:1.35}.panel .en{color:var(--dim);font-size:12px;margin-bottom:8px}.panel .badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.badge{font-size:11px;border:1px solid var(--line);border-radius:6px;padding:2px 8px;color:var(--dim)}.badge.sub{color:var(--text);border-color:var(--c, var(--line))}.panel h3{font-size:13px;color:var(--dim);margin:15px 0 6px;font-weight:600}.panel p.desc{font-size:14px;line-height:1.65;margin:6px 0}.panel ul{margin:0;padding-left:18px;font-size:13px;line-height:1.75}.cluster-quote{border-left:3px solid var(--accent);padding:6px 10px;background:#4f8ef714;border-radius:0 8px 8px 0;font-size:13px;line-height:1.6;color:#c6d4f2}.edge{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid rgba(120,140,190,.08);color:var(--text);padding:7px 2px;cursor:pointer;font-size:13px;line-height:1.5}.edge:hover{background:#4f8ef714}.edge .why{display:block;color:var(--dim);font-size:12px;margin-top:2px}.edge .tag{font-size:10px;border-radius:4px;padding:1px 5px;margin-right:6px}.tag.hard{background:#ff787826;color:#ff9c9c}.tag.soft{background:#ffd1661f;color:#ffd166}.panel .none{color:var(--dim);font-size:12px;margin:4px 0}.panel .close{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--dim);font-size:18px;cursor:pointer}.panel details{font-size:12px;color:var(--dim);margin-top:14px}.panel details code{font-size:11px}.panel details p{margin:6px 0 0}.footer{position:fixed;left:14px;bottom:12px;z-index:20;font-size:11px;color:var(--dim)}.footer .fs{display:none}.footer button{background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px;padding:0 2px}.demo-caption{position:fixed;bottom:46px;left:50%;transform:translate(-50%);z-index:30;background:var(--panel);border:1px solid rgba(255,209,102,.45);border-radius:12px;padding:10px 16px;display:flex;gap:12px;align-items:center;font-size:14px;max-width:88vw}.demo-caption .demo-step{color:#ffd166;font-size:12px;white-space:nowrap}.demo-caption .demo-age{color:var(--dim);font-size:12px;white-space:nowrap}.demo-caption button{background:none;border:1px solid var(--line);color:var(--dim);border-radius:6px;padding:3px 10px;cursor:pointer;white-space:nowrap}.modal-veil{position:fixed;top:0;right:0;bottom:0;left:0;background:#04060c9e;z-index:40;display:flex;align-items:center;justify-content:center}.modal{width:min(580px,92vw);max-height:82vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px}.modal h2{margin-top:0;font-size:18px}.modal p,.modal li{font-size:13px;line-height:1.8}.modal .attr{font-size:12px;color:var(--dim);line-height:1.7;border:1px dashed var(--line);border-radius:8px;padding:10px 12px}.modal a{color:var(--accent)}.modal .close{float:right;background:none;border:1px solid var(--line);color:var(--dim);border-radius:6px;padding:4px 12px;cursor:pointer;font-size:12px}.center-err{height:100%;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;text-align:center;color:#ff9c9c;font-size:14px}.center-err code{color:var(--dim)}.tip{background:#0a0e1cf2;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12px;color:var(--text);max-width:260px}.tip span{display:block;color:var(--dim);margin-top:3px}@media (max-width: 820px){.topbar{padding:9px 12px 12px;gap:7px 8px;background:linear-gradient(#070a15f0,#070a15b8 62%,#070a1500);overflow-x:clip}.brand{flex:1 1 auto;min-width:0}.brand p{display:none}.brand h1{font-size:16px}.controls{flex:1 1 100%;margin-left:0;flex-wrap:nowrap;gap:6px;min-width:0}.search{flex:1 1 auto;min-width:0}.search input{width:100%}.search .drop{width:min(92vw,420px)}.filters-toggle{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto}.more{display:none;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:6px}.topbar.open .more{display:flex}.more select,.more .ghost,.more .demo-btn{font-size:12px;padding:6px 10px}.chips{flex:1 1 100%;flex-wrap:wrap;gap:4px;max-width:100%}.chip{font-size:11px;padding:4px 8px;gap:4px}.chip i{width:7px;height:7px}.chip em{font-size:10px}.panel{top:auto;left:8px;right:8px;bottom:8px;width:auto;max-height:58vh}.demo-caption{flex-wrap:wrap;bottom:40px;max-width:94vw}.footer{max-width:calc(100% - 24px)}.footer .fh{display:none}.footer .fs{display:inline}}@media (max-width: 520px){.chip em{display:none}}
