*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:"Microsoft YaHei","微软雅黑",Arial,sans-serif;font-size:14px;color:#333;background:#f0f2f5}
a{text-decoration:none;color:inherit}
input,textarea,select,button{font-family:inherit;font-size:inherit;outline:none}
input[type=text],input[type=password],input:not([type]),textarea,select{border:1px solid #d9d9d9;border-radius:4px;padding:8px 12px;width:100%;transition:border-color .2s}
input:focus,textarea:focus,select:focus{border-color:#1890ff}
textarea{resize:vertical;line-height:1.6}

/* Login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#1890ff,#36cfc9)}
.login-wrap{width:100%;max-width:380px;padding:20px}
.login-form{background:#fff;padding:40px 32px;border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.15)}
.login-form h1{font-size:24px;color:#1890ff;text-align:center;margin-bottom:4px}
.login-form .login-sub{text-align:center;color:#999;font-size:13px;margin-bottom:28px}
.login-form input{margin-bottom:16px;height:42px}
.login-form button{width:100%;height:42px;background:#1890ff;color:#fff;border:none;border-radius:4px;font-size:15px;cursor:pointer;transition:background .2s}
.login-form button:hover{background:#40a9ff}

/* Layout */
.admin-body{display:flex;min-height:100vh}
.sidebar{width:220px;background:#001529;color:#fff;display:flex;flex-direction:column;position:fixed;height:100vh;z-index:100}
.sidebar-logo{padding:20px;font-size:18px;font-weight:600;text-align:center;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-nav{flex:1;padding:8px 0;overflow-y:auto}
.nav-item{display:block;padding:12px 24px;color:rgba(255,255,255,.65);transition:all .2s;font-size:14px}
.nav-item:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-item.active{color:#fff;background:#1890ff}
.nav-logout{border-top:1px solid rgba(255,255,255,.1);margin-top:auto}
.main-content{flex:1;margin-left:220px;display:flex;flex-direction:column;min-height:100vh}
.page-header{height:60px;background:#fff;padding:0 24px;display:flex;align-items:center;box-shadow:0 1px 4px rgba(0,0,0,.08);position:sticky;top:0;z-index:50}
.page-header h1{font-size:18px;color:#333}
.page-body{padding:20px;flex:1}

/* Dashboard */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:20px}
.stat-card{background:#fff;padding:24px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.08);display:flex;flex-direction:column;align-items:center;transition:box-shadow .2s}
.stat-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.12)}
.stat-card strong{font-size:32px;color:#1890ff;margin-bottom:4px}
.stat-card span{font-size:14px;color:#666}

/* Panel */
.panel{background:#fff;border-radius:8px;padding:20px;margin-bottom:16px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.panel h2{font-size:16px;color:#333;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f0f0f0}
.quick-actions{display:flex;gap:12px;flex-wrap:wrap}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;padding:7px 16px;background:#fff;color:#333;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s;white-space:nowrap}
.btn:hover{border-color:#1890ff;color:#1890ff}
.btn-primary{background:#1890ff;color:#fff;border-color:#1890ff}
.btn-primary:hover{background:#40a9ff;border-color:#40a9ff;color:#fff}
.btn-danger{color:#ff4d4f;border-color:#ff4d4f}
.btn-danger:hover{background:#ff4d4f;color:#fff}
.btn-sm{padding:4px 10px;font-size:12px}
.btn-lg{padding:10px 32px;font-size:16px}

/* Toolbar */
.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px;flex-wrap:wrap}
.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:8px}
.toolbar-right input{width:220px}
.stat-line{font-size:13px;color:#666;margin-bottom:12px}
.stat-line strong{color:#1890ff}

/* Table */
.data-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.data-table th{background:#fafafa;padding:12px 14px;text-align:left;font-weight:600;font-size:13px;color:#555;border-bottom:1px solid #f0f0f0;white-space:nowrap}
.data-table td{padding:10px 14px;border-bottom:1px solid #f0f0f0;font-size:13px;color:#333}
.data-table tbody tr:hover{background:#f5f7fa}
.data-table tbody tr:last-child td{border-bottom:none}
.empty-row{text-align:center;color:#999;padding:32px 0!important}
.title-cell{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.url-cell{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.link-text{color:#1890ff}
.link-text:hover{text-decoration:underline}

/* Badge */
.badge{display:inline-block;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:500}
.badge-pending{background:#fff7e6;color:#fa8c16}
.badge-success{background:#f6ffed;color:#52c41a}
.badge-fail{background:#fff2f0;color:#ff4d4f}

/* Modal */
.modal-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}
.modal-box{background:#fff;border-radius:8px;width:90%;max-width:560px;max-height:85vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.2)}
.modal-box-lg{max-width:860px}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #f0f0f0}
.modal-header h3{font-size:16px;color:#333}
.modal-close{background:none;border:none;font-size:22px;color:#999;cursor:pointer;line-height:1;padding:0 4px}
.modal-close:hover{color:#333}
.modal-body{padding:20px}
.modal-tip{font-size:13px;color:#888;margin-bottom:14px;line-height:1.8}
.modal-textarea{width:100%;min-height:240px;font-family:inherit;line-height:1.8;border:1px solid #d9d9d9;border-radius:4px;padding:10px 14px}
.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.add-progress-box{margin-top:14px;padding:14px;background:#f6f8fa;border-radius:6px}
.add-log-summary{font-size:13px;color:#666;margin-bottom:12px}
.add-log-summary strong{color:#1890ff}
.add-log-toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.add-log-list{max-height:480px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:6px;background:#fafafa}
.add-log-row{padding:12px 14px;border-bottom:1px solid #f0f0f0;background:#fff}
.add-log-row:last-child{border-bottom:none}
.add-log-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.add-log-title strong{font-size:12px;padding:2px 8px;border-radius:10px}
.add-log-title span{font-weight:600;color:#333}
.add-log-title em{font-style:normal;color:#1890ff;font-size:12px;word-break:break-all}
.add-log-msg{font-size:13px;color:#555;line-height:1.6}
.add-log-line{font-size:12px;color:#999;margin-top:4px;word-break:break-all}
.log-success .add-log-title strong{background:#f6ffed;color:#52c41a}
.log-fail .add-log-title strong{background:#fff2f0;color:#ff4d4f}

/* Form */
.form-group{margin-bottom:16px}
.form-group label{display:block;margin-bottom:6px;font-size:13px;color:#555;font-weight:500}
.form-group input,.form-group textarea{width:100%}
.content-editor{min-height:180px;line-height:1.8}
.form-actions{margin-top:20px}

/* Radio group */
.radio-group{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}
.radio-item{display:inline-flex;align-items:center;padding:8px 16px;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;transition:all .2s;font-size:13px}
.radio-item:hover{border-color:#1890ff}
.radio-item input{width:auto;margin-right:6px}
.radio-item:has(input:checked){border-color:#1890ff;background:#e6f7ff;color:#1890ff}
.radio-item.disabled{opacity:.45;cursor:not-allowed}
.count-warning{font-size:13px;color:#888;margin-bottom:14px;padding:8px 12px;background:#f6f8fa;border-radius:4px}
.count-warning strong{color:#1890ff}
.lang-tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid #f0f0f0;flex-wrap:wrap;overflow-x:auto}
.lang-tab{padding:6px 14px;cursor:pointer;font-size:13px;color:#666;border-bottom:2px solid transparent;transition:all .2s;white-space:nowrap}
.lang-tab:hover{color:#1890ff}
.lang-tab.active{color:#1890ff;border-bottom-color:#1890ff;font-weight:500}
.lang-panel{display:none}

/* Progress */
.progress-bar-wrap{width:100%;height:24px;background:#f0f0f0;border-radius:12px;overflow:hidden;margin-bottom:12px}
.progress-bar{height:100%;background:linear-gradient(90deg,#1890ff,#36cfc9);border-radius:12px;width:0;transition:width .3s}
.progress-text{text-align:center;font-size:14px;color:#333;margin-bottom:8px}
.progress-stats{text-align:center;font-size:13px;color:#888}

/* Pagination */
.pagination{display:flex;align-items:center;gap:6px;margin-top:16px;flex-wrap:wrap}
.page-info{margin-left:8px;font-size:13px;color:#888}

/* Page size */
.page-size-group{display:flex;align-items:center;gap:6px}
.page-size-group span{font-size:13px;color:#666;white-space:nowrap}
.filter-select{width:auto;min-width:120px;cursor:pointer}

/* Export */
.export-section{margin-top:20px;text-align:center;padding:16px 0}
.export-options{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.publish-wrap{max-width:100%}

/* Responsive */
@media(max-width:768px){
    .sidebar{width:60px}
    .sidebar-logo{font-size:0;padding:20px 0}
    .sidebar-logo::after{content:"P";font-size:20px}
    .nav-item{padding:12px 0;text-align:center;font-size:0}
    .nav-item::first-letter{font-size:14px}
    .main-content{margin-left:60px}
    .toolbar{flex-direction:column;align-items:stretch}
    .toolbar-right input{width:100%}
    .data-table{font-size:12px}
    .data-table th,.data-table td{padding:8px}
}
