:root{--primary-color:#2c3e50;--secondary-color:#34495e;--accent-color:#3498db;--bg-primary:#ecf0f1;--bg-secondary:#fff;--bg-tertiary:#f8f9fa;--text-primary:#2c3e50;--text-secondary:#7f8c8d;--text-light:#95a5a6;--border-light:#e0e0e0;--border-medium:#bdc3c7;--shadow-sm:0 2px 4px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 15px #0000001a;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px}body{background-color:#ecf0f1;background-color:var(--bg-primary);color:#2c3e50;font-family:Segoe UI,Microsoft YaHei,sans-serif}.App{display:flex;min-height:100vh;padding-top:0}.content{box-sizing:border-box;flex:1 1;margin-left:60px;padding:0;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 60px)}.sidebar.active~.content{margin-left:200px;width:calc(100% - 200px)}.search-bar{align-items:center;display:flex;gap:10px;margin:20px}.search-bar input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px;width:300px}.search-button{background-color:#007bff;border-radius:4px;font-size:14px;padding:8px 16px}.search-button:hover{background-color:#0056b3}button{background-color:#3498db;background-color:var(--accent-color);border-radius:var(--radius-sm);color:#fff;font-weight:500;padding:8px 16px;padding:var(--spacing-sm) var(--spacing-md);transition:all .3s ease}button:hover{background-color:#2980b9;box-shadow:0 4px 6px #00000012;box-shadow:var(--shadow-md);transform:translateY(-1px)}button:active{box-shadow:0 2px 4px #0000000d;box-shadow:var(--shadow-sm);transform:translateY(0)}.divider{background-color:#e0e0e0;background-color:var(--border-light);height:1px;margin:16px 0;margin:var(--spacing-md) 0}.card{background:#fff;background:var(--bg-secondary);border:1px solid #e0e0e0;border:1px solid var(--border-light);border-radius:8px;border-radius:var(--radius-md);box-shadow:0 4px 6px #00000012;box-shadow:var(--shadow-md);padding:24px;padding:var(--spacing-lg)}.loading{color:#7f8c8d;color:var(--text-secondary);min-height:200px}.error{background-color:#fee2e2;border:1px solid #ef4444;border-radius:8px;border-radius:var(--radius-md);color:#dc2626;margin:16px 0;margin:var(--spacing-md) 0;padding:16px;padding:var(--spacing-md)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#f8f9fa;background:var(--bg-tertiary)}::-webkit-scrollbar-thumb{background:#bdc3c7;background:var(--border-medium);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#95a5a6;background:var(--text-light)}@media (max-width:768px){.content{margin-left:60px;width:calc(100% - 60px)}}.home-container{margin:0 auto;max-width:1200px;padding:20px}.home-header{margin-bottom:24px}.home-title{color:#1a1a1a;font-size:24px;margin-bottom:16px}.search-section{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.search-type{min-width:120px}.sort-select{width:auto!important}.ant-select-dropdown,.sort-select{min-width:160px!important}.pagination{display:flex;justify-content:center;margin-top:24px}.ant-pagination{text-align:center}.ant-pagination-item{border-radius:4px}.ant-pagination-item-active{background-color:#1890ff;border-color:#1890ff}.ant-pagination-item-active a{color:#fff}.ant-pagination-item:hover{border-color:#1890ff}.ant-pagination-item:hover a{color:#1890ff}.ant-pagination-next:hover button,.ant-pagination-prev:hover button{border-color:#1890ff;color:#1890ff}.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}.ant-pagination-options{margin-left:16px}@media (max-width:768px){.home-container{padding:16px}.home-header{align-items:flex-start;flex-direction:column;gap:16px}.sort-select{width:100%}.parking-spots-grid{grid-template-columns:1fr}}.rating{align-items:center;color:#faad14;display:flex;font-size:14px;font-weight:700;margin:8px 0}.rating:before{content:"★";margin-right:4px}.reviews-container{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-top:20px;padding:20px}.reviews-container h3{color:#1a1a1a;font-size:18px;margin:0 0 20px}.review-form{background:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:20px}.review-form h4{color:#333;margin:0 0 15px}.error-message{background:#fff1f0;border:1px solid #ffa39e;color:#f5222d;margin-bottom:10px;padding:8px}.rating-input{align-items:center;display:flex;gap:10px;margin-bottom:15px}.rating-input label{color:#666}.comment-input textarea{border:1px solid #d9d9d9;border-radius:4px;font-family:inherit;margin-bottom:15px;min-height:100px;padding:12px;resize:vertical;width:100%}.comment-input textarea:focus{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;outline:none}.review-form button{background:#1890ff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .3s}.review-form button:hover{background:#40a9ff}.review-form button:disabled{background:#d9d9d9;cursor:not-allowed}.reviews-list{display:flex;flex-direction:column;gap:16px}.review-item{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:16px}.review-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.user-avatar{border-radius:50%;height:32px;object-fit:cover;width:32px}.username{color:#333;font-weight:500}.review-comment{color:#666;line-height:1.5;margin:8px 0}.review-time{color:#999;font-size:12px}.no-reviews{color:#999}.no-reviews,.reviews-loading{padding:20px;text-align:center}.reviews-loading{color:#666}@media (max-width:768px){.review-form,.reviews-container{padding:15px}.review-header{align-items:flex-start;flex-direction:column;gap:8px}}.profile-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin:0 auto;max-width:1000px;padding:2rem}.profile-header{border-bottom:1px solid #eee;margin-bottom:2rem;padding-bottom:1rem}.profile-name{color:#333;font-size:2rem;margin-bottom:.5rem}.profile-username{color:#666;font-size:1.2rem;margin-bottom:.5rem}.profile-location{color:#888;font-size:1rem}.profile-info{margin-bottom:2rem}.info-section{border-bottom:1px solid #eee;margin-bottom:1.5rem;padding-bottom:1.5rem}.info-section:last-child{border-bottom:none}.info-section h3{color:#333;font-size:1.3rem;margin-bottom:1rem}.edit-profile-btn{background-color:#4a90e2;border:none;border-radius:4px;color:#fff;cursor:pointer;display:block;font-size:1rem;margin-top:1rem;padding:.8rem;transition:background-color .3s;width:100%}.edit-profile-btn:hover{background-color:#3a7bc8}.parking-records-section{margin-top:2rem}.parking-records-section h3{color:#333;font-size:1.3rem;margin-bottom:1rem}.no-records{color:#888;font-style:italic}.parking-records-list{display:flex;flex-direction:column;gap:1rem}.parking-record-item{background-color:#f9f9f9;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:12px}.parking-record-item.clickable{cursor:pointer;transition:transform .2s,box-shadow .2s}.parking-record-item.clickable:hover{box-shadow:0 4px 6px #0000001a;transform:translateY(-2px)}.parking-record-item.active{border-left:4px solid #4caf50}.parking-record-item.completed{border-left:4px solid #2196f3}.parking-record-item.cancelled{border-left:4px solid #f44336}.record-header{justify-content:space-between;margin-bottom:.5rem}.record-header h4{font-size:1.1rem;margin:0}.cancel-btn,.review-btn,.view-btn{align-items:center;border:none;border-radius:4px;cursor:pointer;display:inline-flex;font-size:12px;height:24px;justify-content:center;line-height:24px;min-width:60px;padding:0 8px;text-align:center;transition:all .3s ease}.review-btn{align-self:flex-end;background-color:#ff9800;margin-top:6px}.review-btn:hover{background-color:#f57c00}.cancel-btn{background-color:#ff4d4f;color:#fff}.cancel-btn:hover{background-color:#ff7875}.view-btn{background-color:#1890ff;color:#fff}.view-btn:hover{background-color:#40a9ff}.status{align-items:center;border-radius:4px;color:#fff;display:inline-flex;justify-content:center;min-height:20px;min-width:54px;padding:2px 6px}.status.pending{background-color:#faad14}.status.confirmed{background-color:#52c41a}.status.active{background-color:#1890ff}.status.completed{background-color:#52c41a}.status.cancelled{background-color:#d9d9d9;color:#666}.record-details{grid-gap:2px;color:#555;display:grid;font-size:12px;gap:2px;grid-template-columns:1fr 1fr;margin-bottom:6px;margin-top:6px}.record-details p{margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-details strong,.reservation-details strong{color:#444;font-weight:600;margin-right:2px}.record-review-section{background-color:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-top:1rem;padding:1rem}.payment-method-info{background-color:#f5f5f5;padding:1rem}.card-info{flex-direction:column;gap:.5rem;margin-bottom:1rem}.card-brand{font-weight:600;text-transform:capitalize}.setup-payment-btn,.update-payment-btn{background-color:#4a90e2;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:background-color .3s}.setup-payment-btn:hover,.update-payment-btn:hover{background-color:#3a7bc8}.no-payment-method{background-color:#f5f5f5;border-radius:8px;padding:1rem;text-align:center}.coupons-list{display:flex;flex-direction:column;gap:1rem}.coupon-item{background-color:#f5f5f5;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;padding:1rem}.coupon-amount{align-items:center;background-color:#4a90e2;border-radius:4px;color:#fff;display:flex;flex:0 0 120px;font-weight:600;justify-content:center;margin-right:1rem;padding:.5rem}.coupon-info{flex:1 1}.coupon-description{font-weight:500;margin:0 0 .5rem}.coupon-expiry{color:#888;font-size:.8rem;margin:0}.balance-info{background-color:#f5f5f5;border-radius:8px;padding:1rem}.actual-balance,.gift-balance,.total-balance{color:#4a90e2;font-weight:600}.top-up-button{background-color:#4a90e2;border:none;border-radius:4px;cursor:pointer;margin-top:1rem;padding:.5rem 1rem;transition:background-color .3s}.top-up-button:hover{background-color:#3a7bc8}.loading{font-size:1.2rem}.error-message{color:#c62828;padding:1rem}@media (max-width:768px){.profile-container{padding:1rem}.coupon-item{flex-direction:column}.coupon-amount{margin-bottom:.5rem;margin-right:0}}.transactions-section{margin-top:2rem}.transactions-section h3{color:#333;font-size:1.3rem;margin-bottom:1rem}.transactions-list{display:flex;flex-direction:column;gap:1rem}.transaction-item{background-color:#f9f9f9;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:1rem;transition:transform .2s,box-shadow .2s}.transaction-item:hover{box-shadow:0 4px 6px #0000001a;transform:translateY(-2px)}.transaction-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.5rem}.transaction-header h4{color:#2c5282;font-size:1.1rem;margin:0}.transaction-details{color:#555;font-size:.9rem}.transaction-details p{margin:.3rem 0}.transaction-item .error-message{background-color:#ffebee;border-radius:4px;color:#c62828;font-size:.85rem;margin-top:.5rem;padding:.5rem}.transaction-item .status{align-items:center;display:inline-flex;justify-content:center;min-height:20px;min-width:54px}.transaction-item .status.succeeded{background-color:#e8f5e9;color:#2e7d32}.transaction-item .status.failed{background-color:#ffebee;color:#c62828}.transaction-item .status.pending{background-color:#fff3e0;color:#ef6c00}.reservations-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-top:24px;padding:20px}.reservations-section h3{border-bottom:1px solid #f0f0f0;color:#333;margin-top:0;padding-bottom:12px}.reservations-list{display:flex;flex-direction:column;gap:12px}.reservation-item{background:#f8f9fa;border-left:4px solid #1890ff;border-radius:8px;flex-direction:column;padding:10px;position:relative;transition:all .3s ease}.reservation-item.cancelled{border-left-color:#d9d9d9;opacity:.7}.reservation-item.pending{border-left-color:#faad14}.reservation-item.confirmed{border-left-color:#52c41a}.reservation-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.reservation-header h4{color:#333;font-size:16px;margin:0;max-width:75%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reservation-details{grid-gap:2px;display:grid;gap:2px;grid-template-columns:1fr 1fr;margin-bottom:6px}.reservation-details p{color:#666;font-size:12px;margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reservation-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}@media (max-width:768px){.reservation-header{align-items:flex-start;flex-direction:column}.reservation-header h4{margin-bottom:8px;max-width:100%}.reservation-item{padding:12px}.reservation-details{grid-template-columns:1fr}.reservation-actions{justify-content:flex-start}}@media (max-width:400px){.record-details,.reservation-details{grid-template-columns:1fr}.record-details p,.reservation-details p{white-space:normal}}.edit-profile-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin:2rem auto;max-width:800px;padding:2rem}.edit-profile-title{color:#333;font-size:1.8rem;margin-bottom:1.5rem;text-align:center}.edit-profile-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{gap:.5rem}.form-group label{font-weight:600}.form-group input,.form-group textarea{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:.8rem;transition:border-color .3s}.form-group input:focus,.form-group textarea:focus{border-color:#4a90e2;outline:none}.avatar-preview{margin-top:1rem;text-align:center}.avatar-preview img{border:2px solid #eee;border-radius:50%;height:100px;object-fit:cover;width:100px}.form-actions{justify-content:space-between;margin-top:1rem}.cancel-btn,.submit-btn{border:none;border-radius:4px;cursor:pointer;font-size:1rem;padding:.8rem 1.5rem;transition:background-color .3s}.cancel-btn{background-color:#f1f1f1;color:#333}.cancel-btn:hover{background-color:#e0e0e0}.submit-btn{background-color:#4a90e2;color:#fff}.submit-btn:hover{background-color:#3a7bc8}.cancel-btn:disabled,.submit-btn:disabled{cursor:not-allowed;opacity:.7}.error-message{background-color:#ffebee;color:#d32f2f;padding:.8rem}.success-message{background-color:#e8f5e9;color:#2e7d32;padding:.8rem}.chat-container{border-radius:var(--border-radius);box-shadow:var(--shadow-1);display:flex;height:calc(100vh - 100px);margin-top:60px;overflow:hidden}.chat-container,.chat-sidebar{background:var(--surface-color)}.chat-sidebar{border-right:1px solid #0000001f;padding:24px;width:240px}.chat-sidebar h2{color:var(--text-primary);font-size:24px;font-weight:400;margin-bottom:16px}.chat-window{background:var(--background-color);display:flex;flex:1 1;flex-direction:column}.message-list{display:flex;flex:1 1;flex-direction:column-reverse;overflow-y:auto;padding:24px}.message{animation:messageSlide .3s ease-out;border-radius:12px;margin:8px 0;max-width:70%;padding:12px 16px}.message.received{align-self:flex-start;background-color:#f1f3f4;color:var(--text-primary)}.message.sent{align-self:flex-end;background-color:var(--primary-color);color:#fff}.message-content{margin-bottom:4px}.message-info{font-size:12px;opacity:.7}.send-message{align-items:center;background:var(--surface-color);border-top:1px solid #0000001f;display:flex;gap:8px;padding:16px}.message-input{background:#fff;border:1px solid #0000001f;border-radius:18px;flex:1 1;font-family:inherit;font-size:14px;line-height:1.5;max-height:120px;min-height:36px;padding:8px 12px;resize:none;transition:all .3s ease}.message-input:focus{border-color:var(--primary-color);box-shadow:0 1px 4px #0000001a;outline:none}.send-button{align-items:center;background-color:var(--primary-color);border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:36px;justify-content:center;padding:0;transition:all .2s ease;width:36px}.send-button:hover{background-color:var(--primary-dark);transform:translateY(-1px)}.send-button:active{transform:translateY(1px)}.send-button svg{fill:currentColor;height:16px;width:16px}@keyframes messageSlide{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.message-list::-webkit-scrollbar{width:8px}.message-list::-webkit-scrollbar-track{background:#0000}.message-list::-webkit-scrollbar-thumb{background-color:#444;border-radius:4px}.error,.loading{align-items:center;color:#fff;display:flex;font-size:1.1rem;height:100vh;justify-content:center}.error{color:#f44}.logout-button{background-color:#f1f3f4;color:var(--text-primary);margin-top:16px}.logout-button:hover{background-color:#e8eaed}@media screen and (min-width:769px){.sidebar{background-color:#1e1e1e;height:100%;left:0;padding-top:60px;position:fixed;top:0;transition:all .3s cubic-bezier(.4,0,.2,1);width:60px;z-index:1000}.sidebar.active{width:200px}}.sidebar nav ul{list-style-type:none}.sidebar nav ul,.sidebar nav ul li{margin:0;padding:0}.sidebar-link{align-items:center;color:#fff;display:flex;overflow:hidden;padding:15px 20px;text-decoration:none;transition:all .3s ease;white-space:nowrap}.sidebar-link:hover{background-color:#ffffff1a;color:#1890ff}.sidebar-link:hover:before{background-color:#1890ff;content:"";height:100%;left:0;position:absolute;top:0;transform:scaleY(1);transition:transform .2s ease;width:4px}.sidebar-link .icon{align-items:center;display:flex;font-size:20px;justify-content:center;min-width:20px;transition:transform .3s ease}.sidebar:not(.active) .sidebar-link .icon{transform:scale(1.2)}.sidebar-link .text{margin-left:15px;opacity:0;transform:translateX(-10px);transition:opacity .2s ease}.sidebar.active .sidebar-link .text{opacity:1;transform:translateX(0)}.toggle-button{align-items:center;background-color:#1e1e1e;border:none;border-radius:50%;box-shadow:0 2px 8px #00000026;color:#fff;cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;left:10px;position:fixed;top:10px;transition:all .3s ease;width:40px;z-index:1001}.toggle-button:hover{background-color:#2d2d2d}.sidebar-overlay{background-color:#00000080;bottom:0;display:none;left:0;opacity:0;position:fixed;right:0;top:0;transition:opacity .3s ease;z-index:999}.sidebar-overlay.active{display:block;opacity:1}@media screen and (max-width:768px){.sidebar{background-color:#1e1e1e;height:100%;left:-200px;padding-top:60px;position:fixed;top:0;transition:all .3s cubic-bezier(.4,0,.2,1);width:200px;z-index:1000}.sidebar.active{left:0;width:200px}.sidebar-link{padding:20px}.sidebar-link .icon{font-size:24px;min-width:28px}.sidebar-link .text{font-size:17px;font-weight:500;margin-left:16px;opacity:1;transform:translateX(0)}.toggle-button{background-color:#1e1e1ee6;font-size:22px;height:44px;width:44px}.content{margin-left:0!important;width:100%!important}}@media screen and (max-width:375px){.sidebar{left:-180px}.sidebar,.sidebar.active{width:180px}.sidebar-link{padding:18px}.sidebar-link .icon{font-size:22px;min-width:26px}.sidebar-link .text{font-size:16px;font-weight:500;margin-left:15px}.toggle-button{font-size:20px;height:42px;width:42px}}.sidebar-link{position:relative}.sidebar-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.auth-container{align-items:center;background-color:#f5f5f5;background-image:linear-gradient(135deg,#f5f7fa,#c3cfe2);display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-form{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#fffffffa;border-radius:12px;box-shadow:0 8px 24px #0000001a;margin:0;max-width:100%;padding:30px;position:relative;width:400px}.auth-form h2{color:#333;font-size:28px;font-weight:600;margin-bottom:30px;text-align:center}.auth-form h3{color:#666;font-size:20px;margin-bottom:24px;text-align:center}.auth-form input,.auth-form textarea{border:1px solid #ddd;border-radius:8px;box-sizing:border-box;font-size:16px;margin-bottom:20px;padding:12px 16px;transition:all .3s ease;width:100%}.auth-form input:focus,.auth-form textarea:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a;outline:none}.auth-form textarea{min-height:100px;resize:vertical}.auth-form button{background-color:#1890ff;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;padding:14px;transition:all .3s ease;width:100%}.auth-form button:hover{background-color:#40a9ff;transform:translateY(-1px)}.auth-form button:disabled{background-color:#ccc;cursor:not-allowed;transform:none}.error-message{background-color:#fff1f0;border-radius:6px;padding:10px}.login-tip,.switch-mode{color:#666;font-size:15px;margin-top:24px;text-align:center}.switch-button{background:none;border:none;color:#1890ff;cursor:pointer;font-size:inherit;font-weight:500;padding:0 4px;transition:all .3s ease}.switch-button:hover{color:#40a9ff;text-decoration:underline}.field-error{font-size:14px;margin-bottom:16px;margin-top:-16px;padding-left:4px}.registration-choice{text-align:center}.choice-button{align-items:center;background-color:#fff;border:2px solid #1890ff;border-radius:12px;color:#1890ff;cursor:pointer;display:flex;flex-direction:column;font-size:18px;font-weight:500;margin-bottom:20px;padding:24px;transition:all .3s ease;width:100%}.choice-button:hover{background-color:#e6f7ff;box-shadow:0 4px 12px #1890ff26;transform:translateY(-2px)}.choice-button small{color:#666;font-size:14px;font-weight:400;margin-top:8px}.quick-reg-note{color:#666;display:block;font-size:14px;line-height:1.5;margin:-10px 0 20px;padding:0 10px;text-align:center}.avatar-upload{margin-bottom:24px;text-align:center}.avatar-preview{border:3px solid #1890ff;border-radius:50%;height:100px;margin-bottom:16px;object-fit:cover;padding:3px;width:100px}.avatar-upload input[type=file]{margin-bottom:8px;width:auto}.avatar-upload small{color:#666;display:block;font-size:13px}.back-button{background:#0000;border:none;color:#666;cursor:pointer;font-size:20px;left:20px;margin:0;padding:0;position:absolute;top:20px;z-index:1}.back-button:hover{background:#0000000d;color:#333}@media screen and (max-width:768px){.auth-container{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:16px}.auth-form{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffffa;margin:0;max-width:100%;padding:30px}.auth-form h2{font-size:26px;margin-bottom:24px}.auth-form h3{font-size:20px;margin-bottom:20px}.auth-form input,.auth-form textarea{font-size:16px;margin-bottom:20px;padding:12px 16px}.auth-form button{font-size:16px;padding:14px}.choice-button{font-size:18px;padding:20px}.choice-button small{font-size:14px;margin-top:10px}.avatar-preview{height:90px;width:90px}.error-message{font-size:14px;padding:10px}.field-error{font-size:13px;margin-bottom:16px;margin-top:-16px}.login-tip,.switch-mode{font-size:15px;margin-top:20px}}@media screen and (max-width:375px){.auth-container{padding:12px}.auth-form{padding:24px}.auth-form h2{font-size:24px;margin-bottom:20px}.auth-form h3{font-size:18px}.auth-form input,.auth-form textarea{font-size:15px;padding:10px 14px}.auth-form button{font-size:15px;padding:12px}.choice-button{font-size:16px;padding:16px}.choice-button small{font-size:13px}.avatar-preview{height:80px;width:80px}.error-message{font-size:13px}.field-error{font-size:12px}.login-tip,.switch-mode{font-size:14px}}.social-login{margin-top:20px;text-align:center}.social-login .divider{align-items:center;color:#666;display:flex;margin:15px 0;text-align:center}.social-login .divider:after,.social-login .divider:before{border-bottom:1px solid #e0e0e0;content:"";flex:1 1}.social-login .divider span{padding:0 10px}.google-login-container{display:flex;justify-content:center;margin:15px 0}.google-avatar{border:2px solid #e0e0e0;border-radius:50%;display:block;height:60px;margin:0 auto 15px;object-fit:cover;width:60px}.field-error{color:#ff4d4f;font-size:12px;margin-bottom:8px;margin-top:-5px;text-align:left}.error-message{background-color:#fff2f0;padding:8px 12px}.verification-code-container{align-items:center;display:flex;gap:10px;margin-bottom:20px}.verification-code-container input{flex:1 1;font-size:16px;min-width:200px;padding:8px 12px;width:100%}.resend-button,.verification-code-container input{border:1px solid #d9d9d9;border-radius:4px;box-sizing:border-box;height:40px}.resend-button{align-items:center;background-color:#f0f0f0;cursor:pointer;display:flex;font-size:14px;justify-content:center;min-width:100px;padding:0 15px;transition:all .3s;white-space:nowrap}.resend-button:hover:not(:disabled){background-color:#e6e6e6}.resend-button:disabled{background-color:#f5f5f5;color:#00000040;cursor:not-allowed}.verified-field{align-items:center;background-color:#f6f6f6;border-radius:4px;display:flex;justify-content:space-between;padding:8px 12px}.verified-badge{background-color:#52c41a;border-radius:10px;color:#fff;font-size:12px;padding:2px 8px}.form-actions{flex-direction:column;gap:10px;margin-top:20px}.form-actions button{align-items:center;border-radius:4px;display:flex;font-size:16px;height:40px;justify-content:center;width:100%}.form-actions .primary-button{background-color:#1890ff;border:none;color:#fff}.form-actions .primary-button:hover:not(:disabled){background-color:#40a9ff}.form-actions .back-button{background-color:#f0f0f0;border:1px solid #d9d9d9;color:#666;position:static;width:100%}.form-actions .back-button:hover{background-color:#e6e6e6}.info-text{color:#666;font-size:14px;margin:15px 0}.form-group{margin-bottom:15px}.form-group label{font-weight:500;margin-bottom:5px}.error-message{margin-top:5px}input.error{border-color:#ff4d4f}.verification-code-container input[type=text]{border:1px solid #d9d9d9;border-radius:4px;box-sizing:border-box;font-size:16px;height:40px;margin-bottom:0;min-width:200px;padding:8px 12px;width:100%}.forgot-password{margin-top:15px;text-align:right}.forgot-password-button{background:none;border:none;color:#1890ff;cursor:pointer;font-size:14px;padding:0}.forgot-password-button:hover{color:#40a9ff;text-decoration:underline}.agreement-container{margin-bottom:20px}.agreement-checkbox-container{align-items:center;display:flex;margin-bottom:8px}.agreement-checkbox-container input[type=checkbox]{margin-bottom:0;margin-right:8px;width:auto}.agreement-checkbox-container label{margin-right:4px}.agreement-link{background:none;border:none;color:#1890ff;cursor:pointer;font-size:inherit;padding:0;text-decoration:underline}.agreement-link:hover{color:#40a9ff}.agreement-modal{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:#00000080;display:none;height:100%;left:0;overflow:auto;position:fixed;top:0;width:100%;z-index:1000}.agreement-modal-content{background-color:#fff;border-radius:12px;box-shadow:0 8px 24px #00000026;margin:5% auto;max-height:80vh;max-width:800px;overflow-y:auto;padding:20px;position:relative;width:80%}.agreement-text{border:1px solid #eee;border-radius:8px;line-height:1.5;margin:15px 0;max-height:60vh;overflow-y:auto;padding:10px}.agreement-text h2{font-size:22px;margin-bottom:15px}.agreement-text h3{font-size:18px;margin:20px 0 10px}.agreement-text p{margin-bottom:12px}.agreement-text ul{margin-bottom:15px;margin-left:20px}.agreement-text li{margin-bottom:8px}.agreement-close-btn{background-color:#1890ff;border:none;border-radius:6px;color:#fff;cursor:pointer;display:block;font-size:16px;margin:20px auto 0;padding:10px 20px;transition:all .3s ease}.agreement-close-btn:hover{background-color:#40a9ff}.close{color:#aaa;cursor:pointer;float:right;font-size:28px;font-weight:700}.close:focus,.close:hover{color:#000;text-decoration:none}@media screen and (max-width:768px){.agreement-modal-content{margin:10% auto;padding:15px;width:90%}.agreement-text{max-height:50vh}}body,html{background:#f5f5f5;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;height:100%;margin:0;padding:0}.main-container{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;height:100vh;padding:20px;width:100%}.fullscreen-map-container{height:100vh;overflow:hidden;position:relative;width:100%}.detail-map-container{height:auto;overflow:hidden;position:relative;width:100%}.fullscreen-map-wrapper{height:100%;min-height:100vh;position:relative;width:100%}.parking-detail-map-wrapper{border-radius:8px;box-shadow:0 2px 8px #0000001a;height:400px;overflow:hidden;position:relative;width:100%}.map{height:100%;width:100%}.map-search-container{left:50%;max-width:600px;padding:0 20px;position:absolute;top:80px;transform:translateX(-50%);width:100%;z-index:99}.search-box{background:#fff;border-radius:20px;box-shadow:0 2px 8px #00000026;height:40px;overflow:hidden;transition:box-shadow .3s ease;width:100%}.search-box:hover{box-shadow:0 6px 16px #00000026}.search-input{border:none;color:#333;flex:1 1;font-size:16px;height:100%;outline:none;padding:0 20px}.search-input::placeholder{color:#999}.search-button{background:linear-gradient(45deg,#6a11cb,#2575fc);border:none;color:#fff;cursor:pointer;font-size:16px;height:100%;transition:background .3s ease;width:80px}.search-button:hover{background:linear-gradient(45deg,#2575fc,#6a11cb)}.suggestions-list{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;left:0;list-style:none;margin:8px 0 0;max-height:300px;overflow-y:auto;padding:0;position:absolute;right:0;top:100%;z-index:99}.suggestions-list li{border-bottom:1px solid #eee;color:#333;cursor:pointer;padding:12px 20px;transition:background-color .2s ease}.suggestions-list li:last-child{border-bottom:none}.suggestions-list li:hover{background-color:#f8f9fa}.parking-spots-panel{background:#fff;border-radius:16px 16px 0 0;bottom:0;box-shadow:0 -4px 12px #0000001a;left:0;overflow:hidden;position:fixed;right:0;transform:translateY(100%);transition:transform .3s ease-out,height .3s ease-out;z-index:1000}.parking-spots-panel.visible{transform:translateY(0)}.parking-spots-panel.expanded{height:80vh!important}.drawer-handle{background:#e0e0e0;border-radius:2px;height:4px;margin:8px auto;width:40px}.panel-header{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:0 16px 12px;position:relative}.panel-header h3{color:#333;font-size:18px;font-weight:600;margin:0}.sort-select{background:#fff;border:1px solid #e8e8e8;border-radius:6px;color:#333;cursor:pointer;font-size:14px;outline:none;padding:6px 12px;transition:all .3s}.sort-select:hover{border-color:#40a9ff}.parking-spots-list{-webkit-overflow-scrolling:touch;grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr);height:calc(100% - 80px);overflow-y:auto;padding:16px}.parking-spots-list::-webkit-scrollbar{width:6px}.parking-spots-list::-webkit-scrollbar-track{background:#f5f5f5}.parking-spots-list::-webkit-scrollbar-thumb{background:#ddd;border-radius:3px}.parking-spot-card{border-bottom:1px solid #e8e8e8;cursor:pointer;padding:16px;transition:background-color .3s}.parking-spot-card:hover{background-color:#f5f5f5}.spot-title{color:#1a1a1a;font-size:16px;font-weight:500;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spot-info{display:flex;flex-direction:column;gap:4px}.spot-detail{align-items:center;color:#666;display:flex;font-size:14px}.spot-price{color:#f5222d;font-weight:700}.spot-distance{color:#1890ff}.spot-hours{color:#52c41a}.spot-rating{color:#faad14;gap:4px}.spot-rating,.spots-loading{align-items:center;display:flex}.spots-loading{flex-direction:column;gap:12px;padding:32px 20px}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-top-color:#1890ff;height:36px;width:36px}.spots-loading p{color:#666;font-size:14px;margin:0}.empty-state{color:#999;padding:32px 20px;text-align:center}.empty-state p{font-size:14px;margin:0}@media (max-width:768px){.map-search-container{padding:0 10px}.fullscreen-map-container{border-radius:0;height:100vh}.parking-spots-panel{height:60vh}.parking-spots-list{grid-template-columns:1fr}}.map-error,.map-loading{align-items:center;color:#666;display:flex;font-size:18px;height:100vh;justify-content:center}.drawer-overlay{background:#00000080;bottom:0;left:0;opacity:0;position:fixed;right:0;top:0;transition:opacity .3s ease,visibility .3s ease;visibility:hidden;z-index:999}.drawer-overlay.visible{opacity:1;visibility:visible}.map-controls-container{gap:12px;left:20px;position:absolute;right:20px;top:20px}.map-controls,.map-controls-container{display:flex;flex-direction:column;z-index:1000}.map-controls{gap:16px;position:fixed;right:16px;top:50%;transform:translateY(-50%)}.map-control-button{align-items:center;background:#fff;border:none;border-radius:50%;box-shadow:0 2px 8px #00000026;cursor:pointer;display:flex;height:48px;justify-content:center;transition:all .3s ease;width:48px}.map-control-button:hover{box-shadow:0 4px 12px #0003;transform:scale(1.05)}.map-control-button svg{fill:#1967d2;height:24px;width:24px}.status.in_use,.status.occupied{background-color:#fff1f0;border:1px solid #ffa39e;color:#ff4d4f}.status.unavailable{background-color:#f5f5f5;border:1px solid #d9d9d9;color:#bfbfbf}@media screen and (max-width:768px){.map-search-container{padding:0 10px;top:60px;width:90%}.drawer-trigger-btn,.user-location-btn{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 8px #0003;display:flex;height:48px;justify-content:center;position:fixed;right:16px;width:48px;z-index:1000}.user-location-btn{top:50%;transform:translateY(-60px)}.drawer-trigger-btn{top:50%;transform:translateY(10px)}.drawer-trigger-btn:hover,.user-location-btn:hover{box-shadow:0 4px 12px #0000004d;transform:translateY(-60px) scale(1.05)}.drawer-trigger-btn:hover{transform:translateY(10px) scale(1.05)}.drawer-trigger-btn svg,.user-location-btn svg{height:24px;width:24px}.fullscreen-map-container{border-radius:0;height:100vh}.parking-spots-panel{height:70vh}.parking-spots-list{gap:8px;grid-template-columns:1fr;padding:12px}.parking-spot-card{padding:12px}.spot-title{font-size:14px}.spot-info{gap:2px}.spot-detail{font-size:12px}.map-controls{gap:16px;right:16px}.map-control-button{height:48px;width:48px}.map-control-button svg{height:24px;width:24px}}@media screen and (max-width:375px){.map-search-container{padding:0 5px;top:50px;width:95%}.drawer-trigger-btn,.user-location-btn{height:44px;right:12px;width:44px}.user-location-btn{transform:translateY(-55px)}.drawer-trigger-btn{transform:translateY(5px)}.user-location-btn:hover{transform:translateY(-55px) scale(1.05)}.drawer-trigger-btn:hover{transform:translateY(5px) scale(1.05)}.search-box{height:32px}.search-input{font-size:12px}.search-button{font-size:12px;width:50px}.parking-spots-panel{height:80vh}.panel-header h3{font-size:14px}.sort-select{font-size:12px;padding:4px 8px}.map-controls{gap:12px;right:12px}.map-control-button{height:44px;width:44px}.map-control-button svg{height:22px;width:22px}}.header-login-btn{position:absolute;right:20px;top:20px;z-index:1001}.user-location-btn{background:#fff;border-radius:8px;bottom:140px;box-shadow:0 2px 6px #0000004d;cursor:pointer;padding:8px;position:absolute;right:20px;transition:all .3s ease;z-index:1000}.user-location-btn:hover{box-shadow:0 4px 12px #0006;transform:translateY(-2px)}.drawer-trigger-btn{background:#fff;border-radius:8px;bottom:140px;box-shadow:0 2px 6px #0000004d;cursor:pointer;left:20px;padding:10px;position:absolute;transition:all .3s ease;z-index:1000}.drawer-trigger-btn:hover{box-shadow:0 4px 12px #0006;transform:translateY(-2px)}@media screen and (max-width:768px){.gm-fullscreen-control,.gm-style-mtc,.gm-svpc{display:none!important}.gmnoprint.gm-bundled-control{bottom:80px!important;top:auto!important}.drawer-trigger-btn,.user-location-btn{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 8px #0003;display:flex;height:48px;justify-content:center;position:fixed;right:16px;width:48px;z-index:1000}.user-location-btn{top:50%;transform:translateY(-60px)}.drawer-trigger-btn{top:50%;transform:translateY(10px)}.drawer-trigger-btn:hover,.user-location-btn:hover{box-shadow:0 4px 12px #0000004d}.user-location-btn:hover{transform:translateY(-60px) scale(1.05)}.drawer-trigger-btn:hover{transform:translateY(10px) scale(1.05)}.drawer-trigger-btn svg,.user-location-btn svg{height:24px;width:24px}}@media screen and (max-width:375px){.gmnoprint.gm-bundled-control{bottom:70px!important}.drawer-trigger-btn,.user-location-btn{height:44px;right:12px;width:44px}.user-location-btn{transform:translateY(-55px)}.drawer-trigger-btn{transform:translateY(5px)}.user-location-btn:hover{transform:translateY(-55px) scale(1.05)}.drawer-trigger-btn:hover{transform:translateY(5px) scale(1.05)}}.parking-spot-form-container{background-color:#f9f9f9;border-radius:8px;box-shadow:0 4px 6px #0000001a;margin:2rem auto;max-width:600px;padding:2rem}.parking-spot-form-container h2{color:#333;margin-bottom:1.5rem;text-align:center}.parking-spot-form{display:flex;flex-direction:column}.form-group{margin-bottom:1rem}.form-group label{color:#555;display:block;font-weight:700;margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;font-size:1rem;padding:.75rem;width:100%}.form-group textarea{min-height:100px;resize:vertical}.form-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}.btn-cancel,.btn-submit{border:none;border-radius:4px;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background-color .3s ease}.btn-submit{background-color:#007bff;color:#fff}.btn-submit:hover{background-color:#0056b3}.btn-cancel{background-color:#6c757d;color:#fff}.btn-cancel:hover{background-color:#5a6268}.error-message{background-color:#f8d7da;border:1px solid #f5c6cb;color:#dc3545}.error-message,.success-message{margin-bottom:1rem;padding:.75rem}.success-message{background-color:#d4edda;border:1px solid #c3e6cb;border-radius:4px;color:#155724}.header{display:flex;justify-content:flex-end;padding:16px;position:fixed;right:0;top:0;z-index:1001}.user-controls{gap:16px}.user-controls,.user-info{align-items:center;display:flex}.user-info{background:#fff;border-radius:20px;box-shadow:0 2px 8px #0000001a;gap:8px;padding:8px 16px}.user-info span{color:#1a1a1a;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info button{align-items:center;background:none;border:none;border-radius:4px;color:#f5222d;cursor:pointer;display:flex;height:24px;justify-content:center;margin:0;min-width:40px;padding:0;transition:background-color .2s;white-space:nowrap}.user-info button:hover{background-color:#f5222d1a}.auth-link{background:#fff;border-radius:20px;box-shadow:0 2px 8px #0000001a;color:#1890ff;padding:8px 16px;text-decoration:none;transition:transform .2s,box-shadow .2s}.auth-link:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}@media (max-width:768px){.header{padding:8px}.user-info{gap:6px;max-width:240px;padding:4px 12px}.user-info span{max-width:180px}.user-info button{font-size:13px;height:24px;min-width:32px}.auth-link{font-size:14px;padding:6px 12px}}@media (max-width:375px){.header{padding:6px}.user-info{gap:4px;max-width:220px;padding:4px 10px}.user-info span{font-size:13px;max-width:160px}.user-info button{font-size:12px;height:22px;min-width:28px}}.parking-detail-container{background:#f5f5f5;margin:0 auto;max-width:1200px;min-height:100vh;padding:40px 20px 20px}.detail-content{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden;position:relative}.info-section{margin-top:40px;padding:24px}.header-section{left:210px;position:fixed;top:46px;z-index:1}.back-button{background:#fff!important;border:1px solid #00000026!important;box-shadow:0 2px 8px #0000001a;color:#333;height:40px;transition:all .3s ease;width:40px}.back-button:hover{border-color:#1890ff!important;box-shadow:0 4px 12px #00000026;color:#1890ff}.price-section{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;margin-bottom:24px;padding-bottom:16px}.price-info{display:flex;flex-direction:column;gap:12px}.location-title{color:#1a1a1a;font-size:28px;line-height:1.2}.location-title,.price{font-weight:600;margin:0}.price{font-size:32px;line-height:1}.status-section{align-items:center;display:flex;gap:16px}.status{border-radius:12px;display:inline-block;font-size:12px;font-weight:500;padding:4px 8px;text-align:center}.status.available{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}.status.occupied{background-color:#fff1f0;border:1px solid #ffa39e;color:#ff4d4f}.status.reserved{background-color:#fff7e6;border:1px solid #ffd591;color:#fa8c16}.action-buttons{gap:12px}.use-button{background:#1890ff;border-color:#1890ff}.use-button:hover{background:#40a9ff;border-color:#40a9ff}.reserve-button{border-color:#1890ff;color:#1890ff}.reserve-button:hover{background:#e6f7ff}.info-items{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.info-item{align-items:center;color:#666;display:flex;gap:8px}.info-item label{color:#999;min-width:70px}.closing-warning{animation:blink 2s infinite;color:#ff4d4f;font-size:13px;font-weight:700;margin-left:8px}@keyframes blink{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.timeline-container{background:#fafafa;border-radius:8px;margin:24px 0;padding:20px}.reservations-section{margin:24px 0}.reservations-section h3{color:#1a1a1a;font-size:18px;margin-bottom:16px}.reservations-list{list-style:none;margin:0;padding:0}.reservation-item{align-items:center;background:#fafafa;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:8px;padding:12px 16px}.reservation-item:last-child{margin-bottom:0}.reservation-item .time{color:#1a1a1a;font-weight:500}.reservation-item .status{font-size:13px}.description-section{margin:24px 0}.description-section h3{color:#1a1a1a;font-size:18px;margin-bottom:16px}.description-section p{color:#666;line-height:1.6;margin:0}.map-section{margin:24px 0}.map-section h3{color:#1a1a1a;font-size:18px;margin-bottom:16px}@media screen and (max-width:768px){.parking-detail-container{padding:0}.detail-content{border-radius:0}.info-section{padding:16px}.header-section{left:-2px;top:40px}.back-button{height:36px;width:36px}.price-section{align-items:center}.location-title{font-size:24px}.price{font-size:28px}.info-items{gap:12px;grid-template-columns:1fr}.action-buttons{flex-direction:column;width:100%}.action-buttons button{width:100%}.timeline-container{margin:16px 0;padding:16px}}@media screen and (max-width:375px){.info-section{padding:12px 12px 12px 48px}.header-section{left:-2px;top:40px}.back-button{height:32px;width:32px}.location-title{font-size:20px}.price{font-size:24px}.status{font-size:12px;padding:3px 8px}.info-item{font-size:13px}.timeline-container{padding:12px}}.parking-timeline{background:#fff;border-radius:8px;box-shadow:0 1px 4px #0000001a;margin:20px 0;padding:16px}.timeline-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.timeline-legend{display:flex;gap:16px;margin-bottom:12px}.legend-item{color:#666;font-size:12px;gap:6px}.legend-color{border-radius:2px;height:12px;width:12px}.legend-color.reserved{background-color:#faad14}.legend-color.available{background-color:#52c41a}.legend-color.passed{background-color:#bfbfbf}.legend-color.unavailable{background-color:#f5f5f5}.timeline-container{margin:20px 0}.timeline-bar{background:#f0f0f0;border-radius:3px;cursor:pointer;height:6px;overflow:hidden;position:relative;width:100%}.timeline-progress{background:#52c41a;border-radius:3px;height:100%;left:0;position:absolute;top:0;transition:width .3s ease}.timeline-progress.reserved{background:#faad14}.timeline-labels{color:#666;display:flex;font-size:12px;justify-content:space-between;margin-top:6px}.timeline-slot.passed{background-color:#d9d9d9;opacity:.6}.timeline-content{margin:16px 0}.timeline-hours{display:flex;height:40px;overflow-x:auto;padding-bottom:20px;position:relative;width:100%}.hour-mark,.time-mark{align-items:center;display:flex;flex:1 1;flex-direction:column;min-width:30px;position:relative}.hour-block,.time-block{background-color:#52c41a;border-right:1px solid #fff;height:24px;transition:all .2s ease;width:100%}.time-block{border-radius:2px;cursor:pointer;height:20px;margin:0 1px}.time-block:hover{box-shadow:0 1px 4px #0003;transform:scaleY(1.1)}.time-block.available:hover{background-color:#389e0d}.hour-block.reserved,.time-block.reserved{background-color:#faad14;cursor:not-allowed}.hour-block.available,.time-block.available{background-color:#52c41a}.hour-block.passed,.time-block.passed{background-color:#bfbfbf;cursor:not-allowed}.hour-block.unavailable,.time-block.unavailable{background-color:#f5f5f5;cursor:not-allowed}.hour-label{bottom:-20px;color:#666;font-size:12px;position:absolute}.timeline-info{color:#666;font-size:13px;margin-top:24px;text-align:center}.timeline-info div{margin:4px 0}.timeline-container::-webkit-scrollbar{height:6px}.timeline-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.timeline-container::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.timeline-container::-webkit-scrollbar-thumb:hover{background:#555}.parking-usage{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:2rem auto;max-width:600px;padding:2rem}.parking-usage h2{color:#333;margin-bottom:2rem;text-align:center}.parking-info{background-color:#f8f9fa;border-radius:6px;margin-bottom:2rem;padding:1.5rem}.parking-info h3{color:#2c3e50;margin:0}.parking-info p{color:#666;margin:.5rem 0 0}.payment-section,.start-section,.usage-section{padding:2rem 0;text-align:center}.cost-estimate,.timer{margin-bottom:2rem}.cost-display,.time-display{color:#2c3e50;font-size:2.5rem;font-weight:700;margin:1rem 0}.payment-details{background-color:#f8f9fa;border-radius:6px;margin:1rem 0 2rem;padding:1.5rem}.payment-details p{font-size:1.1rem;margin:.5rem 0}button{border:none;border-radius:4px;cursor:pointer;font-size:1.1rem;padding:1rem 2rem;transition:background-color .3s}.start-button{background-color:#4caf50;color:#fff}.start-button:hover{background-color:#45a049}.end-button{background-color:#f44336;color:#fff}.end-button:hover{background-color:#da190b}.payment-button{background-color:#2196f3;color:#fff}.payment-button:hover{background-color:#1976d2}.insufficient-balance-alert{background-color:#fff3cd;border:1px solid #ffeeba;border-radius:6px;margin:1rem 0 2rem;padding:1.5rem;text-align:center}.insufficient-balance-alert .alert-icon{font-size:2rem;margin-bottom:.5rem}.insufficient-balance-alert h4{color:#856404;font-size:1.2rem;margin:.5rem 0}.insufficient-balance-alert p{color:#856404;margin-bottom:1.5rem}.insufficient-balance-alert .alert-actions{display:flex;gap:1rem;justify-content:center}.top-up-button{background-color:#28a745;color:#fff}.top-up-button:hover{background-color:#218838}.cancel-button{background-color:#6c757d;color:#fff}.cancel-button:hover{background-color:#5a6268}@media (max-width:600px){.parking-usage{margin:1rem;padding:1rem}.cost-display,.time-display{font-size:2rem}button{margin-bottom:1rem;width:100%}}.search-container{margin:0 auto;max-width:1200px;padding:20px}.search-header{justify-content:space-between;margin-bottom:24px}.header-left,.search-header{align-items:center;display:flex}.header-left{gap:12px}.back-button{align-items:center;border-radius:50%;color:#1a1a1a;display:flex;font-size:18px;height:32px;justify-content:center;padding:4px;transition:background-color .2s;width:32px}.back-button:hover{background-color:#0000000a;color:#1a1a1a}.search-header h1{color:#1a1a1a;font-size:24px;margin:0}.sort-select{min-width:120px}.error-message{background:#fff2f0;border:1px solid #ffccc7;border-radius:4px;color:#ff4d4f;padding:16px}.loading-container{align-items:center;display:flex;justify-content:center;min-height:400px}.no-results{padding:48px 0;text-align:center}.no-results p{color:#666;font-size:16px;margin-bottom:16px}.no-results button{background:#1890ff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:16px;padding:8px 24px;transition:background-color .2s}.no-results button:hover{background:#40a9ff}.parking-spots-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:24px}.parking-link{color:inherit;text-decoration:none}.parking-card{animation:fadeIn .5s ease-out;background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:16px;transition:transform .2s,box-shadow .2s}.parking-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.parking-card h2{color:#333;font-size:18px;margin:0 0 10px}.price{color:#f5222d;font-size:18px;font-weight:700;margin:8px 0}.distance{color:#52c41a;margin-bottom:8px}.spot-details{color:#666;font-size:14px}.spot-details p{margin:4px 0}@media (max-width:768px){.search-container{padding:16px}.search-header{align-items:flex-start;flex-direction:column;gap:16px}.sort-select{width:100%}.parking-spots-grid{grid-template-columns:1fr}}:root{--primary:#007aff;--primary-dark:#0056cc;--success:#34c759;--warning:#ff9500;--danger:#ff3b30;--info:#5ac8fa;--text-primary:#1d1d1f;--text-secondary:#86868b;--text-tertiary:#c7c7cc;--bg-primary:#fff;--bg-secondary:#f2f2f7;--bg-tertiary:#fafafa;--border:#e5e5ea;--border-medium:#d1d1d6;--shadow-sm:0 1px 3px #0000001a;--shadow-md:0 4px 12px #0000001a;--shadow-lg:0 8px 25px #0000001f;--radius:12px;--radius-sm:8px;--radius-lg:16px;--sidebar-width:280px}*{box-sizing:border-box;margin:0;padding:0}body{color:#1d1d1f;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,system-ui,sans-serif;line-height:1.6}.admin-dashboard-layout,body{background:#f2f2f7;background:var(--bg-secondary)}.admin-dashboard-layout{display:flex;min-height:100vh}.admin-sidebar{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 8px 25px #0000001f;box-shadow:var(--shadow-lg);color:#fff;display:flex;flex-direction:column;height:100vh;left:0;position:fixed;top:0;width:280px;width:var(--sidebar-width);z-index:1000}.sidebar-brand{border-bottom:1px solid #ffffff26;gap:16px;padding:32px 24px}.brand-icon,.sidebar-brand{align-items:center;display:flex}.brand-icon{background:#fff3;border-radius:12px;font-size:24px;height:48px;justify-content:center;width:48px}.brand-text h2{font-size:22px;font-weight:700;margin:0}.brand-text span{display:block;font-size:13px;margin-top:2px;opacity:.8}.sidebar-nav{flex:1 1;overflow-y:auto;padding:24px 0}.nav-section{margin-bottom:32px}.nav-section h3{font-size:12px;font-weight:600;letter-spacing:1px;margin:0 24px 16px;opacity:.6;text-transform:uppercase}.nav-section ul{list-style:none;padding:0 16px}.nav-section li{margin-bottom:4px}.nav-link{align-items:center;background:none;border:none;border-radius:8px;border-radius:var(--radius-sm);color:#ffffffe6;cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:12px;padding:12px 16px;position:relative;text-decoration:none;transition:all .2s ease;width:100%}.nav-link:hover{background:#ffffff1a;color:#fff;transform:translateX(2px)}.nav-link.active{background:#ffffff26;color:#fff;font-weight:600}.nav-link.active:before{background:#fff;border-radius:2px;content:"";height:20px;left:-16px;position:absolute;top:50%;transform:translateY(-50%);width:3px}.nav-icon{font-size:18px;text-align:center;width:20px}.nav-text{flex:1 1}.nav-badge{background:#fff3;border-radius:10px;color:#fff;font-size:11px;font-weight:600;padding:2px 8px}.sidebar-footer{border-top:1px solid #ffffff26;padding:24px}.admin-profile{gap:12px;margin-bottom:16px}.admin-profile,.profile-avatar{align-items:center;display:flex}.profile-avatar{background:#fff3;border-radius:50%;font-weight:600;height:36px;justify-content:center;width:36px}.profile-info{flex:1 1}.profile-name{display:block;font-size:14px;font-weight:600}.profile-role{display:block;font-size:12px;opacity:.7}.logout-button{align-items:center;background:#ffffff1a;border:none;border-radius:8px;border-radius:var(--radius-sm);color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:10px 16px;transition:all .2s ease;width:100%}.logout-button:hover{background:#fff3}.admin-main{background:#f2f2f7;background:var(--bg-secondary);flex:1 1;margin-left:280px;margin-left:var(--sidebar-width);min-height:100vh}.page-header{align-items:center;background:#fff;background:var(--bg-primary);border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:32px 40px}.header-left{flex:1 1}.page-title{color:#1d1d1f;color:var(--text-primary);font-size:32px;font-weight:700;margin:0 0 8px}.page-subtitle{color:#86868b;color:var(--text-secondary);font-size:16px;margin:0}.header-right{align-items:center}.header-right,.quick-stats{display:flex;gap:24px}.quick-stat{text-align:center}.quick-stat .stat-value{color:#1d1d1f;color:var(--text-primary);display:block;font-size:24px;font-weight:700}.quick-stat .stat-label{color:#86868b;color:var(--text-secondary);display:block;font-size:12px;letter-spacing:.5px;text-transform:uppercase}.dashboard-content{padding:32px 40px}.kpi-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:32px}.kpi-card{background:#fff;background:var(--bg-primary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 1px 3px #0000001a;box-shadow:var(--shadow-sm);padding:24px;transition:all .3s ease}.kpi-card:hover{box-shadow:0 4px 12px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-2px)}.kpi-card.primary{border-left:4px solid #007aff;border-left:4px solid var(--primary)}.kpi-card.success{border-left:4px solid #34c759;border-left:4px solid var(--success)}.kpi-card.warning{border-left:4px solid #ff9500;border-left:4px solid var(--warning)}.kpi-card.danger{border-left:4px solid #ff3b30;border-left:4px solid var(--danger)}.kpi-header{justify-content:space-between;margin-bottom:16px}.kpi-header,.kpi-icon{align-items:center;display:flex}.kpi-icon{background:#fafafa;background:var(--bg-tertiary);font-size:20px;height:40px;justify-content:center;width:40px}.kpi-icon,.kpi-trend{border-radius:8px;border-radius:var(--radius-sm)}.kpi-trend{font-size:12px;font-weight:600;padding:4px 8px}.kpi-trend.up{background:#34c7591a;color:#34c759;color:var(--success)}.kpi-trend.down{background:#ff3b301a;color:#ff3b30;color:var(--danger)}.kpi-trend.stable{background:#8e8e931a;color:#86868b;color:var(--text-secondary)}.kpi-body{text-align:left}.kpi-value{font-size:36px;font-weight:700}.kpi-label,.kpi-value{color:#1d1d1f;color:var(--text-primary);margin-bottom:4px}.kpi-label{font-size:16px;font-weight:600}.kpi-desc{color:#86868b;color:var(--text-secondary);font-size:14px}.content-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));margin-bottom:32px}.content-card{background:#fff;background:var(--bg-primary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 1px 3px #0000001a;box-shadow:var(--shadow-sm);overflow:hidden}.content-card.full-width{grid-column:1/-1}.card-header{align-items:center;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:20px 24px}.card-title{color:#1d1d1f;color:var(--text-primary);font-size:18px;font-weight:600;margin:0}.card-actions{align-items:center;display:flex;gap:16px}.card-body{padding:24px}.card-body.no-padding{padding:0}.search-box{align-items:center;display:flex;position:relative}.search-icon{color:#86868b;color:var(--text-secondary);font-size:14px;left:12px;position:absolute;z-index:1}.search-input{background:#fff;background:var(--bg-primary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);font-size:14px;padding:8px 12px 8px 36px;width:250px}.search-input:focus{border-color:#007aff;border-color:var(--primary);box-shadow:0 0 0 3px #007aff1a;outline:none}.filter-group{align-items:center;display:flex;gap:12px}.filter-select{background:#fff;background:var(--bg-primary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;padding:8px 12px}.data-table-container{overflow-x:auto}.data-table{border-collapse:collapse;font-size:14px;width:100%}.data-table thead th{background:#fafafa;background:var(--bg-tertiary);border-bottom:2px solid #e5e5ea;border-bottom:2px solid var(--border);color:#1d1d1f;color:var(--text-primary);font-size:13px;font-weight:600;letter-spacing:.5px;padding:16px 20px;text-align:left;text-transform:uppercase}.data-table tbody tr{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--border);transition:background-color .2s ease}.data-table tbody tr:hover{background:#fafafa;background:var(--bg-tertiary)}.data-table tbody td{padding:16px 20px;vertical-align:middle}.data-table .actions-col{text-align:center;width:120px}.user-cell{gap:12px}.user-avatar-sm,.user-cell{align-items:center;display:flex}.user-avatar-sm{background:linear-gradient(135deg,#007aff,#5856d6);background:linear-gradient(135deg,var(--primary),#5856d6);border-radius:50%;color:#fff;font-size:13px;font-weight:600;height:32px;justify-content:center;width:32px}.user-info{flex:1 1}.user-name{color:#1d1d1f;color:var(--text-primary);font-weight:600}.user-id{color:#86868b;color:var(--text-secondary);font-size:12px}.contact-info{line-height:1.4}.contact-info .phone{color:#86868b;color:var(--text-secondary);font-size:12px}.vehicle-plate{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;border-radius:var(--radius-sm);color:#fff;font-size:12px;font-weight:600;letter-spacing:.5px;padding:4px 8px}.no-data{color:#86868b;color:var(--text-secondary);font-style:italic}.balance.positive{color:#34c759;color:var(--success);font-weight:600}.balance.zero,.date-text{color:#86868b;color:var(--text-secondary)}.date-text{font-size:13px}.spot-cell{line-height:1.4}.spot-id{color:#1d1d1f;color:var(--text-primary);font-weight:600}.spot-owner{color:#86868b;color:var(--text-secondary);font-size:12px}.location-info{line-height:1.4}.address{color:#1d1d1f;color:var(--text-primary)}.coordinates{color:#86868b;color:var(--text-secondary);font-size:12px}.price-info{line-height:1.4}.hourly-rate{color:#1d1d1f;color:var(--text-primary);font-weight:600}.alt-rate{color:#86868b;color:var(--text-secondary);font-size:12px}.lock-serial{background:#fafafa;background:var(--bg-tertiary);border-radius:8px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;padding:4px 8px}.no-lock{color:#86868b;color:var(--text-secondary);font-style:italic}.status-badge{border-radius:8px;border-radius:var(--radius-sm);font-size:12px;padding:6px 12px;text-align:center}.status-available{background:#34c7591a;color:#34c759;color:var(--success)}.status-occupied{background:#ff95001a;color:#ff9500;color:var(--warning)}.status-unavailable{background:#ff3b301a;color:#ff3b30;color:var(--danger)}.action-buttons{display:flex;gap:8px;justify-content:center}.btn{align-items:center;background:#007aff;background:var(--primary);border-radius:var(--radius-sm);color:#fff;display:inline-flex;font-weight:500;gap:6px;padding:8px 16px;text-decoration:none;transition:all .2s ease}.btn:hover{box-shadow:0 1px 3px #0000001a;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-sm{font-size:12px;padding:6px 10px}.btn-primary{background:#007aff;background:var(--primary)}.btn-primary:hover{background:#0056cc;background:var(--primary-dark)}.btn-success{background:#34c759;background:var(--success);color:#fff}.btn-warning{background:#ff9500;background:var(--warning);color:#fff}.btn-danger{background:#ff3b30;background:var(--danger);color:#fff}.btn-outline{background:#0000;border:1px solid #e5e5ea;border:1px solid var(--border);color:#86868b;color:var(--text-secondary)}.btn-outline:hover{background:#fafafa;background:var(--bg-tertiary);color:#1d1d1f;color:var(--text-primary)}.usage-chart{text-align:center}.usage-bar{background:#fafafa;background:var(--bg-tertiary);border-radius:4px;display:flex;height:8px;margin-bottom:16px;overflow:hidden;width:100%}.usage-fill{height:100%;transition:width .3s ease}.usage-fill.available{background:#34c759;background:var(--success)}.usage-fill.occupied{background:#ff9500;background:var(--warning)}.usage-legend{display:flex;gap:24px;justify-content:center}.legend-item{align-items:center;display:flex;font-size:14px;gap:8px}.legend-dot{border-radius:50%;height:12px;width:12px}.legend-dot.available{background:#34c759;background:var(--success)}.legend-dot.occupied{background:#ff9500;background:var(--warning)}.quick-actions{display:flex;flex-direction:column;gap:12px}.quick-action-btn{align-items:center;background:#fafafa;background:var(--bg-tertiary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#1d1d1f;color:var(--text-primary);cursor:pointer;display:flex;gap:12px;padding:16px;text-decoration:none;transition:all .2s ease}.quick-action-btn:hover{background:#f2f2f7;background:var(--bg-secondary);transform:translateX(4px)}.quick-action-btn.primary{background:linear-gradient(135deg,#007aff,#5856d6);background:linear-gradient(135deg,var(--primary),#5856d6);border-color:#0000;color:#fff}.quick-action-btn.primary:hover{background:linear-gradient(135deg,#0056cc,#5856d6);background:linear-gradient(135deg,var(--primary-dark),#5856d6)}.action-icon{font-size:20px}.action-text{flex:1 1;font-weight:500}.action-arrow{font-size:16px;opacity:.7}.alert{align-items:center;border-radius:8px;border-radius:var(--radius-sm);display:flex;font-weight:500;gap:12px;margin-bottom:24px;padding:16px 20px}.alert-error{background:#ff3b301a;border:1px solid #ff3b3033;color:#ff3b30;color:var(--danger)}.alert-icon{font-size:16px}.modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.modal-content{background:#fff;background:var(--bg-primary);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 8px 25px #0000001f;box-shadow:var(--shadow-lg);max-height:90vh;max-width:600px;overflow:hidden;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:20px 24px}.modal-header h3{font-size:18px;font-weight:600;margin:0}.modal-close{background:none;border:none;color:#86868b;color:var(--text-secondary);cursor:pointer;font-size:18px;line-height:1;padding:4px}.modal-body{max-height:400px;overflow-y:auto;padding:24px}.modal-footer{border-top:1px solid #e5e5ea;border-top:1px solid var(--border);display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.edit-form{gap:20px}.edit-form,.form-group{display:flex;flex-direction:column}.form-group{gap:6px}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.form-label{color:#1d1d1f;color:var(--text-primary);font-size:14px;font-weight:600}.form-input,.form-select,.form-textarea{background:#fff;background:var(--bg-primary);border:1px solid #e5e5ea;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);font-family:inherit;font-size:14px;padding:10px 12px;transition:all .2s ease}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:#007aff;border-color:var(--primary);box-shadow:0 0 0 3px #007aff1a;outline:none}.form-textarea{min-height:80px;resize:vertical}.form-help{color:#86868b;color:var(--text-secondary);font-size:12px;margin-top:4px}.admin-login-page{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:24px}.admin-login-panel{background:#fff;background:var(--bg-primary);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 8px 25px #0000001f;box-shadow:var(--shadow-lg);max-width:420px;padding:40px;text-align:center;width:100%}.login-header{margin-bottom:32px}.login-brand-icon{align-items:center;background:linear-gradient(135deg,#007aff,#5856d6);background:linear-gradient(135deg,var(--primary),#5856d6);border-radius:50%;box-shadow:0 4px 12px #007aff4d;color:#fff;display:flex;font-size:28px;height:64px;justify-content:center;margin:0 auto 16px;width:64px}.login-title{color:#1d1d1f;color:var(--text-primary);font-size:28px;font-weight:700;margin:0 0 4px}.login-subtitle{color:#86868b;color:var(--text-secondary);font-size:16px;margin:0}.login-form .form-group{margin-bottom:20px;text-align:left}.login-button,.login-form .form-input{font-size:16px;padding:12px}.login-button{align-items:center;display:flex;font-weight:600;gap:8px;justify-content:center;margin-top:8px;width:100%}.loading-spinner{animation:spin .8s linear infinite;border:2px solid #ffffff80;border-radius:50%;border-top-color:#fff;height:16px;width:16px}.login-footer{border-top:1px solid #e5e5ea;border-top:1px solid var(--border);color:#86868b;color:var(--text-secondary);font-size:13px;margin-top:32px;padding-top:16px}@media (max-width:1200px){.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.content-grid{grid-template-columns:1fr}}@media (max-width:768px){:root{--sidebar-width:0}.admin-sidebar{transform:translateX(-100%);transition:transform .3s ease}.admin-sidebar.open{transform:translateX(0)}.admin-main{margin-left:0}.page-header{align-items:flex-start;flex-direction:column;gap:16px;padding:24px 20px}.dashboard-content{padding:20px}.kpi-grid{grid-template-columns:1fr}.data-table-container{font-size:12px}.search-input{width:200px}}@media (max-width:480px){.page-title{font-size:24px}.kpi-card{padding:16px}.kpi-value{font-size:28px}.card-header{align-items:flex-start;flex-direction:column;gap:12px}.card-body,.card-header{padding:16px 20px}}.parking-lock-control{background-color:#f9f9fc;border-radius:12px;box-shadow:0 4px 20px #00000014;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;padding:20px}.parking-lock-control h2{border-bottom:2px solid #4285f4;color:#3a3a3a;font-size:28px;font-weight:600;margin-bottom:25px;padding-bottom:15px}.server-control{align-items:center;background-color:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;display:flex;justify-content:space-between;margin-bottom:25px;padding:20px;transition:transform .2s,box-shadow .2s}.server-control:hover{box-shadow:0 4px 15px #0000001a;transform:translateY(-2px)}.server-status{align-items:center;display:flex;flex-wrap:wrap;font-size:16px}.status-badge{border-radius:50px;display:inline-block;font-size:13px;font-weight:600;letter-spacing:.5px;margin-left:12px;padding:6px 14px;text-transform:uppercase}.status-running{background-color:#34a853;color:#fff}.status-stopped{background-color:#ea4335;color:#fff}.server-buttons{display:flex;gap:12px}.btn{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;letter-spacing:.5px;padding:10px 18px;text-transform:uppercase;transition:all .3s}.btn:hover:not(:disabled){box-shadow:0 5px 15px #00000026;transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-system-check{background-color:#4285f4;color:#fff}.btn-system-check:hover:not(:disabled){background-color:#3b78e7}.btn-refresh{background-color:#4285f4;color:#fff}.btn-refresh:hover:not(:disabled){background-color:#3b78e7}.view-controls{align-items:center;background-color:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;display:flex;justify-content:space-between;margin-bottom:25px;padding:15px}.view-mode-selector{display:flex;gap:12px}.btn-primary{background-color:#4285f4;color:#fff}.btn-primary:hover:not(:disabled){background-color:#3b78e7}.btn-secondary{background-color:#e0e0e0;color:#3a3a3a}.btn-secondary:hover:not(:disabled){background-color:#d0d0d0}.btn.active{box-shadow:0 0 0 2px #4285f4;font-weight:700}.refresh-control{align-items:center;display:flex;gap:15px}.refresh-control label{align-items:center;display:flex;font-weight:500;gap:10px}.refresh-control input{border:1px solid #ddd;border-radius:8px;font-size:14px;padding:8px 12px;transition:border-color .3s;width:70px}.refresh-control input:focus{border-color:#4285f4;outline:none}.operation-status{align-items:center;animation:slideDown .3s ease-out;border-radius:8px;display:flex;font-weight:500;margin-bottom:20px;padding:12px 20px}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.operation-status.success{background-color:#e6f4ea;border-left:4px solid #34a853;color:#34a853}.operation-status.success:before{content:"✓";font-weight:700;margin-right:10px}.operation-status.error{background-color:#fce8e6;border-left:4px solid #ea4335;color:#ea4335}.operation-status.error:before{content:"⚠";font-weight:700;margin-right:10px}.error-message{background-color:#fce8e6;border-left:4px solid #ea4335;color:#ea4335;font-weight:500;margin-bottom:20px;padding:12px 20px}.loading{align-items:center;display:flex;font-size:18px;height:150px;justify-content:center;position:relative}.loading:after{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#4285f4;content:"";height:40px;left:calc(50% - 20px);position:absolute;top:calc(50% - 20px);width:40px}.devices-list,.devices-status-list{background-color:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;padding:25px}.devices-list h3,.devices-status-list h3{color:#3a3a3a;font-size:20px;font-weight:600;margin-bottom:20px}.no-devices{background-color:#f7f7f7;border-radius:8px;color:#757575;font-style:italic;margin:20px 0;padding:40px;text-align:center}.devices-table{border-collapse:initial;border-spacing:0;margin-top:15px;width:100%}.devices-table td,.devices-table th{border-bottom:1px solid #eee;padding:15px;text-align:left}.devices-table th{background-color:#f5f5f5;color:#3a3a3a;font-weight:600;position:-webkit-sticky;position:sticky;top:0;z-index:10}.devices-table th:first-child{border-top-left-radius:8px}.devices-table th:last-child{border-top-right-radius:8px}.devices-table tr:hover{background-color:#f5f8ff}.device-serial-link{color:#4285f4;font-weight:600;text-decoration:none;transition:color .3s}.device-serial-link:hover{color:#3b78e7;text-decoration:underline}.heartbeat-time{color:#757575;font-size:.85em;font-style:italic;margin-left:5px}.device-actions{display:flex;flex-wrap:wrap;gap:10px}.btn-open{background-color:#34a853;color:#fff}.btn-open:hover:not(:disabled){background-color:#2e9648}.btn-close{background-color:#ea4335;color:#fff}.btn-close:hover:not(:disabled){background-color:#d33426}.btn-more{background-color:#5f6368;color:#fff}.btn-more:hover:not(:disabled){background-color:#4a4d51}.btn-detail{background-color:#673ab7;color:#fff}.btn-detail:hover:not(:disabled){background-color:#5e35b1}.btn-normal{background-color:#4285f4;color:#fff}.btn-normal:hover:not(:disabled){background-color:#3b78e7}.btn-restart{background-color:#fbbc05;color:#fff}.btn-restart:hover:not(:disabled){background-color:#e3aa04}.btn-sm{font-size:.9em;padding:7px 12px}.dropdown{display:inline-block;position:relative}.dropdown-content{animation:fadeIn .2s ease-out;background-color:#fff;border-radius:8px;box-shadow:0 8px 24px #00000026;display:none;min-width:180px;overflow:hidden;position:absolute;right:0;z-index:100}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.dropdown-content button{background:none;border:none;color:#3a3a3a;cursor:pointer;display:block;font-size:14px;padding:12px 16px;text-align:left;text-decoration:none;transition:background-color .2s;width:100%}.dropdown-content button:hover{background-color:#f5f8ff;color:#4285f4}.dropdown:hover .dropdown-content{display:block}.status-cards-container{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin-top:20px}.status-card{background-color:#fff;border:1px solid #eaeaea;border-radius:12px;box-shadow:0 4px 12px #00000014;cursor:pointer;overflow:hidden;transition:transform .3s,box-shadow .3s}.status-card:hover{box-shadow:0 8px 24px #0000001f;transform:translateY(-5px)}.status-card-error{border:2px solid #ea4335}.status-card-header{align-items:center;background-color:#f8f9fa;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:16px 20px}.device-serial{color:#3a3a3a;font-size:1.1em;font-weight:600;margin:0;word-break:break-all}.status-indicator{border-radius:50%;display:inline-block;height:14px;margin-left:10px;width:14px}.status-green{background-color:#34a853}.status-red{background-color:#ea4335}.status-orange{background-color:#fbbc05}.status-blue{background-color:#4285f4}.status-gray{background-color:#9aa0a6}.status-card-body{padding:20px}.status-info{line-height:1.5;margin-bottom:12px}.status-label{color:#5f6368;font-weight:600;margin-right:8px}.status-value{color:#3a3a3a}.status-card-footer{background-color:#f8f9fa;border-top:1px solid #eee;display:flex;justify-content:space-around;padding:15px}.status-error-badge{background-color:#fce8e6;border-radius:50px;color:#ea4335;display:inline-block;font-size:13px;font-weight:600;margin-top:15px;padding:8px 12px}.status-error-badge span{align-items:center;display:flex;gap:5px}.battery-good{color:#34a853;font-weight:600}.battery-medium{color:#fbbc05;font-weight:600}.battery-low{color:#ea4335;font-weight:600}.device-detail-modal{align-items:center;animation:fadeIn .3s ease-out;background-color:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.device-detail-content{animation:popIn .3s ease-out;background-color:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-height:90vh;max-width:90%;overflow-y:auto;width:800px}@keyframes popIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.detail-header{align-items:center;background-color:#fff;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:20px 25px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.detail-header h3{color:#3a3a3a;font-weight:600;margin:0}.btn-close-detail{align-items:center;background:none;border:none;border-radius:50%;color:#5f6368;cursor:pointer;display:flex;font-size:28px;height:40px;justify-content:center;transition:color .3s;width:40px}.btn-close-detail:hover{background-color:#f5f5f5;color:#ea4335}.device-detail-info{padding:25px}.detail-section{background-color:#f9f9fc;border-radius:10px;margin-bottom:30px;padding:20px}.detail-section h4{border-bottom:1px solid #eee;color:#3a3a3a;font-weight:600;margin-bottom:15px;margin-top:0;padding-bottom:10px}.detail-table{border-collapse:collapse;width:100%}.detail-table td{border-bottom:1px solid #f0f0f0;padding:10px 15px}.detail-table td:first-child{color:#5f6368;font-weight:600;width:40%}.error-section{background-color:#fce8e6;border-left:4px solid #ea4335;border-radius:10px;padding:20px}.error-list{color:#ea4335}.error-item{margin-top:8px}.detail-actions{border-top:1px solid #eee;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-around;margin-top:30px;padding-top:20px}.text-danger{color:#ea4335;font-weight:600}@media (max-width:768px){.server-control{align-items:flex-start;flex-direction:column;gap:20px}.server-status{margin-bottom:10px}.view-controls{align-items:flex-start;flex-direction:column;gap:20px}.refresh-control{justify-content:space-between;width:100%}.device-actions{flex-wrap:wrap}.dropdown-content{left:0;right:auto}.status-cards-container{grid-template-columns:1fr}.device-detail-content{max-height:95vh;max-width:95%;width:95%}.detail-actions{flex-wrap:wrap;gap:15px}.detail-actions button{flex:1 0 40%}}.api-url-info{background:#f5f5f5;border-radius:50px;color:#5f6368;font-family:monospace;font-size:.85em;margin-left:15px;max-width:300px;overflow:hidden;padding:5px 12px;text-overflow:ellipsis;white-space:nowrap}.parking-record{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin:2rem auto;max-width:800px;padding:2rem}.record-header{margin-bottom:2rem;position:relative}.back-btn,.record-header{align-items:center;display:flex}.back-btn{background:none;border:none;color:#666;cursor:pointer;gap:.5rem;left:0;padding:.5rem 1rem;position:absolute}.back-btn:hover{color:#333}.record-header h2{color:#333;margin:0;text-align:center;width:100%}.record-content{display:flex;flex-direction:column;gap:2rem}.location-section,.payment-section,.status-section,.time-section,.vehicle-section{background:#f8f9fa;border-radius:8px;padding:1.5rem}.location-section h3{color:#333;margin:0 0 1rem}.location-section p{color:#666;font-size:1.1rem;margin:0}.status-section,.time-section{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.status-item,.time-item{display:flex;flex-direction:column;gap:.5rem}.status-item span:first-child,.time-item span:first-child{color:#666;font-size:.9rem}.status-item span:last-child,.time-item span:last-child{color:#333;font-size:1.1rem;font-weight:500}.status.active{color:#2196f3}.status.completed{color:#4caf50}.status.cancelled{color:#f44336}.payment-status.pending{color:#ff9800}.payment-status.paid{color:#4caf50}.payment-status.refunded{color:#9e9e9e}.payment-section{display:flex;flex-direction:column;gap:1rem}.payment-item{align-items:center;display:flex;justify-content:space-between}.payment-item .amount{color:#f44336;font-size:1.5rem;font-weight:700}.payment-btn,.review-btn{border:none;border-radius:4px;cursor:pointer;font-size:1.1rem;padding:1rem;transition:background-color .3s;width:100%}.payment-btn{background-color:#f44336;color:#fff}.payment-btn:hover{background-color:#e53935}.review-btn{background-color:#4caf50;color:#fff}.review-btn:hover{background-color:#43a047}.vehicle-section{align-items:center;display:flex;justify-content:space-between}.vehicle-section span:first-child{color:#666}.vehicle-section span:last-child{color:#333;font-size:1.1rem;font-weight:500}.loading{color:#666}.error,.loading{padding:2rem;text-align:center}.error{color:#f44336}@media (max-width:600px){.parking-record{margin:1rem;padding:1rem}.status-section,.time-section{grid-template-columns:1fr}}.contact-us-container{margin:0 auto;max-width:1200px;padding:24px}.page-title{color:#1890ff;margin-bottom:32px!important;text-align:center}.about-card,.contact-card,.info-card,.pricing-card{border-radius:8px;box-shadow:0 2px 8px #0000001a;height:100%}.about-card .ant-card-head,.contact-card .ant-card-head,.info-card .ant-card-head,.pricing-card .ant-card-head{background-color:#f5f5f5;border-bottom:2px solid #1890ff}.ant-list-item{padding:16px!important}.ant-list-item .anticon{color:#1890ff;margin-right:10px}@media (max-width:768px){.contact-us-container{padding:16px}}@media screen and (max-width:768px){.contact-us-container{padding:16px}.page-title{font-size:24px;margin-bottom:24px!important}.ant-card{margin-bottom:16px}.ant-card-head{padding:12px}.ant-card-head-title{font-size:16px}.ant-card-body{padding:16px}.ant-list-item{font-size:14px;padding:12px!important}.ant-list-item .anticon{font-size:18px}}@media screen and (max-width:375px){.contact-us-container{padding:12px}.page-title{font-size:20px;margin-bottom:20px!important}.ant-card-head{padding:10px}.ant-card-head-title{font-size:14px}.ant-card-body{padding:12px}.ant-list-item{font-size:12px;padding:8px!important}.ant-list-item .anticon{font-size:16px}}.payment-setup-container{align-items:center;background-color:#f7fafc;display:flex;justify-content:center;min-height:100vh;padding:20px}.payment-setup-form{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;max-width:480px;padding:40px;width:100%}.payment-setup-form h2{color:#2d3748;font-size:24px;font-weight:600;margin-bottom:24px;text-align:center}.setup-description{color:#4a5568;line-height:1.6;margin-bottom:32px;text-align:center}.error-message{background-color:#fff5f5;border:1px solid #feb2b2;border-radius:8px;color:#c53030;padding:12px;text-align:center}.error-message,.payment-methods{margin-bottom:24px}.payment-method-item{border:2px solid #e2e8f0;border-radius:8px;cursor:pointer;padding:16px;transition:all .2s ease}.payment-method-item.active{background-color:#ebf8ff;border-color:#4299e1}.payment-method-header{align-items:center;display:flex;gap:12px;margin-bottom:12px}.payment-icon{height:24px;object-fit:contain;width:24px}.card-brands{display:flex;gap:8px;margin-top:8px}.card-brands img{height:20px;object-fit:contain}.card-element-container{background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:24px;padding:16px}.secure-badge{align-items:center;color:#718096;display:flex;font-size:14px;gap:8px;justify-content:center;margin-bottom:24px}.secure-badge img{height:24px;object-fit:contain}.submit-button{background-color:#4299e1;border-radius:8px;padding:14px;transition:all .2s ease}.submit-button:hover:not(:disabled){background-color:#3182ce;transform:translateY(-1px)}.submit-button:disabled{background-color:#a0aec0}.submit-button.processing{color:#0000;position:relative}.submit-button.processing:after{animation:spin .8s linear infinite;border:2px solid #fff3;border-radius:50%;border-top-color:#fff;content:"";height:20px;left:50%;margin:-10px 0 0 -10px;position:absolute;top:50%;width:20px}@keyframes spin{to{transform:rotate(1turn)}}.top-up-container{align-items:center;background-color:#f5f5f5;display:flex;justify-content:center;min-height:calc(100vh - 60px);padding:20px}.top-up-card{background-color:#fff;border-radius:10px;box-shadow:0 4px 12px #0000001a;max-width:500px;padding:30px;width:100%}.top-up-card h2{color:#333;margin-bottom:25px;text-align:center}.payment-method-info{background-color:#f9f9f9;border:1px solid #eee;border-radius:8px;margin-bottom:25px;padding:15px}.card-info{align-items:center;display:flex}.card-brand-icon{height:30px;margin-right:10px;object-fit:contain;width:40px}.amount-input-container{margin-bottom:20px}.amount-input-container label{color:#555;display:block;font-weight:500;margin-bottom:8px}.amount-input-wrapper{align-items:center;display:flex;position:relative}.currency-symbol{color:#555;font-size:18px;left:15px;position:absolute}.amount-input{border:1px solid #ddd;border-radius:6px;font-size:18px;padding:12px 15px 12px 30px;transition:border-color .3s;width:100%}.amount-input:focus{border-color:#4a90e2;outline:none}.preset-amounts{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(4,1fr);margin-bottom:25px}.preset-amount-button{background-color:#f0f0f0;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-weight:500;padding:10px;transition:all .2s}.preset-amount-button:hover:not(:disabled){background-color:#e0e0e0}.preset-amount-button.active{background-color:#4a90e2;border-color:#4a90e2;color:#fff}.preset-amount-button:disabled{cursor:not-allowed;opacity:.5;text-decoration:line-through}.error-message{color:#e53935;font-size:14px;margin-bottom:15px}.submit-button{background-color:#4a90e2;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;padding:12px;transition:background-color .3s;width:100%}.submit-button:hover:not(:disabled){background-color:#3a7bc8}.submit-button:disabled{background-color:#a0a0a0;cursor:not-allowed}.submit-button.loading{background-color:#a0a0a0;cursor:wait}.bind-payment-button{background-color:#4caf50;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;padding:12px;transition:background-color .3s;width:100%}.bind-payment-button:hover{background-color:#43a047}.gift-promotion{background-color:#fff8e1;border:1px solid #ffecb3;border-radius:8px;margin-bottom:20px;padding:15px}.gift-banner{align-items:center;display:flex;margin-bottom:8px}.gift-icon{font-size:24px;margin-right:10px}.gift-text{color:#ff6f00;font-size:16px;font-weight:700}.gift-note{color:#bf360c;font-size:14px;margin:0}.minimum-amount-notice{background-color:#e8f5e9;border-left:4px solid #4caf50;border-radius:6px;margin-bottom:20px;padding:10px 15px}.minimum-amount-notice p{color:#2e7d32;font-weight:500;margin:0}.merchant-info{background-color:#f8f9fa;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:20px;padding:15px}.merchant-header{align-items:center;display:flex;margin-bottom:10px}.merchant-logo{height:32px;margin-right:10px;width:32px}.merchant-header h3{color:#2d3748;font-size:16px;margin:0}.merchant-description{color:#4a5568;font-size:14px;line-height:1.5;margin-bottom:10px}.merchant-trust-badges{display:flex;gap:15px}.secure-badge,.support-badge{align-items:center;color:#4a5568;display:flex;font-size:12px}.secure-badge i,.support-badge i{color:#4299e1;margin-right:5px}
/*# sourceMappingURL=main.e4bf7b95.css.map*/