*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh;background:#f4f6f9;color:#1f2733;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif;font-size:14px}.app{display:flex;min-height:100vh}.sidebar{width:208px;flex-shrink:0;background:#16233a;color:#dbe4f0;display:flex;flex-direction:column;padding:18px 14px}.brand{font-size:17px;font-weight:700;letter-spacing:1px;margin-bottom:18px;color:#fff}.nav{display:flex;flex-direction:column;gap:6px}.nav-item{text-align:left;padding:9px 12px;border:none;border-radius:8px;background:transparent;color:#b9c6d9;font-size:14px;cursor:pointer}.nav-item:hover{background:#ffffff14}.nav-item.active{background:#2f6df6;color:#fff;font-weight:600}.sidebar-foot{margin-top:auto;font-size:11px;color:#7e8ea6}.content{flex:1;min-width:0;padding:16px 20px 40px}.panel-header h2{margin:0;font-size:18px}.panel-sub{color:#66788e;font-size:12px}.panel{margin-top:12px}@media (max-width: 760px){.app{flex-direction:column}.sidebar{width:auto;flex-direction:row;align-items:center;gap:12px;padding:10px 14px}.nav{flex-direction:row;flex-wrap:wrap}.sidebar-foot{display:none}.content{padding:10px}.map-block,.chart-grid{min-width:0}}.control-bar{background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.control-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px}.control-field{display:flex;flex-direction:column;gap:4px}.control-label{font-size:12px;color:#66788e}.control-field input,.control-field select{width:108px;padding:6px 8px;border:1px solid #cfd9e6;border-radius:6px;font-size:13px;background:#fff}.control-buttons{display:flex;gap:8px;margin-left:auto}.btn{padding:7px 14px;border:1px solid #cfd9e6;border-radius:6px;background:#fff;color:#1f2733;font-size:13px;cursor:pointer}.btn:hover:not(:disabled){border-color:#2f6df6;color:#2f6df6}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:#2f6df6;border-color:#2f6df6;color:#fff}.btn-primary:hover:not(:disabled){color:#fff;opacity:.9}.btn-danger{color:#c0353b;border-color:#e3b8b8}.btn-small{padding:2px 8px;font-size:12px}.seg-control{display:inline-flex;border:1px solid #cfd9e6;border-radius:8px;overflow:hidden}.seg-item{padding:7px 14px;border:none;background:#fff;cursor:pointer;font-size:13px;color:#43536a}.seg-item.active{background:#16233a;color:#fff}.control-note{font-size:12px;color:#66788e;align-self:center}.tab-bar{display:flex;gap:4px;margin:14px 0;border-bottom:1px solid #dde4ee}.tab-item{padding:8px 16px;border:none;background:transparent;cursor:pointer;font-size:14px;color:#5a6b82;border-bottom:2px solid transparent}.tab-item.active{color:#2f6df6;border-bottom-color:#2f6df6;font-weight:600}.tab-item:disabled{color:#b3becd;cursor:not-allowed}.tab-page{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}.placeholder{background:#fff;border:1px dashed #cfd9e6;border-radius:10px;padding:46px 20px;text-align:center;color:#66788e;width:100%}.metric-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:12px;width:100%}.metric-card{background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:12px 14px}.metric-label{font-size:13px;color:#43536a;margin-bottom:8px}.metric-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 0}.metric-mode{font-size:11px;padding:1px 7px;border-radius:4px;color:#fff}.mode-money{background:#d97706}.mode-fair{background:#2563eb}.metric-num{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.metric-delta{margin-top:6px;font-size:12px;font-weight:600}.delta-good{color:#1e9e5a}.delta-bad{color:#d13d43}.delta-flat{color:#8a94a4}.conclusion{width:100%;background:#eef4ff;border:1px solid #cdddff;border-radius:10px;padding:12px 16px;font-size:13.5px;line-height:1.8}.conclusion-tag{display:inline-block;background:#2f6df6;color:#fff;font-size:11px;border-radius:4px;padding:2px 8px;margin-right:10px;vertical-align:1px}.step-player{width:100%;background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:10px 14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.step-buttons{display:flex;gap:6px}.step-player input[type=range]{flex:1;min-width:140px}.step-label{font-size:13px;color:#43536a;min-width:92px;text-align:right}.map-block{flex:1 1 380px;min-width:300px;max-width:640px;display:flex;flex-direction:column;gap:6px}.map-info{font-size:12.5px;color:#43536a}.city-map{background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:8px}.map-title{font-weight:600;font-size:13px;padding:2px 4px 6px}.map-svg{width:100%;aspect-ratio:1 / 1;display:block}.map-clickable{cursor:pointer}.map-legend{display:flex;flex-wrap:wrap;gap:6px 12px;padding:6px 4px 2px;font-size:11.5px;color:#5a6b82}.legend-item{display:inline-flex;align-items:center;gap:4px}.lg{display:inline-block;width:9px;height:9px;border-radius:2px}.lg-ring{background:#fff;border-radius:50%;border-width:2px;border-style:solid}.detail-card{flex:0 1 300px;background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:12px 14px;font-size:13px;align-self:flex-start}.detail-head{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:8px}.detail-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:5px 10px}.detail-card dt{color:#66788e;white-space:nowrap}.detail-card dd{margin:0;text-align:right}.detail-route{display:flex;flex-direction:column;max-height:180px;overflow-y:auto}.num-neg{color:#d13d43;font-weight:700}.num-pos{color:#1e9e5a}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:14px;width:100%}@media (max-width: 980px){.chart-grid{grid-template-columns:1fr}}.chart-panel{background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:8px 10px 4px;min-width:0}.chart-title{margin:4px 6px 6px;font-size:13.5px;color:#43536a}.ledger-filters{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}.filter-label{font-size:13px;color:#43536a}.chip{display:inline-block;padding:2px 9px;border-radius:10px;font-size:12px}.chip-good{background:#e2f5ea;color:#1e9e5a}.chip-bad{background:#fde9e9;color:#d13d43}.chip-filter{border:1px solid #cfd9e6;background:#fff;color:#43536a;cursor:pointer}.chip-filter.active{background:#16233a;color:#fff;border-color:#16233a}.chip-event-arrive{background:#eef1f5;color:#5a6b82}.chip-event-assign{background:#e8f0ff;color:#2f6df6}.chip-event-transfer{background:#f1e9ff;color:#7a4fd3}.chip-event-deal{background:#e2f5ea;color:#1e9e5a}.chip-event-lost{background:#fde9e9;color:#d13d43}.chip-event-subsidy{background:#fff3e2;color:#b56a11}.ledger-block{width:100%}.ledger-title{margin:10px 0 6px;font-size:13.5px;color:#43536a}.ledger-table-wrap{background:#fff;border:1px solid #e3e9f1;border-radius:10px;overflow-x:auto}.ledger-table{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}.ledger-table th{position:sticky;top:0;background:#f4f7fb;color:#43536a;font-weight:600;padding:7px 10px;border-bottom:1px solid #dde4ee;white-space:nowrap}.ledger-table td{padding:5px 10px;border-bottom:1px solid #f0f3f8;white-space:nowrap}.ledger-table tbody tr:hover{background:#f8fbff}.ledger-empty{text-align:center;color:#8a94a4;padding:18px!important}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-group+.nav-group{margin-top:14px}.nav-group-title{font-size:11px;color:#7e8ea6;letter-spacing:2px;padding:2px 12px 4px}.sl-layout{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}.sl-map-block{flex:1 1 480px;min-width:320px;max-width:720px}.sl-canvas{width:100%;display:block;background:#101a2b;border:1px solid #e3e9f1;border-radius:10px}.sl-side{flex:1 1 320px;min-width:280px;display:flex;flex-direction:column;gap:12px}.sl-card{background:#fff;border:1px solid #e3e9f1;border-radius:10px;padding:12px 14px}.sl-card-title{margin:0 0 8px;font-size:13.5px;color:#43536a}.sl-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}.sl-stat{background:#f4f7fb;border-radius:8px;padding:8px 10px}.sl-stat-label{font-size:11.5px;color:#66788e}.sl-stat-value{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.sl-stat-value.tone-ok{color:#1e9e5a}.sl-stat-value.tone-warn{color:#b56a11}.sl-stat-value.tone-bad{color:#d13d43}.sl-exposure-bar{height:8px;border-radius:4px;background:#e8edf4;overflow:hidden;margin-top:6px}.sl-exposure-fill{height:100%;background:linear-gradient(90deg,#f0b429,#d13d43);transition:width .25s}.sl-console-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.sl-freq{display:inline-flex;flex-wrap:wrap;gap:6px}.sl-freq-item{padding:6px 10px;border:1px solid #cfd9e6;border-radius:6px;background:#fff;font-size:12.5px;cursor:pointer;color:#43536a}.sl-freq-item.active{background:#2f6df6;border-color:#2f6df6;color:#fff;font-weight:600}.sl-freq-item .intel-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:5px;background:#c9d3e0;vertical-align:1px}.sl-freq-item .intel-dot.got{background:#1e9e5a}.sl-power{padding:6px 10px;border:1px solid #cfd9e6;border-radius:6px;background:#fff;font-size:12.5px;cursor:pointer;color:#43536a}.sl-power.active{background:#16233a;border-color:#16233a;color:#fff}.sl-power-toggle{min-width:96px;padding:9px 12px;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer;border:1px solid #cfd9e6;background:#fff;color:#1e9e5a}.sl-power-toggle.on{background:#d13d43;border-color:#d13d43;color:#fff}.sl-power-toggle:disabled{opacity:.45;cursor:not-allowed}.sl-log{max-height:200px;overflow-y:auto;font-size:12.5px;line-height:1.7;color:#43536a}.sl-log-row{display:flex;gap:8px;padding:1px 0}.sl-log-t{color:#8a94a4;font-variant-numeric:tabular-nums;flex-shrink:0}.sl-log-row.warn .sl-log-msg{color:#b56a11}.sl-log-row.bad .sl-log-msg{color:#d13d43}.sl-log-row.good .sl-log-msg{color:#1e9e5a}.sl-hint{font-size:12px;color:#66788e;line-height:1.7}.sl-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#101a2bb8;display:flex;align-items:center;justify-content:center;z-index:50}.sl-overlay-card{background:#fff;border-radius:14px;padding:26px 30px;width:min(480px,92vw);text-align:center}.sl-overlay-title{font-size:20px;font-weight:800;margin-bottom:6px}.sl-overlay-title.win{color:#1e9e5a}.sl-overlay-title.lose{color:#d13d43}.sl-overlay-sub{font-size:13px;color:#66788e;margin-bottom:14px}.sl-score-list{text-align:left;font-size:13.5px;line-height:2;border-top:1px dashed #dde4ee;border-bottom:1px dashed #dde4ee;margin-bottom:16px;padding:8px 4px}.sl-score-list b{float:right;font-variant-numeric:tabular-nums}.prof-ach-list{display:flex;flex-direction:column;gap:8px}.prof-ach{border:1px solid #e3e9f1;border-radius:8px;padding:8px 12px;background:#f7f9fc;opacity:.82}.prof-ach.done{background:#eefaf2;border-color:#bfe6cf;opacity:1}.prof-ach-head{display:flex;align-items:center;gap:6px;font-size:13.5px}.prof-ach-badge{font-size:15px}.prof-ach-desc{margin-top:3px;font-size:12px;color:#66788e;line-height:1.6}.fpv-wrap{position:relative;width:100%;max-width:980px}.fpv-viewport{position:relative;width:100%;aspect-ratio:16 / 9;border:1px solid #e3e9f1;border-radius:10px;overflow:hidden;background:#0a1220}.fpv-viewport canvas{width:100%;height:100%;display:block}.fpv-hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;color:#eaf2ff;font-size:13px;text-shadow:0 1px 3px rgba(0,0,0,.8);font-variant-numeric:tabular-nums}.fpv-hud-tl{position:absolute;top:10px;left:14px;line-height:1.8}.fpv-hud-tr{position:absolute;top:10px;right:14px;text-align:right;line-height:1.8}.fpv-hud-bl{position:absolute;bottom:10px;left:14px;line-height:1.8}.fpv-link-on{color:#7df0a8;font-weight:700}.fpv-link-off{color:#ffb35a;font-weight:700}.fpv-paused{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0a122073;font-size:16px;font-weight:700}@media (max-width: 760px){html,body{font-size:15px;overflow-x:hidden}.sidebar{padding:8px 10px;flex-wrap:wrap}.brand{font-size:14px;margin-bottom:6px;width:100%}.nav{flex-direction:row;overflow-x:auto;gap:4px;padding-bottom:4px}.nav-group{flex-direction:row}.nav-group+.nav-group{margin:0 0 0 10px}.nav-group-title{display:none}.nav-item{white-space:nowrap;padding:7px 10px;border-radius:999px;background:#ffffff0f}.content{padding:8px}.sl-layout{gap:10px}.sl-log{max-height:140px}.fpv-viewport{aspect-ratio:4 / 3}.sl-overlay-card{padding:18px 16px}}@media (pointer: coarse){.btn,.sl-freq-item,.sl-power,.seg-item,.nav-item{min-height:42px}.btn{padding:10px 16px}.sl-power-toggle{min-height:48px}.sl-freq-item{padding:10px 12px}canvas.map-clickable{touch-action:manipulation}}
