@tailwind base;@tailwind components;@tailwind utilities;html,body{height:100%;margin:0;padding:0;background:linear-gradient(-45deg,#e0f2fe,#bae6fd,#7dd3fc,#38bdf8);background-size:400% 400%;animation:gradientShift 15s ease infinite}@keyframes modalSlideIn{0%{opacity:0;transform:scale(.95) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}#root{min-height:100vh;display:flex;flex-direction:column}.app-container{min-height:100vh!important;width:100%!important;display:flex!important;flex-direction:column!important}@layer components{.bottom-navigation{position:fixed;bottom:0;left:0;right:0;background-color:#fff;border-top:1px solid #e5e7eb;z-index:9999;padding-bottom:max(12px,env(safe-area-inset-bottom,12px));padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);box-shadow:0 -4px 20px #00000026}.bottom-nav-container{display:flex;justify-content:space-around;align-items:center;padding:8px 4px;max-width:100%;min-height:60px}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px;background:transparent;border:0;cursor:pointer;transition:all .2s;position:relative;min-width:50px;min-height:56px;flex:1;max-width:72px;border-radius:8px;color:#6b7280;text-decoration:none}.bottom-nav-item:not(.disabled):hover{background-color:#eff6ff}.bottom-nav-item.active{color:#2563eb;background-color:#eff6ff}.bottom-nav-item.disabled{opacity:.4;cursor:not-allowed}.nav-icon{font-size:20px;line-height:1}.nav-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap}.nav-badge{position:absolute;top:-4px;right:-4px;background-color:#ef4444;color:#fff;font-size:10px;border-radius:50%;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-weight:700}@media(max-width:768px){.app-container{padding-bottom:90px!important}main{padding-bottom:90px!important}}@media(min-width:769px){.app-container{padding-bottom:0}}@media(max-width:768px){.bottom-navigation{display:block!important}.bottom-nav-item{padding:6px 4px}.nav-label{font-size:10px}.nav-icon{font-size:18px}}@media(max-width:380px){.bottom-nav-item{padding:6px 2px;min-width:44px;min-height:44px}.nav-label{font-size:9px}.nav-icon{font-size:16px}}@media(min-width:769px){.bottom-navigation{display:none}.app-container{padding-bottom:0}}.connecting-route-card{@apply bg-white rounded-lg shadow-md mb-6 p-6 cursor-pointer transition-all duration-300 hover:shadow-lg hover:-translate-y-1 border border-transparent hover:border-blue-100 dark:bg-gray-800 dark:hover:border-blue-800 dark:hover:shadow-blue-900/20;}.connecting-route-card.expanded{@apply shadow-xl ring-2 ring-blue-200 ring-opacity-50 dark:ring-blue-700 dark:ring-opacity-40;}.route-summary{@apply flex justify-between items-start gap-4 flex-wrap sm:flex-nowrap;}.route-main-info h3{@apply text-lg font-semibold mb-2 text-gray-800 dark:text-gray-100;}.route-wait-time{@apply mt-2 text-amber-600 font-medium flex items-center gap-1.5 dark:text-amber-500;}.route-duration{@apply text-blue-600 font-medium flex items-center gap-1.5 dark:text-blue-400;}.route-details{@apply mt-6 pt-6 border-t border-gray-200 dark:border-gray-700;}.connection-info{@apply mb-6 text-center;}.connection-info h4{@apply text-base text-gray-600 font-medium;}.legs-container{@apply flex flex-col gap-6 relative md:flex-row md:items-center md:gap-4;}.leg-card{@apply flex-1 bg-gradient-to-br from-blue-50 to-white rounded-lg p-5 shadow-sm border-l-4 border-blue-600 hover:bg-blue-100 hover:from-blue-100 hover:to-blue-50 transition-colors duration-200 dark:from-blue-900/20 dark:to-gray-800 dark:hover:from-blue-900/30 dark:border-blue-500;}.leg-card h4{@apply text-blue-600 mb-4 pb-2 border-b border-dashed border-gray-300 font-medium;}.leg-details p{@apply mb-2 text-gray-700;}.bus-time{@apply flex justify-between mt-4 pt-4 border-t border-dashed border-gray-300;}.departure,.arrival{@apply flex flex-col items-center;}.departure span,.arrival span{@apply text-sm text-gray-600 mb-1;}.departure strong,.arrival strong{@apply text-base text-blue-600 font-semibold;}.app-header{@apply sticky top-0 z-10 bg-white/90 backdrop-blur-md border-b border-gray-200 py-4 px-6 shadow-sm dark:bg-gray-900/90 dark:border-gray-800;}.header-content{@apply max-w-7xl mx-auto flex justify-between items-center flex-wrap gap-4;}.header-content h1{@apply text-xl md:text-2xl font-semibold text-blue-600 dark:text-blue-400;}.header-actions{@apply flex justify-end items-center gap-4 flex-wrap;}.location-toggle{@apply flex items-center gap-2;}.toggle-switch{@apply relative inline-block w-12 h-6;}.toggle-switch input{@apply opacity-0 w-0 h-0;}.toggle-slider{@apply absolute cursor-pointer inset-0 bg-gray-300 rounded-full transition-all duration-300 before:absolute before:content-[""] before:h-5 before:w-5 before:left-0.5 before:bottom-0.5 before:bg-white before:rounded-full before:transition-all before:duration-300 dark:bg-gray-700;}.toggle-switch input:checked+.toggle-slider{@apply bg-blue-600;}.toggle-switch input:checked+.toggle-slider:before{@apply transform translate-x-6;}.toggle-label{@apply text-sm font-medium text-gray-700 dark:text-gray-300;}.home-link{@apply text-blue-600 hover:text-blue-700 font-medium dark:text-blue-400 dark:hover:text-blue-300;}.search-form{@apply bg-white rounded-xl shadow-md p-6 mb-8 border border-gray-100 dark:bg-gray-800 dark:border-gray-700;}.form-group{@apply mb-4;}.form-label{@apply block mb-2 text-sm font-medium text-gray-700 dark:text-gray-300;}.form-control{@apply w-full px-4 py-2 rounded-lg border border-gray-300 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 bg-white dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:focus:border-blue-500;}.search-actions{@apply flex justify-between mt-6 items-center;}.search-button{@apply bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-6 rounded-lg transition-all duration-200 hover:shadow-lg hover:shadow-blue-600/20 dark:bg-blue-700 dark:hover:bg-blue-600;}.bus-list{@apply divide-y divide-gray-200 dark:divide-gray-700;}.bus-list-header{@apply mb-4 flex justify-between items-center;}.bus-list-title{@apply text-xl font-semibold text-gray-800 dark:text-gray-100;}.bus-list-filters{@apply flex gap-2;}.filter-button{@apply px-3 py-1 text-sm rounded-full border border-gray-300 bg-white hover:bg-gray-100 transition-colors dark:bg-gray-800 dark:border-gray-700 dark:hover:bg-gray-700;}.filter-button.active{@apply border-blue-500 bg-blue-50 text-blue-700 dark:border-blue-600 dark:bg-blue-900/30 dark:text-blue-400;}.no-buses{@apply py-8 text-center text-gray-500 italic dark:text-gray-400;}.contribute-route-btn{@apply mt-4 flex items-center justify-center gap-2 text-sm font-medium px-4 py-2 rounded-lg bg-yellow-50 text-yellow-700 border border-yellow-300 hover:bg-yellow-100 transition-all duration-200 dark:bg-yellow-900/20 dark:text-yellow-400 dark:border-yellow-700/50 dark:hover:bg-yellow-900/40;}.contribute-route-btn svg{@apply w-4 h-4;}.contribute-route-info{@apply text-sm text-gray-600 mt-2 dark:text-gray-400;}.bus-item{@apply py-4 animate-[fadeIn_0.3s_ease-in-out];}.bus-header{@apply flex justify-between items-start mb-2;}.bus-route{@apply text-lg font-medium text-gray-800 dark:text-gray-200;}.bus-number{@apply text-sm font-medium px-2 py-0.5 bg-blue-100 text-blue-800 rounded-md dark:bg-blue-900/50 dark:text-blue-300;}.bus-details{@apply flex flex-col gap-1 mt-2;}.bus-stops{@apply mt-4 space-y-2;}.stop-item{@apply flex justify-between items-center py-1 border-l-2 border-gray-300 pl-3 dark:border-gray-700;}.stop-item.current{@apply border-green-500;}.stop-name{@apply text-gray-800 dark:text-gray-200;}.stop-times{@apply flex gap-2 text-sm;}.stop-time{@apply text-gray-500 dark:text-gray-400;}.stop-time.estimate{@apply font-medium text-green-600 dark:text-green-500;}.error-container{@apply bg-red-50 border-l-4 border-red-500 p-4 rounded-md my-4 dark:bg-red-900/20 dark:border-red-700;}.error-title{@apply text-red-800 font-medium mb-2 dark:text-red-400;}.error-message{@apply text-red-700 dark:text-red-300;}.error-retry{@apply mt-2 text-sm bg-white text-red-700 border border-red-300 hover:bg-red-50 px-3 py-1 rounded dark:bg-gray-800 dark:text-red-400 dark:border-red-700 dark:hover:bg-red-900/30;}.loading-container{@apply flex flex-col items-center justify-center py-12;}.loading-spinner{@apply w-12 h-12 border-4 border-gray-300 border-t-blue-600 rounded-full animate-spin dark:border-gray-700 dark:border-t-blue-500;}.loading-text{@apply mt-4 text-gray-600 font-medium dark:text-gray-400;}.app-footer{@apply mt-auto py-6 px-6 border-t border-gray-200 dark:border-gray-800;}.footer-content{@apply max-w-7xl mx-auto flex flex-col md:flex-row justify-between items-center gap-4;}.footer-links{@apply flex gap-6 flex-wrap justify-center;}.footer-link{@apply text-sm text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-200;}.footer-copyright{@apply text-sm text-gray-500 dark:text-gray-500;}.offline-banner{@apply fixed bottom-0 left-0 right-0 bg-yellow-500 text-yellow-900 p-3 text-center font-medium transform transition-transform duration-300 z-30;}.offline-banner.hidden{@apply translate-y-full;}.map-container{@apply relative w-full rounded-xl overflow-hidden shadow-lg h-[400px] md:h-[500px] border border-gray-100 dark:border-gray-700 transition-all duration-300 hover:shadow-xl;}.map-loading{@apply absolute inset-0 bg-white/80 backdrop-blur-sm flex justify-center items-center z-10 font-semibold text-blue-600;}.map-error{@apply p-4 bg-red-50 text-red-700 rounded-lg mb-4 text-center border border-red-100;}.wait-time-indicator{@apply flex justify-center items-center relative py-2;}.wait-time-badge{@apply bg-amber-50 border-2 border-amber-500 rounded-lg px-6 py-3 flex flex-col items-center shadow-sm;}.wait-time-badge span{@apply text-sm text-amber-700 mb-1;}.wait-time-badge strong{@apply text-base text-amber-700 font-bold;}.interactive-list>*{@apply animate-[slideIn_0.4s_ease-out_forwards] opacity-0;}.interactive-list>*:nth-child(1){@apply [animation-delay:.1s];}.interactive-list>*:nth-child(2){@apply [animation-delay:.2s];}.interactive-list>*:nth-child(3){@apply [animation-delay:.3s];}.interactive-list>*:nth-child(4){@apply [animation-delay:.4s];}.interactive-list>*:nth-child(5){@apply [animation-delay:.5s];}.card{@apply bg-gradient-to-br from-white/20 to-white/5 backdrop-blur border border-white/20 shadow-md transition-all duration-300 hover:shadow-lg hover:border-blue-200/50 hover:scale-[1.01] dark:from-white/5 dark:to-white/0 dark:border-white/5 dark:hover:border-blue-800/30;}.active{@apply relative text-blue-600 font-medium after:content-[""] after:absolute after:bottom-[-2px] after:left-0 after:w-full after:h-0.5 after:bg-current after:rounded-full after:transition-all after:duration-300 dark:text-blue-400;}.focus-style{@apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-blue-400 dark:focus-visible:ring-offset-gray-900;}.loading-skeleton{@apply bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:400%_100%] animate-[shimmer_2s_infinite] rounded dark:from-gray-700 dark:via-gray-600 dark:to-gray-700;}html.lang-ta .stop-name{@apply font-["Noto_Sans_Tamil","Latha",sans-serif] leading-relaxed py-0.5;}html.lang-ta .stop-times{@apply min-w-[110px];}html.lang-ta .departure span,html.lang-ta .arrival span,html.lang-ta .info-label{@apply font-["Noto_Sans_Tamil","Latha",sans-serif];}.stop-item .stop-times div{@apply text-right;}html.lang-ta{@apply text-[15px];}html.lang-ta .bus-item .bus-header{@apply pb-5;}.modern-language-switcher{@apply flex flex-col items-center gap-2;}.language-selector-wrapper{@apply relative bg-white rounded-2xl p-1.5 shadow-lg border border-gray-100 dark:bg-gray-800 dark:border-gray-700 transition-all duration-300 hover:shadow-xl backdrop-blur-md bg-white/90 dark:bg-gray-800/90;}.language-selector{@apply relative flex z-20;}.lang-option{@apply relative flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-medium transition-all duration-300 text-gray-600 hover:text-gray-800 bg-transparent border-none cursor-pointer dark:text-gray-400 dark:hover:text-gray-200 min-w-[110px] justify-start transform-gpu will-change-transform;}.lang-option:hover:not(.active){@apply bg-gray-50/80 dark:bg-gray-700/50 scale-[1.02];}.lang-option.active{@apply text-white font-semibold transform scale-105 z-30 relative;color:#fff!important}.lang-option.animating{@apply transition-all duration-500 ease-out;}.lang-icon-container{@apply relative flex items-center justify-center w-8 h-8;}.lang-icon{@apply text-xl filter drop-shadow-sm transition-all duration-300 relative z-10;}.icon-glow{@apply absolute inset-0 rounded-full opacity-0 transition-all duration-300 bg-gradient-to-br from-blue-400/20 to-purple-500/20 blur-sm;}.lang-option.active .icon-glow{@apply opacity-100 scale-150;}.lang-option.active .lang-icon{@apply transform scale-110 filter drop-shadow-lg;}.lang-text-container{@apply flex flex-col leading-tight;}.lang-name{@apply text-sm font-semibold tracking-wide;}.lang-code{@apply text-xs opacity-70 font-medium;}.lang-option.active .lang-code{@apply opacity-90 font-bold;}.active-indicator{@apply absolute right-2 top-1/2 transform -translate-y-1/2 flex items-center justify-center;}.indicator-dot{@apply w-2 h-2 rounded-full bg-current opacity-0 transition-all duration-300 relative z-10;}.indicator-ripple{@apply absolute inset-0 rounded-full opacity-0 transition-all duration-500 bg-current animate-ping;}.lang-option.active .indicator-dot{@apply opacity-100 scale-125;}.lang-option.active .indicator-ripple{@apply opacity-30;}.bg-slider{@apply absolute top-1.5 bottom-1.5 w-[calc(50% - 6px)] rounded-xl transition-all duration-500 ease-out z-10 overflow-hidden;}.slider-gradient{@apply w-full h-full bg-gradient-to-br opacity-95 transition-all duration-500;}.bg-slider.slide-english{@apply left-1.5;}.bg-slider.slide-english .slider-gradient{@apply from-blue-500 via-blue-600 to-indigo-600 shadow-lg shadow-blue-500/30;}.bg-slider.slide-tamil{@apply right-1.5 left-auto;}.bg-slider.slide-tamil .slider-gradient{@apply from-red-500 via-red-600 to-rose-600 shadow-lg shadow-red-500/30;}.language-status{@apply flex items-center gap-2 px-3 py-1.5 bg-gray-50 rounded-full text-xs font-medium text-gray-600 border border-gray-200 transition-all duration-300 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-600;}.status-dot{@apply w-2 h-2 rounded-full bg-green-500 animate-pulse;}.status-text{@apply font-medium tracking-wide;}.lang-option[aria-label*=தமிழ்] .lang-name{@apply font-["Noto_Sans_Tamil","Latha",sans-serif] leading-relaxed text-base;}.status-text{@apply font-["Noto_Sans_Tamil","Latha",sans-serif] when-tamil;}@media(max-width:640px){.language-selector-wrapper{@apply w-full max-w-xs mx-auto;}.lang-option{@apply flex-1 min-w-0 px-3 py-2.5;}.lang-text-container{@apply items-center;}.lang-name{@apply text-xs;}.lang-code{@apply text-[10px];}.language-status{@apply px-2 py-1 text-xs;}.status-dot{@apply w-1.5 h-1.5;}}@media(min-width:641px)and (max-width:1024px){.lang-option{@apply px-3 py-2.5 min-w-[100px];}.lang-name{@apply text-sm;}}@media(hover:hover){.language-selector-wrapper:hover{@apply shadow-2xl border-blue-200 dark:border-blue-700;}.lang-option:hover:not(.active) .lang-icon{@apply transform scale-105;}.lang-option:hover:not(.active) .icon-glow{@apply opacity-50 scale-125;}}.lang-option:focus-visible{@apply outline-none ring-2 ring-blue-500 ring-offset-2 ring-offset-white dark:ring-blue-400 dark:ring-offset-gray-800 z-40;}@media(prefers-contrast:high){.language-selector-wrapper{@apply border-2 border-gray-800 dark:border-gray-200;}.bg-slider.slide-english .slider-gradient{@apply from-blue-700 to-blue-800;}.bg-slider.slide-tamil .slider-gradient{@apply from-red-700 to-red-800;}.lang-option.active{@apply text-white font-bold;}.language-status{@apply border-2 border-gray-800 dark:border-gray-200;}}@media(prefers-reduced-motion:reduce){.bg-slider,.lang-option,.icon-glow,.indicator-ripple,.status-dot{@apply transition-none animate-none;}.lang-option.active{@apply transform-none;}.status-dot{@apply animate-none;}}@media(prefers-color-scheme:dark){.language-selector-wrapper{@apply bg-gray-800/95 border-gray-600;}.lang-option{@apply text-gray-300;}.lang-option:hover:not(.active){@apply bg-gray-700/60 text-gray-100;}.language-status{@apply bg-gray-700/80 text-gray-200 border-gray-500;}}.language-selector-wrapper{@apply backdrop-blur-xl bg-white/80 dark:bg-gray-800/80 border border-white/20 dark:border-gray-600/30;}.modern-language-switcher{@apply animate-[fadeInUp_0.5s_ease-out];}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.lang-option.active{@apply animate-[subtlePulse_2s_ease-in-out_infinite];}@keyframes subtlePulse{0%,to{transform:scale(1.05)}50%{transform:scale(1.08)}}}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;@apply text-gray-900 bg-gradient-to-b from-gray-50 to-white;@apply dark:text-gray-100 dark:from-gray-900 dark:to-gray-950;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{@apply m-0 flex min-w-[320px] min-h-screen;}a{@apply font-medium text-blue-600 hover:text-blue-700 transition-colors duration-200 relative after:absolute after:bottom-0 after:left-0 after:w-0 after:h-[1px] after:bg-current after:transition-all after:duration-300 hover:after:w-full dark:text-blue-400 dark:hover:text-blue-300;}button{@apply rounded-lg border border-transparent px-4 py-2 text-sm font-medium bg-blue-600 text-white cursor-pointer transition-all duration-200 hover:bg-blue-700 hover:shadow-md hover:shadow-blue-600/20 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 active:scale-[.98] disabled:opacity-70 disabled:cursor-not-allowed dark:bg-blue-700 dark:hover:bg-blue-600 dark:hover:shadow-blue-900/30;}h1{@apply text-4xl font-bold leading-tight;}html{@apply scroll-smooth scroll-pt-8;}::-moz-selection{@apply bg-blue-200 text-inherit;@apply dark:bg-blue-800;}::selection{@apply bg-blue-200 text-inherit;@apply dark:bg-blue-800;}@media(min-width:640px){::-webkit-scrollbar{@apply w-2 h-2;}::-webkit-scrollbar-track{@apply bg-gray-100 rounded;@apply dark:bg-gray-800;}::-webkit-scrollbar-thumb{@apply bg-gray-300 rounded transition-colors;@apply dark:bg-gray-600;}::-webkit-scrollbar-thumb:hover{@apply bg-gray-400;@apply dark:bg-gray-500;}}@keyframes slideIn{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-slide-up{animation:slideUp .3s ease-out forwards}.animate-fade-in{animation:fadeIn .2s ease-out forwards}.touch-manipulation{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.active\:scale-95:active{transform:scale(.95)}.active\:scale-98:active{transform:scale(.98)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0)}@media(hover:none){.hover-only{@apply hidden;}}.transit-search-form{padding:var(--space-6);margin:var(--space-4) 0}.transit-form-header{margin-bottom:var(--space-6)}@media(max-width:768px){.transit-search-form{padding:var(--space-4);margin:var(--space-2) 0}.transit-form-header{margin-bottom:var(--space-3)}}@media(max-width:640px){.transit-search-form{padding:var(--space-3);margin:var(--space-2) 0}.transit-form-header{margin-bottom:var(--space-2)}.text-title-2{font-size:1.25rem}}@screen md{.wait-time-indicator::before,.wait-time-indicator::after {@apply content-[""] h-0.5 bg-gradient-to-r from-gray-300 to-gray-400 w-8 absolute;} .wait-time-indicator::before {@apply left-[-32px];} .wait-time-indicator::after {@apply right-[-32px];} .legs-container::after {@apply content-[""] absolute top-1/2 left-4 right-4 h-0.5 bg-gray-200 dark:bg-gray-700 -z-10;}}@supports (-webkit-touch-callout: none){.h-screen,.min-h-screen{height:-webkit-fill-available}input,select,textarea{font-size:16px!important}.scroll-container{-webkit-overflow-scrolling:touch}.sticky{position:sticky}}@supports not (-webkit-touch-callout: none) and (-webkit-tap-highlight-color: transparent){*{-webkit-tap-highlight-color:transparent}input[type=date],input[type=time],input[type=datetime-local]{padding-top:.1rem;padding-bottom:.1rem}}@supports (-webkit-appearance:none){html,body{-webkit-overflow-scrolling:touch}.flex{display:flex}}@supports (-moz-appearance:none){select{-moz-appearance:none;text-indent:.01px;text-overflow:""}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}button,a,input[type=button],input[type=submit]{min-height:44px;min-width:44px}.fixed{backface-visibility:hidden}img,video,svg{max-width:100%;height:auto}@media screen and (orientation:landscape)and (max-height:500px){.landscape-adjust{padding-top:0!important;padding-bottom:0!important;max-height:100vh;overflow-y:auto}}.enhanced-search-layout{display:flex;flex-direction:column;gap:var(--space-md);width:100%}.tracker-panel{min-height:300px}.tracker-section{margin-bottom:var(--space-md)}.tracker-section label{display:block;margin-bottom:var(--space-xs);font-weight:var(--font-weight-medium);color:var(--text-color)}.tracker-select{width:100%;padding:var(--space-sm);border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-primary);color:var(--text-color)}.search-results-container{width:100%}.search-results-header{text-align:center;margin-bottom:var(--space-lg)}.search-results-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--text-color);margin-bottom:var(--space-sm)}.search-results-content{display:flex;flex-direction:column;gap:var(--space-lg)}.bus-list-section{flex:1}.view-connecting-routes-button{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-md) var(--space-lg);background-color:var(--primary-color);color:var(--bg-primary);text-decoration:none;border-radius:var(--radius-lg);font-weight:var(--font-weight-semibold);transition:var(--transition-normal);box-shadow:var(--shadow-md)}.view-connecting-routes-button:hover{background-color:var(--secondary-color);transform:translateY(-1px);box-shadow:var(--shadow-lg)}.connecting-routes{width:100%}.connecting-routes-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-color);margin-bottom:var(--space-sm);text-align:center}.connecting-routes-subtitle{font-size:var(--font-size-base);color:var(--text-secondary);text-align:center;margin-bottom:var(--space-lg)}@supports (padding: max(0px)){.app-header{padding-top:max(var(--space-sm),env(safe-area-inset-top))}.bottom-navigation{padding-bottom:max(8px,env(safe-area-inset-bottom));padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}}.ios .form-input,.ios .form-select{border-radius:var(--space-sm)}.android .feature-card{box-shadow:var(--shadow-lg)}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes progressFlow{0%{width:0%}50%{width:60%}to{width:100%}}.search-options{margin:var(--space-md) 0;padding:var(--space-md);background-color:var(--bg-secondary, #f8f9fa);border-radius:var(--radius-md);border:1px solid var(--border-color, #e0e0e0)}.toggle-container{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.toggle-checkbox{position:absolute;opacity:0;width:0;height:0}.toggle-slider{position:relative;display:inline-block;width:44px;height:24px;background-color:#ccc;border-radius:24px;transition:background-color .3s ease;flex-shrink:0}.toggle-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background-color:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 2px 4px #0003}.toggle-checkbox:checked+.toggle-slider{background-color:var(--primary-color, #007bff)}.toggle-checkbox:checked+.toggle-slider:before{transform:translate(20px)}.toggle-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-color);line-height:1.4}.toggle-description{margin-top:var(--space-xs);font-size:var(--font-size-xs);color:var(--text-secondary);line-height:1.3;opacity:.8}@media(max-width:768px){.search-options{margin:var(--space-sm) 0;padding:var(--space-sm)}.toggle-label{font-size:var(--font-size-xs)}.toggle-description{font-size:11px}}.error-boundary{padding:2rem;margin:1rem 0;border:1px solid #ff6b6b;border-radius:8px;background-color:#fff5f5;text-align:center}.error-boundary-content h2{color:#d63031;margin-bottom:1rem;font-size:1.5rem}.error-boundary-content p{color:#636e72;margin-bottom:1.5rem}.error-details{text-align:left;margin:1rem 0;padding:1rem;background-color:#f8f9fa;border-radius:4px;border:1px solid #dee2e6}.error-details summary{cursor:pointer;font-weight:600;color:#495057;margin-bottom:.5rem}.error-details pre{font-size:.875rem;color:#dc3545;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.retry-button{background-color:#007bff;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.retry-button:hover{background-color:#0056b3}.retry-button.secondary{background-color:#6c757d;margin-left:.5rem}.retry-button.secondary:hover{background-color:#545b62}.map-error-fallback{display:flex;align-items:center;justify-content:center;min-height:400px;padding:2rem;background-color:#f8f9fa;border-radius:10px;border:2px dashed #dee2e6}.map-error-content{text-align:center;max-width:400px}.map-error-icon{font-size:3rem;margin-bottom:1rem;opacity:.6}.map-error-content h3{color:#495057;margin-bottom:.5rem;font-size:1.25rem}.map-error-content p{color:#6c757d;margin-bottom:1.5rem}.map-error-actions{display:flex;gap:.5rem;justify-content:center;margin-bottom:1rem}.map-error-help .help-text{font-size:.875rem;color:#868e96;font-style:italic}@media(max-width:768px){.error-boundary{padding:1rem;margin:.5rem}.map-error-fallback{min-height:300px;padding:1rem}.map-error-actions{flex-direction:column;align-items:center}.retry-button.secondary{margin-left:0;margin-top:.5rem}}:root{--transit-primary: #14B8A6;--transit-primary-dark: #0D9488;--transit-primary-light: #5eead4;--transit-secondary: #10B981;--transit-warning: #F59E0B;--transit-danger: #EF4444;--transit-bg: #F2F2F7;--transit-surface: #FFFFFF;--transit-surface-elevated: #FFFFFF;--transit-text-primary: #1D1D1F;--transit-text-secondary: #86868B;--transit-text-tertiary: #C7C7CC;--transit-divider: #E5E5EA;--status-on-time: #00C853;--status-delayed: #FFFFFF;--status-cancelled: #FF3B30;--status-unknown: #86868B;--route-line: #007AFF;--bus-icon: #5856D6;--stop-marker: #FF2D92;--font-family-primary: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, Arial, sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", monospace;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-lg: 17px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 28px;--font-regular: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .35s ease}@media(prefers-color-scheme:dark){:root{--transit-bg: #000000;--transit-surface: #1C1C1E;--transit-surface-elevated: #2C2C2E;--transit-text-primary: #FFFFFF;--transit-text-secondary: #AEAEB2;--transit-text-tertiary: #48484A;--transit-divider: #38383A}}.transit-app{font-family:var(--font-family-primary);background-color:var(--transit-bg);color:var(--transit-text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.transit-card{background:linear-gradient(135deg,#fffffff2,#f0f9fff2);border-radius:var(--radius-2xl);box-shadow:0 8px 25px #10b9811f;overflow:hidden;transition:var(--transition-base);border:1.5px solid rgba(16,185,129,.15);backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm)}.transit-card:hover{box-shadow:0 12px 35px #10b9812e;transform:translateY(-3px);border-color:#10b98140}.transit-card.elevated{background:linear-gradient(135deg,#fffffffa,#f5fafffa);box-shadow:0 15px 50px #10b98133;border:1.5px solid rgba(16,185,129,.2)}.text-title-1{font-size:var(--text-3xl);font-weight:var(--font-bold);line-height:1.2}.text-title-2{font-size:var(--text-2xl);font-weight:var(--font-semibold);line-height:1.25}.text-title-3{font-size:var(--text-xl);font-weight:var(--font-semibold);line-height:1.3}.text-body{font-size:var(--text-base);font-weight:var(--font-regular);line-height:1.4}.text-caption{font-size:var(--text-sm);font-weight:var(--font-regular);color:var(--transit-text-secondary);line-height:1.3}.text-footnote{font-size:var(--text-xs);font-weight:var(--font-regular);color:var(--transit-text-tertiary);line-height:1.2}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.5px}.status-badge.on-time{background:#00c8531a;color:var(--status-on-time)}.status-badge.delayed{background:#ff95001a;color:var(--status-delayed)}.status-badge.cancelled{background:#ff3b301a;color:var(--status-cancelled)}.transit-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-family:var(--font-family-primary);font-size:var(--text-base);font-weight:var(--font-medium);border:none;cursor:pointer;transition:var(--transition-base);text-decoration:none;outline:none}.transit-button:focus{box-shadow:0 0 0 3px #0066ff4d}.transit-button.primary{background:var(--transit-primary);color:#fff}.transit-button.primary:hover{background:var(--transit-primary-dark)}.transit-button.secondary{background:var(--transit-surface-elevated);color:var(--transit-text-primary);border:1px solid var(--transit-divider)}.transit-button.secondary:hover{background:var(--transit-divider)}.transit-input{width:100%;padding:var(--space-4);padding-right:56px;border:1px solid var(--transit-divider);border-radius:var(--radius-md);font-family:var(--font-family-primary);font-size:var(--text-base);background:var(--transit-surface);color:var(--transit-text-primary);transition:var(--transition-base)}.transit-input:focus{outline:none;border-color:var(--transit-primary);box-shadow:0 0 0 3px #0066ff1a}.transit-input::-moz-placeholder{color:var(--transit-text-tertiary)}.transit-input::placeholder{color:var(--transit-text-tertiary)}.transit-input.error{border-color:var(--semantic-error);background:var(--semantic-error-bg)}.transit-input.error:focus{border-color:var(--semantic-error);box-shadow:0 0 0 3px #ef44441a}.input-error-message{display:flex;align-items:center;gap:6px;margin-top:6px;padding:8px 12px;background:var(--semantic-error-bg);border:1px solid var(--semantic-error-border);border-radius:6px;color:var(--semantic-error);font-size:13px;font-weight:500}.input-success-message{display:flex;align-items:center;gap:6px;margin-top:6px;padding:8px 12px;background:var(--semantic-success-bg);border:1px solid var(--semantic-success-border);border-radius:6px;color:var(--semantic-success);font-size:13px;font-weight:500}.stack{display:flex;flex-direction:column}.stack-sm>*+*{margin-top:var(--space-2)}.stack-md>*+*{margin-top:var(--space-4)}.stack-lg>*+*{margin-top:var(--space-6)}.row-sm{gap:var(--space-2)}.row-md{gap:var(--space-4)}.row-lg{gap:var(--space-6)}.container{max-width:1200px;margin:0 auto;padding:0 var(--space-4)}.container-sm{max-width:640px;margin:0 auto;padding:0 var(--space-4)}.transit-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:12px}.transit-icon.bus{background:var(--bus-icon);color:#fff}.transit-icon.stop{background:var(--stop-marker);color:#fff}.fade-in{animation:fadeIn var(--transition-base) ease}.slide-up{animation:slideUp var(--transition-base) ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(min-width:769px){.container{padding:0 var(--space-4)}.transit-card{padding:var(--space-6);margin:var(--space-4) 0}.stack-lg>*+*{margin-top:var(--space-6)}.stack-md>*+*{margin-top:var(--space-4)}.stack-sm>*+*{margin-top:var(--space-2)}}@media(max-width:768px){.container{padding:0 var(--space-3)}.transit-card{padding:var(--space-5);margin:var(--space-3) 0}.stack-lg>*+*{margin-top:var(--space-4)}.stack-md>*+*{margin-top:var(--space-3)}.stack-sm>*+*{margin-top:var(--space-2)}.text-title-1{font-size:var(--text-2xl)}.text-title-2{font-size:var(--text-xl)}.text-title-3{font-size:var(--text-lg)}}@media(max-width:640px){.container{padding:0 var(--space-2)}.transit-card{padding:var(--space-3);margin:var(--space-2) 0;border-radius:var(--radius-md)}.stack-lg>*+*{margin-top:var(--space-3)}.stack-md>*+*{margin-top:var(--space-2)}.stack-sm>*+*{margin-top:var(--space-1)}.text-title-1{font-size:var(--text-xl)}.text-title-2{font-size:var(--text-lg)}.text-title-3{font-size:var(--text-base)}.text-body{font-size:var(--text-sm)}}@media(max-width:480px){.transit-card{padding:var(--space-2) var(--space-3)}.container{padding:0 var(--space-2)}}@keyframes spin{to{transform:rotate(360deg)}}.row{display:flex;align-items:center}.text-headline{font-size:var(--text-lg);font-weight:var(--font-semibold);line-height:1.35}.transit-bus-card{background:#fffc;backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.2);overflow:hidden;transition:var(--transition-base);margin-bottom:var(--space-2);position:relative;cursor:pointer;width:100%;text-align:left;font-family:inherit;padding:0;outline:none;box-shadow:var(--shadow-md)}.transit-bus-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-4px);background:#fffffff2;backdrop-filter:blur(15px) saturate(200%);border-color:#0066ff4d}.transit-bus-card.selected{border-color:#0066ff4d;box-shadow:0 4px 16px #0066ff26,0 0 0 1px #06f3}.transit-bus-card:active{transform:translateY(0);transition:transform .1s ease}.transit-card-header{padding:var(--space-4) var(--space-4) var(--space-3) var(--space-4);border-bottom:none;background:linear-gradient(135deg,#fafbff,#fff)}.bus-info-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);width:100%;flex-wrap:nowrap;overflow-x:auto}.bus-number-display{display:flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:60px;height:36px;padding:0 var(--space-3);background:var(--transit-primary);color:#fff;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-bold);text-align:center}.bus-type-display{display:flex;align-items:center;justify-content:center;flex:0 0 auto;height:36px;padding:0 var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.5px;text-align:center;white-space:nowrap}.status-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:12px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.status-pill.on-time{background:var(--semantic-success-bg);color:var(--semantic-success);border:1px solid var(--semantic-success-border)}.status-pill.delayed{background:var(--semantic-warning-bg);color:var(--semantic-warning);border:1px solid var(--semantic-warning-border)}.status-pill.cancelled{background:var(--semantic-error-bg);color:var(--semantic-error);border:1px solid var(--semantic-error-border)}.status-pill.unknown{background:var(--transit-surface-elevated);color:var(--transit-text-secondary);border:1px solid var(--transit-divider)}.bus-name-display{display:flex;align-items:center;flex:1;height:36px;padding:0 var(--space-3);background:var(--transit-surface-elevated);border:1px solid var(--transit-divider);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--transit-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journey-layout{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.cities-progress-row{display:flex;align-items:center;gap:var(--space-3);width:100%}.city-name{flex:0 0 auto;font-size:var(--text-base);font-weight:var(--font-bold);color:var(--transit-text-primary);text-align:center;min-width:80px}.city-name.start-city{text-align:left}.city-name.end-city{text-align:right}.progress-container{flex:1;display:flex;align-items:center;margin:0 var(--space-2)}.time-duration-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%}.departure-time,.arrival-time{flex:0 0 auto;font-size:36px;font-weight:700;color:var(--transit-text-primary);font-variant-numeric:tabular-nums;min-width:105px;letter-spacing:-.8px}.departure-time{text-align:left}.arrival-time{text-align:right}.journey-duration-center{flex:1;text-align:center;font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--transit-text-secondary);padding:var(--space-1) var(--space-3);background:var(--transit-surface-elevated);border-radius:var(--radius-sm);border:1px solid var(--transit-divider)}.stops-row{display:flex;justify-content:space-between;align-items:center;width:100%;gap:8px;flex-wrap:wrap}.stops-info{font-size:var(--text-sm);color:var(--transit-text-secondary);font-weight:var(--font-medium);white-space:nowrap}.add-stops-cta:hover{transform:scale(1.05);box-shadow:0 2px 6px #10b98166}.add-stops-cta:focus{outline:2px solid #10B981;outline-offset:2px}.progress-container .progress-bar{position:relative;width:100%;height:4px;background:var(--transit-divider);border-radius:2px;overflow:hidden}.progress-line{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,var(--transit-primary) 0%,var(--transit-primary-light) 100%);border-radius:2px;animation:progressAnimation 3s ease-in-out infinite}.bus-moving-icon{position:absolute;top:-8px;font-size:16px;animation:busMovement 3s ease-in-out infinite;z-index:2}.progress-dots{position:absolute;top:50%;transform:translateY(-50%);width:100%;height:100%;pointer-events:none}.progress-dot{position:absolute;width:8px;height:8px;background:var(--transit-primary);border-radius:50%;top:50%;transform:translateY(-50%);z-index:1}.progress-dot.start{left:0;transform:translate(-50%,-50%)}.progress-dot.end{right:0;transform:translate(50%,-50%)}.journey-duration-mobile{padding:var(--space-1) var(--space-3);background:var(--transit-surface-elevated);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--transit-text-secondary);border:1px solid var(--transit-divider)}@keyframes progressAnimation{0%{width:0%}50%{width:100%}to{width:0%}}@keyframes busMovement{0%{left:-16px;opacity:0}10%{opacity:1}90%{opacity:1}to{left:calc(100% + 16px);opacity:0}}.journey-timeline{display:flex;align-items:center;gap:var(--space-4);position:relative}.journey-point{display:flex;flex-direction:column;align-items:center;min-width:80px;text-align:center}.journey-time{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--transit-text-primary);margin-bottom:var(--space-1);font-variant-numeric:tabular-nums}.journey-location{font-size:var(--text-sm);color:var(--transit-text-secondary);font-weight:var(--font-medium);line-height:1.2;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journey-connection{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;margin:0 var(--space-2)}.route-line{width:100%;height:3px;background:linear-gradient(90deg,var(--transit-primary) 0%,var(--transit-primary-light) 100%);border-radius:2px;position:relative}.route-line:before,.route-line:after{content:"";position:absolute;width:8px;height:8px;background:var(--transit-primary);border-radius:50%;top:50%;transform:translateY(-50%)}.route-line:before{left:0}.route-line:after{right:0}.journey-duration{margin-top:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--transit-surface-elevated);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--transit-text-secondary);border:1px solid var(--transit-divider)}.transit-card-body{padding:var(--space-4)}.card-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.info-item{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-2);background:var(--transit-surface-elevated);border-radius:var(--radius-md);border:1px solid var(--transit-divider)}.info-icon{font-size:var(--text-lg);margin-bottom:var(--space-1)}.info-label{font-size:var(--text-xs);color:var(--transit-text-secondary);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:var(--text-sm);color:var(--transit-text-primary);font-weight:var(--font-semibold);margin-top:var(--space-1)}.status-bar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:#f8faff99;border-top:1px solid rgba(0,0,0,.03);backdrop-filter:blur(8px)}.status-indicator{display:flex;align-items:center;gap:var(--space-2)}.status-dot{width:8px;height:8px;border-radius:50%;animation:pulse 2s infinite}.status-dot.on-time{background:var(--status-on-time)}.status-dot.delayed{background:var(--status-delayed)}.status-dot.cancelled{background:var(--status-cancelled)}.status-text{font-size:var(--text-sm);font-weight:var(--font-semibold)}.status-text.on-time{color:var(--status-on-time)}.status-text.delayed{color:var(--status-delayed)}.status-text.cancelled{color:var(--status-cancelled)}.price-display{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);background:var(--transit-primary);color:#fff;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-bold)}.price-currency{font-size:var(--text-xs);opacity:.8}.expandable-content{max-height:0;overflow:hidden;transition:max-height var(--transition-base)}.expandable-content.expanded{max-height:800px}.route-details{padding:var(--space-4);background:linear-gradient(135deg,#fafbff,#f5f7ff);border-top:none}.stops-simple-list{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.stop-simple-item{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid rgba(0,0,0,.04);font-size:var(--text-sm);align-items:center;border-radius:var(--radius-sm);margin-bottom:var(--space-1)}.stop-simple-item:last-child{border-bottom:none;margin-bottom:0}.stop-simple-item:hover{background:#0066ff0a;border-color:#0066ff1a}.stop-simple-number{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--transit-primary);color:#fff;border-radius:50%;font-size:var(--text-xs);font-weight:var(--font-medium);flex-shrink:0}.stop-simple-name{color:var(--transit-text-primary);font-weight:var(--font-medium);text-align:left}.stop-simple-time{color:var(--transit-text-secondary);font-family:var(--font-family-mono);text-align:right;min-width:60px}.stop-simple-departure{color:var(--transit-text-tertiary);font-family:var(--font-family-mono);text-align:right;min-width:60px;font-size:var(--text-xs)}.stop-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--transit-primary);color:#fff;border-radius:50%;font-size:var(--text-xs);font-weight:var(--font-bold)}.stop-info{flex:1}.stop-name{font-size:var(--text-base);font-weight:var(--font-medium);color:var(--transit-text-primary);margin-bottom:var(--space-1)}.stop-time{font-size:var(--text-sm);color:var(--transit-text-secondary);font-family:var(--font-family-mono)}.live-tracking{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#00c8531a;border-radius:var(--radius-sm);margin-top:var(--space-3)}.tracking-icon{width:16px;height:16px;border-radius:50%;background:var(--status-on-time);animation:pulse 1.5s infinite}.tracking-text{font-size:var(--text-sm);color:var(--status-on-time);font-weight:var(--font-medium)}.accessibility-info{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.accessibility-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:#0066ff1a;border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--transit-primary)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.95)}}@media(max-width:768px){.transit-card-header{padding:var(--space-3)}.bus-info-row{gap:var(--space-1);overflow-x:auto}.bus-number-display{min-width:50px;height:32px;font-size:var(--text-xs);padding:0 var(--space-2);flex-shrink:0}.bus-type-display{height:32px;padding:0 var(--space-2);font-size:10px;flex-shrink:0}.bus-name-display{height:32px;font-size:var(--text-xs);padding:0 var(--space-2)}.cities-progress-row{gap:var(--space-2)}.city-name{font-size:var(--text-sm);min-width:60px}.time-duration-row{gap:var(--space-2)}.departure-time,.arrival-time{font-size:var(--text-base);min-width:60px}.journey-duration-center{font-size:var(--text-xs);padding:var(--space-1) var(--space-2)}.stops-info{font-size:var(--text-xs)}.progress-container .progress-bar{height:3px}.bus-moving-icon{font-size:14px;top:-7px}.progress-dot{width:6px;height:6px}.card-info-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.transit-card-body{padding:var(--space-3)}}@media(max-width:480px){.transit-card-header{padding:var(--space-2)}.bus-info-row{gap:4px;overflow-x:auto}.bus-number-display{min-width:45px;height:28px;font-size:10px;padding:0 var(--space-1);flex-shrink:0}.bus-type-display{height:28px;padding:0 var(--space-1);font-size:9px;flex-shrink:0}.bus-name-display{height:28px;font-size:10px;padding:0 var(--space-1)}.cities-progress-row{gap:var(--space-1)}.city-name{font-size:var(--text-xs);min-width:50px}.time-duration-row{gap:var(--space-1)}.departure-time,.arrival-time{font-size:var(--text-sm);min-width:50px}.journey-duration-center{font-size:10px;padding:var(--space-1)}.stops-info{font-size:10px}.bus-moving-icon{font-size:12px;top:-6px}.card-info-grid.compact{grid-template-columns:repeat(2,1fr);gap:var(--space-1)}.card-info-grid.compact .info-item{padding:var(--space-1)}.stop-simple-item{grid-template-columns:auto 1fr auto;gap:var(--space-2);font-size:var(--text-xs)}.stop-simple-number{width:18px;height:18px;font-size:10px}.stop-simple-time{min-width:45px;font-size:11px}}.transit-bus-card.compact{margin-bottom:var(--space-2)}.transit-bus-card.compact .transit-card-header{padding:var(--space-2) var(--space-3)}.transit-bus-card.compact .bus-info-row{margin-bottom:var(--space-2)}.transit-bus-card.compact .journey-timeline-mobile{gap:var(--space-2)}.compact-info{padding:var(--space-3) var(--space-4);border-bottom:none}.card-info-grid.compact{display:grid;grid-template-columns:1fr;gap:var(--space-3);justify-content:center}.card-info-grid.compact .info-item{text-align:center;padding:var(--space-2);max-width:120px;margin:0 auto}.card-info-grid.compact .info-icon{font-size:var(--text-base);margin-bottom:var(--space-1)}.card-info-grid.compact .info-label{font-size:var(--text-xs);margin-bottom:var(--space-1)}.card-info-grid.compact .info-value{font-size:var(--text-sm);font-weight:var(--font-semibold)}.expanded-features{padding:var(--space-3) var(--space-4);border-bottom:none;background:#f8faff80;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3)}@media(max-width:640px){.card-info-grid.compact{grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.compact-info{padding:var(--space-2) var(--space-3)}.expanded-features{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.stop-simple-item{grid-template-columns:auto 1fr auto;gap:var(--space-2);padding:var(--space-2) 0}.stop-simple-departure{display:none}.stop-simple-time{min-width:50px}}@media(max-width:480px){.card-info-grid.compact{grid-template-columns:repeat(2,1fr);gap:var(--space-1)}.card-info-grid.compact .info-item{padding:var(--space-1)}.stop-simple-item{grid-template-columns:auto 1fr auto;gap:var(--space-2);font-size:var(--text-xs)}.stop-simple-number{width:18px;height:18px;font-size:10px}.stop-simple-time{min-width:45px;font-size:11px}}@media(prefers-color-scheme:dark){.transit-card-header{background:linear-gradient(135deg,#1c1c1e,#2c2c2e)}.bus-name-display{background:var(--transit-surface);border-color:var(--transit-divider)}.route-details,.status-bar{background:linear-gradient(135deg,#1c1c1e,#2c2c2e)}.stop-item{background:var(--transit-surface)}.stop-item:hover{background:var(--transit-surface-elevated)}}.bus-number-display:focus,.bus-type-display:focus,.bus-name-display:focus{outline:2px solid var(--transit-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.progress-line{animation:none;width:50%}.bus-moving-icon{animation:none;left:50%;transform:translate(-50%)}.transit-bus-card,.expandable-content{transition:none}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.02)}}.transit-bus-card.next-bus-highlight{border-left:4px solid #10B981;background:linear-gradient(90deg,rgba(16,185,129,.05) 0%,transparent 20%)}.transit-bus-card.next-bus-highlight:hover{border-left-color:#059669;box-shadow:0 4px 16px #10b98126}.special-badges-row span{transition:transform .2s ease}.special-badges-row span:hover{transform:scale(1.05)}.live-status-bar{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,var(--status-on-time) 0%,#00A047 100%);color:#fff;padding:var(--space-2) var(--space-4);z-index:100;box-shadow:var(--shadow-md);animation:slideDown var(--transition-base) ease}.live-status-bar.delayed{background:linear-gradient(135deg,var(--status-delayed) 0%,#E67E00 100%)}.live-status-bar.alert{background:linear-gradient(135deg,var(--status-cancelled) 0%,#CC2E24 100%);animation:pulse 2s infinite}.status-content{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.status-message{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium)}.status-icon{font-size:var(--text-base);animation:rotate 2s linear infinite}.status-dismiss{background:none;border:none;color:#fff;cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);transition:var(--transition-fast)}.status-dismiss:hover{background:#fff3}.bus-tracker{background:var(--transit-surface);border-radius:var(--radius-lg);border:2px solid var(--transit-primary);padding:var(--space-4);margin:var(--space-4) 0;position:relative;overflow:hidden}.bus-tracker:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,102,255,.1),transparent);animation:shimmer 2s infinite}.tracker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.tracker-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-headline);font-weight:var(--font-semibold)}.live-indicator{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:#00c8531a;border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--status-on-time);text-transform:uppercase;letter-spacing:.5px}.live-dot{width:6px;height:6px;background:var(--status-on-time);border-radius:50%;animation:pulse 1.5s infinite}.route-progress{position:relative;padding:var(--space-4) 0}.progress-line{position:absolute;top:50%;left:0;right:0;height:4px;background:var(--transit-divider);border-radius:2px;transform:translateY(-50%)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--transit-primary) 0%,var(--transit-primary-light) 100%);border-radius:2px;transition:width var(--transition-slow);position:relative}.progress-fill:after{content:"";position:absolute;right:-4px;top:50%;width:12px;height:12px;background:var(--transit-primary);border-radius:50%;transform:translateY(-50%);box-shadow:0 0 0 3px #fff,0 0 8px #0066ff4d;animation:pulse 2s infinite}.progress-stops{display:flex;justify-content:space-between;position:relative;z-index:2}.progress-stop{display:flex;flex-direction:column;align-items:center;background:var(--transit-surface);padding:var(--space-2);border-radius:var(--radius-md);min-width:80px;box-shadow:var(--shadow-sm);border:2px solid var(--transit-divider);transition:var(--transition-base)}.progress-stop.current{border-color:var(--transit-primary);box-shadow:0 0 0 3px #0066ff1a;transform:scale(1.05)}.progress-stop.completed{border-color:var(--status-on-time);background:#00c8530d}.stop-icon{width:24px;height:24px;border-radius:50%;background:var(--transit-divider);color:var(--transit-text-secondary);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--font-bold);margin-bottom:var(--space-1);transition:var(--transition-base)}.progress-stop.current .stop-icon{background:var(--transit-primary);color:#fff;animation:pulse 2s infinite}.progress-stop.completed .stop-icon{background:var(--status-on-time);color:#fff}.stop-name{font-size:var(--text-xs);text-align:center;color:var(--transit-text-secondary);font-weight:var(--font-medium);line-height:1.2}.progress-stop.current .stop-name{color:var(--transit-primary);font-weight:var(--font-semibold)}.eta-display{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-4);padding:var(--space-3);background:var(--transit-surface-elevated);border-radius:var(--radius-md)}.eta-item{display:flex;flex-direction:column;align-items:center;text-align:center}.eta-value{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--transit-text-primary);margin-bottom:var(--space-1);font-variant-numeric:tabular-nums}.eta-label{font-size:var(--text-xs);color:var(--transit-text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--font-medium)}.crowding-info{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--transit-surface-elevated);border-radius:var(--radius-md);margin-top:var(--space-4)}.crowding-level{display:flex;align-items:center;gap:var(--space-2)}.crowding-bars{display:flex;gap:2px}.crowding-bar{width:4px;height:16px;border-radius:2px;background:var(--transit-divider);transition:var(--transition-base)}.crowding-bar.filled{background:var(--status-on-time)}.crowding-bar.filled.medium{background:var(--status-delayed)}.crowding-bar.filled.high{background:var(--status-cancelled)}.crowding-text{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--transit-text-primary)}.crowding-subtitle{font-size:var(--text-xs);color:var(--transit-text-secondary)}.delay-notification{background:linear-gradient(135deg,#fff3cd,#fce4b6);border:1px solid #F5C6CB;border-radius:var(--radius-md);padding:var(--space-4);margin:var(--space-4) 0;position:relative;overflow:hidden}.delay-notification.severe{background:linear-gradient(135deg,#f8d7da,#f1aeb5);border-color:#f5c6cb}.notification-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.notification-icon{font-size:var(--text-lg)}.notification-title{font-size:var(--text-base);font-weight:var(--font-semibold);color:#856404}.delay-notification.severe .notification-title{color:#721c24}.notification-message{font-size:var(--text-sm);color:#856404;line-height:1.4}.delay-notification.severe .notification-message{color:#721c24}.notification-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.notification-button{padding:var(--space-2) var(--space-3);border:1px solid #856404;background:transparent;color:#856404;border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;transition:var(--transition-fast)}.notification-button:hover{background:#856404;color:#fff}@keyframes shimmer{0%{left:-100%}to{left:100%}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(max-width:768px){.live-status-bar{padding:var(--space-2) var(--space-3)}.status-content{flex-direction:column;gap:var(--space-2);align-items:flex-start}.progress-stops{flex-wrap:wrap;gap:var(--space-2)}.progress-stop{min-width:60px}.eta-display{flex-wrap:wrap;gap:var(--space-3)}.crowding-info{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}.transit-button,button:not(.transit-button),[role=button]{transition:transform .15s cubic-bezier(.32,.72,0,1),box-shadow .15s cubic-bezier(.32,.72,0,1);transform:translateZ(0);will-change:transform}.transit-button:active:not(:disabled),button:active:not(:disabled),[role=button]:active:not([aria-disabled=true]){transform:scale(.95)}.transit-button:hover:not(:disabled),button:hover:not(:disabled),[role=button]:hover:not([aria-disabled=true]){transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.transit-button--primary:hover:not(:disabled){box-shadow:0 4px 16px #14b8a666}.transit-button--icon-only:hover:not(:disabled){transform:scale(1.1)}.transit-button--icon-only:active:not(:disabled){transform:scale(.9)}.bus-card,.transit-bus-card,.connecting-route-card,[class*=card]:not(.empty-state){transition:transform .2s cubic-bezier(.32,.72,0,1),box-shadow .2s cubic-bezier(.32,.72,0,1),border-color .2s ease;transform:translateZ(0)}@media(hover:hover)and (min-width:768px){.bus-card:hover,.transit-bus-card:hover,.connecting-route-card:hover:not(.expanded),[class*=card]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f;border-color:var(--transit-primary)}.bus-card.selected,.transit-bus-card.selected,.connecting-route-card.expanded{transform:none}}@media(max-width:767px){.bus-card:active,.transit-bus-card:active,.connecting-route-card:active{transform:scale(.98)}}@keyframes checkmarkDraw{0%{stroke-dashoffset:100;opacity:0}50%{opacity:1}to{stroke-dashoffset:0;opacity:1}}@keyframes checkmarkCircle{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1);opacity:1}to{transform:scale(1);opacity:1}}.success-checkmark{display:inline-block;animation:checkmarkCircle .4s cubic-bezier(.32,.72,0,1)}.success-checkmark__circle{stroke:var(--semantic-success);stroke-width:3;fill:none;animation:checkmarkCircle .4s cubic-bezier(.32,.72,0,1)}.success-checkmark__check{stroke:var(--semantic-success);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;fill:none;stroke-dasharray:100;stroke-dashoffset:100;animation:checkmarkDraw .6s cubic-bezier(.32,.72,0,1) .2s forwards}@keyframes progressPulse{0%,to{opacity:.4}50%{opacity:1}}.loading-pulse{animation:progressPulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.loading-shimmer{background:linear-gradient(90deg,var(--color-neutral-200) 0%,var(--color-neutral-100) 50%,var(--color-neutral-200) 100%);background-size:200% 100%;animation:shimmer 2s ease-in-out infinite}@keyframes skeletonWave{0%{transform:translate(-100%)}to{transform:translate(100%)}}.skeleton{position:relative;overflow:hidden;background-color:var(--color-neutral-200)}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);animation:skeletonWave 1.5s ease-in-out infinite}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.page-content{animation:fadeInUp .4s cubic-bezier(.32,.72,0,1)}.page-header{animation:fadeInDown .4s cubic-bezier(.32,.72,0,1)}.bus-card:nth-child(1),.transit-bus-card:nth-child(1){animation:fadeInUp .3s cubic-bezier(.32,.72,0,1) .05s both}.bus-card:nth-child(2),.transit-bus-card:nth-child(2){animation:fadeInUp .3s cubic-bezier(.32,.72,0,1) .1s both}.bus-card:nth-child(3),.transit-bus-card:nth-child(3){animation:fadeInUp .3s cubic-bezier(.32,.72,0,1) .15s both}.bus-card:nth-child(4),.transit-bus-card:nth-child(4){animation:fadeInUp .3s cubic-bezier(.32,.72,0,1) .2s both}.bus-card:nth-child(n+5),.transit-bus-card:nth-child(n+5){animation:fadeInUp .3s cubic-bezier(.32,.72,0,1) .25s both}*:focus-visible{outline:2px solid var(--transit-primary);outline-offset:2px;border-radius:4px}.transit-button:focus-visible{outline-offset:4px;box-shadow:0 0 0 4px #14b8a633}@keyframes badgePulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.badge--next-bus,.badge--fastest,[class*=badge--]:not(.badge--status){animation:badgePulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes iconSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.icon--spinning{animation:iconSpin 1s linear infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.bounce{animation:bounce 1s ease}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}.shake{animation:shake .5s cubic-bezier(.32,.72,0,1)}input:invalid:not(:-moz-placeholder){animation:shake .3s cubic-bezier(.32,.72,0,1)}input:invalid:not(:placeholder-shown){animation:shake .3s cubic-bezier(.32,.72,0,1)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.transit-button:active:not(:disabled),button:active:not(:disabled){transform:scale(.95)}}@media(prefers-color-scheme:dark){.transit-button:hover:not(:disabled),button:hover:not(:disabled){box-shadow:0 4px 12px #ffffff1a}.transit-button--primary:hover:not(:disabled){box-shadow:0 4px 16px #14b8a64d}.bus-card:hover,.transit-bus-card:hover,[class*=card]:hover{box-shadow:0 8px 24px #ffffff14}.loading-shimmer{background:linear-gradient(90deg,var(--color-neutral-700) 0%,var(--color-neutral-600) 50%,var(--color-neutral-700) 100%)}}.announcement-banner-container{width:100%;animation:slideDown .4s ease-out}.announcement-banner-container.animating-out{animation:slideUp .3s ease-in forwards}@keyframes slideUp{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.announcement-banner{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;gap:1rem;position:relative;overflow:hidden;background:#fffc;backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%);border:1px solid rgba(255,255,255,.2);box-shadow:var(--shadow-lg)}.announcement-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.announcement-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.announcement-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.announcement-new-feature{background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff;position:relative}.announcement-new-feature:before{content:"";position:absolute;top:0;left:-100%;width:200%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.1) 50%,transparent 100%);animation:shimmer 3s infinite}@keyframes shimmer{0%{transform:translate(-50%)}to{transform:translate(50%)}}.announcement-maintenance{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff}.announcement-content{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.announcement-icon{font-size:1.25rem;flex-shrink:0;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.announcement-text{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;flex:1;min-width:0}.announcement-title{font-weight:700;font-size:.875rem;white-space:nowrap}.announcement-message{font-size:.875rem;font-weight:500;opacity:.95}.announcement-link{display:inline-flex;align-items:center;gap:.25rem;color:#fff;text-decoration:none;font-weight:600;font-size:.875rem;padding:.25rem .75rem;background:#fff3;border-radius:9999px;transition:all .2s ease;white-space:nowrap}.announcement-link:hover{background:#ffffff4d;transform:translate(2px)}.link-arrow{transition:transform .2s ease}.announcement-link:hover .link-arrow{transform:translate(3px)}.announcement-navigation{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.announcement-counter{font-size:.75rem;font-weight:600;opacity:.8;white-space:nowrap}.nav-button{width:24px;height:24px;border:none;background:#fff3;color:#fff;border-radius:50%;cursor:pointer;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s ease;padding:0;line-height:1}.nav-button:hover{background:#ffffff4d;transform:scale(1.1)}.announcement-dismiss{width:28px;height:28px;border:none;background:#ffffff1a;color:#fff;border-radius:50%;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;padding:0}.announcement-dismiss:hover{background:#ffffff40;transform:rotate(90deg)}.dismiss-icon{line-height:1}@media(max-width:768px){.announcement-banner{padding:.625rem .75rem;gap:.5rem}.announcement-content{gap:.5rem}.announcement-icon{font-size:1.125rem}.announcement-text{flex-direction:column;align-items:flex-start;gap:.25rem}.announcement-title{font-size:.8125rem}.announcement-message{font-size:.75rem;line-height:1.3}.announcement-link{font-size:.75rem;padding:.25rem .625rem;margin-top:.25rem}.announcement-navigation{display:none}}@media(max-width:480px){.announcement-banner{padding:.5rem}.announcement-title{font-size:.75rem}.announcement-message{font-size:.6875rem}.announcement-dismiss{width:24px;height:24px;font-size:1rem}}@media(prefers-reduced-motion:reduce){.announcement-banner-container{animation:none}.announcement-banner-container.animating-out{animation:none;opacity:0}.announcement-new-feature:before{animation:none}.announcement-icon{animation:none}}@media(prefers-contrast:high){.announcement-banner{border-bottom:2px solid currentColor}.announcement-link{text-decoration:underline}}.app-header{background:#0284c7;padding:12px 16px;position:sticky;top:0;z-index:60;box-shadow:0 1px 3px #0000001a;width:100%;transition:all .2s ease}.app-header.scrolled{box-shadow:0 2px 8px #00000026}.app-header.compact{padding:10px 16px}@media(max-width:767px){.app-header.compact .header-subtitle{display:none}.app-header.compact .logo-container{width:32px;height:32px}.app-header.compact .logo-icon{width:18px;height:18px}.app-header.compact .brand-name{font-size:1rem}}.header-content{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto;gap:16px}.header-left{display:flex;align-items:center;gap:8px}.back-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:#ffffff26;border-radius:8px;color:#fff;text-decoration:none;transition:background .2s ease}.back-button:hover{background:#ffffff40}.brand-link{display:flex;align-items:center;gap:10px;text-decoration:none}.logo-container{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff26;border-radius:10px;transition:background .2s ease}.brand-link:hover .logo-container{background:#fff3}.logo-icon{width:22px;height:22px;color:#fff}.header-title-group{display:flex;flex-direction:column}.brand-name{font-size:1.25rem;font-weight:700;color:#fff;line-height:1.2;margin:0;letter-spacing:-.01em}.header-subtitle{font-size:.7rem;color:#ffffffd9;font-weight:500;margin:0;line-height:1.3}.header-right{display:flex;align-items:center}.language-dropdown{padding:6px 24px 6px 10px;background:#ffffff26;border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;transition:all .2s ease;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.language-dropdown:hover{background-color:#fff3;border-color:#ffffff59}.language-dropdown:focus{outline:none;background-color:#ffffff40;border-color:#ffffff80}.language-dropdown option{background:#1e293b;color:#fff;padding:8px}.whats-new-btn{position:relative;width:44px;height:44px;min-width:44px;min-height:44px;border:none;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;box-shadow:0 2px 8px #0000000f}.whats-new-btn:hover{transform:translateY(-2px);background:linear-gradient(135deg,#e2e8f0,#cbd5e1);box-shadow:0 4px 12px #0000001a}.whats-new-btn.has-updates{background:linear-gradient(135deg,#fef3c7,#fde68a)}.whats-new-btn.has-updates:hover{background:linear-gradient(135deg,#fde68a,#fcd34d)}.whats-new-icon{font-size:1.25rem;animation:sparkle 2s ease-in-out infinite}@keyframes sparkle{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.update-badge{position:absolute;top:-4px;right:-4px;width:12px;height:12px;background:#ef4444;border-radius:50%;border:2px solid white;animation:pulse-badge 2s infinite}@keyframes pulse-badge{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.8}}.whats-new-panel{position:absolute;top:100%;right:1rem;width:320px;max-width:calc(100vw - 2rem);background:#fff;border-radius:16px;box-shadow:0 20px 40px #00000026;z-index:100;animation:panelSlide .3s ease-out;overflow:hidden;border:1px solid #e2e8f0}@keyframes panelSlide{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.whats-new-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff}.whats-new-header h3{margin:0;font-size:1rem;font-weight:700}.close-panel-btn{width:44px;height:44px;min-width:44px;min-height:44px;border:none;background:#fff3;color:#fff;border-radius:8px;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.close-panel-btn:hover{background:#ffffff4d}.whats-new-content{padding:.75rem;max-height:300px;overflow-y:auto}.update-item{padding:.75rem;border-radius:10px;background:#f8fafc;margin-bottom:.5rem;transition:background .2s ease}.update-item:hover{background:#f1f5f9}.update-item:last-child{margin-bottom:0}.update-date{font-size:.6875rem;color:#94a3b8;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.update-badge-type{display:inline-block;padding:.125rem .5rem;border-radius:9999px;font-size:.625rem;font-weight:700;margin-left:.5rem;text-transform:uppercase;letter-spacing:.05em}.update-badge-type.new{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.update-badge-type.improvement{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.update-badge-type.fix{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.update-item p{margin:.5rem 0 0;font-size:.8125rem;color:#475569;line-height:1.4}.home-link{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;text-decoration:none;border-radius:12px;font-weight:600;transition:all .3s ease;box-shadow:0 4px 12px #3b82f64d}.home-link:hover{transform:translateY(-2px);box-shadow:0 8px 20px #3b82f666}.button-icon{font-size:1.25rem}.button-text{font-size:.875rem}@media(min-width:992px){.header-content{padding:0 24px}.brand-name{font-size:1.35rem}.header-subtitle{font-size:.75rem}}@media(min-width:768px)and (max-width:991px){.app-header{padding:10px 16px}.brand-name{font-size:1.15rem}}@media(max-width:767px){.app-header{padding:10px 12px}.header-content,.header-left,.brand-link{gap:8px}.logo-container{width:36px;height:36px;border-radius:8px}.logo-icon{width:20px;height:20px}.brand-name{font-size:1.05rem}.header-subtitle{font-size:.65rem}.language-dropdown{padding:5px 20px 5px 8px;font-size:.8rem;background-position:right 6px center}.back-button{width:32px;height:32px}.back-button svg{width:16px;height:16px}}@media(max-width:480px){.app-header{padding:8px 10px}.logo-container{width:32px;height:32px}.logo-icon{width:18px;height:18px}.brand-name{font-size:.95rem}.header-subtitle{font-size:.6rem}}.main-tab-navigation{background:linear-gradient(135deg,#10b981,#059669,#0891b2);padding:var(--space-lg) 0;position:sticky;top:0;z-index:50;overflow:visible;min-height:100px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(255,255,255,.15);box-shadow:0 10px 40px #10b98140}.main-tab-navigation:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(16,185,129,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(6,182,212,.2) 0%,transparent 50%);pointer-events:none;opacity:.6}.tab-wrapper{position:relative;z-index:2}.main-tabs{display:flex;justify-content:center;align-items:stretch;gap:var(--space-md);background:#ffffff1f;border-radius:32px;padding:var(--space-md);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);border:1.5px solid rgba(255,255,255,.25);max-width:700px;width:95%;margin:0 auto;box-shadow:0 15px 50px #00000026,inset 0 1px #fff3}.main-tab{display:flex;align-items:center;justify-content:center;background:#ffffff14;border:1.5px solid rgba(255,255,255,.15);color:#ffffffd9;font-weight:600;cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);flex:1;position:relative;overflow:hidden;border-radius:24px;padding:var(--space-md) var(--space-lg);min-height:50px;backdrop-filter:blur(10px)}.tab-content{display:flex;align-items:center;gap:var(--space-xs);position:relative;z-index:2}.main-tab-icon{font-size:1.5rem;line-height:1;transition:transform .3s ease}.main-tab-icon.contribute-icon{width:1.5rem;height:1.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.tab-text{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-xxs)}.main-tab-title{font-weight:700;font-size:.95rem;letter-spacing:.025em;line-height:1.2;transition:color .3s ease}.main-tab-subtitle{font-weight:600;font-size:.65rem;opacity:.9;letter-spacing:.08em;text-transform:uppercase;transition:all .3s ease;margin-top:2px}.main-tab:hover{background:#ffffff26;border-color:#ffffff4d;color:#fff;transform:translateY(-2px);box-shadow:0 8px 20px #0003}.main-tab:hover .main-tab-icon{transform:scale(1.15) rotate(5deg)}.main-tab:hover .main-tab-icon.contribute-icon{transform:scale(1.2) rotate(8deg);filter:drop-shadow(0 6px 12px rgba(0,0,0,.25))}.main-tab.active{background:linear-gradient(135deg,#fffffff2,#ffffffe6);border-color:#fff;color:#10b981;box-shadow:0 12px 30px #0003,inset 0 1px #fffc;transform:translateY(-3px)}.main-tab.active:hover{background:linear-gradient(135deg,#fff,#fffffff2);box-shadow:0 15px 35px #00000040,inset 0 1px #ffffffe6}.main-tab.active .main-tab-icon{transform:scale(1.2) rotate(0)}.main-tab.active .main-tab-title{color:#10b981;font-weight:700}.main-tab.active .main-tab-subtitle{color:#059669;opacity:.9;font-weight:600}.active-indicator{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:40px;height:4px;background:#fff;border-radius:2px;box-shadow:0 2px 8px #0003;animation:indicatorPulse 2s infinite ease-in-out}@keyframes indicatorPulse{0%,to{opacity:1;transform:translate(-50%) scale(1)}50%{opacity:.7;transform:translate(-50%) scale(1.1)}}.tab-indicator-line{position:relative;height:3px;background:#fff3;border-radius:1.5px;margin:var(--space-xs) auto 0;max-width:600px;width:90%;overflow:hidden}.tab-indicator{position:absolute;top:0;height:100%;width:50%;background:linear-gradient(90deg,#10b981,#34d399);border-radius:1.5px;transition:transform .4s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px #10b98180}.tab-indicator.search-active{transform:translate(0)}.tab-indicator.contribute-active{transform:translate(100%);background:linear-gradient(90deg,#f59e0b,#fbbf24);box-shadow:0 0 10px #f59e0b80}.tab-context{text-align:center;margin-top:var(--space-xs);padding:0 var(--space-lg)}.context-text{color:#ffffffeb;font-size:.9rem;font-weight:500;margin:0;letter-spacing:.025em;line-height:1.5;text-shadow:0 2px 4px rgba(0,0,0,.1)}.search-tab.active{background:linear-gradient(135deg,#dbeafe,#cffafe);color:#0369a1}.search-tab.active .main-tab-icon{filter:drop-shadow(0 2px 4px rgba(3,105,161,.2))}.contribute-tab.active{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#b45309}.contribute-tab.active .main-tab-icon{filter:drop-shadow(0 2px 4px rgba(180,83,9,.2))}@media(min-width:768px){.main-tab-navigation{padding:14px 0 10px}.main-tabs{max-width:700px;width:85%;padding:6px}.main-tab{padding:10px 20px;min-height:48px}.main-tab-icon{font-size:1.25rem}.main-tab-title{font-size:.95rem}.main-tab-subtitle{font-size:.7rem}.context-text{font-size:.95rem}}@media(max-width:767px){.main-tab-navigation{padding:8px 0 6px;min-height:70px}.main-tabs{margin:0 6px;width:calc(100% - 12px);max-width:none}.tab-content{flex-direction:row;gap:6px;text-align:left}.tab-text{align-items:flex-start}.main-tab-title{font-size:.8rem}.main-tab-subtitle{font-size:.6rem}.context-text{font-size:.75rem}}@media(max-width:640px){.main-tab-navigation{min-height:60px}.main-tabs{margin:0 4px;width:calc(100% - 8px);padding:3px}.main-tab{padding:6px 8px;min-height:38px}.main-tab-icon{font-size:1.1rem}.main-tab-title{font-size:.75rem}.main-tab-subtitle{font-size:.55rem}}.location-toggle{display:flex;align-items:center;gap:8px;padding:6px 12px;background-color:#f3f4f6;border-radius:24px;border:1px solid #e5e7eb}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;margin-right:4px;vertical-align:middle}.toggle-label{font-size:.9rem;color:#4b5563;vertical-align:middle;font-weight:500}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.3s;border-radius:24px}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}input:checked+.toggle-slider{background-color:#3b82f6}input:focus+.toggle-slider{box-shadow:0 0 1px #3b82f6}input:checked+.toggle-slider:before{transform:translate(20px)}.language-switcher-wrapper{display:flex;align-items:center}.home-link{display:inline-flex;align-items:center;padding:8px 16px;background-color:#3b82f6;color:#fff;border-radius:6px;text-decoration:none;font-weight:500;font-size:.9rem;transition:background-color .2s}.home-link:hover{background-color:#2563eb;text-decoration:none}@media(max-width:575px){.toggle-label{font-size:.75rem}.location-toggle{padding:4px 8px}.toggle-switch{width:36px;height:20px}.toggle-slider:before{height:14px;width:14px}input:checked+.toggle-slider:before{transform:translate(16px)}}@media(prefers-reduced-motion:reduce){.logo-icon,.wheel,.whats-new-icon,.update-badge{animation:none}.brand-link:hover,.whats-new-btn:hover,.home-link:hover{transform:none}.whats-new-panel{animation:none}}@media(prefers-contrast:high){.app-header{border-bottom:2px solid #000}.brand-logo{border:2px solid #fff}.whats-new-btn{border:2px solid currentColor}.home-link{border:2px solid #fff}}.app-footer{background:linear-gradient(135deg,#6366f1,#5b4cff);color:#fff;padding:var(--space-md) 0 var(--space-sm);margin-top:var(--space-md);width:100%;position:relative}.footer-wave{display:none}.footer-container{max-width:1200px;margin:0 auto;width:100%;padding:0 1rem}.footer-stats{display:flex;justify-content:center;gap:var(--space-lg);padding:var(--space-md) 0;margin-bottom:var(--space-md);border-bottom:1px solid rgba(255,255,255,.15)}.stat-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.stat-icon{font-size:1.5rem;margin-bottom:var(--space-xs);color:#ffffffe6}.stat-number{font-size:1.3rem;font-weight:800;color:#fff}.stat-label{font-size:.7rem;color:#ffffffb3;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.footer-main{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-xl);padding:var(--space-md) 0}.footer-brand{display:flex;flex-direction:column;gap:var(--space-md)}.footer-logo-container{display:flex;align-items:center;gap:var(--space-md)}.footer-logo-icon{font-size:2.5rem}.footer-logo{font-size:1.75rem;font-weight:800;color:#fff;margin:0;line-height:1.1;letter-spacing:-.5px}.footer-logo-sub{font-size:.85rem;color:#fffc;display:block}.footer-description{font-size:.95rem;color:#ffffffe6;line-height:1.6;margin:0}.footer-column{display:flex;flex-direction:column;gap:var(--space-md)}.footer-column-title{font-size:1.1rem;font-weight:700;color:#fff;margin:0;text-transform:capitalize}.footer-links-vertical{display:flex;flex-direction:column;gap:var(--space-sm)}.footer-link{display:flex;align-items:center;gap:var(--space-sm);color:#fffffff2;text-decoration:none;font-size:.95rem;transition:all .3s ease;padding:var(--space-xs) 0}.footer-link:hover{color:#fff;transform:translate(4px)}.link-icon{display:flex;align-items:center;justify-content:center;width:20px;color:#fffc}.footer-link:hover .link-icon{color:#fff}.social-links{display:flex;gap:var(--space-md)}.social-link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff26;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#ffffffe6;transition:all .3s ease;text-decoration:none}.social-link:hover{background:#ffffff40;color:#fff;transform:translateY(-2px)}.social-icon{display:flex;align-items:center;justify-content:center}.footer-bottom{display:flex;justify-content:center;align-items:center;padding-top:var(--space-sm);border-top:1px solid rgba(255,255,255,.15)}.footer-copyright,.footer-made-with{color:#ffffffb3;font-size:.8rem;margin:0;text-align:center}.heart{display:inline-flex;align-items:center;margin:0 .3rem}@media(max-width:1199px){.footer-main{grid-template-columns:2fr 1fr 1fr;gap:var(--space-lg)}.footer-logo{font-size:1.5rem}.footer-description{font-size:.95rem;max-width:100%}.footer-column-title{font-size:1rem}.footer-link{font-size:.9rem}}@media(max-width:767px){.app-footer{margin-bottom:80px}.footer-stats{gap:1rem;padding:.75rem 0;margin-bottom:.75rem}.stat-icon{font-size:1.2rem}.stat-number{font-size:1rem}.stat-label{font-size:.6rem}.footer-main{grid-template-columns:1fr 1fr 1fr;gap:var(--space-lg)}.footer-logo-container{gap:var(--space-sm)}.footer-logo-icon{font-size:2rem}.footer-logo{font-size:1.3rem}.footer-description{font-size:.9rem}.social-links{gap:var(--space-sm)}.social-link{width:36px;height:36px}.footer-column-title{font-size:.95rem}.footer-link{font-size:.85rem;gap:var(--space-xs)}.link-icon{width:18px}}@media(max-width:575px){.app-footer{margin-bottom:90px;padding:var(--space-sm) 0 .5rem}.footer-container{padding:0 .75rem}.footer-stats{flex-wrap:wrap;gap:.8rem;padding:.5rem 0;margin-bottom:.5rem}.stat-item{min-width:60px;flex:0 1 auto;gap:.1rem}.stat-icon{font-size:1rem}.stat-number{font-size:.85rem}.stat-label{font-size:.45rem;line-height:1}.footer-main{grid-template-columns:1fr 1fr;gap:var(--space-md);padding:var(--space-sm) 0}.footer-brand{grid-column:1 / -1}.footer-logo-container{gap:var(--space-sm)}.footer-logo-icon{font-size:1.5rem}.footer-logo{font-size:1.1rem}.footer-description{font-size:.85rem}.social-links{gap:var(--space-sm)}.social-link{width:38px;height:38px}.footer-column-title{font-size:.9rem}.footer-links-vertical{gap:var(--space-xs)}.footer-link{font-size:.8rem;gap:var(--space-xs);padding:var(--space-xs) 0}.link-icon{width:16px;font-size:.8rem}.footer-bottom{padding-top:var(--space-xs)}.footer-copyright,.footer-made-with{font-size:.7rem}}@media(max-width:360px){.footer-logo{font-size:1rem}.footer-description{font-size:.8rem}.social-link{width:36px;height:36px}.footer-column-title{font-size:.85rem}.footer-link{font-size:.75rem}}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;width:100%;box-sizing:border-box}.loading-spinner{width:50px;height:50px;border:5px solid rgba(0,123,255,.1);border-top:5px solid #0077cc;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{color:#555;font-size:16px;text-align:center;margin:0;font-weight:500}.loading-container.fullscreen{position:fixed;inset:0;background-color:#fffc;z-index:9999}.loading-container.small .loading-spinner{width:30px;height:30px;border-width:3px}.loading-container.small .loading-text{font-size:14px}@media(prefers-color-scheme:dark){.loading-spinner{border-color:#ffffff1a;border-top-color:#4dadff}.loading-text{color:#e0e0e0}.loading-container.fullscreen{background-color:#000c}}.network-status-indicator{position:fixed;top:0;left:0;right:0;z-index:1000;padding:12px 16px;animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.network-status-offline{background:linear-gradient(135deg,#f59e0b,#d97706);border-bottom:2px solid #b45309}.network-status-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:12px;color:#fff}.network-status-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.network-status-text{flex:1;display:flex;flex-direction:column;gap:2px}.network-status-text strong{font-size:14px;font-weight:600}.network-status-text p{font-size:13px;margin:0;opacity:.95}.network-status-close{flex-shrink:0;background:#fff3;border:none;color:#fff;width:32px;height:32px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s ease}.network-status-close:hover{background:#ffffff4d;transform:scale(1.05)}.network-status-close:active{transform:scale(.95)}.network-status-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:#ef4444;color:#fff;border-radius:50%;font-size:14px;animation:pulse 2s infinite}@media(max-width:640px){.network-status-indicator{padding:10px 12px}.network-status-content{gap:10px}.network-status-text strong{font-size:13px}.network-status-text p{font-size:12px}}@media(prefers-color-scheme:dark){.network-status-offline{background:linear-gradient(135deg,#b45309,#92400e);border-bottom-color:#78350f}.network-status-close{background:#ffffff26}.network-status-close:hover{background:#ffffff40}}@media(prefers-reduced-motion:reduce){.network-status-indicator,.network-status-icon,.network-status-badge{animation:none}.network-status-close{transition:none}}.skeleton-container{display:flex;flex-direction:column;gap:1rem;padding:1rem}.skeleton-line{height:1rem;background:linear-gradient(90deg,#f0f0f0,#e0e0e0 20%,#f0f0f0 40% 100%);background-size:1000px 100%;animation:shimmer 2s infinite linear;border-radius:4px}@media(prefers-color-scheme:dark){.skeleton-line{background:linear-gradient(90deg,#2a2a2a,#3a3a3a 20%,#2a2a2a 40% 100%)}}.skeleton-bus-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;gap:1rem}.skeleton-header{display:flex;flex-direction:column;gap:.5rem}.skeleton-title{width:60%;height:1.5rem}.skeleton-subtitle{width:40%;height:1rem}.skeleton-timing{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0}.skeleton-time-block{flex:1;display:flex;flex-direction:column;gap:.5rem}.skeleton-time{width:80%;height:1.5rem}.skeleton-location{width:100%;height:1rem}.skeleton-duration{flex:0 0 60px;display:flex;justify-content:center}.skeleton-circle{width:50px;height:50px;border-radius:50%;background:linear-gradient(90deg,#f0f0f0,#e0e0e0 20%,#f0f0f0 40% 100%);background-size:1000px 100%;animation:shimmer 2s infinite linear}.skeleton-footer{display:flex;gap:.5rem}.skeleton-badge{width:80px;height:1.5rem;border-radius:12px}.skeleton-list-item{background:#fff;border-radius:8px;padding:1rem;display:flex;flex-direction:column;gap:.5rem}.skeleton-list-title{width:70%;height:1.25rem}.skeleton-list-subtitle{width:50%;height:1rem}.skeleton-text{padding:.5rem 0}.skeleton-text-line{width:100%;height:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media(prefers-reduced-motion:reduce){.skeleton-line,.skeleton-circle{animation:none;background:#f0f0f0}@media(prefers-color-scheme:dark){.skeleton-line,.skeleton-circle{background:#2a2a2a}}}@media(max-width:768px){.skeleton-bus-card{padding:1rem}.skeleton-timing{flex-direction:column;gap:.5rem}.skeleton-duration{flex:0 0 40px}.skeleton-circle{width:40px;height:40px}}:root{--space-xs: .25rem;--space-sm: .5rem;--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.5rem;--space-2xl: 2rem;--space-3xl: 3rem;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-light: #dbeafe;--color-secondary: #6b7280;--color-secondary-hover: #4b5563;--color-secondary-light: #f3f4f6;--color-success: #10b981;--color-success-hover: #059669;--color-success-light: #d1fae5;--color-warning: #f59e0b;--color-warning-hover: #d97706;--color-warning-light: #fef3c7;--color-danger: #ef4444;--color-danger-hover: #dc2626;--color-danger-light: #fee2e2;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--shadow-2xl: 0 25px 50px rgba(0, 0, 0, .25);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--ease-material: cubic-bezier(.4, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .6, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--z-dropdown: 1000;--z-sticky: 1020;--z-modal: 1050;--z-tooltip: 1070}*{box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;line-height:var(--line-height-normal);color:var(--color-gray-900);background-color:var(--color-gray-50)}.p-xs{padding:var(--space-xs)}.p-sm{padding:var(--space-sm)}.p-md{padding:var(--space-md)}.p-lg{padding:var(--space-lg)}.p-xl{padding:var(--space-xl)}.m-xs{margin:var(--space-xs)}.m-sm{margin:var(--space-sm)}.m-md{margin:var(--space-md)}.m-lg{margin:var(--space-lg)}.m-xl{margin:var(--space-xl)}.mb-xs{margin-bottom:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--space-md)}.container-sm{max-width:640px}.container-lg{max-width:1400px}.grid{display:grid}.grid-cols-1{grid-template-columns:repeat(1,1fr)}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-shimmer{animation:shimmer 2s infinite;background-size:1000px 100%;background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent)}.animate-float{animation:float 3s ease-in-out infinite}.animate-gradient{animation:gradientShift 15s ease infinite;background-size:200% 200%}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.glassmorphism{background:#ffffffb3;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.2)}.glassmorphism-dark{background:#111827b3;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.1)}.safe-top{padding-top:max(var(--space-lg),env(safe-area-inset-top))}.safe-bottom{padding-bottom:max(var(--space-lg),env(safe-area-inset-bottom))}.safe-left{padding-left:max(var(--space-lg),env(safe-area-inset-left))}.safe-right{padding-right:max(var(--space-lg),env(safe-area-inset-right))}.safe-all{padding-top:max(var(--space-lg),env(safe-area-inset-top));padding-bottom:max(var(--space-lg),env(safe-area-inset-bottom));padding-left:max(var(--space-lg),env(safe-area-inset-left));padding-right:max(var(--space-lg),env(safe-area-inset-right))}@media(min-width:640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.sm\\:p-lg{padding:var(--space-lg)}}@media(min-width:768px){.md\\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.md\\:p-xl{padding:var(--space-xl)}}@media(min-width:1024px){.lg\\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.lg\\:p-2xl{padding:var(--space-2xl)}}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:10000;display:flex;flex-direction:column;gap:var(--space-3);max-width:400px;pointer-events:none}@media(max-width:767px){.toast-container{top:auto;bottom:calc(var(--space-4) + 64px);left:var(--space-4);right:var(--space-4);max-width:none}}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:#fff;border-radius:var(--radius-md);box-shadow:0 10px 40px #00000026;pointer-events:auto;min-height:60px;animation:toastSlideIn .3s cubic-bezier(.32,.72,0,1);border-left:4px solid;will-change:transform,opacity}@keyframes toastSlideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@media(max-width:767px){@keyframes toastSlideIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.toast__icon{flex-shrink:0;width:24px;height:24px}.toast__message{flex:1;font-size:.9375rem;line-height:1.5;color:var(--color-text-primary)}.toast__close{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-secondary);transition:background-color .15s ease,color .15s ease;padding:0}.toast__close:hover{background-color:var(--color-neutral-100);color:var(--color-text-primary)}.toast__close:active{transform:scale(.9)}.toast--success{border-left-color:var(--semantic-success)}.toast--success .toast__icon{color:var(--semantic-success)}.toast--error{border-left-color:var(--semantic-error)}.toast--error .toast__icon{color:var(--semantic-error)}.toast--warning{border-left-color:var(--semantic-warning)}.toast--warning .toast__icon{color:var(--semantic-warning)}.toast--info{border-left-color:var(--transit-primary)}.toast--info .toast__icon{color:var(--transit-primary)}.toast--exiting{animation:toastSlideOut .3s cubic-bezier(.32,.72,0,1) forwards}@keyframes toastSlideOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@media(max-width:767px){@keyframes toastSlideOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}}@media(prefers-color-scheme:dark){.toast{background:var(--color-neutral-800);box-shadow:0 10px 40px #0006}.toast__message{color:var(--color-neutral-100)}.toast__close{color:var(--color-neutral-400)}.toast__close:hover{background-color:var(--color-neutral-700);color:var(--color-neutral-100)}}@media(prefers-reduced-motion:reduce){.toast{animation:toastFadeIn .2s ease}@keyframes toastFadeIn{0%{opacity:0}to{opacity:1}}.toast--exiting{animation:toastFadeOut .2s ease forwards}@keyframes toastFadeOut{0%{opacity:1}to{opacity:0}}}@media(prefers-contrast:high){.toast{border:2px solid currentColor}}
