[ 'regex' => 'Code may only contain letters, digits, underscores, and hyphens; site codes must start with a lowercase letter or digit.', 'unique' => 'This code is already in use.', ], 'slug' => [ 'regex' => 'Slug may only contain lowercase letters, digits, underscores, and hyphens.', 'unique' => 'This slug is already in use.', ], 'account' => [ 'regex' => 'Account may only contain letters, digits, dots, underscores, and hyphens.', ], 'username' => [ 'regex' => 'Username may only contain letters, digits, dots, underscores, and hyphens.', 'unique' => 'This username is already in use.', ], 'draw_no' => [ 'regex' => 'Draw number must match YYYYMMDD-sequence (e.g. 20260101-001).', ], 'number_4d' => [ 'regex' => 'Number must be exactly 4 digits.', ], 'normalized_number' => [ 'regex' => 'Number must be exactly 4 digits.', 'size' => 'Number must be exactly 4 digits.', ], 'wallet_api_url' => [ 'wallet_api_url' => 'Wallet API URL must be an https public root URL (no localhost, private IP, path, or query).', ], 'amount_delta' => [ 'not_in' => 'Adjustment amount cannot be zero.', ], 'password' => [ 'min' => 'Password must be at least :min characters.', ], 'reason' => [ 'min' => 'Reason must be at least :min characters.', ], 'items' => [ 'min' => 'At least :min items required.', 'max' => 'A maximum of :max items.', 'size' => ':attribute must contain exactly :size items.', ], 'email' => [ 'unique' => 'This email is already in use.', ], 'lines' => [ 'max' => 'A maximum of :max bets per submission.', 'min' => 'At least :min bets required.', ], 'role_slugs' => [ 'min' => 'At least one role must be selected.', ], 'role_ids' => [ 'required' => 'Please select a role.', ], 'rebate_rate' => [ 'max' => 'Rebate rate must not exceed 1 (100% = 1).', 'min' => 'Rebate rate must not be less than 0.', ], 'extra_rebate_rate' => [ 'max' => 'Extra rebate rate must not exceed 1 (100% = 1).', 'min' => 'Extra rebate rate must not be less than 0.', ], 'rebate_limit' => [ 'max' => 'Rebate ceiling must not exceed 1 (100% = 1).', 'min' => 'Rebate ceiling must not be less than 0.', ], 'default_player_rebate' => [ 'max' => 'Default player rebate must not exceed 1 (100% = 1).', 'min' => 'Default player rebate must not be less than 0.', ], 'total_share_rate' => [ 'max' => 'Share rate must not exceed 100.', 'min' => 'Share rate must not be less than 0.', ], ];