*{box-sizing:border-box;margin:0;padding:0}:root{--primary: #ff5000;--primary-light: #ff8040;--text: #1a1a1a;--text-secondary: #666;--text-light: #999;--bg: #f4f5f7;--border: #ececec}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#ff6a00,#ff5000 60%,#ff8040)}.login-card{width:380px;background:#fff;border-radius:16px;padding:40px 36px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column}.login-title{font-size:26px;font-weight:600;text-align:center}.login-sub{font-size:14px;color:var(--text-light);text-align:center;margin:8px 0 28px}.field-label{font-size:13px;color:var(--text-secondary);margin-bottom:6px}.field-input{height:44px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:15px;margin-bottom:18px;outline:none;transition:border-color .15s}.field-input:focus{border-color:var(--primary)}.login-error{background:#fff1f0;color:#cf1322;font-size:13px;padding:10px 12px;border-radius:8px;margin-bottom:16px}.login-btn{height:46px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .15s}.login-btn:hover{opacity:.92}.login-btn:disabled{opacity:.6;cursor:not-allowed}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#1f2330;color:#fff;flex-shrink:0}.logo{height:64px;display:flex;align-items:center;padding:0 24px;font-size:18px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08)}.nav{padding:12px 0}.nav-item{display:block;padding:14px 24px;color:#ffffffbf;text-decoration:none;font-size:15px;border-left:3px solid transparent}.nav-item:hover{background:#ffffff0d;color:#fff}.nav-item.active{background:#ff500029;color:#fff;border-left-color:var(--primary)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px}.topbar-title{font-size:16px;font-weight:600}.topbar-right{display:flex;align-items:center;gap:18px}.topbar-user{font-size:14px;color:var(--text-secondary)}.logout-link{border:none;background:none;color:var(--primary);font-size:14px;cursor:pointer}.content{flex:1;padding:24px 28px}.page-head{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}.page-title{font-size:20px;font-weight:600}.page-count{font-size:13px;color:var(--text-light)}.page-error{background:#fff1f0;color:#cf1322;padding:10px 14px;border-radius:8px;margin-bottom:16px;font-size:14px}.table-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 12px #0000000a}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:14px 18px;font-size:14px;border-bottom:1px solid #f3f3f3}.table th{background:#fafafa;color:var(--text-secondary);font-weight:500}.table tbody tr:hover{background:#fcfcfc}.table-empty{text-align:center;color:var(--text-light);padding:40px 0}.badge{display:inline-block;padding:2px 12px;border-radius:12px;font-size:12px}.badge-ok{background:#e6f7ee;color:#1d9e75}.badge-off{background:#fff1f0;color:#cf1322}.row-btn{border:1px solid var(--border);background:#fff;border-radius:8px;padding:6px 14px;font-size:13px;cursor:pointer;color:var(--text-secondary)}.row-btn:hover{border-color:var(--primary);color:var(--primary)}.pager{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:18px}.pager-btn{border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer}.pager-btn:disabled{opacity:.5;cursor:not-allowed}.pager-info{font-size:14px;color:var(--text-secondary)}.page-actions{margin-left:auto;display:flex;gap:12px}.search-input{height:38px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:14px;outline:none;width:200px}.search-input:focus{border-color:var(--primary)}.primary-btn{height:38px;border:none;border-radius:8px;background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;font-size:14px;padding:0 18px;cursor:pointer}.primary-btn:hover{opacity:.92}.ghost-btn{height:38px;border:1px solid var(--border);background:#fff;border-radius:8px;font-size:14px;padding:0 18px;cursor:pointer;color:var(--text-secondary)}.cell-name{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-muted{color:var(--text-light)}.thumb{width:80px;height:44px;object-fit:cover;border-radius:6px;background:#f0f0f0}.row-btn.danger{margin-left:8px}.row-btn.danger:hover{border-color:#cf1322;color:#cf1322}.badge-info{background:#e6f0ff;color:#1d6fd8}.filter-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filter-btn{border:1px solid var(--border);background:#fff;border-radius:20px;padding:7px 18px;font-size:13px;cursor:pointer;color:var(--text-secondary)}.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{width:480px;max-height:88vh;overflow-y:auto;background:#fff;border-radius:14px;padding:26px 28px}.modal-title{font-size:18px;font-weight:600;margin-bottom:18px}.m-label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:6px}.m-input{width:100%;height:40px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:14px;margin-bottom:16px;outline:none;font-family:inherit}.m-input:focus{border-color:var(--primary)}.m-textarea{height:80px;padding:10px 12px;resize:vertical}.m-row{display:flex;gap:14px}.m-col{flex:1}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-secondary);margin-bottom:18px;cursor:pointer}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metric-card{background:#fff;border-radius:12px;padding:20px 22px;box-shadow:0 2px 12px #0000000a}.metric-label{font-size:13px;color:var(--text-secondary);margin-bottom:10px}.metric-value{font-size:30px;font-weight:600;color:var(--text)}.panel{background:#fff;border-radius:12px;padding:20px 22px;margin-bottom:20px;box-shadow:0 2px 12px #0000000a}.panel-title{font-size:16px;font-weight:600;margin-bottom:16px}.funnel{display:flex;flex-direction:column;gap:12px}.funnel-row{display:flex;align-items:center;gap:14px}.funnel-label{width:96px;flex-shrink:0;font-size:14px;color:var(--text-secondary)}.funnel-bar-wrap{flex:1;background:#f4f5f7;border-radius:8px;overflow:hidden}.funnel-bar{height:34px;background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:8px;display:flex;align-items:center;justify-content:flex-end;min-width:36px;transition:width .3s}.funnel-count{color:#fff;font-size:14px;font-weight:600;padding-right:12px}.funnel-rate{width:56px;flex-shrink:0;text-align:right;font-size:14px;color:var(--text-secondary)}.funnel-note{font-size:13px;color:var(--text-light);margin-top:14px}.image-upload{margin-bottom:16px}.image-upload-panel{display:flex;align-items:center;gap:16px;padding:12px;border:1px dashed #d5d9de;border-radius:10px;margin-bottom:10px;background:#fafbfc}.image-upload-preview{width:96px;height:88px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:8px;overflow:hidden;background:#f0f2f4}.image-upload-preview img{width:100%;height:100%;object-fit:contain}.image-upload-preview span{padding:10px;color:#757575;font-size:12px;text-align:center}.image-upload-controls{min-width:0}.image-upload-hint{font-size:12px;color:#777;line-height:1.6;margin-top:8px}.image-upload .m-input{margin-bottom:0}.image-upload-error,.image-upload-status{margin-top:8px;font-size:13px;line-height:1.5}.image-upload-error{color:#b42318}.image-upload-status{color:#28714d}button:disabled{cursor:not-allowed;opacity:.55}.password-row-link{display:inline-block;text-decoration:none;margin:0 8px 4px 0;white-space:nowrap}.password-page{max-width:760px}.password-page .page-head{justify-content:space-between;flex-wrap:wrap}.password-back{color:var(--text-secondary);font-size:14px;text-underline-offset:4px}.password-card{padding:28px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 2px 12px #0000000a}.password-account{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.password-eyebrow{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:8px}.password-account h3{font-size:20px;margin-bottom:6px}.password-hint{font-size:13px;color:var(--text-secondary);line-height:1.7}.password-intro{margin-bottom:22px}.password-page #new-password{margin-bottom:6px}.password-page #password-rules{margin-bottom:20px}.password-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding-top:6px}.password-actions a{display:inline-flex;align-items:center;text-decoration:none}.password-success{background:#e6f7ee;color:#21694f;padding:16px;border-radius:8px;margin-bottom:22px;line-height:1.6}@media (max-width: 640px){.layout:has(.password-page){display:block}.layout:has(.password-page) .sidebar{width:100%}.layout:has(.password-page) .logo{display:none}.layout:has(.password-page) .nav{display:flex;overflow-x:auto;padding:0}.layout:has(.password-page) .nav-item{flex-shrink:0;padding:14px}.layout:has(.password-page) .topbar{padding:0 16px}.layout:has(.password-page) .content{padding:20px 16px}.password-card{padding:20px}}.modal{max-width:calc(100vw - 24px)}@media (max-width: 480px){.modal{padding:20px}.image-upload-panel{gap:12px}.image-upload-preview{width:76px;height:80px}.image-upload-controls .ghost-btn{padding:0 10px}}
