:root{--bg:#0f1720;--panel:#101720db;--panel-solid:#141d28;--panel-2:#1c2633e6;--line:#ffffff14;--line-2:#ffffff24;--text:#e8eef4;--muted:#8d9aa8;--accent:#f5b83d;--blue:#4cc3ff;--good:#3ecf8e;--warn:#f5a623;--bad:#ff5d6c;--opp:#7b8cff;--radius:10px;--shadow:0 10px 32px #00000061;color:var(--text);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}input,select{font:inherit;color:var(--text)}kbd{text-align:center;border:1px solid var(--line-2);min-width:16px;height:17px;color:var(--muted);background:#ffffff0a;border-bottom-width:2px;border-radius:4px;padding:0 4px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;line-height:16px;display:inline-block}.muted{color:var(--muted)}.pos{color:var(--good)}.neg{color:var(--bad)}.warn{color:var(--warn)}.app{position:fixed;inset:0}.viewport{position:absolute;inset:0}.world-canvas{touch-action:none;width:100%;height:100%;display:block}button.primary,.primary{color:#1a1406;background:linear-gradient(#ffc857,#f0a92a);border:none;border-radius:8px;padding:8px 14px;font-weight:700;box-shadow:0 2px 10px #f5b83d40}button.primary:disabled{opacity:.4;cursor:not-allowed}button.ghost{border:1px solid var(--line-2);color:var(--text);background:0 0;border-radius:8px;padding:7px 12px}button.danger{color:#ffb3ba}button.link{color:var(--blue);background:0 0;border:none;padding:0}.seg{border:1px solid var(--line);background:#ffffff0d;border-radius:8px;gap:2px;padding:2px;display:inline-flex}.seg button{color:var(--muted);text-transform:capitalize;background:0 0;border:none;border-radius:6px;padding:4px 10px}.seg button.on{color:var(--text);background:#ffffff1f}.labels{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.lbl{white-space:nowrap;will-change:transform;position:absolute;top:0;left:0}.lbl.town{pointer-events:auto;cursor:pointer;text-shadow:0 1px 3px #000000b3,0 0 12px #0006;flex-direction:column;align-items:center;display:flex}.lbl.town b{letter-spacing:.01em;color:#fff;font-size:14px;font-weight:800}.lbl.town span{color:#dfe7ee;font-size:11px;font-weight:600}.lbl.town i{margin-left:3px;font-size:9px;font-style:normal}.lbl.town i.up{color:#7ff0b4}.lbl.town i.dn{color:#ff9aa4}.lbl.station{pointer-events:auto;cursor:pointer;border:1px solid var(--line-2);background:#0f1720d1;border-radius:6px;align-items:center;gap:5px;padding:2px 6px 2px 3px;font-size:11px;font-weight:600;display:flex;box-shadow:0 2px 8px #0000004d}.lbl.station em,.modeicon{letter-spacing:.04em;color:#0d141b;background:#9fb2c4;border-radius:3px;padding:1px 4px;font-size:8.5px;font-style:normal;font-weight:800}.k-road{background:#56d68f!important}.k-rail{background:#f5b83d!important}.k-port,.k-water{background:#4cc3ff!important}.k-airport,.k-air{background:#c77dff!important}.k-town{background:#e8eef4!important}.lbl.station .w{color:#bfe9ff;background:#4cc3ff33;border-radius:4px;padding:0 4px;font-size:10px}.lbl.station .w.warn{color:#ffd48a;background:#f5a62340}.lbl.station .w.bad{color:#ffc2c8;background:#ff5d6c4d}.lbl.station .q{color:#ffc2c8;text-transform:uppercase;letter-spacing:.05em;font-size:9px}.lbl.industry{pointer-events:auto;cursor:pointer;color:#f4ecff;text-shadow:0 1px 3px #000c;align-items:center;gap:4px;font-size:11px;font-weight:600;display:flex}.lbl.industry em{font-size:13px;font-style:normal}.lbl.industry small{color:#c2b6d8;font-size:10px;font-weight:500}.lbl.stopnum{background:var(--accent);color:#1a1406;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid;box-shadow:0 0 0 3px #00000059}.floater{pointer-events:none;white-space:nowrap;text-shadow:0 1px 3px #000c;font-size:12px;font-weight:800;position:absolute;top:0;left:0}.floater.money{color:#7ff0b4}.floater.cost{color:#ffb3ba}.floater.warn{color:#ffd48a}.floater.info{color:#bfe9ff}.topbar{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);height:52px;box-shadow:var(--shadow);z-index:20;border-radius:12px;justify-content:space-between;align-items:center;padding:0 10px 0 12px;display:flex;position:absolute;top:10px;left:10px;right:10px}.tb-left,.tb-center,.tb-right{align-items:center;gap:12px;display:flex}.brand{flex-direction:column;line-height:1.15;display:flex}.brand b{letter-spacing:.02em;font-size:13px;font-weight:800}.brand span{color:var(--muted);font-size:11px}.date{flex-direction:column;gap:4px;min-width:104px;display:flex}.date b{font-variant-numeric:tabular-nums;font-size:14px}.monthbar{background:#ffffff1a;border-radius:2px;height:3px;overflow:hidden}.monthbar div{background:var(--accent);height:100%}.speeds{border:1px solid var(--line);background:#ffffff0d;border-radius:8px;padding:2px;display:flex}.speeds button{color:var(--muted);letter-spacing:-1px;background:0 0;border:none;border-radius:6px;min-width:32px;padding:5px 9px;font-size:9px}.speeds button.on{background:var(--accent);color:#1a1406}.money{background:0 0;border:none;flex-direction:column;align-items:flex-end;padding:0 6px;line-height:1.15;display:flex}.money b{font-variant-numeric:tabular-nums;font-size:17px;font-weight:800}.money span{font-variant-numeric:tabular-nums;font-size:11px}.tb-stat{border-left:1px solid var(--line);flex-direction:column;padding-left:12px;line-height:1.15;display:flex}.tb-stat label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:10px}.tb-stat b{font-variant-numeric:tabular-nums;font-size:13px}.tb-buttons{border-left:1px solid var(--line);gap:4px;padding-left:10px;display:flex}.tb-buttons button{border:1px solid var(--line);background:#ffffff0d;border-radius:7px;padding:6px 10px;font-size:12px;font-weight:600}.tb-buttons button:hover{background:#ffffff1a}.toolbar{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);width:64px;box-shadow:var(--shadow);z-index:15;border-radius:12px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:74px;left:10px}.toolbtn{color:#c3cdd7;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:7px 0 5px;display:flex;position:relative}.toolbtn span{font-size:10px;font-weight:600}.toolbtn kbd{opacity:.7;min-width:12px;height:13px;padding:0 2px;font-size:8px;line-height:11px;position:absolute;top:3px;right:3px}.toolbtn:hover{color:#fff;background:#ffffff12}.toolbtn.on{color:var(--accent);background:#f5b83d29;box-shadow:inset 0 0 0 1px #f5b83d73}.toolbar .sep{background:var(--line);height:1px;margin:2px 4px}.subtools{flex-direction:column;gap:2px;display:flex}.subtools button{border:1px solid var(--line);color:var(--muted);background:#ffffff0a;border-radius:6px;padding:4px 2px;font-size:9.5px}.subtools button.on{color:var(--accent);border-color:#f5b83d80}.toolpanel{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);min-width:420px;max-width:min(900px,100vw - 560px);box-shadow:var(--shadow);z-index:15;border-radius:12px;padding:12px 14px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.toolpanel.slim{color:#c9d3dc;padding:10px 14px;line-height:1.5}.toolpanel.slim b{color:#fff;margin-right:6px}.tp-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.tp-head b{align-items:center;gap:6px;font-size:14px;display:flex}.tp-head .muted{font-size:11.5px}.altcards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;display:grid}.altcard{text-align:left;border:1px solid var(--line);background:#ffffff0a;border-radius:9px;padding:9px 11px}.altcard.on{border-color:var(--c);box-shadow:inset 0 0 0 1px var(--c), 0 0 18px -6px var(--c);background:#ffffff12}.altcard.bad{opacity:.5}.ac-top{align-items:center;gap:7px;margin-bottom:6px;display:flex}.ac-top i{background:var(--c);border-radius:3px;width:10px;height:10px}.ac-top b{flex:1;font-size:13px}.ac-top span{font-variant-numeric:tabular-nums;font-weight:800}.altcard ul{gap:2px;margin:0 0 6px;padding:0;list-style:none;display:grid}.altcard li{font-variant-numeric:tabular-nums;justify-content:space-between;font-size:11.5px;display:flex}.altcard li span{color:var(--muted)}.altcard li em{font-style:normal}.altcard small{color:var(--muted);font-size:10.5px;line-height:1.35;display:block}.kindcards{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.kindcard{border:1px solid var(--line);text-align:left;background:#ffffff0a;border-radius:9px;flex-direction:column;align-items:flex-start;gap:3px;padding:9px;display:flex}.kindcard.on{border-color:var(--accent);background:#f5b83d14}.kindcard b{font-size:12.5px}.kindcard span{font-variant-numeric:tabular-nums;font-weight:700}.kindcard small{color:var(--muted);font-size:10.5px;line-height:1.3}.toolpanel.service{width:min(900px,100vw - 560px)}.stopchips{flex-wrap:wrap;align-items:center;gap:5px;margin-bottom:10px;display:flex}.chip{border:1px solid var(--line);background:#ffffff0f;border-radius:20px;align-items:center;gap:5px;padding:2px 9px 2px 3px;font-size:11.5px;display:inline-flex}.chip i{background:var(--accent);color:#1a1406;border-radius:50%;place-items:center;width:17px;height:17px;font-size:10px;font-style:normal;font-weight:800;display:grid}.chip.circ{color:var(--blue);padding-left:9px}.sv-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.sv-col>label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px;font-size:11px;display:block}.models{gap:4px;max-height:150px;display:grid;overflow:auto}.models button{text-align:left;border:1px solid var(--line);background:#ffffff0a;border-radius:7px;grid-template-columns:1fr auto;padding:5px 8px;display:grid}.models button b{font-size:12px}.models button span{color:var(--muted);font-size:10.5px}.models button span.muted{color:#cfd8e1;grid-area:1/2/3;align-self:center;font-weight:700}.models button.on{border-color:var(--accent);background:#f5b83d17}.slider{margin:8px 0}.slider label{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:4px;font-size:12px;display:flex}.slider input[type=range]{width:100%;accent-color:var(--accent)}.preview{background:#0003;border-radius:8px;grid-template-columns:1fr 1fr;gap:3px 14px;padding:8px 10px;display:grid}.preview div{justify-content:space-between;gap:8px;font-size:11.5px;display:flex}.preview div span{color:var(--muted)}.preview div b{font-variant-numeric:tabular-nums;text-align:right}.preview .loadbar{grid-column:1/3;margin-top:4px}.tp-actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.tp-actions .primary{align-items:center;gap:8px;display:flex}.tp-actions .primary kbd{color:#5a4310;background:#ffffff40;border-color:#00000040}.warnbox{color:#ffc2c8;background:#ff5d6c1f;border:1px solid #ff5d6c59;border-radius:8px;margin:8px 0;padding:8px 10px;font-size:12px}.loadbar{background:#ffffff12;border-radius:4px;height:14px;position:relative;overflow:hidden}.loadbar .fill{border-radius:4px;position:absolute;top:0;bottom:0;left:0}.loadbar .over{background:repeating-linear-gradient(45deg,#ff3b4ee6 0 4px,#ff3b4e80 4px 8px);position:absolute;top:0;bottom:0;right:0}.loadbar span{color:#0d141b;text-shadow:0 0 4px #fff6;padding-left:5px;font-size:10px;font-weight:700;line-height:14px;position:relative}.meter{background:#ffffff14;border-radius:3px;height:5px;margin:2px 0 6px;overflow:hidden}.meter div{border-radius:3px;height:100%}.spark{display:block}.barchart text{fill:var(--muted);font-size:9.5px}.inspector{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);width:352px;max-height:calc(100vh - 140px);box-shadow:var(--shadow);z-index:16;border-radius:12px;padding:14px;position:absolute;top:74px;right:10px;overflow:auto}.inspector::-webkit-scrollbar{width:6px}.advisor .adv-body::-webkit-scrollbar{width:6px}.modal::-webkit-scrollbar{width:6px}.inspector::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.advisor .adv-body::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.modal::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.close{color:var(--muted);background:0 0;border:none;font-size:20px;line-height:1;position:absolute;top:8px;right:10px}.close:hover{color:#fff}.insp-head{align-items:flex-start;gap:10px;margin-bottom:10px;padding-right:20px;display:flex}.insp-head h2{margin:0 0 2px;font-size:16px;font-weight:800}.insp-head .modeicon{margin-top:4px}.insp-head .muted{flex-wrap:wrap;align-items:center;gap:4px;font-size:11.5px;display:flex}h2.editable{cursor:text;border-bottom:1px dashed #0000}h2.editable:hover{border-bottom-color:var(--line-2)}.nameedit{border:1px solid var(--line-2);background:#ffffff0f;border-radius:6px;width:100%;padding:3px 6px;font-size:15px;font-weight:700}.swatch{border-radius:3px;flex:none;width:12px;height:12px;display:inline-block}.swatch.big{border-radius:6px;width:22px;height:22px;margin-top:2px}.colors{gap:4px;margin-bottom:10px;display:flex}.colors button{border:2px solid #0000;border-radius:5px;width:18px;height:18px}.colors button.on{border-color:#fff}.stats3{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px;display:grid}.stats4{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}.stat{border:1px solid var(--line);background:#ffffff0a;border-radius:8px;flex-direction:column;gap:1px;min-width:0;padding:7px 8px;display:flex}.stat label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:9.5px}.stat b{font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:800;overflow:hidden}.stat small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.stat.good b{color:#86ecb9}.stat.bad b{color:#ff9aa4}.stat.warn b{color:#ffd48a}.sect{border-top:1px solid var(--line);margin-top:9px;padding-top:9px}.sect header{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.sect h4{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0;font-size:11px;font-weight:700}.sect header .muted{font-size:11px}.kv{justify-content:space-between;align-items:center;gap:8px;padding:3px 0;font-size:12px;display:flex}.kv span{color:#c4ced8;align-items:center;gap:5px;display:flex}.kv b{font-variant-numeric:tabular-nums;text-align:right;align-items:center;gap:5px;display:flex}.kv select{border:1px solid var(--line-2);background:#ffffff0f;border-radius:6px;max-width:220px;padding:3px 6px}.kv.btn{background:0 0;border:none;border-radius:6px;width:calc(100% + 12px);margin:0 -6px;padding:4px 6px}.kv.btn:hover{background:#ffffff0d}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.hint{color:var(--muted);margin:6px 0 0;font-size:11px;line-height:1.45}.stepper{align-items:center;gap:8px;margin:4px 0;font-size:12px;display:flex}.stepper>span{color:#c4ced8;flex:1}.stepper button{border:1px solid var(--line-2);background:#ffffff12;border-radius:6px;width:26px;height:24px;font-weight:800}.stepper button:disabled{opacity:.35}.slots{flex:1;gap:3px;display:flex}.slots i{background:#ffffff1a;border-radius:3px;flex:1;height:10px}.slots i.occ{background:var(--blue)}.svcrow{text-align:left;background:0 0;border:none;border-radius:6px;grid-template-columns:auto 1fr auto auto;align-items:center;gap:7px;width:100%;padding:5px 6px;display:grid}.svcrow:hover{background:#ffffff0d}.svcrow .nm{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.health{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:1px 5px;font-size:9.5px;font-style:normal;font-weight:700}.health.good{color:#86ecb9;background:#3ecf8e26}.health.warn{color:#ffd48a;background:#f5a6232e}.health.bad{color:#ffb3ba;background:#ff5d6c33}.health.off{color:var(--muted);background:#ffffff14}.insp-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:10px;display:flex}.insp-actions button{border:1px solid var(--line-2);background:#ffffff0f;border-radius:7px;padding:6px 10px;font-size:12px;font-weight:600}.insp-actions button.on{border-color:var(--blue);background:#4cc3ff2e}.insp-actions button.danger{border-color:#ff5d6c66}.chartrow{margin:4px 0 8px}.fleetpreview{color:#c4ced8;background:#0003;border-radius:7px;flex-wrap:wrap;gap:4px 12px;margin-bottom:8px;padding:6px 9px;font-size:11.5px;display:flex}.fleetpreview.changed{box-shadow:inset 0 0 0 1px #f5b83d80}.check{color:#c4ced8;align-items:center;gap:7px;margin-top:6px;font-size:12px;display:flex}.routeline{position:relative}.stoprow{padding-left:14px;position:relative}.stoprow:before{content:"";background:var(--c);border-radius:2px;width:3px;position:absolute;top:10px;bottom:-4px;left:4px}.stoprow:last-child:before{display:none}.stopname{text-align:left;background:0 0;border:none;align-items:center;gap:7px;width:100%;padding:3px 0;font-size:12px;font-weight:600;display:flex}.stopname i{background:var(--panel-solid);border:3px solid var(--c);border-radius:50%;width:11px;height:11px;position:absolute;left:0}.stopname small{color:var(--muted);margin-left:auto;font-weight:500}.legload{grid-template-columns:1fr 1fr;gap:4px;margin:2px 0 5px;display:grid}.vehlist{grid-template-columns:1fr 1fr;gap:4px;display:grid}.veh{border:1px solid var(--line);text-align:left;background:#ffffff0a;border-radius:7px;flex-direction:column;align-items:stretch;gap:1px;padding:5px 7px;font-size:11.5px;display:flex}.veh .meter{margin:2px 0}.veh small{color:var(--muted);font-size:10px}.veh.broken{border-color:#ff5d6c80}.veh.queued{border-color:#f5a62380}.inl-issues{gap:6px;margin-bottom:10px;display:grid}.inl-issue{border-left:3px solid var(--warn);background:#ffffff0a;border-radius:8px;padding:8px 10px}.inl-issue.critical{border-left-color:var(--bad)}.inl-issue.opportunity{border-left-color:var(--opp)}.inl-issue.info{border-left-color:var(--blue)}.inl-issue b{font-size:12px}.inl-issue p{color:#c4ced8;margin:3px 0 6px;font-size:11.5px;line-height:1.4}.advisor{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);width:352px;max-height:42vh;box-shadow:var(--shadow);z-index:14;border-radius:12px;flex-direction:column;display:flex;position:absolute;bottom:14px;right:10px}.advisor header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:6px 8px 6px 10px;display:flex}.tabs{gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:700;display:flex}.tabs button.on{color:#fff;background:#ffffff14}.advisor .min{color:var(--muted);background:0 0;border:none;width:26px;font-size:18px}.adv-body{gap:6px;padding:8px;display:grid;overflow:auto}.pad{padding:6px;line-height:1.5}.b{color:#0d141b;border-radius:9px;place-items:center;min-width:17px;height:17px;padding:0 5px;font-size:10px;font-style:normal;font-weight:800;display:inline-grid}.b.critical{background:var(--bad)}.b.warning{background:var(--warn)}.b.opportunity{background:var(--opp);color:#fff}.advisor-pill{z-index:14;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;align-items:center;gap:6px;padding:7px 12px;font-weight:700;display:flex;position:absolute;bottom:14px;right:10px}.issue{border:1px solid var(--line);border-left:3px solid var(--warn);background:#ffffff09;border-radius:8px;padding:8px 10px}.issue.critical{border-left-color:var(--bad);background:#ff5d6c0f}.issue.opportunity{border-left-color:var(--opp)}.issue.info{border-left-color:var(--blue)}.i-top{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.i-top em{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:9.5px;font-style:normal;font-weight:700}.issue.critical .i-top em{color:#ff9aa4}.issue.warning .i-top em{color:#ffd48a}.issue.opportunity .i-top em{color:#aeb8ff}.i-top .x{color:var(--muted);background:0 0;border:none;padding:0 2px;font-size:15px;line-height:1}.issue>b{cursor:pointer;margin:2px 0;font-size:12.5px;display:block}.issue p{color:#c4ced8;margin:0 0 6px;font-size:11.5px;line-height:1.45}.acts{flex-wrap:wrap;gap:5px;display:flex}.acts button{border:1px solid var(--line-2);text-align:left;background:#ffffff12;border-radius:6px;flex-direction:column;align-items:flex-start;padding:4px 8px;font-size:11.5px;font-weight:600;display:flex}.acts button:hover{background:#f5b83d26;border-color:#f5b83d80}.acts button small{color:var(--muted);font-size:9.5px;font-weight:500}.news{gap:4px;display:grid}.newsitem{text-align:left;border:none;border-left:3px solid var(--line-2);background:#ffffff08;border-radius:6px;flex-direction:column;align-items:flex-start;padding:5px 8px;display:flex}.newsitem small{color:var(--muted);font-size:10px}.newsitem span{font-size:11.5px;line-height:1.35}.newsitem.good{border-left-color:var(--good)}.newsitem.bad{border-left-color:var(--bad)}.newsitem.tech{border-left-color:var(--opp)}.bottom-left{z-index:13;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:14px;left:10px}.minimap{border:1px solid var(--line-2);width:170px;height:170px;box-shadow:var(--shadow);cursor:crosshair;image-rendering:pixelated;border-radius:10px}.overlaybar{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:2px;padding:5px;display:flex}.overlaybar button{text-align:left;color:#b7c2cd;background:0 0;border:none;border-radius:6px;padding:3px 8px;font-size:11.5px;font-weight:600}.overlaybar button:hover{background:#ffffff0f}.overlaybar button.on{color:#bfe9ff;background:#4cc3ff29}.overlaybar .sep{background:var(--line);height:1px;margin:2px 0}.overlaybar .netview{justify-content:space-between;align-items:center;gap:6px;display:flex}.overlaybar .netview.on{color:var(--accent);background:#f5b83d2e}.tooltip{z-index:40;pointer-events:none;border:1px solid var(--line-2);max-width:290px;box-shadow:var(--shadow);background:#0a0f15f0;border-radius:8px;flex-direction:column;gap:1px;padding:7px 10px;font-size:11.5px;display:flex;position:fixed}.tooltip b{margin-bottom:1px;font-size:12.5px}.tooltip span{color:#c4ced8}.tooltip.bad{border-color:#ff5d6c99}.tooltip.bad b{color:#ffb3ba}.tooltip.ok{border-color:#3ecf8e59}.toasts{z-index:60;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;top:72px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line-2);box-shadow:var(--shadow);background:#0a0f15f0;border-radius:8px;padding:7px 14px;font-weight:600;animation:.2s ease-out toastin}.toast.ok{border-color:#3ecf8e80}.toast.err{color:#ffc2c8;border-color:#ff5d6c99}@keyframes toastin{0%{opacity:0;transform:translateY(-6px)}}.modal-bg{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#05090e80;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel-solid);border:1px solid var(--line-2);border-radius:14px;width:min(760px,100vw - 40px);max-height:calc(100vh - 80px);padding:20px 22px;position:relative;overflow:auto;box-shadow:0 20px 60px #00000080}.modal.services{width:min(980px,100vw - 40px)}.modal h2{margin:0 0 12px;font-size:20px;font-weight:800}.modal h2 small{font-size:12px;font-weight:500}.modal h4{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:14px 0 6px;font-size:11px}.loanrow{gap:6px;display:flex}.loanrow button,.saverow button:not(.primary){border:1px solid var(--line-2);background:#ffffff0f;border-radius:7px;padding:6px 12px;font-weight:600}.loanrow button:disabled{opacity:.4}table.ledger,table.lines{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:10px}table.ledger th,table.ledger td,table.lines th,table.lines td{border-bottom:1px solid var(--line);text-align:right;padding:6px 8px;font-size:12px}table.ledger th:first-child,table.ledger td:first-child,table.lines td:nth-child(2),table.lines th:nth-child(2){text-align:left}table.ledger th,table.lines th{color:var(--muted);font-size:11px;font-weight:600}table.ledger tr.total td{border-top:1px solid var(--line-2);font-weight:800}table.lines tbody tr{cursor:pointer}table.lines tbody tr:hover{background:#ffffff0a}.sortseg{margin-bottom:4px}.policy{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;padding:12px 0;display:flex}.policy>div:first-child{flex-direction:column;gap:2px;display:flex}.policy b{font-size:13px}.policy span{color:var(--muted);font-size:12px}.policy select{border:1px solid var(--line-2);background:#ffffff0f;border-radius:7px;padding:5px 8px}.switch{flex:none;width:40px;height:22px;position:relative}.switch input{opacity:0;width:0;height:0}.switch i{cursor:pointer;background:#ffffff26;border-radius:11px;transition:all .2s;position:absolute;inset:0}.switch i:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:all .2s;position:absolute;top:3px;left:3px}.switch input:checked+i{background:var(--good)}.switch input:checked+i:after{transform:translate(18px)}.saverow{gap:8px;margin-bottom:12px;display:flex}.saverow.end{justify-content:flex-end;margin:14px 0 0}.saverow input{border:1px solid var(--line-2);background:#ffffff0f;border-radius:7px;flex:1;padding:7px 10px}.saves{gap:8px;display:grid}.savecard{border:1px solid var(--line);background:#ffffff0a;border-radius:10px;grid-template-columns:128px 1fr auto;align-items:center;gap:12px;padding:8px;display:grid}.savecard img,.nothumb{object-fit:cover;background:#1d2835;border-radius:6px;width:128px;height:72px}.savecard .meta{flex-direction:column;gap:2px;font-size:12px;display:flex}.savecard .meta b{align-items:center;gap:6px;font-size:13.5px;display:flex}.savecard .acts{flex-direction:column}.helpgrid{grid-template-columns:1.3fr 1fr;gap:24px;display:grid}.helpgrid ol,.helpgrid ul{color:#c4ced8;margin:0;padding-left:18px;line-height:1.6}.helpgrid li{margin-bottom:4px}.helpgrid em{color:var(--blue);font-style:normal}table.keys td{color:#c4ced8;padding:4px 6px;font-size:12px}table.keys td:first-child{color:var(--muted)}.title{z-index:30;background:linear-gradient(90deg,#080d13d9 0%,#080d138c 40%,#080d1300 75%);flex-direction:column;justify-content:center;align-items:flex-start;padding-left:7vw;display:flex;position:absolute;inset:0}.title-card{width:420px}.title-logo{align-items:center;gap:16px;margin-bottom:30px;display:flex}.title-logo h1{letter-spacing:-.02em;text-shadow:0 2px 20px #0006;margin:0;font-size:44px;font-weight:800;line-height:1}.title-logo p{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;margin:6px 0 0;font-size:15px;font-weight:700}.menu{flex-direction:column;gap:10px;display:flex}.menu button.big{text-align:left;border:1px solid var(--line-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#141d28d9;border-radius:10px;flex-direction:column;align-items:flex-start;padding:13px 18px;font-size:16px;font-weight:800;display:flex}.menu button.big.primary{color:#1a1406;background:linear-gradient(#ffc857,#f0a92a);border:none}.menu button.big small{opacity:.75;font-size:12px;font-weight:500}.menu button.ghost{align-self:flex-start}.title-foot{color:#ffffff8c;letter-spacing:.04em;font-size:12px;position:absolute;bottom:22px;left:7vw}.newgame{border:1px solid var(--line-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#141d28e6;border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.newgame label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex-direction:column;gap:5px;font-size:11px;font-weight:700;display:flex}.newgame label.check{text-transform:none;letter-spacing:0;color:#c4ced8;flex-direction:row;font-size:12.5px;font-weight:500}.newgame input:not([type=checkbox]):not([type=range]),.newgame select{border:1px solid var(--line-2);text-transform:none;letter-spacing:0;background:#ffffff0f;border-radius:7px;padding:7px 10px;font-size:13px}.newgame input[type=range]{accent-color:var(--accent)}.newgame small{color:var(--text);font-size:12px}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.seedrow{gap:6px;display:flex}.seedrow input{flex:1;min-width:0}.seedrow button{border:1px solid var(--line-2);background:#ffffff0f;border-radius:7px;width:34px}.newgame .actions{justify-content:space-between;margin-top:4px;display:flex}.loadlist{border:1px solid var(--line-2);background:#141d28eb;border-radius:12px;max-height:60vh;padding:16px;overflow:auto}.loadlist h2{margin-top:0}.loadlist .ghost{margin-top:12px}.loading-screen{z-index:40;background:#080d13cc;align-content:center;place-items:center;gap:16px;display:grid;position:absolute;inset:0}.spinner{border:3px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1250px){.tb-stat{display:none}.toolpanel{min-width:0;max-width:calc(100vw - 120px)}.toolpanel.service{width:calc(100vw - 120px)}}.onboard{background:linear-gradient(#f5b83d1a,#f5b83d08);border:1px solid #f5b83d59;border-radius:8px;padding:8px 10px}.onboard .i-top em{color:var(--accent)}.onboard ul{gap:3px;margin:6px 0 0;padding:0;list-style:none;display:grid}.onboard li{color:#d7dee6;align-items:center;gap:7px;font-size:11.5px;display:flex}.onboard li i{border:1px solid var(--line-2);border-radius:4px;flex:none;place-items:center;width:14px;height:14px;font-size:10px;font-style:normal;font-weight:800;display:grid}.onboard li.ok{color:var(--muted);text-decoration:line-through}.onboard li.ok i{background:var(--good);border-color:var(--good);color:#0d141b}.toast{pointer-events:auto;align-items:center;gap:12px;display:flex}.toast button{border:1px solid var(--line-2);background:#ffffff1a;border-radius:6px;padding:3px 10px;font-weight:700}.panel-error{color:#ffc2c8;background:#ff5d6c1f;border:1px solid #ff5d6c66;border-radius:8px;padding:10px 12px;font-size:12px}.panel-error button{border:1px solid var(--line-2);background:#ffffff14;border-radius:6px;margin-top:6px;padding:3px 10px}.toolpanel.routes{padding:8px 10px}.toolpanel.routes .tp-head{margin-bottom:6px}.toolpanel.routes .altcards{grid-template-columns:repeat(3,minmax(170px,1fr));gap:6px}.toolpanel.routes .altcard{padding:6px 9px}.toolpanel.routes .altcard ul{grid-template-columns:1fr 1fr;column-gap:12px;margin:0}.toolpanel.routes .altcard li{font-size:10.5px}.toolpanel.routes .altcard small{display:none}.labels[data-tool=road] .lbl,.labels[data-tool=rail] .lbl,.labels[data-tool=station] .lbl,.labels[data-tool=demolish] .lbl,.labels[data-tool=service] .lbl.town,.labels[data-tool=service] .lbl.industry{pointer-events:none}.tb-click{border:none;border-left:1px solid var(--line);text-align:left;cursor:pointer;background:0 0}.tb-click:hover label{color:var(--text)}.tb-stat.rating b small{color:var(--muted);font-size:10.5px;font-weight:600}.tb-stat.rating.good b{color:#86ecb9}.tb-stat.rating.warn b{color:#ffd48a}.tb-stat.rating.bad b{color:#ff9aa4}.grade{letter-spacing:.04em;vertical-align:2px;background:#ffffff14;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:800}.brief{color:var(--muted);margin:0 0 8px;font-size:12.5px;line-height:1.5}.objectives{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;display:grid}.objective{border:1px solid var(--line);background:#ffffff08;border-radius:8px;min-width:0;padding:8px 10px 6px}.objective.done{border-color:#3ecf8e59}.objective .o-top{align-items:baseline;gap:6px;margin-bottom:4px;display:flex}.objective .o-top i{width:12px;color:var(--good);flex:none;font-style:normal;font-weight:800}.objective .o-top b{flex:1;min-width:0;font-size:12.5px}.objective .award{color:var(--accent);white-space:nowrap;font-size:10.5px;font-style:normal}.objective small{font-variant-numeric:tabular-nums;font-size:11px}.ratingparts{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px;display:grid}.ratingparts .rp{grid-template-columns:130px 1fr 58px;align-items:center;gap:8px;font-size:12px;display:grid}.ratingparts .rp .meter{margin:0}.ratingparts .rp b{text-align:right;font-variant-numeric:tabular-nums}.factors{flex-wrap:wrap;gap:6px 12px;margin:-4px 0 4px;font-size:11.5px;display:flex}.factors span{font-variant-numeric:tabular-nums}.modal .loanrow{flex-wrap:wrap}.outcome-actions{margin-top:16px}.scenarios{flex-direction:column;gap:8px;max-height:52vh;margin-bottom:10px;display:flex;overflow:auto}.scenario{text-align:left;border:1px solid var(--line-2);background:#141d28d9;border-radius:10px;flex-direction:column;align-items:flex-start;gap:3px;padding:11px 14px;display:flex}.scenario.on{border-color:var(--accent);background:#f5b83d14}.scenario b{font-size:14.5px}.scenario span{color:var(--muted);font-size:12px}.scenario small{color:var(--muted);font-size:11px}.diffnote{color:var(--muted);margin-top:4px;font-size:11.5px;display:block}@media (width<=700px){.objectives,.ratingparts{grid-template-columns:minmax(0,1fr)}}
