:root{--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#eff6ff;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--bg-page:#f8fafc;--bg-card:#fff;--text-main:#0f172a;--text-muted:#64748b;--border-color:#e2e8f0;--bus-accent:#0284c7;--font-family:-apple-system, BlinkMacSystemFont, "Pretendard", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{width:100%;height:100%}body{font-family:var(--font-family);background-color:var(--bg-page);color:var(--text-main);margin:0;padding:0;line-height:1.5;overflow-x:hidden}#root{flex-direction:column;width:100%;min-height:100vh;display:flex}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input{font-family:inherit}.stop-bottom-sheet{z-index:45;background:#fff;border-top-left-radius:20px;border-top-right-radius:20px;flex-direction:column;height:60vh;max-height:65vh;animation:.24s cubic-bezier(.16,1,.3,1) slideUpStop;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -8px 30px #0000001f}@keyframes slideUpStop{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.sheet-drag-handle{background-color:#cbd5e1;border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:10px auto 4px}.stop-sheet-header{flex-shrink:0;padding:6px 20px 8px}.stop-sheet-title-row{justify-content:space-between;align-items:center;display:flex}.stop-sheet-name{color:#0f172a;letter-spacing:-.4px;margin:0;font-size:1.25rem;font-weight:700}.sheet-close-btn{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:4px;transition:all .15s;display:flex}.sheet-close-btn:hover{color:#0f172a;background:#f1f5f9}.stop-sheet-subtitle{color:#64748b;align-items:center;gap:6px;margin-top:3px;font-size:.83rem;display:flex}.stop-id-tag{color:#475569;font-weight:600}.sub-divider{color:#cbd5e1}.stop-dir-tag{color:#64748b}.stop-sheet-divider{background-color:#f1f5f9;flex-shrink:0;width:100%;height:1px}.stop-sheet-content{-webkit-overflow-scrolling:touch;flex:1;padding:4px 20px 48px;overflow-y:auto}.stop-sheet-loading{color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:40px 0;font-size:.88rem;display:flex}.spin-icon{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stop-route-card{cursor:pointer;border-bottom:1px solid #f1f5f9;align-items:center;padding:12px 0;transition:background-color .15s;display:flex}.stop-route-card:hover{background-color:#f8fafc}.route-bookmark-btn{cursor:pointer;color:#cbd5e1;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;margin-right:6px;padding:6px;transition:all .15s;display:flex}.route-bookmark-btn:hover{color:#94a3b8;background:#f1f5f9}.route-bookmark-btn.active{color:#0284c7}.route-main-info{flex:1;min-width:0;margin-right:12px}.route-name-row{align-items:center;gap:6px;margin-bottom:2px;display:flex}.route-type-pill{color:#fff;letter-spacing:-.2px;background:#0891b2;border-radius:4px;flex-shrink:0;padding:2px 5px;font-size:.7rem;font-weight:700}.route-title-text{color:#0f172a;letter-spacing:-.3px;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.route-dir-sub{color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.route-arrival-info{text-align:right;flex-shrink:0;min-width:95px;margin-right:8px}.arrival-main-red{color:#ef4444;font-size:.92rem;font-weight:700;line-height:1.25}.arrival-sub-gray{color:#94a3b8;margin-top:1px;font-size:.75rem}.arrival-none-txt{color:#94a3b8;font-size:.88rem;font-weight:500}.route-bell-btn{color:#94a3b8;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:all .15s;display:flex}.route-bell-btn:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.no-routes-msg{text-align:center;color:#94a3b8;padding:30px 0;font-size:.9rem}.floating-stop-refresh-btn{color:#0284c7;cursor:pointer;z-index:10;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:all .15s;display:flex;position:absolute;bottom:18px;right:18px;box-shadow:0 4px 12px #00000024}.floating-stop-refresh-btn:hover{background:#f8fafc;transform:scale(1.05);box-shadow:0 5px 15px #0000002e}.floating-stop-refresh-btn.refreshing{color:#0891b2;animation:.8s linear infinite spin}.kakao-selected-stop-pin{cursor:pointer;z-index:25;filter:drop-shadow(0 3px 6px #00000040);flex-direction:column;align-items:center;display:flex;position:relative}.selected-stop-bubble{color:#fff;background:#0284c7;border:2.5px solid #fff;border-radius:12px;justify-content:center;align-items:center;width:36px;height:36px;display:flex;box-shadow:0 2px 8px #0284c766}.selected-stop-pointer{border-top:7px solid #0284c7;border-left:6px solid #0000;border-right:6px solid #0000;width:0;height:0;margin-top:-1px}.kakao-selected-stop-pin:before{content:"";z-index:-1;background:#0284c747;border-radius:50%;width:46px;height:46px;animation:1.8s infinite pulseStopHalo;position:absolute;top:18px;left:50%;transform:translate(-50%,-50%)}@keyframes pulseStopHalo{0%{opacity:.9;transform:translate(-50%,-50%)scale(.85)}70%{opacity:0;transform:translate(-50%,-50%)scale(1.45)}to{opacity:0;transform:translate(-50%,-50%)scale(1.45)}}.bus-bottom-sheet{z-index:40;background-color:#fff;border-radius:24px 24px 0 0;flex-direction:column;gap:12px;padding:20px 24px 28px;animation:.25s ease-out slideUpSheet;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -10px 35px #00000026}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-header{justify-content:space-between;align-items:center;display:flex}.sheet-route-info{cursor:pointer;align-items:center;gap:8px;display:flex}.route-badge-cyan{color:#fff;letter-spacing:-.3px;background-color:#0891b2;border-radius:6px;padding:3px 8px;font-size:.76rem;font-weight:700}.route-name-title{color:#0f172a;align-items:center;gap:4px;font-size:1.05rem;font-weight:800;display:flex}.route-direction-sub{color:#64748b;font-size:.88rem;font-weight:500}.sheet-header-actions{align-items:center;gap:8px;display:flex}.sheet-track-btn{color:#475569;background:#f8fafc;border:1px solid #cbd5e1;border-radius:20px;padding:4px 10px;font-size:.75rem;font-weight:700;transition:all .15s}.sheet-track-btn.active{color:#fff;background:#0284c7;border-color:#0284c7}.sheet-action-icon{color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex}.sheet-action-icon:hover{color:#0f172a;background:#f1f5f9}.sheet-status-row{align-items:baseline;gap:8px;margin-top:2px;display:flex}.target-stop-wrap{align-items:center;gap:4px;display:flex}.target-stop-name{color:#0f172a;letter-spacing:-.5px;font-size:1.45rem;font-weight:800}.status-suffix{color:#1e293b;font-size:1.35rem;font-weight:700}.highlight-arrival{color:#ef4444;font-weight:800}.highlight-departure{color:#d97706;font-weight:800}.highlight-time{color:#ef4444;font-weight:800}.highlight-traveling{color:#0284c7}.sheet-speed-row{margin-top:-2px}.sheet-info-chips-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sheet-speed-txt{color:#64748b;font-size:.9rem;font-weight:600}.sheet-dist-txt{color:#0369a1;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;padding:1px 7px;font-size:.78rem;font-weight:700;line-height:1.3}.provide-status-badge{border-radius:10px;padding:2px 7px;font-size:.74rem;font-weight:700;line-height:1.2}.provide-status-badge.departure{color:#b45309;background:#fef3c7;border:1px solid #fde68a}.provide-status-badge.arriving{color:#b91c1c;background:#fee2e2;border:1px solid #fca5a5;animation:1.8s infinite pulse}.provide-status-badge.enroute{color:#0369a1;background:#e0f2fe;border:1px solid #bae6fd}.its-official-chip{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;align-items:center;gap:3px;padding:2px 9px;font-size:.76rem;display:inline-flex}.its-official-chip strong{color:#0f172a;font-weight:700}.its-rstop-txt{color:#0284c7;font-weight:600}.sheet-bus-nav-row{justify-content:space-between;margin-top:8px;display:flex}.sheet-nav-pill{color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:20px;padding:6px 14px;font-size:.8rem;font-weight:600;transition:all .15s}.sheet-nav-pill:hover{color:#1e293b;background:#f8fafc;border-color:#cbd5e1}.sheet-mini-timeline{margin-top:24px;padding-bottom:6px;position:relative}.mini-bus-marker-wrap{z-index:5;flex-direction:column;align-items:center;transition:left .5s ease-out;display:flex;position:absolute;top:-38px;transform:translate(-50%)}.mini-bus-badge{color:#1e293b;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:12px;align-items:center;gap:3px;padding:1px 7px;font-size:.72rem;display:flex;box-shadow:0 2px 6px #00000014}.mini-low-txt{color:#334155;font-weight:600}.mini-dot-sep{color:#94a3b8;margin:0 1px;font-size:.65rem}.mini-bus-icon{filter:drop-shadow(0 2px 4px #00000026);margin-top:2px}.mini-line-track{background-color:#cbd5e1;border-radius:4px;width:100%;height:6px;position:relative;overflow:hidden}.mini-line-fill-remaining{background:#0891b2;border-radius:4px;height:100%;transition:width .4s ease-out;position:absolute;top:0;right:0}.mini-stop-dots-row{justify-content:space-between;margin-top:10px;display:flex;position:relative}.mini-stop-col{flex-direction:column;align-items:flex-start;display:flex}.mini-stop-col.right{align-items:flex-end}.mini-dot{z-index:4;background:#fff;border:3px solid #cbd5e1;border-radius:50%;width:13px;height:13px;position:absolute;top:-15px}.mini-dot.prev{background:#fff;border-color:#cbd5e1;left:0}.mini-dot.next{background:#0891b2;border-color:#0891b2;right:0}.mini-dot.prev.arrival,.mini-dot.next.arrival{background:#ef4444;border-color:#ef4444;animation:1.8s infinite pulseMiniDot;box-shadow:0 0 #ef4444b3}@keyframes pulseMiniDot{0%{box-shadow:0 0 #ef4444b3}70%{box-shadow:0 0 0 6px #ef444400}to{box-shadow:0 0 #ef444400}}.mini-stop-name{color:#475569;cursor:pointer;margin-top:4px;font-size:.85rem;font-weight:600}.kakao-bus-overlay.selected .bus-pin:before{content:"";z-index:-1;background:radial-gradient(circle,#06b6d473 0%,#06b6d400 70%);border-radius:50%;width:72px;height:72px;animation:2s ease-in-out infinite pulseAura;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes pulseAura{0%{opacity:.8;transform:translate(-50%,-50%)scale(.9)}50%{opacity:.4;transform:translate(-50%,-50%)scale(1.15)}to{opacity:.8;transform:translate(-50%,-50%)scale(.9)}}.app-container{background-color:var(--bg-card);flex-direction:column;width:100%;min-height:100vh;display:flex}.app-header{z-index:50;border-bottom:1px solid var(--border-color);box-sizing:border-box;background-color:#fff;justify-content:space-between;align-items:center;width:100%;padding:14px 24px;display:flex;position:sticky;top:0}.brand-wrap{align-items:center;gap:12px;display:flex}.brand-icon{color:#fff;background:linear-gradient(135deg,#2563eb,#0284c7);border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;display:flex;box-shadow:0 4px 10px #2563eb40}.brand-title{color:#1e293b;align-items:center;gap:8px;font-size:1.2rem;font-weight:700;display:flex}.brand-badge{color:#1d4ed8;background-color:#dbeafe;border-radius:4px;padding:2px 7px;font-size:.72rem;font-weight:600}.app-main-layout{flex-direction:column;flex:1;width:100%;display:flex}.app-sidebar{background-color:#fff;flex-direction:column;width:100%;display:flex}.app-map-panel{flex-direction:column;width:100%;display:flex;position:relative}@media (width>=1024px){.app-container{height:100vh;overflow:hidden}.app-main-layout{flex-direction:row;height:calc(100vh - 67px);overflow:hidden}.app-sidebar{border-right:1px solid var(--border-color);z-index:10;width:440px;min-width:400px;max-width:460px;height:100%;overflow-y:auto;box-shadow:2px 0 10px #00000008}.app-map-panel{flex:1;height:100%;display:flex!important}.view-mode-tabs{display:none!important}.timeline-section-container{display:block!important}.kakao-map-wrapper{height:100%!important;min-height:100%!important}}@media (width<=1023px){.app-container{max-width:600px;margin:0 auto;box-shadow:0 0 25px #0000000f}.app-map-panel.hidden-on-mobile,.timeline-section-container.hidden-on-mobile{display:none!important}.kakao-map-wrapper{height:calc(100vh - 300px);min-height:420px}}.view-mode-tabs{background-color:#f1f5f9;border-radius:12px;margin:12px 20px 0;padding:4px;display:flex}.view-mode-btn{color:#64748b;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px 14px;font-size:.88rem;font-weight:600;transition:all .15s;display:flex}.view-mode-btn.active{color:#2563eb;background-color:#fff;box-shadow:0 2px 6px #00000014}.search-container{border-bottom:1px solid var(--border-color);background-color:#fff;padding:16px 20px}.search-form{background-color:#f1f5f9;border-radius:12px;align-items:center;gap:10px;padding:8px 14px;transition:all .2s;display:flex}.search-form:focus-within{box-shadow:0 0 0 2px var(--primary);background-color:#fff}.search-input{color:#1e293b;background:0 0;border:none;outline:none;width:100%;font-size:.98rem}.search-input::placeholder{color:#94a3b8}.search-btn{color:#64748b;align-items:center;padding:4px;display:flex}.search-btn:hover{color:var(--primary)}.search-clear-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:4px;transition:color .15s,background-color .15s;display:flex}.search-clear-btn:hover{color:#0f172a;background-color:#e2e8f0}.quick-chips{align-items:center;gap:8px;margin-top:12px;padding-bottom:2px;display:flex;overflow-x:auto}.quick-chips::-webkit-scrollbar{display:none}.chip-label{color:#94a3b8;white-space:nowrap;font-size:.8rem;font-weight:500}.chip-btn{color:#475569;white-space:nowrap;background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:20px;padding:5px 12px;font-size:.82rem;font-weight:600;transition:all .15s}.chip-btn:hover,.chip-btn.active{color:#fff;background-color:#2563eb;border-color:#2563eb}.route-banner{color:#fff;background:linear-gradient(135deg,#1e3a8a,#2563eb);padding:20px;position:relative;overflow:hidden}.route-banner-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.route-deselect-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#fff3;border:1px solid #ffffff59;border-radius:8px;align-items:center;gap:5px;padding:5px 10px;font-size:.8rem;font-weight:600;transition:all .15s;display:inline-flex}.route-deselect-btn:hover{background:#ffffff52;transform:translateY(-1px)}.bus-num-badge{letter-spacing:-.5px;font-size:2.2rem;font-weight:800;line-height:1}.route-type-tag{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#fff3;border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:600}.route-path{align-items:center;gap:8px;margin-bottom:8px;font-size:1.05rem;font-weight:600;display:flex}.route-via-tag{color:#bfdbfe;letter-spacing:-.2px;background:#ffffff1f;border:1px solid #ffffff2e;border-radius:12px;align-items:center;margin-bottom:14px;padding:3px 10px;font-size:.82rem;font-weight:500;display:inline-flex}.route-meta-grid{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff1a;border-radius:10px;grid-template-columns:repeat(2,1fr);gap:10px;padding:12px 14px;font-size:.82rem;display:grid}.meta-item{color:#ffffffe6;align-items:center;gap:6px;display:flex}.meta-item strong{color:#fff}.control-bar{border-bottom:1px solid var(--border-color);background-color:#fff;justify-content:space-between;align-items:center;padding:12px 20px;font-size:.85rem;display:flex}.realtime-status{align-items:center;gap:8px;display:flex}.live-dot{background-color:var(--success);border-radius:50%;width:8px;height:8px;animation:1.5s infinite pulse}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1.1);box-shadow:0 0 0 6px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.active-count{color:var(--primary);font-weight:700}.refresh-group{align-items:center;gap:8px;display:flex}.refresh-btn{color:#475569;background-color:#f1f5f9;border-radius:8px;align-items:center;gap:4px;padding:6px 10px;font-size:.8rem;font-weight:600;transition:all .2s;display:flex}.refresh-btn:hover{background-color:#e2e8f0}.refresh-btn.spinning svg{animation:1s linear infinite spin}.direction-tabs{background-color:#f1f5f9;border-radius:10px;margin:12px 20px 0;padding:4px;display:flex}.tab-btn{text-align:center;color:#64748b;border-radius:8px;flex:1;padding:8px 12px;font-size:.86rem;font-weight:600;transition:all .15s}.tab-btn.active{color:var(--primary);background-color:#fff;box-shadow:0 2px 6px #0000000f}.circular-route-tab-bar{background-color:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;align-items:center;gap:8px;margin:12px 20px 0;padding:8px 14px;display:flex}.circular-badge{color:#fff;white-space:nowrap;background:#16a34a;border-radius:6px;padding:2px 7px;font-size:.74rem;font-weight:700}.circular-info{color:#166534;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;font-weight:600;overflow:hidden}.timeline-section{background-color:#fff;flex:1;padding:16px 16px 60px 8px}.timeline-list{margin:0;padding:0;list-style:none;position:relative}.timeline-line{z-index:1;background:#cbd5e1;border-radius:2px;width:4px;position:absolute;top:14px;bottom:24px;left:93px}.timeline-item{margin-bottom:18px;list-style:none;position:relative}.timeline-item:last-child{margin-bottom:0}.stop-row{border-radius:8px;align-items:flex-start;gap:10px;min-height:42px;transition:all .15s;display:flex}.stop-row:hover{background:#f1f5f999}.stop-row.selected-stop-active{background:#0284c717;padding:2px 4px}.stop-row.selected-stop-active .stop-name{color:#0284c7;font-weight:700}.stop-left-col{justify-content:flex-end;align-items:center;width:74px;min-width:74px;padding-top:1px;display:flex}.stop-node-col{z-index:2;justify-content:center;align-items:center;width:20px;min-width:20px;padding-top:2px;display:flex;position:relative}.stop-content-col{flex:1;padding-top:0}.node-dot{background-color:#fff;border:3px solid #cbd5e1;border-radius:50%;width:13px;height:13px;transition:all .2s;box-shadow:0 1px 3px #00000014}.stop-header{justify-content:space-between;align-items:baseline;display:flex}.stop-name{color:#1e293b;letter-spacing:-.3px;font-size:.98rem;font-weight:700}.stop-ord{color:#94a3b8;font-size:.73rem;font-weight:500}.stop-subinfo{color:#64748b;margin-top:2px;font-size:.75rem}.timeline-arrival-predict{flex-direction:column;gap:2px;margin-top:4px;display:flex}.timeline-arrival-predict-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.timeline-arrival-predict .arrival-red{color:#ef4444;letter-spacing:-.3px;font-size:.83rem;font-weight:700}.its-status-pill{letter-spacing:-.2px;border-radius:8px;padding:1px 6px;font-size:.68rem;font-weight:700;line-height:1.3}.its-status-pill.departure{color:#b45309;background:#fef3c7;border:1px solid #fde68a}.its-status-pill.arriving{color:#b91c1c;background:#fee2e2;border:1px solid #fca5a5}.its-status-pill.enroute{color:#0369a1;background:#e0f2fe;border:1px solid #bae6fd}.timeline-arrival-predict .arrival-sub{color:#94a3b8;font-size:.72rem;font-weight:500}.between-bus-row{cursor:pointer;align-items:center;gap:10px;margin-top:8px;margin-bottom:6px;animation:.2s ease-out fadeIn;display:flex}.timeline-bus-badge{color:#1e293b;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:14px;align-items:center;gap:3px;padding:2px 7px;font-size:.72rem;font-weight:700;transition:all .15s;display:flex;box-shadow:0 1px 4px #00000014}.timeline-bus-badge .low-txt{color:#0891b2;font-weight:700}.between-bus-row:hover .timeline-bus-badge,.stop-row:hover .timeline-bus-badge{border-color:#0891b2;box-shadow:0 2px 8px #0891b240}.timeline-bus-icon{color:#fff;cursor:pointer;background:#0891b2;border:1.5px solid #fff;border-radius:5px;justify-content:center;align-items:center;width:22px;height:22px;transition:transform .15s,background-color .15s;display:flex;box-shadow:0 2px 6px #0891b273}.between-bus-row:hover .timeline-bus-icon,.stop-row:hover .timeline-bus-icon{background-color:#0284c7;transform:scale(1.18)}.between-speed-txt{color:#0891b2;font-size:.75rem;font-weight:600}.bus-event-tag{border-radius:4px;align-items:center;gap:3px;padding:2px 6px;font-size:.68rem;font-weight:700;display:inline-flex}.bus-event-tag.arrival{color:#dc2626;background-color:#fef2f2;border:1px solid #fecaca;animation:1.5s infinite pulse-border}@keyframes pulse-border{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.bus-event-tag.departure{color:#16a34a;background-color:#f0fdf4;border:1px solid #bbf7d0}.bus-event-tag.run{color:#0284c7;background-color:#f0f9ff;border:1px solid #bae6fd}.bus-speed-badge{color:#0369a1;background:#ffffffb3;border-radius:6px;padding:4px 8px;font-size:.82rem;font-weight:700}.kakao-map-wrapper{background-color:#e2e8f0;width:100%;height:100%;position:relative}.kakao-map-container{width:100%;height:100%}.dead-reckoning-indicator{z-index:20;color:#38bdf8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172ad9;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:.75rem;font-weight:600;display:flex;position:absolute;top:14px;left:14px;box-shadow:0 2px 10px #0003}.live-sparkle{background-color:#38bdf8;border-radius:50%;width:6px;height:6px;animation:1s infinite pulse}.kakao-stop-dot{-webkit-user-select:none;user-select:none;background-color:#0284c7;border:2.5px solid #fff;border-radius:50%;width:14px;height:14px;transition:transform .15s,background-color .15s;position:relative;box-shadow:0 2px 6px #0006;cursor:pointer!important;pointer-events:auto!important}.kakao-stop-dot:after{content:"";background:0 0;border-radius:50%;width:40px;height:40px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);cursor:pointer!important}.kakao-stop-dot:hover{z-index:25;background-color:#0369a1;transform:scale(1.45);box-shadow:0 3px 8px #0284c799}.kakao-bus-overlay{-webkit-user-select:none;user-select:none;pointer-events:none;width:0;height:0;position:absolute}.bus-hit-area{cursor:pointer;z-index:10;pointer-events:auto;background:0 0;border-radius:50%;width:52px;height:52px;position:absolute;top:-26px;left:-26px}.bus-radar-aura{pointer-events:none;z-index:1;background:radial-gradient(circle,#0ea5e973 0%,#0ea5e926 60%,#0ea5e900 100%);border-radius:50%;width:44px;height:44px;animation:2s ease-in-out infinite busAuraPulse;position:absolute;top:-22px;left:-22px}.bus-radar-aura.active{background:radial-gradient(circle,#0284c799 0%,#0284c738 65%,#0284c700 100%);width:58px;height:58px;animation:1.4s ease-in-out infinite busAuraPulseActive;top:-29px;left:-29px}@keyframes busAuraPulse{0%{opacity:.75;transform:scale(.85)}50%{opacity:.3;transform:scale(1.18)}to{opacity:.75;transform:scale(.85)}}@keyframes busAuraPulseActive{0%{opacity:.95;transform:scale(.8)}50%{opacity:.25;transform:scale(1.35)}to{opacity:.95;transform:scale(.8)}}.kakao-bus-vehicle{z-index:2;cursor:pointer;pointer-events:auto;transform-origin:16px 8px;background:linear-gradient(135deg,#0284c7,#0891b2);border:1.5px solid #fff;border-radius:5px;justify-content:flex-end;align-items:center;width:32px;height:16px;padding-right:2px;transition:transform 80ms linear;display:flex;position:absolute;top:-8px;left:-16px;box-shadow:0 3px 8px #00000059}.kakao-bus-overlay.selected .kakao-bus-vehicle{background:linear-gradient(135deg,#2563eb,#0284c7);border-color:#fef08a;box-shadow:0 4px 14px #2563eb99}.bus-windshield{background-color:#bae6fd;border:1px solid #fff9;border-radius:2px;width:5px;height:10px}.bus-pin-label{color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:3;cursor:pointer;pointer-events:auto;background:#0f172aeb;border:1px solid #ffffff26;border-radius:12px;align-items:center;gap:4px;padding:2px 7px;font-size:.72rem;display:flex;position:absolute;top:14px;left:0;transform:translate(-50%);box-shadow:0 2px 8px #0000004d}.kakao-bus-overlay.selected .bus-pin-label{background:#1e293b;border-color:#38bdf8;box-shadow:0 3px 12px #38bdf866}.bus-pin-label strong{color:#38bdf8}.bus-pin-label span{color:#94a3b8;font-size:.68rem}.bus-pin-label .pin-event{border-radius:3px;padding:1px 4px;font-size:.65rem;font-weight:700}.bus-pin-label .pin-event.arrival{color:#fff;background-color:#ef4444}.bus-pin-label .pin-event.departure{color:#fff;background-color:#10b981}.bus-pin-label .pin-event.run{color:#fff;background-color:#0284c7}.map-floating-controls{z-index:20;flex-direction:column;gap:8px;display:flex;position:absolute;top:14px;right:14px}.map-float-btn{color:#1e293b;background-color:#fff;border-radius:10px;align-items:center;gap:6px;padding:9px 14px;font-size:.85rem;font-weight:600;transition:all .15s;display:flex;box-shadow:0 4px 12px #00000026}.map-float-btn:hover{background-color:#f8fafc;transform:translateY(-1px)}.map-float-btn.key-btn{align-self:flex-end;padding:9px}.map-float-btn.my-loc-btn{color:#0284c7}.map-float-btn.my-loc-btn:hover{color:#0369a1;background-color:#f0f9ff}.my-location-marker{pointer-events:none;justify-content:center;align-items:center;width:20px;height:20px;display:flex;position:relative}.my-location-core{z-index:2;background-color:#0284c7;border:2.5px solid #fff;border-radius:50%;width:14px;height:14px;box-shadow:0 2px 8px #0284c780}.my-location-ripple{z-index:1;background:#0284c740;border-radius:50%;width:40px;height:40px;animation:2s ease-out infinite myLocPulse;position:absolute}@keyframes myLocPulse{0%{opacity:.9;transform:scale(.35)}70%{opacity:0;transform:scale(1.35)}to{opacity:0;transform:scale(1.35)}}.map-bus-summary{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff2;border-radius:14px;padding:12px 16px;font-size:.85rem;position:absolute;bottom:14px;left:14px;right:14px;box-shadow:0 4px 20px #00000026}.map-bus-chips{gap:8px;margin-top:8px;padding-bottom:2px;display:flex;overflow-x:auto}.map-bus-chips::-webkit-scrollbar{display:none}.map-bus-chip{color:#334155;white-space:nowrap;background-color:#f1f5f9;border:1px solid #cbd5e1;border-radius:18px;padding:5px 12px;font-size:.8rem;font-weight:600;transition:all .15s}.map-bus-chip:hover,.map-bus-chip.active{color:#fff;background-color:#2563eb;border-color:#2563eb}.kakao-guide-card{text-align:center;background-color:#fff;flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:400px;padding:40px 24px;display:flex}.kakao-guide-card.error{background-color:#fef2f2}.guide-icon-wrap{background-color:#fef3c7;border-radius:16px;justify-content:center;align-items:center;width:56px;height:56px;margin-bottom:16px;display:flex}.guide-title{color:#1e293b;margin-bottom:8px;font-size:1.15rem;font-weight:700}.guide-desc{color:#64748b;margin-bottom:20px;font-size:.9rem;line-height:1.6}.key-input-btn{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:10px;padding:10px 20px;font-size:.92rem;font-weight:700;transition:all .2s;box-shadow:0 4px 12px #f59e0b4d}.key-input-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px #f59e0b66}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background-color:#0f172a99;justify-content:center;align-items:center;padding:20px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background-color:#fff;border-radius:16px;width:100%;max-width:440px;padding:24px;box-shadow:0 20px 25px -5px #0003}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-icon-badge{color:#d97706;background-color:#fef3c7;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.modal-close-btn{color:#94a3b8;border-radius:6px;padding:4px}.modal-close-btn:hover{color:#475569;background-color:#f1f5f9}.modal-input{border:1px solid #cbd5e1;border-radius:8px;outline:none;width:100%;padding:10px 14px;font-family:monospace;font-size:.95rem}.modal-input:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.kakao-guide-box{background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.modal-btn-cancel{color:#64748b;background-color:#f1f5f9;border-radius:8px;flex:1;padding:10px;font-size:.9rem;font-weight:600}.modal-btn-submit{color:#fff;background-color:#2563eb;border-radius:8px;flex:2;justify-content:center;align-items:center;gap:6px;padding:10px;font-size:.9rem;font-weight:600;display:flex}.state-box{text-align:center;color:#64748b;flex-direction:column;align-items:center;gap:12px;padding:60px 20px;display:flex}.initial-welcome-box{text-align:center;background:#fff;border:1px dashed #cbd5e1;border-radius:16px;flex-direction:column;align-items:center;gap:12px;margin:20px 16px;padding:40px 24px;display:flex}.welcome-icon-bubble{background:#e0f2fe;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;margin-bottom:4px;display:flex}.welcome-title{color:#0f172a;margin:0;font-size:1.15rem;font-weight:700}.welcome-desc{color:#64748b;margin:0;font-size:.88rem;line-height:1.5}.state-title{color:#334155;font-size:1.1rem;font-weight:700}.state-desc{color:#94a3b8;font-size:.9rem}.app-footer{text-align:center;color:#94a3b8;border-top:1px solid var(--border-color);background-color:#f8fafc;padding:16px 20px;font-size:.75rem}
