/* ===== Reset ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:14px;color:#333;background:#f0f2f5;overflow:hidden;height:100vh}

/* ===== Toast ===== */
.toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:2000;padding:10px 24px;border-radius:6px;color:#fff;font-size:14px;animation:fadeIn .3s}
.toast.success{background:#52c41a}.toast.error{background:#ff4d4f}
@keyframes fadeIn{from{opacity:0;transform:translateX(-50%) translateY(-10px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ===== Login ===== */
.login-container{display:flex;align-items:center;justify-content:center;height:100vh;background:linear-gradient(135deg,#667eea,#764ba2)}
.login-card{background:#fff;border-radius:8px;padding:40px;width:380px;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.login-card h1{text-align:center;margin-bottom:8px;font-size:24px;color:#1677ff}
.login-card .subtitle{text-align:center;color:#999;margin-bottom:32px;font-size:13px}

/* ===== Form ===== */
.form-group{margin-bottom:16px}
.form-group label{display:block;margin-bottom:6px;font-weight:500;color:#555}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1px solid #d9d9d9;border-radius:6px;font-size:14px;transition:border-color .2s;outline:none}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#1677ff;box-shadow:0 0 0 2px rgba(22,119,255,.15)}
.form-group textarea{resize:vertical;min-height:60px}

/* ===== Button ===== */
.btn{display:inline-block;padding:10px 24px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}
.btn-primary{background:#1677ff;color:#fff}.btn-primary:hover{background:#4096ff}
.btn-default{background:#fff;color:#333;border:1px solid #d9d9d9}.btn-default:hover{border-color:#1677ff;color:#1677ff}
.btn-danger{background:#ff4d4f;color:#fff}.btn-danger:hover{background:#ff7875}
.btn-warning{background:#fa8c16;color:#fff}.btn-warning:hover{background:#ffa940}
.btn-sm{padding:4px 12px;font-size:12px}.btn-block{width:100%}
.btn-icon{background:none;border:none;cursor:pointer;font-size:18px;padding:4px 6px;border-radius:4px;line-height:1;transition:transform .3s ease}
.btn-icon:hover{background:rgba(255,255,255,.15)}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ===== Layout ===== */
.app-layout{display:flex;height:100vh}
.sidebar{width:220px;background:#001529;color:#fff;flex-shrink:0;display:flex;flex-direction:column;transition:width .2s;overflow:hidden}
.sidebar.collapsed{width:0}
.sidebar-logo{padding:20px 16px;font-size:18px;font-weight:700;border-bottom:1px solid rgba(255,255,255,.1);text-align:center;color:#1677ff;white-space:nowrap}
.sidebar-user{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);font-size:13px;white-space:nowrap}
.sidebar-user .name{font-weight:500}
.sidebar-user .role{color:#ffffff73;font-size:12px}
.nav{flex:1;padding:8px 0;overflow-y:auto}
.nav-item{display:flex;align-items:center;padding:12px 20px;color:#ffffffa6;cursor:pointer;transition:all .2s;gap:10px;font-size:14px;white-space:nowrap}
.nav-item:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-item.active{color:#fff;background:#1677ff}
.nav-item .icon{font-size:16px;width:20px;text-align:center}
.sidebar-footer{padding:12px 16px;border-top:1px solid rgba(255,255,255,.1);color:#ffffff73;cursor:pointer;font-size:13px;white-space:nowrap}
.sidebar-footer:hover{color:#fff}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.header{background:#fff;padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 4px rgba(0,0,0,.08);flex-shrink:0}
.header-left{display:flex;align-items:center;gap:12px}
.header-left .toggle-btn{background:none;border:none;font-size:20px;cursor:pointer;color:#333;padding:4px}
.header-right{display:flex;align-items:center;gap:16px;font-size:13px;color:#999}
.content{flex:1;padding:24px;overflow-y:auto}
.page{display:none}.page.active{display:block}

/* ===== Cards ===== */
.card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card-title{font-size:15px;margin-bottom:16px;color:#333}
.card-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
.stats-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.stat-card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.stat-card .label{color:#999;font-size:13px;margin-bottom:8px}
.stat-card .value{font-size:28px;font-weight:700}
.stat-card .value.blue{color:#1677ff}.stat-card .value.green{color:#52c41a}.stat-card .value.orange{color:#fa8c16}.stat-card .value.purple{color:#722ed1}
.stat-value{font-size:28px;font-weight:700;color:#1677ff;margin-bottom:4px}
.stat-label{font-size:13px;color:#999}
.stat-card.stat-follow .stat-value{color:#fa8c16}
.stat-card.stat-sign .stat-value{color:#52c41a}
.stat-card.stat-order .stat-value{color:#722ed1}
.stat-card.stat-install .stat-value{color:#13c2c2}
.stat-card.stat-amount .stat-value{color:#ff4d4f}
.brief-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}
.brief-card{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.brief-card .label{font-size:12px;color:#999;margin-bottom:4px}
.brief-card .value{font-size:22px;font-weight:600;color:#1677ff}
.brief-val{font-size:22px;font-weight:600;color:#1677ff;display:block;margin-bottom:2px}
.brief-lbl{font-size:12px;color:#999}
.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
.chart-card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.chart-card h3{font-size:15px;margin-bottom:16px;color:#333}
.chart-card canvas{max-width:100%;max-height:300px}
.chart-full{grid-column:1/-1}

/* ===== Table ===== */
.table-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.table-toolbar input,.table-toolbar select{padding:8px 12px;border:1px solid #d9d9d9;border-radius:6px;font-size:13px;outline:none}
.table-toolbar input:focus,.table-toolbar select:focus{border-color:#1677ff}
.table-toolbar .spacer{flex:1}
.table-wrap{background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #f0f0f0;white-space:nowrap}
th{background:#fafafa;font-weight:600;color:#555;position:sticky;top:0}
tr:hover td{background:#fafafa}
.status-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px}
.status-意向{background:#e6f0ff;color:#1677ff}.status-跟进{background:#fff3e0;color:#fa8c16}
.status-量尺{background:#f6ffed;color:#52c41a}.status-签单{background:#e6ffe6;color:#237804}
.status-下单{background:#f9f0ff;color:#722ed1}.status-安装{background:#e6fffb;color:#13c2c2}
.status-验收{background:#fffbe6;color:#fadb14}.status-流失{background:#fff1f0;color:#ff4d4f}
.status-成交{background:#f0f5ff;color:#2f54eb}
.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px}
.tag-意向{background:#e6f0ff;color:#1677ff}.tag-跟进{background:#fff3e0;color:#fa8c16}
.tag-量尺{background:#f6ffed;color:#52c41a}.tag-签单{background:#e6ffe6;color:#237804}
.tag-下单{background:#f9f0ff;color:#722ed1}.tag-安装{background:#e6fffb;color:#13c2c2}
.tag-验收{background:#fffbe6;color:#fadb14}.tag-流失{background:#fff1f0;color:#ff4d4f}
.tag-成交{background:#f0f5ff;color:#2f54eb}
.cust-table{width:100%;border-collapse:collapse;font-size:13px}
.admin-table{width:100%;border-collapse:collapse;font-size:13px}
.btn-success{background:#52c41a;color:#fff}.btn-success:hover{background:#73d13d}
.refresh-indicator{font-size:12px;color:#999}
.rank-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0}
.rank-label{font-weight:500;font-size:13px}
.rank-num{font-size:12px;color:#999}
.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px}
.pagination button{padding:6px 12px;border:1px solid #d9d9d9;background:#fff;border-radius:4px;cursor:pointer;font-size:13px}
.pagination button:hover{border-color:#1677ff;color:#1677ff}
.pagination button:disabled{opacity:.5;cursor:not-allowed}
.pagination span{color:#999;font-size:13px}

/* ===== Modal ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.show{display:flex}
.modal{background:#fff;border-radius:8px;width:90%;max-width:640px;max-height:85vh;overflow-y:auto;box-shadow:0 4px 24px rgba(0,0,0,.15)}
.modal-header{padding:16px 24px;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between}
.modal-header h3{font-size:16px}.modal-header .close{background:none;border:none;font-size:20px;cursor:pointer;color:#999}
.modal-body{padding:24px}.modal-body .form-row{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.modal-footer{padding:12px 24px;border-top:1px solid #f0f0f0;display:flex;justify-content:flex-end;gap:8px}
.payment-summary{background:#f6ffed;border:1px solid #b7eb8f;border-radius:6px;padding:12px;margin-top:8px;font-size:13px}
.payment-summary .row{display:flex;justify-content:space-between;padding:4px 0}
.payment-summary .total{font-weight:600;color:#52c41a}
.follow-list{margin-top:12px;max-height:240px;overflow-y:auto}
.follow-item{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:13px}
.follow-item .meta{color:#999;font-size:12px}

/* ===== Admin ===== */
.admin-section{background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.06);margin-bottom:24px;overflow:hidden}
.admin-section .section-header{padding:14px 20px;background:#fafafa;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between}
.admin-section .section-header h3{font-size:15px}
.admin-section .section-body{padding:16px}
.backup-list{font-size:13px}
.backup-item{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0f0f0}

/* ===== Profile ===== */
.profile-card{background:#fff;border-radius:8px;padding:32px;box-shadow:0 1px 4px rgba(0,0,0,.06);max-width:480px}
.profile-card .info-row{display:flex;padding:10px 0;border-bottom:1px solid #f0f0f0}
.profile-card .info-label{width:100px;color:#999}

/* ===== Loading ===== */
.loading{text-align:center;padding:60px;color:#999;font-size:14px}

/* ===== Responsive ===== */
@media(max-width:1024px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:900}
  .sidebar.collapsed{left:-220px}
  .stats-row{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .chart-row{grid-template-columns:1fr}
}
@media(max-width:768px){
  .sidebar{left:-220px}.sidebar.open{left:0}
  .content{padding:12px}.stats-row{grid-template-columns:repeat(2,1fr)}
  .brief-row{grid-template-columns:repeat(2,1fr)}
  .modal{width:95%;max-width:none}.modal-body .form-row{grid-template-columns:1fr}
  .table-toolbar{flex-direction:column;align-items:stretch}
  .table-toolbar input,.table-toolbar select{width:100%}
}
