@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";.update-modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;padding:1rem;animation:fadeIn .2s ease-out}.update-modal-backdrop.fade-out{animation:fadeOut .3s ease-out forwards}.update-modal{background:var(--bg-secondary);border-radius:var(--border-radius-xl);width:100%;max-width:380px;box-shadow:var(--shadow-xl);border:1px solid var(--border-color);overflow:hidden;animation:slideUp .3s ease-out}.update-modal.slide-out{animation:slideDown .3s ease-out forwards}.update-modal-header{display:flex;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color);gap:.75rem}.update-modal-header-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-tertiary)}.update-modal-header-icon svg{color:var(--accent-secondary)}.update-modal-header-text{flex:1;font-size:1.1rem;color:var(--text-primary)}.update-modal-close{width:32px;height:32px;border:none;background:transparent;border-radius:var(--border-radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background var(--transition-fast)}.update-modal-close:hover{background:var(--bg-tertiary)}.update-modal-body{padding:var(--spacing-lg)}.update-info p,.update-ready p,.update-error p{margin:0;color:var(--text-secondary);line-height:1.5}.update-info p:first-child{font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.update-error p{color:var(--accent-warning)}.update-progress-info{display:flex;justify-content:space-between;margin-bottom:var(--spacing-sm);font-size:.875rem;color:var(--text-secondary)}.update-progress-bar{height:8px;background:var(--border-color);border-radius:var(--border-radius-sm);overflow:hidden}.update-progress-fill{height:100%;background:var(--accent-secondary);border-radius:var(--border-radius-sm);transition:width .3s ease-out}.update-modal-footer{padding:var(--spacing-md) var(--spacing-lg);display:flex;gap:var(--spacing-sm);justify-content:flex-end;border-top:1px solid var(--border-color);background:var(--bg-tertiary)}.update-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;border-radius:var(--border-radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);border:none}.update-btn.primary{background:var(--accent-secondary);color:#fff}.update-btn.primary:hover{opacity:.9}.update-btn.secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}.update-btn.secondary:hover{background:var(--bg-tertiary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideDown{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(20px) scale(.95)}}@property --border-progress{syntax: "<angle>"; initial-value: 0deg; inherits: false;}:root{--bg-primary: #000000;--bg-secondary: #0a0a0a;--bg-tertiary: #171717;--surface: #0a0a0a;--text-primary: #ededed;--text-secondary: #a1a1a1;--text-tertiary: #666666;--accent-primary: #ffffff;--accent-secondary: #0070f3;--accent-warning: #ef4444;--accent-info: #8b5cf6;--accent-success: #22c55e;--border-color: rgba(255, 255, 255, .08);--border-color-hover: rgba(255, 255, 255, .15);--font-primary: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "IBM Plex Mono", monospace;--spacing-xs: .375rem;--spacing-sm: .625rem;--spacing-md: 1rem;--spacing-lg: 1.25rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--spacing-3xl: 3rem;--border-radius-sm: 6px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px;--shadow-sm: 0 0 0 1px var(--border-color);--shadow-md: 0 0 0 1px var(--border-color), 0 2px 8px rgba(0, 0, 0, .4);--shadow-lg: 0 0 0 1px var(--border-color), 0 4px 16px rgba(0, 0, 0, .5);--shadow-xl: 0 0 0 1px var(--border-color), 0 8px 32px rgba(0, 0, 0, .6);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}:root[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #fafafa;--bg-tertiary: #f5f5f5;--surface: #fafafa;--text-primary: #0a0a0a;--text-secondary: #666666;--text-tertiary: #999999;--accent-primary: #0a0a0a;--accent-secondary: #0070f3;--accent-warning: #ef4444;--accent-info: #7c3aed;--accent-success: #16a34a;--border-color: rgba(0, 0, 0, .08);--border-color-hover: rgba(0, 0, 0, .15);--shadow-sm: 0 0 0 1px var(--border-color);--shadow-md: 0 0 0 1px var(--border-color), 0 2px 8px rgba(0, 0, 0, .04);--shadow-lg: 0 0 0 1px var(--border-color), 0 4px 16px rgba(0, 0, 0, .06);--shadow-xl: 0 0 0 1px var(--border-color), 0 8px 32px rgba(0, 0, 0, .08)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-primary);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--bg-primary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes border-draw{0%{--border-progress: 40deg}to{--border-progress: 360deg}}@keyframes snackbarSlideUp{0%{opacity:0;transform:translate(-50%) translateY(16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.header{background:var(--bg-primary);color:var(--text-primary);padding:var(--spacing-md) var(--spacing-xl);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--border-color);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@media(max-width:768px){.header{position:relative;padding:var(--spacing-md)}}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap}@media(max-width:768px){.header-content{flex-direction:column;align-items:stretch;gap:var(--spacing-sm)}}.logo-section{display:flex;align-items:center;gap:var(--spacing-md);flex:1;min-width:200px}.logo-section .header-actions{margin-left:auto;display:flex;align-items:center;gap:var(--spacing-xs)}.bus-icon{font-size:1.5rem;color:var(--text-primary);display:flex;align-items:center}.app-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);letter-spacing:-.5px;margin:0}.app-subtitle{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;display:none;margin-top:.25rem}@media(min-width:768px){.app-subtitle{display:block}}.nav-buttons{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;align-items:center}.nav-btn{padding:.5rem var(--spacing-md);background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);cursor:pointer;font-size:.8125rem;font-weight:500;font-family:var(--font-primary);transition:all var(--transition-fast);white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.nav-btn:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color-hover)}.nav-btn.active{background:var(--text-primary);color:var(--bg-primary);border-color:var(--text-primary);font-weight:600}.nav-btn svg{margin-right:.5rem}.theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:1px solid var(--border-color);border-radius:var(--border-radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.theme-toggle:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color-hover)}.theme-toggle svg{transition:transform .3s ease}.theme-toggle:hover svg{transform:rotate(30deg)}.lang-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:1px solid var(--border-color);border-radius:var(--border-radius-md);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;font-size:1.1rem;line-height:1}.lang-toggle:hover{background:var(--bg-tertiary);border-color:var(--border-color-hover)}.install-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .6rem;background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);border-radius:var(--border-radius-md);cursor:pointer;transition:all var(--transition-fast);font-size:.875rem}.install-btn:hover{background:var(--bg-tertiary);border-color:var(--border-color-hover)}@media(max-width:768px){.logo-section{min-width:auto}.app-title{font-size:1rem}.nav-buttons{width:100%;gap:var(--spacing-xs)}.nav-btn{flex:1;text-align:center;padding:.5rem .75rem;font-size:.8rem}}@media(max-width:480px){.nav-btn{padding:.5rem;font-size:.75rem}}.main-content{flex:1;max-width:960px;width:100%;margin:0 auto;padding:var(--spacing-2xl) var(--spacing-xl);animation:fadeIn .3s ease}.section-title{font-size:1.75rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-xl);letter-spacing:-.5px;position:relative;padding-bottom:var(--spacing-md)}.section-title:after{content:"";position:absolute;bottom:0;left:0;width:32px;height:2px;background:var(--text-tertiary);border-radius:var(--border-radius-sm)}.footer{background:var(--bg-secondary);color:var(--text-secondary);padding:var(--spacing-xl);text-align:center;border-top:1px solid var(--bg-tertiary);margin-top:auto;font-size:.875rem}.footer a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}.footer a:hover{color:var(--text-primary)}@media(max-width:768px){.main-content{padding:var(--spacing-md)}.section-title{font-size:1.5rem;margin-bottom:var(--spacing-lg)}}@media(max-width:480px){.main-content{padding:var(--spacing-sm)}.section-title{font-size:1.25rem;margin-bottom:var(--spacing-md)}}.badge{background:var(--bg-tertiary);color:var(--text-secondary);padding:.375rem .75rem;border-radius:var(--border-radius-sm);font-size:.8125rem;font-weight:500;border:1px solid var(--border-color)}.badge.school{background:var(--accent-info);color:#fff}.badge.holiday,.badge-small.holiday{background:#e74c3c26;color:#e74c3c;border:1px solid rgba(231,76,60,.3)}.badge-small{display:inline-block;padding:2px 8px;border-radius:var(--border-radius-sm);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-top:var(--spacing-xs)}.mini-badge{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;border-radius:var(--border-radius-md);color:#fff;font-weight:700;font-size:.875rem;font-family:var(--font-mono);box-shadow:var(--shadow-md);transition:all var(--transition-fast)}.mini-badge:hover{transform:scale(1.1);box-shadow:var(--shadow-lg)}.bus-line-badge{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:var(--border-radius-md);color:#fff;font-weight:800;font-size:1.25rem;flex-shrink:0;box-shadow:var(--shadow-md);font-family:var(--font-mono)}.route-type-badge{padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius-sm);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0;white-space:nowrap}.route-type-badge.direct{background:#2ecc7126;color:#2ecc71;border:1px solid rgba(46,204,113,.3)}.route-type-badge.transfer{background:#3498db26;color:#3498db;border:1px solid rgba(52,152,219,.3)}.line-badge-large{display:flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:var(--border-radius-lg);background:var(--accent-primary);color:var(--bg-primary);font-weight:700;font-size:2.25rem;flex-shrink:0;font-family:var(--font-mono)}.line-badge-schedule{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--border-radius-md);color:#fff;font-weight:800;font-size:1.5rem;flex-shrink:0;box-shadow:var(--shadow-md);font-family:var(--font-mono)}.route-line-badge{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--border-radius-md);color:#fff;font-weight:800;font-size:1.25rem;flex-shrink:0;box-shadow:var(--shadow-md);font-family:var(--font-mono)}@media(max-width:768px){.line-badge-large{width:72px;height:72px;font-size:2rem}.bus-line-badge{width:44px;height:44px;font-size:1rem}.line-badge-schedule{width:44px;height:44px;font-size:1.125rem}}.map-button{padding:var(--spacing-md) var(--spacing-lg);background:var(--accent-primary);border:none;border-radius:var(--border-radius-md);color:var(--bg-primary);font-size:1.25rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-md);white-space:nowrap;display:inline-flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.map-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);background:#16b896}.map-button:active{transform:translateY(0)}@media(max-width:768px){.map-button{align-self:flex-start;padding:var(--spacing-sm) var(--spacing-md);font-size:1rem}}.map-quick-button{padding:var(--spacing-md) var(--spacing-lg);background:var(--accent-primary);border:none;border-radius:var(--border-radius-md);color:var(--bg-primary);font-size:1.25rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-md);white-space:nowrap;display:inline-flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.map-quick-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);background:#16b896}.map-quick-button:active{transform:translateY(0)}.nearby-stop-item .map-quick-button{padding:var(--spacing-sm) var(--spacing-md);font-size:1.1rem}.maps-button{padding:var(--spacing-md) var(--spacing-lg);background:var(--accent-primary);color:var(--bg-primary);border:none;border-radius:var(--border-radius-md);font-weight:600;cursor:pointer;font-size:1rem;transition:all var(--transition-fast);box-shadow:var(--shadow-md);white-space:nowrap;display:flex;align-items:center;gap:var(--spacing-sm)}.maps-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.maps-button:active{transform:translateY(0)}@media(max-width:480px){.search-info .maps-button{width:100%}}.search-button{padding:var(--spacing-lg) var(--spacing-2xl);background:var(--accent-primary);color:var(--bg-primary);border:none;border-radius:var(--border-radius-md);font-weight:700;cursor:pointer;font-size:1.125rem;transition:all var(--transition-fast);box-shadow:var(--shadow-md);white-space:nowrap;min-height:56px;display:flex;align-items:center;justify-content:center;width:100%}.search-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.search-button:active{transform:translateY(0)}@media(min-width:769px){.search-button{width:auto;min-width:200px}}.back-button{align-self:flex-start;padding:var(--spacing-xs) var(--spacing-md);background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);border-radius:var(--border-radius-md);cursor:pointer;font-size:.8125rem;font-weight:500;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:var(--spacing-xs);margin-bottom:var(--spacing-lg)}.back-button:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color-hover)}.nearby-btn{flex:1;padding:.625rem var(--spacing-md);background:var(--bg-secondary);border:1px solid var(--bg-tertiary);color:var(--text-primary);border-radius:var(--border-radius-md);cursor:pointer;font-size:.75rem;font-weight:600;transition:all var(--transition-fast)}.nearby-btn:hover{background:var(--accent-primary);color:var(--bg-primary);border-color:var(--accent-primary)}.lines-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}@media(max-width:768px){.lines-grid{grid-template-columns:1fr}}@media(max-width:480px){.lines-grid{gap:var(--spacing-md)}}.line-card,.line-schedule,.route-card{--line-color: var(--text-primary);--border-progress: 40deg;position:relative;background:var(--surface);border-radius:var(--border-radius-lg);border:1px solid var(--border-color);transition:background var(--transition-normal)}.line-card:before,.line-schedule:before,.route-card:before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:2px;background:conic-gradient(from 270deg,var(--line-color) 0deg,var(--line-color) var(--border-progress),transparent var(--border-progress),transparent 360deg);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:10;transition:--border-progress .4s ease}.line-card:hover,.line-schedule:hover,.route-card:hover{background:var(--bg-tertiary)}.line-card:hover:before,.line-schedule:hover:before,.route-card:hover:before{animation:border-draw .6s ease-out forwards}.line-card{overflow:hidden;cursor:pointer;display:flex;flex-direction:column}.line-header{padding:var(--spacing-lg);display:flex;align-items:flex-start;gap:var(--spacing-md);border-bottom:1px solid var(--border-color)}@media(max-width:480px){.line-header{padding:var(--spacing-md)}}.line-badge{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--border-radius-md);background:var(--accent-primary);color:var(--bg-primary);font-weight:700;font-size:1.5rem;flex-shrink:0;font-family:var(--font-mono)}@media(max-width:480px){.line-badge{width:48px;height:48px;font-size:1.25rem}}.line-info{flex:1}.line-info h3{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.line-route{font-size:.875rem;color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-footer{padding:var(--spacing-sm) var(--spacing-lg);display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);background:var(--bg-secondary);border-top:1px solid var(--border-color)}@media(max-width:480px){.line-footer{padding:var(--spacing-sm) var(--spacing-md)}}.line-fare{font-size:.875rem;color:var(--text-secondary)}.school-badge{background:var(--accent-info);color:#fff;padding:.25rem .75rem;border-radius:var(--border-radius-sm);font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;display:inline-flex;align-items:center;gap:4px}.stops-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.stop-item{display:flex;gap:var(--spacing-lg);padding:var(--spacing-lg);background:var(--surface);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);cursor:pointer;transition:all var(--transition-normal)}.stop-item:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);transform:translate(8px);box-shadow:var(--shadow-md)}@media(max-width:768px){.stop-item:hover{transform:none}.stop-item{flex-direction:row;align-items:start;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}}.stop-number{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--bg-secondary);border:2px solid var(--accent-primary);border-radius:var(--border-radius-md);color:var(--accent-primary);font-weight:700;font-size:1rem;flex-shrink:0;font-family:var(--font-mono)}@media(max-width:768px){.stop-number{width:36px;height:36px;font-size:.85rem}}.stop-details{flex:1}.stop-details h4{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}@media(max-width:768px){.stop-details h4{font-size:1rem}}.stop-times{font-size:.875rem;color:var(--text-secondary);margin-top:var(--spacing-sm)}@media(max-width:768px){.stop-times{font-size:.8rem}}.stop-arrow{display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);font-size:1.5rem;transition:transform var(--transition-fast)}.stop-item:hover .stop-arrow{transform:translate(4px);color:var(--accent-primary)}@media(max-width:768px){.stop-arrow{font-size:1.1rem}}.stop-item.stop-return{opacity:.6;border-left:3px solid var(--text-tertiary)}.stop-item.stop-return .stop-number{background:var(--bg-tertiary);color:var(--text-secondary);font-size:1rem}.stop-actions{display:flex;gap:var(--spacing-sm);align-items:center}.stop-actions .stop-arrow{margin:0}.stop-header{background:var(--surface);padding:var(--spacing-lg);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);display:flex;flex-direction:column;gap:var(--spacing-sm)}.stop-header-top{display:flex;align-items:center;justify-content:space-between}.stop-header>div{flex:none}.stop-header .map-button{flex-shrink:0}@media(max-width:768px){.stop-header{padding:var(--spacing-md);gap:var(--spacing-xs)}}.stop-icon{font-size:3rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))}.stop-header h2{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--spacing-sm)}@media(max-width:768px){.stop-icon{font-size:1.75rem}.stop-header h2{font-size:1.5rem;margin-bottom:0}}.stop-distance{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--accent-primary);font-weight:500;margin-bottom:var(--spacing-sm)}.stop-distance.locating{color:var(--text-secondary);animation:pulse 1.5s ease-in-out infinite}.current-time{font-size:.875rem;color:var(--text-secondary);margin-top:var(--spacing-md)}@media(max-width:768px){.current-time{margin-top:0}}.stop-view-tabs{display:flex;gap:var(--spacing-md);border-bottom:1px solid var(--bg-tertiary);margin-bottom:var(--spacing-lg)}@media(max-width:768px){.stop-view-tabs{margin-bottom:var(--spacing-sm);gap:var(--spacing-sm)}}.tab-button{padding:var(--spacing-md) var(--spacing-lg);background:none;border:none;border-bottom:3px solid transparent;color:var(--text-secondary);font-weight:600;font-size:1rem;cursor:pointer;transition:all var(--transition-normal);position:relative}.tab-button:hover{color:var(--text-primary)}.tab-button.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}@media(max-width:768px){.tab-button{padding:var(--spacing-sm) var(--spacing-md);font-size:.875rem}}.no-buses{background:var(--surface);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px dashed var(--bg-tertiary);text-align:center}.no-buses p{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-md)}.no-buses-subtitle{font-size:.875rem;color:var(--text-secondary)!important;margin-bottom:0!important}.next-buses-list{display:flex;flex-direction:column;gap:var(--spacing-xl)}.buses-by-stop-group{background:var(--surface);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);overflow:hidden}.stop-group-header{padding:var(--spacing-lg) var(--spacing-xl);background:var(--bg-secondary);border-bottom:1px solid var(--bg-tertiary);display:flex;align-items:baseline;gap:var(--spacing-md)}.fermata-label{font-size:.75rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:1px;font-family:var(--font-mono)}.stop-group-header h4{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}@media(max-width:768px){.stop-group-header{padding:var(--spacing-md)}}.buses-in-stop{display:flex;flex-direction:column}.bus-item{display:flex;align-items:flex-start;gap:var(--spacing-lg);padding:var(--spacing-lg) var(--spacing-xl);border-left:4px solid var(--accent-primary);border-bottom:1px solid var(--bg-tertiary);transition:all var(--transition-normal)}.bus-item:last-child{border-bottom:none}.bus-item:hover{background:var(--bg-tertiary)}@media(max-width:768px){.bus-item{gap:var(--spacing-md);padding:var(--spacing-md)}}.bus-info{flex:1}.bus-info h4{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0 0 var(--spacing-sm) 0}@media(max-width:768px){.bus-info h4{font-size:1rem}}.bus-route{font-size:.875rem;color:var(--text-secondary);margin:0}.bus-time{display:flex;flex-direction:column;align-items:flex-end;gap:var(--spacing-xs);min-width:100px}@media(max-width:768px){.bus-time{min-width:70px}}.time-large{font-size:1.75rem;font-weight:800;color:var(--accent-primary);font-family:var(--font-mono);line-height:1}@media(max-width:768px){.time-large{font-size:1.5rem}}.time-countdown{font-size:.75rem;color:var(--text-secondary);font-weight:500}.time-distance{display:flex;align-items:center;gap:3px;font-size:.6875rem;color:var(--accent-primary);font-weight:500;margin-top:2px}.next-buses-section{display:flex;flex-direction:column;gap:var(--spacing-lg)}.next-buses-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-md)}.next-bus-card{background:var(--surface);padding:var(--spacing-lg);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);display:flex;justify-content:space-between;align-items:center;transition:all var(--transition-normal)}.next-bus-card:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);box-shadow:var(--shadow-md)}.next-bus-info{display:flex;align-items:center;gap:var(--spacing-lg);flex:1}.next-bus-line{display:flex;align-items:center;justify-content:center;width:56px;height:56px;background:var(--accent-primary);color:var(--bg-primary);border-radius:var(--border-radius-md);font-weight:700;font-size:1.5rem;flex-shrink:0;box-shadow:var(--shadow-md);font-family:var(--font-mono)}.next-bus-details{flex:1}.next-bus-destination{font-size:1rem;font-weight:600;color:var(--text-primary)}.next-bus-time{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem}.next-bus-countdown{font-size:1.5rem;font-weight:700;color:var(--accent-primary);min-width:80px;text-align:right;font-family:var(--font-mono)}.next-bus-countdown.soon{color:var(--accent-warning);animation:pulse 1s ease-in-out infinite}.schedule-tabs{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);background:var(--bg-secondary);padding:var(--spacing-xs);border-radius:var(--border-radius-lg)}.schedule-tab{flex:1;padding:var(--spacing-md) var(--spacing-lg);border:none;border-radius:var(--border-radius-md);background:transparent;color:var(--text-secondary);font-weight:600;font-size:.95rem;cursor:pointer;transition:all var(--transition-fast);display:flex;justify-content:center}.schedule-tab svg{margin-right:.5rem}.schedule-tab.active{background:var(--text-primary);color:var(--bg-primary);box-shadow:var(--shadow-md)}.schedule-tab:not(.active):hover{background:var(--bg-tertiary);color:var(--text-primary)}.line-schedule{overflow:hidden}.line-header-schedule{padding:var(--spacing-lg) var(--spacing-xl);background:var(--bg-secondary);display:flex;align-items:flex-start;gap:var(--spacing-lg);justify-content:space-between}@media(max-width:768px){.line-header-schedule{flex-wrap:wrap;gap:var(--spacing-md);padding:var(--spacing-md)}}.line-info-schedule{flex:1}.line-info-schedule h3{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0 0 var(--spacing-xs) 0}.line-info-schedule p{font-size:.875rem;color:var(--text-secondary);margin:0}.times-count{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-md);background:var(--bg-tertiary);border-radius:var(--border-radius-md);min-width:100px}.times-count .count{font-size:1.75rem;font-weight:800;color:var(--accent-primary);font-family:var(--font-mono);line-height:1}.times-count .label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600}@media(max-width:768px){.times-count{min-width:70px;padding:var(--spacing-sm)}.times-count .count{font-size:1.25rem}}.times-grid{padding:var(--spacing-xl);display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:var(--spacing-lg)}@media(max-width:1024px){.times-grid{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:var(--spacing-md)}}@media(max-width:768px){.times-grid{grid-template-columns:repeat(3,1fr);gap:var(--spacing-xs);padding:var(--spacing-md)}}@media(max-width:480px){.times-grid{grid-template-columns:repeat(3,1fr);gap:var(--spacing-xs);padding:var(--spacing-sm)}}.time-cell{background:var(--bg-secondary);padding:var(--spacing-md);border-radius:var(--border-radius-md);border:1px solid var(--bg-tertiary);text-align:center;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);font-size:.95rem;transition:all var(--transition-fast);cursor:pointer}@media(max-width:768px){.time-cell{padding:var(--spacing-sm);font-size:.85rem}}.time-cell:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--accent-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.time-cell.time-variant{border-color:#f39c12;background:#f39c1214;position:relative;cursor:pointer}.time-cell.time-variant.tooltip-open{border-color:#e67e22;background:#f39c122e;z-index:10}.variant-snackbar{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--spacing-md);background:var(--surface);border:1px solid #f39c12;border-radius:var(--border-radius-lg);padding:var(--spacing-md) var(--spacing-lg);font-size:.85rem;font-weight:600;color:#f39c12;white-space:nowrap;box-shadow:0 4px 20px #0000004d;z-index:9999;cursor:pointer;animation:snackbarSlideUp .2s ease;max-width:calc(100vw - 32px)}.variant-snackbar-text{flex:1}.variant-snackbar-close{opacity:.6;font-size:.75rem}.marker-legend{margin-top:var(--spacing-lg);padding:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--border-radius-md);border-left:4px solid #f39c12}.marker-legend .legend-title{font-weight:700;color:var(--text-primary);margin:0 0 var(--spacing-sm) 0;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px}.marker-legend p{margin:var(--spacing-xs) 0;color:var(--text-secondary);font-size:.85rem}.legend-marker{font-weight:800;color:#f39c12;font-family:var(--font-mono);margin-right:var(--spacing-xs)}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);gap:var(--spacing-lg)}.spinner{width:48px;height:48px;border:3px solid var(--bg-tertiary);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-text{color:var(--text-secondary);font-size:.875rem}.loading-container{background:var(--surface);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);text-align:center;color:var(--text-secondary)}.error-container{background:#ff6b6b1a;border:1px solid var(--accent-warning);color:#ff8b8b;padding:var(--spacing-xl);border-radius:var(--border-radius-lg);text-align:center}.error-message{background:#ff6b6b1a;border:1px solid var(--accent-warning);color:#ff8b8b;padding:var(--spacing-lg);border-radius:var(--border-radius-lg);display:flex;gap:var(--spacing-md);align-items:center}.error-message:before{content:"⚠️";font-size:1.5rem;flex-shrink:0}.error-message-box{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;padding:var(--spacing-md);border-radius:var(--border-radius-md);font-size:.875rem;margin-bottom:var(--spacing-lg)}.no-data{background:var(--surface);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px dashed var(--bg-tertiary);text-align:center;color:var(--text-secondary)}.not-found{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--spacing-2xl)}.not-found-content{background:var(--surface);padding:var(--spacing-3xl);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);text-align:center;max-width:500px}.not-found-icon{font-size:4rem;margin-bottom:var(--spacing-lg)}.not-found-content h1{font-size:2rem;margin:var(--spacing-lg) 0;color:var(--text-primary)}.not-found-content p{font-size:1.125rem;color:var(--text-secondary);margin-bottom:var(--spacing-xl)}@media(max-width:768px){.not-found{min-height:50vh;padding:var(--spacing-lg)}.not-found-content{padding:var(--spacing-2xl)}.not-found-icon{font-size:3rem}.not-found-content h1{font-size:1.5rem}.not-found-content p{font-size:1rem}}.pwa-banner{position:fixed;bottom:16px;left:16px;right:16px;max-width:400px;margin:0 auto;background:#0f0f0fd1;color:#fff;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:14px 16px;box-shadow:0 8px 32px #00000073;z-index:9000;animation:pwa-slide-up .3s cubic-bezier(.16,1,.3,1)}@keyframes pwa-slide-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}:root[data-theme=light] .pwa-banner{background:#ffffffb8;color:var(--text-primary);border:1px solid rgba(0,0,0,.12);box-shadow:0 8px 32px #0000001f}.pwa-banner-content{display:flex;flex-direction:column;gap:10px;width:100%}.pwa-banner-text{display:flex;flex-direction:column;gap:2px;min-width:0}.pwa-banner-title{font-weight:600;font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pwa-banner-tagline{font-size:.75rem;opacity:.7;line-height:1.4}.pwa-banner-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end}.pwa-dismiss-btn{background:transparent;border:none;color:#ffffff8c;font-size:.8125rem;font-weight:500;font-family:var(--font-primary);cursor:pointer;padding:6px 8px;border-radius:8px;transition:color var(--transition-fast),background var(--transition-fast);flex-shrink:0}.pwa-dismiss-btn:hover{color:#fff;background:#ffffff14}:root[data-theme=light] .pwa-dismiss-btn{color:var(--text-secondary)}:root[data-theme=light] .pwa-dismiss-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.pwa-install-btn{background:#fff;color:#000;border:none;border-radius:20px;padding:8px 18px;font-size:.875rem;font-weight:700;font-family:var(--font-primary);cursor:pointer;transition:opacity var(--transition-fast),transform var(--transition-fast);flex-shrink:0;letter-spacing:.01em}.pwa-install-btn:hover{opacity:.88;transform:translateY(-1px)}.pwa-install-btn:active{transform:translateY(0);opacity:1}:root[data-theme=light] .pwa-install-btn{background:var(--text-primary);color:var(--bg-primary)}.pwa-modal-backdrop{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:10000;display:flex;align-items:flex-end;justify-content:center;padding:16px;animation:pwa-backdrop-in .2s ease}@keyframes pwa-backdrop-in{0%{opacity:0}to{opacity:1}}.pwa-modal{width:100%;max-width:480px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:20px;overflow:hidden;box-shadow:0 24px 64px #00000080;animation:pwa-sheet-up .3s cubic-bezier(.16,1,.3,1)}@keyframes pwa-sheet-up{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.pwa-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-color);background:var(--surface)}.pwa-modal-header-left{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--text-primary)}.pwa-modal-header-left strong{font-size:1rem;font-weight:700;color:var(--text-primary)}.pwa-modal-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-tertiary);border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.pwa-modal-close:hover{background:var(--border-color-hover);color:var(--text-primary)}.pwa-modal-body{padding:var(--spacing-xl)}.pwa-modal-instructions{font-size:.9375rem;color:var(--text-secondary);line-height:1.6;margin:0}.pwa-install-steps{list-style:none;counter-reset:pwa-step;display:flex;flex-direction:column;gap:var(--spacing-lg);margin:0;padding:0}.pwa-install-steps li{counter-increment:pwa-step;display:flex;align-items:flex-start;gap:var(--spacing-md);font-size:.9375rem;color:var(--text-secondary);line-height:1.5}.pwa-install-steps li:before{content:counter(pwa-step);display:flex;align-items:center;justify-content:center;min-width:26px;height:26px;background:var(--accent-primary);color:var(--bg-primary);border-radius:50%;font-size:.75rem;font-weight:700;flex-shrink:0;margin-top:1px;font-family:var(--font-mono)}.pwa-install-steps strong{color:var(--text-primary)}.pwa-step-icon{display:inline-flex;align-items:center;color:var(--accent-primary);flex-shrink:0}.pwa-modal-footer{padding:var(--spacing-md) var(--spacing-xl) var(--spacing-xl);display:flex;justify-content:flex-end}.pwa-modal-done-btn{padding:var(--spacing-md) var(--spacing-2xl);background:var(--accent-primary);color:var(--bg-primary);border:none;border-radius:var(--border-radius-md);font-size:.9375rem;font-weight:700;font-family:var(--font-primary);cursor:pointer;transition:opacity var(--transition-fast),transform var(--transition-fast)}.pwa-modal-done-btn:hover{opacity:.85;transform:translateY(-1px)}.pwa-modal-done-btn:active{transform:translateY(0)}@media(min-width:600px){.pwa-modal-backdrop{align-items:center}.pwa-modal{border-radius:var(--border-radius-xl)}}@media(max-width:480px){.pwa-banner{left:8px;right:8px;bottom:8px;padding:12px 14px;border-radius:14px}.pwa-banner-title{font-size:.875rem}.pwa-install-btn{padding:7px 14px;font-size:.8125rem}.pwa-modal-backdrop{padding:8px}.pwa-modal{border-radius:16px}.pwa-modal-header,.pwa-modal-body{padding:var(--spacing-md)}.pwa-modal-footer{padding:var(--spacing-sm) var(--spacing-md) var(--spacing-lg)}}.line-detail-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}.line-detail-header{background:var(--surface);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--border-color);display:flex;gap:var(--spacing-lg);align-items:flex-start}@media(max-width:768px){.line-detail-header{flex-direction:column;padding:var(--spacing-md)}.line-detail-header h2{font-size:1.5rem}}.line-detail-header h2{font-size:1.75rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-sm);letter-spacing:-.3px}.route-description{font-size:1rem;color:var(--text-secondary);line-height:1.6;margin-bottom:var(--spacing-lg)}.line-meta{display:flex;gap:var(--spacing-md);flex-wrap:wrap;margin-top:var(--spacing-md)}.stops-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-md)}.stop-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}@media(max-width:768px){.stop-view{gap:var(--spacing-md)}}.stop-schedule-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}@media(max-width:768px){.stop-schedule-view{gap:var(--spacing-md)}}.stop-schedule-header{background:var(--surface);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);display:flex;gap:var(--spacing-lg);align-items:center}.stop-schedule-header h2{font-size:2rem;font-weight:700;color:var(--text-primary);margin:0 0 var(--spacing-sm) 0}@media(max-width:768px){.stop-schedule-header h2{font-size:1.5rem}}.schedule-subtitle{font-size:.875rem;color:var(--text-secondary);margin:0;text-transform:uppercase;letter-spacing:.5px}.schedule-container,.search-route-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}.search-form{background:var(--surface);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--border-color);display:flex;flex-direction:column;gap:var(--spacing-xl);width:100%}.search-inputs{display:flex;gap:var(--spacing-lg);align-items:flex-end;flex-wrap:wrap;width:100%}@media(max-width:768px){.search-inputs{flex-direction:column;align-items:stretch;width:100%}}.search-input-group{flex:1;min-width:280px;width:100%;display:flex;flex-direction:column;gap:var(--spacing-sm);position:relative}@media(max-width:480px){.search-input-group{min-width:100%!important;width:100%}}.search-input-group label{font-size:1rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.search-input-group input,.search-input-group select{padding:var(--spacing-lg) var(--spacing-xl);background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--border-radius-md);font-family:var(--font-primary);font-size:1.125rem;transition:all var(--transition-fast);min-height:56px;width:100%;box-sizing:border-box}.search-input-group input::placeholder{color:var(--text-tertiary)}.search-input-group input:focus,.search-input-group select:focus{outline:none;border-color:var(--accent-primary);background:var(--bg-tertiary);box-shadow:0 0 0 3px #0000000d}.suggestions-list{position:absolute;top:100%;left:0;right:0;background:var(--bg-secondary);border:1px solid var(--border-color);border-top:none;border-radius:0 0 var(--border-radius-md) var(--border-radius-md);max-height:300px;overflow-y:auto;z-index:10;margin-top:-1px}.suggestion-item{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color);cursor:pointer;transition:background-color var(--transition-fast)}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover{background-color:var(--bg-tertiary);color:var(--accent-primary)}.search-info{background:var(--surface);padding:var(--spacing-lg);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);margin-bottom:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-lg)}.route-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);flex-wrap:wrap}.stop-info{flex:1;min-width:150px;display:flex;flex-direction:column;gap:var(--spacing-xs)}.stop-label{font-size:.875rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.stop-name{font-size:1.125rem;font-weight:700;color:var(--text-primary);word-break:break-word}.arrow{font-size:1.5rem;color:var(--accent-primary);margin:0 var(--spacing-sm)}@media(max-width:768px){.search-info{padding:var(--spacing-md)}.route-summary{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.stop-info{width:100%}.arrow{display:none}}@media(max-width:480px){.search-info{padding:var(--spacing-md);gap:var(--spacing-md)}.stop-label{font-size:.75rem}.stop-name{font-size:1rem}}.routes-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.routes-header h3{margin:0;flex:1;min-width:200px}.routes-container{display:flex;flex-direction:column;gap:var(--spacing-lg)}@media(max-width:768px){.routes-container{gap:var(--spacing-md)}}.route-card{padding:var(--spacing-lg)}.route-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--bg-tertiary)}@media(max-width:768px){.route-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}}.route-type{display:inline-block;background:var(--accent-info);color:#fff;padding:.375rem .75rem;border-radius:var(--border-radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase}.route-details{display:flex;gap:var(--spacing-lg);flex-wrap:wrap;margin-bottom:var(--spacing-lg)}@media(max-width:768px){.route-details{flex-direction:column;gap:var(--spacing-md)}}.route-stop{display:flex;flex-direction:column;gap:var(--spacing-sm);flex:1}.route-stop-title{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.route-stop-name{font-size:1.125rem;font-weight:600;color:var(--text-primary)}.route-stop-coords{font-size:.75rem;color:var(--text-tertiary);font-family:var(--font-mono)}.route-arrow{align-self:center;color:var(--text-secondary);font-size:1.5rem;flex-shrink:0}.route-lines{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;margin-top:var(--spacing-md)}.transfer-header{margin-bottom:var(--spacing-md)}.transfer-route{display:flex;flex-direction:column;gap:0}.transfer-leg{display:flex;flex-direction:column;gap:var(--spacing-sm)}.leg-details{padding-left:calc(48px + var(--spacing-md));font-size:.85rem;color:var(--text-secondary);line-height:1.5}.leg-details p{margin:0}.transfer-symbol{padding-left:calc(48px + var(--spacing-md));font-size:1.25rem;color:var(--text-tertiary);line-height:1;padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm)}.route-line-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-md)}.route-line-header-left{display:flex;align-items:flex-start;gap:var(--spacing-md);flex:1;min-width:0}.route-info h4{margin:0;font-size:1.1rem;font-weight:700;color:var(--text-primary)}.route-info .route-description{margin:2px 0 0;font-size:.85rem;color:var(--text-secondary)}.route-times h5{margin:0 0 var(--spacing-sm);font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.route-line-number{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--accent-primary);color:var(--bg-primary);border-radius:var(--border-radius-sm);font-weight:700;font-size:.875rem;font-family:var(--font-mono)}.route-line-name{font-size:.875rem;color:var(--text-primary);font-weight:500}.route-times{font-size:.875rem;color:var(--text-secondary);margin-top:var(--spacing-md)}.no-routes{background:var(--surface);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px dashed var(--bg-tertiary);text-align:center;color:var(--text-secondary)}.no-routes p{margin:0;font-size:1rem}.nearby-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}.nearby-header{background:var(--surface);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);display:flex;gap:var(--spacing-lg);align-items:center}@media(max-width:768px){.nearby-header{flex-direction:column}.nearby-header h2{font-size:1.5rem}}.location-icon{font-size:3rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))}.nearby-header h2{font-size:2rem;font-weight:700;color:var(--text-primary);margin:0}.location-info{font-size:.875rem;color:var(--text-secondary);margin:var(--spacing-sm) 0 0 0}.no-stops{background:var(--surface);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px dashed var(--bg-tertiary);text-align:center;color:var(--text-secondary)}.no-stops p{margin:0 0 var(--spacing-md) 0;font-size:1.125rem;font-weight:600;color:var(--text-primary)}.no-stops-subtitle{margin:0;font-size:.875rem;color:var(--text-secondary)}.nearby-stops-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.nearby-stop-item{background:var(--surface);padding:var(--spacing-md);border-radius:var(--border-radius-lg);border:1px solid var(--bg-tertiary);cursor:pointer;transition:all var(--transition-normal);display:flex;flex-direction:column;gap:var(--spacing-sm)}.nearby-stop-item:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);box-shadow:var(--shadow-md)}.nearby-stop-top{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.nearby-stop-top .stop-info{flex:1;min-width:0}.nearby-stop-top .stop-info h4{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0}.distance-inline{font-size:.8rem;color:var(--accent-primary);font-weight:600;font-family:var(--font-mono)}.nearby-stop-item .stop-lines{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.stop-distance-block{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-md);background:var(--bg-secondary);border-radius:var(--border-radius-md);min-width:80px;flex-shrink:0}.distance-value{font-size:1.5rem;font-weight:800;color:var(--accent-primary);font-family:var(--font-mono);line-height:1}.distance-label{font-size:.75rem;color:var(--text-secondary);text-align:center;font-weight:500}.stop-lines{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;margin-top:var(--spacing-sm)}@media(max-width:768px){.location-icon{font-size:2.25rem}}.admin-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}.admin-message{padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--border-radius-md);font-size:.875rem;font-weight:500}.admin-message.success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:#22c55e}.admin-message.error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.admin-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}@media(max-width:640px){.admin-cards{grid-template-columns:1fr}}.admin-card{background:var(--bg-secondary);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--border-color)}.admin-card h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--border-color)}.status-info{display:flex;flex-direction:column;gap:var(--spacing-sm)}.status-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0}.status-label{font-size:.8125rem;color:var(--text-secondary)}.status-value{font-size:.875rem;color:var(--text-primary);font-weight:500;display:flex;align-items:center;gap:var(--spacing-xs)}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.online{background:#22c55e;box-shadow:0 0 6px #22c55e80}.status-dot.offline{background:#ef4444;box-shadow:0 0 6px #ef444480}.admin-actions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.admin-button{padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--border-color);border-radius:var(--border-radius-md);font-weight:600;cursor:pointer;font-size:.875rem;font-family:var(--font-primary);transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--spacing-sm);white-space:nowrap}.admin-button.primary{background:var(--accent-primary);color:var(--bg-primary);border-color:var(--accent-primary)}.admin-button.primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-md)}.admin-button.secondary{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color)}.admin-button.secondary:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--border-color-hover)}.admin-button.danger{background:var(--accent-warning);color:var(--bg-primary);border-color:var(--accent-warning)}.admin-button:disabled{opacity:.6;cursor:not-allowed}.admin-button .spin{animation:spin 1s linear infinite}.logs-list{display:flex;flex-direction:column;gap:var(--spacing-xs);max-height:400px;overflow-y:auto}.log-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border-radius:var(--border-radius-sm);font-size:.8125rem}.log-time{color:var(--text-secondary);font-size:.75rem;white-space:nowrap;min-width:140px}.log-action{color:var(--text-primary);flex:1}.log-status{display:flex;align-items:center;gap:4px;font-size:.75rem;font-weight:500;white-space:nowrap}.log-status.changed{color:var(--accent-primary)}.log-status.unchanged{color:var(--text-secondary)}.no-logs{color:var(--text-secondary);font-size:.875rem;text-align:center;padding:var(--spacing-lg)}.admin-panel{background:var(--bg-secondary);padding:var(--spacing-xl);border-radius:var(--border-radius-lg);border:1px solid var(--border-color)}.admin-panel h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--border-color)}.login-view{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--spacing-xl)}.login-container{width:100%;max-width:400px}.login-container h2{font-size:1.75rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--spacing-xl);text-align:center}.login-form{background:var(--bg-secondary);padding:var(--spacing-2xl);border-radius:var(--border-radius-lg);border:1px solid var(--border-color);width:100%;box-shadow:var(--shadow-lg)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;font-size:.8125rem;color:var(--text-secondary);margin-bottom:var(--spacing-sm);font-weight:500}.login-form input{width:100%;padding:var(--spacing-md);margin-bottom:var(--spacing-lg);background:var(--bg-secondary);border:1px solid var(--bg-tertiary);color:var(--text-primary);border-radius:var(--border-radius-md);font-family:var(--font-primary);font-size:1rem;transition:all var(--transition-fast)}.login-form input::placeholder{color:var(--text-tertiary)}.login-form input:focus{outline:none;border-color:var(--accent-primary);background:var(--bg-tertiary);box-shadow:0 0 0 3px #0000000d}.login-form button{width:100%;padding:var(--spacing-md);background:var(--accent-primary);color:var(--bg-primary);border:none;border-radius:var(--border-radius-md);font-weight:700;font-size:1rem;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-md)}.login-form button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
