:root{color-scheme:light;--bg:#f3f6f4;--surface:#fff;--surface2:#e8f3ee;--text:#15211c;--muted:#66756d;--line:#dce5e0;--brand:#006c4c;--brand2:#00a676;--danger:#b3261e;--shadow:0 10px 30px rgba(21,53,40,.09);--safe-bottom:env(safe-area-inset-bottom,0px)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

html[data-theme=dark]{color-scheme:dark;--bg:#101512;--surface:#19201c;--surface2:#20362d;--text:#eef8f2;--muted:#a9b8b0;--line:#303a35;--brand:#55dba6;--brand2:#30c995;--shadow:0 12px 34px rgba(0,0,0,.28)}
*{box-sizing:border-box;scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{display:none;width:0;height:0}html,body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{color:inherit}.hidden{display:none!important}.ui-icon{display:block;width:24px;height:24px;fill:currentColor;flex:none}.icon-label-button{display:flex;align-items:center;justify-content:center;gap:9px}
.legal-consent-screen{position:fixed;z-index:1000;inset:0;width:min(768px,100%);margin:auto;background:#f4f8ff;color:var(--text);display:grid;grid-template-rows:auto auto 1fr auto;box-shadow:0 0 38px rgba(15,35,70,.2)}.legal-brand-header{min-height:92px;padding:calc(12px + env(safe-area-inset-top,0px)) 18px 12px;background:#102f62;color:#fff;display:flex;align-items:center;gap:13px}.legal-brand-header img{width:54px;height:54px;border-radius:14px}.legal-brand-header b,.legal-brand-header small{display:block}.legal-brand-header b{font-size:25px}.legal-brand-header small{margin-top:3px;opacity:.82}.legal-consent-title{padding:14px 18px;text-align:center}.legal-consent-title h1{margin:0;font-size:24px}.legal-consent-content{overflow:auto;padding:0 18px 18px}.legal-status-card,.legal-document{border-radius:18px;padding:15px;background:var(--surface);border:1px solid var(--line);margin-bottom:16px}.legal-status-card{background:#fff0f0;border-color:#f2c9c9}.legal-status-card h2,.legal-document h2{margin:0 0 9px;font-size:20px}.legal-status-card p,.legal-document p{margin:7px 0;line-height:1.48}.legal-document h3{margin:16px 0 5px;font-size:16px}.legal-summary,.legal-version{color:var(--muted)}.legal-version{text-align:center;font-size:13px}.legal-consent-footer{padding:10px 18px calc(10px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(15,35,70,.1)}.legal-consent-footer label{display:flex;align-items:flex-start;gap:12px;line-height:1.35;font-size:14px}.legal-consent-footer input{width:26px;height:26px;flex:none;margin:0}.legal-consent-footer button{width:100%;height:50px;margin-top:10px;border:0;border-radius:18px;background:#0077ff;color:#fff;font-weight:800}.legal-consent-footer button:disabled{background:#e5eaf3;color:#64748b}.legal-consent-screen[data-theme=dark],html[data-theme=dark] .legal-consent-screen{background:#151d28;box-shadow:0 0 42px rgba(0,0,0,.5)}html[data-theme=dark] .legal-status-card{background:#3b2226;border-color:#664047}
.legal-official-sources{margin:0 0 16px}.legal-official-sources>h2{margin:0 0 9px;font-size:19px}.legal-sources-card{overflow:hidden;border:1px solid #266eb8;border-radius:15px;background:#0b1119}.legal-sources-card>a{min-height:58px;padding:9px 12px;color:#e2e8f0;text-decoration:none;display:grid;grid-template-columns:30px 1fr 20px;gap:9px;align-items:center;border-bottom:1px solid rgba(255,255,255,.08)}.legal-sources-card>a:last-child{border-bottom:0}.legal-sources-card i{width:28px;height:28px;border-radius:50%;background:rgba(45,143,255,.12);color:#43a2ff;display:grid;place-items:center;font-size:19px;font-style:normal}.legal-sources-card span,.legal-sources-card b,.legal-sources-card small{min-width:0;display:block}.legal-sources-card b{font-size:14px;line-height:1.25}.legal-sources-card small{margin-top:2px;color:#43a2ff;font-size:12px}.legal-sources-card em{color:#43a2ff;font-size:26px;font-style:normal;text-align:right}.legal-consent-footer{display:grid;gap:7px}.legal-consent-footer label{min-height:48px;align-items:center;cursor:pointer}.legal-consent-footer input{appearance:none;-webkit-appearance:none;position:relative;width:48px;height:28px;min-width:48px;margin:0;border:1px solid #7e8792;border-radius:999px;background:#3a414a;transition:.18s}.legal-consent-footer input::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.35);transition:.18s}.legal-consent-footer input:checked{border-color:#2d8fff;background:#2d8fff}.legal-consent-footer input:checked::after{transform:translateX(20px)}.legal-consent-footer input:focus-visible{outline:3px solid rgba(45,143,255,.3);outline-offset:2px}.legal-consent-footer label span{flex:1}.legal-consent-footer button{margin-top:3px}
.legal-consent-screen.review .legal-consent-footer label{display:none}.legal-consent-screen.review .legal-consent-footer button{margin-top:0}.initial-city-screen{position:fixed;z-index:990;inset:0;width:min(768px,100%);margin:auto;background:linear-gradient(#f4f8ff,var(--bg));display:grid;place-items:center;padding:16px}.initial-city-card{width:100%;padding:20px;background:var(--surface);border-radius:28px;box-shadow:0 2px 8px rgba(15,47,98,.10)}.initial-city-card h1{text-align:left;margin:0;font-size:24px;line-height:30px}.initial-city-card>p{text-align:left;color:var(--muted);line-height:1.45;margin:14px 0}.initial-cities-list{display:grid;gap:14px}.initial-cities-list button{min-height:52px;border:0;border-radius:16px;background:color-mix(in srgb,var(--surface2) 45%,var(--surface));color:var(--text);font-weight:600;text-align:left;padding:14px;display:flex;align-items:center;gap:12px}.initial-cities-list button svg{width:24px;height:24px;flex:none;fill:var(--muted)}.initial-cities-list button span{min-width:0}html[data-theme=dark] .initial-city-screen{background:linear-gradient(#18202c,var(--bg))}
#app{width:min(768px,100%);min-height:100vh;margin:auto;background:var(--bg);position:relative}.topbar{position:sticky;top:0;z-index:30;height:calc(72px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 16px 0;display:flex;align-items:center;gap:12px;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;flex:1;min-width:0}.brand-mark{width:40px;height:40px;border-radius:13px;background:linear-gradient(145deg,var(--brand2),var(--brand));color:#fff;display:grid;place-items:center;font-weight:900;font-size:21px;box-shadow:0 5px 14px rgba(0,108,76,.25)}.brand-mark.big{width:56px;height:56px;border-radius:18px;font-size:28px;flex:none}.brand h1{font-size:20px;margin:0;line-height:1.1}.brand p{font-size:12px;color:var(--muted);margin:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-button{border:0;background:var(--surface2);width:42px;height:42px;border-radius:14px;font-size:25px;display:grid;place-items:center;cursor:pointer}
main{padding-bottom:calc(88px + var(--safe-bottom))}.screen{padding:18px 16px 28px}.center-screen{min-height:65vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center}.center-screen h2{margin:18px 0 7px}.center-screen p{margin:0 0 20px;color:var(--muted)}.loader{width:48px;height:48px;border:5px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.state-icon{width:58px;height:58px;border-radius:50%;background:#fce8e6;color:var(--danger);display:grid;place-items:center;font-weight:900;font-size:30px}
.welcome-card{padding:19px;background:linear-gradient(125deg,#006c4c,#00a676);color:#fff;border-radius:24px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:10px;font-weight:800;opacity:.72}.welcome-card h2,.section-heading h2{margin:4px 0 0;font-size:24px}.soft-button{border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.16);color:#fff;border-radius:13px;padding:10px 13px;font-weight:700}.search-box{height:52px;background:var(--surface);border:1px solid var(--line);border-radius:17px;margin:16px 0 12px;display:flex;align-items:center;padding:0 15px;gap:10px}.search-box span{font-size:26px;color:var(--muted)}.search-box input{border:0;outline:0;background:transparent;color:var(--text);width:100%;font-size:16px}.chips,.direction-tabs,.date-strip{display:flex;gap:8px;overflow:auto;scrollbar-width:none;padding:2px 0 6px}.chips::-webkit-scrollbar,.direction-tabs::-webkit-scrollbar,.date-strip::-webkit-scrollbar{display:none}.chip,.direction-tab,.date-chip{white-space:nowrap;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:9px 14px;font-weight:700;font-size:13px}.chip.active,.direction-tab.active,.date-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:17px 2px 10px}.section-heading.large{margin:6px 2px 18px}.section-heading span:last-child{color:var(--muted);font-size:13px}.route-list{display:grid;gap:10px}.route-card{background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:14px;display:grid;grid-template-columns:54px 1fr 42px;gap:12px;align-items:center;box-shadow:0 3px 12px rgba(21,53,40,.035);cursor:pointer}.route-badge{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-weight:900;font-size:19px;color:#fff;background:var(--route-color,#087f5b)}.route-info{min-width:0}.route-info b{display:block;font-size:16px}.route-info p{color:var(--muted);font-size:13px;margin:5px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.favorite-button{border:0;background:transparent;font-size:22px;color:#aab5af;height:42px}.favorite-button.active{color:#f5a800}.empty{padding:40px 18px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:20px}
.bottom-nav{position:fixed;z-index:40;bottom:0;left:50%;transform:translateX(-50%);width:min(768px,100%);height:calc(68px + var(--safe-bottom));padding:6px 10px var(--safe-bottom);background:color-mix(in srgb,var(--surface) 95%,transparent);backdrop-filter:blur(20px);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr)}.bottom-nav button{border:0;background:transparent;color:var(--muted);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:20px}.bottom-nav small{font-size:10px;font-weight:700}.bottom-nav button.active{color:var(--brand);background:var(--surface2)}
.route-hero{border-radius:23px;padding:20px;color:#fff;background:linear-gradient(125deg,var(--hero,#087f5b),color-mix(in srgb,var(--hero,#087f5b) 60%,#10251c));margin-bottom:14px}.route-hero-top{display:flex;justify-content:space-between;align-items:start}.route-hero .number{font-size:35px;font-weight:900}.route-hero h2{font-size:18px;margin:12px 0 5px}.route-hero p{margin:0;opacity:.82;font-size:13px}.route-hero button{color:#fff}.direction-tabs{margin-bottom:10px}.date-chip{border-radius:15px;min-width:66px;text-align:center;padding:8px 11px}.date-chip small{display:block;font-size:10px;opacity:.7;margin-top:3px}.trip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:9px}.trip-button{border:1px solid var(--line);background:var(--surface);border-radius:15px;padding:13px 7px;font-size:17px;font-weight:800;box-shadow:0 2px 7px rgba(20,50,38,.04)}.trip-button.past{opacity:.48}.trip-button.next{border:2px solid var(--brand);color:var(--brand);background:var(--surface2)}.notice{padding:12px 14px;border-radius:14px;background:#fff2cc;color:#725400;font-size:13px;margin:8px 0 12px}.trip-summary{background:var(--surface2);border-radius:20px;padding:18px;margin-bottom:14px}.trip-summary h2{margin:5px 0}.trip-summary p{margin:3px 0;color:var(--muted)}.timeline{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:10px 16px;margin-bottom:14px}.stop-row{display:grid;grid-template-columns:24px 1fr auto;gap:10px;min-height:58px;align-items:center;position:relative}.stop-dot{width:12px;height:12px;background:var(--brand);border:3px solid var(--surface);box-shadow:0 0 0 2px var(--brand);border-radius:50%;z-index:2}.stop-row:not(:last-child):before{content:"";position:absolute;left:5px;top:35px;bottom:-22px;width:2px;background:var(--brand)}.stop-row small{display:block;color:var(--muted);margin-top:3px}.stop-time{font-weight:900;color:var(--brand)}
.field{display:block;margin:12px 0}.field span{display:block;font-size:12px;font-weight:800;color:var(--muted);margin:0 0 6px 4px}.field select{width:100%;height:50px;border:1px solid var(--line);border-radius:15px;background:var(--surface);color:var(--text);padding:0 13px}.map{height:55vh;min-height:360px;border-radius:22px;overflow:hidden;background:#dce8e1;position:relative;border:1px solid var(--line)}.map canvas{width:100%;height:100%;display:block;touch-action:none}.map-status{position:absolute;inset:0;display:grid;place-items:center;color:#4b6257;font-weight:700;padding:20px;text-align:center}.map-note{color:var(--muted);font-size:12px}.map-attribution{position:absolute;right:4px;bottom:3px;background:rgba(255,255,255,.8);color:#234;font-size:9px;padding:2px 4px;border-radius:3px}.map-zoom{position:absolute;left:10px;top:10px;display:grid;gap:5px}.map-zoom button{width:38px;height:38px;border:0;border-radius:10px;background:rgba(255,255,255,.92);color:#173126;font-size:22px;box-shadow:var(--shadow)}
.settings-card,.about-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden}.setting-row{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:16px;display:flex;align-items:center;justify-content:space-between;text-align:left}.setting-row:last-child{border:0}.setting-row b,.setting-row small{display:block}.setting-row small{color:var(--muted);margin-top:4px}.setting-row i{font-style:normal;font-size:22px;color:var(--muted)}.about-card{margin-top:14px;padding:18px;display:flex;gap:14px;align-items:center}.about-card p{color:var(--muted);margin:5px 0 0;font-size:13px}
.primary-button,.secondary-button{border:0;border-radius:15px;padding:13px 18px;font-weight:800}.primary-button{background:var(--brand);color:#fff}.secondary-button{background:var(--surface2);color:var(--brand);width:100%}dialog{width:min(520px,calc(100% - 28px));border:0;border-radius:24px;background:var(--surface);color:var(--text);padding:0;box-shadow:0 30px 90px rgba(0,0,0,.3)}dialog::backdrop{background:rgba(0,0,0,.52);backdrop-filter:blur(3px)}dialog form{padding:18px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:4px 0 10px}.city-list{display:grid;gap:8px;max-height:55vh;overflow:auto}.city-item{border:1px solid var(--line);background:var(--surface);border-radius:15px;padding:14px;text-align:left;font-weight:800}.city-item.active{border-color:var(--brand);background:var(--surface2);color:var(--brand)}.toast{position:fixed;z-index:100;left:50%;bottom:calc(82px + var(--safe-bottom));transform:translate(-50%,20px);max-width:calc(100% - 32px);padding:11px 16px;border-radius:13px;background:#17251f;color:#fff;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.25s;text-align:center;font-size:13px}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:680px){.route-list{grid-template-columns:1fr 1fr}.screen{padding-left:22px;padding-right:22px}.trip-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important}}
.date-chip.has-schedule:not(.active){box-shadow:inset 0 -3px var(--brand)}
.trip-button small{display:block;font-size:8px;color:var(--muted);margin-top:3px;text-transform:uppercase}
.planning-card,.gps-controls{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:14px;margin-bottom:16px}.planning-row{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}.planning-row .field{margin:7px 0}.planning-row input{width:100%;height:48px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);padding:0 9px}.swap-button{position:absolute;right:24px;top:89px;width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:var(--surface2);color:var(--brand);font-size:21px;font-weight:900;z-index:2}.wide{width:100%;margin-top:8px}.planning-results{display:grid;gap:10px}.planning-result{display:grid;grid-template-columns:54px 1fr 20px;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px;box-shadow:0 3px 12px rgba(21,53,40,.04)}.planning-result-main{min-width:0}.planning-result-main>b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planning-result-main p{margin:5px 0 0;color:var(--muted);font-size:12px}.planning-times{display:flex;align-items:center;gap:12px;margin-top:8px}.planning-times span{display:grid}.planning-times small{font-size:9px;color:var(--muted);text-transform:uppercase}.planning-times strong{font-size:18px}.planning-times span:first-child strong{color:#07853c}.planning-times span:last-of-type strong{color:#d3322b}.planning-times i{font-style:normal;color:var(--muted)}.chevron{font-size:25px;color:var(--muted)}.gps-time-row{grid-template-columns:1.4fr 1fr auto;align-items:end}.soft-action{height:48px;margin-bottom:7px;border:1px solid var(--line);border-radius:14px;background:var(--surface2);color:var(--brand);font-weight:800;padding:0 13px}.gps-legend{display:flex;gap:7px;overflow:auto;padding:10px 2px 2px}.gps-legend span{white-space:nowrap;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 11px;font-size:11px}.gps-legend b{color:var(--brand)}
@media(max-width:430px){.planning-row{grid-template-columns:1fr 1fr}.planning-row .field:first-child{grid-column:1/-1}.gps-time-row{grid-template-columns:1fr 1fr}.gps-time-row .field:first-child{grid-column:auto}.gps-time-row .soft-action{grid-column:1/-1}.bottom-nav small{font-size:9px}}

/* Android route screen */
:root{--android-blue:#102f62;--android-section:#1d4785;--android-pale:#f1f4fa}
.topbar{height:calc(76px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 13px 0;background:var(--android-blue);border:0;color:#fff;gap:8px}
.android-header-action{width:42px;height:48px;border:0;background:transparent;color:#fff;font-size:32px;line-height:1;display:grid;place-items:center;padding:0}
.android-header-action svg{width:27px;height:27px;fill:currentColor}
.header-heart{color:#f04444}.header-heart.active{color:#f04444}
.brand{gap:10px}.brand-logo{width:42px;height:42px;border-radius:11px;object-fit:cover}.brand h1{font-size:25px;color:#fff;font-weight:800}.brand p{display:none}
#detailScreen{padding:0 0 26px;background:var(--android-pale)}
#detailScreen .date-strip{padding:0;gap:0;background:var(--android-blue);overflow:hidden}
#detailScreen .date-chip{flex:1;min-width:0;height:66px;border:0;border-radius:0;background:#25a945;color:#fff;text-transform:uppercase;font-size:17px;padding:8px 2px 6px}
#detailScreen .date-chip.weekend{background:#ff2027}
#detailScreen .date-chip.active{box-shadow:inset 0 0 0 3px var(--android-blue)}
#detailScreen .date-chip small{font-size:16px;font-weight:900;opacity:1}
#detailScreen .date-chip.has-schedule:not(.active){box-shadow:none}
.android-route-title{height:66px;padding:0 17px;display:flex;align-items:center;justify-content:space-between;background:var(--android-pale)}
.android-route-title h2{margin:0;color:var(--android-blue);font-size:21px}
.android-route-title button{width:45px;height:45px;border:0;border-radius:50%;background:#405676;color:#fff;font-size:23px}
.android-route-map-wrap{height:242px;position:relative;overflow:hidden;background:#dce8e1}
.android-route-map{position:absolute;inset:0}.android-route-map canvas{width:100%;height:100%;display:block;touch-action:none}
.android-route-map .map-zoom{display:none}.map-direction-badge{position:absolute;top:10px;left:50%;transform:translateX(-50%);max-width:75%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(10,28,52,.92);color:#fff;border-radius:18px;padding:7px 12px;font-size:14px;font-weight:900}
.map-direction-arrow{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;border-radius:50%;background:rgba(14,38,72,.72);color:#fff;display:grid;place-items:center}.map-direction-arrow .ui-icon{width:34px;height:34px}.map-direction-arrow.left{left:14px}.map-direction-arrow.right{right:14px}
#detailScreen .notice{margin:8px 12px}
.android-direction-section{background:var(--android-pale)}
.android-direction-header{min-height:54px;padding:10px 13px;background:var(--android-section);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px}
.android-direction-header b{font-size:18px;line-height:1.2}.android-direction-header span{font-size:17px;line-height:.7;text-align:center}
.android-trip-grid{padding:7px 7px 10px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;background:var(--android-pale)}
.android-trip{position:relative;min-width:0;height:44px;border:1px solid #aeb8c6;border-radius:14px;background:#b6c0cd;color:#fff;font-weight:800;font-size:17px;padding:0 2px}
.android-trip.primary{background:#0f3268;border-color:#395680}.android-trip.secondary{background:#000;border-color:#5b5b5b}.android-trip.past{background:#b6c0cd}.android-trip.past-secondary{background:#505c6c}.android-trip.next{background:#24ae4b;border-color:#21a346}
.android-trip i{position:absolute;right:-2px;top:-7px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#21c968;color:#fff;font-style:normal;font-size:15px}
.android-no-trips{grid-column:1/-1;padding:24px;text-align:center;color:#7e8794}
.android-expanded{background:#fff}
.expanded-head{background:var(--android-section);color:#fff;padding:10px 14px}
.expanded-head>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:16px}.expanded-head>div:last-child{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;margin-top:7px}
.expanded-head button{width:44px;height:44px;border:1px solid rgba(255,255,255,.24);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center}.expanded-head button .ui-icon{width:30px;height:30px}
.expanded-head b{text-align:center;font-size:21px}
.android-stop-row{width:100%;min-height:49px;padding:8px 15px;border:0;border-bottom:1px solid #dce2ec;background:#fff;color:#101827;display:grid;grid-template-columns:58px 1fr 25px;gap:7px;align-items:center;text-align:left}.stop-tune{width:25px;height:32px;padding:0;border:0;background:transparent;color:#596677;display:grid;place-items:center}.stop-tune .ui-icon{width:22px;height:22px}
.android-stop-row time{font-size:17px;font-weight:800}.android-stop-row b{font-size:16px;overflow:hidden;text-overflow:ellipsis}.android-stop-row span{font-size:21px;color:#596677}
.android-stop-row.active{color:#101827}
.stop-arrivals{padding:6px 12px 12px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;background:var(--android-pale)}
.stop-arrivals button{height:43px;padding:0;border:0;border-radius:13px;background:#0f3268;color:#fff;display:grid;place-items:center;font:inherit;font-size:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}.stop-arrivals button.next{background:#24ae4b}.stop-arrivals button.late{background:#000}.stop-arrivals button:active{transform:scale(.97)}
.bottom-nav{height:calc(82px + var(--safe-bottom));padding:7px 8px var(--safe-bottom);background:#fff;touch-action:pan-y}.bottom-nav button{font-size:28px;color:#61738b}.bottom-nav button.active{color:#161725;background:#eadfff}.bottom-nav span{width:30px;height:30px;display:grid;place-items:center}.bottom-nav svg{width:24px;height:24px;fill:currentColor}.bottom-nav small{font-size:11px;color:inherit}
main{padding-bottom:calc(96px + var(--safe-bottom))}
@media(max-width:390px){.brand h1{font-size:22px}.android-header-action{width:36px}.android-trip-grid,.stop-arrivals{gap:5px;padding-left:5px;padding-right:5px}.android-trip{font-size:15px}.android-direction-header b{font-size:16px}}
.drawer-layer{position:fixed;z-index:79;top:0;bottom:0;left:50%;width:min(768px,100%);transform:translateX(-50%);pointer-events:none;overflow:hidden}.drawer-layer.open{pointer-events:auto}
.drawer-scrim{position:absolute;inset:0;background:rgba(0,0,0,.55);opacity:0;transition:opacity .22s ease}.drawer-layer.open .drawer-scrim{opacity:1}
.side-drawer{position:absolute;z-index:1;top:0;bottom:0;left:0;width:min(86%,300px);background:#fff;color:#111827;box-shadow:12px 0 35px rgba(0,0,0,.3);transform:translateX(-105%);transition:transform .22s ease;overflow-y:auto}
.drawer-layer.open .side-drawer{transform:translateX(0)}.drawer-head{min-height:90px;padding:calc(18px + env(safe-area-inset-top,0px)) 16px 18px;background:var(--android-blue);color:#fff;display:flex;align-items:center;gap:12px}.drawer-head img{width:54px;height:54px;border-radius:14px;object-fit:cover}.drawer-head>div{min-width:0;flex:1}.drawer-head b,.drawer-head small{display:block}.drawer-head b{font-size:22px}.drawer-head small{margin-top:2px;opacity:.84;font-size:14px}.drawer-head button{width:38px;height:38px;min-width:38px;padding:7px;border:0;border-radius:50%;background:transparent;color:#fff;display:grid;place-items:center}.drawer-head button .ui-icon{width:24px;height:24px;overflow:visible}
.side-drawer>h3{margin:0;padding:15px 22px;border-bottom:1px solid #e5e7eb;font-size:16px}.side-drawer>button,.side-drawer>a{width:100%;min-height:54px;padding:15px 22px;border:0;border-bottom:1px solid #e5e7eb;background:#fff;color:#17263f;text-decoration:none;display:grid;grid-template-columns:24px 1fr;gap:22px;align-items:center;text-align:left}.side-drawer>button:active,.side-drawer>button.active{background:#f1eaff}.side-drawer>button>span,.side-drawer>a>span{width:24px;height:24px;color:#9aa6b2;display:grid;place-items:center}.side-drawer>button>span .ui-icon,.side-drawer>a>span .ui-icon{width:24px;height:24px}.side-drawer b,.side-drawer small{display:block}.side-drawer b{font-size:16px;font-weight:400}.side-drawer small{margin-top:3px;color:#64748b}.drawer-divider{height:1px;background:#e5eaf3;margin:0}.drawer-version{position:sticky;bottom:0;padding:14px 18px;border-top:1px solid #e5eaf3;background:#fff}.drawer-version b{font-size:12px;font-weight:500}.drawer-version small{font-size:12px}
.android-planning-map{position:absolute;inset:66px 0 0;height:auto;margin:0;border-radius:0;background:#dce8e1;overflow:hidden}.android-planning-map canvas{width:100%;height:100%;display:block;touch-action:none}
#planningScreen{position:relative;height:calc(100vh - 76px - 82px - env(safe-area-inset-top,0px) - var(--safe-bottom));min-height:520px;padding:0;overflow:hidden}
#planningScreen .section-heading.large{display:none}#planningScreen .planning-card{display:none;position:absolute;z-index:8;top:152px;left:14px;right:14px;margin:0;border-radius:20px;box-shadow:0 6px 24px rgba(15,47,98,.24);max-height:48%;overflow:auto}#planningScreen .planning-card.active{display:block}
#planningResults{position:absolute;z-index:7;left:10px;right:10px;bottom:10px;max-height:42%;overflow:auto}.android-map-days{position:absolute;z-index:6;left:0;right:0;top:0;height:66px;padding:0;gap:0;background:var(--android-blue)}.android-map-days .date-chip{flex:1;min-width:0;border:0;border-radius:0;background:#25a945;color:#fff;text-transform:uppercase;font-size:17px;padding:8px 2px}.android-map-days .date-chip.weekend{background:#ff2027}.android-map-days .date-chip.active{box-shadow:inset 0 0 0 3px var(--android-blue)}.android-map-days .date-chip small{font-size:16px;opacity:1}
.map-search-shell{position:absolute;z-index:9;top:82px;left:22px;right:22px;height:58px;border-radius:28px;background:rgba(255,255,255,.94);display:grid;grid-template-columns:42px 1fr 42px;align-items:center;padding:0 10px;box-shadow:0 3px 15px rgba(15,47,98,.16)}.map-search-shell>span{font-size:29px;color:#0f2547}.map-search-shell>input{height:100%;min-width:0;border:0;outline:0;background:transparent;font-size:21px;color:#14213a}.map-search-shell>button{border:0;background:transparent;font-size:31px;color:#8290a5}.map-search-suggestions{position:absolute;top:64px;left:0;right:0;max-height:270px;overflow:auto;border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.2)}.map-search-suggestions button{width:100%;padding:13px 16px;border:0;border-bottom:1px solid #e5eaf3;background:#fff;text-align:left}.map-search-suggestions button b,.map-search-suggestions button small{display:block}.map-search-suggestions button small{color:#64748b;margin-top:3px}
.android-planning-map .map-zoom{left:auto;right:22px;top:auto;bottom:28px;background:rgba(255,255,255,.92);border-radius:28px;overflow:hidden;gap:0}.android-planning-map .map-zoom button{border-radius:0;box-shadow:none;border-bottom:1px solid #e5eaf3;width:54px;height:54px}.map-locate{display:none;position:absolute;right:22px;bottom:148px;width:54px;height:54px;border:0;border-radius:18px;background:rgba(255,255,255,.94);color:#0d2d62;font-size:26px;box-shadow:var(--shadow)}.android-planning-map .map-locate,#map .map-locate{display:block}
#gpsScreen{position:relative;height:calc(100vh - 76px - 82px - env(safe-area-inset-top,0px) - var(--safe-bottom));min-height:520px;padding:0;overflow:hidden}#gpsScreen>.section-heading.large,#gpsScreen>.gps-controls,#gpsScreen>.gps-legend,#gpsScreen>.map-note{display:none}#gpsScreen .map{position:absolute;inset:66px 0 0;height:auto;min-height:0;border-radius:0;margin:0;border:0}#gpsScreen .map-zoom{left:auto;right:22px;top:auto;bottom:28px;background:rgba(255,255,255,.92);border-radius:28px;overflow:hidden;gap:0}#gpsScreen .map-zoom button{border-radius:0;box-shadow:none;border-bottom:1px solid #e5eaf3;width:54px;height:54px}#gpsScreen .map-locate{display:none}
.gps-route-rail{position:absolute;z-index:8;right:22px;top:calc(50% + 33px);transform:translateY(-50%);width:50px;max-height:min(430px,calc(100% - 170px));padding:4px 0;border:1px solid rgba(105,119,137,.18);border-radius:24px;background:rgba(255,255,255,.86);overflow:hidden;box-shadow:0 4px 17px rgba(0,0,0,.12);display:flex;flex-direction:column}.gps-route-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.gps-route-scroll::-webkit-scrollbar{display:none}.gps-route-rail button{width:48px;height:48px;min-height:48px;padding:0;border:0;border-bottom:1px solid rgba(190,198,209,.65);background:transparent;color:#10233f;font-size:18px;font-weight:700;display:grid;place-items:center;flex:none}.gps-route-rail button.active{margin:3px 4px;width:40px;height:42px;min-height:42px;border:0;border-radius:16px;background:color-mix(in srgb,var(--gps-route-color,#2e6dff) 12%,transparent);color:var(--gps-route-color,#2e6dff);font-weight:900}.gps-route-rail button.gps-geo{height:56px;min-height:56px}.gps-route-rail button.gps-geo .ui-icon{width:22px;height:22px;color:#7b8088}.gps-route-rail button.gps-geo.active .ui-icon{color:#2e86de}.gps-route-rail button.more{height:54px;min-height:54px;border:0;font-size:22px;letter-spacing:2px;color:#7c8798}
.gps-intro-dialog{max-width:575px;border-radius:30px;background:#f2edf8;color:#13213b}.gps-intro-dialog form{padding:32px 38px}.gps-intro-dialog h2{font-size:35px;margin:0 0 24px}.gps-intro-dialog p{font-size:20px;line-height:1.42;color:#71819a;margin:0 0 20px}.gps-intro-dialog label{display:flex;align-items:center;gap:18px;font-size:19px;color:#71819a}.gps-intro-dialog input{width:30px;height:30px}.gps-intro-dialog button{display:block;margin:28px 0 0 auto;border:0;background:transparent;color:#173a78;font-size:18px;font-weight:800}.gps-intro-dialog button:disabled{opacity:.25}
.gps-routes-dialog{width:min(740px,calc(100% - 28px));height:calc(100% - 182px - env(safe-area-inset-top,0px) - var(--safe-bottom));max-height:none;border-radius:28px;background:rgba(255,255,255,.9);overflow:hidden}.gps-routes-dialog::backdrop{background:rgba(0,0,0,.24);backdrop-filter:none}.gps-routes-dialog form{height:100%;padding:12px 10px 6px;display:grid;grid-template-rows:auto 3px 1fr auto;overflow:hidden}.gps-transport-filters{display:flex;align-items:center;overflow-x:auto;padding:8px 2px 6px}.gps-transport-filters button{flex:1;min-width:max-content;height:44px;padding:0 16px;border:0;background:transparent;color:#5f6368;font-size:16px}.gps-transport-filters button.active{color:#ff3d8d;font-weight:800}.gps-transport-indicator{width:calc(100% / var(--gps-filter-count));height:3px;background:transparent;transform:translateX(calc(var(--gps-filter-index) * 100%));transition:transform .18s}.gps-transport-indicator::after{content:"";display:block;width:70%;height:3px;margin:auto;background:#ff3d8d}.gps-routes-list{display:block;overflow-y:auto;padding:8px 0}.gps-routes-list>button{width:100%;min-height:64px;border:0;background:transparent;color:#555;display:grid;grid-template-columns:46px 1fr 28px 54px;align-items:center;gap:8px;padding:6px 4px;text-align:left}.gps-picker-number{font-size:19px;text-align:center}.gps-picker-title{font-size:16px;line-height:1.25;overflow:hidden}.gps-picker-pin{color:#c8cbd0;display:grid;place-items:center}.gps-picker-pin .ui-icon{width:23px;height:23px}.gps-routes-list>button.active .gps-picker-pin{color:#64b5f6}.gps-picker-switch{width:50px;height:26px;border-radius:14px;background:#f1b7b9;position:relative}.gps-picker-switch i{position:absolute;width:30px;height:30px;left:-1px;top:-2px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.25);transition:.16s}.gps-routes-list>button.active .gps-picker-switch{background:#b8efd4}.gps-routes-list>button.active .gps-picker-switch i{left:21px}.gps-picker-actions{display:grid;grid-template-columns:auto auto 1fr auto auto;align-items:center;padding:10px 0 8px}.gps-picker-actions button{height:44px;padding:0 12px;border:0;background:transparent;color:#7b8088;font-size:15px;font-weight:800}.gps-picker-actions button.primary{color:#2e6dff}.gps-vehicle-card{position:absolute;z-index:9;top:82px;left:50%;transform:translateX(-50%);width:min(600px,calc(100% - 44px));min-height:58px;padding:8px 10px;border:1px solid #d8e7ff;border-radius:22px;background:rgba(248,251,255,.94);display:flex;align-items:center;gap:7px;box-shadow:0 8px 22px rgba(22,50,90,.18)}.gps-info-chip{min-width:0;padding:7px 10px;border-radius:14px;background:#edf1f7;color:#5d6675;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gps-info-chip.emphasized{max-width:190px;background:#e6eef9;color:#153a70;font-weight:800}.gps-vehicle-card>button{margin-left:auto;width:32px;height:32px;flex:none;padding:7px;border:0;border-radius:50%;background:#fde8e8;color:#d9342b}.gps-vehicle-card>button .ui-icon{width:18px;height:18px}
.android-nearby-days{margin:-18px -16px 8px;padding:0;gap:0;background:var(--android-blue);overflow:hidden}.android-nearby-days .date-chip{flex:1;min-width:0;height:66px;border:0;border-radius:0;background:#25a945;color:#fff;text-transform:uppercase;font-size:17px;padding:8px 2px}.android-nearby-days .date-chip.weekend{background:#ff2027}.android-nearby-days .date-chip.active{box-shadow:inset 0 0 0 3px var(--android-blue)}.android-nearby-days .date-chip small{font-size:16px;font-weight:900;opacity:1}.nearby-stop-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:6px 16px 15px;box-shadow:var(--shadow)}.nearby-drag-handle{width:44px;height:4px;border-radius:3px;background:var(--muted);opacity:.45;margin:2px auto 8px}.nearby-options>span,.nearby-time-row>span{display:block;color:var(--muted);font-size:12px;font-weight:800;margin:4px}.nearby-options .chips{padding:4px 0}.nearby-options button{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:15px;padding:9px 13px}.nearby-options button.active{background:var(--android-blue);border-color:var(--android-blue);color:#fff}.nearby-time-row{display:grid;grid-template-columns:1fr 132px;align-items:center;gap:10px}.nearby-time-row input{height:45px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);padding:0 10px}.nearby-results{display:grid;gap:8px;margin-top:10px}.nearby-arrival{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:10px}.nearby-arrival .route-badge{width:50px;height:50px;border-radius:15px}.nearby-arrival p{margin:4px 0 0;color:var(--muted);font-size:12px}.nearby-arrival-time{text-align:right}.nearby-arrival-time strong,.nearby-arrival-time small{display:block}.nearby-arrival-time strong{font-size:20px;color:var(--android-section)}.nearby-arrival-time small{margin-top:3px;color:var(--muted);font-size:11px}
.donate-hero{border-radius:24px;padding:24px;background:linear-gradient(135deg,#0f766e,#155e75);color:#fff;display:flex;gap:18px;align-items:flex-start}.donate-hero>.ui-icon{width:42px;height:42px}.donate-hero span{font-size:13px;font-weight:800}.donate-hero h2{margin:5px 0 8px;font-size:28px}.donate-hero p{margin:0;opacity:.84;line-height:1.4}.donate-card{margin-top:16px;padding:20px;border-radius:24px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.donate-title{display:flex;gap:14px;align-items:center}.donate-title>span{width:44px;height:44px;border-radius:14px;background:#e6f7f3;color:#0f766e;display:grid;place-items:center}.donate-title h3{margin:0;font-size:22px}.donate-title p{margin:3px 0 0;color:var(--muted)}.donate-amounts{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.donate-amounts button{border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);padding:9px 14px;font-weight:800}.donate-amounts button.active{background:#0f766e;border-color:#0f766e;color:#fff}.donate-input{height:58px;border:1px solid var(--line);border-radius:16px;display:grid;grid-template-columns:1fr 80px 24px;align-items:center;padding:0 14px}.donate-input span{color:var(--muted);font-size:13px}.donate-input input{width:100%;border:0;background:transparent;color:var(--text);font-size:20px;text-align:right;outline:0}.donate-input i{font-style:normal}.donate-button{width:100%;margin-top:14px;border:0;border-radius:16px;background:#0f766e;color:#fff;padding:15px;display:flex;justify-content:center;align-items:center;gap:10px;font-weight:900;font-size:16px}.donate-button .ui-icon{width:20px;height:20px}.donate-section-title{margin:22px 4px 10px}.donate-goal{background:var(--surface);border:1px solid var(--line);border-radius:18px;margin:8px 0;padding:16px}.donate-goal summary{font-weight:900;cursor:pointer}.donate-goal p{margin:12px 0 0;color:var(--muted);line-height:1.45}.info-hero{display:flex;align-items:center;gap:16px;padding:22px;margin-bottom:14px;border-radius:22px;background:var(--android-blue);color:#fff}.info-hero img{width:68px;height:68px;border-radius:18px}.info-hero h2{font-size:28px;margin:0}.info-hero p{margin:5px 0 0;opacity:.8}.info-version{text-align:center;color:var(--muted);margin:22px}.info-version small{font-size:12px}
@media(max-width:520px){.gps-intro-dialog form{padding:25px}.gps-intro-dialog h2{font-size:28px}.gps-intro-dialog p{font-size:17px}.gps-route-rail{right:12px}}
#routesScreen{padding:8px 10px 22px;background:#f3f5fa}#routesScreen .welcome-card,#routesScreen .search-box,#routesScreen .chips,#routesScreen .section-heading{display:none}
#routesList{display:grid;grid-template-columns:1fr;gap:8px}.android-route-card{height:154px;border:1px solid #d8dee8;border-radius:22px;background:#fff;overflow:hidden;display:grid;grid-template-columns:152px 1fr 78px;align-items:stretch;cursor:pointer}
.android-route-transport{background:var(--route-color);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:9px 6px}.android-route-transport b{font-size:17px}.android-route-transport strong{font-size:44px;line-height:1.1;margin:4px 0}.android-route-transport small{font-size:16px;font-weight:900}
.android-route-terminals{padding:18px 10px 18px 20px;display:flex;flex-direction:column;justify-content:center;gap:14px;min-width:0}.android-route-terminals>div{display:grid;grid-template-columns:31px 1fr;gap:10px;align-items:center}.android-route-terminals b{font-size:22px;line-height:1.13;overflow:hidden}.terminal-marker{width:25px;height:25px;border:5px solid;border-radius:50%;box-shadow:inset 0 0 0 3px #fff}.terminal-marker.from{color:#12b76a;background:#12b76a}.terminal-marker.to{color:#e53935;background:#e53935}
.android-route-heart{border:0;background:transparent;color:#64748b;display:grid;place-items:center}.android-route-heart svg{width:51px;height:51px;fill:none;stroke:currentColor;stroke-width:1.8}.android-route-heart.active{color:#e53935}.android-route-heart.active svg{fill:currentColor}
@media(max-width:520px){.android-route-card{height:96px;grid-template-columns:94px 1fr 52px;border-radius:17px}.android-route-transport b{font-size:12px}.android-route-transport strong{font-size:30px}.android-route-transport small{font-size:12px}.android-route-terminals{padding:10px 5px 10px 12px;gap:7px}.android-route-terminals>div{grid-template-columns:22px 1fr;gap:7px}.android-route-terminals b{font-size:16px}.terminal-marker{width:18px;height:18px;border-width:4px}.android-route-heart svg{width:37px;height:37px}}

/* Android dark theme */
html[data-theme=dark]{--bg:#101319;--surface:#1d2129;--surface2:#292e39;--text:#f5f7fb;--muted:#aeb7c5;--line:#353b47;--android-pale:#151922;--android-section:#173d74}
html[data-theme=dark] #app,
html[data-theme=dark] #routesScreen,
html[data-theme=dark] #detailScreen,
html[data-theme=dark] .android-direction-section,
html[data-theme=dark] .android-trip-grid,
html[data-theme=dark] .stop-arrivals{background:var(--bg)}
html[data-theme=dark] .android-route-title{background:var(--bg)}
html[data-theme=dark] .android-route-title h2{color:#dbe8ff}
html[data-theme=dark] .android-route-card{background:var(--surface);border-color:var(--line);color:var(--text)}
html[data-theme=dark] .android-route-heart{color:#aab6c8}
html[data-theme=dark] .terminal-marker{box-shadow:inset 0 0 0 3px var(--surface)}
html[data-theme=dark] .android-expanded{background:var(--surface)}
html[data-theme=dark] .android-stop-row{background:var(--surface);color:var(--text);border-bottom-color:var(--line)}
html[data-theme=dark] .android-stop-row.active{color:var(--text)}
html[data-theme=dark] .android-stop-row span{color:var(--muted)}
html[data-theme=dark] .bottom-nav{background:#191d25;border-top-color:var(--line)}
html[data-theme=dark] .bottom-nav button{color:#aeb8c8}
html[data-theme=dark] .bottom-nav button.active{color:#fff;background:#393247}
html[data-theme=dark] .side-drawer{background:#191d25;color:var(--text)}
html[data-theme=dark] .side-drawer>h3,
html[data-theme=dark] .drawer-version{border-color:var(--line);background:#191d25}
html[data-theme=dark] .side-drawer>button,
html[data-theme=dark] .side-drawer>a{background:#191d25;color:var(--text);border-bottom-color:var(--line)}
html[data-theme=dark] .side-drawer>button:active,
html[data-theme=dark] .side-drawer>button.active{background:#353044}
html[data-theme=dark] .side-drawer>button>span,
html[data-theme=dark] .side-drawer>a>span,
html[data-theme=dark] .side-drawer small{color:#aeb8c8}
html[data-theme=dark] .map-search-shell,
html[data-theme=dark] .map-search-suggestions,
html[data-theme=dark] .map-search-suggestions button{background:rgba(29,33,41,.96);color:var(--text);border-color:var(--line)}
html[data-theme=dark] .map-search-shell>span,
html[data-theme=dark] .map-search-shell>input{color:var(--text)}
html[data-theme=dark] .android-planning-map .map-zoom,
html[data-theme=dark] #gpsScreen .map-zoom,
html[data-theme=dark] .map-locate,
html[data-theme=dark] .gps-route-rail{background:rgba(29,33,41,.94);color:var(--text)}
html[data-theme=dark] .android-planning-map .map-zoom button,
html[data-theme=dark] #gpsScreen .map-zoom button,
html[data-theme=dark] .gps-route-rail button{background:transparent;color:var(--text);border-color:var(--line)}
html[data-theme=dark] .gps-route-rail button.active{background:#283b5e;color:#fff}
html[data-theme=dark] .gps-routes-dialog{background:rgba(29,33,41,.94);color:var(--text)}
html[data-theme=dark] .gps-transport-filters button,
html[data-theme=dark] .gps-routes-list>button,
html[data-theme=dark] .gps-picker-actions button{color:#cbd5e1}
html[data-theme=dark] .gps-transport-filters button.active,
html[data-theme=dark] .gps-picker-actions button.primary{color:#93c5fd}
html[data-theme=dark] .gps-vehicle-card{background:rgba(23,32,51,.94);border-color:rgba(255,255,255,.08)}
html[data-theme=dark] .gps-info-chip{background:#2b3443;color:#c8d2e2}
html[data-theme=dark] .gps-info-chip.emphasized{background:#263b5c;color:#9dc5ff}
html[data-theme=dark] .gps-intro-dialog{background:#25222b;color:var(--text)}
html[data-theme=dark] .gps-intro-dialog p,
html[data-theme=dark] .gps-intro-dialog label{color:var(--muted)}
html[data-theme=dark] .notice{background:#453b1d;color:#ffe69a}
.map-locate .ui-icon{width:27px;height:27px}
/* Compact legal consent checkboxes mirror the Android "Тревога" consent rows. */
.legal-consent-footer{gap:6px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}
.legal-consent-footer label{min-height:48px;align-items:center;gap:8px;padding:2px 0;font-size:13px;line-height:17px}
.legal-consent-footer input{appearance:none;-webkit-appearance:none;position:relative;width:28px;height:28px;min-width:28px;margin:0;border:2px solid #7e8792;border-radius:3px;background:transparent}
.legal-consent-footer input::after{content:none}
.legal-consent-footer input:checked{border-color:#2d8fff;background:#2d8fff}
.legal-consent-footer input:checked::after{content:"";position:absolute;left:7px;top:2px;width:8px;height:15px;border:solid #fff;border-width:0 3px 3px 0;border-radius:0;background:transparent;box-shadow:none;transform:rotate(45deg)}
.legal-consent-footer button{height:48px;margin-top:0;border-radius:14px}
.android-loading-screen{position:fixed;z-index:980;inset:0;width:min(768px,100%);margin:auto;background:var(--bg);display:grid;grid-template-rows:auto 1fr}
.fullscreen-brand-header{min-height:60px;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;background:#173b73;color:#fff;display:flex;align-items:center;gap:10px}
.fullscreen-brand-header img{width:36px;height:36px;border-radius:8px}
.fullscreen-brand-header strong{font-size:22px;line-height:28px}
.android-loading-body{display:flex;min-height:0;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:16px 16px calc(28px + env(safe-area-inset-bottom,0px));text-align:center}
.android-loading-body .loader{width:72px;height:72px;border-width:6px;border-color:var(--surface2);border-top-color:#0077ff}
.android-loading-body p{margin:0;color:var(--muted);font-size:16px;line-height:24px}
.update-dialog{max-width:430px}
.update-dialog-body{padding:24px}
.update-dialog-body h2{margin:6px 0 12px;font-size:24px}
.update-dialog-body p{margin:0;color:var(--muted);line-height:1.5}
.update-dialog-body .update-dialog-note{margin-top:10px;font-size:13px}
.update-dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.update-dialog-actions .secondary-button{width:auto}
.update-dialog-actions button:disabled{opacity:.55}

/* Compact ratings: visible stars only; details remain accessible through ARIA. */
.feedback-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.feedback-refresh-star{fill:#ffc107}.feedback-refresh[aria-busy=true]{opacity:.55}
.android-route-card{height:auto;grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr)}
.android-route-main{min-width:0;display:flex;flex-wrap:wrap}.android-route-heart{flex:0 0 78px;min-height:44px;margin-left:auto}
.android-route-transport{flex:1 1 max-content;width:max-content;min-width:152px;max-width:100%;min-height:154px;text-align:center}
.android-route-transport b,.android-route-transport strong,.android-route-transport small{max-width:100%;flex-shrink:0;overflow-wrap:break-word;line-height:1.3}
.android-route-terminals{flex:999 1 min-content;max-width:100%}
.android-route-terminals>div{display:flex;gap:10px}
.android-route-terminals .terminal-marker{flex:none}
.android-route-terminals b{min-width:0;overflow:visible;overflow-wrap:break-word;line-height:1.3}

.feedback-card-rating{grid-column:1/-1;border-top:1px solid var(--line);padding:6px 12px;background:var(--surface)}
.feedback-rating{display:flex;align-items:center}
.feedback-stars{display:inline-flex;flex:none;gap:2px;vertical-align:middle}
.feedback-star{position:relative;display:inline-block;width:22px;height:22px;color:#e6aa00}
.feedback-star svg{position:absolute;inset:0;width:100%;height:100%;fill:transparent;stroke:currentColor;stroke-width:1.5}
.feedback-star .feedback-star-fill{fill:#ffc107;stroke:#ffc107}
.feedback-route-panel,.feedback-trip-panel{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:4px 12px;background:var(--surface);border-bottom:1px solid var(--line)}
.feedback-route-panel>button,.feedback-trip-panel>button{min-height:44px;max-width:100%;flex:0 1 auto;margin-left:auto;font-size:13px;padding:7px 12px;white-space:normal;overflow-wrap:break-word}
.feedback-operation-results{display:flex;flex-wrap:wrap;flex-basis:100%;gap:4px 14px;padding:0 0 4px;color:var(--muted);font-size:12px;line-height:1.4}
.feedback-dialog{width:min(760px,calc(100vw - 20px));max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);overflow:hidden;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--text);padding:0;box-shadow:var(--shadow)}
.feedback-dialog[open]{display:flex;flex-direction:column}.feedback-dialog::backdrop{background:#0008}.feedback-legend::backdrop{background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.feedback-dialog h2{margin:0;font-size:21px;line-height:1.3;overflow-wrap:anywhere}.feedback-dialog p{line-height:1.5;overflow-wrap:anywhere}
.feedback-form-header{flex:none;padding:18px 18px 14px;border-bottom:1px solid var(--line)}.feedback-form-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:14px 18px}.feedback-form-route{margin:0;font-size:16px;font-weight:750}.feedback-form-direction{margin:3px 0;color:var(--muted);font-size:14px}.feedback-form-date{margin:5px 0 14px;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}
.feedback-form-footer{flex:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:14px 18px;border-top:1px solid var(--line)}.feedback-form-footer button{min-width:0;max-width:100%;min-height:46px;padding:11px 12px;margin:0;border-radius:12px}.feedback-form-footer .primary-button{font-variant-numeric:tabular-nums}.feedback-form-footer .primary-button:disabled{opacity:.48}.feedback-form-body>button{max-width:100%;min-height:44px;margin:8px 8px 8px 0}
.feedback-form-footer .primary-button:disabled[aria-label]{opacity:1;background:var(--surface2);color:var(--text);border:1px solid var(--line)}
.feedback-eligibility{display:flex;align-items:flex-start;gap:9px;border-radius:12px;padding:10px 12px;background:var(--surface2);color:var(--muted);font-size:14px;line-height:1.45}.feedback-eligibility[hidden]{display:none}.feedback-eligibility svg{width:19px;height:19px;flex:none;margin-top:1px;fill:currentColor}
.feedback-choices{display:grid;gap:8px;margin:14px 0}.feedback-star-choice{display:grid;grid-template-columns:auto minmax(0,1fr) 16px;align-items:center;gap:9px;width:100%;min-height:48px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;font-size:14px;line-height:1.4}
.feedback-star-choice::after{content:'';width:16px;height:16px;border:1.5px solid var(--muted);border-radius:50%;box-sizing:border-box}.feedback-star-choice .feedback-star{width:16px;height:16px}.feedback-none-choice{grid-template-columns:minmax(0,1fr) 16px}.feedback-choice-label{overflow-wrap:break-word}
.feedback-star-choice.selected{background:#ffc1070d;border-color:#d7a919}.feedback-star-choice.selected::after{border-color:#d7a919;background:#d7a919;box-shadow:inset 0 0 0 3px var(--surface)}.feedback-star-choice:disabled{opacity:.6}
.feedback-star-choice:focus-visible,.feedback-operation-choices button:focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.feedback-operation-choices{display:flex;gap:8px;flex-wrap:wrap}.feedback-operation-choices button{min-height:44px;padding:9px 15px;border-radius:999px;border:1px solid var(--line);background:var(--surface)}
.feedback-operation-choices button[aria-pressed=true]{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);background:var(--surface2)}
.feedback-clear{display:block;border:0;background:transparent;color:var(--muted);text-decoration:underline;padding:5px 0;font-size:12px}
.feedback-notice{font-size:14px;color:var(--muted)}.feedback-notice:empty{display:none}.feedback-notice[data-tone=error]:not(:empty){padding:10px 12px;border-radius:12px;background:#b3261e0d;color:var(--danger);border:1px solid #b3261e33}.feedback-notice[data-tone=success]{color:var(--brand)}
html[data-theme=dark] .feedback-notice[data-tone=error]:not(:empty){color:#ffb4ab;background:#b3261e18;border-color:#ffb4ab44}
@media(max-width:520px){.android-route-heart{flex-basis:52px}.android-route-transport{min-width:94px;min-height:96px}.android-route-terminals>div{grid-template-columns:22px minmax(0,1fr)}.feedback-card-rating{padding:6px 11px}.feedback-star{width:20px;height:20px}.feedback-form-header{padding:16px 14px 12px}.feedback-form-body{padding:12px 14px}.feedback-form-footer{padding:12px 14px}.feedback-choices{gap:7px}.topbar{gap:5px;padding-right:10px;padding-left:10px}.android-header-action{width:40px;flex:0 0 40px}.brand{gap:7px}.brand-logo{width:32px;height:32px}.brand>div{min-width:0}.brand h1{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:360px){.topbar{gap:3px}.android-header-action{width:36px;flex-basis:36px}.brand-logo{display:none}.brand h1{font-size:18px}}

/* Ratings explain their scale without opening a voting form. */
.feedback-rating-explain{border:0;background:transparent;color:inherit;padding:8px 0;min-height:44px;cursor:pointer;border-radius:4px}.feedback-rating-explain:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.feedback-route-panel>.feedback-rating-explain,.feedback-trip-panel>.feedback-rating-explain{margin-left:0;padding:8px 0;flex:none}.feedback-legend-row{display:grid;grid-template-columns:98px minmax(0,1fr);gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.5}.feedback-legend-row .feedback-star{width:18px;height:18px;flex:0 0 18px}.feedback-legend .feedback-form-footer{grid-template-columns:1fr}

/* One local city advertisement; the expanded view keeps every image, word and action. */
.advertising-slot{padding:10px 10px 2px}.advertising-slot[hidden]{display:none}
.advertising-banner{display:flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}
.advertising-open{display:flex;align-items:center;gap:14px;flex:1;min-width:0;min-height:104px;padding:12px;text-align:left;border:0;background:transparent;color:var(--text);cursor:pointer}
.advertising-thumbnail{width:100px;height:76px;flex:none;object-fit:contain;border-radius:10px;background:var(--surface2)}
.advertising-copy{display:grid;gap:5px;flex:1;min-width:0}.advertising-label{display:block;color:var(--muted);font-size:11px;line-height:1.3;font-weight:700;letter-spacing:.04em}
.advertising-title{font-size:16px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.advertising-summary{color:var(--muted);font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.advertising-more{font-size:12px;font-weight:750;color:var(--brand);white-space:nowrap;flex:none}
.advertising-dismiss,.advertising-dialog-close{display:grid;place-items:center;flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font-size:27px;line-height:1;cursor:pointer}
.advertising-dismiss{margin-right:10px;border-color:transparent;color:var(--muted)}
.advertising-open:focus-visible,.advertising-dismiss:focus-visible,.advertising-dialog-close:focus-visible,.advertising-contact:focus-visible,.advertising-dialog-body:focus-visible{outline:3px solid var(--brand);outline-offset:-3px}
.advertising-dialog{width:min(1080px,calc(100% - 32px));max-width:none;height:fit-content;max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--line);border-radius:26px;background:var(--surface);color:var(--text);overflow:hidden;box-shadow:0 28px 90px rgba(0,0,0,.26)}
.advertising-dialog::backdrop{background:rgba(10,18,32,.58);backdrop-filter:blur(7px)}
.advertising-dialog-panel{display:flex;flex-direction:column;max-height:calc(100dvh - 34px);min-height:0}
.advertising-dialog-header{display:flex;align-items:flex-start;gap:20px;flex:none;padding:24px 26px 20px;border-bottom:1px solid var(--line)}
.advertising-heading{flex:1;min-width:0}.advertising-heading h2{font-size:clamp(21px,3vw,30px);line-height:1.25;letter-spacing:-.02em;margin:7px 0 0;overflow-wrap:anywhere;font-weight:750}
.advertising-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:24px 26px 28px}
.advertising-dialog-body::-webkit-scrollbar{display:block;width:8px}.advertising-dialog-body::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
.advertising-dialog-body.advertising-has-image{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:28px;align-items:start}
.advertising-image-frame{margin:0;background:var(--surface2);border:1px solid var(--line);border-radius:18px;overflow:hidden;padding:12px;position:sticky;top:0}
.advertising-image{display:block;width:100%;max-height:min(56dvh,520px);height:auto;object-fit:contain}.advertising-image-frame[hidden]{display:none}
.advertising-content{min-width:0}.advertising-description{font-size:16px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 24px}
.advertising-contacts{display:grid;gap:10px;list-style:none;padding:0;margin:0}.advertising-contact{display:flex;gap:14px;align-items:center;min-height:72px;padding:15px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--text);text-decoration:none;overflow-wrap:anywhere}
.advertising-contact:hover{border-color:var(--brand)}.advertising-contact-icon{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:11px;background:var(--surface2);color:var(--brand);font-size:24px}
.advertising-contact-copy{display:grid;gap:4px;min-width:0;font-size:14px;line-height:1.4}.advertising-contact-copy strong{font-weight:750;font-size:15px}.advertising-contact-copy>span{color:var(--muted)}
@media(max-width:600px){.advertising-open{min-height:90px;padding:10px;gap:10px}.advertising-thumbnail{width:70px;height:62px}.advertising-title{font-size:14px}.advertising-summary{font-size:12px}.advertising-more{display:none}.advertising-dismiss{margin-right:6px;width:40px;height:40px}.advertising-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px);border-radius:21px}.advertising-dialog-panel{max-height:calc(100dvh - 18px)}.advertising-dialog-header{padding:18px 16px 16px;gap:12px}.advertising-dialog-body{padding:16px 16px 22px}.advertising-dialog-body.advertising-has-image{display:block}.advertising-image-frame{position:static;padding:8px;margin-bottom:20px}.advertising-image{max-height:46dvh}.advertising-description{font-size:15px;line-height:1.6}.advertising-contact{padding:12px;gap:12px}}
@media(prefers-reduced-motion:reduce){.advertising-dialog::backdrop{backdrop-filter:none}}

/* Android 172 RuStore chrome. Roboto is copied from the project's local
   compose-ui-lib-3.5.13 Android dependency, not fetched at runtime. */
@font-face{font-family:MrplRoboto;src:url('./fonts/roboto-regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:MrplRoboto;src:url('./fonts/roboto-medium.ttf') format('truetype');font-weight:500 600;font-style:normal;font-display:swap}
@font-face{font-family:MrplRoboto;src:url('./fonts/roboto-bold.ttf') format('truetype');font-weight:700 900;font-style:normal;font-display:swap}
:root{--bg:#F3F6FB;--surface:#fff;--surface2:#F3F6FB;--text:#17263F;--muted:#64748B;--line:#DCE3EF;--brand:#0D2957;--brand2:#4A9AFF;--danger:#D83B3B;--android-blue:#0D2957;--android-section:#173A78;--android-pale:#F3F6FB;--app-font-scale:1;--route-number-scale:1;--route-type-scale:1;--route-price-scale:1;--route-terminals-scale:1;--bottom-count:4;--bottom-row-height:68px;--topbar-height:52px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--shadow:0 3px 12px #0D29570D}
html[data-theme=dark]{--bg:#101214;--surface:#171A1F;--surface2:#22262D;--text:#F4F6F8;--muted:#B4BCC8;--line:#363C46;--brand:#4A9AFF;--brand2:#4A9AFF;--android-pale:#101214;--android-section:#173A78;--shadow:0 4px 16px #0003}
html,body{font-family:MrplRoboto,Roboto,Arial,sans-serif;font-size:calc(16px * var(--app-font-scale));-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font-family:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #64B5F6;outline-offset:2px}
#app{width:100%;max-width:none;min-height:100dvh;background:var(--bg)}
.legacy-chrome{display:none!important}
.topbar{height:calc(var(--topbar-height) + var(--safe-top));padding:calc(6px + var(--safe-top)) 8px 6px;gap:0;background:#0D2957;border:0;backdrop-filter:none;-webkit-backdrop-filter:none;color:#fff}
.android-header-action{width:40px;height:40px;flex:0 0 40px;padding:8px;border-radius:8px;background:transparent;color:#fff}
.android-header-action svg{width:24px;height:24px;fill:currentColor}
#menuButton,#backButton{width:36px;height:36px;flex-basis:36px;padding:6px;margin-right:6px}
.brand{gap:10px;flex:1;min-width:0}.brand>div{min-width:0;flex:1}.brand-logo{display:block;width:36px;height:36px;flex:none;border-radius:8px;object-fit:contain}
.brand h1{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:calc(22px * var(--app-font-scale));line-height:28px;font-weight:700;color:#fff}.brand p{display:none}
.header-heart,.header-heart.active{color:#E53935}
main{padding-bottom:calc(var(--bottom-row-height) + var(--safe-bottom))}
.screen{padding:12px 16px 24px}.screen>.section-heading.large{display:none}
.bottom-nav{left:0;transform:none;width:100%;height:calc(var(--bottom-row-height) + var(--safe-bottom));padding:0 6px var(--safe-bottom);display:grid;grid-template-columns:repeat(var(--bottom-count),minmax(0,1fr));background:linear-gradient(to bottom,#ffffffAD,#F3F6FBC2);color:#17263FF0;border-top:.5px solid #0002;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);isolation:isolate}
.bottom-nav button,.bottom-nav button.active{min-width:0;margin:0;padding:3px 2px;border-radius:18px;gap:0;background:transparent;color:inherit;font-weight:400}
.bottom-nav span{display:grid;place-items:center;width:44px;height:34px;max-width:100%;border-radius:20px}.bottom-nav svg{width:25px;height:25px;fill:currentColor}.bottom-nav small{display:block;width:100%;margin:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align:center;font-size:calc(11px * var(--app-font-scale));line-height:13px;font-weight:400;color:inherit}
html[data-theme=dark] .bottom-nav{background:linear-gradient(to bottom,#171A1F9C,#22262DB8);color:#F4F6F8F0;border-top-color:#FFFFFF29}html[data-theme=dark] .bottom-nav button,html[data-theme=dark] .bottom-nav button.active{color:inherit;background:transparent}
html[data-bottom-count='3'],html.bottom-count-3{--bottom-count:3}html[data-bottom-count='4'],html.bottom-count-4{--bottom-count:4}html[data-bottom-count='5'],html.bottom-count-5{--bottom-count:5;--bottom-row-height:64px}html[data-bottom-count='6'],html.bottom-count-6{--bottom-count:6;--bottom-row-height:64px}
html[data-bottom-count='5'] .bottom-nav,html[data-bottom-count='6'] .bottom-nav,html.bottom-count-5 .bottom-nav,html.bottom-count-6 .bottom-nav{padding-left:2px;padding-right:2px}
html[data-bottom-count='5'] .bottom-nav span,html[data-bottom-count='6'] .bottom-nav span,html.bottom-count-5 .bottom-nav span,html.bottom-count-6 .bottom-nav span{width:40px}
html[data-bottom-count='5'] .bottom-nav svg,html[data-bottom-count='6'] .bottom-nav svg,html.bottom-count-5 .bottom-nav svg,html.bottom-count-6 .bottom-nav svg{width:23px;height:23px}
html[data-bottom-count='5'] .bottom-nav small,html[data-bottom-count='6'] .bottom-nav small,html.bottom-count-5 .bottom-nav small,html.bottom-count-6 .bottom-nav small{font-size:calc(9px * var(--app-font-scale));line-height:11px}
html[data-bottom-style='default'] .bottom-nav,html.bottom-style-default .bottom-nav{background:#0D2957;color:#FFFFFFC7;backdrop-filter:none;-webkit-backdrop-filter:none;border-top:0}
html[data-bottom-style='default'] .bottom-nav button.active,html.bottom-style-default .bottom-nav button.active{color:#fff}
html[data-bottom-style='glass'] .bottom-nav,html.bottom-style-glass .bottom-nav{left:12px;bottom:calc(8px + var(--safe-bottom));width:calc(100% - 24px);height:var(--bottom-row-height);padding-bottom:0;border:1px solid #FFFFFF66;border-radius:24px;box-shadow:0 3px 18px #0002}
.drawer-layer{left:0;transform:none;width:100%}.side-drawer{width:min(300px,100%);background:var(--surface);color:var(--text);border-radius:0;box-shadow:8px 0 26px #0003;display:flex;flex-direction:column}
.drawer-head{min-height:90px;flex:none;padding:calc(18px + var(--safe-top)) 16px 18px;background:#0D2957;gap:12px}.drawer-head img{width:54px;height:54px;border-radius:14px;object-fit:contain}.drawer-head b{font-size:calc(22px * var(--app-font-scale));line-height:28px;font-weight:700}.drawer-head small{font-size:calc(14px * var(--app-font-scale));line-height:20px;color:#FFFFFFD6}.drawer-head button{width:38px;height:38px}
.side-drawer>button,.side-drawer>a,html[data-theme=dark] .side-drawer>button,html[data-theme=dark] .side-drawer>a{min-height:54px;flex:none;padding:15px 22px;gap:22px;background:transparent;color:var(--text);border-bottom:1px solid var(--line)}
.side-drawer>button.active,.side-drawer>button:active{background:#E8DEF88C}html[data-theme=dark] .side-drawer>button.active,html[data-theme=dark] .side-drawer>button:active{background:#2434478C}
.side-drawer>button>span,.side-drawer>a>span{color:#9AA6B2}.side-drawer>button.active>span{color:var(--brand)}.side-drawer>button b,.side-drawer>a b{font-size:calc(18px * var(--app-font-scale));line-height:24px;font-weight:400}.side-drawer>h3{display:none}
.drawer-version,html[data-theme=dark] .drawer-version{position:static;flex:none;margin-top:auto;padding:14px 18px calc(14px + var(--safe-bottom));background:var(--surface);border-color:var(--line)}.drawer-version b{font-size:12px;line-height:16px;font-weight:500}.drawer-version small{font-size:12px;line-height:16px}
html[data-theme=dark] .side-drawer{background:var(--surface)}

/* The native default is the Minimal route card: no breakpoint-specific zoom. */
#routesScreen{padding:0 6px 12px;background:var(--bg)}#routesList{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding-top:4px}
.android-route-card{height:auto;min-height:88px;display:block;border:1px solid #E5E7EB;border-radius:12px;background:#fff;box-shadow:none;overflow:hidden}
.android-route-main{display:flex;flex-wrap:nowrap;align-items:stretch;min-height:88px;min-width:0}.android-route-transport{flex:0 0 auto;width:max-content;min-width:82px;max-width:42%;min-height:88px;padding:8px;justify-content:center;gap:0}
.android-route-transport b{font-size:calc(10px * var(--route-type-scale));font-weight:700;line-height:1.25}.android-route-transport strong{font-size:calc(36px * var(--route-number-scale));font-weight:700;line-height:1.15;margin:2px 0}.android-route-transport small{font-size:calc(10px * var(--route-price-scale));line-height:1.25;font-weight:700;opacity:.9}
.android-route-terminals{flex:1 1 96px;max-width:none;padding:8px 2px 8px 12px;gap:6px;color:#0F172A;justify-content:center}.android-route-terminals>div{display:flex;gap:8px;align-items:center;min-width:0}.android-route-terminals b{min-width:0;font-size:calc(16px * var(--route-terminals-scale));line-height:1.25;font-weight:700;overflow:visible;overflow-wrap:anywhere}.terminal-marker{width:18px;height:18px;flex:none;border:0;border-radius:50%;box-shadow:inset 0 0 0 2.52px currentColor,inset 0 0 0 4.68px #fff;background:currentColor}
.android-route-heart{flex:0 0 58px;width:58px;min-height:58px;align-self:center;margin:0 10px 0 8px;padding:11px;color:#64748B;border-radius:50%;background:transparent}.android-route-heart svg{width:36px;height:36px;stroke:none;fill:currentColor}.android-route-heart.active{color:#E53935}
.android-route-transport .feedback-card-rating{padding:4px 0 0;border:0;background:transparent}.android-route-transport .feedback-rating-explain{min-height:12px;padding:0}.android-route-transport .feedback-stars{gap:1px}.android-route-transport .feedback-star{width:12px;height:12px}.android-route-transport .feedback-rating{justify-content:center}
.route-movement-status{display:flex;align-items:center;justify-content:center;gap:4px;margin-bottom:2px;font-size:10px;line-height:14px;white-space:nowrap;color:#fff;font-weight:500}.route-movement-status::before{content:'';width:12px;height:12px;border-radius:50%;background:var(--movement-color,#94A3B8);flex:none}.route-card-notice{font-size:12px;line-height:16px;color:#6B7280}
html[data-theme=dark] .android-route-card{background:#111827;border-color:#243041}html[data-theme=dark] .android-route-terminals{color:#F8FAFC}html[data-theme=dark] .android-route-heart{color:#94A3B8}html[data-theme=dark] .android-route-heart.active{color:#E53935}html[data-theme=dark] .route-card-notice{color:#CBD5E1}html[data-theme=dark] .terminal-marker{box-shadow:inset 0 0 0 2.52px currentColor,inset 0 0 0 4.68px #fff}
@media(max-width:335px){.android-route-main{flex-wrap:wrap}.android-route-transport{max-width:100%;width:100%;min-height:88px;flex-basis:100%}.android-route-terminals{min-width:0}.android-route-heart{margin-right:6px}}

/* Schedule typography and controls follow ScheduleDetailComposeComponents. */
#detailScreen{padding:0 0 12px;background:var(--bg)}
#detailScreen .date-strip,.android-map-days,.android-nearby-days{height:44px;min-height:44px;gap:0;padding:0;background:#0D2957;overflow:hidden}
#detailScreen .date-chip,.android-map-days .date-chip,.android-nearby-days .date-chip{flex:1;min-width:0;height:44px;border:0;border-radius:0;background:#28A745;color:#fff;padding:5px 2px;font-size:calc(13px * var(--app-font-scale));line-height:16px;font-weight:600;text-transform:uppercase;box-shadow:none}
#detailScreen .date-chip.weekend,.android-map-days .date-chip.weekend,.android-nearby-days .date-chip.weekend{background:#FF1B1B}
#detailScreen .date-chip:disabled,.android-map-days .date-chip:disabled,.android-nearby-days .date-chip:disabled{background:#CBD5E1;color:#fff;opacity:1}
#detailScreen .date-chip.active,.android-map-days .date-chip.active,.android-nearby-days .date-chip.active{box-shadow:inset 0 0 0 2px #64B5F6}
#detailScreen .date-chip small,.android-map-days .date-chip small,.android-nearby-days .date-chip small{font-size:calc(15px * var(--app-font-scale));line-height:18px;font-weight:700;opacity:1;margin:0}
.android-route-title{height:48px;min-height:48px;padding:0 8px;background:var(--bg)}.android-route-title h2{font-size:18px;line-height:24px;font-weight:600}.android-route-title button{width:48px;height:48px;flex:none;border-radius:50%;background:transparent;color:var(--brand);padding:12px}.android-route-title button svg{width:24px;height:24px}
.android-route-map-wrap{height:224px}.map-direction-arrow{width:42px;height:42px;padding:9px}.map-direction-arrow .ui-icon{width:24px;height:24px}.map-direction-badge{font-size:14px;line-height:20px;font-weight:500}
.android-direction-header{min-height:52px;padding:6px 8px 6px 14px;background:#173A78}.android-direction-header b{font-size:calc(18px * var(--app-font-scale));line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}.android-direction-header>span{display:none}
.schedule-generator-action{display:grid;place-items:center;width:40px;height:40px;flex:0 0 40px;border:0;border-radius:8px;padding:8px;background:transparent;color:#fff}.schedule-generator-action svg{width:24px;height:24px}
.android-trip-grid{padding:6px;gap:6px;background:var(--bg);grid-template-columns:repeat(var(--schedule-columns,5),minmax(0,1fr))}.android-trip{height:auto;min-height:44px;min-width:0;border:0;border-radius:12px;padding:6px 2px;background:#AEB7C4;color:#F8FAFC;font-size:calc(16px * var(--app-font-scale));font-weight:700;line-height:20px}.android-trip.primary{background:#0D2957}.android-trip.secondary{background:#000}.android-trip.past{background:#AEB7C4}.android-trip.past-secondary{background:#4B5563}.android-trip.next{background:#234C99}.android-trip i{display:none}.android-trip[aria-pressed=true]{outline:3px solid #64B5F6;outline-offset:-3px}
html[data-theme=dark] .android-trip.next{background:#28A745}html[data-theme=dark] .android-trip.past-secondary{background:#374151}
.expanded-head{background:#173A78;padding:8px 12px}.expanded-head>div:first-child{font-size:16px;line-height:20px}.expanded-head>div:first-child small{font-size:13px}.expanded-head>div:last-child{grid-template-columns:42px 1fr 42px;margin-top:8px}.expanded-head button{width:42px;height:42px;padding:9px;border:0;border-radius:50%;background:transparent}.expanded-head button .ui-icon{width:24px;height:24px}.expanded-head b{font-size:calc(28px * var(--app-font-scale));line-height:34px;font-weight:700}
.android-stop-row{min-height:48px;padding:0 4px 0 12px;grid-template-columns:50px minmax(0,1fr) 48px;gap:8px;background:var(--surface);color:var(--text);border-bottom-color:var(--line)}.android-stop-row time,.android-stop-row b{font-size:calc(15px * var(--app-font-scale));line-height:20px;font-weight:400}.android-stop-row b{white-space:normal;overflow:visible;overflow-wrap:anywhere}.stop-tune,.stop-actions{width:48px;height:48px;border:0;padding:12px;background:transparent;color:#6B7A90;display:grid;place-items:center;border-radius:8px}.stop-tune .ui-icon,.stop-actions .ui-icon{width:24px;height:24px}.android-stop-row.inactive,.stop-row.inactive{color:#D83B3B}.android-stop-row.inactive small,.stop-row.inactive small{display:block;color:#D83B3B;font-size:12px;line-height:16px}
.stop-arrivals{padding:6px 12px 12px;gap:6px;background:var(--bg);grid-template-columns:repeat(var(--schedule-columns,5),minmax(0,1fr))}.stop-arrivals button{height:auto;min-height:32px;border-radius:4px;padding:4px 2px;font-size:calc(14px * var(--app-font-scale));line-height:20px;background:#0D2957}.stop-arrivals button.next{background:#234C99}.stop-arrivals button.late{background:#000}html[data-theme=dark] .stop-arrivals button.next{background:#28A745}
#planningScreen,#gpsScreen{height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--bottom-row-height) - var(--safe-bottom));min-height:320px;padding:0}.android-planning-map,#gpsScreen .map{inset:44px 0 0}.map-search-shell{top:60px;height:56px;left:16px;right:16px}.map-search-shell>input{font-size:16px}.gps-vehicle-card{top:60px}.gps-route-rail{top:calc(50% + 22px)}.android-nearby-days{margin:-12px -16px 8px}.nearby-arrival-time strong{font-size:18px}.nearby-arrival-time small{font-size:11px}

/* Shared native-like preference rows, dialogs and passenger tools. */
#settingsScreen{padding:0 16px 24px}#settingsContent:not(:empty)+#legacySettingsContent{display:none}.android-settings-list{display:grid;gap:0}.android-settings-section{padding:16px 0 6px;color:var(--brand);font-size:14px;line-height:20px;font-weight:600}.android-settings-row,.android-settings-switch{width:100%;min-height:64px;padding:12px 0;display:flex;align-items:center;gap:16px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);text-align:left}.android-settings-row>span,.android-settings-switch>span{min-width:0;flex:1}.android-settings-row b,.android-settings-switch b{display:block;font-size:16px;line-height:24px;font-weight:400}.android-settings-row small,.android-settings-switch small{display:block;font-size:14px;line-height:20px;color:var(--muted);margin-top:2px}.android-settings-row svg{width:24px;height:24px;flex:none;color:var(--muted);fill:currentColor}.android-settings-options{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}.android-settings-options button{min-height:40px;padding:8px 14px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--text);font-size:14px}.android-settings-options button[aria-pressed=true],.android-settings-options button.active{background:var(--brand);border-color:var(--brand);color:var(--surface)}.android-settings-slider{width:100%;margin:12px 0;accent-color:var(--brand)}.android-settings-order{display:grid;gap:8px;margin:8px 0 16px}.android-settings-order>div,.android-settings-order>label{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.android-settings-order button{border:0;border-radius:8px;background:var(--surface2);color:var(--text);width:36px;height:36px}.android-settings-order>div>span{flex:1}
dialog{max-height:calc(100dvh - 32px);border-radius:24px;background:var(--surface);color:var(--text);font-size:16px;box-shadow:0 12px 40px #0004}dialog::backdrop{background:#0006;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.dialog-head h2{font-size:24px;line-height:32px;font-weight:400}.primary-button,.secondary-button{min-height:40px;border-radius:20px;font-size:14px;line-height:20px;font-weight:500}.primary-button{background:var(--brand);color:var(--surface)}.secondary-button{color:var(--brand);background:transparent}.city-item{font-size:16px;font-weight:400;background:var(--surface);border:0;min-height:52px}.city-item.active{background:var(--surface2)}
.gps-intro-dialog{max-width:560px;border-radius:28px;background:var(--surface);color:var(--text)}.gps-intro-dialog form{padding:24px}.gps-intro-dialog h2{font-size:24px;line-height:32px;font-weight:400;margin:0 0 16px}.gps-intro-dialog p{font-size:14px;line-height:20px;color:var(--muted);margin:0 0 14px}.gps-intro-dialog label{gap:12px;font-size:14px;line-height:20px;color:var(--muted)}.gps-intro-dialog input{width:20px;height:20px;accent-color:var(--brand)}.gps-intro-dialog button{min-height:40px;margin-top:16px;font-size:14px;font-weight:500;color:var(--brand)}
.passenger-dialog{width:min(520px,calc(100% - 32px));padding:0;overflow:hidden;border-radius:24px}.passenger-dialog[open]{display:flex;flex-direction:column}.passenger-header{display:flex;align-items:center;gap:8px;flex:none;min-height:56px;padding:8px 12px}.passenger-header h2{flex:1;min-width:0;margin:0;font-size:22px;line-height:28px;font-weight:400}.passenger-back,.passenger-close{width:40px;height:40px;flex:none;padding:8px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:inherit}.passenger-back svg,.passenger-close svg{width:24px;height:24px;fill:currentColor}.passenger-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px 24px 24px;line-height:1.5}.passenger-actions{display:flex;justify-content:flex-end;gap:8px;flex:none;padding:8px 24px 16px}.passenger-primary,.passenger-secondary{min-height:40px;padding:10px 18px;border:0;border-radius:20px;font-size:14px;line-height:20px;font-weight:500}.passenger-primary{background:var(--brand);color:var(--surface)}.passenger-secondary{background:transparent;color:var(--brand)}.passenger-primary:disabled,.passenger-secondary:disabled{opacity:.38}
.passenger-upload{width:100%;max-width:none;height:100dvh;max-height:100dvh;margin:0;border-radius:0}.passenger-upload .passenger-header{min-height:calc(52px + var(--safe-top));padding:calc(6px + var(--safe-top)) 8px 6px;background:#0D2957;color:#fff}.passenger-upload .passenger-header h2{font-size:22px;line-height:28px;font-weight:700}.passenger-upload .passenger-body{width:min(720px,100%);align-self:center;padding:16px}.passenger-upload .passenger-actions{padding-bottom:calc(16px + var(--safe-bottom))}.passenger-card{padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin:12px 0}.passenger-card h3{font-size:18px;line-height:24px;margin:0 0 8px}.passenger-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.passenger-chips button{min-height:40px;border:1px solid var(--line);border-radius:20px;padding:8px 14px;color:var(--text);background:var(--surface);font-size:14px}.passenger-chips button[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--surface)}.passenger-steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:0 0 20px;padding:0}.passenger-steps li{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center;color:var(--muted);font-size:11px;line-height:16px}.passenger-step-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--surface2);color:var(--muted)}.passenger-step-icon svg{width:20px;height:20px;fill:currentColor}.passenger-steps li[aria-current=step]{color:var(--brand);font-weight:600}.passenger-steps li[aria-current=step] .passenger-step-icon{background:var(--brand);color:var(--surface)}
.passenger-field{display:block;margin:12px 0}.passenger-field>span{display:block;margin-bottom:6px;font-size:14px;line-height:20px;color:var(--muted)}.passenger-field input,.passenger-field select,.passenger-field textarea{display:block;width:100%;min-height:56px;padding:14px 16px;border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--text);font-size:16px}.passenger-photo{margin:16px 0}.passenger-photo img{display:block;max-height:45dvh;width:100%;object-fit:contain;border-radius:12px;background:var(--surface2)}.passenger-photo figcaption{font-size:12px;line-height:16px;color:var(--muted);margin-top:6px}.passenger-notice,.passenger-error{padding:12px 14px;margin:12px 0;border-radius:12px;background:var(--surface2);font-size:14px;line-height:20px;color:var(--muted)}.passenger-error{background:#D83B3B14;color:var(--danger)}
.passenger-switch{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:8px 0}.passenger-switch>span{flex:1}.passenger-switch input,.android-settings-switch input{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:52px;height:32px;border:2px solid var(--muted);border-radius:16px;background:var(--surface2);margin:0;transition:background .15s}.passenger-switch input::after,.android-settings-switch input::after{content:'';position:absolute;width:16px;height:16px;left:6px;top:6px;border-radius:50%;background:var(--muted);transition:transform .15s}.passenger-switch input:checked,.android-settings-switch input:checked{background:var(--brand);border-color:var(--brand)}.passenger-switch input:checked::after,.android-settings-switch input:checked::after{width:24px;height:24px;left:0;top:2px;transform:translateX(22px);background:var(--surface)}
.passenger-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:12px 0}.passenger-weekdays button{min-width:0;min-height:40px;padding:4px 0;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--text);font-size:13px}.passenger-weekdays button[aria-pressed=true]{background:#28A745;border-color:#28A745;color:#fff}.passenger-weekdays button[data-weekend=true][aria-pressed=true]{background:#FF1B1B;border-color:#FF1B1B}.passenger-timeline{display:grid;gap:0}.passenger-timeline>div{display:flex;align-items:center;gap:16px;min-height:48px;border-bottom:1px solid var(--line);font-size:15px}.passenger-timeline time{color:var(--brand);font-weight:500;font-variant-numeric:tabular-nums}
.tour-overlay{position:fixed;z-index:1100;inset:0;pointer-events:auto}.tour-spotlight{position:fixed;pointer-events:none;border:3px solid #fff;border-radius:12px;box-shadow:0 0 0 9999px #0009}.tour-card{position:fixed;left:16px;right:16px;bottom:calc(16px + var(--safe-bottom));max-width:560px;margin:auto;max-height:45dvh;overflow:auto;border-radius:20px;padding:20px;background:var(--surface);color:var(--text);box-shadow:0 6px 26px #0004}.tour-card h2{font-size:20px;line-height:26px;margin:0 0 8px}.tour-card p{font-size:14px;line-height:20px;margin:0;color:var(--muted)}.tour-progress{font-size:12px;line-height:16px;color:var(--muted);margin-bottom:8px}.tour-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:16px}.tour-actions button{min-height:40px;padding:10px 16px;border:0;border-radius:20px;background:transparent;color:var(--brand);font-size:14px;font-weight:500}.tour-actions button:last-child{background:var(--brand);color:var(--surface)}
.toast{bottom:calc(var(--bottom-row-height) + var(--safe-bottom) + 10px);background:#323232;color:#fff;border-radius:8px;font-size:14px}.legal-brand-header,.fullscreen-brand-header{background:#0D2957}.legal-consent-footer button{background:#0D2957}.android-loading-body .loader{border-top-color:#0D2957}
@media(prefers-reduced-motion:reduce){.side-drawer,.drawer-scrim,.passenger-switch input,.passenger-switch input::after,.android-settings-switch input,.android-settings-switch input::after{transition:none}}

/* Dynamic shells keep the same geometry as the initial, usable HTML. */
#bottomNav>button>.ui-icon,#bottomNav>button>svg{width:25px;height:25px;min-height:34px;flex:none;margin:0}
#bottomNav>button>span:last-child:not(:has(svg)){display:block;width:100%;height:auto;max-width:100%;font-size:calc(11px * var(--app-font-scale));line-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:0}
html[data-bottom-count='5'] #bottomNav>button>svg,html[data-bottom-count='6'] #bottomNav>button>svg{width:23px;height:23px}html[data-bottom-count='5'] #bottomNav>button>span:last-child:not(:has(svg)),html[data-bottom-count='6'] #bottomNav>button>span:last-child:not(:has(svg)){font-size:calc(9px * var(--app-font-scale));line-height:11px}
.drawer-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}.drawer-items{display:block}.drawer-items>.android-settings-row,.drawer-scroll>a{width:100%;min-height:54px;padding:15px 22px;gap:22px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);display:flex;align-items:center;text-align:left;text-decoration:none}.drawer-items>.android-settings-row b,.drawer-scroll>a b{font-size:calc(18px * var(--app-font-scale));line-height:24px;font-weight:400}.drawer-items>.android-settings-row>svg:first-child{color:#9AA6B2;width:24px;height:24px;flex:none}.drawer-items>.android-settings-row>svg:last-child{display:none}.drawer-items>.android-settings-row.active{background:#E8DEF88C}.drawer-items>.android-settings-row.active>svg:first-child{color:var(--brand)}.drawer-scroll>a>span{width:24px;height:24px;flex:none;color:#9AA6B2}.drawer-scroll>a>div{min-width:0}.drawer-scroll>a>span svg{width:24px;height:24px}html[data-theme=dark] .drawer-items>.android-settings-row.active{background:#2434478C}
#settingsContent>h2{display:none}.android-settings-section{padding:0;color:var(--text);font-size:16px}.android-settings-section>h3{padding:16px 0 6px;margin:0;color:var(--brand);font-size:14px;line-height:20px;font-weight:600}.android-settings-slider{display:block;padding:8px 0;margin:8px 0 16px}.android-settings-slider>span{display:flex;justify-content:space-between;font-size:14px;line-height:20px}.android-settings-slider input{width:100%;accent-color:var(--brand);height:32px;margin:8px 0 0}.android-settings-back{display:none}.android-settings-order{display:flex;align-items:center;gap:8px;min-height:48px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.android-settings-order label{flex:1;display:flex;gap:8px;align-items:center;min-width:0;font-size:14px;line-height:20px}.android-settings-order label input{flex:none;accent-color:var(--brand);width:20px;height:20px}.android-settings-order>span{margin-left:auto;color:var(--muted)}.android-settings-switch input[type=color]{appearance:auto;width:40px;height:32px;border:0;border-radius:4px;padding:0;background:transparent}.android-settings-switch input[type=color]::after{display:none}
.android-route-trailing{display:flex;align-items:center;justify-content:center;flex:0 0 76px;min-width:0}.android-route-trailing .android-route-heart{margin:0 10px 0 8px}.android-route-trailing>.route-movement-status{margin:0}.route-movement-status[data-movement-status=running]{--movement-color:#28A745}.route-movement-status[data-movement-status=not_running]{--movement-color:#D83B3B}.route-movement-status[data-movement-status=no_data]{--movement-color:#F5C542}

/* All six source card arrangements share IDs and actions. */
html[data-route-style=classic] #routesScreen{padding-left:4px;padding-right:4px}html[data-route-style=classic] #routesList{gap:6px}html[data-route-style=classic] .android-route-card{min-height:108px;border-radius:18px;border-color:#D9E2F1}html[data-route-style=classic] .android-route-main,html[data-route-style=classic] .android-route-transport{min-height:108px}html[data-route-style=classic] .android-route-transport b{font-size:calc(11px * var(--route-type-scale))}html[data-route-style=classic] .android-route-transport strong{font-size:calc(42px * var(--route-number-scale))}html[data-route-style=classic] .android-route-transport small{font-size:calc(12px * var(--route-price-scale))}html[data-route-style=classic] .android-route-terminals{padding-top:12px;padding-bottom:12px;gap:8px}html[data-route-style=classic] .android-route-terminals b{font-size:calc(17px * var(--route-terminals-scale))}
html[data-route-style=accent] .android-route-card,html[data-route-style=soft] .android-route-card,html[data-route-style=banner] .android-route-card{position:relative;padding-bottom:32px;border-radius:18px;border-color:#D6E4F7;background:#F8FBFF}
html[data-route-style=accent] .android-route-main,html[data-route-style=soft] .android-route-main,html[data-route-style=banner] .android-route-main{display:grid;grid-template-columns:minmax(0,1fr) 80px;min-height:0}
html[data-route-style=accent] .android-route-transport,html[data-route-style=soft] .android-route-transport,html[data-route-style=banner] .android-route-transport{grid-row:1;grid-column:1/-1;min-width:0;max-width:none;width:100%;min-height:70px;display:grid;grid-template-columns:minmax(0,1fr) minmax(56px,auto) minmax(0,1fr);grid-template-rows:auto auto;padding:6px 12px 8px;column-gap:8px}
html[data-route-style=accent] .android-route-transport>.route-movement-status,html[data-route-style=soft] .android-route-transport>.route-movement-status,html[data-route-style=banner] .android-route-transport>.route-movement-status{grid-row:1;grid-column:1/-1;margin-bottom:2px}
html[data-route-style=accent] .android-route-transport>b,html[data-route-style=soft] .android-route-transport>b,html[data-route-style=banner] .android-route-transport>b{grid-row:2;grid-column:1;text-align:left;font-size:calc(12px * var(--route-type-scale))}
html[data-route-style=accent] .android-route-transport>strong,html[data-route-style=soft] .android-route-transport>strong,html[data-route-style=banner] .android-route-transport>strong{grid-row:2;grid-column:2;margin:0;line-height:1.2;font-size:calc(33px * var(--route-number-scale))}
html[data-route-style=accent] .android-route-transport>small,html[data-route-style=soft] .android-route-transport>small,html[data-route-style=banner] .android-route-transport>small{grid-row:2;grid-column:3;text-align:right;font-size:calc(12px * var(--route-price-scale))}
html[data-route-style=accent] .android-route-terminals,html[data-route-style=soft] .android-route-terminals,html[data-route-style=banner] .android-route-terminals{grid-row:2;grid-column:1;gap:8px;padding:10px 0 10px 10px}
html[data-route-style=accent] .android-route-trailing,html[data-route-style=soft] .android-route-trailing,html[data-route-style=banner] .android-route-trailing{grid-row:2;grid-column:2;width:80px}
html[data-route-style=accent] .android-route-terminals b{font-size:calc(18px * var(--route-terminals-scale));color:#10233F}
html[data-route-style=accent] .android-route-transport .feedback-card-rating,html[data-route-style=soft] .android-route-transport .feedback-card-rating,html[data-route-style=banner] .android-route-transport .feedback-card-rating{position:absolute;left:14px;bottom:8px;padding:0;background:transparent}
html[data-route-style=accent] .android-route-transport .feedback-star,html[data-route-style=soft] .android-route-transport .feedback-star,html[data-route-style=banner] .android-route-transport .feedback-star{width:22px;height:22px}html[data-route-style=accent] .android-route-transport .feedback-stars,html[data-route-style=soft] .android-route-transport .feedback-stars,html[data-route-style=banner] .android-route-transport .feedback-stars{gap:2px}
html[data-route-style=soft] .android-route-card{border-radius:20px;background:#FFFDF8;border-color:#F1E6D1}html[data-route-style=soft] .android-route-transport{padding-right:84px;grid-template-columns:minmax(0,1fr) minmax(68px,auto);min-height:72px}html[data-route-style=soft] .android-route-transport>b{grid-column:1;align-self:start;line-height:18px}html[data-route-style=soft] .android-route-transport>small{grid-column:1;align-self:end;text-align:left;line-height:18px}html[data-route-style=soft] .android-route-transport>strong{grid-column:2}html[data-route-style=soft] .android-route-trailing{grid-row:1;align-self:end;padding-bottom:6px;color:#fff}html[data-route-style=soft] .android-route-heart{color:#64748B}html[data-theme=dark][data-route-style=soft] .android-route-heart{color:#94A3B8}html[data-route-style=soft] .android-route-heart.active{color:#E53935}html[data-route-style=soft] .android-route-terminals{grid-column:1/-1;padding:12px 14px 14px;gap:10px}html[data-route-style=soft] .android-route-terminals b{font-size:calc(17.5px * var(--route-terminals-scale));color:#1F2937}
html[data-route-style=banner] .android-route-transport{padding:6px 14px 10px;min-height:76px;grid-template-columns:repeat(3,minmax(0,1fr))}html[data-route-style=banner] .android-route-transport strong{font-size:calc(36px * var(--route-number-scale))}html[data-route-style=banner] .android-route-terminals{padding:12px 0 12px 14px}html[data-route-style=banner] .android-route-terminals b{font-size:calc(17px * var(--route-terminals-scale));color:#122033}
html[data-route-style=rail] #routesList{gap:4px}html[data-route-style=rail] .android-route-card,html[data-route-style=rail] .android-route-main,html[data-route-style=rail] .android-route-transport{min-height:56px}html[data-route-style=rail] .android-route-transport{min-width:64px;padding:4px 6px}html[data-route-style=rail] .android-route-transport>b,html[data-route-style=rail] .android-route-transport>small,html[data-route-style=rail] .android-route-transport>.route-movement-status,html[data-route-style=rail] .feedback-card-rating{display:none}html[data-route-style=rail] .android-route-transport strong{font-size:calc(33px * var(--route-number-scale));margin:0}html[data-route-style=rail] .android-route-terminals{padding:4px 0 4px 14px;gap:2px}html[data-route-style=rail] .android-route-terminals b{font-size:calc(16.5px * var(--route-terminals-scale))}html[data-route-style=rail] .android-route-trailing{flex-basis:68px}html[data-route-style=rail] .android-route-heart{width:48px;height:48px;min-height:48px;flex-basis:48px;padding:8px}html[data-route-style=rail] .android-route-heart svg{width:32px;height:32px}
html[data-theme=dark][data-route-style=classic] .android-route-card{border-color:#2B3545}html[data-theme=dark][data-route-style=accent] .android-route-card,html[data-theme=dark][data-route-style=banner] .android-route-card{background:#0F172A;border-color:#1E3A5F}html[data-theme=dark][data-route-style=soft] .android-route-card{background:#172033;border-color:#31415F}html[data-theme=dark][data-route-style=accent] .android-route-terminals b,html[data-theme=dark][data-route-style=banner] .android-route-terminals b,html[data-theme=dark][data-route-style=soft] .android-route-terminals b{color:#F8FAFC}
html.warm-dark[data-theme=dark]{--bg:#15110D;--surface:#201913;--surface2:#2C241D;--text:#F3E8D8;--muted:#CBB7A0;--line:#5C4A3A;--brand:#E1B067}
.android-trip-grid .android-trip{font-size:calc(16px * var(--schedule-scale,1))}.stop-arrivals button{font-size:calc(14px * var(--schedule-scale,1))}.android-trip.primary{background:var(--schedule-primary,#0D2957);color:var(--schedule-text,#fff)}.android-trip.secondary{background:var(--schedule-secondary,#000);color:var(--schedule-text,#fff)}.android-trip.past{background:var(--schedule-past,#AEB7C4);color:var(--schedule-past-text,#F8FAFC)}.android-trip.next{background:var(--schedule-selected,#234C99)}
#detailScreen .date-chip,.android-map-days .date-chip,.android-nearby-days .date-chip{background:var(--schedule-weekday,#28A745)}#detailScreen .date-chip.weekend,.android-map-days .date-chip.weekend,.android-nearby-days .date-chip.weekend{background:var(--schedule-weekend,#FF1B1B)}#detailScreen .date-chip:disabled,.android-map-days .date-chip:disabled,.android-nearby-days .date-chip:disabled{background:#CBD5E1}
html.schedule-nearest-outline .android-trip.next{outline:3px solid #64B5F6;outline-offset:-3px}html.schedule-past-diagonal .android-trip.past::after,html.schedule-past-diagonal .android-trip.past-secondary::after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(160deg,transparent calc(50% - .75px),currentColor 50%,transparent calc(50% + .75px));pointer-events:none}html.schedule-comma .stop-arrivals{display:flex;flex-wrap:wrap;gap:0}html.schedule-comma .stop-arrivals button{background:transparent;color:var(--text);min-height:24px;padding:2px 4px;border-radius:0}html.schedule-comma .stop-arrivals button:not(:last-child)::after{content:','}
.route-movement-status{padding:0;border:0;background:transparent;font-size:11px;line-height:14px;font-weight:500;letter-spacing:0}.route-movement-status[data-movement-status=running]{--movement-color:#0CB56E}.route-movement-status[data-movement-status=not_running]{--movement-color:#E53935}.route-movement-status[data-movement-status=no_data]{--movement-color:#F1B900}
.gps-routes-dialog{background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--text);max-width:740px}.gps-routes-list{padding:8px 0}.gps-picker-route>button{width:100%;min-height:64px;display:grid;grid-template-columns:46px minmax(0,1fr) 22px 54px;gap:8px;align-items:center;padding:6px 4px 6px 8px;border:0;background:transparent;color:var(--text);text-align:left}.gps-picker-route .gps-picker-number{font-size:18px;font-weight:400}.gps-picker-route .gps-picker-title{font-size:15px;line-height:20px;color:#4A4A4A}.gps-picker-route .gps-picker-pin{color:#B6B6B6}.gps-picker-route .gps-picker-pin svg{width:22px;height:22px}.gps-picker-route>button.active .gps-picker-pin{color:#40A5FF}.gps-picker-route .gps-picker-switch{width:44px;height:22px;margin:auto;background:#E5393580}.gps-picker-route .gps-picker-switch i{width:26px;height:26px;top:-2px;left:-1px}.gps-picker-route>button.active .gps-picker-switch{background:#22C55E80}.gps-picker-route>button.active .gps-picker-switch i{left:19px}
.gps-picker-directions{display:grid;gap:0;margin:0 8px 8px 54px;padding:4px 10px;background:color-mix(in srgb,var(--surface2) 42%,transparent);border-radius:18px}.gps-picker-direction{display:flex;align-items:center;gap:10px;min-height:48px;padding:5px 0;color:var(--text);font-size:16px;line-height:22px;font-weight:600}.gps-picker-direction.child{padding-left:12px;font-weight:400}.gps-picker-direction input{appearance:auto;flex:none;width:20px;height:20px;margin:0;accent-color:var(--brand)}.gps-picker-direction span{min-width:0;overflow-wrap:anywhere}.gps-transport-filters button.active{color:var(--brand)}.gps-transport-indicator::after{background:var(--brand)}.gps-picker-actions button.primary{color:var(--brand)}html[data-theme=dark] .gps-picker-route .gps-picker-title{color:#CBD5E1}html[data-theme=dark] .gps-picker-route .gps-picker-pin{color:#94A3B8}html[data-theme=dark] .gps-picker-route>button.active .gps-picker-pin{color:#93C5FD}
:root{--bottom-row-height:calc(58px + 10px * clamp(1,var(--app-font-scale),2))}html[data-bottom-count='5'],html[data-bottom-count='6'],html.bottom-count-5,html.bottom-count-6{--bottom-row-height:calc(54px + 10px * clamp(1,var(--app-font-scale),2))}
.android-confirm-dialog{width:min(560px,calc(100% - 32px));padding:24px;border-radius:28px}.android-confirm-dialog>h2{margin:0 0 16px;font-size:24px;line-height:32px;font-weight:400}.android-confirm-dialog>p{font-size:14px;line-height:20px;color:var(--muted)}.planning-stop-header{display:flex;align-items:center;gap:12px}.planning-stop-header h2{flex:1;min-width:0;margin:0;font-size:22px;line-height:28px;font-weight:600}.planning-stop-favorite{width:48px;height:48px;flex:none;padding:10px;border:0;border-radius:50%;background:transparent;color:#64748B}.planning-stop-favorite svg{width:28px;height:28px;fill:currentColor}.planning-stop-favorite[aria-pressed=true]{color:#E53935}.planning-stop-actions{display:grid;gap:8px;margin:18px 0}.planning-stop-actions button{min-height:48px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface2);color:var(--text);font-size:16px;line-height:24px;text-align:left}.planning-stop-actions button:disabled{opacity:.38}.planning-stop-close{display:block;min-height:40px;margin-left:auto;padding:10px 16px;border:0;border-radius:20px;background:transparent;color:var(--brand);font-size:14px;font-weight:500}.inactive-stop-notice{padding:10px 12px;border-radius:12px;background:#EF6C0014;color:#EF6C00;font-size:14px;line-height:20px}.generated-time{color:var(--schedule-selected,#234C99)}.passenger-upload .passenger-body{flex:1}
.gps-routes-dialog{width:calc(100% - 28px);max-width:none;height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--bottom-row-height) - var(--safe-bottom) - 24px);max-height:none;background:#FFFFFFE0}.gps-transport-filters{padding:8px 12px 6px}.gps-transport-filters button{height:28px;min-height:28px;padding:6px;flex:1;min-width:0;font-size:12px;line-height:16px;color:#3A3A3ACC;font-weight:400}.gps-transport-filters button.active{color:#E93A7D;font-weight:700}.gps-transport-indicator::after{width:64%;background:#E93A7D}.gps-picker-actions button.primary{color:#2E6DFF}html[data-theme=dark] .gps-routes-dialog{background:#171A1FEB}html[data-theme=dark] .gps-transport-filters button{color:#CBD5E1E6}html[data-theme=dark] .gps-transport-filters button.active{color:#F472B6}html[data-theme=dark] .gps-transport-indicator::after{background:#F472B6}html[data-theme=dark] .gps-picker-actions button{color:#CBD5E1}html[data-theme=dark] .gps-picker-actions button.primary{color:#93C5FD}
dialog.tour-overlay{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden}dialog.tour-overlay::backdrop{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.android-route-title{display:flex;min-height:48px;height:auto}.android-route-title #routeFeedback{display:flex;align-items:center;flex:1;min-width:0;min-height:48px;gap:0;padding:0;border:0;background:transparent;flex-wrap:nowrap}.android-route-title .feedback-rating-explain{flex:1;min-width:0;justify-content:flex-start;margin:0!important;padding:0!important;min-height:48px}.android-route-title .feedback-rating{justify-content:flex-start}.android-route-title .feedback-movement-control,.android-route-title .feedback-report-control{width:48px;height:48px;min-height:48px;flex:0 0 48px;padding:12px;margin:0;border:0;border-radius:50%;background:transparent;color:var(--brand);display:grid;place-items:center;font-size:0}.android-route-title .feedback-movement-control::before{content:'';display:block;width:16px;height:16px;border-radius:50%;background:var(--movement-color,#F1B900)}.android-route-title .feedback-movement-control[data-movement-status=running]{--movement-color:#0CB56E}.android-route-title .feedback-movement-control[data-movement-status=not_running]{--movement-color:#E53935}.android-route-title .feedback-movement-control[data-movement-status=no_data]{--movement-color:#F1B900}.android-route-title .feedback-report-control svg{width:24px;height:24px;fill:currentColor}.android-route-title .feedback-operation-results{display:none}html[data-theme=dark] .android-route-title .feedback-movement-control,html[data-theme=dark] .android-route-title .feedback-report-control{color:#fff}
.android-route-title{position:relative}.android-route-title #officialScheduleButton{position:absolute;right:56px;top:0}.android-route-title:has(#officialScheduleButton:not(.hidden)) .feedback-report-control{margin-left:48px}
.android-settings-order>label{padding:0;border:0;border-radius:0;background:transparent;min-height:32px}

/* Reachable RuStore172 GPS dialogs: GpsScreenSection/GpsDirectionPickerDialog. */
.gps-intro-dialog{width:calc(100% - 48px);max-width:560px;border-radius:28px;background:var(--surface);color:var(--text);padding:0}
.gps-intro-dialog::backdrop{background:#00000052;backdrop-filter:none}
.gps-intro-dialog form{padding:24px;max-height:calc(100dvh - 48px);display:flex;flex-direction:column;gap:16px;box-sizing:border-box}
.gps-intro-dialog h2{font-size:28px;line-height:32px;font-weight:700;margin:0}
.gps-intro-body{display:flex;flex-direction:column;gap:12px;max-height:520px;overflow:auto}
.gps-intro-dialog p{font-size:16px;line-height:24px;color:var(--muted);margin:0}
.gps-intro-dialog label{display:flex;align-items:center;gap:8px;min-height:48px;font-size:14px;line-height:20px;color:var(--text)}
.gps-intro-dialog input{width:18px;height:18px;margin:15px;accent-color:#0077FF;flex-shrink:0}
.gps-intro-dialog button{margin:8px 0 0 auto;min-height:40px;padding:10px 12px;border:0;border-radius:20px;background:transparent;color:#0077FF;font-size:14px;font-weight:600;line-height:18px}
.gps-intro-dialog button:disabled{color:var(--muted);opacity:.38}
.gps-routes-dialog,.gps-directions-dialog{position:fixed;inset:calc(var(--topbar-height) + var(--safe-top)) 0 0;z-index:39;padding:0;width:100%;max-width:none;height:calc(100dvh - var(--topbar-height) - var(--safe-top));max-height:none;margin:0;border:0;border-radius:0;background:#0000003D;color:var(--text);overflow:hidden;box-shadow:none}
html[data-theme=dark] .gps-routes-dialog{background:#0000003D}
.gps-routes-dialog>form{box-sizing:border-box;width:calc(100% - 28px);min-width:280px;height:calc(100% - 24px);min-height:360px;margin:12px 14px;border-radius:28px;background:#FFFFFFE0;overflow:hidden}
html[data-theme=dark] .gps-routes-dialog>form{background:color-mix(in srgb,var(--surface) 92%,transparent)}
.gps-direction-content{display:flex;flex-direction:column;gap:14px;box-sizing:border-box;width:calc(100% - 28px);min-width:300px;height:calc(100% - 32px);min-height:360px;margin:16px 14px;padding:18px 20px;border-radius:28px;background:color-mix(in srgb,var(--surface) 94%,transparent);overflow:hidden}
.gps-direction-content h2{margin:0;font-size:22px;line-height:28px;font-weight:600}
.gps-direction-content p{margin:0;color:var(--muted);font-size:14px;line-height:20px}
.gps-direction-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.gps-direction-content button{min-height:40px;border:1px solid var(--outline,#79747E);border-radius:14px;background:transparent;color:#0077FF;font-size:14px;font-weight:600;line-height:18px;padding:8px 14px}
.gps-direction-list{min-height:0;flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px}
.gps-direction-group{border-radius:18px;background:color-mix(in srgb,var(--surface2) 42%,transparent);padding:14px;display:flex;flex-direction:column;gap:10px}
.gps-direction-row{display:flex;align-items:center;gap:10px;font-size:16px;line-height:24px;flex-shrink:0}
.gps-direction-row.main{font-size:18px;font-weight:600}.gps-direction-row input{width:18px;height:18px;flex-shrink:0;margin:15px;accent-color:#0077FF}
.gps-direction-children{display:flex;flex-direction:column;gap:6px}.gps-direction-children:empty{display:none}
.gps-direction-content footer{display:flex;gap:10px}.gps-direction-content footer button{flex:1;padding:10px 14px}
.gps-direction-content footer .primary{background:#0077FF;border-color:#0077FF;color:white}

/* SettingsDataSourcePageHost page7: FullScreenCityPicker(showBrandedHeader=false).
   Main chrome and floating bottom bar remain owned by the application host. */
#settingsContent.native-city-picker-mode{box-sizing:border-box;padding:0;background:var(--settings-bg,var(--bg));height:calc(100dvh - var(--topbar-height) - var(--safe-top));min-height:0;color:var(--settings-text,var(--text))}
#settingsContent.native-city-picker-mode .native-city-picker{box-sizing:border-box;width:100%;max-width:620px;height:100%;min-height:0;margin:0 auto;padding:4px 18px calc(14px + var(--bottom-row-height) + var(--safe-bottom));display:flex;flex-direction:column}
#settingsContent.native-city-picker-mode .native-city-picker-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#settingsContent.native-city-picker-mode .initial-cities-list{min-height:0;flex:1;overflow:auto;display:flex;flex-direction:column;gap:14px;padding:0 0 24px}
#settingsContent.native-city-picker-mode .native-city-option{box-sizing:border-box;min-height:100px;border:0;outline:1px solid color-mix(in srgb,var(--settings-outline,var(--line)) 18%,transparent);outline-offset:-1px;border-radius:22px;padding:14px 16px;gap:14px;background:var(--settings-surface,var(--surface));color:var(--settings-text,var(--text));box-shadow:0 2px 3px #00000015}
#settingsContent.native-city-picker-mode .native-city-option.selected{outline-width:1.5px;outline-color:#0D2957;padding:14px 16px}
#settingsContent.native-city-picker-mode .native-city-logo{width:72px;height:72px;border-radius:18px;background:color-mix(in srgb,var(--settings-variant,var(--surface2)) 45%,transparent)}
#settingsContent.native-city-picker-mode .native-city-logo img{width:60px;height:60px;object-fit:contain}
#settingsContent.native-city-picker-mode .native-city-logo-fallback img{width:52px;height:52px}
#settingsContent.native-city-picker-mode .native-city-label b{font-size:22px;line-height:28px;font-weight:600;letter-spacing:0}
#settingsContent.native-city-picker-mode .native-city-label small{font-size:14px;line-height:20px;font-weight:400;letter-spacing:.2px;color:var(--settings-muted,var(--muted));margin-top:4px}
#settingsContent.native-city-picker-mode .native-city-check{width:36px;height:36px;background:color-mix(in srgb,var(--settings-variant,var(--surface2)) 65%,transparent)}
#settingsContent.native-city-picker-mode .selected .native-city-check{background:#0D2957;color:#fff}
#settingsContent.native-city-picker-mode .native-city-check svg{width:22px;height:22px}
#settingsContent.native-city-picker-mode .native-city-confirm{height:56px;min-height:56px;margin-top:8px;border-radius:16px;background:#0077FF;color:#fff;font-size:14px;line-height:18px;font-weight:700;letter-spacing:.1px}
html[data-theme=dark] #settingsContent.native-city-picker-mode .native-city-option.selected{outline-color:#4A9AFF}
html[data-theme=dark] #settingsContent.native-city-picker-mode .selected .native-city-check{background:#4A9AFF}

/* Keep native floating navigation reachable without covering picker actions. */
.gps-routes-dialog>form{padding-bottom:calc(6px + var(--bottom-row-height) + var(--safe-bottom))}
.gps-direction-content{padding-bottom:calc(18px + var(--bottom-row-height) + var(--safe-bottom))}
body:has(#gpsRoutesDialog[open],#gpsDirectionsDialog[open]) #gpsScreen :is(.map-zoom,.map-locate,#gpsDateStrip,#gpsRouteRail,#gpsVehicleCard){visibility:hidden;pointer-events:none}

/* Reachable Android172 AutoFitRouteText slots; fixed r31 modules stay immutable. */
html .android-route-card .native-route-identity>b,
html .android-route-card .native-route-identity>strong,
html .android-route-card .native-route-identity>small,
html .android-route-card .native-soft-identity>b,
html .android-route-card .native-soft-identity>small{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html .android-route-card.native-stacked .native-route-identity>b,
html .android-route-card.native-stacked .native-route-identity>strong,
html .android-route-card.native-stacked .native-route-identity>small,
html .android-route-card.native-stacked .native-soft-identity>b,
html .android-route-card.native-stacked .native-soft-identity>small{white-space:normal;overflow:visible;overflow-wrap:anywhere;text-align:center}
html .android-route-card .android-route-terminals>div>b{flex:1 1 0;width:0;min-width:0;overflow:hidden;text-overflow:ellipsis;hyphens:auto}
html .android-route-card .native-route-notice>span{flex:1 1 0;min-width:0}
html .android-route-card .native-route-distances{gap:6px}
html .android-route-card .native-route-distances>svg{margin-right:2px}
html .android-route-card .native-route-distances>span{flex:0 1 auto;max-width:calc((100% - 29px)/2);min-width:0;overflow:hidden;text-overflow:ellipsis}
html[data-route-style=accent] .android-route-card>.feedback-card-rating .feedback-star,
html[data-route-style=soft] .android-route-card>.feedback-card-rating .feedback-star,
html[data-route-style=banner] .android-route-card>.feedback-card-rating .feedback-star{width:22px;height:22px}
html[data-route-style=accent] .android-route-card>.feedback-card-rating .feedback-rating-explain,
html[data-route-style=soft] .android-route-card>.feedback-card-rating .feedback-rating-explain,
html[data-route-style=banner] .android-route-card>.feedback-card-rating .feedback-rating-explain{min-height:22px}

/* Actual FullScreenUpdateWindow, independent of the unused initial-city loader. */
#loadingScreen.native-city-load{z-index:980;display:flex;flex-direction:column;align-items:stretch;background:var(--bg);min-height:100dvh;padding:0 0 calc(14px + env(safe-area-inset-bottom));box-sizing:border-box}
#loadingScreen.native-city-load .fullscreen-brand-header{display:flex;flex:none;align-items:center;min-height:60px;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;gap:10px;box-sizing:border-box;background:#0D2957;color:#fff}
#loadingScreen.native-city-load .fullscreen-brand-header img{width:36px;height:36px;flex:none;border-radius:8px;object-fit:cover}
#loadingScreen.native-city-load .fullscreen-brand-header strong{font-size:22px;line-height:28px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#loadingScreen .native-city-load-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;width:100%;padding:18px 16px;box-sizing:border-box;color:var(--muted)}
#loadingScreen.native-city-load .loader{width:72px;height:72px;border:6px solid var(--line);border-top-color:#0077FF;box-sizing:border-box;border-radius:50%;flex:none;animation:spin 1s linear infinite}
#loadingScreen.native-city-load #loadingText{margin:0;font-size:16px;line-height:24px;text-align:center}
#loadingScreen .native-city-load-actions{padding:0 16px;flex:none}
#loadingScreen .native-city-load-actions button{height:56px;width:100%;border:0;border-radius:16px;background:#0077FF;color:#fff;font-size:14px;font-weight:700;cursor:pointer}
#loadingScreen .native-load-percent{font-size:57px;line-height:64px;color:var(--text)}
#loadingScreen .native-load-track{height:4px;width:100%;overflow:hidden;border-radius:2px;background:var(--line)}
#loadingScreen .native-load-track span{display:block;height:100%;background:#0077FF}
#loadingScreen .native-load-sizes{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;font-size:12px;line-height:16px}
#loadingScreen .native-load-sizes #loadingText{font-size:12px;line-height:16px}

/* StackedRouteCard uses FeedbackRatingDisplay's default22dp, spacing2dp. */
html .android-route-card.native-stacked .feedback-star{width:22px;height:22px}
html .android-route-card.native-stacked .feedback-stars{gap:2px}
html .android-route-card.native-stacked .feedback-rating-explain{min-height:22px}

.gps-route-scroll [data-gps-route]{position:relative}.gps-direction-filter-dot{position:absolute;top:8px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--brand,#0D2957);pointer-events:none}

/* CommunityFeedbackExplanation.kt: shared headlineSmall28/32 Bold. */
html .feedback-dialog:has(.feedback-legend-row) h2{font-size:28px;line-height:32px;font-weight:700}

/* SettingSectionHeader/GpsSettingSectionHeader use a text action. */
.android-settings-exact .android-settings-reset{width:auto;min-width:48px;height:40px;padding:0;margin:0;font-size:14px;line-height:20px;font-weight:500;border-radius:20px}

/* r33: bounded application window and Android-owned navigation insets. */
:root{--native-frame-width:min(768px,100vw);--native-frame-left:max(0px,calc((100vw - 768px)/2));--native-device-pixel-ratio:1;--native-top-ads-height:0px;--native-navigation-inset:calc(var(--bottom-row-height) + var(--safe-bottom));--navigation-content-inset:var(--native-navigation-inset)}
#app{width:min(768px,100%);max-width:768px;margin-inline:auto}
#bottomNav{left:var(--native-frame-left);width:var(--native-frame-width);transform:none}
#drawerLayer{left:var(--native-frame-left);width:var(--native-frame-width);transform:none}
#initialCityScreen .native-setup-shell{width:100%;max-width:none}
#initialCityScreen .native-city-option{min-height:100px;border:0;outline:1px solid color-mix(in srgb,var(--line) 18%,transparent);outline-offset:-1px}
#initialCityScreen .native-city-option.selected{padding:14px 16px;outline-width:1.5px;outline-color:var(--brand)}
#settingsContent.native-city-picker-mode{height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--native-top-ads-height))}
#settingsContent.native-city-picker-mode .native-city-picker{max-width:none;padding-bottom:calc(14px + var(--native-navigation-inset))}
dialog.passenger-upload{width:var(--native-frame-width);max-width:var(--native-frame-width);left:0;right:0;margin:0 auto}
#gpsRoutesDialog,#gpsDirectionsDialog{left:var(--native-frame-left);right:auto;width:var(--native-frame-width);top:calc(var(--topbar-height) + var(--safe-top) + var(--native-top-ads-height));height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--native-top-ads-height))}
#advertisingDialog{max-width:var(--native-frame-width);width:min(768px,calc(100% - 16px))}
.toast{max-width:min(736px,calc(100% - 32px))}
#main{padding-bottom:var(--native-navigation-inset)}
#main:has(>#planningScreen:not(.hidden),>#gpsScreen:not(.hidden),>#nearbyScreen:not(.hidden),>#settingsScreen:not(.hidden) #settingsContent.native-city-picker-mode){padding-bottom:0}
#infoScreen{padding-bottom:calc(16px + var(--native-navigation-inset))}
#donateScreen.native-donate-screen{padding-bottom:calc(32px + var(--native-navigation-inset))}

/* RibbonBottomBarItem: icon box34, followed by a one-line label13/11. */
#bottomNav button{font-weight:500}
#bottomNav button>small{font-weight:500}
html[data-bottom-style=glass] #bottomNav{left:calc(var(--native-frame-left) + 14px);width:calc(var(--native-frame-width) - 28px);bottom:calc(16px + var(--safe-bottom));height:64px;padding:8px 10px;border-radius:32px}
html[data-bottom-style=glass] #bottomNav button{padding:0 3px;gap:4px}
html[data-bottom-style=glass] #bottomNav button>.native-nav-icon{width:24px;height:24px;border-radius:0}
html[data-bottom-style=glass] #bottomNav button>.native-nav-icon svg{width:24px;height:24px}
html[data-bottom-style=glass] #bottomNav button>small{font-size:11px;line-height:15px;height:15px;white-space:normal;font-weight:400}

/* GlobalTopAds/GlobalAdCard:3 physical px outside, square crop and no capsule. */
#advertisingSlot{position:sticky;top:calc(var(--topbar-height) + var(--safe-top));z-index:29;padding:calc(3px / var(--native-device-pixel-ratio));background:var(--bg);--native-ad-title-height:calc(40px * var(--app-font-scale));--native-ad-description-height:0px;--native-ad-copy-gap:0px}
#advertisingSlot:has(.advertising-summary){--native-ad-description-height:32px;--native-ad-copy-gap:1px}
#advertisingSlot .advertising-banner{position:relative;display:block;border:0;border-radius:0;box-shadow:none;background:var(--surface)}
#advertisingSlot .advertising-open{width:100%;min-height:0;padding:0;gap:6px;border-radius:0}
#advertisingSlot .advertising-thumbnail{--native-ad-photo-size:min(max(72px,calc(var(--native-ad-title-height) + var(--native-ad-description-height) + 6px + var(--native-ad-copy-gap))),calc((var(--native-frame-width) - 6px / var(--native-device-pixel-ratio)) * .4));width:var(--native-ad-photo-size);height:var(--native-ad-photo-size);border-radius:0;object-fit:cover;background:var(--surface2)}
#advertisingSlot .advertising-copy{display:flex;flex-direction:column;gap:1px;padding:3px 48px 3px 0;min-width:0}
#advertisingSlot .advertising-without-image .advertising-copy,#advertisingSlot .advertising-open:not(:has(.advertising-thumbnail)) .advertising-copy{padding-left:5px}
#advertisingSlot .advertising-label,#advertisingSlot .advertising-more{display:none}
#advertisingSlot .advertising-title{font-size:calc(14px * var(--app-font-scale));line-height:calc(20px * var(--app-font-scale));font-weight:600;letter-spacing:calc(.2px * var(--app-font-scale));-webkit-line-clamp:2}
#advertisingSlot .advertising-summary{font-size:12px;line-height:16px;font-weight:400;letter-spacing:.4px;-webkit-line-clamp:2}
#advertisingSlot .advertising-dismiss{position:absolute;top:0;right:0;margin:0;width:48px;height:48px;padding:0;border:0;border-radius:0;background:transparent;color:#fff;font-size:0;box-shadow:none}
#advertisingSlot .advertising-dismiss::before{content:'';position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:#E53935}
#advertisingSlot .advertising-dismiss svg{position:absolute;top:6px;right:6px;width:12px;height:12px;fill:#fff}

/* MapScreenSection/GpsLegacyScreen reserve floatingNavigationInset for controls. */
#app #planningScreen,#app #gpsScreen,#app #nearbyScreen{height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--native-top-ads-height))}
#planningScreen,#gpsScreen{--native-sheet-usable-height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--native-top-ads-height) - var(--native-navigation-inset))}
#planningMap .map-zoom,#map .map-zoom{left:auto;right:12px;top:auto;bottom:calc(18px + var(--native-navigation-inset));width:50px;gap:0;border:0;border-radius:24px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--line) 18%,transparent);overflow:hidden}
#planningMap .map-zoom button,#map .map-zoom button{width:50px;height:50px;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;color:#586171;font-size:28px;font-weight:300;line-height:1}
#planningMap .map-zoom button+button,#map .map-zoom button+button{height:51px;padding-top:1px;border-top:1px solid color-mix(in srgb,var(--line) 16%,transparent)}
#planningMap .map-locate{right:12px;bottom:calc(129px + var(--native-navigation-inset));width:50px;height:50px;padding:14px;border:1px solid color-mix(in srgb,var(--line) 18%,transparent);border-radius:18px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:none;color:#586171}
#planningMap .map-locate svg{width:22px;height:22px}
html[data-theme=dark] :is(#planningMap,#map) .map-zoom,html[data-theme=dark] #planningMap .map-locate{border-color:color-mix(in srgb,var(--line) 42%,transparent)}
html[data-theme=dark] :is(#planningMap,#map) .map-zoom button,html[data-theme=dark] #planningMap .map-locate{color:var(--text)}
#planningSheetBody{padding-bottom:calc(8px + var(--native-navigation-inset))}
#planningSheet,#nearbySheet.native-map-nearby{height:min(calc(100% - 74px),calc(var(--native-sheet-collapsed-height) + var(--native-navigation-inset)))}
#planningSheet.native-sheet-expanded,#nearbySheet.native-map-nearby.native-sheet-expanded{height:calc(100% - 74px)}

/* Provider SDK retains its own gestures, logos and copyright below transit overlays. */
.map-provider-base{position:absolute;inset:0;z-index:0;overflow:hidden}
.sdk-map-active .map-overlay{z-index:2;pointer-events:none!important}
.sdk-map-active :is(.map-zoom,.map-locate){z-index:4}
.map-provider-base .ymaps-2-1-79-map-copyrights-promo,.map-provider-base .ymaps-2-1-79-copyrights-pane,.map-provider-base .gm-style-cc{margin-bottom:var(--native-navigation-inset)}
.map-provider-base .gm-style a:has(img[alt="Google"]){display:inline-block!important;transform:translateY(calc(-1 * var(--native-navigation-inset)))}

/* Android172 PromoPushScreen: full application window; source aspect is preserved. */
#advertisingSlot .advertising-banner{min-height:48px}
#advertisingSlot .advertising-without-title{--native-ad-title-height:0px;--native-ad-copy-gap:0px}
#advertisingDialog.native-advertising-page{position:fixed;inset:0;width:var(--native-frame-width);max-width:var(--native-frame-width);height:100dvh;max-height:100dvh;margin:0 auto;border:0;border-radius:0;background:var(--bg);color:var(--text);box-shadow:none;overflow:hidden}
#advertisingDialog.native-advertising-page::backdrop{background:transparent;backdrop-filter:none}
#advertisingDialog.native-advertising-page .advertising-dialog-panel{width:100%;height:100%;max-height:100%;min-height:0;background:linear-gradient(to bottom,color-mix(in srgb,var(--brand) 8%,var(--bg)),var(--bg))}
#advertisingDialog.native-advertising-page .advertising-dialog-header{height:calc(64px + var(--safe-top));min-height:calc(64px + var(--safe-top));padding:var(--safe-top) 4px 0 16px;gap:0;align-items:center;border:0;background:var(--surface);box-shadow:0 1px 2px #00000024}
#advertisingDialog.native-advertising-page .advertising-page-title{flex:1;min-width:0;margin:0;font-size:calc(22px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale));font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#advertisingDialog.native-advertising-page .advertising-dialog-close{width:48px;height:48px;margin:0;padding:12px;border:0;border-radius:50%;background:transparent;color:var(--text)}
#advertisingDialog.native-advertising-page .advertising-dialog-close svg{width:24px;height:24px}
#advertisingDialog.native-advertising-page .advertising-dialog-body{width:min(760px,100%);max-width:760px;align-self:center;flex:1;min-height:0;padding:20px 20px calc(20px + var(--safe-bottom));display:flex;flex-direction:column;gap:20px;overflow:auto;overscroll-behavior:contain}
#advertisingDialog.native-advertising-page .advertising-dialog-body>*{flex:none}
#advertisingDialog.native-advertising-page .advertising-image-frame{position:static;margin:0;padding:0;border:0;border-radius:24px;aspect-ratio:var(--native-ad-image-aspect,1.5);overflow:hidden;background:#F3EDF7}
#advertisingDialog.native-advertising-page .advertising-image-frame[hidden]{display:none}
#advertisingDialog.native-advertising-page .advertising-image{width:100%;height:100%;max-height:none;object-fit:contain}
#advertisingDialog.native-advertising-page .advertising-content{display:flex;flex-direction:column;gap:16px;user-select:text}
#advertisingDialog.native-advertising-page #advertisingTitle{margin:0;font-size:calc(24px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale));font-weight:700;letter-spacing:0;overflow-wrap:anywhere}
#advertisingDialog.native-advertising-page .advertising-description{margin:0;color:var(--muted);font-size:calc(16px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale));font-weight:400;letter-spacing:calc(.2px * var(--app-font-scale));white-space:pre-wrap;overflow-wrap:anywhere}
#advertisingDialog.native-advertising-page .advertising-contacts-title{margin:0;font-size:calc(18px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale));font-weight:600;letter-spacing:.15px}
#advertisingDialog.native-advertising-page .advertising-contacts{display:grid;gap:20px;margin:0;padding:0;list-style:none}
#advertisingDialog.native-advertising-page .advertising-contact{display:flex;gap:16px;padding:18px;min-height:0;border:0;border-radius:18px;background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000024;text-decoration:none}
#advertisingDialog.native-advertising-page .advertising-contact>svg{width:24px;height:24px;flex:none;color:var(--brand)}
#advertisingDialog.native-advertising-page .advertising-contact-copy{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;font-size:calc(14px * var(--app-font-scale));line-height:calc(20px * var(--app-font-scale))}
#advertisingDialog.native-advertising-page .advertising-contact-copy strong{font-size:14px;line-height:20px;font-weight:600;letter-spacing:.1px}
#advertisingDialog.native-advertising-page .advertising-contact-copy>span{font-size:calc(14px * var(--app-font-scale));line-height:calc(20px * var(--app-font-scale));font-weight:400;letter-spacing:calc(.2px * var(--app-font-scale));color:var(--muted)}
html[data-theme=dark] #advertisingDialog.native-advertising-page .advertising-image-frame{background:#211F26}

/* Android172 SettingsNavigationPages/SettingsSubpageHeader: headlineMedium 24/28 SemiBold. */
#settingsContent.android-settings-exact :is(.android-settings-title,.android-settings-subpage h2){font-size:24px;line-height:28px;font-weight:600}
/* SettingsThemePage.kt:60–95: BrightnessMedium in the native 40dp rounded12 leading box. */
#settingsContent.android-settings-exact .android-warm-dark-setting{border-radius:18px;background:color-mix(in srgb,var(--settings-variant) 28%,transparent);padding:12px 14px;gap:12px}
#settingsContent.android-settings-exact .android-warm-dark-setting>.android-settings-switch-icon{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border-radius:12px;background:var(--settings-secondary);color:var(--settings-on-secondary);font-style:normal}
#settingsContent.android-settings-exact .android-warm-dark-setting>.android-settings-switch-icon svg{width:24px;height:24px;fill:currentColor}
#settingsContent.android-settings-exact .android-warm-dark-setting>span{gap:0}
#settingsContent.android-settings-exact .android-warm-dark-setting small{margin:0}

/* SettingsAdsSettingsPage.kt:54 / NearbyChoiceChip.kt:23: horizontal native choice row only. */
#settingsContent.android-settings-exact .android-settings-options.android-ad-intervals{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:8px;min-width:0;width:100%;overscroll-behavior-x:contain}
#settingsContent.android-settings-exact .android-ad-intervals>button{flex:0 0 auto;min-height:0;padding:10px 18px;border:0;border-radius:999px;background:color-mix(in srgb,var(--settings-variant) 40%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--settings-outline) 20%,transparent);color:var(--settings-text);font-size:16px;line-height:24px;font-weight:400;letter-spacing:.2px;white-space:nowrap}
#settingsContent.android-settings-exact .android-ad-intervals>button b{font:inherit}
#settingsContent.android-settings-exact .android-ad-intervals>button.active{background:#FFA400;color:#fff;box-shadow:none}
:root[data-theme=dark] #settingsContent.android-settings-exact .android-ad-intervals>button.active{background:#B87400}

/* Installed PWA: one stable viewport; only its content scrolls below native chrome. */
html.installed-app,html.installed-app body{height:100%;overflow:hidden;overscroll-behavior:none;background:#0D2957}
html.installed-app body{position:fixed;inset:0}
html.installed-app #app{height:100%;height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
html.installed-app .topbar{position:relative;top:auto;flex:none;background:#0D2957;backdrop-filter:none;-webkit-backdrop-filter:none}
html.installed-app #advertisingSlot{position:relative;top:auto;flex:none}
html.installed-app #main{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch}
html.installed-app #app :is(#planningScreen,#gpsScreen,#nearbyScreen){height:100%;min-height:0}
html.installed-app #settingsScreen:has(.native-city-picker-mode){height:100%;padding:0}
html.installed-app #settingsContent.native-city-picker-mode{height:100%}
/* Main already reserves the actual navigation geometry, including the home indicator. */
#app #infoScreen{padding-bottom:16px}
#app #donateScreen.native-donate-screen{padding-bottom:32px}
/* A full five-star strip and its 24px touch row must keep their intrinsic height. */
#app .arrival-trip-badge{flex-shrink:0;min-width:88px}
#app .arrival-trip-badge>*{flex-shrink:0}
#app .arrival-trip-rating{flex:none;min-height:24px}
#app .arrival-trip-rating .feedback-rating-explain{border:0;margin:0;padding:0;min-width:74px;min-height:24px;justify-content:center}
#app .arrival-trip-rating .feedback-stars{flex:none;gap:1px}
#app .arrival-trip-rating .feedback-star{flex:none;width:14px;height:14px}
#app :is(#nearbyResults,#planningResults){grid-auto-rows:max-content;align-content:start}
#app .nearby-arrival,#app .planning-result{flex-shrink:0;min-height:80px;height:auto}

/* Installed iOS owns one inset-constrained surface, rather than a dvh-sized
   child inside another fixed viewport. Safe-area space belongs to chrome once. */
:root{--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--native-frame-width:min(768px,calc(100vw - var(--safe-left) - var(--safe-right)));--native-frame-left:calc(var(--safe-left) + max(0px,calc((100vw - var(--safe-left) - var(--safe-right) - 768px)/2)))}
html.installed-app,html.installed-app body{min-height:0;background:var(--bg)}
html.installed-app body{height:auto;position:fixed;inset:0}
html.installed-app #app{position:absolute;inset:0 var(--safe-right) 0 var(--safe-left);width:var(--native-frame-width);height:auto;min-height:0;margin:0 auto}
html.installed-app[data-bottom-style=ribbon] #bottomNav{position:absolute;left:0;bottom:0;width:100%}
html.installed-app[data-bottom-style=glass] #bottomNav{position:absolute;left:14px;width:calc(100% - 28px);bottom:calc(16px + var(--safe-bottom))}
html.installed-app :is(.legal-consent-screen,.initial-city-screen){position:absolute;left:var(--native-frame-left);right:auto;width:var(--native-frame-width);height:auto;min-height:0;max-height:100%;margin:0}

/* ScreenCommonUi.kt BrandedFullScreenHeader: one 60dp row, 36dp logo,
   titleLarge22/28. SettingsLegalSection.kt bounds its scrollable footer to50%. */
.legal-consent-screen{grid-template-rows:auto minmax(0,1fr) fit-content(50%)}
.legal-brand-header{grid-area:1/1;min-height:calc(60px + var(--safe-top));padding:calc(12px + var(--safe-top)) 16px 12px;gap:10px}
.legal-brand-header img{width:36px;height:36px;flex:none;border-radius:8px}
.legal-brand-header>div{display:none}
.legal-consent-title{grid-area:1/1;align-self:center;min-width:0;margin-left:62px;padding:var(--safe-top) 16px 0 0;text-align:left;z-index:1;pointer-events:none}
.legal-consent-title h1{font-size:22px;line-height:28px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.legal-consent-content{grid-area:2/1;min-height:0;padding-top:10px}
.legal-consent-footer{grid-area:3/1;min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain;padding-bottom:calc(6px + var(--safe-bottom))}
.legal-consent-footer label{font-size:13px;line-height:17px}

/* A short/keyboard viewport must scroll the settings inside the stop card,
   without programmatically moving its overflow:hidden sheet under the bar. */
#nearbySheet>.nearby-stop-card{display:flex;flex-direction:column;min-height:0;max-height:max(68px,calc(100% - var(--native-navigation-inset)))}
#nearbySettings{flex:0 1 auto;min-height:0}

/* DrawerNavRow/DrawerDivider: selected text uses primary; each separator is
   a 4dp dash/4dp gap inside the native 12dp horizontal inset. */
.drawer-items>.android-settings-row,.drawer-scroll>a{position:relative;border-bottom:0;padding-bottom:16px}
.drawer-items>.android-settings-row::after,.drawer-scroll>a::after{content:'';position:absolute;left:12px;right:12px;bottom:0;height:1px;background:repeating-linear-gradient(to right,var(--line) 0 4px,transparent 4px 8px);pointer-events:none}
.drawer-items>.android-settings-row.active{color:var(--brand)}
.drawer-head b,.drawer-head small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Theme.kt/DrawerDivider: outlineVariant; selected warm secondaryContainer. */
.side-drawer{--drawer-outline-variant:#CAC4D0}
html[data-theme=dark] .side-drawer{--drawer-outline-variant:#2A3039}
html.warm-dark[data-theme=dark] .side-drawer{--drawer-outline-variant:#45382D}
.drawer-items>.android-settings-row::after,.drawer-scroll>a::after{background:repeating-linear-gradient(to right,var(--drawer-outline-variant) 0 4px,transparent 4px 8px)}
html.warm-dark[data-theme=dark] .drawer-items>.android-settings-row.active{background:#3D31248C}
/* AppDrawer footer: no extra divider, a 2dp gap, onSurfaceVariant bodySmall. */
.drawer-version,html[data-theme=dark] .drawer-version{display:flex;flex-direction:column;gap:2px;border:0;color:var(--muted)}
.side-drawer .drawer-version small{margin:0;color:color-mix(in srgb,var(--muted) 80%,transparent)}

/* SettingsLegalSection/Material3 Checkbox1.3.0: a 28dp layout target with a
   centered20dp visual box and the native square-cap2dp tick(4,10→8,14→16,6). */
.legal-consent-footer{gap:0;padding:6px 16px calc(6px + var(--safe-bottom))}
.legal-consent-footer label{padding:0;min-height:48px;gap:8px;align-items:center}
.legal-consent-footer input{width:28px;height:28px;min-width:28px;flex:0 0 28px;border:0;border-radius:0;background:transparent;transition:none}
.legal-consent-footer input::before{content:'';position:absolute;inset:4px;width:20px;height:20px;box-sizing:border-box;border:2px solid #7E8792;border-radius:2px;background:transparent}
.legal-consent-footer input::after{content:none}
.legal-consent-footer input:checked{border:0;background:transparent}
.legal-consent-footer input:checked::before{border-color:#2D8FFF;background:#2D8FFF}
.legal-consent-footer input:checked::after{content:'';position:absolute;inset:4px;width:20px;height:20px;border:0;border-radius:0;transform:none;box-shadow:none;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10L8 14L16 6' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='square'/%3E%3C/svg%3E") center/20px 20px no-repeat;transition:none}

/* RuStore172 reachable route/settings parity: A36/route-settings-findings.md. */
/* Retire the older generic ::after thumb; appSwitchColors owns the single ::before. */
html #settingsContent.android-settings-exact .android-settings-switch input[role="switch"]::after{content:none;display:none}
/* RouteCardStyleOption uses a fixed136dp FlowRow item, at most two per row. */
html #settingsContent.android-settings-exact .native-route-style-options{display:flex;flex-wrap:wrap;gap:8px;max-width:280px;align-items:flex-start}
html #settingsContent.android-settings-exact .native-route-style-options>button{box-sizing:border-box;flex:0 0 136px;width:136px;min-width:136px;min-height:52px;justify-content:flex-start;gap:10px;padding:10px 12px;border:0;border-radius:16px;background:color-mix(in srgb,var(--settings-variant) 18%,transparent);color:var(--settings-text);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.2px}
html #settingsContent.android-settings-exact .native-route-style-options>button.active{background:color-mix(in srgb,var(--settings-secondary) 45%,transparent);color:var(--settings-text)}
html #settingsContent.android-settings-exact .native-route-style-options>button>i{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:10px;background:color-mix(in srgb,var(--route-style-accent) 18%,transparent)}
html #settingsContent.android-settings-exact .native-route-style-options>button>i>i{width:16px;height:16px;border-radius:5px;background:var(--route-style-accent)}
html #settingsContent.android-settings-exact .native-route-style-options>button>span{flex:1;min-width:0;text-align:left;overflow-wrap:anywhere}
html #settingsContent.android-settings-exact .native-route-style-options .native-route-style-check{font-size:16px;line-height:24px;font-weight:700;color:var(--settings-primary)}
html #settingsContent.android-settings-exact .android-settings-route-preview{margin-left:-16px;margin-right:-16px}
html #settingsContent.android-settings-exact:has(.native-route-style-options)>.android-settings-list>h3{font-size:28px;line-height:32px;font-weight:700}
html #settingsContent.android-settings-exact:has(.native-route-style-options)>.android-settings-list>.android-settings-info{font-size:14px;line-height:20px;letter-spacing:.2px}
/* SettingsDataLoadingPage/DataSetupSelectorCard; the browser retains its factual COM source caption. */
html #settingsContent.android-settings-exact.native-data-source-page{padding:12px 18px 16px}
html #settingsContent.android-settings-exact .native-data-source-section{display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:24px;background:var(--settings-surface)}
html #settingsContent.android-settings-exact .native-data-source-section>h3{font-size:22px;line-height:28px;font-weight:600}
html #settingsContent.android-settings-exact .native-data-source-section>.android-settings-info{font-size:14px;line-height:20px;letter-spacing:.2px}
html #settingsContent.android-settings-exact .native-data-source-selector{box-sizing:border-box;display:flex;align-items:center;width:100%;gap:14px;padding:14px 16px;border:0;outline:1px solid color-mix(in srgb,var(--settings-outline) 10%,transparent);outline-offset:-1px;border-radius:22px;background:color-mix(in srgb,var(--settings-variant) 32%,transparent);color:var(--settings-text);text-align:left;cursor:pointer}
html #settingsContent.android-settings-exact .native-data-source-selector>i{display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;border-radius:16px;background:color-mix(in srgb,#0D2957 12%,transparent);color:#0D2957}
html #settingsContent.android-settings-exact .native-data-source-selector svg{width:24px;height:24px;flex:0 0 24px}
html #settingsContent.android-settings-exact .native-data-source-selector>span{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px;overflow-wrap:anywhere}
html #settingsContent.android-settings-exact .native-data-source-selector b{font-size:18px;line-height:24px;font-weight:600}
html #settingsContent.android-settings-exact .native-data-source-selector small{font-size:12px;line-height:16px;font-weight:400;color:var(--settings-muted)}
html #settingsContent.android-settings-exact .native-data-source-selector small.native-data-source-label{font-size:14px;line-height:18px;font-weight:500}
html #settingsContent.android-settings-exact .native-data-source-selector>svg{color:var(--settings-muted)}
html[data-theme=dark] #settingsContent.android-settings-exact .native-data-source-selector>i{background:#162544;color:#6FA8FF}
html[data-theme=dark] #settingsContent.android-settings-exact .native-data-source-selector>svg{color:#B7C7E6}
/* Minimal's side badge alone uses90% opacity; stacked RouteIdentityText is opaque. */
html[data-route-style=minimal] .android-route-card:not(.native-stacked) .native-route-identity>:is(b,small){opacity:.9}
html[data-route-style=accent]:not([data-theme=dark]) .native-route-distances{color:#4B5563}
html[data-route-style=banner]:not([data-theme=dark]) .native-route-distances{color:#526071}
/* RouteSideCard/HeaderRouteCard/RailRouteCard allocate favorite gaps explicitly. */
html[data-route-style=classic] .android-route-card:not(.native-stacked) .android-route-trailing{flex-basis:calc(var(--native-favorite-size,60px) + 12px);padding-left:4px;padding-right:8px}
html[data-route-style=accent] .android-route-card:not(.native-stacked) .android-route-main{grid-template-columns:minmax(0,1fr) calc(var(--native-favorite-size,60px) + 20px)}
html[data-route-style=accent] .android-route-card:not(.native-stacked) .android-route-trailing{padding-left:10px;padding-right:10px}
html[data-route-style=banner] .android-route-card:not(.native-stacked) .android-route-main{grid-template-columns:minmax(0,1fr) calc(var(--native-favorite-size,60px) + 26px)}
html[data-route-style=banner] .android-route-card:not(.native-stacked) .android-route-trailing{padding-left:12px;padding-right:14px}
html[data-route-style=rail] .android-route-card:not(.native-stacked) .android-route-trailing{flex-basis:calc(var(--native-favorite-size,48px) + 20px);padding-left:10px;padding-right:10px}
html[data-route-style=soft] .android-route-card .android-route-terminals>div:nth-child(-n+2){gap:10px}
/* RouteHeader: status top6dp; header identity44/46dp, Banner10dp top/bottom. */
html[data-route-style=accent] .android-route-card:not(.native-stacked) .android-route-transport,
html[data-route-style=soft] .android-route-card:not(.native-stacked) .android-route-transport,
html[data-route-style=banner] .android-route-card:not(.native-stacked) .android-route-transport{padding-top:6px}
html[data-route-style=accent] .android-route-card:not(.native-stacked) .route-movement-status,
html[data-route-style=soft] .android-route-card:not(.native-stacked) .route-movement-status,
html[data-route-style=banner] .android-route-card:not(.native-stacked) .route-movement-status{margin-bottom:0}
html[data-route-style=accent] .android-route-card:not(.native-stacked) .native-route-identity{gap:0}
html[data-route-style=soft] .android-route-card:not(.native-stacked) .native-route-identity{box-sizing:border-box;padding-left:4px}
html[data-route-style=banner] .android-route-card:not(.native-stacked) .native-route-identity{padding-top:10px;padding-bottom:10px}
/* StackedRouteCard: a colored identity/rating header, full-width directions, then favorite row. */
html[data-route-style] .android-route-card.native-stacked{display:grid;grid-template-columns:minmax(0,1fr);min-height:0;margin:4px 6px;border-radius:18px;padding:0}
html[data-route-style=minimal] .android-route-card.native-stacked,
html[data-route-style=rail] .android-route-card.native-stacked{border-radius:12px}
html[data-route-style=rail] .android-route-card.native-stacked{margin-top:2px;margin-bottom:2px}
html[data-route-style] .android-route-card.native-stacked .android-route-main{display:contents;min-height:0}
html[data-route-style] .android-route-card.native-stacked .android-route-transport{grid-row:1;grid-column:1;display:flex;flex-direction:column;width:auto;min-width:0;min-height:0;padding:8px 12px;gap:0}
html[data-route-style] .android-route-card.native-stacked .native-route-identity{display:flex;flex-direction:column;align-items:center;min-height:0;gap:0;padding:0}
html[data-route-style] .android-route-card.native-stacked .native-route-identity>:is(b,strong,small){width:100%;min-width:0;flex:none;margin:0;text-align:center;opacity:1}
html[data-route-style] .android-route-card.native-stacked .native-soft-identity>:is(b,small){width:100%;text-align:center;opacity:1}
html[data-route-style] .android-route-card.native-stacked>.feedback-card-rating{grid-column:1;grid-row:2;background:var(--route-color)!important;color:#fff;border:0;margin:0!important;padding:4px 12px 8px!important;min-height:0}
html[data-route-style] .android-route-card.native-stacked:has(>.feedback-card-rating) .android-route-transport{padding-bottom:0}
html[data-route-style] .android-route-card.native-stacked .android-route-terminals{grid-column:1;grid-row:3;align-self:auto;justify-content:start;width:auto;min-height:0;padding:12px 12px 0;gap:8px}
html[data-route-style] .android-route-card.native-stacked .android-route-trailing{grid-column:1;grid-row:4;display:flex;justify-content:flex-end;align-self:auto;width:auto;min-height:0;padding:0 12px 12px;transform:none;flex-basis:auto}
html[data-route-style] .android-route-card.native-stacked .android-route-heart{color:#64748B}
html[data-theme=dark][data-route-style] .android-route-card.native-stacked .android-route-heart{color:#94A3B8}
html[data-route-style] .android-route-card.native-stacked .android-route-heart.active{color:#E53935}
html[data-route-style=rail] .android-route-card.native-stacked .android-route-transport{padding:4px 12px}
html[data-route-style=rail] .android-route-card.native-stacked .android-route-terminals{padding:8px 8px 0;gap:4px}
html[data-route-style=rail] .android-route-card.native-stacked .android-route-trailing{padding:0 8px 8px}
/* Rail's two slots share the tallest wrapped direction, not unequal flex heights. */
html[data-route-style=rail] .android-route-card .android-route-terminals{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:1fr;align-content:center;align-items:center}
html[data-route-style=rail] .android-route-card .android-route-terminals>div{min-width:0;align-self:center}

/* ReminderSettingsContent.kt fixed selection color; weekday palette stays independent. */
.reminder-status.enabled{color:#0D2957}
.reminder-leads button[aria-pressed=true],.reminder-times button[aria-pressed=true]{background:#0D2957;border-color:#0D2957;color:#fff}
.reminder-channel-warning,.native-reminder-channel-warning{margin:0;color:var(--muted);font-size:12px;line-height:16px}
/* Preserve the existing scaled native switch; expose ownership-disabled and keyboard state. */
.reminder-switch input:disabled{opacity:.38;cursor:default}
.reminder-switch input:focus-visible{outline:3px solid #64B5F6;outline-offset:3px}
/* ScheduleDetailComposeComponents.kt:960, fixed generator action color. */
.generator-actions .passenger-primary{background:#173A78;color:#fff}
/* Keep the scrollable dialog inside the usable viewport, including iPhone home area. */
.passenger-generator{bottom:var(--safe-bottom,0px);max-height:calc(100dvh - 32px - var(--safe-bottom,0px))}
.generator-actions{flex-wrap:wrap}
.generator-clock input{height:auto;min-height:56px}
.generator-clock:not(.generator-clock-tour) span{top:0;transform:translateY(-50%)}
.upload-content>h3{overflow-wrap:anywhere}

/* Android GpsLegacyScreenSection1415–1420/1553–1557 centers the route
   panel in content with the floating navigation inset removed. */
#gpsScreen .gps-route-rail{
  top:calc((100% - var(--native-navigation-inset))/2);
  max-height:min(430px,calc(100% - var(--native-navigation-inset) - 8px));
}
/* A short browser viewport cannot fit both native right-hand groups in one
   column. This is an explicit web reachability adaptation, not a claim that
   Android uses this compact arrangement. Preserve both controls and scrolling. */
@media(max-height:500px){
  #gpsScreen .gps-route-rail{right:76px}
}
/* The offline Canvas attribution has the same protected navigation inset
   already applied to Google/Yandex attribution in the existing stylesheet. */
:is(#map,#planningMap)>.map-attribution{bottom:calc(3px + var(--native-navigation-inset))}

/* Followup to the integrated route-settings.patch.css. */
html[data-route-style] .android-route-card.native-stacked .android-route-trailing{justify-self:stretch}
/* StackedRouteCard centers its rating inside the centered identity Column. */
html[data-route-style] .android-route-card.native-stacked .feedback-rating{justify-content:center}
html[data-route-style] .android-route-card.native-stacked .android-route-transport>.route-movement-status{margin-bottom:2px}
/* XML editor handles are text18sp Bold:48dp drawer/bottom,38dp route. */
html #settingsContent.android-settings-exact .android-drag-handle{width:48px;height:48px;flex-basis:48px;font-size:18px;line-height:24px;font-weight:700;color:#5A6F8D}
html[data-theme=dark] #settingsContent.android-settings-exact .android-drag-handle{color:#AFC0D8}
html #settingsContent.android-settings-exact .android-route-order .android-drag-handle{width:38px;height:38px;flex-basis:38px}
html #settingsContent.android-settings-exact .android-drag-handle:disabled{opacity:.45;cursor:default}

/* SettingsSubpageHeader/SettingSectionHeader weighted labels retain wrapping at large text sizes. */
html #settingsContent.android-settings-exact .android-settings-subpage>span{flex:1;min-width:0;overflow-wrap:anywhere}
html #settingsContent.android-settings-exact .android-settings-section>header{gap:0}
html #settingsContent.android-settings-exact .android-settings-section>header>h3{flex:1;min-width:0;overflow-wrap:anywhere}
/* Material3 1.3.0 ButtonDefaults.MinWidth58.dp/MinHeight40.dp; native zero contentPadding. */
html #settingsContent.android-settings-exact .android-settings-reset{flex:0 0 auto;min-width:58px;min-height:40px;height:auto;overflow-wrap:anywhere}

/* Long switch labels wrap only when their content cannot fit. */
html #settingsContent.android-settings-exact .android-settings-switch>span{overflow-wrap:anywhere}

/* Use the same safe-area contract as the installed frame; native setup keeps 14dp below its action. */
#initialCityScreen .native-setup-shell{padding-bottom:calc(14px + var(--safe-bottom))}
#initialCityScreen .native-setup-header{min-height:calc(60px + var(--safe-top))!important;padding-top:calc(12px + var(--safe-top))}

/* A long HEX value may shrink and wrap only when its color button cannot fit the text. */
html #settingsContent.android-settings-exact .android-color-row button>strong{min-width:0;overflow-wrap:anywhere}

/* styles.css precedes immutable android-schedule.v1.css in the real shell.
   The html scope wins matching native-component selectors without !important. */
html .reminder-status.enabled{color:#0D2957}
html .reminder-leads button[aria-pressed=true],html .reminder-times button[aria-pressed=true]{background:#0D2957;border-color:#0D2957;color:#fff}
html .reminder-channel-warning,html .native-reminder-channel-warning{margin:0;color:var(--muted);font-size:12px;line-height:16px}
html .reminder-switch input:disabled{opacity:.38;cursor:default}
html .reminder-switch input:focus-visible{outline:3px solid #64B5F6;outline-offset:3px}
html .generator-actions .passenger-primary{background:#173A78;color:#fff}
html .passenger-generator{bottom:var(--safe-bottom,0px);max-height:calc(100dvh - 32px - var(--safe-bottom,0px))}
html .generator-actions{flex-wrap:wrap}
html .generator-clock input{height:auto;min-height:56px}
html .generator-clock:not(.generator-clock-tour) span{top:0;transform:translateY(-50%)}
html .upload-content>h3{overflow-wrap:anywhere}

/* A37 PrivacyConsentScreen/LegalDocumentInline/ScheduleInformationSources;
   Type.kt custom18/24,14/20,22/28; Material3 1.3.0 default container tokens. */
html #legalConsentScreen{--legal-primary-container:#EADDFF;--legal-on-primary-container:#21005D;--legal-outline-variant:#CAC4D0}
html[data-theme=dark] #legalConsentScreen{--legal-primary-container:#4F378B;--legal-on-primary-container:#EADDFF;--legal-outline-variant:#2A3039}
html.warm-dark[data-theme=dark] #legalConsentScreen{--legal-outline-variant:#45382D}
html #legalConsentScreen .legal-consent-content{padding:10px 16px;display:flex;flex-direction:column;gap:12px}
html #legalConsentScreen .legal-consent-content>*{flex:none;margin:0}
html #legalConsentScreen .legal-status-card{padding:12px;display:flex;flex-direction:column;gap:6px;border:0;border-radius:18px;background:rgba(216,59,59,.10)}
html[data-theme=dark] #legalConsentScreen .legal-status-card{background:rgba(216,59,59,.22)}
html #legalConsentScreen :is(.legal-status-card h2,.legal-official-sources h2,.legal-document h3){margin:0;font-size:calc(18px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale));font-weight:600;color:var(--text)}
html #legalConsentScreen :is(.legal-status-card p,.legal-official-sources p,.legal-document p){margin:0;font-size:calc(14px * var(--app-font-scale));line-height:calc(20px * var(--app-font-scale));letter-spacing:calc(.2px * var(--app-font-scale));font-weight:400;color:var(--text)}
html #legalConsentScreen .legal-official-sources{display:flex;flex-direction:column;gap:9px}
html #legalConsentScreen .legal-sources-card{border:1px solid var(--legal-outline-variant);background:var(--surface);border-radius:15px}
html #legalConsentScreen .legal-sources-card>a{display:grid;grid-template-columns:28px minmax(0,1fr) 24px;column-gap:9px;row-gap:6px;min-height:58px;padding:9px 12px;color:var(--text)}
html #legalConsentScreen .legal-sources-card span{display:contents}
html #legalConsentScreen .legal-sources-card i{grid-area:1/1;width:28px;height:28px;background:var(--legal-primary-container);color:var(--legal-on-primary-container)}
html #legalConsentScreen .legal-sources-card i svg{width:20px;height:20px;fill:currentColor}
html #legalConsentScreen .legal-sources-card b{grid-area:1/2;font-size:calc(14px * var(--app-font-scale));line-height:calc(20px * var(--app-font-scale));letter-spacing:calc(.2px * var(--app-font-scale));font-weight:600;color:var(--text)}
html #legalConsentScreen .legal-sources-card small{grid-area:2/1/3/4;margin:0;font-size:calc(12px * var(--app-font-scale));line-height:calc(16px * var(--app-font-scale));letter-spacing:calc(.4px * var(--app-font-scale));color:var(--muted);overflow-wrap:anywhere}
html #legalConsentScreen .legal-sources-card em{grid-area:1/3;width:24px;height:24px;display:grid;place-items:center;color:var(--brand)}
html #legalConsentScreen .legal-sources-card em svg{width:24px;height:24px}
html #legalConsentScreen .legal-document{padding:0;border:0;border-radius:0;background:transparent;display:flex;flex-direction:column;gap:10px}
html #legalConsentScreen .legal-document h2{margin:0;font-size:calc(22px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale));font-weight:600;color:var(--text)}
html #legalConsentScreen .legal-document .legal-summary{color:var(--muted)}
html #legalConsentScreen .legal-document-section{display:flex;flex-direction:column;gap:6px}
html #legalConsentScreen .legal-consent-footer{border:0;box-shadow:none}
html #legalConsentScreen .legal-consent-footer label{font-weight:400}
html #legalConsentScreen .legal-consent-footer button{min-height:48px;height:auto;padding:10px 24px;font-size:calc(14px * var(--app-font-scale));line-height:calc(18px * var(--app-font-scale));font-weight:600;letter-spacing:calc(.1px * var(--app-font-scale));background:#0077FF}
html #legalConsentScreen .legal-consent-footer button:disabled{background:#E5EAF3;color:#64748B}
html[data-theme=dark] #legalConsentScreen .legal-consent-footer button:disabled{background:color-mix(in srgb,var(--surface2) 90%,transparent);color:var(--muted)}
html[data-theme=light] #legalConsentScreen .legal-consent-footer{background:var(--bg)}
html #legalConsentScreen .legal-consent-footer{display:flex;flex-direction:column}
html #legalConsentScreen .legal-consent-footer>*{flex:none;min-width:0}
html #legalConsentScreen .legal-consent-footer label span{min-width:0;overflow-wrap:anywhere}
html[data-theme=light] #legalConsentScreen .legal-status-card h2{color:#111827}
html #legalConsentScreen .legal-consent-footer label{letter-spacing:calc(.2px * var(--app-font-scale))}

html #legalConsentScreen .legal-consent-footer label{font-size:calc(13px * var(--app-font-scale));line-height:calc(17px * var(--app-font-scale))}
html #legalConsentScreen .legal-consent-title h1{font-size:calc(22px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale))}
/* A37 passenger surfaces: custom Type.kt, not stock Material typography. */
html .generator-heading h2{font-size:calc(18px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale))}
html .upload-content:has(>.upload-route-summary)>h3{font-size:calc(18px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale));font-weight:600}
html .upload-route-summary b{font-size:calc(18px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale))}
html .upload-cooldown strong{font-size:calc(24px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale))}
html .upload-cooldown p:first-child{font-size:calc(16px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale))}
/* Native status branches have no action row. Preserve the navigation safe area
   inside the body instead of keeping an empty button footer. */
html .passenger-upload .passenger-actions:empty{display:none}
html .passenger-upload:has(.passenger-actions:empty) .passenger-body{padding-bottom:calc(16px + var(--safe-bottom,0px))}
html .upload-content:has(>.upload-cooldown:only-child),html .upload-content:has(>.passenger-notice:only-child){justify-content:safe center}
html .upload-content>.passenger-notice:only-child{margin:0;padding:24px;background:transparent;border-radius:0;text-align:center;font-size:calc(16px * var(--app-font-scale));line-height:calc(24px * var(--app-font-scale))}
/* TimeChip's selected fill has no border; lead/weekday chip outlines stay intact. */
html .reminder-times button[aria-pressed=true]{border-width:0}
/* AlertDialog uses DialogTokens.HeadlineFont=HeadlineSmall, custom28sp/Bold. */
html .native-donation-message h2{font-size:calc(28px * var(--app-font-scale));line-height:calc(32px * var(--app-font-scale));font-weight:700}

/* A37 reachable MapScreenSection/MapStopSearchOverlay and AppBottomSheetOverlay. */
#planningScreen.planning-search-active #planningMap :is(.map-zoom,.map-locate){visibility:hidden;pointer-events:none}
#planningScreen .map-search-suggestions{height:var(--planning-search-max-height);max-height:none}
#planningScreen .native-map-search-empty{margin:0;padding:18px 14px;text-align:center;font-size:14px;line-height:20px;font-weight:400;color:var(--muted)}
.planning-stop-dialog.native-sheet-expanded{height:calc(100% - 74px)}
.planning-stop-dialog{touch-action:pan-x}
.planning-stop-dialog.native-stop-scrollable{touch-action:auto}
.planning-stop-dialog .native-stop-header{touch-action:pan-x}
:is(#planningScreen,#gpsScreen)>.native-map-sheet-backdrop{position:absolute;z-index:9;inset:0 0 var(--native-navigation-inset);width:100%;height:auto;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:#0000006B;box-shadow:none;touch-action:manipulation}

/* A37: production ScheduleDetailComposeComponents.kt arrows/stop rows/dividers. */
#detailScreen .expanded-head [data-trip-step]{width:42px;height:42px;border:1px solid rgba(255,255,255,.34);border-radius:50%;padding:8px;background:rgba(255,255,255,.12);color:#fff;opacity:1}
#detailScreen .expanded-head [data-trip-step]:disabled{background:rgba(255,255,255,.06);opacity:1;pointer-events:none}
#detailScreen .expanded-head .schedule-trip-arrow{width:24px;height:24px;fill:currentColor}
#detailScreen .expanded-head [data-trip-step]:disabled .schedule-trip-arrow{opacity:.45}
#detailScreen .android-stop-row{column-gap:0}
#detailScreen .android-stop-row>b{margin-left:8px}
#detailScreen .stop-block+.stop-block>.android-stop-row{min-height:49px;padding-top:1px}
#detailScreen .stop-block+.stop-block>.android-stop-row::before{background:repeating-linear-gradient(90deg,#B8C3D2 0 4px,transparent 4px 8px)}
html[data-theme=dark] #detailScreen .stop-block+.stop-block>.android-stop-row::before{background:repeating-linear-gradient(90deg,#475569 0 4px,transparent 4px 8px)}
#detailScreen :is(#routeFeedback,.feedback-trip-panel) .feedback-star{width:22px;height:22px;flex:0 0 22px}
#detailScreen :is(#routeFeedback,.feedback-trip-panel) .feedback-stars{gap:2px}

/* UserScheduleUploadScreen.kt Row padding8,40dp icons, no spacing; title maxLines1+Ellipsis. */
html .passenger-upload .passenger-header{gap:0}
html .passenger-upload .passenger-header h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:calc(22px * var(--app-font-scale));line-height:calc(28px * var(--app-font-scale))}

/* Compact iPhone Ribbon: preserve raw safe areas for legal screens and Glass.
   One backdrop spans the native tab row and the bounded home-indicator band. */
html[data-bottom-style=ribbon]{--ribbon-home-inset:min(var(--safe-bottom),12px);--native-navigation-inset:calc(var(--bottom-row-height) + var(--ribbon-home-inset))}
html[data-bottom-style=ribbon] #bottomNav{height:calc(var(--bottom-row-height) + var(--ribbon-home-inset));padding-bottom:var(--ribbon-home-inset);background:linear-gradient(to bottom,color-mix(in srgb,var(--surface) 68%,transparent),color-mix(in srgb,var(--surface2) 76%,transparent));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
html[data-theme=dark][data-bottom-style=ribbon] #bottomNav{background:linear-gradient(to bottom,color-mix(in srgb,var(--surface) 61%,transparent),color-mix(in srgb,var(--surface2) 72%,transparent))}
html[data-bottom-style=ribbon] #nearbyResults{padding-bottom:calc(8px + var(--native-navigation-inset))}
html[data-bottom-style=ribbon] .native-stop-body{padding-bottom:calc(6px + var(--native-navigation-inset))}
html[data-bottom-style=ribbon] .gps-routes-dialog>form{padding-bottom:calc(6px + var(--native-navigation-inset))}
html[data-bottom-style=ribbon] .gps-direction-content{padding-bottom:calc(18px + var(--native-navigation-inset))}

/* Page gestures never scale the application; maps retain camera gestures. */
html,body{touch-action:pan-x pan-y}
.map,.android-route-map,.android-planning-map,.map-provider-base,.mrpltrans-sdk-map{touch-action:none}

/* Touch and mouse focus is separate from selected state; keyboard focus stays visible. */
html[data-input-modality="pointer"] :is(button,a,[role="button"],input[type="checkbox"],input[type="radio"]):focus {
  outline:none;
}

/* BrandedFullScreenHeader uses white title text in every theme. */
.legal-consent-title{color:#fff}

/* Native launcher: an uninterrupted toolbar-blue surface and centered logo. */
.native-startup-splash,#loadingScreen.native-startup-splash{position:fixed;inset:0;z-index:1100;width:min(768px,100%);margin:0 auto;padding:0;box-sizing:border-box;background:#0D2957;display:grid;grid-template-rows:1fr;place-items:center;isolation:isolate}
#startupSplash{z-index:2000}
.native-startup-logo{display:block;width:min(41vw,176px);height:auto;max-width:41%;aspect-ratio:1;object-fit:contain}
.native-startup-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* FullScreenSourceSetup / SourceServerRow. Unsupported Android radio/background transfer is omitted. */
html #settingsContent.native-source-picker-page{padding:0 18px 14px;height:calc(100dvh - var(--topbar-height) - var(--safe-top) - var(--native-top-ads-height) - var(--native-navigation-inset));min-height:0;display:flex;flex-direction:column;overflow:hidden}
html #settingsContent.native-source-picker-page>.android-settings-subpage{display:none}
html #settingsContent.native-source-picker-page>.android-settings-list{display:flex;flex:1;min-height:0}
.native-source-setup{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;width:100%;margin:0 auto;color:var(--settings-text);overflow:hidden}
.native-source-content{flex:1;padding-top:4px;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain}
.native-source-content>h3{font-size:16px;line-height:24px;font-weight:600;margin:0}
.native-source-file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;min-height:142px;margin:8px 0 18px;padding:12px;border:1px solid color-mix(in srgb,var(--settings-outline) 10%,transparent);border-radius:24px;background:var(--settings-surface);color:var(--settings-text)}
.native-source-file-art{display:grid;place-items:center;width:100%;height:86px;border-radius:20px;background:#F3E8FF}.native-source-file-art>span{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:#fff}html #settingsContent .native-source-file-art svg{width:32px;height:32px;fill:#7C3AED;color:#7C3AED}
.native-source-file>b{font-size:14px;line-height:20px;font-weight:700}
.native-source-servers{display:flex;flex-direction:column;gap:14px;padding:8px 0 24px}
.native-server-option{display:flex;align-items:center;gap:14px;width:100%;min-width:0;min-height:116px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--settings-outline) 10%,transparent);border-radius:22px;background:var(--settings-surface);color:var(--settings-text);text-align:left}
.native-server-option.selected{border-color:color-mix(in srgb,#0D2957 30%,transparent);background:color-mix(in srgb,#0D2957 8%,var(--settings-surface))}
.native-server-option:disabled{opacity:.72}
.native-server-option>img{width:58px;height:58px;object-fit:contain;border-radius:0;flex:none}
.native-server-name{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.native-server-name>b{font-size:16px;line-height:24px;font-weight:600;overflow-wrap:anywhere}
.native-server-state{display:flex;flex-direction:column;align-items:flex-end;align-self:stretch;gap:8px;min-height:72px;flex:none}
.native-server-status{display:flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--settings-variant) 65%,transparent);color:var(--settings-muted);font-size:12px;line-height:16px;font-weight:500;white-space:nowrap}
.native-server-status.unavailable{background:#FFE6E6;color:#DC2626}
.native-server-status .spinner{width:18px;height:18px;margin:4px;border-width:2px}
.native-server-check{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#16A34A;color:#fff}
.native-server-check svg{width:24px;height:24px}
.native-source-footer{display:flex;flex:none;flex-direction:column;gap:0;padding:0}
.native-source-retry{align-self:center;min-height:40px;padding:8px 14px;background:none;border:0;color:var(--accent);font-weight:600}
.native-source-confirm{width:100%;height:56px;min-height:56px;padding:12px;margin:8px 0;border:0;border-radius:16px;background:#0077FF;color:#fff;font-size:14px;line-height:20px;font-weight:700}
.native-source-confirm:disabled{background:var(--settings-variant);color:var(--settings-muted)}
html[data-theme=dark] .native-server-option{border-color:color-mix(in srgb,var(--settings-outline) 32%,transparent)}
html[data-theme=dark] .native-server-option.selected{border-color:color-mix(in srgb,#4A9AFF 78%,transparent);background:color-mix(in srgb,#4A9AFF 14%,var(--settings-surface))}
html[data-theme=dark] .native-server-status.unavailable{background:color-mix(in srgb,#EF4444 16%,transparent);color:#F87171}
html[data-theme=dark] .native-source-file-art{background:color-mix(in srgb,#7C3AED 16%,transparent)}html[data-theme=dark] .native-source-file-art>span{background:var(--settings-variant)}


.initial-source-setup #bottomNav,.initial-source-setup #menuButton,.initial-source-setup #backButton,.initial-source-setup #addButton,.initial-source-setup #headerFavoriteButton,.initial-source-setup .android-settings-subpage{display:none!important}
.initial-source-setup #settingsContent.native-source-picker-page{height:calc(100dvh - var(--topbar-height) - var(--safe-top));min-height:0;padding-bottom:0}
.initial-source-setup .native-source-footer{padding-bottom:calc(var(--safe-bottom) + 14px)}
.initial-source-setup #main{padding-bottom:0}
html.installed-app .initial-source-setup #settingsScreen{height:100%;padding:0}
html.installed-app .initial-source-setup #settingsContent.native-source-picker-page{height:100%;min-height:0}

#settingsScreen:has(.native-source-picker-page){padding:0}
html.installed-app #settingsScreen:has(.native-source-picker-page){height:100%}
html.installed-app #settingsContent.native-source-picker-page{height:100%}

/* Content keeps native scrolling; only the header owns the resize gesture. */
.planning-stop-dialog .native-stop-header{touch-action:none;user-select:none}
/* Reserve readable sheet content above navigation on short viewports. */
#planningScreen,#gpsScreen{--native-sheet-top-gap:clamp(0px,calc(100% - var(--native-navigation-inset) - 184px),74px)}
html #planningSheet,html #nearbySheet.native-map-nearby{height:min(calc(100% - var(--native-sheet-top-gap)),calc(var(--native-sheet-collapsed-height) + var(--native-navigation-inset)))}
html #planningSheet.native-sheet-expanded,html #nearbySheet.native-map-nearby.native-sheet-expanded,html .planning-stop-dialog.native-sheet-expanded{height:calc(100% - var(--native-sheet-top-gap))}
html .planning-stop-dialog{max-height:calc(100% - var(--native-sheet-top-gap))}

/* Keep the reminder surface attached; reserve the safe area inside its scrollable body. */
html .passenger-stop-sheet{bottom:0;max-height:calc(100dvh - 16px)}
html .passenger-stop-sheet .stop-sheet-body{padding-bottom:calc(5px + var(--safe-bottom,0px))}
