.app-skeleton{position:fixed;inset:0;z-index:9999;background:var(--hw-bg,#f8fafc);transition:opacity .35s ease}.app-skeleton[style*="display: none"]{pointer-events:none}.skeleton-header{height:64px;background:linear-gradient(90deg,#e2e8f0,#f1f5f9 50%,#e2e8f0);background-size:200% 100%;animation:skeleton-shine 1.2s ease-in-out infinite}.skeleton-body{max-width:1200px;margin:0 auto;padding:24px}.skeleton-hero{height:280px;border-radius:16px;margin-bottom:32px}.skeleton-cards{display:flex;gap:20px;margin-top:24px}.skeleton-card{flex:1;height:120px;border-radius:12px}.page-fade-enter-active{transition:opacity .3s ease}.page-fade-enter{opacity:0}:root{--hw-primary:#007dff;--hw-primary-hover:#39f;--hw-primary-light:rgba(0,125,255,.08);--hw-dark:#1e293b;--hw-dark-bg:#0f172a;--hw-text:#1e293b;--hw-text-secondary:#64748b;--hw-text-muted:#94a3b8;--hw-border:#e2e8f0;--hw-bg:#f8fafc;--hw-bg-card:#fff;--hw-dark-text:#f8fafc;--hw-dark-text-secondary:#94a3b8;--hw-dark-text-muted:#64748b;--hw-dark-border:hsla(0,0%,100%,.12);--hw-dark-border-light:hsla(0,0%,100%,.08);--hw-radius-sm:6px;--hw-radius:8px;--hw-radius-lg:12px;--hw-radius-xl:16px;--hw-shadow:0 2px 12px rgba(0,0,0,.06);--hw-shadow-hover:0 8px 28px rgba(0,0,0,.1);--hw-shadow-modal:0 12px 48px rgba(0,0,0,.12);--hw-dark-shadow:0 4px 20px rgba(0,0,0,.3);--hw-dark-shadow-hover:0 10px 25px rgba(0,0,0,.4);--hw-dark-shadow-modal:0 24px 48px rgba(0,0,0,.5);--hw-duration:0.25s;--hw-duration-slow:0.35s;--header-bg:linear-gradient(135deg,#0f172a,#1e293b 50%,#0f172a);--header-bg-solid:linear-gradient(135deg,#0f172a,#1e293b);--header-height:64px;--sidebar-bg:#0f172a;--sidebar-text:#94a3b8;--sidebar-active:#007dff;--card-shadow:var(--hw-shadow);--card-shadow-hover:var(--hw-shadow-hover);--card-radius:var(--hw-radius-lg);--primary:var(--hw-primary);--primary-light:var(--hw-primary-hover);--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--text-primary:var(--hw-text);--text-secondary:var(--hw-text-secondary);--border-color:var(--hw-border)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,-apple-system,sans-serif;background:var(--hw-bg);color:#334155;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app,body{min-height:100vh}.hw-clickable{transition:transform var(--hw-duration) ease,box-shadow var(--hw-duration) ease,color var(--hw-duration) ease;will-change:transform}.hw-clickable:hover{transform:scale(1.02);box-shadow:var(--hw-shadow-hover)}.hw-clickable:active{transform:scale(.98)}.reveal-item{opacity:0;transform:translateY(24px);transition:opacity .5s ease,transform .5s ease}.reveal-item.reveal-in{opacity:1;transform:translateY(0)}.page-card{background:var(--hw-bg-card);border-radius:var(--hw-radius-lg);box-shadow:var(--hw-shadow);padding:24px;margin-bottom:20px;transition:box-shadow var(--hw-duration) ease;border:1px solid var(--hw-border)}.page-card:hover{box-shadow:var(--hw-shadow-hover)}.page-card h3{font-size:18px;font-weight:600;color:var(--hw-text);margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--hw-border);letter-spacing:.3px}.stat-card{background:var(--hw-bg-card);border-radius:var(--hw-radius-lg);padding:22px;box-shadow:var(--hw-shadow);border:1px solid var(--hw-border);transition:transform var(--hw-duration) ease,box-shadow var(--hw-duration) ease,border-color var(--hw-duration) ease}.stat-card:hover{transform:translateY(-4px);box-shadow:var(--hw-shadow-hover);border-color:var(--hw-primary-light)}.stat-card .label{font-size:13px;color:var(--hw-text-secondary);margin-bottom:10px;font-weight:500}.stat-card .value{font-size:28px;font-weight:700;color:var(--hw-text);letter-spacing:-.5px}.frontend-table-container .el-table{border-radius:var(--hw-radius);overflow:hidden;font-size:14px}.frontend-table-container .el-table th{background:#0c75df!important;color:#475569;font-weight:600;font-size:13px;padding:14px 0;letter-spacing:.2px}.frontend-table-container .el-table td{padding:14px 0}.frontend-table-container .el-table .el-table__row:hover td{background:#f1f5f9!important}.frontend-table-container .el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafbfc}.frontend-table-container .el-table--striped .el-table__body tr.el-table__row--striped:hover td{background:#f1f5f9!important}.frontend-table-container .el-pagination{margin-top:20px;justify-content:flex-end}.dark-theme .frontend-table-container .el-table,.dark-theme .frontend-table-container .el-table__body-wrapper,.dark-theme .frontend-table-container .el-table__footer-wrapper,.dark-theme .frontend-table-container .el-table__header-wrapper{background-color:#1e293b!important;border-radius:var(--hw-radius);overflow:hidden;font-size:14px}.dark-theme .frontend-table-container .el-table th,.dark-theme .frontend-table-container .el-table__header-wrapper th{background-color:#334155!important;color:#94a3b8!important;font-weight:600;font-size:13px;padding:14px 0;letter-spacing:.2px;border-bottom:1px solid hsla(0,0%,100%,.08)!important}.dark-theme .frontend-table-container .el-table td,.dark-theme .frontend-table-container .el-table__body-wrapper td{background-color:#1e293b!important;color:#f8fafc!important;padding:14px 0;border-bottom:1px solid hsla(0,0%,100%,.08)!important}.dark-theme .frontend-table-container .el-table tr:hover td,.dark-theme .frontend-table-container .el-table__body-wrapper tr:hover td{background-color:#334155!important}.dark-theme .frontend-table-container .el-table--striped .el-table__body tr.el-table__row--striped td{background-color:#1e293b!important}.dark-theme .frontend-table-container .el-table--striped .el-table__body tr.el-table__row--striped:hover td{background-color:#334155!important}.dark-theme .frontend-table-container .el-pagination{margin-top:20px;justify-content:flex-end;color:#94a3b8!important}#app.dark-theme .frontend-table-container .el-table,#app.dark-theme .frontend-table-container .el-table__body-wrapper,#app.dark-theme .frontend-table-container .el-table__footer-wrapper,#app.dark-theme .frontend-table-container .el-table__header-wrapper,#app.dark-theme .frontend-table-container [class*=el-table]{background-color:#1e293b!important;background-image:none!important}#app.dark-theme .project-list-page .frontend-table-project-list,#app.dark-theme .project-list-page .frontend-table-project-list .el-table,#app.dark-theme .project-list-page .frontend-table-project-list .el-table__body,#app.dark-theme .project-list-page .frontend-table-project-list .el-table__body-wrapper,#app.dark-theme .project-list-page .frontend-table-project-list .el-table__cell,#app.dark-theme .project-list-page .frontend-table-project-list .el-table__inner-wrapper,#app.dark-theme .project-list-page .frontend-table-project-list [class*=el-table],#app.dark-theme .project-list-page .frontend-table-project-list td,#app.dark-theme .project-list-page .frontend-table-project-list tr{background-color:#fff!important;color:#4a5568!important;background-image:none!important;border-bottom:1px solid #e2e8f0!important}#app.dark-theme .project-list-page .frontend-table-project-list [class*=el-table] th,#app.dark-theme .project-list-page .frontend-table-project-list th,#app.dark-theme .project-list-page .frontend-table-project-list th.el-table__cell{background-color:#f7fafc!important;color:#2d3748!important;border-bottom:2px solid #3b82f6!important;border-top:1px solid #e2e8f0!important;background-image:none!important}#app.dark-theme .project-list-page .frontend-table-project-list tr:hover,#app.dark-theme .project-list-page .frontend-table-project-list tr:hover .el-table__cell,#app.dark-theme .project-list-page .frontend-table-project-list tr:hover td{background-color:#f0f9ff!important;color:#4a5568!important;background-image:none!important}#app.dark-theme .project-list-page .frontend-table-project-list.el-table--striped .el-table__body tr.el-table__row--striped,#app.dark-theme .project-list-page .frontend-table-project-list.el-table--striped .el-table__body tr.el-table__row--striped .el-table__cell,#app.dark-theme .project-list-page .frontend-table-project-list.el-table--striped .el-table__body tr.el-table__row--striped td{background-color:#f8fafc!important;color:#4a5568!important;background-image:none!important}#app.dark-theme .service-list-page .frontend-table-service-list,#app.dark-theme .service-list-page .frontend-table-service-list .el-table,#app.dark-theme .service-list-page .frontend-table-service-list .el-table__body,#app.dark-theme .service-list-page .frontend-table-service-list .el-table__body-wrapper,#app.dark-theme .service-list-page .frontend-table-service-list .el-table__cell,#app.dark-theme .service-list-page .frontend-table-service-list .el-table__inner-wrapper,#app.dark-theme .service-list-page .frontend-table-service-list [class*=el-table],#app.dark-theme .service-list-page .frontend-table-service-list td,#app.dark-theme .service-list-page .frontend-table-service-list tr{background-color:#fff!important;color:#4a5568!important;background-image:none!important;border-bottom:1px solid #e2e8f0!important}#app.dark-theme .service-list-page .frontend-table-service-list [class*=el-table] th,#app.dark-theme .service-list-page .frontend-table-service-list th,#app.dark-theme .service-list-page .frontend-table-service-list th.el-table__cell{background-color:#f7fafc!important;color:#2d3748!important;border-bottom:2px solid #3b82f6!important;border-top:1px solid #e2e8f0!important;background-image:none!important}#app.dark-theme .service-list-page .frontend-table-service-list tr:hover,#app.dark-theme .service-list-page .frontend-table-service-list tr:hover .el-table__cell,#app.dark-theme .service-list-page .frontend-table-service-list tr:hover td{background-color:#f0f9ff!important;color:#4a5568!important;background-image:none!important}#app.dark-theme .service-list-page .frontend-table-service-list.el-table--striped .el-table__body tr.el-table__row--striped,#app.dark-theme .service-list-page .frontend-table-service-list.el-table--striped .el-table__body tr.el-table__row--striped .el-table__cell,#app.dark-theme .service-list-page .frontend-table-service-list.el-table--striped .el-table__body tr.el-table__row--striped td{background-color:#f8fafc!important;color:#4a5568!important;background-image:none!important}#app.dark-theme .user-table,#app.dark-theme .user-table-container{background-color:#1e293b!important;background-image:none!important}.el-button{border-radius:var(--hw-radius);transition:transform var(--hw-duration) ease,box-shadow var(--hw-duration) ease,background-color var(--hw-duration),border-color var(--hw-duration);font-weight:500}.el-button:hover{transform:scale(1.02)}.el-button:active{transform:scale(.98)}.el-button--primary{background:var(--hw-primary);border-color:var(--hw-primary);background:linear-gradient(135deg,var(--hw-primary) 0,var(--hw-primary-hover) 100%);border:none}.el-button--primary:hover{background:linear-gradient(135deg,var(--hw-primary-hover) 0,var(--hw-primary) 100%);border-color:var(--hw-primary-hover);opacity:1;box-shadow:0 4px 16px rgba(0,125,255,.4)}.el-button--primary:focus{box-shadow:0 0 0 2px rgba(0,125,255,.4)}.el-button--primary.is-plain{background:transparent;border:1px solid var(--hw-primary);color:var(--hw-primary)}.el-button--primary.is-plain:hover{background:rgba(0,125,255,.1);border-color:var(--hw-primary);color:var(--hw-primary)}.el-button--text{color:var(--hw-text-secondary)}.el-button--text:hover{color:var(--hw-primary)}.dark-theme .el-button{border-color:var(--hw-dark-border);background:hsla(0,0%,100%,.08);color:var(--hw-dark-text)}.dark-theme .el-button:hover{background:hsla(0,0%,100%,.12);border-color:var(--hw-primary)}.dark-theme .el-button--primary{background:linear-gradient(135deg,var(--hw-primary) 0,var(--hw-primary-hover) 100%);border:none;color:#fff}.dark-theme .el-button--primary:hover{background:linear-gradient(135deg,var(--hw-primary-hover) 0,var(--hw-primary) 100%);box-shadow:0 4px 16px rgba(0,125,255,.4)}.dark-theme .el-button--text{color:var(--hw-dark-text-secondary)}.dark-theme .el-button--text:hover{color:var(--hw-primary)}.el-input__inner,.el-textarea__inner{border-radius:var(--hw-radius);transition:border-color var(--hw-duration),box-shadow var(--hw-duration);font-weight:400}.el-input__inner:focus,.el-textarea__inner:focus{border-color:var(--hw-primary);box-shadow:0 0 0 2px var(--hw-primary-light)}.el-select .el-input__inner{border-radius:var(--hw-radius)}.el-select-dropdown{background:#fff;border:1px solid var(--hw-border);border-radius:var(--hw-radius);box-shadow:var(--hw-shadow-modal);z-index:9999!important}.el-select-dropdown__item{color:var(--hw-text);padding:12px 16px;transition:all .3s ease}.el-select-dropdown__item.selected,.el-select-dropdown__item:hover{background:var(--hw-primary-light);color:var(--hw-primary)}.dark-theme .el-input__inner,.dark-theme .el-textarea__inner{background:hsla(0,0%,100%,.08);border:1px solid var(--hw-dark-border);color:var(--hw-dark-text)}.dark-theme .el-input__inner:focus,.dark-theme .el-textarea__inner:focus{border-color:var(--hw-primary);box-shadow:0 0 0 2px rgba(0,125,255,.2)}.dark-theme .el-select-dropdown{background:linear-gradient(135deg,var(--hw-dark) 0,var(--hw-dark-bg) 100%);border:1px solid var(--hw-dark-border);border-radius:var(--hw-radius);box-shadow:var(--hw-dark-shadow-modal)}.dark-theme .el-select-dropdown__item{color:var(--hw-dark-text);padding:0 16px!important;position:relative!important;top:0!important;transform:none!important;padding-top:0!important;padding-bottom:0!important;padding-left:16px!important;padding-right:16px!important}.dark-theme .el-select-dropdown__item,.el-select-dropdown__item{height:40px!important;line-height:40px!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;min-height:40px!important;box-sizing:border-box!important;vertical-align:middle!important;margin:0!important}.el-select-dropdown__item{padding:0 16px!important}.dark-theme .el-select-dropdown__item span,.el-select-dropdown__item span{display:flex!important;align-items:center!important;height:40px!important;line-height:40px!important;margin:0!important;padding:0!important;vertical-align:middle!important;font-size:14px!important}.dark-theme .el-select-dropdown__item.selected,.dark-theme .el-select-dropdown__item:hover{display:flex!important;align-items:center!important;justify-content:flex-start!important;height:40px!important;line-height:40px!important}.dark-theme .el-select-dropdown,.dark-theme .el-select-dropdown__item *{padding:0!important;box-sizing:border-box!important}.dark-theme .el-select-dropdown__item *{display:flex!important;align-items:center!important;height:24px!important;margin:0!important;line-height:24px!important;vertical-align:middle!important}.dark-theme .el-select-dropdown__item:hover{background:rgba(0,125,255,.1)}.dark-theme .el-select-dropdown__item.selected{background:rgba(0,125,255,.2);color:var(--hw-primary)}.el-dialog{border-radius:var(--hw-radius-xl);box-shadow:var(--hw-shadow-modal);overflow:hidden;transition:transform var(--hw-duration-slow) ease,opacity var(--hw-duration-slow) ease}.el-dialog__header{padding:24px;border-bottom:1px solid var(--hw-border)}.el-dialog__title{color:var(--hw-text);font-size:18px;font-weight:600}.el-dialog__body{padding:24px;color:var(--hw-text)}.el-dialog__footer{padding:20px 24px;border-top:1px solid var(--hw-border);background:rgba(248,250,252,.5)}.dark-theme .el-dialog{background:linear-gradient(135deg,var(--hw-dark) 0,var(--hw-dark-bg) 100%);border:1px solid var(--hw-dark-border-light);box-shadow:var(--hw-dark-shadow-modal)}.dark-theme .el-dialog__header{border-bottom:1px solid var(--hw-dark-border-light)}.dark-theme .el-dialog__body,.dark-theme .el-dialog__title{color:var(--hw-dark-text)}.dark-theme .el-dialog__footer{border-top:1px solid var(--hw-dark-border-light);background:rgba(15,23,42,.5)}.el-dialog__wrapper{background:rgba(0,0,0,.6);backdrop-filter:blur(8px)}.el-message{border-radius:var(--hw-radius);padding:12px 16px;box-shadow:0 4px 16px rgba(0,0,0,.3);min-width:300px}.el-message--success{background:rgba(16,185,129,.1);border-color:rgba(16,185,129,.2);color:#10b981}.el-message--error{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.2);color:#ef4444}.el-message--warning{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.2);color:#f59e0b}.el-message--info{background:rgba(0,125,255,.1);border-color:rgba(0,125,255,.2);color:var(--hw-primary)}.el-confirm{border-radius:var(--hw-radius-xl);background:var(--hw-bg-card);border:1px solid var(--hw-border);box-shadow:var(--hw-shadow-modal)}.el-confirm__header{border-bottom:1px solid var(--hw-border)}.el-confirm__title{color:var(--hw-text)}.el-confirm__content{color:var(--hw-text-secondary)}.dark-theme .el-confirm{border-radius:var(--hw-radius-xl);background:linear-gradient(135deg,var(--hw-dark) 0,var(--hw-dark-bg) 100%);border:1px solid var(--hw-dark-border-light);box-shadow:var(--hw-dark-shadow-modal)}.dark-theme .el-confirm__header{border-bottom:1px solid var(--hw-dark-border-light)}.dark-theme .el-confirm__title{color:var(--hw-dark-text)}.dark-theme .el-confirm__content{color:var(--hw-dark-text-secondary)}.el-dialog__wrapper{transition:opacity var(--hw-duration-slow) ease}.el-dialog{transform-origin:center center}.el-dialog-enter-active{animation:dialog-fade-in .3s ease}.el-dialog-leave-active{animation:dialog-fade-out .2s ease}@keyframes dialog-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes dialog-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.data-loading{padding:48px 24px}.data-empty,.data-loading{text-align:center;color:var(--hw-text-secondary)}.data-empty{padding:60px 24px;font-size:14px}.data-empty .empty-icon{font-size:56px;color:#cbd5e1;margin-bottom:16px}.data-error{padding:48px 24px;text-align:center;color:var(--danger);font-size:14px}.skeleton-block{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 50%,#f1f5f9 75%);background-size:200% 100%;animation:skeleton-shine 1.2s ease-in-out infinite;border-radius:var(--hw-radius)}@keyframes skeleton-shine{0%{background-position:200% 0}to{background-position:-200% 0}}#app.register-page .el-select-dropdown{background:#444!important;border:1px solid #666!important;z-index:9999!important;border-radius:8px!important;box-shadow:0 4px 12px rgba(0,0,0,.3)!important}#app.register-page .el-select-dropdown__item{color:#fff!important;background:#444!important;padding:12px 16px!important;transition:background-color .3s ease!important}#app.register-page .el-select-dropdown__item.hover,#app.register-page .el-select-dropdown__item:hover{background:#555!important}#app.register-page .el-select-dropdown__item.selected{background:#555!important;color:#fff!important}#app.register-page .el-popper{background:#444!important;border:1px solid #666!important;border-radius:8px!important;box-shadow:0 4px 12px rgba(0,0,0,.3)!important}#app.register-page .el-popper .el-select-dropdown{background:#444!important;border:none!important;border-radius:8px!important}#app.register-page .el-popper .el-select-dropdown__item{color:#fff!important;background:#444!important}#app.register-page .el-popper .el-select-dropdown__item.hover,#app.register-page .el-popper .el-select-dropdown__item:hover{background:#555!important}#app.register-page .el-popper .el-select-dropdown__item.selected{background:#555!important;color:#fff!important}