*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:#0a0a0a;color:#f5f5f5;-webkit-tap-highlight-color:transparent}.app{height:100%;display:flex;flex-direction:column}.tabs{display:flex;position:relative;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid #222;flex-shrink:0;background:#0a0a0a;padding:0 8px}.tabs::-webkit-scrollbar{display:none}.tab{padding:14px 16px;font-size:13px;font-weight:500;white-space:nowrap;color:#666;border-bottom:2px solid transparent;cursor:pointer;transition:color .2s,border-color .2s;letter-spacing:.02em}.tab.active{color:#f5f5f5;border-bottom-color:#f5f5f5}.slides-wrapper{flex:1;overflow:hidden;position:relative}.slides{display:flex;height:100%;transition:transform .3s cubic-bezier(.25,.46,.45,.94);will-change:transform}.slides.dragging{transition:none}.slide{min-width:100%;height:100%;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch;transition:transform .25s ease}.slide.pulling{transition:none}.departure{--dep-opacity: 1;--dep-saturate: 1;display:flex;align-items:center;padding:12px;margin-bottom:6px;border-radius:12px;background:#141414;gap:12px;opacity:var(--dep-opacity);filter:saturate(var(--dep-saturate));transition:background .15s,opacity .25s ease,filter .25s ease}.departure:active{background:#1c1c1c}.dep-list.has-highlights .departure:not(.highlight):not(.leaving){--dep-opacity: .5;--dep-saturate: .2}.departure.highlight{background:#1e2a1e}.departure.highlight:active{background:#24331f}.departure.highlight .dep-direction{color:#d7f5d7}.line-badge{width:40px;height:40px;min-width:40px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;font-weight:800;letter-spacing:.01em;line-height:1;background:#1a1a1a;color:#f5f5f5;flex-shrink:0;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14}.line-badge.circle{border-radius:50%}.line-badge.len-1{font-size:22px}.line-badge.len-2{font-size:19px}.line-badge.len-3{font-size:15px}.line-badge.len-4{font-size:11px}.dep-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dep-direction{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.dep-platform{font-size:12px;color:#777}.dep-depart{font-size:12px;color:#777;font-variant-numeric:tabular-nums}.dep-depart:empty{display:none}.dep-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.dep-time{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.1;display:flex;align-items:baseline;gap:3px}.dep-time .unit{font-size:12px;font-weight:600;color:#888}.dep-time.now{color:#22c55e}.dep-time.now .unit{display:none}.dep-delay{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.dep-delay.late{color:#f87171}.dep-delay.early{color:#38bdf8}.dep-delay.ontime{color:#22c55e}.dep-delay.cancelled{color:#f87171;text-transform:uppercase;font-size:11px;letter-spacing:.04em}.departure.cancelled .dep-direction,.departure.cancelled .dep-time{text-decoration:line-through;color:#777}.loading,.empty,.error{display:flex;align-items:center;justify-content:center;height:200px;color:#666;font-size:14px}.spinner{width:20px;height:20px;border:2px solid #333;border-top-color:#f5f5f5;border-radius:50%;animation:spin .8s linear infinite;margin-right:10px}@keyframes spin{to{transform:rotate(360deg)}}.update-hint{text-align:center;font-size:11px;color:#444;padding:8px 0 0}.departure{overflow:hidden}.departure.entering{animation:depIn .3s ease}.departure.leaving{animation:depOut .3s ease forwards;pointer-events:none}@keyframes depIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:var(--dep-opacity);transform:translateY(0)}}@keyframes depOut{0%{opacity:var(--dep-opacity);max-height:80px;transform:translate(0)}to{opacity:0;max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;transform:translate(24px)}}.dep-time,.dep-delay{transition:color .3s ease}.dep-right.flash{animation:flash .5s ease}@keyframes flash{30%{transform:scale(1.14)}to{transform:scale(1)}}.ptr{position:absolute;top:-56px;left:0;right:0;height:56px;display:flex;align-items:center;justify-content:center;gap:8px;color:#888;font-size:13px;z-index:5;pointer-events:none}.ptr.animating{transition:transform .25s ease}.ptr-spinner{width:16px;height:16px;border:2px solid #333;border-top-color:#888;border-radius:50%}.ptr.ready .ptr-spinner{border-top-color:#22c55e}.ptr.refreshing .ptr-spinner{animation:spin .8s linear infinite}.locate-btn{position:fixed;bottom:24px;right:24px;z-index:100;width:64px;height:64px;border-radius:50%;border:none;background:#222;color:#f5f5f5;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #0006;transition:background .2s,transform .2s}.locate-btn:active{transform:scale(.92);background:#333}.locate-btn.loading svg{animation:spin .8s linear infinite}
