:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-rubik), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-2xl:2.25rem;--weight-muted:400;--weight-base:500;--weight-strong:700;--radius-sm:8px;--radius-md:14px;--radius-pill:999px;--bg:#eef3f0;--panel:#fbfcfb;--surface:#fff;--surface-raised:#fff;--ink:#111a16;--muted:#65726c;--soft:#f2f6f3;--line:#d7e0da;--line-strong:#b7c7bd;--green:#2f7d62;--green-dark:#205a47;--green-soft:#e4f2ec;--yellow:#f2c230;--yellow-soft:#fff4c7;--blue:#2457c5;--blue-soft:#e7eefc;--danger:#111a16;--walk:#2457c5;--hopp:#2f7d62;--straeto:#f2c230;--shadow-sm:0 1px 2px #111a1612;--shadow-raised:0 10px 30px #111a161f;--shadow-focus:0 0 0 4px #2f7d6221}*{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%}body{overscroll-behavior:none;background:var(--bg);height:100dvh;color:var(--ink);-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}button,input{font:inherit}button{cursor:pointer}.app-shell{background:var(--bg);grid-template-columns:minmax(390px,440px) 1fr;height:100dvh;display:grid;overflow:hidden}.app-shell.is-minimal{grid-template-columns:1fr}.app-shell.has-routes{grid-template-columns:minmax(390px,440px) 1fr}.planner-panel{background:var(--panel);height:100dvh;box-shadow:none;z-index:10;border-right:1px solid #111a161a;flex-direction:column;gap:18px;padding:22px;display:flex;position:relative;overflow:auto}.brand-block{gap:8px;padding-bottom:4px;display:grid}.brand-row{grid-template-columns:44px 1fr;align-items:center;gap:12px;display:grid}.brand-mark{border-radius:var(--radius-md);background:var(--ink);color:#fff;width:44px;height:44px;font-size:var(--text-xl);font-weight:var(--weight-base);box-shadow:none;border:1px solid #2f7d6238;place-items:center;display:grid}.eyebrow{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);letter-spacing:0;text-transform:uppercase;margin:0}h1,h2,h3,p{margin:0}h1{font-size:var(--text-2xl);letter-spacing:0;line-height:.94}.route-form{gap:12px;display:grid}.trip-builder{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);gap:0;padding:0;display:grid;position:relative;overflow:visible}.trip-builder:before{display:none}.route-form label{gap:8px;display:grid}.address-field{z-index:4;grid-template-columns:48px 18px minmax(0,1fr) 30px;align-items:center;gap:8px;min-height:50px;padding:0 10px;display:grid;position:relative}.address-field:focus-within{z-index:20}.address-field:before{display:none}.address-field.origin:before{background:var(--blue);content:"A"}.address-field.destination:before{background:var(--ink);content:"B"}.field-label,legend{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase}.address-search-icon{color:var(--muted)}input[type=search]::-webkit-search-cancel-button{appearance:none;display:none}input[type=search]::-webkit-search-decoration{appearance:none;display:none}.address-clear-button{border-radius:var(--radius-pill);width:30px;height:30px;min-height:30px;color:var(--ink);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.address-clear-button:hover,.address-clear-button:active,.address-clear-button:focus-visible{box-shadow:none;background:0 0;outline:none;transform:none}.address-clear-button.is-hidden{visibility:hidden;pointer-events:none}input{width:100%;min-width:0;min-height:48px;box-shadow:none;color:var(--ink);font-weight:var(--weight-base);background:0 0;border:0;border-radius:0;outline:none;padding:0;transition:border-color .14s,box-shadow .14s,background .14s}input:focus{border-color:var(--green);box-shadow:none;background:0 0}.address-current-location-button{width:100%;min-width:0;min-height:48px;box-shadow:none;color:var(--green-dark);font:inherit;font-weight:var(--weight-base);text-align:left;background:0 0;border:0;border-radius:0;justify-content:flex-start;padding:0}.address-current-location-button:hover,.address-current-location-button:active,.address-current-location-button:focus-visible{box-shadow:none;color:var(--green-dark);background:0 0;outline:none;transform:none}.trip-actions{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--soft);grid-template-columns:1fr 36px;align-items:center;gap:8px;min-height:42px;padding:6px 8px 6px 66px;display:grid}.locate-action,.swap-action{border-radius:var(--radius-pill);min-height:30px;box-shadow:none;font-size:var(--text-xs);white-space:nowrap}.locate-action{background:var(--surface);width:100%;color:var(--green-dark);box-shadow:var(--shadow-sm);font-weight:var(--weight-base);border:1px solid #2f7d6238;justify-content:center;align-items:center;gap:7px;padding:0 14px;display:flex}.locate-action svg{color:var(--green);flex:none}.locate-action:hover{background:var(--green-soft);box-shadow:none;color:var(--green-dark);border-color:#2f7d6257}.locate-action:active{background:var(--green-soft);box-shadow:none;color:var(--green-dark);transform:translateY(1px)}.locate-action:focus-visible{background:var(--surface);box-shadow:var(--shadow-focus);color:var(--green-dark);outline:none}.swap-action{border:1px solid var(--line);background:var(--surface);color:var(--muted)}.swap-action:disabled{cursor:default}.swap-action svg{display:block}.address-results{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);max-height:184px;box-shadow:var(--shadow-sm);gap:6px;padding:8px;display:grid;position:static;overflow:auto}.trip-builder .address-results{grid-column:1/-1;margin:-2px 0 8px}.address-result{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);min-height:36px;color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base);text-align:left;box-shadow:var(--shadow-sm);grid-template-columns:26px minmax(0,1fr);align-items:center;gap:2px;padding:8px 11px;display:grid}.address-result-icon{border-radius:var(--radius-pill);background:var(--soft);width:24px;height:24px;color:var(--muted);place-items:center;display:grid}.address-result-icon.address{background:var(--blue-soft);color:var(--walk)}.address-result-icon.place{background:var(--green-soft);color:var(--hopp)}.address-result-icon.transit{background:var(--yellow-soft);color:#b88900}.address-result-icon.education,.address-result-icon.landmark,.address-result-icon.culture,.address-result-icon.public{background:var(--blue-soft);color:var(--blue)}.address-result-icon.park,.address-result-icon.sport{background:var(--green-soft);color:var(--green-dark)}.address-result-icon.shopping,.address-result-icon.food{background:var(--yellow-soft);color:#9a6a00}.address-result-text{gap:2px;min-width:0;display:grid}.address-result strong{font-size:var(--text-sm);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;line-height:1.12;overflow:hidden}.address-result small{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-muted);text-overflow:ellipsis;white-space:nowrap;line-height:1.1;overflow:hidden}.address-result:hover{border-color:var(--green);background:var(--green-soft)}button{border-radius:var(--radius-sm);background:var(--green);color:#fff;min-height:48px;font-weight:var(--weight-base);border:0;justify-content:center;align-items:center;gap:7px;transition:background .14s,box-shadow .14s,transform .14s,opacity .14s;display:inline-flex}button:hover{background:var(--green-dark)}button:active{transform:translateY(1px)}button:disabled{cursor:wait;opacity:.72}.primary-action{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--green) 0%, #256d56 100%);min-height:52px;box-shadow:none}.form-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.secondary-action{border:1px solid var(--line);border-radius:var(--radius-pill);min-height:36px;color:var(--muted);box-shadow:none;font-size:var(--text-sm);font-weight:var(--weight-base);background:#fff;padding:0 14px}.secondary-action:hover{border-color:var(--line-strong);background:var(--soft);color:var(--ink)}.route-form .primary-action{border-radius:var(--radius-pill);min-width:156px;min-height:38px;font-size:var(--text-sm);box-shadow:none;padding:0 18px}.route-search-again{gap:10px}.route-search-again .trip-builder{min-height:132px}.route-search-again .address-field{grid-template-columns:78px 18px minmax(0,1fr) 30px;min-height:66px;padding:8px 14px}.route-search-again .address-field+.address-field{border-top:1px solid var(--line)}.route-search-again input{min-height:42px;font-size:var(--text-md);text-overflow:ellipsis;overflow:hidden}.route-search-again .form-actions{justify-content:flex-end}.route-summary-panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);min-height:132px;box-shadow:var(--shadow-sm);flex-direction:column;gap:0;display:flex;overflow:hidden}.route-summary-row{border-bottom:1px solid var(--line);flex:0 0 66px;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:12px;min-height:66px;padding:10px 14px;display:grid}.route-summary-row:last-child{border-bottom:0}.route-summary-row span{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase;line-height:1}.route-summary-row strong{min-width:0;color:var(--ink);font-size:var(--text-md);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;line-height:1.2;overflow:hidden}.selected-bus-summary{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);gap:7px;padding:14px;display:grid}.selected-bus-summary>span{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase;line-height:1}.selected-bus-summary div{justify-content:space-between;align-items:center;gap:12px;display:flex}.selected-bus-summary strong{color:var(--ink);font-size:var(--text-lg);font-weight:var(--weight-base);line-height:1.15}.selected-bus-summary b{border-radius:var(--radius-pill);background:var(--yellow-soft);max-width:118px;color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.selected-bus-summary p{color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-base);margin:0}.realtime-panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);gap:9px;padding:12px;display:grid}.realtime-panel>div{justify-content:space-between;align-items:center;gap:12px;display:flex}.realtime-panel>div span{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-muted);text-transform:uppercase}.realtime-panel>div strong{border-radius:var(--radius-pill);background:var(--soft);color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-strong);padding:5px 8px}.realtime-panel p{color:var(--muted);font-size:var(--text-sm);line-height:1.35}.realtime-panel ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.realtime-panel li{border-radius:var(--radius-sm);background:var(--soft);color:var(--muted);font-size:var(--text-sm);justify-content:space-between;align-items:center;gap:12px;padding:7px 8px;display:flex}.realtime-panel li b{color:var(--ink);white-space:nowrap}.realtime-panel.loading>div strong{background:var(--blue-soft);color:var(--blue)}.realtime-panel.ready>div strong{background:var(--green-soft)}.realtime-panel.not-configured>div strong,.realtime-panel.error>div strong{background:var(--yellow-soft);color:var(--ink)}.results{gap:12px;min-height:0;display:grid}.route-sheet-handle{display:none}.results-header{justify-content:space-between;align-items:center;gap:16px;padding-top:2px;display:flex}.results-header h2{font-size:var(--text-lg)}.results-header p{color:var(--muted);font-size:var(--text-sm);margin-top:2px}.results-header-actions{align-items:center;gap:8px;display:flex}.results-reset-action{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);min-height:32px;color:var(--green-dark);box-shadow:none;font-size:var(--text-sm);font-weight:var(--weight-base);padding:0 12px}.results-reset-action:hover{border-color:var(--line-strong);background:var(--green-soft);color:var(--green-dark)}.results-header span{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-base);padding:5px 9px}#route-results{gap:10px;margin:0;padding:0;list-style:none;display:grid}.bus-stop-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.bus-stop-item{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);min-height:46px;box-shadow:var(--shadow-sm);grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.bus-stop-item b{border-radius:var(--radius-pill);background:var(--ink);color:#fff;width:30px;height:30px;font-size:var(--text-sm);font-weight:var(--weight-base);place-items:center;display:grid}.bus-stop-item span{min-width:0;overflow:hidden}.bus-stop-item span strong{color:var(--ink);font-size:var(--text-md);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;line-height:1.2;display:block;overflow:hidden}.bus-stop-item small{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-base);margin-top:2px;display:block}.bus-stop-item em{color:var(--green);font-size:var(--text-sm);font-style:normal;font-weight:var(--weight-base);white-space:nowrap}.bus-stop-list-status{border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);padding:14px}.bus-stop-list-status strong{color:var(--ink);font-size:var(--text-md);font-weight:var(--weight-base);display:block}.bus-stop-list-status p{font-size:var(--text-sm);margin-top:4px;line-height:1.35}.route-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);box-shadow:var(--shadow-sm);cursor:pointer;gap:12px;padding:14px;transition:border-color .14s,box-shadow .14s,transform .14s;display:grid;position:relative;overflow:hidden}.route-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.route-card.selected{box-shadow:inset 4px 0 0 var(--green);border-color:#2f7d62b3}.route-card-main{grid-template-columns:30px 1fr auto;align-items:start;gap:12px;display:grid}.route-rank{background:var(--ink);color:#fff;width:30px;height:30px;font-size:var(--text-sm);font-weight:var(--weight-base);border-radius:50%;place-items:center;display:grid}.route-mode-stack{gap:5px;margin-bottom:6px;display:flex}.route-mode-icon{background:var(--soft);width:19px;height:19px;color:var(--muted);border:1px solid #111a1614;border-radius:50%;place-items:center;display:grid}.route-mode-icon svg{display:block}.route-mode-icon.walk{background:var(--blue-soft);color:var(--walk)}.route-mode-icon.hopp{background:var(--green-soft);color:var(--hopp)}.route-mode-icon.straeto{background:var(--yellow-soft);color:var(--straeto)}.route-card h3{font-size:var(--text-md);line-height:1.2}.route-card p,.legs{color:var(--muted);font-size:var(--text-sm)}.route-duration{color:var(--green-dark);font-size:var(--text-xs);white-space:nowrap;justify-items:end;gap:1px;line-height:1;display:grid}.route-price{color:var(--muted);font-size:var(--text-xs);white-space:nowrap;grid-column:3;justify-items:end;margin-top:-8px;line-height:1;display:grid}.route-price span{color:var(--green-dark);font-size:var(--text-sm)}.route-duration svg{color:var(--muted)}.route-duration span{color:var(--ink);font-size:var(--text-xl)}.legs{border-top:1px solid var(--line);gap:7px;margin:0;padding:10px 0 0;list-style:none;display:grid}.leg-item{justify-content:space-between;gap:16px;line-height:1.25;display:flex}.leg-item span:first-child{flex:auto;align-items:center;gap:8px;min-width:0;display:flex}.leg-item span:first-child>span{min-width:0;display:block}.leg-metrics{white-space:nowrap;flex:none;justify-items:end;gap:1px;display:grid}.leg-item small{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-muted);margin-top:2px;display:block}.leg-item .leg-metrics small{color:var(--green-dark);font-size:var(--text-xs);margin:0;line-height:1}.leg-item.approximate{align-items:start}.leg-mode-icon{border-radius:var(--radius-pill);background:var(--soft);width:22px;height:22px;color:var(--muted);flex:none;place-items:center;display:grid}.leg-mode-icon svg{display:block}.leg-mode-icon.walk{background:var(--blue-soft);color:var(--walk)}.leg-mode-icon.hopp{background:var(--green-soft);color:var(--hopp)}.leg-mode-icon.straeto{background:var(--yellow-soft);color:var(--straeto)}.leg-warning{align-items:center;gap:4px;display:inline-flex}.empty-state{border:1px dashed var(--line-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--muted);gap:6px;padding:18px;display:grid}.empty-state>span{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--walk), var(--hopp), var(--straeto));width:38px;height:6px}.empty-state strong{color:var(--ink);font-size:var(--text-md)}.empty-state p{font-size:var(--text-sm);line-height:1.35}.map-stage{background:#dfe8e4;width:100%;height:100dvh;min-height:0;position:relative;overflow:hidden}#map{z-index:0;position:absolute;inset:0}.maplibregl-map{overscroll-behavior:none;background:#dfe8e4;width:100%;height:100%;font-family:inherit}.maplibregl-ctrl-attrib{color:#111a1675;font-size:10px;font-weight:var(--weight-muted);background:#ffffff9e;line-height:1.5}.maplibregl-ctrl-attrib a{color:#111a168f}.maplibregl-ctrl-attrib.maplibregl-compact{background:#ffffff9e}#map .maplibregl-canvas:focus{outline:none}.map-hover-tooltip{pointer-events:none}.map-hover-tooltip .maplibregl-popup-content{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-sm);color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-base);padding:5px 9px;line-height:1.3}.map-hover-tooltip .maplibregl-popup-tip{display:none}.destination-search-panel{z-index:600;border-radius:var(--radius-md);background:var(--surface);width:min(390px,100vw - 32px);box-shadow:var(--shadow-raised);border:1px solid #111a161a;gap:8px;padding:8px;display:grid;position:absolute;top:16px;left:16px}.minimal-trip-builder{border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;gap:0;display:grid;position:relative;overflow:visible}.minimal-trip-builder:before{display:none}.destination-search-panel .address-field{grid-template-columns:48px 18px minmax(0,1fr) 30px;align-items:center;gap:8px;min-height:48px;padding:0 10px;display:grid}.destination-search-panel .address-field:before{display:none}.destination-search-panel .field-label{color:var(--green-dark);font-size:var(--text-2xs);font-weight:var(--weight-base);letter-spacing:0;text-transform:uppercase}.destination-search-panel input{min-height:46px;box-shadow:none;color:var(--ink);font-size:var(--text-md);font-weight:var(--weight-base);background:0 0;border:0;border-radius:0;padding:0}.destination-search-panel input:focus{box-shadow:none}.destination-search-panel .address-results{border-radius:var(--radius-sm);grid-column:1/-1;max-height:168px;margin-top:-2px;padding:6px}.destination-search-panel .address-result{border-radius:var(--radius-sm);min-height:32px;font-size:var(--text-sm);padding:7px 9px}.minimal-trip-actions{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--soft);grid-template-columns:1fr 36px;align-items:center;gap:8px;min-height:42px;padding:6px 8px 6px 66px;display:grid}.destination-search-panel .locate-action,.destination-search-panel .swap-action{border-radius:var(--radius-pill);min-height:30px;box-shadow:none;font-size:var(--text-xs);font-weight:var(--weight-base);white-space:nowrap}.destination-search-panel .locate-action{background:var(--surface);border:1px solid #2f7d6238;justify-content:center;gap:7px;padding:0 14px}.destination-search-panel .swap-action{border:1px solid var(--line);color:var(--muted);background:#fff;place-items:center;display:grid}.destination-search-panel .primary-action{border-radius:var(--radius-pill);min-width:126px;min-height:36px;font-size:var(--text-sm);box-shadow:none;padding:0 16px}.destination-search-panel .secondary-action{min-height:36px;font-size:var(--text-sm)}.minimal-status{color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-muted);line-height:1.35}.map-controls{z-index:610;align-items:center;gap:8px;width:auto;max-width:calc(100vw - 48px);display:flex;position:absolute;bottom:24px;left:24px}.feedback-trigger,.language-toggle{border-radius:var(--radius-pill);background:var(--surface);min-height:36px;color:var(--ink);box-shadow:var(--shadow-sm);border:1px solid #111a161f;justify-self:start}.feedback-trigger svg,.language-toggle svg{width:18px;height:18px;color:var(--ink);stroke:currentColor;flex:none}.feedback-trigger{font-size:var(--text-sm);font-weight:var(--weight-base);padding:0 14px}.language-toggle{width:38px;min-width:38px;color:var(--green-dark);padding:0}.feedback-trigger:hover,.language-toggle:hover{background:var(--soft);color:var(--green-dark)}.maplibregl-ctrl-group button{color:var(--ink);font-weight:var(--weight-base)}.feedback-overlay{z-index:900;background:#111a163d;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.feedback-dialog{border-radius:var(--radius-md);background:var(--surface);width:min(430px,100%);box-shadow:var(--shadow-raised);border:1px solid #111a161a;gap:12px;padding:16px;display:grid}.feedback-header{grid-template-columns:1fr 34px;align-items:start;gap:12px;display:grid}.feedback-header h2{font-size:var(--text-lg)}.feedback-header p,.feedback-status{color:var(--muted);font-size:var(--text-sm);line-height:1.35}.feedback-close{border:1px solid var(--line);border-radius:var(--radius-pill);min-height:34px;color:var(--muted);box-shadow:none;font-size:var(--text-xl);background:#fff;line-height:1}.feedback-dialog label{gap:6px;display:grid}.feedback-dialog label>span{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase}.feedback-dialog textarea,.feedback-dialog input{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;box-shadow:var(--shadow-sm);color:var(--ink);font:inherit;font-size:var(--text-md);font-weight:var(--weight-base);resize:vertical;background:#fff;outline:none;padding:10px 11px}.feedback-dialog textarea:focus,.feedback-dialog input:focus{border-color:var(--green);box-shadow:var(--shadow-focus)}.feedback-actions{justify-content:flex-end;gap:8px;display:flex}.feedback-actions .primary-action{border-radius:var(--radius-pill);min-height:38px;font-size:var(--text-sm);padding:0 16px}.feedback-status.sent{color:var(--green-dark);font-weight:var(--weight-base)}.feedback-status.error{color:#9a3412;font-weight:var(--weight-base)}.place-marker{border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 4px;background:var(--ink);width:46px;height:46px;box-shadow:var(--shadow-raised);border:3px solid #fff;place-items:center;display:grid;position:relative;transform:rotate(-45deg)}.place-marker span{color:#fff;font-size:var(--text-xs);font-weight:var(--weight-base);letter-spacing:0;transform:rotate(45deg)}.place-marker.origin{background:var(--blue);border-radius:var(--radius-pill);width:34px;height:34px;box-shadow:var(--shadow-raised);border-width:2px;transform:none}.place-marker.origin span{font-size:var(--text-2xs);transform:none}.place-marker.current{background:var(--hopp)}.place-marker.current:after{border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 4px;content:"";border:2px solid #2f7d6247;position:absolute;inset:-10px}.place-marker.current{border-radius:var(--radius-pill);width:34px;height:34px;box-shadow:var(--shadow-raised);border-width:2px;transform:none}.place-marker.current span{font-size:var(--text-2xs);transform:none}.place-marker.current:after{border-radius:var(--radius-pill);inset:-7px}.place-marker.destination{background:var(--ink);border-radius:var(--radius-pill);width:34px;height:34px;box-shadow:var(--shadow-raised);border-width:2px;transform:none}.place-marker.destination span{font-size:var(--text-2xs);transform:none}.user-location-marker{border-radius:50%;place-items:center;width:28px;height:28px;display:grid;position:relative}.user-location-marker:before{content:"";background:#2457c52e;border-radius:50%;animation:1.8s ease-out infinite location-pulse;position:absolute;inset:0}.user-location-marker span{background:var(--walk);border:3px solid #fff;border-radius:50%;width:14px;height:14px;position:relative;box-shadow:0 8px 20px #2457c547,0 0 0 2px #2457c52e}.hopp-cluster-marker{width:clamp(16px, var(--cluster-size), 56px);height:clamp(16px, var(--cluster-size), 56px);border-radius:var(--radius-pill);box-shadow:var(--shadow-raised);cursor:pointer;contain:layout style;background:#2f7d62e0;border:2px solid #ffffffeb;place-items:center;display:grid}.hopp-cluster-marker.car{border-radius:var(--radius-sm);background:#101828e0}.hopp-cluster-marker.mixed{background:linear-gradient(135deg,#2f7d62e6 0 52%,#101828e6 52% 100%)}.hopp-cluster-marker svg{color:#ffffff38;fill:#ffffff38;width:52%;height:52%;position:absolute}.hopp-cluster-marker .scooter-icon-mark{fill:none;stroke:#ffffff42;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2px}.hopp-cluster-marker span{color:#fff;font-size:var(--text-xs);font-weight:var(--weight-base);line-height:1;position:relative}.hopp-vehicle-marker{width:clamp(8px, var(--vehicle-size), 40px);height:clamp(8px, var(--vehicle-size), 40px);border-radius:var(--radius-pill);opacity:var(--vehicle-opacity);contain:layout style;background:#2f7d62;border:1.5px solid #fff;place-items:center;display:grid;box-shadow:0 4px 10px #111a162e,0 0 0 1px #2f7d6238}.hopp-vehicle-marker svg{color:#fff;fill:#fff;width:72%;height:72%}.hopp-vehicle-marker .scooter-icon-mark{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;width:72%;height:72%}.hopp-vehicle-marker.car{border-radius:var(--radius-sm);background:#101828;box-shadow:0 4px 10px #111a162e,0 0 0 1px #10182838}.hopp-vehicle-marker.is-selected{opacity:1;box-shadow:0 4px 10px #111a162e,0 0 0 5px #2f7d6247}.hopp-vehicle-marker.car.is-selected{box-shadow:0 4px 10px #111a162e,0 0 0 5px #10182842}.selected-hopp-summary{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);gap:7px;padding:14px;display:grid}.selected-hopp-summary>span{color:var(--green-dark);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase;line-height:1}.selected-hopp-summary div{justify-content:space-between;align-items:center;gap:12px;display:flex}.selected-hopp-summary strong{color:var(--ink);font-size:var(--text-lg);font-weight:var(--weight-strong);text-transform:capitalize;line-height:1.15}.selected-hopp-summary b{border-radius:var(--radius-pill);background:var(--green-soft);max-width:118px;color:var(--green);font-size:var(--text-xs);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.selected-hopp-detail{color:var(--ink);gap:12px;display:grid}.selected-hopp-detail dl{gap:6px;margin:0;display:grid}.selected-hopp-detail dl div{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);min-height:38px;box-shadow:var(--shadow-sm);grid-template-columns:84px 1fr;align-items:center;gap:8px;padding:8px 12px;display:grid}.selected-hopp-detail dt{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase}.selected-hopp-detail dd{color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base);text-align:right;justify-self:end;margin:0}.hopp-battery{--battery-color:#26825f;border:2px solid var(--battery-color);border-radius:var(--radius-sm);background:var(--surface);width:58px;height:28px;color:var(--ink);isolation:isolate;place-items:center;display:inline-grid;position:relative;overflow:visible}.hopp-battery:after{content:"";background:var(--battery-color);border-radius:0 4px 4px 0;width:5px;height:12px;position:absolute;right:-7px}.hopp-battery-fill{border-radius:var(--radius-sm);background:var(--battery-color);width:calc(100% - 6px);transform:scaleX(var(--battery-scale));transform-origin:0;z-index:0;position:absolute;inset:3px auto 3px 3px}.hopp-battery-label{z-index:1;font-size:var(--text-xs);font-weight:var(--weight-base);text-shadow:0 1px #ffffff61;line-height:1;position:relative}.hopp-battery-high{--battery-color:#48e076}.hopp-battery-medium{--battery-color:#f2c230}.hopp-battery-low{--battery-color:#dc3f3f}.hopp-battery-missing{color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-base)}.hopp-open-action{border-radius:var(--radius-sm);background:var(--green);color:#fff;min-height:40px;font-size:var(--text-sm);font-weight:var(--weight-base);place-items:center;text-decoration:none;display:grid}.map-marker-anchor{line-height:0}.bus-vehicle-marker{border-radius:var(--radius-sm);background:var(--straeto);width:22px;height:22px;color:var(--ink);transform:rotate(var(--bearing,0deg));transform-origin:50%;border:2px solid #fff;place-items:center;display:grid;position:relative;box-shadow:0 8px 16px #111a162e,0 0 0 1px #f2c23047}.bus-vehicle-marker:before{border-right:4px solid #0000;border-bottom:6px solid var(--straeto);content:"";border-left:4px solid #0000;width:0;height:0;position:absolute;top:-6px}.bus-vehicle-marker span{border-radius:var(--radius-pill);background:var(--surface);min-width:12px;height:12px;color:var(--ink);font-size:.5rem;font-weight:var(--weight-base);transform:rotate(var(--label-bearing,0deg));place-items:center;line-height:1;display:grid}.selected-stop-summary{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);gap:7px;padding:14px;display:grid}.selected-stop-summary>span{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-base);text-transform:uppercase;line-height:1}.selected-stop-summary div{justify-content:space-between;align-items:center;gap:12px;display:flex}.selected-stop-summary strong{color:var(--ink);font-size:var(--text-lg);font-weight:var(--weight-strong);line-height:1.15}.selected-stop-summary b{border-radius:var(--radius-pill);background:var(--yellow-soft);max-width:118px;color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.stop-timetable-status{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);box-shadow:var(--shadow-sm);gap:4px;padding:14px;display:grid}.stop-timetable-status strong{color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-strong)}.stop-timetable-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.stop-timetable-item{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);min-height:44px;box-shadow:var(--shadow-sm);grid-template-columns:38px 1fr auto;align-items:center;gap:8px;padding:8px 12px;display:grid}.stop-timetable-item b{border-radius:var(--radius-sm);background:var(--straeto);min-width:32px;height:24px;color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-strong);place-items:center;display:grid}.stop-timetable-item span{color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.stop-timetable-item strong{color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base)}.stop-timetable-item em{color:var(--muted);font-size:var(--text-xs);font-style:normal;font-weight:var(--weight-base);grid-column:2/-1}@keyframes location-pulse{0%{opacity:.8;transform:scale(.58)}to{opacity:0;transform:scale(1.65)}}.map-legend{border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-raised);color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base);z-index:500;border:1px solid #111a1621;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex;position:absolute;bottom:18px;left:18px}.map-legend span{align-items:center;gap:7px;display:inline-flex}.legend-swatch{border-radius:var(--radius-pill);width:28px;height:5px;display:inline-block}.legend-swatch.walk{background:repeating-linear-gradient(90deg, var(--walk) 0, var(--walk) 4px, transparent 4px, transparent 8px);box-shadow:inset 0 0 0 1px var(--walk)}.legend-swatch.hopp{background:var(--hopp)}.legend-swatch.straeto{background:repeating-linear-gradient(90deg, var(--straeto) 0, var(--straeto) 10px, transparent 10px, transparent 16px);box-shadow:inset 0 0 0 1px var(--straeto)}.map-fallback{border-radius:var(--radius-sm);box-shadow:var(--shadow-raised);color:var(--muted);background:#fff;padding:12px 14px;position:absolute;bottom:24px;left:24px}h1,.brand-mark,.results-header h2,.feedback-header h2,.route-card h3,.route-rank,.route-duration span,.route-price span,.selected-bus-summary strong,.bus-stop-item strong,.empty-state strong{font-weight:var(--weight-strong)}.eyebrow,.route-duration,.route-price,.leg-item small,.address-result small,.minimal-status,.results-header span{font-weight:var(--weight-muted)}@media (min-width:921px){.app-shell.has-routes .map-controls{bottom:72px}.app-shell.has-routes .map-legend{bottom:24px;left:24px}}.maintainer-badge{z-index:610;border-radius:var(--radius-pill);background:var(--surface);width:36px;min-height:36px;box-shadow:var(--shadow-sm);color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-base);border:1px solid #111a161f;align-items:center;gap:0;padding:0;display:inline-flex;position:absolute;top:18px;right:18px;overflow:hidden}.maintainer-badge span{border-radius:var(--radius-pill);width:34px;height:34px;color:var(--green-dark);font-size:var(--text-sm);font-weight:var(--weight-base);flex:none;place-items:center;font-style:normal;display:grid}.maintainer-badge b{white-space:nowrap;opacity:0;max-width:0;transition:max-width .16s,opacity .12s;overflow:hidden}.maintainer-badge.is-open{gap:8px;width:auto;padding-right:13px}.maintainer-badge.is-open b{opacity:1;max-width:260px}@media (max-width:920px){body{height:100dvh;overflow:hidden}.app-shell{grid-template-rows:1fr;grid-template-columns:1fr;height:100dvh;overflow:hidden}.app-shell.is-minimal{grid-template-rows:1fr}.planner-panel{border-right:0;border-bottom:1px solid var(--line);height:auto;padding:22px;overflow:visible}.map-stage{height:100dvh;min-height:0}.destination-search-panel{top:calc(16px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));width:min(390px, calc(100vw - 32px - env(safe-area-inset-left) - env(safe-area-inset-right)))}.maintainer-badge{display:none}}@media (max-width:560px){.planner-panel{padding:18px}h1{font-size:var(--text-2xl)}.route-card-main{grid-template-columns:30px 1fr}.route-card strong{grid-column:2;justify-items:start}.destination-search-panel{top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));width:calc(100vw - 20px - env(safe-area-inset-left) - env(safe-area-inset-right));padding:8px}}@media (max-width:920px){.app-shell.has-routes{height:100dvh;display:block;position:relative;overflow:hidden}.app-shell.has-routes .map-stage{height:100dvh;min-height:0}.app-shell.has-routes .planner-panel{z-index:700;height:100%;box-shadow:none;pointer-events:none;background:0 0;border:0;padding:0;display:block;position:absolute;inset:0;overflow:hidden}.app-shell.has-routes .planner-panel>*{pointer-events:auto}.app-shell.has-routes .brand-block{display:none}.app-shell.has-routes .route-search-again,.app-shell.has-routes .selected-bus-summary{top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));right:calc(10px + env(safe-area-inset-right));z-index:2;border-radius:var(--radius-md);background:var(--surface);max-width:520px;box-shadow:var(--shadow-raised);border:1px solid #111a161a;margin:0 auto;padding:8px;display:grid;position:absolute}.app-shell.has-routes .route-search-again .trip-builder{border-radius:var(--radius-md);min-height:0;box-shadow:none}.app-shell.has-routes .route-search-again .address-field{grid-template-columns:48px 18px minmax(0,1fr) 30px;min-height:48px;padding:0 10px}.app-shell.has-routes .route-search-again input{min-height:46px;font-size:var(--text-md)}.app-shell.has-routes .route-search-again .form-actions{margin-top:8px}.app-shell.has-routes .route-search-again .primary-action{border-radius:var(--radius-pill);width:100%;min-height:38px;font-size:var(--text-sm)}.app-shell.has-routes .route-search-again .address-results{max-height:132px}.app-shell.has-routes .results{right:0;bottom:calc(26px + env(safe-area-inset-bottom));z-index:3;pointer-events:none;gap:8px;padding:0;display:grid;position:absolute;left:0}.app-shell.has-routes .route-sheet-handle{border-radius:var(--radius-pill);background:var(--surface);width:auto;min-height:44px;color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-base);box-shadow:var(--shadow-sm);pointer-events:auto;touch-action:none;border:1px solid #111a161a;grid-auto-flow:row;justify-items:center;gap:4px;margin:0 auto;padding:6px 16px 7px;display:inline-grid}.app-shell.has-routes .route-sheet-grip{border-radius:var(--radius-pill);background:#111a1638;width:34px;height:4px;display:block}.app-shell.has-routes.route-sheet-collapsed .route-card{max-height:none;overflow:hidden}.app-shell.has-routes.route-sheet-collapsed .legs{display:none}.app-shell.has-routes .results-header{border-radius:var(--radius-pill);background:var(--surface);width:min(520px,100vw - 20px);box-shadow:var(--shadow-sm);pointer-events:auto;border:1px solid #111a161a;margin:0 auto;padding:7px 8px 7px 14px}.app-shell.has-routes .results-header h2{font-size:var(--text-md)}.app-shell.has-routes .results-header-actions{gap:6px}.app-shell.has-routes #route-results{width:100%;padding:0 calc(10px + env(safe-area-inset-right)) 4px calc(10px + env(safe-area-inset-left));scroll-snap-type:x proximity;touch-action:pan-x;scrollbar-width:none;pointer-events:auto;gap:12px;margin:0;scroll-padding:10px;list-style:none;display:flex;overflow:auto hidden}.app-shell.has-routes #route-results::-webkit-scrollbar{display:none}.app-shell.has-routes .route-card{border-radius:var(--radius-md);scroll-snap-align:center;max-height:min(46dvh,360px);box-shadow:var(--shadow-raised);flex:0 0 min(82vw,380px);padding:10px 12px;overflow:hidden}.app-shell.has-routes .route-card-main{grid-template-columns:26px minmax(0,1fr) auto;gap:8px}.app-shell.has-routes .route-rank{width:26px;height:26px;font-size:var(--text-xs)}.app-shell.has-routes .route-card strong{grid-column:auto;justify-items:end}.app-shell.has-routes .route-duration{font-size:var(--text-2xs)}.app-shell.has-routes .route-price{font-size:var(--text-2xs);grid-column:3;margin-top:-5px}.app-shell.has-routes .route-price span{font-size:var(--text-xs)}.app-shell.has-routes .route-duration span{font-size:var(--text-xl)}.app-shell.has-routes .route-duration svg{width:10px;height:10px}.app-shell.has-routes .route-mode-stack{gap:4px;margin-bottom:3px}.app-shell.has-routes .route-mode-icon{width:17px;height:17px}.app-shell.has-routes .route-card h3{font-size:var(--text-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.08;display:-webkit-box;overflow:hidden}.app-shell.has-routes .route-card p{font-size:var(--text-xs);-webkit-line-clamp:1;-webkit-box-orient:vertical;line-height:1.12;display:-webkit-box;overflow:hidden}.app-shell.has-routes .legs{font-size:var(--text-xs);gap:5px;padding-top:8px;line-height:1.16}.app-shell.has-routes .leg-item{gap:8px}.app-shell.has-routes .leg-metrics small{font-size:var(--text-2xs)}.app-shell.has-routes .leg-item span:first-child{gap:6px}.app-shell.has-routes .leg-mode-icon{width:18px;height:18px}.app-shell.has-routes .leg-mode-icon svg{width:11px;height:11px}.app-shell.has-routes .leg-item span:first-child>span{overflow:hidden}.app-shell.has-routes .leg-item small{font-size:var(--text-2xs);line-height:1.08}.app-shell.has-routes .bus-stop-list{overscroll-behavior:contain;scrollbar-width:thin;pointer-events:auto;gap:10px;width:min(520px,100vw - 20px);max-height:min(45dvh,380px);margin:0 auto;padding:0 0 4px;list-style:none;display:grid;overflow:hidden auto}.app-shell.has-routes .bus-stop-list::-webkit-scrollbar{width:5px}.app-shell.has-routes .bus-stop-list::-webkit-scrollbar-thumb{border-radius:var(--radius-pill);background:#111a162e}.app-shell.has-routes .bus-stop-item{border-radius:var(--radius-md);background:var(--surface);width:100%;min-height:44px;box-shadow:var(--shadow-raised)}.app-shell.has-routes .map-legend,.app-shell.has-routes .map-controls,.app-shell.has-routes .maplibregl-ctrl-bottom-right .maplibregl-ctrl-group{display:none}}@media (max-width:560px){.app-shell.has-routes .route-card{flex-basis:86vw}.app-shell.has-routes .results-header{width:calc(100vw - 20px)}.app-shell.has-routes .results-reset-action,.app-shell.has-routes .results-header span{font-size:var(--text-xs)}}@media (max-width:920px){.map-controls{left:10px;bottom:calc(28px + env(safe-area-inset-bottom));gap:10px;max-width:calc(100vw - 20px)}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right{bottom:env(safe-area-inset-bottom)}.maplibregl-ctrl-top-right,.maplibregl-ctrl-bottom-right{right:env(safe-area-inset-right)}.feedback-trigger,.language-toggle{min-height:42px;color:var(--ink)}.feedback-trigger svg,.language-toggle svg{stroke-width:2.8px;width:20px;height:20px}.language-toggle{width:42px;min-width:42px}.address-field input,.destination-search-panel input,.app-shell.has-routes .route-search-again input,.feedback-dialog textarea,.feedback-dialog input{font-size:16px}.address-clear-button{width:44px;height:44px;min-height:44px}.locate-action,.swap-action,.destination-search-panel .locate-action,.destination-search-panel .swap-action{min-height:44px}.swap-action,.destination-search-panel .swap-action{width:44px;min-width:44px}.address-result{min-height:48px}.results-reset-action,.feedback-close{min-width:44px;min-height:44px}.feedback-actions .primary-action,.feedback-actions .secondary-action{min-height:44px}.feedback-overlay{padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));overscroll-behavior:contain;align-items:start;overflow-y:auto}.feedback-dialog{margin-top:8px}}
