.bus-map-container{width:100%;height:100%;flex:1 1;min-width:0;position:relative}.bus-map-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:calc(100vh - var(--header-height, 64px));background-color:var(--color-background-alt);color:var(--color-text-light);font-size:var(--font-size-body);gap:var(--space-4)}.bus-map-loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:bus-map-spin .8s linear infinite}@keyframes bus-map-spin{to{transform:rotate(1turn)}}.refresh-indicator{position:absolute;bottom:var(--space-3,.75rem);right:var(--space-3,.75rem);display:flex;align-items:center;gap:var(--space-2,.5rem);padding:var(--space-2,.5rem) var(--space-3,.75rem);background:var(--color-background,#ffffff);border-radius:var(--border-radius,4px);box-shadow:0 1px 4px rgba(0,0,0,.15);font-size:var(--font-size-small,.875rem);color:var(--color-text,#333333);z-index:1}.refresh-indicator--stale{color:var(--color-warning,#bf360c);border:1px solid var(--color-warning,#bf360c)}.refresh-indicator__spinner{width:14px;height:14px;border:2px solid var(--color-border,#e0e0e0);border-top-color:var(--color-primary,#ff8200);border-radius:50%;animation:bus-map-spin .8s linear infinite}@media (prefers-reduced-motion:reduce){.refresh-indicator__spinner{animation:none;border-top-color:var(--color-primary,#ff8200);opacity:.6}}.load-legend{position:absolute;bottom:var(--space-3,.75rem);left:var(--space-3,.75rem);display:flex;flex-direction:column;gap:var(--space-1,.25rem);padding:var(--space-2,.5rem) var(--space-3,.75rem);background:var(--color-background,#ffffff);border-radius:var(--border-radius,4px);box-shadow:0 1px 4px rgba(0,0,0,.15);font-size:var(--font-size-small,.875rem);color:var(--color-text,#333333);z-index:1}.load-legend__title{font-weight:600}.load-legend__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1,.25rem)}.load-legend__item{display:flex;align-items:center;gap:var(--space-2,.5rem)}.load-legend__swatch{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.delay-legend{position:absolute;bottom:calc(var(--space-3, .75rem) + 140px);left:var(--space-3,.75rem);display:flex;flex-direction:column;gap:var(--space-1,.25rem);padding:var(--space-2,.5rem) var(--space-3,.75rem);background:var(--color-background,#ffffff);border-radius:var(--border-radius,4px);box-shadow:0 1px 4px rgba(0,0,0,.15);font-size:var(--font-size-small,.875rem);color:var(--color-text,#333333);z-index:1}.delay-legend__title{font-weight:600}.delay-legend__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1,.25rem)}.delay-legend__item{display:flex;align-items:center;gap:var(--space-2,.5rem)}.delay-legend__swatch{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.data-source-status{position:absolute;bottom:var(--space-3,.75rem);right:calc(var(--space-3, .75rem) + 200px);display:flex;flex-direction:column;gap:var(--space-1,.25rem);padding:var(--space-2,.5rem) var(--space-3,.75rem);background:var(--color-background,#ffffff);border-radius:var(--border-radius,4px);box-shadow:0 1px 4px rgba(0,0,0,.15);font-size:var(--font-size-small,.875rem);color:var(--color-text,#333333);z-index:1}.data-source-status__item{display:flex;align-items:center;gap:var(--space-2,.5rem)}.data-source-status__dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.data-source-status__dot--active{background-color:var(--color-success,#2e7d32)}.data-source-status__dot--warning{background-color:var(--color-warning,#f9a825)}.data-source-status__dot--error{background-color:var(--color-error,#c62828)}.data-source-status__label{flex:1 1;white-space:nowrap}.data-source-status__time{color:var(--color-text-light,#666666);white-space:nowrap}.data-source-status__outages{margin-left:.5rem;padding:0 .4rem;background:var(--color-warning-bg,#fff3cd);color:var(--color-warning-text,#8a6d3b);border-radius:3px;font-size:.75rem;white-space:nowrap}.data-source-status__expand{margin-top:.5rem;padding:.25rem .5rem;background:transparent;border:1px solid var(--color-border);border-radius:3px;color:var(--color-text);font-size:.8rem;cursor:pointer;text-align:left;width:100%}.data-source-status__expand:focus,.data-source-status__expand:hover{background:var(--color-background-alt);outline:2px solid var(--color-primary)}.data-source-status__outage-list{list-style:none;margin:.5rem 0 0;padding:0;max-height:200px;overflow-y:auto;font-size:.78rem;display:flex;flex-direction:column;gap:.25rem}.data-source-status__outage-item{padding:.25rem .4rem;background:var(--color-background-alt);border-radius:3px;display:grid;grid-template-columns:minmax(80px,1fr) auto;grid-gap:.2rem .5rem;gap:.2rem .5rem}.data-source-status__outage-item strong{grid-column:1/-1;color:var(--color-text)}@media (max-width:1024px){.data-source-status{right:var(--space-2,.5rem);bottom:calc(var(--space-2, .5rem) + 56px);max-width:240px;font-size:var(--font-size-caption,.75rem)}.delay-legend{bottom:calc(var(--space-3, .75rem) + 110px)}}@media (max-width:768px){.bus-map-loading{height:calc(100vh - var(--header-height-mobile, 56px))}.refresh-indicator{bottom:var(--space-2,.5rem);right:var(--space-2,.5rem);font-size:.7rem;padding:.2rem .4rem;gap:.25rem}.refresh-indicator__spinner{width:10px;height:10px}.delay-legend,.load-legend{left:var(--space-2,.5rem);font-size:.7rem;padding:.3rem .5rem;max-width:50vw}.load-legend{bottom:var(--space-2,.5rem)}.delay-legend{bottom:calc(var(--space-2, .5rem) + 70px)}.delay-legend__list,.load-legend__list{gap:.1rem}.delay-legend__item,.load-legend__item{font-size:.7rem;gap:.3rem}.delay-legend__swatch,.load-legend__swatch{width:8px;height:8px}.data-source-status{left:var(--space-2,.5rem);right:auto;bottom:calc(var(--space-2, .5rem) + 140px);max-width:calc(100vw - 1rem);font-size:.7rem;padding:.3rem .5rem;gap:.2rem}.data-source-status__item{flex-wrap:wrap;gap:.25rem}.data-source-status__time{font-size:.65rem}.data-source-status__outage-list{max-height:120px}.delay-indicator{--delay-indicator-top:var(--space-2,0.5rem);--delay-indicator-right:var(--space-2,0.5rem);width:180px}.delay-indicator summary{padding:.4rem .5rem;font-size:.8rem}.delay-indicator__list{max-height:40vh}.delay-indicator__item{font-size:.75rem}}@media (max-width:480px){.delay-legend,.load-legend{max-width:44vw}.delay-indicator{width:150px}.data-source-status{max-width:calc(100vw - 1rem)}}