@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";.app>.map{width:100%;height:100%;position:absolute;inset:0}:root{color:#0f172a;font-synthesis:none;--amber:#f59f00;--border:#e1e4e9;--muted:#737b8c;background:#e8ecec;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--border);color:inherit;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:8px 12px;display:inline-flex}button:hover{background:#fffbf3;border-color:#d69b32}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #e9ad32}input,select{border:1px solid var(--border);color:inherit;background:#fff;border-radius:10px;min-width:0;padding:10px}input[type=checkbox]{accent-color:#f59f00}input[type=range]{accent-color:#f59f00;width:100%}a{color:#467093;align-items:center;gap:4px;text-decoration:none;display:inline-flex}h1,h2,h3,h4,p{margin-top:0}h1{letter-spacing:-1.5px;align-items:center;gap:12px;font-size:38px;display:flex}h2{letter-spacing:-.5px;align-items:center;gap:10px;font-size:22px;display:flex}h3{margin-bottom:12px;font-size:14px}small{color:var(--muted);font-size:11px;line-height:1.6}.app{height:100dvh;position:relative;overflow:hidden}.map{position:absolute;inset:0}.sidebar{z-index:10;background:#fffffff7;flex-direction:column;width:320px;padding:20px 25px;transition:transform .2s;display:flex;position:absolute;top:0;bottom:0;left:0;overflow:auto;transform:translate(-100%);box-shadow:5px 0 25px #24324715}.sidebar.visible{transform:none}.sidebar-top{align-items:center;gap:12px;margin-bottom:10px;display:flex}.circle{border-radius:50%;flex-shrink:0;width:44px;height:44px;padding:0;box-shadow:0 5px 16px #0f172a1a}.close-menu{width:39px;height:39px}.tab-icons{gap:7px;display:flex}.tab-icons button{border-radius:16px;width:44px;height:46px;padding:0}.tab-icons .active,.compact-nav .active{border-color:var(--amber);color:#d88b00;background:#fff4df}.search{border:1px solid var(--border);background:#fff;border-radius:16px;flex-shrink:0;align-items:center;gap:10px;height:43px;margin-bottom:10px;padding:0 12px;display:flex}.search input{border:0;outline:0;width:100%;padding:0;font-size:12px;font-weight:700}.search button{border:0;padding:0}.search-results{border:1px solid var(--border);background:#fff;border-radius:12px;max-height:350px;margin-bottom:12px;padding:8px;overflow:auto;box-shadow:0 10px 20px #0f172a10}.search-results>small{letter-spacing:1px;padding:7px;display:block}.search-results button{text-align:left;border:0;justify-content:flex-start;gap:10px;width:100%;padding:9px 5px}.search-results button b{color:#fff;text-align:center;border-radius:12px;min-width:32px;padding:5px;font-size:11px}.search-results button span{min-width:0;font-size:11px}.search-results button small{display:block}.operator{border:1px solid var(--border);background:#fff;border-radius:9px;flex-direction:column;gap:5px;min-height:78px;padding:8px 5px;position:relative}.operator.selected{border-color:var(--amber);background:linear-gradient(120deg,#fff8e9,#fff2da);box-shadow:0 5px 18px #e5ad2412}.operators{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.operator>small{align-items:center;gap:4px;font-size:10px;display:flex}.main-operator{text-align:left;flex-direction:row;flex-shrink:0;justify-content:flex-start;gap:12px;width:100%;min-height:66px;padding:6px 12px}.main-operator>span:not(.brand):not(.status-dot){font-size:12px;font-weight:800;line-height:1.3}.main-operator small{margin-top:4px;font-size:9px;font-weight:500;display:block}.brand{letter-spacing:-1px;background:#fff;border:1px solid #e1e4e9;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;width:66px;height:45px;font-size:18px;font-weight:800;display:flex}.main-operator .brand{flex-shrink:0;width:88px;height:54px}.brand-carris{color:#0055a4;letter-spacing:-1px;flex-direction:row;font-size:19px;font-weight:600}.carris-loops{color:#edba00;letter-spacing:-12px;padding-right:10px;font-size:23px}.brand-cm{color:#242a36;letter-spacing:0;font-size:13px;line-height:1}.brand-cm:before{content:"●●●";letter-spacing:-5px;color:#e1bf00;padding-right:4px;font-size:14px}.brand-cm small{color:inherit;font-size:8px;line-height:1.5}.brand-tcb{color:#66b62c;letter-spacing:-2px;-webkit-text-stroke:.5px #339b22;font-size:29px}.brand-mobi{color:#395d48;letter-spacing:0;font-size:12px}.brand-mobi small{color:#395d48;font-size:9px;line-height:1}.brand-metro{color:#fff;background:#f44135;border:0;border-radius:4px;align-self:center;width:50px;font-size:22px;line-height:.9}.brand-metro b{letter-spacing:0;font-size:9px}.brand-metro strong{letter-spacing:0;font-size:28px}.brand-cp{color:#278044;letter-spacing:-3px;font-size:26px;font-style:italic}.brand-ttsl{color:#388aca;letter-spacing:-2px;font-size:22px}.brand-fertagus{letter-spacing:-.5px;color:#1b5489;gap:0;font-size:14px;font-style:italic}.brand-fertagus svg{color:#e84935;height:24px}.section-label{color:#777f8b;letter-spacing:.5px;justify-content:space-between;align-items:center;margin:17px 0 7px;font-size:11px;font-weight:800;display:flex}.section-label button{padding:0;font-size:9px}.status-dot{background:#aab2bf;border-radius:50%;width:6px;height:6px;display:inline-block}.status-dot.ok{background:#43a870}.status-dot.error{background:#d5634e}.status-dot.stale{background:#eea623}.main-operator>.status-dot{flex-shrink:0;margin-left:auto}.quick-trends{margin-top:24px}.quick-trends h3{color:#666f7f;font-size:13px}.quick-trends>button{color:#596375;border:0;justify-content:space-between;width:100%;padding:9px 2px;font-size:11px}.sidebar-footer{border-top:1px solid #ebedf0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-height:90px;margin-top:auto;padding-top:18px;display:flex}.sidebar-footer strong{letter-spacing:.5px;font-size:13px}.sidebar-footer em{color:#e69a00;font-style:normal}.sidebar-footer>div{display:flex}.sidebar-footer>small{width:100%;font-size:9px}.quiet{box-shadow:none;background:0 0;border:0;padding:6px}.open-menu{z-index:8;position:absolute;top:20px;left:20px}.compact-nav{z-index:8;background:#fff;border-radius:16px;gap:8px;padding:4px;display:flex;position:absolute;top:20px;left:76px;box-shadow:0 4px 16px #0f172a15}.compact-nav nav{display:flex}.compact-nav button{border:0;width:40px;height:36px;padding:0}.map-controls{z-index:3;position:absolute;top:20px;right:20px}.layer-panel{background:#fff;border-radius:14px;width:205px;padding:14px;position:absolute;top:54px;right:0;box-shadow:0 8px 25px #0f172a20}.layer-panel label{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-panel small{border-top:1px solid var(--border);padding-top:5px;display:block}.map-location{z-index:3;flex-direction:column;gap:10px;display:flex;position:absolute;bottom:60px;right:20px}.map-notice{z-index:20;font-size:11px;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.live-metrics{z-index:2;background:#fffffff5;border-radius:19px;max-width:680px;padding:14px 10px 2px;transition:left .2s;position:absolute;top:24px;left:345px;right:100px;box-shadow:0 8px 28px #0f172a15}.app:not(.sidebar-open) .live-metrics{left:280px}.metric-row{grid-template-columns:repeat(3,1fr);display:grid}.metric{border-right:1px solid var(--border);padding:9px 16px}.metric:last-child{border:0}.metric>span{letter-spacing:.4px;text-transform:uppercase;color:#70798a;font-size:10px;display:block}.metric>div{align-items:baseline;gap:7px;margin:4px 0;display:flex}.metric strong{letter-spacing:-.6px;font-size:24px}.metric>small{font-size:9px;display:block}.metric-expand{background:0 0;border:0;width:100%;height:20px;padding:0;display:flex}.metric-note{text-align:center;padding:5px;font-size:9px;display:block}.api-error{z-index:25;color:#a53c28;background:#fff1ee;border:1px solid #e7c1b8;border-radius:12px;gap:12px;max-width:calc(100vw - 400px);padding:9px 12px;display:flex;position:absolute;top:145px;left:350px}.selection-notice{z-index:4;background:#fff;border-radius:14px;padding:14px;position:absolute;top:180px;left:50%}.page-panel{z-index:4;scrollbar-width:thin;background:#fafbfcfa;border-radius:26px;padding:30px 26px;position:absolute;inset:20px 20px 20px 340px;overflow:auto}.app:not(.sidebar-open) .page-panel{padding-top:75px;left:20px}.page-title{justify-content:space-between;align-items:center;gap:15px;display:flex}.page-title h1{margin-bottom:8px}.page-title label{align-items:center;gap:8px;display:flex}.page-title input{font-size:15px}.subtle{color:var(--muted);font-size:11px;line-height:1.7}.card,.chart-card{border:1px solid var(--border);background:#fff;border-radius:15px;margin-bottom:15px;padding:18px;box-shadow:0 3px 8px #0f172a05}.section-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.section-head h2,.section-head h3{margin:0}.pill{color:#825309;white-space:nowrap;background:#fff2d9;border:1px solid #f4d194;border-radius:30px;padding:4px 10px;font-size:10px}.history-layout{grid-template-columns:180px 1fr 1fr;gap:16px;margin:22px 0;display:grid}.history-metrics .metric{border:1px solid var(--border);background:#fff;border-radius:12px;margin-bottom:10px;padding:14px;box-shadow:0 5px 15px #0f172a10}.history-metrics .metric strong{font-size:25px}.history-layout .chart-card{background:linear-gradient(110deg,#fff8e9,#fbfaf7);align-self:stretch;box-shadow:0 14px 25px #0f172a10}.chart{min-width:0;height:270px;min-height:0}.chart-card>small{font-size:9px;display:block}.chart-card h3{font-size:12px}.empty{color:#858d99;text-align:center;justify-content:center;align-items:center;min-height:90px;padding:20px;font-size:12px;line-height:1.8;display:flex}.segmented{border:1px solid var(--border);background:#fff;border-radius:11px;gap:3px;margin-bottom:15px;padding:4px;display:flex}.segmented button{white-space:nowrap;color:#737b8c;background:0 0;border:0;flex:1;min-width:0;font-size:11px}.segmented .active{color:#0f172a;border-bottom:2px solid var(--amber);background:#f6f7f8;box-shadow:0 2px 4px #0f172a08}.rank-layout{grid-template-columns:250px 1fr;gap:20px;display:grid}.table-wrap{border:1px solid var(--border);border-radius:10px;width:100%;max-height:450px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px}th{text-align:left;color:#747d8c;text-transform:uppercase;letter-spacing:.15px;white-space:nowrap;z-index:1;background:#fcfcfd;padding:10px;font-size:10px;position:sticky;top:0}td{border-top:1px solid var(--border);padding:10px}tbody tr:nth-child(odd){background:#f9fafb}.route-link{background:#fff0cb;border:0;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:800}.traffic-panel{z-index:4;width:350px;max-height:calc(100dvh - 60px);position:absolute;top:20px;left:340px;overflow:auto}.app:not(.sidebar-open) .traffic-panel{top:84px;left:20px}.traffic-panel h2{font-size:20px}.traffic-panel p{color:var(--muted);font-size:11px;line-height:1.7}.traffic-hours{gap:16px;margin:15px 0;display:flex}.traffic-hours label{width:50%;font-size:11px}.check-row{align-items:center;gap:12px;margin:8px 0;display:flex}.check-row label{align-items:center;gap:6px;font-size:11px;display:flex}.speed-legend{margin:20px 0}.speed-legend>strong{font-size:11px}.speed-legend>div{gap:5px;margin-top:8px;display:flex}.speed-legend label{width:16.6667%}.speed-legend i{border-radius:3px;height:6px;margin-bottom:6px;display:block}.speed-legend input{text-align:center;width:100%;padding:7px 4px;font-size:10px}.fleet-overview{grid-template-columns:1.2fr 1fr;gap:16px;display:grid}.fleet-overview .chart{height:310px}.activity{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;font-size:11px;display:flex}.activity small{margin-left:auto}.table-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px;display:flex}.table-toolbar h3{margin:0}.table-toolbar input{flex:1;max-width:240px;font-size:11px}.table-toolbar select{font-size:11px}.pagination{justify-content:space-between;align-items:center;margin:15px 0;font-size:11px;display:flex}.pagination button{font-size:10px}.detail-panel{z-index:5;max-height:48dvh;position:absolute;bottom:24px;left:345px;right:90px;overflow:auto;box-shadow:0 12px 35px #0f172a20}.app:not(.sidebar-open) .detail-panel{left:20px}.detail-grid{grid-template-columns:repeat(3,1fr);gap:15px;padding:5px 0 15px;display:grid}.detail-grid>span{color:var(--muted);font-size:10px}.detail-grid strong{color:#0f172a;margin-top:5px;font-size:12px;font-weight:600;display:block}.detail-panel .table-wrap{max-height:250px}.estimated{color:#be7436;font-size:9px;display:block}.arrival{border-top:1px solid var(--border);align-items:center;gap:15px;padding:10px 0;font-size:11px;display:flex}.arrival time{margin-left:auto;font-weight:700}.arrival small{font-size:9px}.modal-shade{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a40;justify-content:center;align-items:center;padding:25px;display:flex;position:absolute;inset:0}.modal{background:#fff;border-radius:22px;width:100%;max-width:750px;max-height:90dvh;padding:24px;overflow:auto;box-shadow:0 18px 70px #0f172a30}.chart-modal .chart{height:50dvh}.chart-modal .chart-card{background:#fffbf4;border:0}.sources{max-width:760px}.sources article{border-top:1px solid var(--border);padding:15px 0}.sources article h3{margin:0 0 9px}.sources article p{color:#617084;margin:10px 0 0;font-size:11px;line-height:1.7}.source-links{flex-wrap:wrap;align-items:center;gap:15px;margin:8px 0;font-size:11px;display:flex}.notice{color:#8b6c36;background:#fffaed;border-radius:10px;margin:12px 0;padding:12px;font-size:11px;line-height:1.8}.error{color:#ae4d40;background:#fff3ee;border-radius:9px;margin:10px 0;padding:10px;font-size:11px}.auth-panel{max-width:560px}.auth-panel>p{color:var(--muted);font-size:11px;line-height:1.8}.account-row{background:#f7f8fa;border-radius:12px;justify-content:space-between;align-items:center;margin:20px 0;padding:12px;display:flex}.account-row small{display:block}.auth-panel form>label{flex-direction:column;gap:7px;font-size:11px;display:flex}.primary{background:#f5a916;border-color:#e69c19;margin-top:10px;font-weight:700}.secret{overflow-wrap:anywhere;background:#eef8f0;border-radius:12px;margin:16px 0;padding:14px}.secret strong{font-size:11px}.secret code{padding:10px 0;font-size:12px;display:block}.key-list article{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.key-list small{font-size:9px;display:block}.key-list button{font-size:10px}.selection-notice{box-shadow:0 8px 18px #0f172a10}.tab-history .map-controls,.tab-fleet .map-controls{display:none}@media (width>=1500px){.sidebar{width:333px}.page-panel{left:353px}.history-layout{grid-template-columns:210px 1fr 1fr}.live-metrics,.detail-panel{left:360px}}@media (width<=1150px){.history-layout{grid-template-columns:1fr 1fr}.history-metrics{grid-column:1/-1;grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.history-metrics .metric{padding:10px}.history-metrics .metric strong{font-size:20px}.rank-layout{grid-template-columns:200px 1fr}.page-title h1{font-size:30px}.live-metrics{right:85px}.metric{padding:8px}.metric strong{font-size:20px}.fleet-overview{grid-template-columns:1fr}.chart{height:240px}.live-metrics{left:335px}.traffic-panel{left:330px}}@media (width<=760px){.sidebar{z-index:35;width:305px;padding:16px 20px}.sidebar.visible{box-shadow:20px 0 100px #0f172a35}.open-menu{z-index:8;top:15px;left:15px}.compact-nav{justify-content:space-between;top:15px;left:69px;right:15px}.compact-nav nav{gap:6px}.compact-nav button{width:39px}.live-metrics,.app:not(.sidebar-open) .live-metrics{border-radius:16px;max-width:none;padding:7px 5px 0;top:75px;left:12px;right:12px}.metric{padding:6px}.metric>span{letter-spacing:0;font-size:8px}.metric strong{font-size:20px}.metric>small{font-size:8px;line-height:1.3}.metric>div{gap:4px}.metric>div small{font-size:8px}.metric-row{grid-template-columns:1fr 1fr 1fr}.metric-expand{height:18px}.sidebar-open .live-metrics{left:12px}.sidebar-open:after{content:"";z-index:30;pointer-events:none;background:#0f172a25;position:absolute;inset:0}.map-controls{inset:auto auto 30px 15px}.layer-panel{inset:auto auto 54px 0}.map-location{gap:8px;bottom:40px;right:15px}.map-location .circle,.map-controls .circle{width:39px;height:39px}.maplibregl-ctrl-attrib{font-size:8px!important}.page-panel,.app:not(.sidebar-open) .page-panel{border-radius:20px;padding:20px 12px;inset:74px 8px 8px}.page-title{flex-wrap:wrap;align-items:flex-start;gap:8px}.page-title h1{letter-spacing:-.8px;font-size:29px}.page-title input{padding:8px;font-size:12px}.history-layout{grid-template-columns:1fr;gap:10px;margin:15px 0}.history-metrics{grid-template-columns:1fr 1fr;gap:6px}.history-metrics .metric{margin:0}.history-layout .chart-card{margin-bottom:4px}.chart{height:230px}.chart-card{padding:12px}.card{padding:13px}.rank-layout{grid-template-columns:1fr}.rank-layout .table-wrap{max-height:240px}.segmented{gap:0;overflow:auto}.segmented button{flex:1 0 auto;padding:8px;font-size:9px}.traffic-panel,.app:not(.sidebar-open) .traffic-panel{width:auto;max-height:calc(100dvh - 165px);padding:14px;top:75px;left:12px;right:12px}.traffic-panel h2{font-size:20px}.traffic-panel .empty{min-height:50px;padding:10px}.traffic-panel .speed-legend{margin:14px 0}.detail-panel,.app:not(.sidebar-open) .detail-panel{border-radius:17px;max-height:45dvh;padding:15px;bottom:60px;left:8px;right:8px}.detail-panel h3{font-size:12px}.detail-grid{grid-template-columns:1fr 1fr;gap:12px}.detail-grid strong{font-size:11px}.detail-panel td{font-size:10px}.modal-shade{padding:12px}.modal{border-radius:18px;max-height:88dvh;padding:18px}.section-head h2{font-size:19px}.api-error{max-width:none;font-size:10px;top:175px;left:12px;right:12px}.selection-notice{text-align:center;font-size:11px;top:160px;left:12px;right:12px}.activity{flex-wrap:wrap}.activity small{width:100%;margin-left:27px}.table-toolbar{gap:8px}.table-toolbar input{width:100%;max-width:none}.fleet-overview{gap:0}.subtle{font-size:10px}.arrival{flex-wrap:wrap;gap:8px}.arrival small{display:block}.sources article p{font-size:10px}.sources .source-links{gap:10px;font-size:10px}.compact-nav .quiet{margin-left:auto}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.layer-panel{width:240px;max-width:calc(100vw - 30px)}.layer-panel input{flex-shrink:0}.layer-panel small{overflow-wrap:anywhere;white-space:normal}
