.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#001529 0%,#003a5d 100%);padding:20px}.login-card{width:100%;max-width:420px;box-shadow:0 8px 24px #00000026;border-radius:8px;padding:40px}.login-header{text-align:center;margin-bottom:32px}.logo-container{display:flex;justify-content:center;margin-bottom:16px}.logo-icon{font-size:48px;width:80px;height:80px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#001529 0%,#003a5d 100%);border-radius:16px;box-shadow:0 4px 12px #00152933}.login-title{font-size:28px;font-weight:600;color:#001529;margin:0 0 8px}.login-subtitle{color:#8c8c8c;font-size:14px;margin:0}.captcha-container{display:flex;justify-content:space-between;align-items:center;gap:12px}.captcha-image{width:38%;height:50px;background:linear-gradient(135deg,#e6f7ff 0%,#bae7ff 100%);border:1px solid #91d5ff;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .3s}.captcha-image:hover{border-color:#40a9ff;box-shadow:0 2px 8px #1890ff33}.captcha-text{font-size:18px;font-weight:600;color:#001529;letter-spacing:4px;font-family:Courier New,monospace}.captcha-refresh{font-size:10px;color:#1890ff;margin-top:2px}.login-button{height:44px;font-size:16px;font-weight:500;background:linear-gradient(135deg,#001529 0%,#003a5d 100%);border:none;margin-top:8px}.login-button:hover:not(:disabled){background:linear-gradient(135deg,#003a5d 0%,#001529 100%)}.login-footer{text-align:center;margin-top:24px}.contact-info{margin-top:16px;padding:16px;background:#f5f5f5;border-radius:4px;text-align:left}.contact-info p{margin:8px 0;font-size:14px;color:#595959}.login-mode-switch{margin-top:20px;text-align:center}.login-mode-switch .ant-btn-link{color:#595959;font-size:14px}.login-mode-switch .ant-btn-link:hover{color:#07c160}.wechat-login-panel{text-align:center}.wechat-login-panel .wechat-qr-header{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:20px}.wechat-qr-header-icon{width:36px;height:36px;background:#07c160;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700}.wechat-qr-header-title{font-size:18px;font-weight:600;color:#1e293b}.wechat-qr-container{position:relative;width:300px;height:400px;margin:0 auto;background:#fff;border-radius:8px;overflow:hidden;border:1px solid #f0f0f0}.wechat-qr-wx-host{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.wechat-qr-wx-host.is-hidden{visibility:hidden}.wechat-qr-wx-host iframe{width:300px;height:400px;border:0}.wechat-qr-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;padding:12px 16px;background:rgba(7,193,96,.08);border-radius:8px;color:#059669;font-size:14px}.wechat-qr-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#fff}.wechat-qr-loading .ant-spin{color:#07c160}@media (max-width: 480px){.login-card{padding:24px}.login-title{font-size:24px}.logo-icon{font-size:40px;width:64px;height:64px}.wechat-qr-container{width:260px;height:340px}}.main-layout{min-height:100vh;height:100vh;overflow:hidden}.main-sider{--sidebar-bg: #001529;--sidebar-text: #ffffff;--sidebar-text-hover: rgba(255, 255, 255, .85);--sidebar-text-selected: #ffffff;--sidebar-selected-bg: #fa8c16;--sidebar-border: rgba(255, 255, 255, .1);flex-shrink:0;height:100vh;overflow-x:hidden;overflow-y:auto;background:var(--sidebar-bg);box-shadow:2px 0 8px #00000026}.main-layout>.ant-layout{flex:1;min-width:0;height:100vh;overflow:hidden;display:flex;flex-direction:column}.main-sider[data-sidebar-bg=default]{--sidebar-bg: #001529;--sidebar-text: #ffffff;--sidebar-text-hover: rgba(255, 255, 255, .85);--sidebar-text-selected: #ffffff;--sidebar-selected-bg: #fa8c16;--sidebar-border: rgba(255, 255, 255, .1)}.main-sider[data-sidebar-bg=green]{--sidebar-bg: #0d3b2c;--sidebar-text: #e8f5e9;--sidebar-text-hover: rgba(232, 245, 233, .9);--sidebar-text-selected: #e8f5e9;--sidebar-selected-bg: #fa8c16;--sidebar-border: rgba(232, 245, 233, .15)}.main-sider[data-sidebar-bg=dark]{--sidebar-bg: #1f2937;--sidebar-text: #e5e7eb;--sidebar-text-hover: rgba(229, 231, 235, .9);--sidebar-text-selected: #e5e7eb;--sidebar-selected-bg: #fa8c16;--sidebar-border: rgba(229, 231, 235, .15)}.main-sider[data-sidebar-bg=purple]{--sidebar-bg: #1a1a2e;--sidebar-text: #e9d5ff;--sidebar-text-hover: rgba(233, 213, 255, .9);--sidebar-text-selected: #e9d5ff;--sidebar-selected-bg: #fa8c16;--sidebar-border: rgba(233, 213, 255, .15)}.main-sider[data-sidebar-bg=cream]{--sidebar-bg: #f5f0e6;--sidebar-text: #5c4a2a;--sidebar-text-hover: #3d3525;--sidebar-text-selected: #5c4a2a;--sidebar-selected-bg: rgba(250, 140, 22, .2);--sidebar-border: rgba(92, 74, 42, .2)}.main-sider[data-sidebar-bg=orange]{--sidebar-bg: #fff7ed;--sidebar-text: #7c4a0a;--sidebar-text-hover: #5a3a08;--sidebar-text-selected: #7c4a0a;--sidebar-selected-bg: rgba(250, 140, 22, .25);--sidebar-border: rgba(124, 74, 10, .2)}.main-sider .ant-menu-dark .ant-menu-item,.main-sider .ant-menu-dark .ant-menu-submenu-title{font-size:16px;color:var(--sidebar-text)!important}.main-sider .ant-menu-dark .ant-menu-item .anticon,.main-sider .ant-menu-dark .ant-menu-submenu-title .anticon{color:var(--sidebar-text)!important}.main-sider .ant-menu-dark img.menu-bell-icon{filter:brightness(0) invert(1);opacity:.9}.main-sider[data-sidebar-bg=cream] .ant-menu-dark img.menu-bell-icon,.main-sider[data-sidebar-bg=orange] .ant-menu-dark img.menu-bell-icon{filter:none;opacity:.85}.main-sider .ant-menu-dark .ant-menu-item:hover,.main-sider .ant-menu-dark .ant-menu-submenu-title:hover,.main-sider .ant-menu-dark .ant-menu-item:hover .anticon,.main-sider .ant-menu-dark .ant-menu-submenu-title:hover .anticon{color:var(--sidebar-text-hover)!important}.main-sider .ant-menu-dark .ant-menu-item-selected{color:var(--sidebar-text-selected)!important;background:var(--sidebar-selected-bg)!important}.main-sider .ant-menu-dark .ant-menu-item-selected .anticon{color:var(--sidebar-text-selected)!important}.main-sider[data-sidebar-bg=cream] .ant-menu-dark .ant-menu-item:hover,.main-sider[data-sidebar-bg=cream] .ant-menu-dark .ant-menu-submenu-title:hover,.main-sider[data-sidebar-bg=orange] .ant-menu-dark .ant-menu-item:hover,.main-sider[data-sidebar-bg=orange] .ant-menu-dark .ant-menu-submenu-title:hover{background:rgba(0,0,0,.06)!important}.main-sider[data-sidebar-bg=cream] .ant-menu-dark .ant-menu-item-selected,.main-sider[data-sidebar-bg=orange] .ant-menu-dark .ant-menu-item-selected{background:var(--sidebar-selected-bg)!important}.main-sider .ant-menu.ant-menu-dark,.main-sider .ant-menu-dark .ant-menu-sub{background:transparent!important}.main-sider .ant-menu-dark .ant-menu-inline.ant-menu-sub{background:rgba(0,0,0,.2)!important}.main-sider[data-sidebar-bg=cream] .ant-menu-dark .ant-menu-inline.ant-menu-sub,.main-sider[data-sidebar-bg=orange] .ant-menu-dark .ant-menu-inline.ant-menu-sub{background:rgba(0,0,0,.06)!important}.logo{height:64px;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px;background:rgba(0,0,0,.05);border-bottom:1px solid var(--sidebar-border)}.main-sider[data-sidebar-bg=cream] .logo,.main-sider[data-sidebar-bg=orange] .logo{background:rgba(0,0,0,.04)}.logo-icon{font-size:32px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#52C41A 0%,#73d13d 100%);border-radius:8px;flex-shrink:0}.logo-text{color:var(--sidebar-text);font-size:18px;font-weight:600;white-space:nowrap}.main-header{background:#fff;padding:0 24px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #00000014;height:64px;line-height:64px;flex-shrink:0;z-index:10}.header-left{display:flex;align-items:center}.trigger-btn{font-size:18px;width:40px;height:40px;color:#001529}.trigger-btn:hover{color:#52c41a;background:rgba(82,196,26,.1)}.header-right{display:flex;align-items:center;gap:16px}.header-search,.header-search .ant-input-wrapper,.header-search input{border-radius:20px}.header-btn{font-size:18px;width:40px;height:40px;color:#595959}.header-bell-icon{width:22px;height:22px;display:block;object-fit:contain}.header-right .ant-badge{line-height:0}.header-right .ant-badge-count{border:2px solid rgba(255,255,255,.95);box-shadow:0 6px 14px #ef444440;font-weight:700}.menu-bell-icon{width:17px;height:17px;display:inline-block;vertical-align:middle;object-fit:contain}.main-sider .menu-item-messages-label{display:inline-block;padding-right:10px;min-width:4em}.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label){padding-right:20px;overflow:visible;font-size:16px!important;color:var(--sidebar-text)!important}.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label) .menu-item-messages-label,.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label) .menu-item-messages-label span{font-size:16px!important;color:var(--sidebar-text)!important}.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label):hover,.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label).ant-menu-item-selected{color:var(--sidebar-text-selected)!important}.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label):hover .menu-item-messages-label,.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label):hover .menu-item-messages-label span,.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label).ant-menu-item-selected .menu-item-messages-label,.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label).ant-menu-item-selected .menu-item-messages-label span{color:var(--sidebar-text-selected)!important}.main-sider .ant-menu-item .menu-item-messages-label .ant-badge{display:inline-block}.main-sider .ant-menu-dark .ant-menu-item:has(.menu-item-messages-label) img.menu-bell-icon{opacity:1}.header-btn:hover{color:#001529;background:#f5f5f5}.user-info{display:flex;align-items:center;gap:12px;cursor:pointer;padding:4px 12px;border-radius:20px;transition:all .3s}.user-info:hover{background:#f5f5f5}.username{color:#001529;font-weight:500;font-size:14px}.main-content{margin:24px;padding:24px;background:#fff;border-radius:8px;flex:1;min-height:0;overflow-y:auto;box-shadow:0 2px 8px #00000014}.route-loading{display:flex;align-items:center;justify-content:center;min-height:240px}@media (max-width: 768px){.main-content{margin:16px;padding:16px}.header-search{width:180px!important}.username{display:none}.main-header{padding:0 16px}}.notification-dropdown{width:360px;background:#fff;border-radius:8px;box-shadow:0 6px 16px #0000001f;overflow:hidden}.notification-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0;background:#fafafa}.notification-title{font-size:15px;font-weight:600;color:#1f1f1f}.notification-body{max-height:400px;overflow-y:auto}.notification-body .ant-list-item{padding:12px 16px;cursor:pointer;transition:background .2s;border-bottom:1px solid #f5f5f5}.notification-item{display:flex;align-items:flex-start;gap:12px;position:relative}.notification-item.unread{background:#f6ffed}.notification-item:hover{background:#f5f5f5}.notification-item.unread:hover{background:#e6ffe6}.notification-icon{font-size:20px;flex-shrink:0;margin-top:2px}.notification-content{flex:1;min-width:0}.notification-item-title{font-size:14px;font-weight:500;color:#1f1f1f;margin-bottom:4px}.notification-item-desc{font-size:13px;color:#666;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.notification-item-time{font-size:12px;color:#999;margin-top:4px}.notification-dot{width:8px;height:8px;background:#1890ff;border-radius:50%;flex-shrink:0;margin-top:6px}.notification-footer{display:flex;justify-content:space-between;padding:8px 16px;border-top:1px solid #f0f0f0;background:#fafafa}.notification-body .ant-empty{padding:40px 0}.notification-item.clickable{cursor:pointer}.notification-item.clickable:hover .notification-item-title{color:#1890ff}.message-detail-modal .ant-modal-content{border-radius:12px;overflow:hidden}.message-detail-modal .ant-modal-body{padding:0}.message-detail{padding:24px}.message-detail-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #f0f0f0}.message-detail-icon{font-size:28px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#f6ffed;border-radius:12px}.message-detail-meta{display:flex;flex-direction:column;gap:4px}.message-type-tag{display:inline-block;padding:2px 8px;font-size:12px;color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f;border-radius:4px;width:fit-content}.message-detail-time{font-size:13px;color:#999}.message-detail-title{font-size:18px;font-weight:600;color:#1f1f1f;margin:0 0 16px;line-height:1.4}.message-detail-content{font-size:14px;color:#595959;line-height:1.8;padding:16px;background:#fafafa;border-radius:8px;min-height:80px;white-space:pre-wrap;word-break:break-word}.message-detail-footer{margin-top:24px;display:flex;justify-content:flex-end;gap:12px}.message-detail-footer .ant-btn-primary{background:#52c41a;border-color:#52c41a}.message-detail-footer .ant-btn-primary:hover{background:#73d13d;border-color:#73d13d}.ant-modal-wrap{padding:12px;box-sizing:border-box}.ant-modal{max-width:calc(100vw - 24px)!important}.ant-modal-content{max-height:calc(100vh - 24px);overflow:auto;display:flex;flex-direction:column}.ant-modal-body{flex:1;overflow-y:auto;min-height:0}.message-detail-modal.ant-modal{max-width:min(480px,calc(100vw - 24px))!important}.message-detail-modal .ant-modal-body{max-height:calc(100vh - 120px);overflow-y:auto}@media (max-width: 576px){.message-detail{padding:16px}.message-detail-title{font-size:16px}.message-detail-content{padding:12px;font-size:13px}}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}:root{--admin-font-size-base: 14px;--admin-image-scale: 1}.admin-layout-wrapper .main-content,.admin-layout-wrapper .ant-card,.admin-layout-wrapper .ant-table,.admin-layout-wrapper .ant-table td,.admin-layout-wrapper .ant-table th{font-size:var(--admin-font-size-base)!important}.admin-layout-wrapper .main-content img{max-width:100%;height:auto;object-fit:contain;transform:scale(var(--admin-image-scale));transform-origin:center center}.ui-checkbox{--primary-color: #1677ff;--secondary-color: #fff;--primary-hover-color: #4096ff;--checkbox-diameter: 20px;--checkbox-border-radius: 5px;--checkbox-border-color: #d9d9d9;--checkbox-border-width: 1px;--checkbox-border-style: solid;--checkmark-size: 1.2}.ui-checkbox,.ui-checkbox *,.ui-checkbox *:before,.ui-checkbox *:after{-webkit-box-sizing:border-box;box-sizing:border-box}.ui-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--checkbox-diameter);height:var(--checkbox-diameter);border-radius:var(--checkbox-border-radius);background:var(--secondary-color);border:var(--checkbox-border-width) var(--checkbox-border-style) var(--checkbox-border-color);-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;cursor:pointer;position:relative}.ui-checkbox:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:0 0 0 calc(var(--checkbox-diameter) / 2.5) var(--primary-color);box-shadow:0 0 0 calc(var(--checkbox-diameter) / 2.5) var(--primary-color);border-radius:inherit;opacity:0;-webkit-transition:all .5s cubic-bezier(.12,.4,.29,1.46);-o-transition:all .5s cubic-bezier(.12,.4,.29,1.46);transition:all .5s cubic-bezier(.12,.4,.29,1.46)}.ui-checkbox:before{top:40%;left:50%;content:"";position:absolute;width:4px;height:7px;border-right:2px solid var(--secondary-color);border-bottom:2px solid var(--secondary-color);-webkit-transform:translate(-50%,-50%) rotate(45deg) scale(0);-ms-transform:translate(-50%,-50%) rotate(45deg) scale(0);transform:translate(-50%,-50%) rotate(45deg) scale(0);opacity:0;-webkit-transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;-o-transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s}.ui-checkbox:hover{border-color:var(--primary-color)}.ui-checkbox:checked{background:#f5f5f5;border-color:#d9d9d9}.ui-checkbox:checked:before{opacity:1;border-right-color:var(--primary-color);border-bottom-color:var(--primary-color);-webkit-transform:translate(-50%,-50%) rotate(45deg) scale(var(--checkmark-size));-ms-transform:translate(-50%,-50%) rotate(45deg) scale(var(--checkmark-size));transform:translate(-50%,-50%) rotate(45deg) scale(var(--checkmark-size));-webkit-transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;-o-transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s}.ui-checkbox:active:not(:checked):after{-webkit-transition:none;-o-transition:none;-webkit-box-shadow:none;box-shadow:none;transition:none;opacity:1}.ant-checkbox-inner{width:20px;height:20px;border-radius:5px;border:1px solid #d9d9d9;background-color:#fff;box-sizing:border-box;position:relative;transition:all .3s}.ant-checkbox-inner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:0 0 0 6px #1677ff26;opacity:0;transition:all .3s}.ant-checkbox-inner:after{border-width:2px;width:5px;height:9px}.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1677ff}.ant-checkbox-checked .ant-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9}.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#1677ff}.ant-checkbox-input:active+.ant-checkbox-inner:before,.ant-checkbox-wrapper:active .ant-checkbox-inner:before{opacity:1;box-shadow:0 0 0 8px #1677ff2e}.ant-table-tbody>tr.ant-table-row-selected>td{background-color:#e5e5e5!important}.ant-table-tbody>tr.ant-table-row-selected:hover>td{background-color:#dedede!important}.ant-picker-dropdown .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-range-end .ant-picker-cell-inner{background:#1890ff!important;color:#fff!important}.ant-picker-dropdown .ant-picker-cell-in-range:before{background:#e6f4ff!important}.ant-picker-dropdown .ant-picker-cell-in-range .ant-picker-cell-inner{color:#1890ff!important}.ant-picker-dropdown .ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#1890ff!important;color:#fff!important}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/c/font_4701260_qi0r7u43lda.woff2?t=1734595200000) format("woff2"),url(//at.alicdn.com/t/c/font_4701260_qi0r7u43lda.woff?t=1734595200000) format("woff"),url(//at.alicdn.com/t/c/font_4701260_qi0r7u43lda.ttf?t=1734595200000) format("truetype")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-user:before{content:""}.icon-team:before{content:""}.icon-trophy:before{content:""}.icon-chart:before{content:""}.icon-setting:before{content:""}.icon-logout:before{content:""}.icon-search:before{content:""}.icon-add:before{content:""}.icon-edit:before{content:""}.icon-delete:before{content:""}.icon-refresh:before{content:""}.icon-menu-fold:before{content:""}.icon-menu-unfold:before{content:""}.icon-bell:before{content:""}.icon-home:before{content:""}.icon-sports:before{content:""}.icon-basketball:before{content:""}.icon-football:before{content:""}.icon-swimming:before{content:""}.icon-running:before{content:""}.icon-permission:before{content:""}.icon-promotion:before{content:""}.icon-calendar:before{content:""}.icon-filter:before{content:""}.icon-download:before{content:""}.icon-upload:before{content:""}.icon-eye:before{content:""}.icon-lock:before{content:""}.icon-unlock:before{content:""}.icon-star:before{content:""}.icon-heart:before{content:""}.icon-check:before{content:""}.icon-close:before{content:""}.icon-arrow-up:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-right:before{content:""}.icon-info:before{content:""}.icon-success:before{content:""}.icon-warning:before{content:""}.icon-error:before{content:""}.icon-file:before{content:""}.icon-folder:before{content:""}.icon-picture:before{content:""}.icon-video:before{content:""}.icon-share:before{content:""}.icon-link:before{content:""}.icon-copy:before{content:""}.icon-print:before{content:""}.icon-email:before{content:""}.icon-phone:before{content:""}.icon-location:before{content:""}.icon-time:before{content:""}.icon-dashboard:before{content:""}.icon-list:before{content:""}.icon-table:before{content:""}.icon-more:before{content:""}.icon-ellipsis:before{content:""}
