*,*:before,*:after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,ul,ol,figure{margin:0;padding:0}:root{--primary:#ff8c00;--primary-light:#ffa733;--primary-bg:rgba(255,140,0,.15);--primary-hover:#e67e00;--text-1:#ffffff;--text-2:#b0b0b0;--text-3:#808080;--text-4:#606060;--bg:#121212;--card:#1e1e1e;--surface:#2a2a2a;--border:#2c2c2c;--divider:#2a2a2a;--success:#00b578;--success-bg:rgba(0,181,120,.15);--warning:#ff8c00;--warning-bg:rgba(255,140,0,.15);--error:#ff4d4f;--error-bg:rgba(255,77,79,.15);--info:#2a7fff;--info-bg:rgba(42,127,255,.15);--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-full:999px;--shadow:0 1px 2px rgba(0,0,0,.25);--shadow-md:0 4px 12px rgba(0,0,0,.35);--sidebar-w:220px;--header-h:56px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB",sans-serif}html,body,#root{height:100%;font-family:var(--font);background:var(--bg);color:var(--text-1);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}*::-webkit-scrollbar{width:4px;height:4px}*::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}*::-webkit-scrollbar-button{display:none;width:0;height:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f0f0f,#1a1a1a,#121212)}.login-box{background:var(--card);border-radius:var(--radius-lg);padding:40px;width:400px;box-shadow:0 20px 60px #00000080;border:1px solid var(--border)}.login-box .logo{display:flex;align-items:center;gap:12px;margin-bottom:32px}.login-box .logo-icon{width:44px;height:44px;background:var(--primary);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px}.login-box .logo-text{font-size:20px;font-weight:700;color:var(--text-1)}.login-box .logo-sub{font-size:12px;color:var(--text-3)}.login-box .field{margin-bottom:16px}.login-box .field label{display:block;font-size:13px;color:var(--text-2);margin-bottom:6px;font-weight:500}.login-box .field input{width:100%;height:42px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:14px;background:var(--surface);color:var(--text-1)}.login-box .field input:focus{border-color:var(--primary);outline:none}.login-box .login-btn{width:100%;height:44px;background:var(--primary);color:#fff;border:0;border-radius:var(--radius-md);font-size:15px;font-weight:600;margin-top:8px;cursor:pointer}.login-box .login-btn:hover{background:var(--primary-hover)}.login-box .login-help{text-align:center;margin-top:16px;font-size:12px;color:var(--text-3)}.login-error{color:var(--error);font-size:13px;margin-bottom:8px}.admin-layout{display:flex;height:100vh}.sidebar{width:var(--sidebar-w);background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.sidebar-header{height:var(--header-h);display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--divider);flex-shrink:0}.sidebar-header .s-logo{width:32px;height:32px;background:var(--primary);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;flex-shrink:0}.sidebar-header .s-title{font-size:15px;font-weight:700;color:var(--text-1)}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 0}.nav-group{margin-bottom:4px}.nav-group-title{padding:8px 16px 4px;font-size:11px;color:var(--text-4);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;margin:1px 8px;border-radius:var(--radius-md);color:var(--text-2);font-size:13px;cursor:pointer;position:relative;text-decoration:none}.nav-item:hover{background:var(--surface);color:var(--text-1)}.nav-item.active{background:var(--primary-bg);color:var(--primary);font-weight:600}.nav-item i{font-size:17px;width:20px;text-align:center}.nav-item .nav-badge{position:absolute;right:12px;background:var(--error);color:#fff;font-size:10px;padding:1px 6px;border-radius:10px;font-weight:600}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.main-header{height:var(--header-h);background:var(--card);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0}.main-header .page-title{font-size:16px;font-weight:600}.main-header .header-actions{display:flex;align-items:center;gap:16px}.main-header .user-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}.main-header .avatar-sm{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--surface)}.main-content{flex:1;overflow-y:auto;padding:20px 24px;background:var(--bg)}.stat-card{background:var(--card);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow);border:1px solid var(--border)}.stat-card .stat-label{font-size:12px;color:var(--text-3);margin-bottom:4px}.stat-card .stat-value{font-size:28px;font-weight:700;color:var(--text-1)}.stat-card .stat-change{font-size:11px;color:var(--success);margin-top:4px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.content-card{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--border)}.content-card .card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--divider)}.content-card .card-title{font-size:15px;font-weight:600}.content-card .card-body{padding:20px}.content-card .card-body.no-pad{padding:0}.toolbar{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--divider);flex-wrap:wrap}.toolbar .ant-input-affix-wrapper,.toolbar .ant-input-search,.toolbar .ant-select-selector{height:36px!important;background:var(--surface)!important;border-color:var(--border)!important}.toolbar .ant-select-single .ant-select-selector{display:flex;align-items:center}.page-actions{display:flex;gap:8px;justify-content:flex-end;margin-bottom:16px}.table-wrap{overflow-x:auto}table.data-table,.content-card>table,.card-body.no-pad>table{width:100%;border-collapse:collapse;table-layout:fixed}table.data-table th,.card-body.no-pad table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text-3);background:var(--surface);border-bottom:1px solid var(--border);white-space:nowrap}table.data-table td,.card-body.no-pad table td{padding:12px 16px;border-bottom:1px solid var(--divider);font-size:13px;color:var(--text-1);vertical-align:middle}table.data-table tr:hover td,.card-body.no-pad table tr:hover td{background:#ffffff08}table.data-table .num{width:88px;text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2);white-space:nowrap}table.data-table .muted{color:var(--text-2);white-space:nowrap}.table-img{width:60px;height:40px;border-radius:var(--radius-sm);object-fit:cover;background:var(--surface);display:block;flex-shrink:0}.table-img-empty{border:1px dashed var(--border)}.person-cell{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%}.person-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar,.avatar-sm{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0;display:block;background:var(--surface)}.avatar-lg{width:48px;height:48px;border-radius:50%;object-fit:cover;display:block;background:var(--surface)}.tag{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:11px;font-weight:500}.tag-success{background:var(--success-bg);color:var(--success)}.tag-warning{background:var(--warning-bg);color:var(--warning)}.tag-error{background:var(--error-bg);color:var(--error)}.tag-info{background:var(--info-bg);color:var(--info)}.tag-default{background:var(--surface);color:var(--text-3)}.todo-list{list-style:none}.todo-list li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--divider);font-size:13px;cursor:pointer}.todo-list li:last-child{border-bottom:none}.todo-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.todo-text{flex:1}.todo-count{font-weight:600;color:var(--primary);font-size:15px}.chart-area{height:200px;background:linear-gradient(180deg,rgba(255,140,0,.12) 0%,transparent 100%);border-radius:var(--radius-md);display:flex;align-items:flex-end;padding:12px;gap:4px}.chart-bar{flex:1;background:var(--primary);border-radius:3px 3px 0 0;opacity:.7;min-height:8px}.card-extra{font-size:12px;color:var(--text-3)}.trend-chart{position:relative}.trend-chart-meta{display:flex;gap:16px;font-size:12px;color:var(--text-3);margin-bottom:8px}.trend-chart-empty{height:180px;display:grid;place-items:center;color:var(--text-3);background:var(--bg);border-radius:var(--radius-md);border:1px dashed var(--border)}.trend-chart-svg{position:relative}.trend-chart-svg svg{width:100%;height:auto;aspect-ratio:640 / 220;display:block}.trend-grid{stroke:var(--border);stroke-width:1}.trend-line{fill:none;stroke:#ff8c00;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.trend-dot{fill:#1e1e1e;stroke:#ff8c00;stroke-width:2;pointer-events:none}.trend-dot.active{fill:#ff8c00}.trend-y{fill:var(--text-3);font-size:11px;text-anchor:end}.trend-x{fill:var(--text-3);font-size:11px;text-anchor:middle}.trend-tip{position:absolute;top:8px;transform:translate(-50%);background:#2a2a2a;border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:12px;color:var(--text-1);display:flex;flex-direction:column;gap:2px;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow);z-index:2}.trend-tip b{font-weight:600}.trend-tip span{color:var(--primary)}.phone-preview{width:320px;border:8px solid #2a2a2a;border-radius:32px;background:var(--bg);overflow:hidden;box-shadow:var(--shadow-md)}.phone-preview .pp-header{height:36px;background:var(--card);display:flex;align-items:center;justify-content:center}.phone-preview .pp-body{padding:12px}.detail-grid{display:grid;grid-template-columns:1fr 360px;gap:20px}.detail-main{background:var(--card);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.detail-side{display:flex;flex-direction:column;gap:16px}.timeline-item{display:flex;gap:12px;padding:10px 0}.timeline-item .tl-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);margin-top:6px;flex-shrink:0}.timeline-item .tl-time{font-size:11px;color:var(--text-3);margin-top:2px}.media-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.media-card{border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border);cursor:pointer;background:var(--card)}.media-card img{width:100%;height:120px;object-fit:cover}.media-card .media-info{padding:8px;font-size:11px;color:var(--text-3)}.word-chip{padding:6px 14px;background:var(--bg);border-radius:var(--radius-full);font-size:13px;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}.word-chip.primary{background:var(--primary-bg);color:var(--primary)}.word-chip.danger{background:var(--error-bg);color:var(--error)}.page-enter{animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.ant-app{height:100%}.ant-btn-primary{background:var(--primary)!important;border-color:var(--primary)!important;box-shadow:none!important}.ant-btn-primary:hover{background:var(--primary-hover)!important;border-color:var(--primary-hover)!important}.ant-btn-link{color:var(--primary)!important;padding-inline:8px!important;height:auto!important}.ant-btn-link.ant-btn-dangerous,.ant-btn-link.ant-btn-dangerous:hover{color:var(--error)!important}.ant-btn-text{color:var(--text-3)!important}.main-header .user-info{display:flex;align-items:center;gap:8px}.main-header .user-info a.user-info{color:inherit;text-decoration:none}.main-header .ant-btn{height:32px;padding:0 8px;display:inline-flex;align-items:center}.admin-table .ant-table,.ant-table-wrapper .ant-table{background:transparent!important}.admin-table .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-thead>tr>th{background:var(--surface)!important;color:var(--text-3)!important;border-bottom:1px solid var(--border)!important;font-size:12px!important;font-weight:600!important;padding:12px 16px!important;white-space:nowrap}.admin-table .ant-table-tbody>tr>td,.ant-table-wrapper .ant-table-tbody>tr>td{border-bottom:1px solid var(--divider)!important;font-size:13px!important;padding:12px 16px!important;vertical-align:middle!important;color:var(--text-1)}.ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#ffffff08!important}.ant-table-wrapper .ant-table-cell-ellipsis{max-width:none}.ant-table-wrapper .ant-pagination,.admin-table .ant-pagination{margin:0!important;padding:12px 20px!important;border-top:1px solid var(--divider);justify-content:flex-end}.ant-pagination .ant-pagination-item{min-width:32px!important;height:32px!important;line-height:30px!important;border-radius:4px!important;border-color:var(--border)!important;background:var(--card)!important}.ant-pagination .ant-pagination-item a{color:var(--text-2)!important}.ant-pagination .ant-pagination-item-active{background:var(--primary)!important;border-color:var(--primary)!important}.ant-pagination .ant-pagination-item-active a{color:#fff!important}.ant-pagination-total-text{color:var(--text-3)!important;margin-right:8px}.content-card>.ant-tabs .ant-tabs-nav{margin:0;padding:0 20px}.content-card>.ant-tabs .ant-tabs-tab{padding:10px 16px;font-size:13px;color:var(--text-2)!important}.content-card>.ant-tabs .ant-tabs-ink-bar{background:var(--primary)}.ant-input,.ant-input-affix-wrapper,.ant-select-selector,.ant-picker,.ant-input-number,.ant-input-number-affix-wrapper{background:var(--surface)!important;border-color:var(--border)!important;color:var(--text-1)!important}.ant-modal-content,.ant-modal-header,.ant-modal-footer{background:var(--card)!important}.ant-form-item-label>label{color:var(--text-2)!important}.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--primary)!important}.ant-tabs-ink-bar{background:var(--primary)!important}.ant-empty-description{color:var(--text-3)!important}.ant-upload{color:var(--text-2)!important}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}.back-row{display:flex;gap:8px;margin-bottom:16px}.check-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--divider);border-radius:var(--radius-md);margin-bottom:8px}
