:root{--bg: #17191b;--panel: rgba(21, 24, 27, .9);--panel-solid: #1b1f22;--border: #2d3338;--border-bright: #3c444a;--text: #e2e6e9;--text-dim: #a0a9af;--text-faint: #6e767c;--accent: #c9d1d6;--warning: #cf9b4e;--valid: #8fb093;--invalid: #c17d7d;--road: #a5adb2;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-size:13px}#canvas-root{position:fixed;inset:0;z-index:0}.ui-layer{position:fixed;inset:0;z-index:10;pointer-events:none}.ui-layer>*{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;backdrop-filter:blur(8px)}.topbar{position:fixed;top:12px;left:50%;transform:translate(-50%);display:flex;gap:20px;align-items:center;padding:8px 18px;z-index:11;font-variant-numeric:tabular-nums}.topbar .stat{display:flex;flex-direction:column;line-height:1.25}.topbar .stat .k{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.topbar .stat .v{font-size:15px;color:var(--text);font-weight:600}.topbar .stat .v.pos{color:var(--valid)}.topbar .stat .v.neg{color:var(--invalid)}.dot-conn{width:8px;height:8px;border-radius:50%;background:var(--valid);box-shadow:0 0 6px var(--valid)}.library{position:fixed;top:70px;left:12px;bottom:120px;width:232px;display:flex;flex-direction:column;padding:10px;gap:8px;z-index:11}.library h3,.inspector h3,.region h3,.feed h3{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);margin-bottom:2px}.search{width:100%;background:#101316;border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:12px}.tabs{display:flex;flex-wrap:wrap;gap:4px}.tab{font-size:10px;padding:3px 7px;border:1px solid var(--border);border-radius:12px;color:var(--text-dim);cursor:pointer;background:transparent}.tab.active{border-color:var(--border-bright);color:var(--text);background:#22272b}.lib-list{overflow-y:auto;display:flex;flex-direction:column;gap:5px;flex:1}.lib-item{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:#181c1f}.lib-item:hover{border-color:var(--border-bright);background:#1e2327}.lib-item.sel{border-color:var(--accent);background:#262c31}.lib-item.unaffordable{opacity:.5}.lib-item .nm{font-size:12px;color:var(--text)}.lib-item .meta{font-size:10px;color:var(--text-faint)}.lib-item .cost{font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums}.toolstrip{position:fixed;bottom:14px;left:50%;transform:translate(-50%);display:flex;gap:6px;padding:7px;z-index:11}.tool-btn{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:60px;padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:#181c1f;color:var(--text-dim);cursor:pointer;font-size:10px}.tool-btn.active{border-color:var(--accent);color:var(--text);background:#262c31}.tool-btn .ico{font-size:15px}.inspector{position:fixed;top:70px;right:12px;width:268px;max-height:calc(100vh - 160px);overflow-y:auto;padding:12px;z-index:11}.inspector .title{font-size:16px;font-weight:600;margin-bottom:2px}.inspector .sub{font-size:11px;color:var(--text-dim);margin-bottom:10px}.row{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.03)}.row .k{color:var(--text-dim)}.row .v{color:var(--text);font-variant-numeric:tabular-nums}.bar{height:5px;background:#0f1214;border-radius:3px;overflow:hidden;margin:2px 0 6px}.bar>span{display:block;height:100%;background:var(--valid)}.bar>span.warn{background:var(--warning)}.bar>span.bad{background:var(--invalid)}.btn{width:100%;margin-top:8px;padding:7px;border:1px solid var(--border-bright);border-radius:6px;background:#22282c;color:var(--text);cursor:pointer;font-size:12px}.btn:hover{background:#2a3136}.btn.danger{border-color:#543c3c;color:#e0b4b4}.btn.primary{border-color:var(--valid);color:#d6e6d8}.btn:disabled{opacity:.4;cursor:default}.region{position:fixed;bottom:14px;right:12px;width:268px;max-height:300px;overflow-y:auto;padding:12px;z-index:11}.seedcard{padding:6px 0;border-bottom:1px solid rgba(255,255,255,.04)}.seedcard .nm{font-size:13px;color:var(--text);display:flex;justify-content:space-between}.seedcard .id{font-size:10px;color:var(--text-faint)}.feed{position:fixed;bottom:70px;left:12px;width:232px;max-height:38vh;overflow-y:auto;padding:10px;z-index:11}.feed .item{font-size:11px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.03);color:var(--text-dim);display:flex;gap:6px}.feed .item .k{width:5px;flex:0 0 5px;border-radius:2px}.k.arrival{background:var(--valid)}.k.departure{background:var(--invalid)}.k.build{background:var(--road)}.k.shortage,.k.fire{background:var(--warning)}.k.econ{background:#7f8f9c}.k.info{background:var(--text-faint)}.modal-bg{position:fixed;inset:0;background:#0a0c0e99;display:flex;align-items:center;justify-content:center;z-index:30}.modal{width:420px;padding:24px;text-align:center}.modal h2{font-family:Georgia,serif;font-weight:500;font-size:24px;margin-bottom:8px;letter-spacing:1px}.modal p{color:var(--text-dim);font-size:13px;margin-bottom:16px;line-height:1.5}.modal input{width:100%}.onboard{position:fixed;top:70px;left:50%;transform:translate(-50%);padding:8px 14px;z-index:11;display:flex;gap:14px;font-size:11px}.onboard .step{color:var(--text-faint);display:flex;align-items:center;gap:5px}.onboard .step.done{color:var(--valid)}.onboard .step .box{width:12px;height:12px;border:1px solid currentColor;border-radius:3px;display:inline-flex;align-items:center;justify-content:center;font-size:9px}.flash{position:fixed;bottom:70px;left:50%;transform:translate(-50%);background:#2a2024;border:1px solid #543c3c;color:#e0b4b4;padding:8px 16px;border-radius:6px;z-index:40;font-size:12px}.seg{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-top:6px}.seg button{flex:1;padding:5px;background:#181c1f;color:var(--text-dim);border:none;cursor:pointer;font-size:11px}.seg button.on{background:#2a3136;color:var(--text)}.hint{position:fixed;bottom:70px;left:50%;transform:translate(-50%);color:var(--text-faint);font-size:11px;z-index:11;background:var(--panel);padding:5px 12px;border-radius:14px;border:1px solid var(--border)}a.ghostlink{color:var(--text-faint);font-size:11px;cursor:pointer}.scrolltrack::-webkit-scrollbar{width:6px}.scrolltrack::-webkit-scrollbar-thumb{background:#2d3338;border-radius:3px}
