:root{--background-deep: #0a0e1a;--background-layer: #111827;--glass-bg: rgba(255, 255, 255, .03);--glass-bg-hover: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .08);--glass-border-strong: rgba(255, 255, 255, .12);--glass-highlight: rgba(255, 255, 255, .18);--glass-shadow: rgba(0, 0, 0, .4);--text-primary: #ffffff;--text-secondary: #cbd5e1;--text-muted: #64748b;--text-subtle: #475569;--accent-blue: #3b82f6;--accent-blue-bright: #60a5fa;--accent-amber: #f59e0b;--accent-amber-bright: #fbbf24;--status-live: #10b981;--status-delayed: #ef4444;--font-mono: "JetBrains Mono", monospace;--font-sans: "DM Sans", sans-serif;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .5s cubic-bezier(.4, 0, .2, 1);--transition-spring: .6s cubic-bezier(.34, 1.56, .64, 1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--background-deep);color:var(--text-primary);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);overflow-x:hidden;font-feature-settings:"tnum","salt";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.aurora-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-2;overflow:hidden;background:radial-gradient(ellipse at top,#1e293b,#0a0e1a,#020617)}.aurora-layer{position:absolute;width:200%;height:200%;opacity:.2;mix-blend-mode:screen;filter:blur(100px);will-change:transform}.aurora-layer:nth-child(1){background:radial-gradient(circle at 20% 30%,rgba(59,130,246,.4) 0%,transparent 50%);animation:aurora-drift-1 70s ease-in-out infinite}.aurora-layer:nth-child(2){background:radial-gradient(circle at 80% 70%,rgba(139,92,246,.25) 0%,transparent 50%);animation:aurora-drift-2 55s ease-in-out infinite}.aurora-layer:nth-child(3){background:radial-gradient(circle at 50% 50%,rgba(14,165,233,.2) 0%,transparent 50%);animation:aurora-drift-3 85s ease-in-out infinite}@keyframes aurora-drift-1{0%,to{transform:translate(-10%,-10%) scale(1)}50%{transform:translate(10%,10%) scale(1.1)}}@keyframes aurora-drift-2{0%,to{transform:translate(5%,15%) scale(1)}50%{transform:translate(-15%,-5%) scale(1.15)}}@keyframes aurora-drift-3{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-10%,20%) scale(1.05)}}.noise-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='2.5' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");pointer-events:none}.container{width:100%;max-width:680px;display:flex;flex-direction:column;gap:var(--space-xl);animation:container-fade-in .7s cubic-bezier(.16,1,.3,1) backwards;position:relative}@keyframes container-fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.glass-panel{background:linear-gradient(135deg,#ffffff0d,#ffffff05);backdrop-filter:blur(32px) saturate(200%);-webkit-backdrop-filter:blur(32px) saturate(200%);border:1px solid var(--glass-border);border-radius:24px;box-shadow:0 8px 32px #0000004d,0 4px 16px #0003,inset 0 1px #ffffff1a,inset 0 -1px #0000001a;position:relative;overflow:hidden;animation-fill-mode:backwards;transition:all var(--transition-base)}.glass-panel:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 50%,transparent 100%);pointer-events:none}.glass-panel:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center,rgba(255,255,255,.03) 0%,transparent 70%);opacity:0;transition:opacity var(--transition-slow);pointer-events:none}.glass-panel:hover:after{opacity:1}.header-panel{padding:2rem 2.5rem;animation-name:panel-slide-in;animation-duration:.6s;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-delay:.1s}@keyframes panel-slide-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.route-info{display:flex;align-items:center;gap:var(--space-lg);width:100%}.bus-icon{display:flex;align-items:center;justify-content:center;width:72px;height:72px;background:linear-gradient(135deg,#3b82f626,#3b82f60d);border:1px solid rgba(59,130,246,.2);border-radius:16px;color:var(--accent-blue-bright);flex-shrink:0;box-shadow:0 4px 16px #3b82f61a,inset 0 1px #ffffff1a;transition:all var(--transition-base)}.bus-icon:hover{transform:translateY(-2px);box-shadow:0 8px 24px #3b82f626,inset 0 1px #ffffff26}.route-details{flex:1;min-width:0}.route-title{display:flex;align-items:center;margin-bottom:1rem}.line-number{font-family:var(--font-mono);background:linear-gradient(135deg,var(--accent-blue) 0%,var(--accent-blue-bright) 100%);color:#fff;padding:.5rem 1rem;border-radius:12px;font-size:1.5rem;font-weight:700;letter-spacing:.025em;box-shadow:0 4px 12px #3b82f64d,inset 0 1px #fff3;transition:all var(--transition-base)}.line-number:hover{transform:translateY(-1px);box-shadow:0 6px 16px #3b82f666,inset 0 1px #ffffff40}.route-stations{display:flex;align-items:center;gap:var(--space-lg)}.station-group{display:flex;flex-direction:column;gap:.25rem}.station-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.station-name{font-size:1.25rem;font-weight:600;color:var(--text-primary);letter-spacing:-.01em;text-shadow:0 2px 8px rgba(0,0,0,.3)}.route-arrow{color:var(--text-muted);font-weight:300;font-size:1.5rem;opacity:.5;flex-shrink:0;display:flex;align-items:center;justify-content:center}.route-arrow-horizontal{margin:0 var(--space-xs)}.route-arrow-vertical{display:none}.direction-toggle{display:flex;align-items:center;justify-content:center;width:52px;height:52px;margin-left:auto;background:linear-gradient(135deg,#ffffff0f,#ffffff08);border:1px solid rgba(255,255,255,.12);border-radius:14px;color:var(--text-primary);cursor:pointer;transition:all var(--transition-base);flex-shrink:0;box-shadow:0 2px 8px #0000001a,inset 0 1px #ffffff1a;position:relative;overflow:hidden}.direction-toggle:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity var(--transition-base)}.direction-toggle:hover{background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-color:#ffffff2e;transform:translateY(-2px);box-shadow:0 4px 16px #0003,inset 0 1px #ffffff26}.direction-toggle:hover:before{opacity:1}.direction-toggle:active{transform:translateY(0) scale(.95)}.direction-toggle svg{transition:transform var(--transition-spring);position:relative;z-index:1}.direction-toggle:hover svg{transform:rotate(180deg)}.departures-panel{padding:2rem 2.5rem;animation-name:panel-slide-in;animation-duration:.6s;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-delay:.2s}.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.panel-title{font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--text-secondary);text-shadow:0 2px 4px rgba(0,0,0,.2)}.live-indicator{display:flex;align-items:center;gap:var(--space-xs);font-size:.75rem;font-weight:500;color:var(--status-live);text-transform:uppercase;letter-spacing:.05em}.pulse-dot{width:10px;height:10px;background:var(--status-live);border-radius:50%;position:relative;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;box-shadow:0 0 8px #10b98199,0 0 16px #10b9814d}.pulse-dot:before{content:"";position:absolute;inset:-5px;border-radius:50%;background:var(--status-live);opacity:.4;animation:pulse-ring 2s cubic-bezier(.4,0,.6,1) infinite}.pulse-dot:after{content:"";position:absolute;inset:-10px;border-radius:50%;background:var(--status-live);opacity:.2;animation:pulse-ring-outer 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(.95)}}@keyframes pulse-ring{0%{transform:scale(.7);opacity:.6}50%{transform:scale(1.3);opacity:0}to{transform:scale(.7);opacity:0}}@keyframes pulse-ring-outer{0%{transform:scale(.5);opacity:.4}50%{transform:scale(1.5);opacity:0}to{transform:scale(.5);opacity:0}}.departures-list{display:flex;flex-direction:column;gap:var(--space-sm)}.departure-item{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:var(--space-lg);padding:var(--space-lg);background:linear-gradient(135deg,#ffffff0a,#ffffff05);border:1px solid rgba(255,255,255,.08);border-radius:16px;transition:all var(--transition-base);animation:departure-fade-in .4s cubic-bezier(.16,1,.3,1) backwards;position:relative;overflow:hidden;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.departure-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--accent-blue-bright) 0%,var(--accent-blue) 100%);opacity:0;transition:all var(--transition-base);border-radius:0 4px 4px 0}.departure-item:hover{background:linear-gradient(135deg,#ffffff0f,#ffffff08);border-color:#ffffff1f;transform:translate(4px) translateY(-1px);box-shadow:0 4px 16px #0003,inset 0 1px #ffffff1a}.departure-item:hover:before{opacity:1;width:5px}.departure-item:first-child{background:linear-gradient(135deg,#3b82f626,#3b82f60d);border-color:#3b82f640;box-shadow:0 4px 16px #3b82f61a,inset 0 1px #ffffff1a}.departure-item:first-child:before{opacity:1;box-shadow:0 0 12px #3b82f666}.departure-item:first-child:hover{background:linear-gradient(135deg,#3b82f633,#3b82f614);border-color:#3b82f64d;box-shadow:0 8px 24px #3b82f626,inset 0 1px #ffffff26}@keyframes departure-fade-in{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.departure-item:nth-child(1){animation-delay:.1s}.departure-item:nth-child(2){animation-delay:.2s}.departure-item:nth-child(3){animation-delay:.3s}.departure-item:nth-child(4){animation-delay:.4s}.departure-item:nth-child(5){animation-delay:.5s}.departure-indicator{width:8px;height:8px;background:var(--text-muted);border-radius:50%;flex-shrink:0;transition:all var(--transition-base);box-shadow:0 0 0 2px #ffffff1a}.departure-item:hover .departure-indicator{background:var(--text-secondary);box-shadow:0 0 0 3px #ffffff26}.departure-item:first-child .departure-indicator{background:var(--accent-blue-bright);animation:indicator-pulse 2s ease-in-out infinite;box-shadow:0 0 0 3px #3b82f633,0 0 12px #3b82f666}@keyframes indicator-pulse{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 0 3px #3b82f633,0 0 12px #3b82f666}50%{opacity:.8;transform:scale(1.15);box-shadow:0 0 0 5px #3b82f626,0 0 20px #3b82f64d}}.departure-display{font-family:var(--font-mono);font-size:2.25rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;white-space:nowrap;font-feature-settings:"tnum";text-shadow:0 2px 8px rgba(0,0,0,.3);transition:all var(--transition-base)}.departure-item:hover .departure-display{transform:scale(1.02);text-shadow:0 4px 12px rgba(0,0,0,.4)}.departure-item:first-child .departure-display{color:var(--accent-blue-bright);font-size:2.5rem;text-shadow:0 2px 12px rgba(59,130,246,.4),0 0 24px rgba(59,130,246,.2)}.departure-time{font-family:var(--font-mono);font-size:1.125rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;font-feature-settings:"tnum";opacity:.9;transition:all var(--transition-base)}.departure-item:hover .departure-time{opacity:1;color:var(--text-primary)}.departure-status{display:flex;align-items:center;justify-content:center;min-width:90px;padding:.5rem .875rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:10px;font-family:var(--font-sans);font-size:.75rem;font-weight:600;color:var(--text-primary);white-space:nowrap;text-transform:uppercase;letter-spacing:.05em;transition:all var(--transition-base);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 2px 8px #0000001a,inset 0 1px #ffffff1a}.status-ontime{background:linear-gradient(135deg,#10b98126,#10b98114);border-color:#10b98166;color:#34d399;box-shadow:0 2px 12px #10b98126,inset 0 1px #ffffff26}.status-expected{background:linear-gradient(135deg,#3b82f626,#3b82f614);border-color:#3b82f666;color:var(--accent-blue-bright);box-shadow:0 2px 12px #3b82f626,inset 0 1px #ffffff26}.status-delayed{background:linear-gradient(135deg,#f59e0b26,#f59e0b14);border-color:#f59e0b66;color:var(--accent-amber-bright);box-shadow:0 2px 12px #f59e0b26,inset 0 1px #ffffff26}.status-cancelled{background:linear-gradient(135deg,#ef444426,#ef444414);border-color:#ef444466;color:#f87171;box-shadow:0 2px 12px #ef444426,inset 0 1px #ffffff26}.status-notexpected{background:linear-gradient(135deg,#64748b26,#64748b14);border-color:#64748b66;color:#94a3b8;box-shadow:0 2px 8px #64748b1a,inset 0 1px #ffffff1a}.status-unknown{background:linear-gradient(135deg,#ffffff14,#ffffff0a);border-color:#ffffff26;color:var(--text-secondary)}.loading-state{display:flex;flex-direction:column;gap:var(--space-sm)}.skeleton-departure{height:88px;background:linear-gradient(110deg,#ffffff05 0% 40%,#ffffff14 50%,#ffffff05 60% 100%);background-size:200% 100%;border:1px solid rgba(255,255,255,.06);border-radius:16px;animation:skeleton-shimmer 2.5s ease-in-out infinite;position:relative;overflow:hidden}.skeleton-departure:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.05) 50%,transparent 100%);animation:skeleton-sweep 2s ease-in-out infinite}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-xl);text-align:center;gap:var(--space-md);color:var(--text-secondary)}.error-state svg{color:var(--status-delayed);opacity:.8}.error-message{font-size:1rem;color:var(--text-secondary)}.retry-button{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--text-primary);font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-base)}.retry-button:hover{background:#ffffff14;border-color:#ffffff26;transform:translateY(-1px)}.retry-button:active{transform:translateY(0)}.no-departures-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-xl);text-align:center;gap:var(--space-md);color:var(--text-secondary)}.no-departures-state svg{opacity:.5}.no-departures-message{font-size:1rem;color:var(--text-secondary)}.last-updated{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid rgba(255,255,255,.06);text-align:center;font-size:.6875rem;color:var(--text-subtle);font-weight:500;letter-spacing:.025em;text-transform:uppercase;opacity:.8}.alerts-panel{padding:var(--space-lg) var(--space-xl);animation-name:panel-slide-in;animation-duration:.6s;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-delay:.3s;background:#ef44440d;border-color:#ef444433}.alert-header{display:flex;align-items:center;gap:var(--space-sm);font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--status-delayed);margin-bottom:var(--space-md)}.alerts-content{font-size:.875rem;color:var(--text-secondary);line-height:1.6}.alert-item{padding:var(--space-sm) 0}.alert-item:not(:last-child){border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:var(--space-sm)}@media(max-width:640px){body{padding:var(--space-md)}.container{gap:var(--space-md)}.header-panel{padding:var(--space-lg)}.route-info{gap:var(--space-md)}.bus-icon{width:48px;height:48px}.bus-icon svg{width:24px;height:24px}.route-title{margin-bottom:.75rem}.line-number{font-size:1.125rem;padding:.375rem .75rem}.route-stations{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.station-group{width:100%}.station-label{font-size:.625rem}.station-name{font-size:1rem}.route-arrow-horizontal{display:none}.route-arrow-vertical{display:flex;margin:0;align-self:center;width:100%}.direction-toggle{width:40px;height:40px}.direction-toggle svg{width:18px;height:18px}.departures-panel{padding:var(--space-lg)}.departure-item{grid-template-columns:auto 1fr auto;gap:var(--space-md);padding:var(--space-md)}.departure-display{font-size:1.5rem}.departure-item:first-child .departure-display{font-size:1.75rem}.departure-time{font-size:.875rem;grid-column:2 / 3;grid-row:2}.departure-status{min-width:70px;padding:.375rem .5rem;font-size:.65rem}}@media(max-width:400px){.route-stations{gap:var(--space-sm)}.station-name{font-size:.9375rem}.departure-item{grid-template-columns:1fr auto;gap:var(--space-sm)}.departure-indicator{display:none}.departure-display,.departure-time{grid-column:1}.departure-status{grid-column:2;grid-row:1 / 3;align-self:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(prefers-contrast:high){.glass-panel,.departure-item{border-width:2px}}button:focus-visible,.retry-button:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}
