.header[data-v-bfed6bd8]{background:#fff;border-bottom:1px solid #eee;padding:0 20px;height:64px;display:flex;align-items:center;position:sticky;top:0;z-index:1000}.header .container[data-v-bfed6bd8]{width:100%;max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header .logo[data-v-bfed6bd8]{font-size:24px;font-weight:700;color:#f60;margin-right:40px}.header .logo a[data-v-bfed6bd8]{text-decoration:none;color:inherit}.header .nav[data-v-bfed6bd8]{display:flex;gap:20px;flex:1}.header .nav a[data-v-bfed6bd8]{color:#333;font-size:16px}.header .nav a[data-v-bfed6bd8]:hover{color:#f60}.header .nav a.router-link-active[data-v-bfed6bd8]{color:#f60;font-weight:500}.header .actions[data-v-bfed6bd8]{display:flex;gap:20px;align-items:center;font-size:14px}.header .actions .el-dropdown-link[data-v-bfed6bd8]{cursor:pointer;color:#666}.header .actions a[data-v-bfed6bd8]{color:#666}.header .actions a[data-v-bfed6bd8]:hover{color:#f60}@media(max-width:768px){.header .nav[data-v-bfed6bd8]{display:none}}.footer[data-v-6c3aa4aa]{background:#333;color:#fff;padding:40px 0;text-align:center;margin-top:auto}.footer .footer-links[data-v-6c3aa4aa]{margin-bottom:20px}.footer .footer-links a[data-v-6c3aa4aa]{color:#ccc;text-decoration:none;margin:0 10px;font-size:14px;transition:color .3s}.footer .footer-links a[data-v-6c3aa4aa]:hover{color:#fff}.footer .footer-links .divider[data-v-6c3aa4aa]{color:#666}.footer p[data-v-6c3aa4aa]{margin:5px 0;color:#999;font-size:13px}.footer p.subtitle[data-v-6c3aa4aa]{font-size:12px;color:#666}.listing-card[data-v-22fa33b8]{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);cursor:pointer;transition:transform .2s}.listing-card[data-v-22fa33b8]:hover{transform:translateY(-5px)}.listing-card .image-wrapper[data-v-22fa33b8]{position:relative;height:200px}.listing-card .image-wrapper img[data-v-22fa33b8]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.listing-card .image-wrapper .price[data-v-22fa33b8]{position:absolute;bottom:10px;left:10px;background:rgba(0,0,0,.7);color:#fff;padding:4px 8px;border-radius:4px;font-weight:700}.listing-card .image-wrapper .no-image[data-v-22fa33b8]{width:100%;height:100%;background:#f5f7fa;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.listing-card .image-wrapper .no-image i[data-v-22fa33b8]{font-size:32px;margin-bottom:8px}.listing-card .image-wrapper .no-image span[data-v-22fa33b8]{font-size:14px}.listing-card .content[data-v-22fa33b8]{padding:15px}.listing-card .content .title[data-v-22fa33b8]{font-size:18px;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listing-card .content .info[data-v-22fa33b8]{color:#666;font-size:14px;margin-bottom:5px}.listing-card .content .date[data-v-22fa33b8]{color:#999;font-size:12px;margin-bottom:10px}.listing-card .content .tags[data-v-22fa33b8]{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}.listing-card .content .tags .tag[data-v-22fa33b8]{background:#f0f9eb;color:#67c23a;font-size:12px;padding:2px 6px;border-radius:4px}.listing-card .content .actions[data-v-22fa33b8]{text-align:right}.listing-card .content .actions .book-btn[data-v-22fa33b8]{margin-right:10px}[data-v-22fa33b8] .booking-dialog{max-width:400px;border-radius:8px}[data-v-22fa33b8] .booking-dialog .el-dialog__header{text-align:center;font-weight:700;border-bottom:1px solid #eee}[data-v-22fa33b8] .booking-dialog .el-dialog__body{padding:20px}[data-v-22fa33b8] .booking-dialog .booking-form .form-item{margin-bottom:15px}[data-v-22fa33b8] .booking-dialog .booking-form .gender-select{display:flex;align-items:center;justify-content:space-between;border:1px solid #dcdfe6;border-radius:4px;padding:0 15px;height:40px}[data-v-22fa33b8] .booking-dialog .booking-form .gender-select label{color:#606266}[data-v-22fa33b8] .booking-dialog .booking-form .terms{font-size:12px;color:#666;margin-bottom:20px;line-height:1.5}[data-v-22fa33b8] .booking-dialog .booking-form .terms .link{color:#409eff;text-decoration:none}.user-center[data-v-122cf58c]{background-color:#f3f4f6;min-height:100vh;padding-bottom:40px}.dashboard[data-v-122cf58c]{display:flex;margin-top:30px;margin-bottom:50px;background:#fff;border-radius:12px;box-shadow:0 10px 25px -5px rgba(0,0,0,.05),0 8px 10px -6px rgba(0,0,0,.01);overflow:hidden;border:1px solid #f3f4f6;min-height:700px}.sidebar[data-v-122cf58c]{width:260px;background-color:#fff;border-right:1px solid #f3f4f6;display:flex;flex-direction:column;padding:20px 0}.sidebar .user-profile-summary[data-v-122cf58c]{text-align:center;padding:20px 15px 30px;border-bottom:1px solid #f3f4f6;margin-bottom:10px}.sidebar .user-profile-summary .user-avatar[data-v-122cf58c]{background-color:#409eff;margin-bottom:12px;box-shadow:0 4px 6px -1px rgba(64,158,255,.4)}.sidebar .user-profile-summary .user-name[data-v-122cf58c]{font-weight:600;font-size:16px;color:#111827;margin-bottom:4px}.sidebar .user-profile-summary .user-email[data-v-122cf58c]{color:#6b7280;font-size:13px}.sidebar .el-menu[data-v-122cf58c]{border-right:none;background-color:transparent}.sidebar .el-menu-item[data-v-122cf58c]{height:50px;line-height:50px;margin:4px 12px;border-radius:8px;color:#4b5563;font-size:14px}.sidebar .el-menu-item i[data-v-122cf58c]{color:#9ca3af;margin-right:10px}.sidebar .el-menu-item[data-v-122cf58c]:focus,.sidebar .el-menu-item[data-v-122cf58c]:hover{background-color:#f9fafb;color:#111827}.sidebar .el-menu-item:focus i[data-v-122cf58c],.sidebar .el-menu-item:hover i[data-v-122cf58c]{color:#4b5563}.sidebar .el-menu-item.is-active[data-v-122cf58c]{background-color:#eff6ff;color:#2563eb;font-weight:500}.sidebar .el-menu-item.is-active i[data-v-122cf58c]{color:#2563eb}.content[data-v-122cf58c]{flex:1;padding:40px;background-color:#fff;overflow-y:auto}.section-header[data-v-122cf58c]{margin-bottom:30px}.section-header h2[data-v-122cf58c]{font-size:24px;font-weight:700;color:#111827;margin-bottom:8px}.section-header .section-desc[data-v-122cf58c]{color:#6b7280;font-size:14px}.form-card[data-v-122cf58c]{border-radius:12px;border:1px solid #e5e7eb;max-width:600px}.form-card .stylish-form[data-v-122cf58c]{padding:10px}.form-card .submit-btn[data-v-122cf58c]{width:100%;border-radius:8px;padding:12px;font-weight:500;letter-spacing:.5px;margin-top:10px}.certification-list[data-v-122cf58c]{display:flex;flex-direction:column;gap:16px}.certification-item[data-v-122cf58c]{display:flex;align-items:center;padding:24px;border:1px solid #e5e7eb;border-radius:12px;background-color:#fff;transition:all .3s ease}.certification-item[data-v-122cf58c]:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);border-color:#d1d5db;transform:translateY(-2px)}.certification-item .status-icon[data-v-122cf58c]{width:60px;display:flex;justify-content:center;align-items:center}.certification-item .status-icon .icon-circle[data-v-122cf58c]{width:48px;height:48px;border-radius:50%;display:flex;justify-content:center;align-items:center;font-size:24px}.certification-item .status-icon .icon-circle.success[data-v-122cf58c]{background-color:#ecfdf5;color:#10b981}.certification-item .status-icon .icon-circle.pending[data-v-122cf58c]{background-color:#f3f4f6;color:#9ca3af}.certification-item .item-content[data-v-122cf58c]{flex:1;padding:0 20px}.certification-item .item-content h3[data-v-122cf58c]{font-size:16px;font-weight:600;color:#111827;margin-bottom:4px}.certification-item .item-content p[data-v-122cf58c]{color:#6b7280;font-size:14px;line-height:1.5}.certification-item .item-content p.email-display[data-v-122cf58c]{font-family:monospace;background:#f3f4f6;display:inline-block;padding:2px 8px;border-radius:4px;margin:4px 0 8px;color:#374151}.appointments-layout[data-v-122cf58c]{display:flex;gap:24px;align-items:flex-start}@media(max-width:900px){.appointments-layout[data-v-122cf58c]{flex-direction:column}}.calendar-section[data-v-122cf58c]{flex:3;min-width:300px;background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.05)}.calendar-section[data-v-122cf58c] .el-calendar{background:transparent}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar__header{padding:15px;border-bottom:1px solid #f3f4f6}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar__header .el-calendar__title{font-weight:600;color:#374151}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar__body{padding:10px}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar-table td{border:none;padding:2px}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar-table td.is-selected .custom-date-cell{background:#eff6ff;color:#2563eb;border-color:#bfdbfe}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar-table td.is-today .custom-date-cell{color:#2563eb;font-weight:700}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar-table .el-calendar-day{height:auto;padding:0}.calendar-section[data-v-122cf58c] .el-calendar .el-calendar-table .el-calendar-day:hover{background-color:transparent}.custom-date-cell[data-v-122cf58c]{height:40px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;border:1px solid transparent;transition:all .2s;position:relative}.custom-date-cell[data-v-122cf58c]:hover{background:#f9fafb}.custom-date-cell .day-number[data-v-122cf58c]{font-size:14px;line-height:1}.custom-date-cell .appointment-dot[data-v-122cf58c]{width:6px;height:6px;background-color:#f56c6c;border-radius:50%;margin-top:4px}.custom-date-cell.has-appointment[data-v-122cf58c]{font-weight:600}.list-section[data-v-122cf58c]{flex:7;width:100%}.list-section .list-header[data-v-122cf58c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #e5e7eb}.list-section .list-header h3[data-v-122cf58c]{font-size:18px;font-weight:600;color:#111827}.appointment-card-item[data-v-122cf58c]{display:flex;background:#fff;border-radius:12px;padding:20px;margin-bottom:15px;border:1px solid #e5e7eb;transition:all .3s ease}.appointment-card-item[data-v-122cf58c]:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1);transform:translateY(-2px);border-color:#d1d5db}.appointment-card-item .apt-time[data-v-122cf58c]{flex:0 0 100px;font-size:18px;font-weight:600;color:#2563eb;display:flex;align-items:flex-start;padding-top:2px}.appointment-card-item .apt-time i[data-v-122cf58c]{margin-right:6px;margin-top:4px;font-size:16px}.appointment-card-item .apt-content[data-v-122cf58c]{flex:1;padding-right:20px}.appointment-card-item .apt-content h4[data-v-122cf58c]{font-size:16px;font-weight:600;color:#111827;margin-bottom:8px}.appointment-card-item .apt-content .apt-info p[data-v-122cf58c]{color:#6b7280;font-size:14px;margin-bottom:4px;display:flex;align-items:center}.appointment-card-item .apt-content .apt-info p i[data-v-122cf58c]{width:20px;color:#9ca3af}.appointment-card-item .apt-status[data-v-122cf58c]{display:flex;align-items:flex-start}@media(max-width:600px){.appointment-card-item[data-v-122cf58c]{flex-direction:column}.appointment-card-item .apt-time[data-v-122cf58c]{margin-bottom:10px;flex:none}.appointment-card-item .apt-status[data-v-122cf58c]{margin-top:10px;justify-content:flex-end}}.empty-state-mini[data-v-122cf58c]{text-align:center;padding:40px 20px;background:#f9fafb;border-radius:12px;border:1px dashed #d1d5db}.empty-state-mini .empty-icon-wrapper[data-v-122cf58c]{width:60px;height:60px;background:#e5e7eb;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 15px}.empty-state-mini .empty-icon-wrapper i[data-v-122cf58c]{font-size:30px;color:#9ca3af}.empty-state-mini p[data-v-122cf58c]{color:#374151;font-weight:500;margin-bottom:4px}.empty-state-mini .sub-text[data-v-122cf58c]{font-size:13px;color:#9ca3af}.favorites-grid[data-v-122cf58c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px}.empty-state[data-v-122cf58c]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;text-align:center}.empty-state .empty-icon-bg[data-v-122cf58c]{width:80px;height:80px;background-color:#f3f4f6;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:20px}.empty-state .empty-icon-bg i[data-v-122cf58c]{font-size:32px;color:#9ca3af}.empty-state h3[data-v-122cf58c]{font-size:18px;font-weight:600;color:#374151;margin-bottom:8px}.empty-state p[data-v-122cf58c]{color:#6b7280;margin-bottom:24px}.table-card[data-v-122cf58c]{border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.table-card .table-title[data-v-122cf58c]{font-weight:500;color:#111827}.table-card .price-text[data-v-122cf58c]{font-weight:600;color:#111827}.table-card .date-text[data-v-122cf58c]{color:#6b7280;font-size:13px}.table-card .date-range[data-v-122cf58c]{display:flex;align-items:center;color:#4b5563;font-size:13px}.table-card .date-range i[data-v-122cf58c]{margin-right:6px;color:#9ca3af}.table-card .action-btn[data-v-122cf58c]{font-weight:500}.table-card .action-btn[data-v-122cf58c]:hover{text-decoration:underline}.timeline-container[data-v-122cf58c]{padding:10px 0}.appointment-card[data-v-122cf58c]{border-radius:8px;border:1px solid #e5e7eb}.appointment-card .appointment-content h4[data-v-122cf58c]{font-size:16px;font-weight:600;color:#111827;margin-bottom:12px}.appointment-card .appointment-content p[data-v-122cf58c]{margin:8px 0;color:#4b5563;font-size:14px;display:flex;align-items:center}.appointment-card .appointment-content p i[data-v-122cf58c]{margin-right:8px;color:#9ca3af}.appointment-card .appointment-content .text-warning[data-v-122cf58c]{color:#f59e0b;font-weight:500}.fade-in[data-v-122cf58c]{animation:fadeIn-122cf58c .4s ease-out}@keyframes fadeIn-122cf58c{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.dashboard[data-v-122cf58c]{flex-direction:column;margin-top:15px}.sidebar[data-v-122cf58c]{width:100%;border-right:none;border-bottom:1px solid #f3f4f6}.content[data-v-122cf58c]{padding:20px}}.contract-detail-dialog,.quote-detail-dialog{border-radius:16px;overflow:hidden}.contract-detail-dialog .el-dialog__header,.quote-detail-dialog .el-dialog__header{padding:20px 24px;border-bottom:1px solid #f3f4f6}.contract-detail-dialog .el-dialog__header .dialog-title,.quote-detail-dialog .el-dialog__header .dialog-title{font-size:18px;font-weight:600;color:#111827}.contract-detail-dialog .el-dialog__body,.quote-detail-dialog .el-dialog__body{padding:24px}.contract-detail-dialog .el-dialog__footer,.quote-detail-dialog .el-dialog__footer{padding:16px 24px;border-top:1px solid #f3f4f6;background-color:#f9fafb}.contract-detail-content .detail-header,.quote-detail-content .detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.contract-detail-content .detail-header .quote-id,.quote-detail-content .detail-header .quote-id{font-size:14px;color:#6b7280;font-family:monospace;background:#f3f4f6;padding:4px 8px;border-radius:4px}.contract-detail-content .info-card,.quote-detail-content .info-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.contract-detail-content .info-card .card-section,.quote-detail-content .info-card .card-section{padding:20px}.contract-detail-content .info-card .card-section h3,.quote-detail-content .info-card .card-section h3{font-size:16px;font-weight:600;color:#111827;margin-bottom:16px;display:flex;align-items:center}.contract-detail-content .info-card .card-section h3 i,.quote-detail-content .info-card .card-section h3 i{margin-right:8px;color:#2563eb}.contract-detail-content .info-card .card-section .info-row,.quote-detail-content .info-card .card-section .info-row{display:flex;margin-bottom:12px;font-size:14px}.contract-detail-content .info-card .card-section .info-row:last-child,.quote-detail-content .info-card .card-section .info-row:last-child{margin-bottom:0}.contract-detail-content .info-card .card-section .info-row .label,.quote-detail-content .info-card .card-section .info-row .label{width:80px;color:#6b7280;flex-shrink:0}.contract-detail-content .info-card .card-section .info-row .value,.quote-detail-content .info-card .card-section .info-row .value{color:#374151;font-weight:500}.contract-detail-content .info-card .card-section .info-row .value.highlight,.quote-detail-content .info-card .card-section .info-row .value.highlight{color:#111827;font-weight:600;font-size:15px}.contract-detail-content .info-card .card-section .info-row .value.price,.quote-detail-content .info-card .card-section .info-row .value.price{color:#2563eb;font-weight:600;font-size:16px}.contract-detail-content .info-card .card-section .qr-code-placeholder,.quote-detail-content .info-card .card-section .qr-code-placeholder{margin-top:20px;background:#f9fafb;border:2px dashed #e5e7eb;border-radius:8px;height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center}.contract-detail-content .info-card .card-section .qr-code-placeholder .qr-text,.quote-detail-content .info-card .card-section .qr-code-placeholder .qr-text{font-size:14px;font-weight:600;color:#374151;margin-bottom:8px}.contract-detail-content .info-card .card-section .qr-code-placeholder .qr-subtext,.quote-detail-content .info-card .card-section .qr-code-placeholder .qr-subtext{font-size:12px;color:#9ca3af;margin-top:8px}.contract-detail-content .info-card .card-section .appointment-status-box,.quote-detail-content .info-card .card-section .appointment-status-box{margin-top:20px;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;padding:16px;display:flex;align-items:center}.contract-detail-content .info-card .card-section .appointment-status-box .status-icon,.quote-detail-content .info-card .card-section .appointment-status-box .status-icon{width:40px;height:40px;background:#10b981;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px;flex-shrink:0}.contract-detail-content .info-card .card-section .appointment-status-box .status-icon i,.quote-detail-content .info-card .card-section .appointment-status-box .status-icon i{color:#fff;font-size:20px;font-weight:700}.contract-detail-content .info-card .card-section .appointment-status-box .status-content h4,.quote-detail-content .info-card .card-section .appointment-status-box .status-content h4{font-size:15px;font-weight:600;color:#065f46;margin-bottom:4px}.contract-detail-content .info-card .card-section .appointment-status-box .status-content .time,.quote-detail-content .info-card .card-section .appointment-status-box .status-content .time{font-size:14px;color:#047857;font-weight:500;margin-bottom:2px}.contract-detail-content .info-card .card-section .appointment-status-box .status-content .location,.quote-detail-content .info-card .card-section .appointment-status-box .status-content .location{font-size:12px;color:#059669}.contract-detail-content .info-card .card-section .appointment-status-box .status-content .location i,.quote-detail-content .info-card .card-section .appointment-status-box .status-content .location i{margin-right:4px}.contract-detail-content .info-card .card-section .step-list,.quote-detail-content .info-card .card-section .step-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}.contract-detail-content .info-card .card-section .step-item,.quote-detail-content .info-card .card-section .step-item{display:flex;align-items:flex-start;padding:8px 10px;border-radius:8px;background:#f9fafb;border:1px dashed #e5e7eb}.contract-detail-content .info-card .card-section .step-item.active,.quote-detail-content .info-card .card-section .step-item.active{background:#eff6ff;border-style:solid;border-color:#bfdbfe}.contract-detail-content .info-card .card-section .step-item .step-index,.quote-detail-content .info-card .card-section .step-item .step-index{width:24px;height:24px;border-radius:999px;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#374151;margin-right:10px}.contract-detail-content .info-card .card-section .step-item .step-content .step-title,.quote-detail-content .info-card .card-section .step-item .step-content .step-title{font-size:14px;font-weight:600;color:#111827}.contract-detail-content .info-card .card-section .step-item .step-content .step-desc,.quote-detail-content .info-card .card-section .step-item .step-content .step-desc{font-size:12px;color:#6b7280;margin-top:2px}.contract-detail-content .info-card .card-section .hint,.quote-detail-content .info-card .card-section .hint{margin-top:10px;font-size:12px;color:#6b7280}.contract-detail-content .info-card .divider,.quote-detail-content .info-card .divider{height:1px;background:#e5e7eb;margin:0 20px}@media print{.v-modal,body>:not(.el-dialog__wrapper){display:none!important}.el-dialog__wrapper{position:static!important;display:block!important;width:100%!important;height:auto!important;z-index:auto!important;background:#fff!important}.el-dialog{box-shadow:none!important;margin:20px auto!important;width:600px!important;max-width:100%!important;transform:none!important;left:auto!important;top:auto!important;border:1px solid #ccc!important}.el-dialog__footer,.el-dialog__headerbtn{display:none!important}.contract-detail-dialog,.quote-detail-dialog{display:block!important;border:none!important}.contract-detail-dialog .el-dialog__header,.quote-detail-dialog .el-dialog__header{border-bottom:2px solid #000!important}.contract-detail-dialog .info-card,.quote-detail-dialog .info-card{border:1px solid #000!important}.contract-detail-dialog .divider,.quote-detail-dialog .divider{background:#000!important}}