*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-size:14px;color:#1f2937;background:#f3f4f6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}ul,ol{margin:0;padding:0;list-style:none}h1,h2,h3,h4,h5,h6,p{margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}img{display:block;max-width:100%}:root{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-danger: #ef4444;--color-success: #10b981;--color-warning: #f59e0b;--color-text: #1f2937;--color-text-secondary: #6b7280;--color-border: #e5e7eb;--color-bg: #f3f4f6;--color-bg-white: #ffffff;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .12)}.card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:1px solid var(--color-border);background:#fff;color:var(--color-text);border-radius:6px;font-size:14px;transition:all .2s;white-space:nowrap}.btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff}.btn-danger{color:var(--color-danger);border-color:#fecaca;background:#fff}.btn-danger:hover{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.btn:disabled{opacity:.6;cursor:not-allowed}.form-item{margin-bottom:16px}.form-label{display:block;margin-bottom:6px;font-size:13px;color:var(--color-text);font-weight:500}.form-label .required{color:var(--color-danger);margin-left:2px}.form-input,.form-select,.form-textarea{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:6px;font-size:14px;color:var(--color-text);background:#fff;transition:border-color .2s;outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61f}.form-textarea{min-height:80px;resize:vertical}.table-wrapper{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}table.data-table{width:100%;border-collapse:collapse;font-size:14px}table.data-table th,table.data-table td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--color-border)}table.data-table th{background:#f9fafb;font-weight:600;color:var(--color-text);font-size:13px}table.data-table tbody tr:last-child td{border-bottom:none}table.data-table tbody tr:hover{background:#f9fafb}.table-actions{display:flex;gap:8px}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500}.badge-success{background:rgba(16,185,129,.12);color:#047857}.badge-warning{background:rgba(245,158,11,.12);color:#b45309}.badge-danger{background:rgba(239,68,68,.12);color:#b91c1c}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.toolbar .spacer{flex:1}.toolbar .search-input{width:240px}.empty{padding:40px 0;text-align:center;color:var(--color-text-secondary);font-size:14px}.text-secondary{color:var(--color-text-secondary)}.thumb-img{width:56px;height:40px;object-fit:cover;border-radius:4px;border:1px solid var(--color-border);background:#f3f4f6}
