:root{--cream: #fdf8ef;--cream-2: #f4ecdd;--ink: #40352a;--ink-soft: #8a7965;--line: #e3d8c3;--accent: #e5893a;--accent-deep: #c66c22;--green: #56a066;--green-deep: #3f8350;--red: #d4574a;--blue: #4d87b5;--shadow-sm: 0 2px 0 rgba(122, 100, 66, .18), 0 4px 12px rgba(90, 72, 44, .12);--shadow: 0 4px 0 rgba(122, 100, 66, .16), 0 10px 26px rgba(90, 72, 44, .16);--radius: 16px;--font: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI Variable", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#d9d2c6}body{font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none}#view{position:fixed;inset:0;width:100vw;height:100vh;display:block;touch-action:none;cursor:crosshair}body[data-tool=select] #view{cursor:grab}body[data-drag="1"] #view{cursor:grabbing}#ui{position:fixed;inset:0;pointer-events:none;z-index:10}#ui>*{pointer-events:auto}.panel{background:var(--cream);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}#brand{position:fixed;top:16px;left:16px;padding:10px 16px 11px}#brand .name{font-size:21px;font-weight:900;letter-spacing:-.02em;line-height:1}#brand .name span{color:var(--accent)}#brand .stats{margin-top:7px;display:flex;gap:12px;font-size:11.5px;font-weight:700;color:var(--ink-soft);letter-spacing:.01em}#brand .stats b{color:var(--ink);font-weight:800}#tools{position:fixed;left:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;padding:8px}.tool{display:flex;align-items:center;gap:10px;width:152px;padding:9px 11px;border:0;border-radius:11px;background:transparent;font:inherit;font-size:13.5px;font-weight:800;color:var(--ink);cursor:pointer;text-align:left;transition:background .12s,transform .08s}.tool:hover{background:var(--cream-2)}.tool:active{transform:translateY(1px)}.tool.on{background:var(--accent);color:#fff;box-shadow:0 2px 0 var(--accent-deep)}.tool .ico{width:20px;height:20px;flex:none}.tool .key{margin-left:auto;font-size:10.5px;font-weight:800;opacity:.5;background:#0000000f;border-radius:5px;padding:2px 5px;min-width:18px;text-align:center}.tool.on .key{background:#ffffff38;opacity:.9}#actions{position:fixed;top:16px;right:16px;display:flex;gap:6px;padding:7px}.act{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;cursor:pointer;color:var(--ink);transition:background .12s,transform .08s}.act:hover:not(:disabled){background:var(--cream-2)}.act:active:not(:disabled){transform:translateY(1px)}.act:disabled{opacity:.3;cursor:default}.act svg{width:19px;height:19px}#side{position:fixed;right:16px;top:50%;transform:translateY(-50%);width:244px;max-height:74vh;overflow-y:auto;overflow-x:hidden;padding:14px}#side.hide{display:none}#side>*{max-width:100%}#side h3{margin:0 0 10px;font-size:12px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}#side h4{margin:14px 0 7px;font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}#side h4:first-of-type{margin-top:4px}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{border:2px solid var(--line);background:var(--cream-2);border-radius:9px;padding:5px 9px;font:inherit;font-size:11.5px;font-weight:800;color:var(--ink);cursor:pointer;transition:all .12s}.chip:hover{border-color:var(--accent)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.consist{display:flex;flex-direction:column;gap:5px;margin-bottom:4px}.car-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--cream-2);border-radius:9px;font-size:12px;font-weight:700}.car-row .dot{width:9px;height:9px;border-radius:50%;flex:none}.car-row .cargo{margin-left:auto;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);background:#0000000d;border-radius:5px;padding:2px 5px}.car-row .cargo+.x{margin-left:4px}.car-row .x{margin-left:auto;border:0;background:transparent;cursor:pointer;color:var(--ink-soft);font-size:15px;line-height:1;padding:0 2px;font-weight:800}.car-row .x:hover{color:var(--red)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:9px 0;font-size:12px;font-weight:700}.row label{color:var(--ink-soft);min-width:46px}input[type=range]{flex:1 1 60px;min-width:0;width:60px;accent-color:var(--accent)}.val{min-width:38px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.note{font-size:11.5px;line-height:1.5;color:var(--ink-soft);font-weight:600}.note kbd{background:var(--cream-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:1px 5px;font:inherit;font-size:10.5px;font-weight:800}#hint{position:fixed;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:9px 16px;font-size:13px;font-weight:700;white-space:nowrap;max-width:68vw}#hint .mode{font-size:10.5px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;background:var(--accent);color:#fff;padding:3px 8px;border-radius:7px}#hint .mode.bad{background:var(--red)}#hint .mode.hide{display:none}#hint .text{color:var(--ink-soft)}#transport{position:fixed;bottom:18px;right:16px;display:flex;align-items:center;gap:4px;padding:7px}#transport .sep{width:2px;height:22px;background:var(--line);margin:0 5px;border-radius:2px}.spd{border:0;background:transparent;border-radius:9px;padding:6px 9px;cursor:pointer;font:inherit;font-size:12px;font-weight:800;color:var(--ink-soft)}.spd:hover{background:var(--cream-2)}.spd.on{background:var(--accent);color:#fff}#boot{position:fixed;inset:0;display:grid;place-items:center;z-index:50;background:radial-gradient(120% 100% at 50% 0%,#eef3f4,#d7cfc1);transition:opacity .55s ease}#boot.gone{opacity:0;pointer-events:none}.boot-inner{text-align:center}.boot-title{font-size:46px;font-weight:900;letter-spacing:-.03em}.boot-title span{color:var(--accent)}.boot-sub{margin-top:8px;color:var(--ink-soft);font-weight:700;font-size:14px}.boot-rail{margin:22px auto 0;width:190px;height:5px;border-radius:3px;background:var(--line);overflow:hidden}.boot-rail i{display:block;height:100%;width:40%;border-radius:3px;background:var(--accent);animation:shunt 1.15s ease-in-out infinite}@keyframes shunt{0%{transform:translate(-110%)}to{transform:translate(360%)}}@media(max-width:900px){#side{display:none}.tool{width:44px;padding:9px}.tool .label,.tool .key{display:none}}#brand .brand-row{display:flex;align-items:baseline;gap:14px}#brand .money{margin-left:auto;font-size:17px;font-weight:900;color:var(--green-deep);font-variant-numeric:tabular-nums}#brand .money.low{color:var(--red)}.price{font-size:11px;font-weight:800;color:var(--ink-soft);margin-left:6px;font-variant-numeric:tabular-nums}.price.bad{color:var(--red)}#side h3{display:flex;align-items:baseline}#side h3 .price{margin-left:auto;text-transform:none;letter-spacing:0;font-size:12px}.car-row .price{margin-left:auto}.car-row .cargo+.price{margin-left:6px}.car-row .cargo.full{background:var(--green);color:#fff}.chip.next{box-shadow:0 0 0 2px var(--cream),0 0 0 4px var(--accent)}.cards{display:flex;flex-direction:column;gap:6px}.card{text-align:left;border:2px solid var(--line);background:var(--cream-2);border-radius:11px;padding:8px 10px;font:inherit;color:var(--ink);cursor:pointer;transition:all .12s}.card:hover{border-color:var(--accent)}.card.on{border-color:var(--accent);background:#fff3e6}.card-name{display:flex;align-items:baseline;font-size:13px;font-weight:900}.card-blurb{display:block;margin-top:2px;font-size:11px;font-weight:600;color:var(--ink-soft)}#transport .sun{display:grid;place-items:center;color:var(--accent);width:26px}#transport .sun svg{width:17px;height:17px}#transport #tod{width:90px;margin-right:4px}.act.off{opacity:.45}#toasts{position:fixed;left:50%;top:18px;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}.toast{background:var(--cream);border:2px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm);padding:8px 14px;font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;opacity:0;transform:translateY(-8px) scale(.97);transition:opacity .25s,transform .25s}.toast.in{opacity:1;transform:none}.toast.money{border-color:var(--green);color:var(--green-deep)}.toast.warn{border-color:var(--red);color:var(--red)}#photo-hint{position:fixed;bottom:14px;left:50%;transform:translate(-50%);font-size:12px;font-weight:800;color:#ffffffd9;text-shadow:0 1px 6px rgba(0,0,0,.4);display:none;pointer-events:none}#photo-hint kbd{font:inherit;padding:0 5px;border:1px solid rgba(255,255,255,.5);border-radius:4px}body.photo #ui>*:not(#photo-hint){display:none!important}body.photo #photo-hint{display:block}body.photo #view{cursor:grab}.chip.danger{border-color:var(--red);color:var(--red)}.chip.danger:hover{background:var(--red);color:#fff}.car-row>span:nth-child(2){flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.car-row .cargo{white-space:nowrap}#ui>#tip,#tip{position:fixed;z-index:30;pointer-events:none!important;min-width:190px;max-width:250px;padding:10px 12px;box-shadow:var(--shadow-sm)}#tip.hide{display:none}.tip-title{font-size:13.5px;font-weight:900}.tip-sub{font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:1px}.tip-row{display:flex;justify-content:space-between;gap:12px;font-size:11.5px;font-weight:700;color:var(--ink-soft);margin-top:7px}.tip-row b{color:var(--ink);font-weight:800;text-align:right}.tip-bar{height:5px;border-radius:3px;background:var(--cream-2);margin-top:3px;overflow:hidden}.tip-bar i{display:block;height:100%;border-radius:3px;background:var(--accent)}.car-row .ord-n{width:18px;height:18px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:10.5px;font-weight:900;background:var(--line);color:var(--ink)}.car-row.next-stop .ord-n{background:var(--accent);color:#fff}.car-row .x:disabled{opacity:.25;cursor:default}.car-row .x:disabled:hover{color:var(--ink-soft)}.car-row.order .x{margin-left:0}.car-row.order .x:first-of-type{margin-left:auto}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:5px}.tile{display:flex;flex-direction:column;align-items:center;gap:1px;border:2px solid var(--line);background:var(--cream-2);border-radius:10px;padding:4px 2px 3px;font:inherit;cursor:pointer;transition:all .12s}.tile img{width:46px;height:46px;image-rendering:auto}.tile span{font-size:9.5px;font-weight:800;color:var(--ink-soft);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile:hover{border-color:var(--accent);background:#fff3e6}.tile.on{border-color:var(--accent);background:#fff3e6;box-shadow:0 0 0 1px var(--accent)}.tile.small{padding:3px}.tile.small img{width:38px;height:38px}.strip{display:flex;flex-wrap:nowrap;gap:4px;min-height:50px;align-items:center;overflow-x:auto;padding-bottom:2px}.strip .cartile{flex:none}.strip .note{white-space:nowrap}.cartile{width:44px;height:44px;border:2px solid var(--line);border-radius:9px;background:var(--cream-2);padding:2px;cursor:pointer;position:relative;transition:all .12s;display:grid;place-items:center}.cartile img{width:36px;height:36px}.cartile:not(.static):hover{border-color:var(--red);background:#fdeeec}.cartile:not(.static):hover:after{content:"×";position:absolute;top:-7px;right:-6px;width:16px;height:16px;background:var(--red);color:#fff;border-radius:50%;font-size:12px;font-weight:900;display:grid;place-items:center;line-height:1}.cartile.static{cursor:default}.cartile.full{border-color:var(--green)}.cartile.full:before{content:"";position:absolute;top:3px;right:3px;width:8px;height:8px;border-radius:50%;background:var(--green)}.car-row .mini{width:30px;height:30px;flex:none}.card{display:flex;align-items:center;gap:9px}.card-thumb{width:46px;height:46px;flex:none}.card-body{min-width:0;flex:1}.note.keys{margin-top:8px}.car-row .stack{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.car-row .stack b{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.car-row .stack i{font-style:normal;font-size:10px;font-weight:700;color:var(--ink-soft)}#goal{position:fixed;top:76px;left:16px;display:flex;align-items:center;gap:9px;padding:8px 13px;max-width:330px}#goal.hide{display:none}#goal .goal-star{color:var(--accent);display:grid;place-items:center}#goal .goal-star svg{width:18px;height:18px}#goal.done .goal-star{color:var(--green)}#goal .goal-body{display:flex;flex-direction:column;line-height:1.25;min-width:0}#goal .goal-body b{font-size:12px;font-weight:800}#goal .goal-body i{font-style:normal;font-size:11px;font-weight:800;color:var(--ink-soft);font-variant-numeric:tabular-nums}#goal.done .goal-body i{color:var(--green-deep)}#boards-modal{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:#3c302059}#boards-modal.hide{display:none}#boards-modal .modal{width:min(430px,92vw);max-height:80vh;overflow-y:auto;padding:18px}#boards-modal h3{margin:0 0 4px;font-size:16px;font-weight:900}#boards-modal .note{margin:0 0 12px}#boards-modal .card-name{display:flex;flex-direction:column;align-items:flex-start;gap:1px}#boards-modal .card-name .price{margin-left:0}.cartile.new{border-style:dashed;border-color:var(--accent)}.chip:disabled{opacity:.45;cursor:not-allowed}.chip.on:disabled:hover{background:var(--accent);border-color:var(--accent)}#brand .money{display:inline-block;transform-origin:right center}#brand .money.bump{animation:moneybump .45s cubic-bezier(.2,1.6,.4,1)}@keyframes moneybump{0%{transform:scale(1)}35%{transform:scale(1.22);color:var(--accent)}to{transform:scale(1)}}#lookpop{position:fixed;top:72px;right:16px;width:244px;padding:14px}#lookpop.hide{display:none}#lookpop h3{margin:0 0 8px;font-size:12px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}.act.on{background:var(--accent);color:#fff}
