.map-container{width:100%;height:100%;position:relative;background:#f0f3f7;overflow:hidden}.map-image-wrap{width:100%;height:100%;overflow:hidden;cursor:grab;position:relative}.map-image-wrap:active{cursor:grabbing}.map-image{display:block;max-width:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform;transition:none}.zoom-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:20}.zoom-btn{width:40px;height:40px;background:#fff;border:1px solid #e0e4ea;border-radius:10px;color:#444;font-size:1.15rem;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #0000001a;transition:background .12s;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.zoom-btn:hover{background:#f5f7fa}.zoom-btn:active{background:#eaecf0}.train-panel{position:absolute;left:12px;bottom:12px;z-index:20;width:min(320px,calc(100vw - 80px));background:#fff;border-radius:16px;box-shadow:0 4px 24px #00000021;overflow:hidden}.train-panel-toggle{width:100%;display:flex;align-items:center;gap:8px;padding:12px 16px;background:#fff;border:none;cursor:pointer;font-size:.875rem;font-weight:700;color:#1a1d20;font-family:Manrope,sans-serif;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.train-panel-toggle:hover{background:#f8f9fa}.train-panel-icon{font-size:1rem}.train-count-badge{margin-left:auto;background:#006859;color:#fff;font-size:.625rem;font-weight:800;padding:2px 7px;border-radius:999px;min-width:22px;text-align:center}.train-panel-arrow{font-size:.6rem;color:#999;margin-left:4px}.train-panel-body{border-top:1px solid #f0f2f5;max-height:240px;overflow-y:auto;padding:8px 0;scrollbar-width:thin;scrollbar-color:#ddd transparent}.train-panel-body::-webkit-scrollbar{width:4px}.train-panel-body::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.train-panel-empty{font-size:.8rem;color:#aaa;text-align:center;padding:16px}.train-line-group{padding:6px 14px}.train-line-header{display:flex;align-items:center;gap:7px;margin-bottom:5px}.train-line-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.train-line-name{font-size:.8rem;font-weight:700;color:#222}.train-line-cnt{margin-left:auto;font-size:.68rem;color:#888}.train-station-list{display:flex;flex-wrap:wrap;gap:5px}.train-station-chip{display:inline-flex;align-items:center;gap:4px;background:#f5f7fa;border-radius:999px;padding:3px 9px 3px 6px;font-size:.69rem;color:#333;font-weight:500}.chip-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.chip-status{font-size:.6rem;font-weight:700;border-radius:4px;padding:1px 4px}.status-0{background:#fff3cd;color:#856404}.status-1{background:#d1e7dd;color:#0f5132}.status-2{background:#cfe2ff;color:#084298}.train-overlay{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.train-icon-group{pointer-events:all}.train-icon-body{transition:transform 1.5s cubic-bezier(.4,0,.2,1)}@keyframes trainHalo{0%,to{opacity:.18}50%{opacity:.38}}.train-halo{animation:trainHalo 2.5s ease-in-out infinite}.marker-tooltip{position:absolute;z-index:100;background:#1a1d20;color:#fff;border-radius:10px;padding:8px 12px;min-width:130px;box-shadow:0 6px 24px #00000059;pointer-events:none;animation:tooltipIn .15s ease}@keyframes tooltipIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tooltip-station{font-size:.8rem;font-weight:800;margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid rgba(255,255,255,.12);letter-spacing:-.02em}.tooltip-train{display:flex;align-items:center;gap:5px;font-size:.72rem;padding:2px 0}.tooltip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tooltip-line{font-weight:600;flex:1}.tooltip-status{font-size:.62rem;font-weight:700;border-radius:4px;padding:1px 5px}.marker-tooltip .status-0{background:#f59e0b;color:#1a1d20}.marker-tooltip .status-1{background:#10b981;color:#fff}.marker-tooltip .status-2{background:#3b82f6;color:#fff}.tooltip-express{font-size:.58rem;font-weight:700;background:#ef4444;color:#fff;border-radius:3px;padding:1px 4px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;height:100dvh}body{font-family:Manrope,Apple SD Gothic Neo,-apple-system,BlinkMacSystemFont,sans-serif;background:#f5f7fb;color:#1a1d20;overflow:hidden;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100dvh;background:#f5f7fb}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#fff;border-bottom:1px solid #e5e9ee;box-shadow:0 1px 3px #0000000a;z-index:10}.brand{display:flex;align-items:center;gap:10px}.brand-icon{font-size:1.4rem}.brand h1{font-size:1.05rem;font-weight:800;letter-spacing:-.02em;color:#1a1d20}.header-status{display:flex;align-items:center;gap:10px;font-size:.78rem;color:#5a6068}.status-loading{color:#006859;font-weight:700}.status-error{color:#c53030;font-weight:700}.status-time{color:#5a6068;font-variant-numeric:tabular-nums}.refresh-btn{background:#006859;color:#fff;border:none;border-radius:8px;padding:6px 12px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s}.refresh-btn:hover:not(:disabled){background:#00524a}.refresh-btn:disabled{opacity:.5;cursor:not-allowed}.line-picker{display:flex;align-items:center;gap:12px;padding:10px 20px;background:#fff;border-bottom:1px solid #e5e9ee;overflow-x:auto;flex-shrink:0}.line-picker-label{font-size:.78rem;font-weight:700;color:#5a6068;white-space:nowrap;flex-shrink:0}.line-chips{display:flex;gap:6px;flex-wrap:wrap}.line-chip{border:1.5px solid;background:transparent;border-radius:999px;padding:4px 12px;font-size:.74rem;font-weight:700;cursor:pointer;font-family:inherit;transition:all .12s;white-space:nowrap;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.line-chip:hover{transform:translateY(-1px)}.line-chip.active{box-shadow:0 2px 8px #00000026}.line-chip.clear{border-color:#cbd1d8;color:#5a6068}.map-area{flex:1;position:relative;overflow:hidden;min-height:0}
