*{box-sizing:border-box}#__next,body,html{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0e1116;color:#e8eaed;overflow:hidden}button{font:inherit;cursor:pointer}.app{position:fixed;inset:0;display:grid;grid-template-columns:340px 1fr}@media (max-width:700px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sidebar{max-height:38vh;overflow-y:auto}}.sidebar{background:#14181f;border-right:1px solid #232832;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.sidebar header{padding:14px 16px 10px;border-bottom:1px solid #232832}.sidebar header h1{margin:0;font-size:17px;letter-spacing:.2px;font-weight:600}.sidebar header .sub{color:#8b96a5;font-size:12px;margin-top:2px}.sidebar header .live{display:inline-flex;align-items:center;gap:6px}.sidebar header .dot{width:8px;height:8px;border-radius:50%;background:#34d399;box-shadow:0 0 8px #34d39988;animation:pulse 1.6s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.search{padding:10px 14px;border-bottom:1px solid #232832}.search input{width:100%;background:#0e1116;border:1px solid #2a3140;color:#e8eaed;padding:8px 10px;border-radius:8px;outline:none;font-size:13px}.search input:focus{border-color:#3b82f6}.results{padding:4px 0;max-height:200px;overflow-y:auto}.results .row{padding:8px 14px;font-size:13px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.results .row:hover{background:#1a1f2a}.section-title{padding:12px 14px 6px;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:#6b7689}.line-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));grid-gap:6px;gap:6px;padding:4px 14px 14px}.line-pill{background:#1a1f2a;border:1px solid #2a3140;color:#e8eaed;padding:6px 0;border-radius:8px;text-align:center;font-weight:600;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.line-pill.active{color:#fff;border-color:transparent}.line-pill.dim{opacity:.35}.legend{padding:0 14px 12px;display:flex;flex-direction:column;gap:4px;font-size:12px;color:#c5cbd6}.legend-row{display:flex;align-items:center;gap:8px}.lg-box{width:18px;height:12px;border-radius:4px;background:#1a1f2a;border:3px solid #34d399;flex-shrink:0}.lg-box.parked{background:#6b7280;border-color:#6b7280;opacity:.55}.controls{margin-top:auto;padding:10px 14px;border-top:1px solid #232832;display:flex;gap:8px;flex-wrap:wrap}.controls button{background:#1a1f2a;border:1px solid #2a3140;color:#e8eaed;padding:6px 10px;border-radius:6px;font-size:12px}.controls button.on{background:#1e3a8a;border-color:#3b82f6}.map-wrap{position:relative;min-width:0}.map{inset:0}.map,.panel{position:absolute}.panel{top:14px;right:14px;width:340px;background:#14181f;border:1px solid #232832;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.4);padding:14px 16px;z-index:10}.panel.bottom{top:auto;bottom:14px;max-height:60vh;overflow-y:auto}.panel h3{margin:0 0 4px;font-size:16px}.panel .close{position:absolute;top:8px;right:10px;background:none;border:none;color:#8b96a5;font-size:18px;line-height:1;padding:4px}.panel .meta{color:#8b96a5;font-size:12px;margin-bottom:10px}.panel .row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px}.panel .row+.row{border-top:1px solid #1d222c}.stop-list{margin:8px 0 0;padding:0;list-style:none;font-size:13px}.stop-list li{padding:6px 0 6px 18px;position:relative}.stop-list li:before{content:"";position:absolute;left:4px;top:12px;width:8px;height:8px;border-radius:50%;background:#2a3140;border:2px solid #14181f}.stop-list li.current:before{background:#34d399;box-shadow:0 0 6px #34d39988}.stop-list li.past{color:#4b5666}.stop-list .t{float:right;color:#8b96a5;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.line-tag{display:inline-block;padding:2px 8px;border-radius:6px;font-weight:700;font-size:12px;color:#fff;margin-right:8px}.attribution{position:absolute;bottom:4px;right:6px;font-size:10px;z-index:5;background:rgba(20,24,31,.8);padding:2px 6px;border-radius:4px}.attribution,.attribution a{color:#8b96a5}.events{position:absolute;top:14px;left:14px;right:380px;z-index:12;display:flex;flex-direction:column;gap:8px;pointer-events:none}.event{pointer-events:auto;display:flex;align-items:flex-start;gap:12px;background:rgba(239,68,68,.95);color:#fff;border-radius:10px;padding:12px 14px;box-shadow:0 10px 30px rgba(0,0,0,.35);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.event-icon{font-size:20px;flex-shrink:0}.event-body{flex:1 1;min-width:0}.event-title{font-weight:700;font-size:14px}.event-desc{font-size:12px;margin-top:4px;opacity:.95}.event-lines{font-size:11px;margin-top:4px;opacity:.8}.event-close{background:none;border:none;color:#fff;font-size:18px;line-height:1;padding:2px 6px;opacity:.7}.event-close:hover{opacity:1}@media (max-width:700px){.events{right:14px;top:8px}}.basemap-grid{display:flex;flex-direction:column;gap:4px;padding:0 14px 12px}.basemap-btn{background:#1a1f2a;border:1px solid #2a3140;color:#e8eaed;padding:6px 10px;border-radius:6px;font-size:12px;text-align:left}.basemap-btn.on{background:#1e3a8a;border-color:#3b82f6}.modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:#14181f;border:1px solid #232832;border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.5);padding:22px 26px;max-width:780px;width:100%;max-height:90vh;overflow-y:auto;position:relative}.modal h2{margin:0 0 10px;font-size:19px}.modal .close{position:absolute;top:14px;right:18px;background:none;border:none;color:#8b96a5;font-size:22px;line-height:1;cursor:pointer}.stats-tabs{display:flex;gap:6px;margin:8px 0 14px;flex-wrap:wrap}.stats-tabs button{background:#1a1f2a;border:1px solid #2a3140;color:#c5cbd6;padding:6px 12px;border-radius:6px;font-size:12px}.stats-tabs button.on{background:#1e3a8a;border-color:#3b82f6;color:#fff}.ov{color:#8b96a5;font-size:12px;margin-bottom:12px}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table th{text-align:left;padding:8px;color:#8b96a5;font-weight:500;border-bottom:1px solid #232832}.stats-table td{padding:8px;border-bottom:1px solid #1a1f2a;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stats-table td.d{font-weight:600}.stats-table td.d.g{color:#34d399}.stats-table td.d.a{color:#fbbf24}.stats-table td.d.o{color:#fb923c}.stats-table td.d.r{color:#ef4444}.stats-table .bar-cell{width:28%}.stats-table .bar{height:6px;border-radius:3px}.stats-table .bar.g{background:#34d399}.stats-table .bar.a{background:#fbbf24}.stats-table .bar.o{background:#fb923c}.stats-table .bar.r{background:#ef4444}.modal.planner{max-width:720px}.plan-grid{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:10px;gap:10px;align-items:end;margin-bottom:16px}.plan-input{position:relative;display:flex;flex-direction:column;gap:4px}.plan-input label{font-size:11px;color:#8b96a5;text-transform:uppercase;letter-spacing:.5px}.plan-input input{background:#0e1116;border:1px solid #2a3140;color:#e8eaed;padding:8px 10px;border-radius:8px;outline:none;font-size:13px}.plan-input input:focus{border-color:#3b82f6}.plan-suggest{position:absolute;top:calc(100% + 2px);left:0;right:0;background:#14181f;border:1px solid #2a3140;border-radius:8px;z-index:10;max-height:240px;overflow-y:auto;box-shadow:0 10px 30px rgba(0,0,0,.35)}.plan-suggest-row{padding:8px 12px;cursor:pointer;font-size:13px}.plan-suggest-row:hover,.swap{background:#1a1f2a}.swap{border:1px solid #2a3140;color:#e8eaed;padding:8px 12px;border-radius:8px;font-size:16px;line-height:1;height:36px}.plan-results{display:flex;flex-direction:column;gap:10px}.plan-card{background:#0e1116;border:1px solid #232832;border-radius:10px;padding:12px 14px}.plan-card-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.plan-card-summary{color:#8b96a5;font-size:13px;flex:1 1}.plan-card-eta{background:#1e3a8a;color:#fff;padding:3px 9px;border-radius:5px;font-size:12px;font-weight:600}.plan-stops{font-size:12px;color:#c5cbd6;line-height:1.6}.plan-stops .first,.plan-stops .last{color:#fff;font-weight:600}.plan-stops .sep{color:#4b5666}.plan-vehicles{margin-top:8px;font-size:12px;color:#8b96a5}.plan-vehicles a{color:#60a5fa;cursor:pointer;text-decoration:underline}