:root{--ink: #292929;--ink-hover: #111111;--mid: #5d5d5d;--soft: #696969;--paper: #ffffff;--surface: #ffffff;--hair: #ececec;--fill: #f4f4f4;--fill-hover: #ededed;--raised: #ffffff;--grid: #e7e7e7;--halo: #ffffff;--shadow: rgba(20, 20, 20, .1);--radius-card: 16px;--radius-panel: 18px;--radius-control: 10px;--radius-control-lg: 12px;--raised-shadow: 0 1px 4px var(--shadow);--dock-shadow: 0 6px 20px var(--shadow);--surface-shadow: 0 10px 34px var(--shadow);--danger: #d65a4e;--wanted: #b9821c;--wanted-wash: rgba(214, 152, 46, .16);--wanted-ink: #2a1e05;--field-ring: rgba(41, 41, 41, .26);--field-wash: rgba(41, 41, 41, .07);--chrome: #262628;--chrome-ink: #f7f7f8;--chrome-soft: rgba(247, 247, 248, .62);--chrome-fill: rgba(247, 247, 248, .1);--chrome-hover: rgba(247, 247, 248, .17);color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,system-ui,sans-serif;letter-spacing:-.15px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}:root[data-theme=dark]{--ink: #e9eaec;--ink-hover: #f6f7f8;--mid: #a4a7ad;--soft: #9ba0a9;--paper: #0f1116;--surface: #181b21;--hair: #2a2e37;--fill: #23272f;--fill-hover: #2c313b;--raised: #2f353f;--grid: #23262d;--halo: #0f1116;--shadow: rgba(0, 0, 0, .5);--danger: #e0685c;--wanted: #e2a845;--wanted-wash: rgba(226, 168, 69, .17);--wanted-ink: #2a1e05;--field-ring: rgba(233, 234, 236, .3);--field-wash: rgba(233, 234, 236, .09);--chrome: #c6c9d0;--chrome-ink: #16181d;--chrome-soft: rgba(22, 24, 29, .7);--chrome-fill: rgba(22, 24, 29, .08);--chrome-hover: rgba(22, 24, 29, .14);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);overflow:hidden}button{font:inherit;letter-spacing:inherit}.app{display:flex;flex-direction:column;height:100%;width:100%}.stage{position:relative;flex:1;min-height:0}.map-view{position:absolute;top:0;right:0;bottom:0;left:0}.fatal{display:grid;min-height:100%;place-items:center;padding:24px}.fatal-card{width:min(420px,100%)}.fatal-card h1,.fatal-card p{margin:0}.fatal-card .card-body{gap:14px;padding:18px}.fatal-card button{align-self:flex-start;min-height:40px;padding:0 14px;border:0;border-radius:var(--radius-control);background:var(--ink);color:var(--paper);cursor:pointer}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab;touch-action:none}.grid-dot{fill:var(--grid)}.mk-halo{fill:var(--halo)}.mk-ink-stroke{stroke:var(--ink)}.map-label,.car{fill:var(--ink);stroke:var(--halo)}.canvas.is-dragging{cursor:grabbing}.stop-selected-ring{transform-box:fill-box;transform-origin:center;opacity:.95;animation:sel-march 1.1s linear infinite,sel-pop .26s cubic-bezier(.2,.85,.25,1)}@keyframes sel-march{to{stroke-dashoffset:-5.5}}@keyframes sel-pop{0%{opacity:0;transform:scale(.72)}to{opacity:.95;transform:scale(1)}}@keyframes pill-in{0%{opacity:0;transform:translateY(6px) scale(.94)}to{opacity:1;transform:none}}@keyframes shelf-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.card{display:flex;flex-direction:column;min-height:0;padding:0;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius-card);overflow:hidden}.card-head{display:flex;align-items:center;gap:6px;flex:none;padding:11px 14px;border-bottom:1px solid var(--hair)}.card-title{flex:1;min-width:0;font-size:13.5px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-head.is-stacked{align-items:flex-start}.card-head-text{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}.card-sub{font-size:12.5px;line-height:1.4;color:var(--mid)}.card-body{display:flex;flex-direction:column;min-height:0;padding:8px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;padding:10px 14px;border-top:1px solid var(--hair);font-size:12px;color:var(--soft)}.card-head+.card-foot{border-top:none}.info-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-size:12.5px}.info-row-label{display:flex;align-items:center;gap:9px;min-width:0;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-row-value{flex:none;color:var(--mid);font-variant-numeric:tabular-nums}.info-row.is-route .info-row-label{overflow:visible;white-space:normal;line-height:1.4}.world-rule{padding:8px 10px 2px;font-size:12px;color:var(--soft)}.world-source{margin-left:auto;padding:3px 7px;border-radius:999px;background:var(--fill);color:var(--soft);font-size:10px;font-weight:500;white-space:nowrap}.world-source.is-live{color:var(--ink)}.world-loading{position:absolute;top:50%;left:50%;z-index:2;transform:translate(-50%,-50%)}.period-track{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:3px;margin-bottom:5px;background:var(--fill);border-radius:11px}.period-opt{height:28px;border:none;border-radius:8px;background:none;color:var(--mid);font:inherit;font-size:12px;letter-spacing:inherit;cursor:pointer;transition:background .12s ease,color .12s ease,box-shadow .14s ease}.period-opt:hover{background:var(--fill-hover);color:var(--ink)}.period-opt.is-on{background:var(--raised);color:var(--ink);font-weight:500;box-shadow:var(--raised-shadow)}.line-name.is-quiet{color:var(--soft)}.line-via{color:var(--soft);font-weight:400}.train{pointer-events:none}.route-badge{width:4px;align-self:stretch;min-height:30px;flex:none;border-radius:2px}.route-via{color:var(--soft);font-weight:400}.route-arrow{color:var(--soft)}.info-section{gap:6px;padding:11px 14px}.info-section+.info-section{border-top:1px solid var(--hair)}.info-label{color:var(--soft);font-size:11px}.info-label:not(:first-child){margin-top:5px}.stop-kind{flex:none;padding:2px 7px;border-radius:999px;background:var(--fill);color:var(--soft);font-size:10.5px;font-weight:500}.dock{position:absolute;left:50%;bottom:18px;transform:translate(clamp(calc(-50vw + 12px),calc(-50% + var(--dock-shift, 0px)),calc(50vw - 100% - 12px)));z-index:6;display:flex;align-items:center;gap:10px}.bar-btn[data-tip]:after,.tool-btn[data-tip]:after,.cycle-opt[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%);z-index:1;padding:4px 8px;background:var(--ink);color:var(--paper);font-size:11px;font-weight:500;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.bar-btn:hover:not(:disabled)[data-tip]:after,.tool-btn:hover:not(:disabled)[data-tip]:after,.cycle-opt:hover[data-tip]:after{opacity:1}[data-tip][data-tip-below]:after{bottom:auto;top:calc(100% + 8px)}.bar-btn:hover{z-index:2}.bar{display:inline-flex;align-items:center;height:44px;padding:4px;background:var(--fill);border:1px solid var(--hair);border-radius:15px;box-shadow:var(--dock-shadow);animation:pill-in .22s cubic-bezier(.2,.85,.25,1)}.bar-seg{display:inline-flex;align-items:center;gap:4px}.bar-tools{display:inline-flex;align-items:center;animation:tools-in .2s cubic-bezier(.2,.85,.25,1)}.bar-tools.is-alone{animation:none}@keyframes tools-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}.bar-div{width:1px;height:20px;margin:0 5px;background:var(--hair);flex:none}.bar-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:34px;height:34px;padding:0 8px;border:none;border-radius:var(--radius-control);background:none;color:var(--mid);font:inherit;letter-spacing:inherit;cursor:pointer;transition:color .14s ease,background .14s ease,box-shadow .14s ease,transform .12s ease}.bar-btn:hover:not(:disabled){color:var(--ink);background:var(--fill-hover)}.bar-btn:active:not(:disabled){transform:translateY(.5px)}.bar-btn:disabled{opacity:.32;cursor:default}.bar-btn.is-on{color:var(--ink);background:var(--raised);box-shadow:var(--raised-shadow)}.bar-btn.is-cta{gap:6px;padding:0 15px 0 12px;background:var(--ink);color:var(--paper);font-size:14px;font-weight:500}.bar-btn.is-cta:hover:not(:disabled){background:var(--ink-hover);color:var(--paper)}.bar-grip{min-width:30px;padding:0 7px;color:var(--soft)}.bar-btn-label{font-size:12px;font-weight:500;white-space:nowrap}.bar-grip.is-on{background:none;box-shadow:none;color:var(--ink)}.bar-zoom{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:34px;padding:0 4px;color:var(--mid);font-size:12.5px;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.bar-account{width:34px;min-width:34px;padding:0;background:var(--raised);box-shadow:var(--raised-shadow)}.bar-account:hover:not(:disabled){background:var(--surface)}.account-anchor{position:relative;display:inline-flex}.account-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;overflow:hidden;border-radius:8px;color:var(--ink);font-size:11px;font-weight:650;line-height:1}.account-avatar img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.account-state{position:absolute;right:3px;bottom:3px;width:6px;height:6px;border:1.5px solid var(--fill);border-radius:50%;background:var(--ink)}.bar-account.has-attention .account-state{background:var(--wanted)}.bar-account.is-working .account-state{background:var(--mid)}.account-menu{position:absolute;left:50%;bottom:calc(100% + 10px);z-index:7;width:min(280px,calc(100vw - 24px));padding:5px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius-control-lg);box-shadow:var(--surface-shadow);transform:translate(-50%);animation:account-in .16s cubic-bezier(.2,.85,.25,1)}@keyframes account-in{0%{opacity:0;transform:translate(-50%) translateY(6px) scale(.98)}to{opacity:1;transform:translate(-50%)}}.account-menu-row{display:flex;align-items:center;gap:4px;min-width:0;height:32px}.account-email{flex:1;min-width:0;overflow:hidden;padding:0;color:var(--ink);font-size:13px;font-weight:500;text-align:center;text-overflow:ellipsis;white-space:nowrap}.account-provider{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none}.account-alert{flex:none;color:var(--wanted);font-size:11px;white-space:nowrap}.account-action{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;padding:0;border:0;border-radius:8px;background:none;color:var(--mid);cursor:pointer;transition:color .12s ease,background .12s ease}.account-action:hover{background:var(--fill);color:var(--ink)}.account-action[data-tip]:after{content:attr(data-tip);position:absolute;right:0;bottom:calc(100% + 8px);padding:4px 8px;border-radius:6px;background:var(--ink);color:var(--paper);font-size:11px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.account-action:hover[data-tip]:after{opacity:1}.account-sign-in{display:block;width:100%;height:32px;padding:0 9px;border:0;border-radius:8px;background:none;color:var(--ink);font:inherit;font-size:13px;text-align:left;cursor:pointer}.account-sign-in:hover{background:var(--fill)}.account-unavailable{display:block;padding:8px;color:var(--mid);font-size:11px}.account-sep{height:1px;margin:5px 7px;background:var(--hair)}.account-note,.account-error{margin:0;padding:3px 9px 5px;color:var(--soft);font-size:11px;line-height:1.4}.account-error{color:var(--danger)}.account-delete{display:block;width:100%;min-height:34px;padding:6px 9px;border:0;border-radius:8px;background:none;color:var(--mid);font:inherit;font-size:12px;text-align:left;cursor:pointer}.account-delete:hover:not(:disabled){background:var(--fill);color:var(--danger)}.account-delete.is-armed{background:#d65a4e26;color:var(--danger);font-weight:500}.account-delete:disabled{opacity:.55;cursor:wait}.account-legal{display:flex;gap:12px;padding:7px 9px 4px;border-top:1px solid var(--hair)}.account-legal a{color:var(--soft);font-size:11px;text-decoration:none}.account-legal a:hover{color:var(--ink);text-decoration:underline}@media(max-width:520px){.account-menu{width:min(280px,calc(100vw - 24px))}}@media(max-width:350px){.account-menu{left:calc(50% - 12px)}}@media(max-width:320px){.account-menu{left:calc(50% - 24px)}}.topbar{flex:none;position:relative;z-index:8;display:flex;align-items:center;gap:10px;height:36px;padding:0 8px;background:var(--chrome);color:var(--chrome-ink)}.topbar-start{display:inline-flex;align-items:center;min-width:0}.topbar-end{display:inline-flex;align-items:center;gap:4px;margin-left:auto}.top-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 5px;border:none;border-radius:9px;background:none;color:var(--chrome-soft);font:inherit;letter-spacing:inherit;cursor:pointer;transition:color .14s ease,background .14s ease}.top-btn:hover{color:var(--chrome-ink);background:var(--chrome-fill)}.top-btn.is-on{color:var(--chrome-ink);background:var(--chrome-hover)}.top-btn:focus-visible{outline-color:var(--chrome-ink)}.top-btn[data-tip]:after{content:attr(data-tip);position:absolute;top:calc(100% + 9px);left:50%;z-index:1;padding:4px 8px;background:var(--ink);color:var(--paper);font-size:11px;font-weight:500;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%);transition:opacity .12s ease}.top-btn:hover[data-tip]:after{opacity:1}.topbar-end .top-btn[data-tip]:after{left:auto;right:0;transform:none}.view-toggle{display:inline-flex;gap:2px}.view-opt{gap:6px;padding-inline:8px;font-size:12px;font-weight:500}.view-opt:focus-visible{outline-color:var(--chrome-ink);outline-offset:1px}.topbar .bar-account{width:auto;min-width:28px;gap:5px;padding:0 8px 0 4px;background:none;box-shadow:none}.topbar .bar-account:hover:not(:disabled){background:var(--chrome-fill)}.topbar .bar-account.is-on{background:var(--chrome-hover)}.topbar .account-avatar{color:var(--chrome-ink)}.topbar .account-label{color:var(--chrome-ink);font-size:12px;font-weight:500}.topbar .account-state{border-color:var(--chrome);background:var(--chrome-ink)}.topbar .bar-account.has-attention .account-state{background:var(--wanted)}.topbar .bar-account.is-working .account-state{background:var(--chrome-soft)}.topbar .account-menu{top:calc(100% + 9px);bottom:auto;left:auto;right:0;transform:none;animation:chrome-menu-in .16s cubic-bezier(.2,.85,.25,1)}@keyframes chrome-menu-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}.shelf{position:relative;display:flex;flex-direction:column;align-items:center}.shelf-tools.is-on-bar{min-width:0;max-width:calc(100vw - 24px);box-sizing:border-box;flex-wrap:wrap;justify-content:center;margin-bottom:8px;background:var(--surface);border-bottom:1px solid var(--hair);border-radius:13px;box-shadow:var(--dock-shadow)}.pop-note{margin:0;padding:2px 8px 4px;font-size:11px;line-height:1.45;color:var(--soft)}.pop-sep{height:1px;margin:5px 8px;background:var(--hair)}.pop-row.is-armed{background:#d65a4e26;color:var(--danger);font-weight:500}.pop-row.is-armed:hover{background:#d65a4e3d}.pop-action{min-width:176px}.pop-world{width:min(300px,calc(100vw - 24px))}.pop-row:disabled{color:var(--soft);cursor:not-allowed}.pop-row:disabled:hover{background:none}.composer{position:relative;z-index:5}.composer-open{width:min(520px,calc(100vw - 24px));display:flex;flex-direction:column;align-items:center;animation:shelf-in .2s cubic-bezier(.2,.85,.25,1)}.composer-open.is-closing{animation:shelf-out .15s cubic-bezier(.4,0,1,1) forwards;pointer-events:none}@keyframes shelf-out{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(8px) scale(.97)}}.shelf-tools{display:inline-flex;align-items:center;gap:2px;max-width:100%;margin-bottom:-1px;padding:4px 5px;background:var(--surface);border:1px solid var(--hair);border-bottom:none;border-radius:11px 11px 0 0;position:relative;z-index:1;animation:facets-in .18s cubic-bezier(.2,.85,.25,1)}@keyframes facets-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.shelf-input{width:100%;display:flex;align-items:center;gap:8px;padding:8px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius-card);box-shadow:var(--surface-shadow);transition:border-color .14s ease,box-shadow .14s ease}.shelf-input:focus-within{border-color:var(--field-ring);box-shadow:var(--surface-shadow),0 0 0 3px var(--field-wash)}.shelf-input .field-name{flex:1;min-width:0;background:none;border-radius:0;padding:6px;font-size:15px}.shelf-input .field-name:focus{background:none;box-shadow:none}.io-btn{flex:none;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:50%;cursor:pointer;transition:background .14s ease,color .14s ease}.io-cancel{background:var(--fill);color:var(--mid)}.io-cancel:hover{background:var(--fill-hover);color:var(--ink)}.io-more{position:relative;background:none;color:var(--soft)}.io-more:hover{background:var(--fill);color:var(--ink)}.io-submit{background:var(--ink);color:var(--paper);transition:background .16s ease,color .16s ease,box-shadow .16s ease}.io-submit:hover{background:var(--ink-hover)}.io-submit.is-idle{background:var(--fill);color:var(--soft);box-shadow:inset 0 0 0 1px var(--hair)}.io-submit.is-idle:hover{background:var(--fill-hover);color:var(--mid)}.tool{position:relative}.tool-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:none;border-radius:8px;background:none;color:var(--mid);font-size:13px;cursor:pointer;transition:background .12s ease,color .12s ease}.tool-btn:hover{background:var(--fill);color:var(--ink)}.tool-btn.is-active{background:var(--fill-hover);color:var(--ink)}.shelf-tools.is-on-bar{margin-bottom:6px;border-bottom:1px solid var(--hair);border-radius:11px}.shelf-tools.is-on-bar .tool-btn:hover{background:var(--fill-hover);color:var(--ink)}.tool-btn.is-on{background:var(--raised);color:var(--ink);box-shadow:var(--raised-shadow)}.tool-btn.is-action{color:var(--mid)}.tool-div{width:1px;height:18px;margin:0 6px;background:var(--hair);flex:none}.tool-btn svg{display:block}.tool-btn .dot{width:9px;height:9px;border-radius:50%}.pop{position:absolute;bottom:calc(100% + 8px);left:0;z-index:6;min-width:190px;padding:6px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius-control-lg);box-shadow:0 8px 28px #14141424;animation:pop-in .14s ease}.pop-label{font-size:11px;color:var(--soft);padding:4px 8px 6px}.pop-label-sub{padding-top:10px}.days-wide{display:flex;justify-content:space-between;gap:4px;padding:3px;background:var(--fill);border-radius:11px}.days-hint{font-size:11px;color:var(--soft);padding:5px 2px 0}.pop-row{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:none;border-radius:8px;background:none;color:var(--ink);font-size:13px;text-align:left;cursor:pointer;transition:background .12s ease}.pop-row:hover{background:var(--fill)}.pop-row.is-on{background:var(--fill-hover);font-weight:500}.pop-row .dot{width:9px;height:9px;border-radius:50%}.pop-line{max-height:46vh;overflow-y:auto}.pop-when{display:flex;flex-direction:column;gap:10px;padding:8px;min-width:232px}.pop-when .days{justify-content:space-between}.pop-when-row{display:flex;align-items:center;gap:8px}.time-to{flex:none;font-size:12px;color:var(--soft);transition:opacity .12s ease}.time-to.is-off{opacity:.4}.field-name,.field-sub,.field-time{font-family:inherit;letter-spacing:inherit;border:none;background:var(--fill);border-radius:var(--radius-control);color:var(--ink);outline:none;transition:box-shadow .12s ease,background .12s ease}.field-name::placeholder,.field-sub::placeholder{color:var(--soft)}.field-sub{width:100%;font-size:13px;padding:8px 10px;margin-top:6px}.field-time{font-size:13px;padding:7px 9px;flex:1}.field-sub:focus,.field-time:focus{background:var(--surface);box-shadow:0 0 0 2px var(--field-ring)}.date-field{display:flex;flex-direction:column;gap:2px;padding:7px 8px 2px;color:var(--soft);font-size:11px}.date-field .field-sub{margin-top:2px}.days{display:inline-flex;gap:4px;transition:opacity .12s ease}.days.is-off{opacity:.4}.day{width:26px;height:28px;border:none;border-radius:8px;background:none;color:var(--mid);font-size:12px;cursor:pointer;transition:background .12s ease,color .12s ease,box-shadow .14s ease}.day:hover:not(:disabled){background:var(--fill-hover);color:var(--ink)}.day.is-on{background:var(--raised);color:var(--ink);font-weight:500;box-shadow:var(--raised-shadow)}.day:disabled{cursor:default}.vibe{padding:7px 12px;border:none;border-radius:8px;background:var(--fill);color:var(--mid);font-size:13px;cursor:pointer;transition:background .12s ease,color .12s ease}.vibe.is-on{background:var(--fill-hover);color:var(--ink);font-weight:500;box-shadow:inset 0 1px 3px var(--shadow)}.vibe-wide{width:100%;text-align:center}.timefield{display:inline-flex;flex-direction:column;min-width:0}.timefield-input{min-width:0;padding:4px 6px;border:none;border-radius:7px;background:none;color:var(--mid);font:inherit;font-size:12.5px;font-variant-numeric:tabular-nums;letter-spacing:inherit;text-align:right;transition:background .12s ease,color .12s ease}.timefield-input:hover:not(:disabled){background:var(--fill)}.timefield-input:focus{background:var(--fill);color:var(--ink);text-align:left}.timefield-input::placeholder{color:var(--soft)}.timefield-input:disabled{color:var(--soft)}.timefield-input.is-unread{box-shadow:inset 0 0 0 1px var(--wanted)}.timefield-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.timefield-chip{padding:4px 9px;border:none;border-radius:999px;background:var(--fill);color:var(--mid);font:inherit;font-size:12px;letter-spacing:inherit;white-space:nowrap;cursor:pointer;transition:background .14s ease,color .14s ease}.timefield-chip:hover{background:var(--fill-hover);color:var(--ink)}.timefield-chip.is-on{background:var(--ink);color:var(--paper)}.timeval{position:relative;display:inline-flex}.timeval-face{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:4px 6px;margin-left:-5px;border:none;border-radius:6px;background:none;color:var(--ink);font:inherit;font-size:13px;font-variant-numeric:tabular-nums;letter-spacing:inherit;cursor:pointer;transition:background .12s ease}.timeval-face:hover:not(:disabled){background:var(--fill)}.timeval-face.is-empty{color:var(--soft);font-size:12.5px}.timeval-face:hover:not(:disabled){color:var(--ink)}.timeval-pop{position:fixed;outline:none;z-index:60;width:232px;padding:8px;border-radius:var(--radius-control-lg);background:var(--raised);box-shadow:0 0 0 1px var(--hair),0 14px 40px var(--shadow);animation:timeval-in .14s cubic-bezier(.2,.85,.25,1)}@keyframes timeval-in{0%{opacity:0;transform:translateY(-4px)}}.timeval-board{max-height:244px;overflow-y:auto;overscroll-behavior:contain;margin:4px -4px;padding:0 4px}.timeval-row{display:flex;align-items:center;gap:9px;width:100%;min-height:40px;padding:0 10px;border:none;border-radius:8px;background:none;color:var(--mid);font:inherit;font-size:13px;font-variant-numeric:tabular-nums;letter-spacing:inherit;text-align:left;cursor:pointer;transition:background .1s ease,color .1s ease}.timeval-row:hover{background:var(--fill);color:var(--ink)}.timeval-row.is-on{background:var(--ink);color:var(--paper)}.timeval-row.is-any{border-bottom:1px solid var(--hair);border-radius:8px 8px 0 0;margin-bottom:2px}.timeval-type{width:100%;min-width:0;margin-top:4px;padding:7px 10px;border:none;border-radius:8px;background:var(--fill);color:var(--ink);font:inherit;font-size:12px;letter-spacing:inherit}.timeval-type::placeholder{color:var(--soft)}@media(pointer:coarse){.timeval-face,.timeval-row{min-height:44px}.timeval-board{max-height:264px}}.bulk{width:min(420px,calc(100vw - 32px));max-height:min(62vh,520px);box-shadow:var(--surface-shadow);animation:pill-in .22s cubic-bezier(.2,.85,.25,1)}.bulk-field{width:100%;min-height:108px;max-height:34vh;padding:8px 10px;border:none;border-radius:var(--radius-control);background:var(--fill);color:var(--ink);font:inherit;font-size:13.5px;line-height:1.5;resize:none;overflow-y:auto}.bulk-field:focus{outline:none;background:var(--fill-hover);box-shadow:0 0 0 2px var(--field-ring)}.bulk-field::placeholder{color:var(--soft);white-space:pre-line}.bulk-note{margin:8px 2px 0;font-size:11px;line-height:1.45}.bulk-plan{gap:12px;overflow-y:auto}.bulk-line{display:flex;flex-direction:column;gap:2px}.bulk-line-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:2px 8px 4px}.bulk-line-name{font-size:12.5px;font-weight:500;color:var(--ink)}.bulk-line-days{font-size:11px;color:var(--soft)}.bulk-stop{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;padding:7px 8px;border:none;border-radius:8px;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background .14s ease,opacity .14s ease}.bulk-stop:hover{background:var(--fill)}.bulk-stop-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bulk-stop-time{font-size:12px;color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap}.bulk-stop-source{grid-column:1 / -1;font-size:10.5px;line-height:1.4;color:var(--soft);opacity:.75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bulk-stop.is-off{opacity:.4}.bulk-stop.is-off .bulk-stop-name{text-decoration:line-through}.bulk-unread{margin:0;padding:5px 8px;font-size:11.5px;line-height:1.4;color:var(--soft);font-style:italic}.bulk-mic{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 8px;border:none;border-radius:9px;background:none;color:var(--mid);font:inherit;font-size:12px;cursor:pointer;transition:color .14s ease,background .14s ease,box-shadow .14s ease}.bulk-mic:hover{color:var(--ink);background:var(--fill)}.bulk-mic.is-on{color:var(--ink);background:var(--raised);box-shadow:var(--raised-shadow)}.bulk-mic.is-on svg{color:var(--danger);animation:mic-live 1.6s ease-in-out infinite}@keyframes mic-live{0%,to{opacity:1}50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.bulk-mic.is-on svg{animation:none}}.bulk-go{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border:1.5px solid var(--hair-strong, var(--hair));border-radius:50%;background:none;color:var(--soft);cursor:pointer;transition:background .14s ease,color .14s ease,border-color .14s ease}.bulk-go.is-ready{border-color:var(--ink);background:var(--ink);color:var(--paper)}.bulk-go.is-ready:hover{background:var(--ink-hover);border-color:var(--ink-hover)}.panel{position:absolute;top:16px;right:16px;z-index:3;width:268px;max-height:calc(100% - 32px);border-radius:var(--radius-panel);box-shadow:var(--surface-shadow)}.line-list{display:flex;flex-direction:column;gap:1px;flex:1;overflow-y:auto;min-height:0;padding:6px}.line-group{display:flex;flex-direction:column}.line-row{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:none;border-radius:var(--radius-control-lg);background:none;color:var(--ink);font:inherit;font-size:13px;letter-spacing:inherit;text-align:left;cursor:pointer;transition:background .14s ease}.line-row:hover{background:var(--fill)}.line-row.is-selected{background:var(--fill-hover);font-weight:500}.line-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-count{font-size:12px;color:var(--soft);font-variant-numeric:tabular-nums}.line-when{flex:none;font-size:12px;color:var(--soft)}.line-when.is-today{color:var(--ink);font-weight:500}.dot{width:8px;height:8px;border-radius:50%;flex:none}.stops{display:flex;flex-direction:column;padding:2px 0 8px 22px}.service-switch{display:flex;flex-wrap:wrap;gap:3px;align-self:flex-start;max-width:100%;margin:2px 0 4px;padding:3px;background:var(--fill);border-radius:11px}.service-opt{display:inline-flex;align-items:center;gap:5px;border:none;border-radius:8px;background:none;color:var(--mid);font:inherit;font-size:12px;padding:4px 10px;cursor:pointer;transition:color .12s ease,background .12s ease,box-shadow .14s ease}.service-opt:hover{color:var(--ink)}.service-opt.is-on{background:var(--raised);color:var(--ink);font-weight:500;box-shadow:var(--raised-shadow)}.service-today{width:5px;height:5px;border-radius:50%;flex:none}.stop-row{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;font:inherit;font-size:13px;letter-spacing:inherit;color:var(--ink);text-align:left;border:none;border-radius:var(--radius-control);background:none;cursor:pointer;transition:background .12s ease}button.stop-row:hover{background:var(--fill)}.stop-row.is-selected{background:var(--fill-hover)}.stop-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stop-time{font-size:12px;color:var(--soft);font-variant-numeric:tabular-nums}.stop-time.is-moved{color:var(--danger)}.stops::-webkit-scrollbar{width:6px}.stops::-webkit-scrollbar-thumb{background:var(--hair);border-radius:999px}.map-pop{position:absolute;z-index:7;display:flex;align-items:stretch;gap:8px;animation:map-pop-in .13s ease}.map-pop-col{position:relative;display:flex;flex-direction:column}.map-pop-leaf{flex:1;min-width:196px;max-width:min(92vw,340px);box-shadow:var(--surface-shadow)}.map-pop .card-body{flex:1;max-height:58vh;overflow-y:auto;gap:7px}.map-pop .info-section{flex:none}@keyframes map-pop-in{0%{opacity:0}to{opacity:1}}.map-pop-side{flex:none;box-shadow:var(--surface-shadow)}.map-pop-side.is-right{animation:side-in-r .14s ease}.map-pop-side.is-left{animation:side-in-l .14s ease}@keyframes side-in-r{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}@keyframes side-in-l{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:translate(0)}}.map-pop-acc{position:absolute;left:0;bottom:100%;margin-bottom:8px}.map-pop-acc.is-below{bottom:auto;top:100%;margin:8px 0 0}.map-pop.ins .map-pop-leaf{width:292px}.ins .card-head{gap:4px;padding:6px 8px;min-height:40px}.ins .card-title{font-size:14px;padding-left:6px}.ins .card-body{padding:8px}.ins .card-foot{padding:9px 14px}.ins-name{width:100%;min-width:0;padding:0;font-family:inherit;letter-spacing:-.2px;border:none;background:none;border-radius:8px;outline:none;color:var(--ink);font-size:15px;font-weight:500;transition:background .12s ease,box-shadow .12s ease}.ins .ins-head{align-items:stretch;gap:10px;padding:10px 10px 11px}.ins-bar{flex:none;width:3px;border-radius:999px}.ins-id{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.ins-service{display:flex;align-items:baseline;gap:8px;min-width:0}.ins-service .timefield{flex:none}.ins-service .timefield-input{padding:1px 5px;margin-left:-5px;font-size:13px;text-align:left}.ins-service .timefield-input:focus{text-align:left}.ins-pattern{min-width:0;color:var(--soft);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ins-board{gap:1px;padding:7px 8px}.ins-board .info-row{gap:8px;padding:5px 6px;border-radius:8px}.ins-board .info-row-label{flex:1}.ins-board .ins-caret{align-self:center;margin-right:-2px}.ins-board button.info-row{width:100%;border:none;background:none;font:inherit;font-size:12.5px;letter-spacing:inherit;text-align:left;cursor:pointer;transition:background .12s ease,box-shadow .14s ease}.ins-board button.info-row:hover:not(:disabled){background:var(--fill)}.ins-board button.info-row:disabled{cursor:wait}.ins-board .info-row.is-open{background:var(--fill-hover);box-shadow:inset 0 1px 3px var(--shadow)}.ins-board .info-row-value.is-set{color:var(--ink)}.ins-board .timeval-face{margin:-5px -6px -5px 0;min-height:22px;font-size:12.5px;color:var(--mid)}.ins-board .timeval-face:hover:not(:disabled){color:var(--ink)}@media(pointer:coarse){.ins-board .info-row{padding:9px 6px}.ins-board .timeval-face{min-height:26px;margin-block:-9px}}.ins-riding{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ins-drop{flex:none;margin:-3px -6px -3px 0;padding:3px 6px;border:none;border-radius:7px;background:none;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;transition:background .12s ease,color .12s ease}.ins-drop:hover{background:var(--fill);color:var(--danger)}.ins-name::placeholder{color:var(--soft);font-weight:400}.ins-name:hover{background:var(--fill)}.ins-name:focus{background:var(--fill);box-shadow:0 0 0 2px var(--field-ring)}.ins-del{flex:none;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:8px;background:none;color:var(--soft);cursor:pointer;transition:background .12s ease,color .12s ease}.ins-del:hover{background:var(--fill);color:var(--danger)}.ins-row{display:flex;align-items:center;gap:4px}.ins-tag{flex:none;width:46px;padding-left:6px;font-size:12px;color:var(--mid)}.ins-swatches{display:flex;gap:8px;padding:1px 6px 2px}.ins-swatch{width:20px;height:20px;padding:0;border:none;border-radius:50%;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.ins-swatch:hover{transform:scale(1.12)}.ins-swatch.is-on{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--ink)}.ins-label{font-size:12px;color:var(--soft);margin-top:2px;padding-left:6px}.service-date{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 6px;color:var(--mid);font-size:12px}.service-date input{min-width:0;padding:6px 8px;border:0;border-radius:8px;outline:none;background:var(--fill);color:var(--ink);font:inherit}.service-date input:focus{box-shadow:0 0 0 2px var(--field-ring)}.ins .days-wide{display:grid;grid-template-columns:repeat(7,1fr)}.ins .day{width:auto;height:26px}.ins .days-hint{padding:2px 6px 0}.paths-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px 0 12px;border:1px solid var(--hair);border-radius:11px;background:var(--surface);box-shadow:0 8px 24px var(--shadow);color:var(--mid);font:inherit;font-size:12px;letter-spacing:inherit;white-space:nowrap;cursor:pointer;transition:background .12s ease,color .12s ease}.paths-chip:hover{background:var(--fill);color:var(--ink)}.paths-chip-plus{display:inline-flex;color:var(--soft);transition:color .12s ease}.paths-chip:hover .paths-chip-plus{color:var(--ink)}.alt-row{display:flex;align-items:center;gap:8px;padding-left:6px}.alt-label{flex:none;font-size:13px;color:var(--mid)}.cycle-toggle{display:inline-flex;align-self:flex-start;gap:3px;padding:3px;background:var(--fill);border-radius:11px}.cycle-opt{position:relative;border:none;border-radius:8px;background:none;color:var(--mid);font:inherit;font-size:12px;letter-spacing:inherit;padding:5px 11px;cursor:pointer;transition:background .12s ease,color .12s ease,box-shadow .14s ease}.cycle-opt:hover{color:var(--ink)}.cycle-opt.is-on{background:var(--raised);color:var(--ink);font-weight:500;box-shadow:var(--raised-shadow)}.cycle-opt.is-shut{color:var(--soft)}.cycle-opt.is-shut:hover{color:var(--mid)}.path-list{display:flex;flex-direction:column;gap:9px}.path{display:flex;flex-direction:column;gap:5px}.path-head{display:flex;align-items:center;gap:6px}.path-mark{flex:none;padding:3px 7px;border:none;border-radius:6px;background:var(--fill);color:var(--mid);font:inherit;font-size:12px;letter-spacing:inherit}button.path-mark{cursor:pointer;transition:background .12s ease,color .12s ease}button.path-mark:hover{background:var(--fill-hover);color:var(--ink)}.ins-open{width:100%;min-width:0;display:flex;align-items:center;gap:8px;padding:4px 6px;border:none;border-radius:8px;background:none;color:var(--ink);font:inherit;letter-spacing:inherit;text-align:left;cursor:pointer;transition:background .12s ease,box-shadow .14s ease}.ins-open:hover{background:var(--fill)}.ins-open.is-open{background:var(--fill-hover);box-shadow:inset 0 1px 3px var(--shadow)}.path-head .ins-open{flex:1;width:auto}.path-name{min-width:0;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.path-name.is-unnamed{color:var(--soft);font-weight:400}.ins-note{flex:1;text-align:right;font-size:12px;color:var(--soft);white-space:nowrap}.ins-caret{flex:none;display:inline-flex;color:var(--soft)}.ins-caret.is-left{transform:rotate(180deg)}.calls{display:flex;flex-direction:column}.call{position:relative;display:flex;align-items:center;gap:10px;height:30px;padding-right:6px;border:none;border-radius:8px;background:none;font:inherit;letter-spacing:inherit;text-align:left;cursor:pointer;transition:background .12s ease}.call:before{content:"";position:absolute;left:15px;top:0;bottom:0;width:3px;margin-left:-1.5px;background:var(--pc)}.call.is-first:before{top:50%}.call.is-last:before{bottom:50%}.call.is-skipped:before{opacity:.3}.call:hover{background:var(--fill)}.call-mk{position:relative;flex:none;width:30px;display:inline-flex;justify-content:center;align-items:center}.call.is-skipped .call-mk{opacity:.4}.call-name{min-width:0;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.call.is-skipped .call-name{color:var(--soft)}.ins-back{flex:none;width:24px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:8px;background:none;color:var(--soft);cursor:pointer;transition:background .12s ease,color .12s ease}.ins-back:hover{background:var(--fill);color:var(--ink)}.ins-back svg{transform:rotate(180deg)}.empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;max-width:min(86vw,424px);pointer-events:none}.empty-title{margin:0 0 5px;font-size:26px;font-weight:500;letter-spacing:-.4px;color:var(--ink)}.empty .empty-lead{margin-bottom:15px;color:var(--ink);font-size:16px;letter-spacing:-.25px}.empty p{margin:0 0 13px;font-size:14px;line-height:1.55;color:var(--mid)}.empty p:last-child{margin-bottom:0}.empty b{font-weight:500;color:var(--ink)}.loading{display:inline-flex;align-items:center;gap:9px;color:var(--mid);font-size:12px;-webkit-user-select:none;user-select:none}.loading-orb{flex:none;display:block}.loading-text{display:grid}.loading-phrase{grid-area:1 / 1;white-space:nowrap;opacity:0;transform:translateY(-3px);transition:opacity .2s ease,transform .2s ease;background-image:linear-gradient(100deg,var(--mid) 0%,var(--mid) 38%,var(--ink) 50%,var(--mid) 62%,var(--mid) 100%);background-size:260% 100%;background-position:160% 0;-webkit-background-clip:text;background-clip:text;color:transparent}.loading-phrase.is-on{opacity:1;transform:none;transition:opacity .2s ease .22s,transform .26s cubic-bezier(.2,.85,.25,1) .22s;animation:loading-shimmer 2.6s linear .32s infinite}@keyframes loading-shimmer{0%{background-position:160% 0}to{background-position:-60% 0}}@media(prefers-reduced-motion:reduce){.loading-phrase{transform:none;transition:opacity .12s ease;background-image:none;-webkit-background-clip:border-box;background-clip:border-box;color:var(--mid)}.loading-phrase.is-on{transform:none;transition:opacity .12s ease;animation:none}}@keyframes nudge{12%{transform:translate(-4px)}36%{transform:translate(4px)}62%{transform:translate(-2px)}84%{transform:translate(2px)}to{transform:none}}.is-refused{animation:nudge .26s cubic-bezier(.36,.07,.19,.97)}@keyframes want-in{0%{box-shadow:0 0 0 0 var(--wanted-wash)}60%{box-shadow:0 0 0 5px var(--wanted-wash)}to{box-shadow:0 0 0 2px var(--wanted)}}.is-wanted.is-wanted{box-shadow:0 0 0 2px var(--wanted);animation:want-in .3s cubic-bezier(.2,.85,.25,1)}.field-sub.is-wanted{background:var(--fill)}.is-wanted::placeholder{color:var(--wanted)}.shelf-input .field-name.is-wanted,.shelf-input .field-name.is-wanted:focus{box-shadow:none;animation:none}.is-refused[data-tip]:after{opacity:1;background:var(--wanted);color:var(--wanted-ink)}.ins-note.is-wanted.is-wanted,.is-wanted-text{color:var(--wanted);box-shadow:none;animation:none}.pop-row.is-refused{background:var(--wanted-wash);color:var(--wanted);font-weight:500}@keyframes settle{0%{transform:scale(.86)}60%{transform:scale(1.07)}to{transform:scale(1)}}.is-settling{animation:settle .26s cubic-bezier(.2,.85,.25,1)}@media(prefers-reduced-motion:reduce){.is-refused.is-refused{animation:none;box-shadow:0 0 0 2px var(--wanted)}.is-wanted.is-wanted,.is-settling{animation:none}}@keyframes net-in{0%{opacity:0}to{opacity:1}}.net-in{animation:net-in .46s ease both}@media(prefers-reduced-motion:reduce){*{transition:none!important}.net-in{animation:none}.train{display:none}.stop-selected-ring{animation:none;opacity:.9}}@media(max-width:560px){.panel{top:60px;width:calc(100vw - 32px);max-height:46vh}}:where(button,input,textarea,[tabindex]):focus-visible{outline:2px solid var(--ink);outline-offset:2px}:where(input:not([type=file]),textarea):focus-visible{outline:none}:where(input:not([type=file]),textarea):focus{box-shadow:0 0 0 2px var(--field-ring)}.map-line-hit:focus-visible{stroke:var(--ink);stroke-width:11px;opacity:.34;outline:none}.map-stop-hit:focus-visible{fill:var(--halo);fill-opacity:.7;stroke:var(--ink);stroke-width:2px;outline:none}@media(forced-colors:active){:where(input,textarea):focus-visible{outline:2px solid Highlight}.map-line-hit:focus-visible,.map-stop-hit:focus-visible{stroke:Highlight}}@media(max-width:560px){.topbar{height:44px;gap:6px;padding:0 6px}.top-btn{min-width:40px;height:40px}.topbar .bar-account{width:auto;min-width:40px;padding:0 9px 0 5px}.panel{left:16px;right:16px;width:auto;max-height:min(46dvh,380px)}.line-row,.stop-row{min-height:44px}.period-opt{min-height:38px}.dock{bottom:max(12px,env(safe-area-inset-bottom));max-width:calc(100vw - 20px);transform:translate(-50%)}.bar{position:relative;height:50px;max-width:calc(100vw - 20px);padding:4px}.bar-btn,.bar-account{min-width:40px;width:auto;height:40px}.bar-account{width:40px}.bar-tools{position:absolute;left:50%;bottom:calc(100% + 8px);max-width:calc(100vw - 20px);min-height:48px;padding:3px;border:1px solid var(--hair);border-radius:15px;background:var(--fill);box-shadow:var(--dock-shadow);transform:translate(-50%);animation:none}.bar-tools.is-alone{position:static;max-width:none;min-height:0;padding:0;border:none;border-radius:0;background:none;box-shadow:none;transform:none}.bar-tools>.bar-div:first-child{display:none}.bar-tools .bar-div{margin-inline:3px}.bar-zoom{min-width:39px;padding-inline:1px}.shelf-tools.is-on-bar{position:absolute;left:50%;bottom:calc(100% + 62px);display:flex;flex-wrap:wrap;justify-content:center;width:min(350px,calc(100vw - 20px));margin:0;border:1px solid var(--hair);border-radius:13px;box-shadow:var(--dock-shadow);transform:translate(-50%);animation:none}.shelf-tools.is-on-bar .tool-btn{min-height:38px}.shelf-tools.is-on-bar .tool-div{margin-inline:3px}.pop{position:fixed;left:12px;right:12px;bottom:calc(128px + env(safe-area-inset-bottom));width:auto;max-height:48dvh;overflow-y:auto}.day{min-width:36px;height:38px}.ins-del,.ins-back,.ins-toggle,.location-row button,.cycle-opt,.service-opt,.call{min-height:40px}.map-pop .card-body{max-height:48dvh}}@media(max-width:350px){.topbar{gap:3px;padding-inline:4px}.topbar-end{gap:2px}.view-opt{gap:0;padding-inline:7px}.view-opt svg{display:none}.topbar .bar-account{gap:4px;padding-inline:4px 7px}.bar-btn.is-cta span,.bar-zoom{display:none}.bar-btn.is-cta{padding-inline:12px}}
