@import url("client-theme.css");.map-page{position:relative;height:calc(100vh - 60px);overflow:hidden}#leaflet-map{width:100%;height:100%;z-index:1}.stall-marker-icon{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:50%;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.3);width:36px !important;height:36px !important;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:transform .2s}.stall-marker-icon:hover{transform:scale(1.2);z-index:1000 !important}.stall-marker-icon.operating{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%)}.stall-marker-icon.resting{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.stall-marker-icon.off_work{background:#999}.leaflet-popup-content-wrapper{border-radius:12px;padding:0;box-shadow:0 4px 20px rgba(0,0,0,.2)}.leaflet-popup-content{margin:12px 16px;min-width:200px}.map-popup-content{font-size:14px;line-height:1.5}.map-popup-content h3{margin:0 0 6px;font-size:16px;color:#333}.map-popup-content .popup-desc{color:#666;margin-bottom:8px;font-size:13px}.map-popup-content .popup-status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;margin-bottom:8px}.map-popup-content .popup-status.operating{background:#e8f5e9;color:#2e7d32}.map-popup-content .popup-status.resting{background:#fff3e0;color:#e65100}.map-popup-content .popup-status.off_work{background:#f5f5f5;color:#999}.map-popup-content .popup-address{color:#999;font-size:12px;margin-bottom:8px}.map-popup-content .popup-actions{display:flex;gap:8px;margin-top:10px}.map-popup-content .popup-actions a{display:inline-block;padding:6px 16px;border-radius:6px;font-size:13px;text-decoration:none;text-align:center;cursor:pointer;transition:all .2s}.popup-btn-view{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;flex:1}.popup-btn-direction{background:#f5f7fa;color:#667eea;border:1px solid #667eea;flex:1}.popup-btn-direction:hover{background:#667eea;color:#fff}.map-stalls-panel{position:absolute;left:20px;bottom:20px;top:100px;width:320px;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.15);z-index:1000;display:flex;flex-direction:column;overflow:hidden}.map-stalls-panel .panel-header{display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-bottom:1px solid #f0f0f0}.map-stalls-panel .panel-header h3{font-size:16px;color:#333;margin:0}.map-stalls-panel .stalls-count{font-size:13px;color:#999}.map-stalls-panel .stalls-list{flex:1;overflow-y:auto;padding:10px}.map-stalls-panel .stall-card{display:flex;gap:12px;padding:12px;border-radius:8px;cursor:pointer;transition:all .3s;border:1px solid transparent}.map-stalls-panel .stall-card:hover{background:#f5f7fa;border-color:#667eea}.map-stalls-panel .stall-card-avatar{width:50px;height:50px;border-radius:8px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.map-stalls-panel .stall-card-info{flex:1;min-width:0}.map-stalls-panel .stall-card-name{font-size:14px;font-weight:600;color:#333;margin-bottom:4px}.map-stalls-panel .stall-card-desc{font-size:12px;color:#666;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.map-stalls-panel .stall-card-meta{display:flex;align-items:center;gap:10px;font-size:11px}.map-stalls-panel .stall-card-rating{color:#ff9800}.map-stalls-panel .stall-card-status{display:flex;align-items:center;gap:4px}.map-stalls-panel .status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.map-stalls-panel .status-dot.operating{background:#4caf50}.map-stalls-panel .status-dot.resting{background:#ff9800}.map-stalls-panel .status-dot.off_work{background:#bbb}.map-stalls-panel .empty-tip{text-align:center;color:#999;padding:40px 20px;font-size:14px}@media (max-width:768px){.map-stalls-panel{position:fixed;left:0;right:0;bottom:0;top:auto;height:40vh;width:100%;border-radius:20px 20px 0 0}.map-search-bar{width:95%}.filter-options{justify-content:center}}.map-main{position:relative;height:calc(100vh - 60px);overflow:hidden}.map-search-bar{position:absolute;top:15px;left:50%;transform:translateX(-50%);z-index:100;width:90%;max-width:600px}.search-box{display:flex;gap:10px;margin-bottom:10px}.search-box input{flex:1;padding:12px 20px;border:none;border-radius:24px;font-size:15px;box-shadow:0 2px 12px rgba(0,0,0,.15)}.search-box input:focus{outline:none;box-shadow:0 4px 16px rgba(102,126,234,.3)}.search-btn{width:48px;height:48px;border:none;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;font-size:20px;cursor:pointer;transition:transform .3s}.search-btn:hover{transform:scale(1.1)}.filter-options{display:flex;gap:8px;flex-wrap:wrap}.filter-chip{padding:8px 16px;border:1px solid rgba(255,255,255,.3);border-radius:20px;background:rgba(255,255,255,.9);color:#666;font-size:14px;cursor:pointer;transition:all .3s}.filter-chip:hover{background:#fff;border-color:#667eea}.filter-chip.active{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border-color:transparent}.map-container{width:100%;height:100%;background:#e8f4f8;position:relative;overflow:hidden}.map-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#889}.placeholder-icon{font-size:80px;margin-bottom:20px}.placeholder-icon + p{font-size:18px;color:#667}.hint{font-size:14px;color:#99a}.map-markers{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.map-marker{position:absolute;cursor:pointer;pointer-events:auto;transition:transform .3s}.map-marker:hover{transform:scale(1.2)}.marker-pin{width:40px;height:40px;border-radius:50% 50% 50% 0;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;box-shadow:0 4px 12px rgba(102,126,234,.4);transform:rotate(-45deg)}.marker-pin.operating{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%)}.marker-pin.resting{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.marker-pin .marker-icon{transform:rotate(45deg)}.marker-label{position:absolute;top:100%;left:50%;transform:translateX(-50%);background:#fff;padding:4px 8px;border-radius:4px;font-size:12px;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.15);margin-top:5px}.map-controls{position:absolute;right:20px;bottom:100px;display:flex;flex-direction:column;gap:10px;z-index:100}.control-btn{width:44px;height:44px;border:none;border-radius:8px;background:#fff;color:#667eea;font-size:20px;cursor:pointer;box-shadow:0 2px 12px rgba(0,0,0,.15);transition:all .3s}.control-btn:hover{background:#667eea;color:#fff}.stalls-panel{position:absolute;left:20px;bottom:20px;top:100px;width:320px;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.15);z-index:100;display:flex;flex-direction:column;overflow:hidden}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-bottom:1px solid #f0f0f0}.panel-header h3{font-size:16px;color:#333}.stalls-count{font-size:13px;color:#999}.stalls-list{flex:1;overflow-y:auto;padding:10px}.stall-card{display:flex;gap:12px;padding:15px;border-radius:8px;cursor:pointer;transition:all .3s;border:1px solid transparent}.stall-card:hover{background:#f5f7fa;border-color:#667eea}.stall-card-avatar{width:60px;height:60px;border-radius:8px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.stall-card-info{flex:1;min-width:0}.stall-card-name{font-size:15px;font-weight:600;color:#333;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stall-card-desc{font-size:13px;color:#666;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stall-card-meta{display:flex;align-items:center;gap:12px;font-size:12px}.stall-card-rating{display:flex;align-items:center;gap:4px;color:#ff9800}.stall-card-distance{color:#999}.stall-card-status{display:flex;align-items:center;gap:4px}.stall-card-status .status-dot{width:8px;height:8px;border-radius:50%}.stall-card-status .status-dot.operating{background:#4caf50}.stall-card-status .status-dot.resting{background:#ff9800}.stall-detail-content{max-width:500px}.stall-detail-info{display:flex;align-items:center;gap:20px;margin-bottom:20px}.stall-avatar{width:80px;height:80px;border-radius:12px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;font-size:36px}.stall-meta{flex:1}.stall-rating{display:flex;align-items:center;gap:8px;margin-bottom:10px}.stars{color:#ff9800}.rating-score{font-weight:bold;color:#333}.stall-status{display:flex;align-items:center;gap:8px;font-size:14px;color:#666}.stall-desc{color:#666;line-height:1.6;margin-bottom:20px}.stall-address,.stall-hours,.stall-notice{display:flex;align-items:flex-start;gap:10px;padding:12px;background:#f5f7fa;border-radius:8px;margin-bottom:12px;font-size:14px;color:#666}.stall-address .icon,.stall-hours .icon,.stall-notice .icon{font-size:18px;flex-shrink:0}.stall-notice{background:#fff3cd;border-left:4px solid #ffc107}.stall-actions{display:flex;gap:10px;margin-top:20px}.stall-actions .btn{flex:1}@media (max-width:768px){.stalls-panel{position:fixed;left:0;right:0;bottom:0;top:auto;height:40vh;width:100%;border-radius:20px 20px 0 0}.map-search-bar{width:95%}.filter-options{justify-content:center}}