html,body{height:100%;margin:0;overflow:hidden}#map,#map canvas{cursor:crosshair;touch-action:none;display:block;position:fixed;inset:0}body[data-tool=select] #map canvas{cursor:grab}#hud{pointer-events:none;font:13px/1.3 var(--font);color:var(--fg);-webkit-user-select:none;user-select:none;position:fixed;inset:0}#hud [hidden]{display:none!important}#hud button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}#hud button:disabled{opacity:.4;cursor:default}#hud small,#hud dt{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:600;display:block}#hud small span{float:right;color:var(--fg);letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums}#hud .up{color:var(--good)}#hud .down,#hud .bad{color:var(--bad)}#hud dl,#hud dd,#hud ul,#hud ol,#hud p{margin:0;padding:0;list-style:none}body[data-theme=paper]{--font:"Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif;--brand:800 16px var(--font);--title:600 14px var(--font);--fg:#2a2a2e;--muted:#8d8678;--panel:#fff;--well:#f3f0e9;--edge:#d8d2c4;--radius:5px;--radius-s:3px;--shadow:0 3px 0 #3c321e24, 0 8px 22px #3c321e1a;--blur:none;--accent:#2a2a2e;--on-accent:#fff;--head:#2a2a2e;--on-head:#fff;--good:#2e9a68;--bad:#d6452d;--line:#e2543b}body[data-theme=night]{--font:"SF Mono", ui-monospace, Menlo, Consolas, monospace;--brand:700 13px var(--font);--title:600 12px var(--font);--fg:#d7ecf7;--muted:#62809b;--panel:#0a1018e6;--well:#4fd8ff14;--edge:#4fd8ff4d;--radius:2px;--radius-s:1px;--shadow:0 0 24px #4fd8ff12;--blur:blur(8px);--accent:#4fd8ff;--on-accent:#06202b;--head:#4fd8ff29;--on-head:#4fd8ff;--good:#3dff9e;--bad:#ff4d5e;--line:#4fd8ff}body[data-theme=night] .tile{font-size:9px!important}body[data-theme=night] .brand,body[data-theme=night] .win-title{letter-spacing:.1em;text-transform:uppercase}body[data-theme=atlas]{--font:"Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif;--brand:700 18px "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--title:700 14px "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--fg:#33301f;--muted:#857c62;--panel:#f6f1df;--well:#ebe4cc;--edge:#c9bf9e;--radius:4px;--radius-s:3px;--shadow:0 3px 0 #c9bf9e, 0 10px 22px #322d1433;--blur:none;--accent:#2f4f46;--on-accent:#f6f1df;--head:#2f4f46;--on-head:#f6f1df;--good:#3f7d4d;--bad:#b8402f;--line:#8a2f35}.panel{pointer-events:auto;box-sizing:border-box;background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}.dock{position:absolute}.ic{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px;display:block}.ic .thin{stroke-width:1.2px}.tile{box-sizing:border-box;border-radius:var(--radius-s);align-content:center;justify-items:center;gap:3px;width:64px;height:54px;font-weight:600;display:grid;border:1px solid var(--edge)!important;background:var(--well)!important;color:var(--muted)!important;font-size:10px!important}.tile .ic{width:22px;height:22px}.tile span{text-overflow:ellipsis;white-space:nowrap;max-width:60px;overflow:hidden}.tile:hover{color:var(--fg)!important;border-color:var(--accent)!important}.tile.on{background:var(--accent)!important;border-color:var(--accent)!important;color:var(--on-accent)!important}.btn{box-sizing:border-box;border-radius:var(--radius-s);white-space:nowrap;justify-content:center;align-items:center;gap:7px;height:30px;display:inline-flex;border:1px solid var(--edge)!important;background:var(--well)!important;padding:0 10px!important;font-weight:600!important}.btn .ic{width:16px;height:16px}.btn.square{width:30px;color:var(--muted)!important;padding:0!important}.btn.wide{justify-content:flex-start;width:100%;display:flex}.btn.wide b{font-variant-numeric:tabular-nums;margin-left:auto}.btn:hover:not(:disabled){border-color:var(--accent)!important;color:var(--fg)!important}.btn.primary{background:var(--accent)!important;border-color:var(--accent)!important;color:var(--on-accent)!important}.btn.primary:hover:not(:disabled){color:var(--on-accent)!important}.btn.danger{color:var(--bad)!important}.segments{border:1px solid var(--edge);border-radius:var(--radius-s);background:var(--well);gap:2px;padding:2px;display:flex}.segments button{border-radius:var(--radius-s);flex:1;min-width:26px;height:24px;color:var(--muted)!important;padding:0 8px!important;font-weight:600!important}.segments button.on{background:var(--accent)!important;color:var(--on-accent)!important}.chip{align-content:center;gap:2px;display:grid}.chip b{font-variant-numeric:tabular-nums;white-space:nowrap}.dot{background:var(--line);border-radius:2px;flex:none;width:10px;height:10px}#hud input[type=range]{width:100%;accent-color:var(--accent);margin:4px 0;display:block}.topbar{align-items:stretch;height:52px;display:flex;top:12px;left:12px}.topbar>*{border-left:1px solid var(--edge);align-items:center;padding:0 14px;display:flex}.brand{border-radius:var(--radius) 0 0 var(--radius);background:var(--head);font:var(--brand);color:var(--on-head);border-left:0;margin:-1px 0 -1px -1px}.stat{gap:9px}.stat .ic{color:var(--muted)}.stat b{font-variant-numeric:tabular-nums;font-size:14px;display:block}.speed{gap:3px;padding:0 10px}.speed button{border-radius:var(--radius-s);width:30px;height:30px;border:1px solid var(--edge)!important;background:var(--well)!important;color:var(--muted)!important}.speed button .ic{width:16px;height:16px;margin:auto}.speed button.on{background:var(--accent)!important;border-color:var(--accent)!important;color:var(--on-accent)!important}.topbar>.btn{align-self:center;margin:0 10px;border-left:1px solid var(--edge)!important}.toolbox{gap:4px;padding:5px;display:grid;top:76px;left:12px}.buildbar{justify-items:center;gap:6px;display:grid;bottom:12px;left:50%;transform:translate(-50%)}.strip{align-items:stretch;min-height:44px;display:flex}.strip>*{border-left:1px solid var(--edge);padding:5px 14px}.strip-head{border-radius:var(--radius) 0 0 var(--radius);background:var(--head);font:var(--title);color:var(--on-head);border-left:0;align-items:center;gap:8px;margin:-1px 0 -1px -1px;display:flex}.strip label.chip{width:150px}.groups{display:flex}.group{border-left:1px solid var(--edge);padding:5px 7px 6px}.group:first-child{border-left:0}.group>small{margin:0 0 4px 1px}.tiles{gap:4px;display:flex}.submenu{padding:5px}.bar-close{align-self:center;margin:0 8px 0 2px}.win{box-sizing:border-box;flex-direction:column;max-width:calc(100vw - 16px);max-height:calc(100% - 24px);display:flex;position:absolute;top:0;left:0}.win-head{border-radius:var(--radius) var(--radius) 0 0;background:var(--head);height:32px;color:var(--on-head);cursor:grab;touch-action:none;flex:none;align-items:center;margin:-1px -1px 0;padding:0 4px 0 10px;display:flex}.win-head:active{cursor:grabbing}.win-title{min-width:0;font:var(--title);flex:1;align-items:center;gap:8px;display:flex}.win-title b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.win-title .ic{width:16px;height:16px}.win-close{border-radius:var(--radius-s);opacity:.75;width:24px;height:24px}.win-close:hover{opacity:1;background:#8080804d!important}.win-close .ic{width:14px;height:14px;margin:auto}.win-head .help{color:inherit;background:#80808059;margin:0 6px}.win-body{overflow-wrap:anywhere;scrollbar-width:thin;flex:auto;min-height:0;padding:12px 14px 14px;overflow:hidden auto}.win-body>*{box-sizing:border-box;min-width:0;max-width:100%}.card-head{align-items:center;gap:8px;display:flex}.card-head span{color:var(--muted);margin-left:auto;font-size:11px}.route{font:var(--title);margin:8px 0 10px}.route em{color:var(--muted);font-style:normal}.win-card dl{flex-wrap:wrap;justify-content:space-between;gap:8px 10px;display:flex;margin-bottom:10px!important}.win-card dd,.plan-sum dd{font-variant-numeric:tabular-nums;font-weight:600;margin-top:2px!important}.win-card li{border-top:1px solid var(--edge);font-variant-numeric:tabular-nums;justify-content:space-between;padding:3px 0;display:flex}.win-card .note{color:var(--bad);margin-bottom:10px!important}.win-card .note.quiet{color:var(--muted)}.bar{border:1px solid var(--edge);border-radius:var(--radius-s);background:var(--well);height:6px;overflow:hidden}.bar i{background:var(--line);height:100%;display:block}.win-card .service{align-items:center;margin:12px 0 0!important}.plan-rows li{border-bottom:1px solid var(--edge);font-variant-numeric:tabular-nums;align-items:center;gap:8px;padding:5px 0;display:flex}.plan-rows .ic{color:var(--muted)}.plan-rows span{flex:1}.plan-rows em{color:var(--muted);font-size:11px;font-style:normal}.plan-rows b{text-align:right;min-width:70px}.plan-sum{gap:4px;display:grid;margin:10px 0 12px!important}.plan-sum div{justify-content:space-between;align-items:baseline;display:flex}.plan-sum div:first-child dd{font-size:15px}.plan-actions{gap:6px;display:flex}.plan-actions .primary{flex:1}.finance>.segments{margin-bottom:10px}.fin-top{justify-content:space-between;gap:10px;margin-bottom:12px;display:flex}.fin-top .chip b{font-size:14px}.fin-rows li{border-bottom:1px solid var(--edge);font-variant-numeric:tabular-nums;align-items:center;gap:8px;padding:5px 0;display:flex}.fin-rows .ic{color:var(--muted)}.fin-rows span{flex:1;min-width:0}.fin-rows b{text-align:right;min-width:90px}.fin-share{background:var(--well);border-radius:2px;height:3px;margin-top:3px;display:block;overflow:hidden}.fin-share i{background:var(--muted);border-radius:2px;height:100%;display:block}.fin-rows .fin-sum{padding:7px 0 8px 26px;font-weight:600}.fin-rows .fin-sum b{font-size:14px}#hud .finance small{margin:14px 0 5px}.fin-chart{width:100%;height:auto;display:block;overflow:visible}.fin-hit{fill:#0000}.fin-bar.pos{fill:var(--good)}.fin-bar.neg{fill:var(--bad)}.fin-bar.open{opacity:.5}.fin-chart g:hover .fin-bar{opacity:.75}.fin-axis{fill:none;stroke:var(--edge);stroke-width:1px}.fin-line{fill:none;stroke:var(--fg);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.fin-point{fill:var(--fg);stroke:var(--panel);stroke-width:2px}.fin-days{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:3px;font-size:10px;display:flex}.fin-bank{grid-template-columns:1fr 1fr;gap:10px;display:grid;margin:2px 0 8px!important}.fin-bank dd{font-variant-numeric:tabular-nums;font-weight:600;margin-top:2px!important}.fin-bank+.bar{margin-bottom:14px}.fin-actions{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.fin-actions .btn{flex:1}.themes{grid-template-columns:repeat(3,1fr);gap:6px;margin:6px 0 14px;display:grid}.themes button{border-radius:var(--radius-s);text-align:left;border:1px solid var(--edge)!important;padding:5px 5px 7px!important}.themes button b,.themes button span{padding:0 2px;display:block}.themes button span{color:var(--muted);font-size:10px;line-height:1.2}.themes button:hover{background:var(--well)!important}.themes button.on{outline:1px solid var(--accent);background:var(--well)!important;border-color:var(--accent)!important}.sound{margin:6px 0 14px}.sound input[type=range]{margin:4px 0 10px!important}.sound.off small,.sound.off input{opacity:.45}.actions{gap:5px;margin:6px 0 14px;display:grid}.swatch{border-radius:2px;height:38px;margin-bottom:6px;display:block;position:relative;overflow:hidden}.swatch:before{content:"";background:var(--sw-line);height:3px;box-shadow:var(--sw-glow,none);position:absolute;top:48%;left:-10%;right:-10%;transform:rotate(-12deg)}.sw-paper{--sw-line:#e2543b;background:#f3efe6;box-shadow:inset 0 0 0 1px #e2dccf}.sw-night{--sw-line:#4fd8ff;--sw-glow:0 0 8px #4fd8ff;background:#111a26}.sw-atlas{--sw-line:#6a5d4b;background:#dfe5c6;box-shadow:inset 0 0 0 1px #c9cfae}.win-newmap .segments,.win-newmap input[type=range]{margin:5px 0 12px!important}.field{gap:6px;margin:5px 0 12px;display:flex}.field input{box-sizing:border-box;min-width:0;height:30px;font:inherit;font-variant-numeric:tabular-nums;color:inherit;background:var(--well);border:1px solid var(--edge);border-radius:var(--radius-s);-webkit-user-select:text;user-select:text;flex:1;padding:0 9px}.field input:focus{border-color:var(--accent);outline:none}.buttons{gap:6px;display:flex}.buttons .btn{flex:1}.buttons .primary{flex:2}.gen li{color:var(--muted);align-items:center;gap:8px;padding:4px 0;display:flex}.gen li .ic{width:16px;height:16px}.gen li b{text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-weight:600;overflow:hidden}.gen li.done{color:var(--fg)}.gen li.done .ic{color:var(--good)}.gen li.on{color:var(--fg);font-weight:600}.gen ol{margin-bottom:10px!important}.gen .btn{justify-content:center}.lines-head{font:var(--title);align-items:center;gap:8px;margin-bottom:10px;display:flex}.lines-head input{box-sizing:border-box;min-width:0;height:30px;font:inherit;color:inherit;background:var(--well);border:1px solid var(--edge);border-radius:var(--radius-s);-webkit-user-select:text;user-select:text;flex:1;padding:0 8px}.lines-head input:focus{border-color:var(--accent);outline:none}#hud .lines small{margin:14px 0 6px}.lines li{border-bottom:1px solid var(--edge);align-items:center;gap:6px;padding:5px 6px;display:flex}.lines li>div{flex:1;min-width:0}.lines li b,.lines li span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.lines li span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.lines li em{font-style:normal}.lines li .right{text-align:right;flex:none}.lines [data-action=open],.lines [data-action=show]{cursor:pointer}.lines li[data-action=open]:hover{background:var(--well)}.lines li:has(>[data-action=show]:hover){background:var(--well)}.lines li .btn{flex:none;width:24px;height:24px}.lines li .btn .ic{width:14px;height:14px}.lines .stops{counter-reset:stop}.lines .stops li:before{counter-increment:stop;content:counter(stop);width:16px;color:var(--muted);text-align:right;flex:none;font-size:11px;font-weight:600}.lines .stops li>span{color:var(--fg);flex:1;font-size:13px}.lines .note{color:var(--bad);font-size:11.5px;margin-top:6px!important}.lines .btn.wide{margin-top:8px}.lines .line-list+.btn.wide{margin-top:10px}#hud .lines .danger{margin-top:14px}.schedule{color:var(--muted);font-variant-numeric:tabular-nums;grid-template-columns:auto repeat(5,minmax(0,1fr));align-items:center;gap:3px 4px;font-size:11px;display:grid}.schedule>*{text-align:center;min-width:0}.schedule>b{text-align:left;color:var(--fg);font-weight:600}.schedule .now{color:var(--accent);font-weight:600}.schedule i{font-style:normal}.swatches{gap:4px;display:flex}.swatches button{border-radius:var(--radius-s);outline-offset:1px;flex:1;height:22px}.swatches button.on{outline:2px solid var(--fg)}.tip,.toast{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius-s);box-shadow:var(--shadow);font-variant-numeric:tabular-nums;white-space:nowrap;padding:5px 9px;font-weight:600}.tip{position:absolute;top:0;left:0}.toasts{justify-items:center;gap:6px;display:grid;position:absolute;top:76px;left:50%;transform:translate(-50%)}.toast{animation:3s forwards toast}@keyframes toast{0%,80%{opacity:1}to{opacity:0}}.floater{color:var(--good);text-shadow:0 0 4px var(--panel), 0 0 4px var(--panel);font-weight:700;animation:1.6s ease-out forwards rise;position:absolute}@keyframes rise{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-46px)}}.help{vertical-align:1px;background:var(--well);width:15px;height:15px;color:var(--muted);font:700 10px/15px var(--font);text-align:center;letter-spacing:0;text-transform:none;cursor:help;border-radius:50%;flex:none;margin-left:6px;font-style:normal;display:inline-block;position:relative}.help:hover{color:var(--fg)}.win-head .help:hover,.strip-head .help:hover{color:inherit}.strip-head .help{color:inherit;background:#80808059}.help:after,.warn:after{content:attr(data-help);z-index:5;background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius-s);width:220px;box-shadow:var(--shadow);font:400 12px/1.4 var(--font);color:var(--fg);text-align:left;text-transform:none;letter-spacing:0;white-space:normal;opacity:0;pointer-events:none;padding:8px 10px;transition:opacity .12s;position:absolute;top:21px;left:-8px}.help:hover:after,.warn:hover:after{opacity:1}body[data-theme=night] .help:after,body[data-theme=night] .warn:after{background:#0a1018}.strip .help:after{width:260px;top:auto;bottom:23px}.warn{vertical-align:-3px;cursor:help;width:16px;height:16px;margin-right:6px;display:inline-block;position:relative}.warn svg{width:100%;height:100%;display:block;overflow:visible}.warn-sign{fill:#f5c518;stroke:#2e2c29;stroke-width:1.6px;stroke-linejoin:round}.warn-mark{fill:none;stroke:#2e2c29;stroke-width:2.4px;stroke-linecap:round}.warn:after{width:max-content;max-width:200px;padding:6px 9px}.drop{box-sizing:border-box;border-radius:var(--radius-s);justify-content:space-between;align-items:center;gap:4px;min-width:0;height:26px;transition:border-color .12s;display:inline-flex;color:var(--fg)!important;border:1px solid var(--edge)!important;background:var(--well)!important;padding:0 5px 0 8px!important;font-size:12px!important;font-weight:600!important}.drop span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.drop .ic{width:13px;height:13px;color:var(--muted);flex:none}.drop:hover,.drop.open,.drop:focus-visible{outline:none;border-color:var(--accent)!important}.drop.wide{width:100%;height:30px;display:flex;font-size:13px!important}.drop.bare{font-variant-numeric:tabular-nums;justify-content:center;width:100%;height:24px;padding:0 2px!important}.drop.bare .ic{display:none}.lines li .drop{flex:none;max-width:96px;color:var(--muted)!important}.drop-list{z-index:10000;box-sizing:border-box;gap:1px;max-height:264px;padding:3px;display:grid;position:fixed;overflow-y:auto}#hud .drop-item{border-radius:var(--radius-s);text-align:left;white-space:nowrap;font-variant-numeric:tabular-nums;height:26px;padding:0 9px;font-size:12px;font-weight:600}#hud .drop-item:hover{background:var(--well)}#hud .drop-item.on{background:var(--accent);color:var(--on-accent)}#menu{pointer-events:auto;background:radial-gradient(#0000 30%,#00000047);place-items:center;display:grid;position:absolute;inset:0}#menu[hidden]{display:none}.menu-card{width:320px;overflow:hidden}.menu-stack{justify-items:center;gap:18px;display:grid}.menu-logo{filter:drop-shadow(0 6px 14px #141e1459);width:min(360px,70vw);height:auto;display:block}.menu-actions{gap:8px;padding:14px;display:grid}.menu-actions .btn{height:40px}.menu-actions .btn b{opacity:.8;font-weight:500}body[data-screen=menu] .dock,body[data-screen=menu] .tip,body[data-screen=menu] .floater,body[data-screen=menu] .win:not(.win-newmap,.win-settings){display:none!important}body[data-screen=menu] .game-only{display:none}
