:root{--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--shadow-sm: 0 4px 6px rgba(0, 0, 0, .05);--shadow-md: 0 10px 15px rgba(0, 0, 0, .1);--shadow-float: 0 20px 25px rgba(0, 0, 0, .15);--transition: all .25s cubic-bezier(.4, 0, .2, 1)}html[data-theme=bus][data-mode=light]{--primary: #005A9C;--primary-hover: #00407a;--primary-contrast: #ffffff;--secondary: #FDE047;--background: #f0f4f8;--surface: #ffffff;--text: #16211a;--text-muted: #475569;--border: #cbd5e1;--glass-bg: rgba(255, 255, 255, .85);--route-direct: #e0f2fe;--route-one: #f1f5f9;--route-two: #fef3c7;--leg-1: #005A9C;--leg-2: #0f5c78;--leg-3: #b45309}html[data-theme=bus][data-mode=dark]{--primary: #3b82f6;--primary-hover: #2563eb;--primary-contrast: #ffffff;--secondary: #fef08a;--background: #0f172a;--surface: #1e293b;--text: #f8fafc;--text-muted: #94a3b8;--border: #334155;--glass-bg: rgba(30, 41, 59, .85);--route-direct: #1e3a8a;--route-one: #0f172a;--route-two: #78350f;--leg-1: #60a5fa;--leg-2: #38bdf8;--leg-3: #fbbf24}html[data-theme=taxi][data-mode=light]{--primary: #f0b90b;--primary-hover: #dca300;--primary-contrast: #111827;--secondary: #1a1a1a;--background: #f8f6f0;--surface: #ffffff;--text: #1a1a1a;--text-muted: #666666;--border: #e0dcd0;--glass-bg: rgba(255, 255, 255, .85);--route-direct: #fff8e1;--route-one: #f3f4f6;--route-two: #fff1f2;--leg-1: #d97706;--leg-2: #1a1a1a;--leg-3: #ef4444}html[data-theme=taxi][data-mode=dark]{--primary: #fcd34d;--primary-hover: #fbbf24;--primary-contrast: #111827;--secondary: #ffffff;--background: #121212;--surface: #1e1e1e;--text: #ffffff;--text-muted: #a3a3a3;--border: #333333;--glass-bg: rgba(30, 30, 30, .85);--route-direct: #382e00;--route-one: #1f2937;--route-two: #4c1d95;--leg-1: #fcd34d;--leg-2: #d1d5db;--leg-3: #f87171}.splash-screen{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--background);z-index:9999;display:flex;align-items:center;justify-content:center;transition:opacity .5s ease,visibility .5s ease}.splash-screen.hidden{opacity:0;visibility:hidden}.splash-content{display:flex;flex-direction:column;align-items:center;gap:24px;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.splash-logo{width:96px;height:96px;border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.loader{width:48px;height:48px;border:4px solid var(--border);border-bottom-color:var(--primary);border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation 1s linear infinite}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(.95)}}*{box-sizing:border-box;margin:0;padding:0}html,body{overflow-x:hidden;max-width:100vw;width:100%}body{font-family:Outfit,sans-serif;background-color:var(--background);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .3s ease,color .3s ease}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input{font-family:inherit;color:inherit}h1,h2,h3{line-height:1.2}.app-container{max-width:1200px;width:100%;margin:0 auto;padding:16px;min-height:100vh;display:flex;flex-direction:column;box-sizing:border-box;overflow-x:hidden}@media (min-width: 768px){.app-container{padding:24px}}.app-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;padding-bottom:16px;border-bottom:2px solid var(--border);flex-wrap:wrap;gap:16px;width:100%}.header-content{flex:1;min-width:260px;max-width:600px}.branding{display:flex;align-items:center;gap:14px;margin-bottom:10px}.logo{height:52px;width:52px;border-radius:var(--radius-sm);flex-shrink:0}.kicker{font-family:Space Mono,monospace;font-size:.75rem;font-weight:700;color:var(--primary);text-transform:uppercase;letter-spacing:.15em;margin-bottom:4px}h1{font-size:2.2rem;font-weight:800;color:var(--text);margin-bottom:2px;letter-spacing:-.02em}.tagline{display:none}.header-desc{font-size:.95rem;color:var(--text-muted);line-height:1.5}.header-meta{display:flex;flex-direction:column;align-items:flex-end;gap:8px;font-family:Space Mono,monospace;font-size:.8rem;text-align:right;min-width:200px}.meta-row{display:flex;justify-content:flex-end;gap:12px;color:var(--text);font-weight:600}.meta-dataset{display:flex;align-items:center;gap:12px}.meta-lbl{color:var(--text-muted);font-weight:400}.visitor-counter-wrap{display:flex;align-items:center;margin-top:4px}.visitor-counter-box{display:inline-flex;align-items:center;border:1px solid var(--border);padding:4px 6px;background:var(--surface);border-radius:var(--radius-sm)}.visitor-lbl{text-align:left;line-height:1.15;margin-right:8px;margin-left:2px;font-weight:700;color:var(--text-muted);letter-spacing:.04em;font-size:.68rem;font-family:Space Mono,monospace}.visitor-hits-pill{display:flex;border-radius:4px;overflow:hidden;font-family:Space Mono,monospace;font-size:.75rem;font-weight:700;box-shadow:0 1px 2px #00000014}.visitor-hits-lbl{padding:3px 6px;background:#e5e7eb;color:#374151}html[data-mode=dark] .visitor-hits-lbl{background:#334155;color:#cbd5e1}.visitor-count-val{padding:3px 8px;background:var(--primary);color:var(--primary-contrast, #fff);min-width:52px;text-align:center}.settings{display:flex;align-items:center;gap:16px;margin-top:4px}.icon-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--text);transition:var(--transition)}.icon-btn:hover{background:var(--primary);color:var(--primary-contrast, #fff);transform:translateY(-2px);border-color:var(--primary)}@media (max-width: 767px){.app-header{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:14px;padding-bottom:14px}.branding{gap:10px;margin-bottom:4px}.logo{height:42px;width:42px}h1{font-size:1.85rem}.header-desc{font-size:.86rem;line-height:1.45}.header-meta{flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-width:0;text-align:left;padding-top:10px;border-top:1px solid var(--border);flex-wrap:wrap;gap:8px}.meta-dataset{font-size:.72rem;gap:8px}.visitor-counter-wrap{margin-top:0}.settings{margin-top:0;margin-left:auto}}.main-content{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}@media (min-width: 900px){.main-content{grid-template-columns:360px minmax(0,1fr);align-items:start;gap:24px}}.card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--border)}.glass{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.search-section{padding:18px 16px;display:flex;flex-direction:column;gap:16px;position:relative;width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden}@media (min-width: 768px){.search-section{padding:24px;gap:20px}}.inputs-container{position:relative;display:flex;flex-direction:column;gap:14px;width:100%}.input-group{width:100%}.input-group label{display:block;font-family:Space Mono,monospace;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px;font-weight:700}.input-wrapper{position:relative;display:flex;align-items:center;width:100%}.input-wrapper input{width:100%;padding:13px 48px 13px 16px;font-size:1rem;font-weight:600;border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--background);transition:var(--transition);box-sizing:border-box}.input-wrapper input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #1f6f4a1a}.locate-btn{position:absolute;right:10px;color:var(--primary);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:var(--transition)}.locate-btn:hover{background:var(--route-direct)}.swap-btn{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:40px;height:40px;background:var(--surface);border:2px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text);z-index:10;transition:var(--transition);box-shadow:var(--shadow-sm);cursor:pointer}.swap-btn:hover{transform:translateY(-50%) rotate(180deg);background:var(--primary);color:var(--primary-contrast, #fff);border-color:var(--primary)}@media (min-width: 900px){.swap-btn{right:-20px}}.primary-btn{background:var(--primary);color:var(--primary-contrast, #ffffff);width:100%;padding:14px 16px;font-size:1.05rem;font-weight:800;border-radius:var(--radius-sm);margin-top:2px;transition:var(--transition);box-shadow:0 4px 0 var(--primary-hover);display:flex;align-items:center;justify-content:center;cursor:pointer;letter-spacing:.02em}html[data-theme=taxi] .primary-btn{color:#111827!important}html[data-theme=bus] .primary-btn{color:#fff!important}.primary-btn:hover{transform:translateY(2px);box-shadow:0 2px 0 var(--primary-hover)}.primary-btn:active{transform:translateY(4px);box-shadow:none}.autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--surface);border:2px solid var(--primary);border-top:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);max-height:240px;overflow-y:auto;z-index:100;box-shadow:var(--shadow-md);width:100%;box-sizing:border-box}.autocomplete-dropdown.hidden{display:none}.ac-item{padding:12px 14px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);transition:background .15s ease;min-height:44px}.ac-item:last-child{border-bottom:none}.ac-item:hover,.ac-item.highlight{background:var(--route-direct)}.ac-name{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;margin-right:12px}.ac-meta{font-family:Space Mono,monospace;font-size:.75rem;color:var(--text-muted)}.results-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}@media (min-width: 900px){.results-layout{grid-template-columns:1fr 1fr;gap:24px}}.results-panel{min-width:0;width:100%;max-width:100%}#results-container{max-height:none;overflow-y:visible;padding-right:0}@media (min-width: 900px){#results-container{max-height:285px;overflow-y:auto;padding-right:8px}}#results-container::-webkit-scrollbar{width:6px}#results-container::-webkit-scrollbar-track{background:transparent}#results-container::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:4px}#results-container::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;border-bottom:2px solid var(--border);padding-bottom:8px}.panel-header h2{font-family:Space Mono,monospace;font-size:1rem;text-transform:uppercase;color:var(--text-muted);letter-spacing:.05em}.badge{background:var(--primary);color:var(--primary-contrast, #fff);padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:700}.badge.hidden{display:none}.empty-state{text-align:center;padding:40px 20px;background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius-md);color:var(--text-muted);display:flex;flex-direction:column;justify-content:center;min-height:200px}.empty-icon{font-size:2.75rem;margin-bottom:14px;opacity:.5}.empty-state h3{color:var(--text);margin-bottom:8px}.map-panel{width:100%;max-width:100%;min-width:0}@media (min-width: 900px){.map-panel{position:sticky;top:24px}}#map-container{height:290px;width:100%;max-width:100%;background:var(--border);border-radius:var(--radius-md);border:2px solid var(--border);overflow:hidden;box-sizing:border-box}@media (min-width: 900px){#map-container{height:285px}}.map-note{margin-top:8px;font-family:Space Mono,monospace;font-size:.75rem;color:var(--text-muted);text-align:center}.route-group{margin-bottom:24px}.group-title{display:inline-block;padding:6px 12px;font-weight:800;font-size:.9rem;border-radius:var(--radius-sm);margin-bottom:12px;background:var(--route-direct);color:var(--text)}.group-title.direct{background:var(--route-direct)}.group-title.one-change{background:var(--route-one)}.group-title.two-changes{background:var(--route-two)}.journey-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-sm);margin-bottom:12px;cursor:pointer;transition:var(--transition);overflow:hidden}.journey-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--text-muted)}.journey-card.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.journey-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);background:#00000005}.bus-badge{font-family:Space Mono,monospace;font-weight:700;font-size:.85rem;padding:4px 8px;border-radius:4px;color:#fff}.bus-badge.gov{opacity:.9;border:1px dotted rgba(255,255,255,.6)}.bus-badge.leg-0{background:var(--leg-1)}.bus-badge.leg-1{background:var(--leg-2)}.bus-badge.leg-2{background:var(--leg-3)}.bus-badge.metro{color:#fff!important;border:none;font-weight:800;box-shadow:0 2px 4px #00000026;text-shadow:0 1px 2px rgba(0,0,0,.2)}.bus-badge.metro.metro-blue{background:linear-gradient(135deg,#1d4ed8,#3b82f6)!important}.bus-badge.metro.metro-green{background:linear-gradient(135deg,#15803d,#22c55e)!important}.bus-badge.metro.metro-orange{background:linear-gradient(135deg,#c2410c,#f97316)!important}.bus-badge.metro.metro-yellow{background:linear-gradient(135deg,#a16207,#eab308)!important;text-shadow:0 1px 2px rgba(0,0,0,.3)}.bus-badge.metro.metro-purple{background:linear-gradient(135deg,#6d28d9,#8b5cf6)!important}.bus-badge.auto{background:linear-gradient(135deg,#166534,#eab308)!important;color:#fff!important;border:none;font-weight:800;box-shadow:0 2px 4px #00000026;text-shadow:0 1px 2px rgba(0,0,0,.3)}.arrow{color:var(--text-muted);font-weight:800}.journey-cost{margin-left:auto;font-family:Space Mono,monospace;font-size:.75rem;color:var(--text-muted)}.journey-legs{padding:12px 16px}.leg-step{position:relative;padding:4px 0 4px 24px}.leg-step:before{content:"";position:absolute;left:6px;top:14px;bottom:-10px;width:2px;background:var(--border)}.leg-step:last-child:before{display:none}.leg-dot{position:absolute;left:0;top:10px;width:14px;height:14px;border-radius:50%;border:2px solid var(--surface)}.leg-step.leg-0 .leg-dot{background:var(--leg-1)}.leg-step.leg-1 .leg-dot{background:var(--leg-2)}.leg-step.leg-2 .leg-dot{background:var(--leg-3)}.leg-step.dot-metro-blue .leg-dot{background:#3b82f6!important;border-color:#1d4ed8!important}.leg-step.dot-metro-green .leg-dot{background:#22c55e!important;border-color:#15803d!important}.leg-step.dot-metro-orange .leg-dot{background:#f97316!important;border-color:#c2410c!important}.leg-step.dot-metro-yellow .leg-dot{background:#eab308!important;border-color:#a16207!important}.leg-step.dot-metro-purple .leg-dot{background:#8b5cf6!important;border-color:#6d28d9!important}.leg-step.dot-auto .leg-dot{background:#eab308!important;border-color:#166534!important}.leg-content{display:flex;flex-direction:column}.leg-title{font-weight:700;font-size:.95rem}.journey-meta{font-size:.85rem;color:var(--text-muted);margin-top:8px}.app-footer{margin-top:auto;padding-top:48px;padding-bottom:16px;text-align:center;font-family:Space Mono,monospace;font-size:.85rem;color:var(--text-muted);line-height:1.8}.footer-link{color:var(--primary);text-decoration:none;font-weight:700;transition:var(--transition)}.footer-link:hover{text-decoration:underline;color:var(--primary);opacity:.8}.leg-meta{font-size:.8rem;color:var(--text-muted);margin-bottom:4px}.stop-toggle{font-family:Space Mono,monospace;font-size:.75rem;color:var(--primary);background:none;border:none;cursor:pointer;padding:0;text-align:left;margin-top:4px}.stop-list{display:none;font-size:.8rem;color:var(--text-muted);line-height:1.6;padding-top:4px}.stop-list.show{display:block}.awards-marquee-section{margin:40px auto 20px;width:100%;overflow:hidden;text-align:center;padding:16px 0}.awards-title{font-family:Space Mono,monospace;font-weight:700;font-size:.9rem;color:var(--primary);margin-top:0;margin-bottom:12px;letter-spacing:.05em;text-transform:uppercase}.awards-marquee{overflow:hidden;position:relative;width:100%;display:flex}.awards-track{display:flex;width:2000px;animation:scrollMarquee 20s linear infinite;align-items:center}.awards-track:hover{animation-play-state:paused}.award-item{width:200px;display:flex;justify-content:center;align-items:center;flex-shrink:0;padding:0 20px}.award-item img{max-width:100%;max-height:60px;object-fit:contain;filter:grayscale(100%) opacity(.8);transition:filter .3s ease,transform .3s ease}.award-item img:hover{filter:grayscale(0%) opacity(1);transform:scale(1.05)}@keyframes scrollMarquee{0%{transform:translate(0)}to{transform:translate(-1000px)}}@media (max-width: 600px){.awards-track{width:1500px}.award-item{width:150px;padding:0 10px}@keyframes scrollMarquee{0%{transform:translate(0)}to{transform:translate(-750px)}}}.puja-hopper-section{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden}.puja-hopper-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}.puja-badge-pill{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(135deg,#dc2626,#b91c1c);color:#fff;font-size:.68rem;font-weight:800;letter-spacing:.05em;padding:3px 8px;border-radius:9999px;box-shadow:0 2px 4px #dc262640;animation:pulseGlow 2.5s infinite;white-space:nowrap}@keyframes pulseGlow{0%,to{box-shadow:0 0 #dc262666}50%{box-shadow:0 0 0 6px #dc262600}}.puja-hopper-title{font-size:.78rem;font-weight:600;color:var(--text-muted);white-space:nowrap}.puja-chips-scroll{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;width:100%;max-width:100%;min-width:0;box-sizing:border-box;padding:4px 2px 8px;scrollbar-width:thin;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.puja-chips-scroll::-webkit-scrollbar{height:4px}.puja-chips-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.puja-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:.76rem;font-weight:600;padding:6px 12px;border-radius:9999px;white-space:nowrap;flex-shrink:0;cursor:pointer;transition:var(--transition);box-shadow:var(--shadow-sm);touch-action:pan-x;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.puja-chip:hover,.puja-chip:active{background:var(--primary);color:var(--primary-contrast, #ffffff);border-color:var(--primary);transform:translateY(-1px)}.puja-chip-icon{font-size:.85rem}.ac-item.puja-ac-item{border-left:3px solid #dc2626;background:#dc262608}.ac-item.puja-ac-item:hover,.ac-item.puja-ac-item.highlight{background:#dc262614}.ac-pandal-title{font-weight:700;color:#dc2626;font-size:.88rem}.puja-info-card{display:flex;align-items:flex-start;gap:12px;background:linear-gradient(135deg,#fef2f2f2,#fee2e2e6);border:1px solid #fecaca;border-left:4px solid #dc2626;border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:16px;box-shadow:var(--shadow-sm);width:100%;max-width:100%;min-width:0;box-sizing:border-box;word-break:break-word;overflow-wrap:break-word}html[data-mode=dark] .puja-info-card{background:linear-gradient(135deg,#450a0a66,#7f1d1d4d);border-color:#7f1d1d}.puja-info-icon{font-size:1.5rem;line-height:1}.puja-info-content{flex:1}.puja-info-title{font-weight:800;font-size:.9rem;color:#b91c1c;margin-bottom:4px;letter-spacing:.02em}html[data-mode=dark] .puja-info-title{color:#f87171}.puja-info-detail{font-size:.82rem;line-height:1.45;color:var(--text);margin-bottom:4px}.puja-info-detail:last-child{margin-bottom:0}.puja-stop-tag{display:inline-block;font-size:.72rem;font-weight:700;color:#b91c1c;background:#dc26261a;padding:1px 6px;border-radius:4px;margin-left:4px}html[data-mode=dark] .puja-stop-tag{color:#fca5a5;background:#dc262640}.leg-step.walk-step{border-left-style:dashed}.dot-walk{background:#dc2626!important;box-shadow:0 0 0 3px #dc262633!important}.pandal-map-marker{filter:drop-shadow(0 4px 6px rgba(0,0,0,.4));transition:transform .2s cubic-bezier(.34,1.56,.64,1);cursor:pointer}.pandal-map-marker:hover{transform:scale(1.18) translateY(-4px)}.pandal-pin-label{background:#dc2626!important;color:#fff!important;font-weight:700!important;font-size:11px!important;padding:3px 8px!important;border-radius:6px!important;border:1.5px solid #ffffff!important;box-shadow:0 3px 8px #00000059!important}.pandal-pin-label:before{border-top-color:#dc2626!important}
